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>2010-01-06 01:33:41 +0300
committerJoseph Eagar <joeedh@gmail.com>2010-01-06 01:33:41 +0300
commit67ff197cb1b0e79a95bf6546b5fe1a481b79fce1 (patch)
tree9f78d5cda71d200cab6475eb9c2747f7181adf3a /source/blender
parent473f235a6eee6c02cf41a1e173f53406b62440aa (diff)
parentffe13aeb232ac6bad3a98997b4a352f434293193 (diff)
Merge with trunk/2.5 at r25563
Most likely will not compile for others, I'd appreciate any build errors and missing files reports (I can never seem to get everything committed and all the build systems working without help). Porting over the sculpt/multires tools was a breeze, thanks goes to brecht for a design that didn't exclude ngons and was easy to port. Note that I've not tested externally-backed multires file support yet. Also, I still need to write version patch code for some cases. Some notes: * Like trunk, topological changes don't update multires right, so e.g. subdivide will duplicate multires data on the new faces, instead of subdividing it. * If you set the debug value (ctrl-alt-d) to 1 it'll turn on my experiments in speeding up sculpting on higher-res multires meshes (but note it makes partial redraw not completely accurate). * There's a bug where you have to go through editmode to get out of sculpt mode, not sure if I inherited or created this myself.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/BKE_DerivedMesh.h31
-rw-r--r--source/blender/blenkernel/BKE_action.h6
-rw-r--r--source/blender/blenkernel/BKE_blender.h2
-rw-r--r--source/blender/blenkernel/BKE_colortools.h6
-rw-r--r--source/blender/blenkernel/BKE_constraint.h2
-rw-r--r--source/blender/blenkernel/BKE_context.h6
-rw-r--r--source/blender/blenkernel/BKE_customdata.h24
-rw-r--r--source/blender/blenkernel/BKE_customdata_file.h59
-rw-r--r--source/blender/blenkernel/BKE_fcurve.h7
-rw-r--r--source/blender/blenkernel/BKE_mesh.h5
-rw-r--r--source/blender/blenkernel/BKE_modifier.h6
-rw-r--r--source/blender/blenkernel/BKE_multires.h46
-rw-r--r--source/blender/blenkernel/BKE_node.h1
-rw-r--r--source/blender/blenkernel/BKE_object.h2
-rw-r--r--source/blender/blenkernel/BKE_paint.h14
-rw-r--r--source/blender/blenkernel/BKE_particle.h2
-rw-r--r--source/blender/blenkernel/BKE_pointcache.h1
-rw-r--r--source/blender/blenkernel/BKE_scene.h2
-rw-r--r--source/blender/blenkernel/BKE_screen.h5
-rw-r--r--source/blender/blenkernel/BKE_sequencer.h (renamed from source/blender/blenkernel/BKE_sequence.h)34
-rw-r--r--source/blender/blenkernel/BKE_sound.h2
-rw-r--r--source/blender/blenkernel/BKE_subsurf.h59
-rw-r--r--source/blender/blenkernel/BKE_texture.h2
-rw-r--r--source/blender/blenkernel/BKE_utildefines.h10
-rw-r--r--source/blender/blenkernel/BKE_writeavi.h12
-rw-r--r--source/blender/blenkernel/BKE_writeffmpeg.h5
-rw-r--r--source/blender/blenkernel/BKE_writeframeserver.h7
-rw-r--r--source/blender/blenkernel/CMakeLists.txt1
-rw-r--r--source/blender/blenkernel/SConscript3
-rw-r--r--source/blender/blenkernel/intern/CCGSubSurf.c1954
-rw-r--r--source/blender/blenkernel/intern/CCGSubSurf.h215
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c6
-rw-r--r--source/blender/blenkernel/intern/Makefile2
-rw-r--r--source/blender/blenkernel/intern/action.c165
-rw-r--r--source/blender/blenkernel/intern/anim_sys.c36
-rw-r--r--source/blender/blenkernel/intern/armature.c54
-rw-r--r--source/blender/blenkernel/intern/blender.c4
-rw-r--r--source/blender/blenkernel/intern/brush.c7
-rw-r--r--source/blender/blenkernel/intern/cdderivedmesh.c342
-rw-r--r--source/blender/blenkernel/intern/cloth.c1
-rw-r--r--source/blender/blenkernel/intern/colortools.c46
-rw-r--r--source/blender/blenkernel/intern/constraint.c31
-rw-r--r--source/blender/blenkernel/intern/context.c12
-rw-r--r--source/blender/blenkernel/intern/customdata.c360
-rw-r--r--source/blender/blenkernel/intern/customdata_file.c446
-rw-r--r--source/blender/blenkernel/intern/depsgraph.c2
-rw-r--r--source/blender/blenkernel/intern/displist.c6
-rw-r--r--source/blender/blenkernel/intern/editderivedbmesh.c4
-rw-r--r--source/blender/blenkernel/intern/effect.c10
-rw-r--r--source/blender/blenkernel/intern/exotic.c2
-rw-r--r--source/blender/blenkernel/intern/fcurve.c111
-rw-r--r--source/blender/blenkernel/intern/fmodifier.c93
-rw-r--r--source/blender/blenkernel/intern/font.c8
-rw-r--r--source/blender/blenkernel/intern/group.c4
-rw-r--r--source/blender/blenkernel/intern/ipo.c57
-rw-r--r--source/blender/blenkernel/intern/lattice.c2
-rw-r--r--source/blender/blenkernel/intern/mesh.c15
-rw-r--r--source/blender/blenkernel/intern/modifier.c591
-rw-r--r--source/blender/blenkernel/intern/multires.c1647
-rw-r--r--source/blender/blenkernel/intern/node.c15
-rw-r--r--source/blender/blenkernel/intern/object.c118
-rw-r--r--source/blender/blenkernel/intern/paint.c2
-rw-r--r--source/blender/blenkernel/intern/particle.c30
-rw-r--r--source/blender/blenkernel/intern/particle_system.c74
-rw-r--r--source/blender/blenkernel/intern/pointcache.c6
-rw-r--r--source/blender/blenkernel/intern/scene.c98
-rw-r--r--source/blender/blenkernel/intern/screen.c17
-rw-r--r--source/blender/blenkernel/intern/seqeffects.c170
-rw-r--r--source/blender/blenkernel/intern/sequencer.c (renamed from source/blender/blenkernel/intern/sequence.c)334
-rw-r--r--source/blender/blenkernel/intern/softbody.c174
-rw-r--r--source/blender/blenkernel/intern/sound.c10
-rw-r--r--source/blender/blenkernel/intern/subsurf_ccg.c1900
-rw-r--r--source/blender/blenkernel/intern/texture.c2
-rw-r--r--source/blender/blenkernel/intern/writeavi.c19
-rw-r--r--source/blender/blenkernel/intern/writeffmpeg.c120
-rw-r--r--source/blender/blenkernel/intern/writeframeserver.c48
-rw-r--r--source/blender/blenlib/BLI_blenlib.h2
-rw-r--r--source/blender/blenlib/BLI_listbase.h2
-rw-r--r--source/blender/blenlib/BLI_math_base.h2
-rw-r--r--source/blender/blenlib/BLI_math_color.h22
-rw-r--r--source/blender/blenlib/BLI_math_geom.h8
-rw-r--r--source/blender/blenlib/BLI_math_matrix.h1
-rw-r--r--source/blender/blenlib/BLI_math_vector.h14
-rw-r--r--source/blender/blenlib/BLI_path_util.h (renamed from source/blender/blenlib/BLI_util.h)2
-rw-r--r--source/blender/blenlib/BLI_pbvh.h219
-rw-r--r--source/blender/blenlib/CMakeLists.txt1
-rw-r--r--source/blender/blenlib/SConscript5
-rw-r--r--source/blender/blenlib/intern/BLI_bfile.c2
-rw-r--r--source/blender/blenlib/intern/Makefile2
-rw-r--r--source/blender/blenlib/intern/bpath.c2
-rw-r--r--source/blender/blenlib/intern/listbase.c2
-rw-r--r--source/blender/blenlib/intern/math_base.c62
-rw-r--r--source/blender/blenlib/intern/math_color.c61
-rw-r--r--source/blender/blenlib/intern/math_geom.c192
-rw-r--r--source/blender/blenlib/intern/math_matrix.c18
-rw-r--r--source/blender/blenlib/intern/math_vector.c81
-rw-r--r--source/blender/blenlib/intern/math_vector_inline.c73
-rw-r--r--source/blender/blenlib/intern/path_util.c (renamed from source/blender/blenlib/intern/util.c)20
-rw-r--r--source/blender/blenlib/intern/pbvh.c1304
-rw-r--r--source/blender/blenlib/intern/scanfill.c5
-rw-r--r--source/blender/blenlib/intern/storage.c10
-rw-r--r--source/blender/blenlib/intern/winstuff.c4
-rw-r--r--source/blender/blenloader/intern/readfile.c431
-rw-r--r--source/blender/blenloader/intern/writefile.c53
-rw-r--r--source/blender/collada/DocumentExporter.cpp4
-rw-r--r--source/blender/collada/DocumentImporter.cpp1055
-rw-r--r--source/blender/collada/collada_internal.h11
-rw-r--r--source/blender/editors/CMakeLists.txt4
-rw-r--r--source/blender/editors/animation/anim_channels_defines.c108
-rw-r--r--source/blender/editors/animation/anim_channels_edit.c257
-rw-r--r--source/blender/editors/animation/anim_deps.c283
-rw-r--r--source/blender/editors/animation/anim_draw.c58
-rw-r--r--source/blender/editors/animation/anim_filter.c209
-rw-r--r--source/blender/editors/animation/anim_intern.h22
-rw-r--r--source/blender/editors/animation/anim_ipo_utils.c31
-rw-r--r--source/blender/editors/animation/anim_markers.c112
-rw-r--r--source/blender/editors/animation/anim_ops.c76
-rw-r--r--source/blender/editors/animation/drivers.c119
-rw-r--r--source/blender/editors/animation/fmodifier_ui.c95
-rw-r--r--source/blender/editors/animation/keyframes_draw.c10
-rw-r--r--source/blender/editors/animation/keyframes_edit.c18
-rw-r--r--source/blender/editors/animation/keyframes_general.c10
-rw-r--r--source/blender/editors/animation/keyframing.c209
-rw-r--r--source/blender/editors/animation/keyingsets.c33
-rw-r--r--source/blender/editors/armature/armature_intern.h5
-rw-r--r--source/blender/editors/armature/armature_ops.c28
-rw-r--r--source/blender/editors/armature/editarmature.c293
-rw-r--r--source/blender/editors/armature/editarmature_generate.c4
-rw-r--r--source/blender/editors/armature/editarmature_sketch.c2
-rw-r--r--source/blender/editors/armature/meshlaplacian.c438
-rw-r--r--source/blender/editors/armature/meshlaplacian.h3
-rw-r--r--source/blender/editors/armature/poseSlide.c2
-rw-r--r--source/blender/editors/armature/poseobject.c46
-rw-r--r--source/blender/editors/curve/curve_intern.h2
-rw-r--r--source/blender/editors/curve/curve_ops.c45
-rw-r--r--source/blender/editors/curve/editcurve.c150
-rw-r--r--source/blender/editors/datafiles/B.blend.c9321
-rw-r--r--source/blender/editors/datafiles/blenderbuttons.c12642
-rw-r--r--source/blender/editors/datafiles/prvicons.c876
-rw-r--r--source/blender/editors/datafiles/splash.png.c8803
-rw-r--r--source/blender/editors/gpencil/drawgpencil.c2
-rw-r--r--source/blender/editors/gpencil/gpencil_buttons.c2
-rw-r--r--source/blender/editors/gpencil/gpencil_edit.c4
-rw-r--r--source/blender/editors/gpencil/gpencil_paint.c75
-rw-r--r--source/blender/editors/include/ED_anim_api.h37
-rw-r--r--source/blender/editors/include/ED_armature.h36
-rw-r--r--source/blender/editors/include/ED_curve.h7
-rw-r--r--source/blender/editors/include/ED_keyframes_edit.h18
-rw-r--r--source/blender/editors/include/ED_keyframing.h9
-rw-r--r--source/blender/editors/include/ED_mball.h2
-rw-r--r--source/blender/editors/include/ED_mesh.h15
-rw-r--r--source/blender/editors/include/ED_object.h10
-rw-r--r--source/blender/editors/include/ED_particle.h2
-rw-r--r--source/blender/editors/include/ED_screen.h10
-rw-r--r--source/blender/editors/include/ED_screen_types.h7
-rw-r--r--source/blender/editors/include/ED_sculpt.h16
-rw-r--r--source/blender/editors/include/ED_sequencer.h3
-rw-r--r--source/blender/editors/include/ED_transform.h7
-rw-r--r--source/blender/editors/include/ED_view3d.h12
-rw-r--r--source/blender/editors/include/UI_icons.h60
-rw-r--r--source/blender/editors/include/UI_interface.h13
-rw-r--r--source/blender/editors/include/UI_view2d.h2
-rw-r--r--source/blender/editors/interface/interface.c46
-rw-r--r--source/blender/editors/interface/interface_anim.c21
-rw-r--r--source/blender/editors/interface/interface_draw.c8
-rw-r--r--source/blender/editors/interface/interface_handlers.c385
-rw-r--r--source/blender/editors/interface/interface_icons.c20
-rw-r--r--source/blender/editors/interface/interface_intern.h5
-rw-r--r--source/blender/editors/interface/interface_layout.c208
-rw-r--r--source/blender/editors/interface/interface_ops.c255
-rw-r--r--source/blender/editors/interface/interface_regions.c23
-rw-r--r--source/blender/editors/interface/interface_templates.c163
-rw-r--r--source/blender/editors/interface/interface_utils.c9
-rw-r--r--source/blender/editors/interface/interface_widgets.c27
-rw-r--r--source/blender/editors/interface/resources.c56
-rw-r--r--source/blender/editors/interface/view2d_ops.c36
-rw-r--r--source/blender/editors/mesh/bmesh_select.c284
-rw-r--r--source/blender/editors/mesh/bmesh_tools.c61
-rw-r--r--source/blender/editors/mesh/editface.c62
-rw-r--r--source/blender/editors/mesh/editmesh_add.c4
-rw-r--r--source/blender/editors/mesh/editmesh_mods.c21
-rw-r--r--source/blender/editors/mesh/editmesh_tools.c6
-rw-r--r--source/blender/editors/mesh/loopcut.c4
-rw-r--r--source/blender/editors/mesh/mesh_data.c21
-rw-r--r--source/blender/editors/mesh/mesh_intern.h12
-rw-r--r--source/blender/editors/mesh/mesh_ops.c52
-rw-r--r--source/blender/editors/mesh/meshtools.c78
-rw-r--r--source/blender/editors/metaball/mball_edit.c54
-rw-r--r--source/blender/editors/metaball/mball_intern.h2
-rw-r--r--source/blender/editors/metaball/mball_ops.c4
-rw-r--r--source/blender/editors/object/object_add.c105
-rw-r--r--source/blender/editors/object/object_constraint.c39
-rw-r--r--source/blender/editors/object/object_edit.c94
-rw-r--r--source/blender/editors/object/object_hook.c5
-rw-r--r--source/blender/editors/object/object_intern.h10
-rw-r--r--source/blender/editors/object/object_lattice.c76
-rw-r--r--source/blender/editors/object/object_modifier.c362
-rw-r--r--source/blender/editors/object/object_ops.c65
-rw-r--r--source/blender/editors/object/object_relations.c105
-rw-r--r--source/blender/editors/object/object_select.c88
-rw-r--r--source/blender/editors/object/object_transform.c63
-rw-r--r--source/blender/editors/object/object_vgroup.c2
-rw-r--r--source/blender/editors/physics/SConscript9
-rw-r--r--source/blender/editors/physics/particle_edit.c147
-rw-r--r--source/blender/editors/physics/particle_object.c11
-rw-r--r--source/blender/editors/physics/physics_fluid.c20
-rw-r--r--source/blender/editors/physics/physics_intern.h8
-rw-r--r--source/blender/editors/physics/physics_ops.c12
-rw-r--r--source/blender/editors/physics/physics_pointcache.c42
-rw-r--r--source/blender/editors/render/SConscript10
-rw-r--r--source/blender/editors/render/render_ops.c8
-rw-r--r--source/blender/editors/render/render_shading.c4
-rw-r--r--source/blender/editors/screen/SConscript4
-rw-r--r--source/blender/editors/screen/area.c41
-rw-r--r--source/blender/editors/screen/glutil.c16
-rw-r--r--source/blender/editors/screen/screen_context.c8
-rw-r--r--source/blender/editors/screen/screen_edit.c129
-rw-r--r--source/blender/editors/screen/screen_ops.c1205
-rw-r--r--source/blender/editors/screen/screendump.c20
-rw-r--r--source/blender/editors/sculpt_paint/paint_image.c255
-rw-r--r--source/blender/editors/sculpt_paint/paint_intern.h16
-rw-r--r--source/blender/editors/sculpt_paint/paint_ops.c59
-rw-r--r--source/blender/editors/sculpt_paint/paint_stroke.c70
-rw-r--r--source/blender/editors/sculpt_paint/paint_undo.c235
-rw-r--r--source/blender/editors/sculpt_paint/paint_utils.c22
-rw-r--r--source/blender/editors/sculpt_paint/paint_vertex.c76
-rw-r--r--source/blender/editors/sculpt_paint/sculpt.c2040
-rw-r--r--source/blender/editors/sculpt_paint/sculpt_intern.h6
-rw-r--r--source/blender/editors/space_action/action_edit.c89
-rw-r--r--source/blender/editors/space_action/action_header.c348
-rw-r--r--source/blender/editors/space_action/action_intern.h42
-rw-r--r--source/blender/editors/space_action/action_ops.c108
-rw-r--r--source/blender/editors/space_action/action_select.c16
-rw-r--r--source/blender/editors/space_action/space_action.c100
-rw-r--r--source/blender/editors/space_api/spacetypes.c3
-rw-r--r--source/blender/editors/space_buttons/buttons_context.c2
-rw-r--r--source/blender/editors/space_buttons/space_buttons.c69
-rw-r--r--source/blender/editors/space_console/console_intern.h32
-rw-r--r--source/blender/editors/space_console/console_ops.c30
-rw-r--r--source/blender/editors/space_console/space_console.c27
-rw-r--r--source/blender/editors/space_file/file_draw.c2
-rw-r--r--source/blender/editors/space_file/file_intern.h2
-rw-r--r--source/blender/editors/space_file/file_ops.c70
-rw-r--r--source/blender/editors/space_file/file_panels.c6
-rw-r--r--source/blender/editors/space_file/filelist.c2
-rw-r--r--source/blender/editors/space_file/filesel.c2
-rw-r--r--source/blender/editors/space_file/fsmenu.c125
-rw-r--r--source/blender/editors/space_file/space_file.c24
-rw-r--r--source/blender/editors/space_graph/graph_buttons.c20
-rw-r--r--source/blender/editors/space_graph/graph_draw.c48
-rw-r--r--source/blender/editors/space_graph/graph_edit.c22
-rw-r--r--source/blender/editors/space_graph/graph_header.c309
-rw-r--r--source/blender/editors/space_graph/graph_intern.h2
-rw-r--r--source/blender/editors/space_graph/graph_ops.c8
-rw-r--r--source/blender/editors/space_graph/space_graph.c98
-rw-r--r--source/blender/editors/space_image/image_buttons.c133
-rw-r--r--source/blender/editors/space_image/space_image.c15
-rw-r--r--source/blender/editors/space_info/space_info.c3
-rw-r--r--source/blender/editors/space_logic/logic_window.c14
-rw-r--r--source/blender/editors/space_logic/space_logic.c13
-rw-r--r--source/blender/editors/space_nla/nla_buttons.c4
-rw-r--r--source/blender/editors/space_nla/nla_channels.c4
-rw-r--r--source/blender/editors/space_nla/nla_edit.c20
-rw-r--r--source/blender/editors/space_nla/nla_header.c262
-rw-r--r--source/blender/editors/space_nla/nla_intern.h10
-rw-r--r--source/blender/editors/space_nla/nla_ops.c24
-rw-r--r--source/blender/editors/space_nla/space_nla.c35
-rw-r--r--source/blender/editors/space_node/drawnode.c103
-rw-r--r--source/blender/editors/space_node/node_edit.c2
-rw-r--r--source/blender/editors/space_node/node_ops.c4
-rw-r--r--source/blender/editors/space_node/space_node.c11
-rw-r--r--source/blender/editors/space_outliner/outliner.c4
-rw-r--r--source/blender/editors/space_outliner/outliner_ops.c4
-rw-r--r--source/blender/editors/space_outliner/space_outliner.c10
-rw-r--r--source/blender/editors/space_script/space_script.c3
-rw-r--r--source/blender/editors/space_sequencer/sequencer_add.c49
-rw-r--r--source/blender/editors/space_sequencer/sequencer_draw.c201
-rw-r--r--source/blender/editors/space_sequencer/sequencer_edit.c490
-rw-r--r--source/blender/editors/space_sequencer/sequencer_intern.h18
-rw-r--r--source/blender/editors/space_sequencer/sequencer_ops.c29
-rw-r--r--source/blender/editors/space_sequencer/sequencer_select.c35
-rw-r--r--source/blender/editors/space_sequencer/space_sequencer.c171
-rw-r--r--source/blender/editors/space_sound/space_sound.c3
-rw-r--r--source/blender/editors/space_text/space_text.c20
-rw-r--r--source/blender/editors/space_text/text_ops.c64
-rw-r--r--source/blender/editors/space_time/space_time.c32
-rw-r--r--source/blender/editors/space_time/time_ops.c52
-rw-r--r--source/blender/editors/space_userpref/space_userpref.c3
-rw-r--r--source/blender/editors/space_view3d/drawmesh.c26
-rw-r--r--source/blender/editors/space_view3d/drawobject.c384
-rw-r--r--source/blender/editors/space_view3d/space_view3d.c30
-rw-r--r--source/blender/editors/space_view3d/view3d_buttons.c33
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.c82
-rw-r--r--source/blender/editors/space_view3d/view3d_edit.c279
-rw-r--r--source/blender/editors/space_view3d/view3d_header.c1867
-rw-r--r--source/blender/editors/space_view3d/view3d_intern.h1
-rw-r--r--source/blender/editors/space_view3d/view3d_ops.c33
-rw-r--r--source/blender/editors/space_view3d/view3d_select.c135
-rw-r--r--source/blender/editors/space_view3d/view3d_snap.c47
-rw-r--r--source/blender/editors/space_view3d/view3d_toolbar.c7
-rw-r--r--source/blender/editors/space_view3d/view3d_view.c147
-rw-r--r--source/blender/editors/transform/transform.c478
-rw-r--r--source/blender/editors/transform/transform.h71
-rw-r--r--source/blender/editors/transform/transform_constraints.c13
-rw-r--r--source/blender/editors/transform/transform_conversions.c210
-rw-r--r--source/blender/editors/transform/transform_generics.c76
-rw-r--r--source/blender/editors/transform/transform_manipulator.c110
-rw-r--r--source/blender/editors/transform/transform_ops.c335
-rw-r--r--source/blender/editors/transform/transform_orientations.c7
-rw-r--r--source/blender/editors/transform/transform_snap.c272
-rw-r--r--source/blender/editors/util/ed_util.c11
-rw-r--r--source/blender/editors/util/undo.c6
-rw-r--r--source/blender/editors/uvedit/uvedit_ops.c158
-rw-r--r--source/blender/editors/uvedit/uvedit_unwrap_ops.c78
-rw-r--r--source/blender/gpu/gpu_buffers.h15
-rw-r--r--source/blender/gpu/intern/gpu_buffers.c365
-rw-r--r--source/blender/gpu/intern/gpu_draw.c17
-rw-r--r--source/blender/imbuf/intern/divers.c1
-rw-r--r--source/blender/imbuf/intern/jpeg.c121
-rw-r--r--source/blender/imbuf/intern/rectop.c4
-rw-r--r--source/blender/makesdna/DNA_action_types.h4
-rw-r--r--source/blender/makesdna/DNA_anim_types.h32
-rw-r--r--source/blender/makesdna/DNA_armature_types.h13
-rw-r--r--source/blender/makesdna/DNA_brush_types.h13
-rw-r--r--source/blender/makesdna/DNA_customdata_types.h19
-rw-r--r--source/blender/makesdna/DNA_ipo_types.h2
-rw-r--r--source/blender/makesdna/DNA_meshdata_types.h7
-rw-r--r--source/blender/makesdna/DNA_modifier_types.h37
-rw-r--r--source/blender/makesdna/DNA_object_force.h3
-rw-r--r--source/blender/makesdna/DNA_particle_types.h6
-rw-r--r--source/blender/makesdna/DNA_scene_types.h29
-rw-r--r--source/blender/makesdna/DNA_screen_types.h8
-rw-r--r--source/blender/makesdna/DNA_sequence_types.h16
-rw-r--r--source/blender/makesdna/DNA_space_types.h27
-rw-r--r--source/blender/makesdna/DNA_userdef_types.h14
-rw-r--r--source/blender/makesdna/DNA_view3d_types.h3
-rw-r--r--source/blender/makesdna/DNA_windowmanager_types.h124
-rw-r--r--source/blender/makesdna/DNA_world_types.h2
-rw-r--r--source/blender/makesrna/RNA_access.h82
-rw-r--r--source/blender/makesrna/RNA_define.h1
-rw-r--r--source/blender/makesrna/RNA_enum_types.h7
-rw-r--r--source/blender/makesrna/RNA_types.h22
-rw-r--r--source/blender/makesrna/intern/Makefile2
-rw-r--r--source/blender/makesrna/intern/makesrna.c10
-rw-r--r--source/blender/makesrna/intern/rna_ID.c65
-rw-r--r--source/blender/makesrna/intern/rna_access.c553
-rw-r--r--source/blender/makesrna/intern/rna_action.c156
-rw-r--r--source/blender/makesrna/intern/rna_animation.c8
-rw-r--r--source/blender/makesrna/intern/rna_animation_api.c2
-rw-r--r--source/blender/makesrna/intern/rna_armature.c168
-rw-r--r--source/blender/makesrna/intern/rna_armature_api.c66
-rw-r--r--source/blender/makesrna/intern/rna_boid.c10
-rw-r--r--source/blender/makesrna/intern/rna_brush.c11
-rw-r--r--source/blender/makesrna/intern/rna_camera.c6
-rw-r--r--source/blender/makesrna/intern/rna_cloth.c8
-rw-r--r--source/blender/makesrna/intern/rna_color.c4
-rw-r--r--source/blender/makesrna/intern/rna_constraint.c201
-rw-r--r--source/blender/makesrna/intern/rna_context.c1
-rw-r--r--source/blender/makesrna/intern/rna_curve.c88
-rw-r--r--source/blender/makesrna/intern/rna_define.c10
-rw-r--r--source/blender/makesrna/intern/rna_fcurve.c194
-rw-r--r--source/blender/makesrna/intern/rna_fluidsim.c9
-rw-r--r--source/blender/makesrna/intern/rna_gpencil.c2
-rw-r--r--source/blender/makesrna/intern/rna_group.c6
-rw-r--r--source/blender/makesrna/intern/rna_image.c13
-rw-r--r--source/blender/makesrna/intern/rna_internal.h16
-rw-r--r--source/blender/makesrna/intern/rna_internal_types.h10
-rw-r--r--source/blender/makesrna/intern/rna_key.c5
-rw-r--r--source/blender/makesrna/intern/rna_lamp.c12
-rw-r--r--source/blender/makesrna/intern/rna_lattice.c9
-rw-r--r--source/blender/makesrna/intern/rna_main_api.c61
-rw-r--r--source/blender/makesrna/intern/rna_material.c10
-rw-r--r--source/blender/makesrna/intern/rna_mesh.c188
-rw-r--r--source/blender/makesrna/intern/rna_meta.c8
-rw-r--r--source/blender/makesrna/intern/rna_modifier.c196
-rw-r--r--source/blender/makesrna/intern/rna_nodetree.c27
-rw-r--r--source/blender/makesrna/intern/rna_object.c254
-rw-r--r--source/blender/makesrna/intern/rna_object_api.c2
-rw-r--r--source/blender/makesrna/intern/rna_object_force.c94
-rw-r--r--source/blender/makesrna/intern/rna_particle.c64
-rw-r--r--source/blender/makesrna/intern/rna_pose.c99
-rw-r--r--source/blender/makesrna/intern/rna_render.c7
-rw-r--r--source/blender/makesrna/intern/rna_rna.c50
-rw-r--r--source/blender/makesrna/intern/rna_scene.c234
-rw-r--r--source/blender/makesrna/intern/rna_scene_api.c11
-rw-r--r--source/blender/makesrna/intern/rna_screen.c28
-rw-r--r--source/blender/makesrna/intern/rna_sculpt_paint.c40
-rw-r--r--source/blender/makesrna/intern/rna_sequencer.c (renamed from source/blender/makesrna/intern/rna_sequence.c)402
-rw-r--r--source/blender/makesrna/intern/rna_smoke.c16
-rw-r--r--source/blender/makesrna/intern/rna_sound.c4
-rw-r--r--source/blender/makesrna/intern/rna_space.c252
-rw-r--r--source/blender/makesrna/intern/rna_texture.c51
-rw-r--r--source/blender/makesrna/intern/rna_ui.c29
-rw-r--r--source/blender/makesrna/intern/rna_ui_api.c37
-rw-r--r--source/blender/makesrna/intern/rna_userdef.c102
-rw-r--r--source/blender/makesrna/intern/rna_wm.c405
-rw-r--r--source/blender/makesrna/intern/rna_wm_api.c122
-rw-r--r--source/blender/makesrna/intern/rna_world.c19
-rw-r--r--source/blender/nodes/intern/CMP_nodes/CMP_bilateralblur.c3
-rw-r--r--source/blender/python/BPY_extern.h2
-rw-r--r--source/blender/python/generic/bpy_internal_import.c3
-rw-r--r--source/blender/python/generic/vector.c73
-rw-r--r--source/blender/python/intern/bpy_array.c97
-rw-r--r--source/blender/python/intern/bpy_driver.c239
-rw-r--r--source/blender/python/intern/bpy_interface.c226
-rw-r--r--source/blender/python/intern/bpy_operator.c18
-rw-r--r--source/blender/python/intern/bpy_operator_wrap.c334
-rw-r--r--source/blender/python/intern/bpy_operator_wrap.h2
-rw-r--r--source/blender/python/intern/bpy_rna.c437
-rw-r--r--source/blender/python/intern/bpy_rna.h1
-rw-r--r--source/blender/python/intern/bpy_util.c18
-rw-r--r--source/blender/python/sphinx_doc_gen.py322
-rw-r--r--source/blender/quicktime/CMakeLists.txt2
-rw-r--r--source/blender/quicktime/SConscript9
-rw-r--r--source/blender/quicktime/apple/Makefile3
-rw-r--r--source/blender/quicktime/apple/qtkit_export.m199
-rw-r--r--source/blender/quicktime/apple/qtkit_import.m5
-rw-r--r--source/blender/quicktime/apple/quicktime_export.c433
-rw-r--r--source/blender/quicktime/quicktime_export.h115
-rw-r--r--source/blender/render/SConscript45
-rw-r--r--source/blender/render/extern/include/RE_pipeline.h7
-rw-r--r--source/blender/render/extern/include/RE_shader_ext.h2
-rw-r--r--source/blender/render/intern/include/render_types.h3
-rw-r--r--source/blender/render/intern/raytrace/reorganize.h8
-rw-r--r--source/blender/render/intern/source/convertblender.c36
-rw-r--r--source/blender/render/intern/source/occlusion.c255
-rw-r--r--source/blender/render/intern/source/pipeline.c65
-rw-r--r--source/blender/render/intern/source/pixelshading.c17
-rw-r--r--source/blender/render/intern/source/shadeinput.c38
-rw-r--r--source/blender/render/intern/source/shadeoutput.c1
-rw-r--r--source/blender/render/intern/source/sss.c11
-rw-r--r--source/blender/render/intern/source/strand.c6
-rw-r--r--source/blender/render/intern/source/texture.c55
-rw-r--r--source/blender/render/intern/source/zbuf.c8
-rw-r--r--source/blender/windowmanager/WM_api.h43
-rw-r--r--source/blender/windowmanager/WM_types.h119
-rw-r--r--source/blender/windowmanager/intern/wm.c2
-rw-r--r--source/blender/windowmanager/intern/wm_cursors.c15
-rw-r--r--source/blender/windowmanager/intern/wm_draw.c25
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c219
-rw-r--r--source/blender/windowmanager/intern/wm_files.c5
-rw-r--r--source/blender/windowmanager/intern/wm_gesture.c1
-rw-r--r--source/blender/windowmanager/intern/wm_init_exit.c5
-rw-r--r--source/blender/windowmanager/intern/wm_keymap.c330
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c241
-rw-r--r--source/blender/windowmanager/intern/wm_subwindow.c10
-rw-r--r--source/blender/windowmanager/intern/wm_window.c26
-rw-r--r--source/blender/windowmanager/wm_event_system.h2
-rw-r--r--source/blender/windowmanager/wm_event_types.h9
-rw-r--r--source/blender/windowmanager/wm_window.h8
450 files changed, 44570 insertions, 28865 deletions
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h
index c1fe8f0452e..c97e3d2798d 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -102,6 +102,8 @@ struct ColorBand;
struct GPUVertexAttribs;
struct GPUDrawObject;
struct BMEditMesh;
+struct ListBase;
+struct PBVH;
/* number of sub-elements each mesh element has (for interpolation) */
#define SUB_ELEMS_VERT 0
@@ -160,6 +162,16 @@ typedef struct DMFaceIter {
void *(*getCDData)(void *self, int type, int layer);
} DMFaceIter;
+typedef struct DMGridData {
+ float co[3];
+ float no[3];
+} DMGridData;
+
+typedef struct DMGridAdjacency {
+ int index[4];
+ int rotation[4];
+} DMGridAdjacency;
+
typedef struct DerivedMesh DerivedMesh;
struct DerivedMesh {
/* Private DerivedMesh data, only for internal DerivedMesh use */
@@ -245,6 +257,13 @@ struct DerivedMesh {
void (*copyFromEdgeCData)(DerivedMesh *dm, int source, CustomData *dst, int dest);
void (*copyFromFaceCData)(DerivedMesh *dm, int source, CustomData *dst, int dest);
+ /* optional grid access for subsurf */
+ int (*getNumGrids)(DerivedMesh *dm);
+ int (*getGridSize)(DerivedMesh *dm);
+ DMGridData **(*getGridData)(DerivedMesh *dm);
+ DMGridAdjacency *(*getGridAdjacency)(DerivedMesh *dm);
+ int *(*getGridOffset)(DerivedMesh *dm);
+
/* Iterate over each mapped vertex in the derived mesh, calling the
* given function with the original vert and the mapped vert's new
* coordinate and normal. For historical reasons the normal can be
@@ -293,6 +312,14 @@ struct DerivedMesh {
/* Get vertex normal, undefined if index is not valid */
void (*getVertNo)(DerivedMesh *dm, int index, float no_r[3]);
+ /* Get a map of vertices to faces
+ */
+ struct ListBase *(*getFaceMap)(DerivedMesh *dm);
+
+ /* Get the BVH used for paint modes
+ */
+ struct PBVH *(*getPBVH)(struct Object *ob, DerivedMesh *dm);
+
/* Drawing Operations */
/* Draw all vertices as bgl points (no options) */
@@ -317,8 +344,8 @@ struct DerivedMesh {
*
* Also called for *final* editmode DerivedMeshes
*/
- void (*drawFacesSolid)(DerivedMesh *dm,
- int (*setMaterial)(int, void *attribs));
+ void (*drawFacesSolid)(DerivedMesh *dm, float (*partial_redraw_planes)[4],
+ int fast, int (*setMaterial)(int, void *attribs));
/* Draw all faces
* o If useTwoSided, draw front and back using col arrays
diff --git a/source/blender/blenkernel/BKE_action.h b/source/blender/blenkernel/BKE_action.h
index e0b65c1996f..6029ce01794 100644
--- a/source/blender/blenkernel/BKE_action.h
+++ b/source/blender/blenkernel/BKE_action.h
@@ -140,7 +140,11 @@ void free_pose(struct bPose *pose);
*/
void copy_pose(struct bPose **dst, struct bPose *src, int copyconstraints);
-
+/**
+ * Copy the internal members of each pose channel including constraints
+ * and ID-Props, used when duplicating bones in editmode.
+ */
+void duplicate_pose_channel_data(struct bPoseChannel *pchan, const struct bPoseChannel *pchan_from);
/**
* Return a pointer to the pose channel of the given name
diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h
index e4a763a25d0..973e70b6f51 100644
--- a/source/blender/blenkernel/BKE_blender.h
+++ b/source/blender/blenkernel/BKE_blender.h
@@ -43,7 +43,7 @@ struct bContext;
struct ReportList;
#define BLENDER_VERSION 250
-#define BLENDER_SUBVERSION 7
+#define BLENDER_SUBVERSION 11
#define BLENDER_MINVERSION 250
#define BLENDER_MINSUBVERSION 0
diff --git a/source/blender/blenkernel/BKE_colortools.h b/source/blender/blenkernel/BKE_colortools.h
index c83a260690b..c571688737a 100644
--- a/source/blender/blenkernel/BKE_colortools.h
+++ b/source/blender/blenkernel/BKE_colortools.h
@@ -34,12 +34,6 @@ struct CurveMap;
struct ImBuf;
struct rctf;
-void gamma_correct_rec709(float *c, float gamma);
-void gamma_correct(float *c, float gamma);
-float srgb_to_linearrgb(float c);
-float linearrgb_to_srgb(float c);
-void color_manage_linearize(float *col_to, float *col_from);
-
void floatbuf_to_srgb_byte(float *rectf, unsigned char *rectc, int x1, int x2, int y1, int y2, int w);
void floatbuf_to_byte(float *rectf, unsigned char *rectc, int x1, int x2, int y1, int y2, int w);
diff --git a/source/blender/blenkernel/BKE_constraint.h b/source/blender/blenkernel/BKE_constraint.h
index a8ccc84a7c3..e9110b99098 100644
--- a/source/blender/blenkernel/BKE_constraint.h
+++ b/source/blender/blenkernel/BKE_constraint.h
@@ -114,7 +114,7 @@ bConstraintTypeInfo *get_constraint_typeinfo(int type);
void unique_constraint_name(struct bConstraint *con, struct ListBase *list);
void free_constraints(struct ListBase *list);
-void copy_constraints(struct ListBase *dst, struct ListBase *src);
+void copy_constraints(struct ListBase *dst, const struct ListBase *src);
void relink_constraints(struct ListBase *list);
void free_constraint_data(struct bConstraint *con);
diff --git a/source/blender/blenkernel/BKE_context.h b/source/blender/blenkernel/BKE_context.h
index 7f64538b10d..2c013a5231a 100644
--- a/source/blender/blenkernel/BKE_context.h
+++ b/source/blender/blenkernel/BKE_context.h
@@ -248,9 +248,9 @@ int CTX_data_selected_editable_bones(const bContext *C, ListBase *list);
int CTX_data_visible_bones(const bContext *C, ListBase *list);
int CTX_data_editable_bones(const bContext *C, ListBase *list);
-struct bPoseChannel *CTX_data_active_pchan(const bContext *C);
-int CTX_data_selected_pchans(const bContext *C, ListBase *list);
-int CTX_data_visible_pchans(const bContext *C, ListBase *list);
+struct bPoseChannel *CTX_data_active_pose_bone(const bContext *C);
+int CTX_data_selected_pose_bones(const bContext *C, ListBase *list);
+int CTX_data_visible_pose_bones(const bContext *C, ListBase *list);
#ifdef __cplusplus
}
diff --git a/source/blender/blenkernel/BKE_customdata.h b/source/blender/blenkernel/BKE_customdata.h
index a253d18486f..6c4df250061 100644
--- a/source/blender/blenkernel/BKE_customdata.h
+++ b/source/blender/blenkernel/BKE_customdata.h
@@ -33,6 +33,7 @@
#define BKE_CUSTOMDATA_H
struct BMesh;
+struct ID;
struct CustomData;
struct CustomDataLayer;
typedef unsigned int CustomDataMask;
@@ -232,11 +233,11 @@ int CustomData_get_named_layer_index(const struct CustomData *data, int type, ch
int CustomData_get_active_layer_index(const struct CustomData *data, int type);
int CustomData_get_render_layer_index(const struct CustomData *data, int type);
int CustomData_get_clone_layer_index(const struct CustomData *data, int type);
-int CustomData_get_mask_layer_index(const struct CustomData *data, int type);
+int CustomData_get_stencil_layer_index(const struct CustomData *data, int type);
int CustomData_get_active_layer(const struct CustomData *data, int type);
int CustomData_get_render_layer(const struct CustomData *data, int type);
int CustomData_get_clone_layer(const struct CustomData *data, int type);
-int CustomData_get_mask_layer(const struct CustomData *data, int type);
+int CustomData_get_stencil_layer(const struct CustomData *data, int type);
/* copies the data from source to the data element at index in the first
* layer of type
@@ -270,13 +271,13 @@ void *CustomData_set_layer_n(const struct CustomData *data, int type, int n, voi
void CustomData_set_layer_active(struct CustomData *data, int type, int n);
void CustomData_set_layer_render(struct CustomData *data, int type, int n);
void CustomData_set_layer_clone(struct CustomData *data, int type, int n);
-void CustomData_set_layer_mask(struct CustomData *data, int type, int n);
+void CustomData_set_layer_stencil(struct CustomData *data, int type, int n);
/* same as above but works with an index from CustomData_get_layer_index */
void CustomData_set_layer_active_index(struct CustomData *data, int type, int n);
void CustomData_set_layer_render_index(struct CustomData *data, int type, int n);
void CustomData_set_layer_clone_index(struct CustomData *data, int type, int n);
-void CustomData_set_layer_mask_index(struct CustomData *data, int type, int n);
+void CustomData_set_layer_stencil_index(struct CustomData *data, int type, int n);
/* adds flag to the layer flags */
void CustomData_set_layer_flag(struct CustomData *data, int type, int flag);
@@ -319,4 +320,19 @@ void CustomData_to_bmeshpoly(struct CustomData *fdata, struct CustomData *pdata,
struct CustomData *ldata, int totloop, int totpoly);
void CustomData_from_bmeshpoly(struct CustomData *fdata, struct CustomData *pdata, struct CustomData *ldata, int total);
void CustomData_bmesh_init_pool(struct CustomData *data, int allocsize);
+
+/* External file storage */
+
+void CustomData_external_add(struct CustomData *data,
+ struct ID *id, int type, int totelem, const char *filename);
+void CustomData_external_remove(struct CustomData *data,
+ struct ID *id, int type, int totelem);
+int CustomData_external_test(struct CustomData *data, int type);
+
+void CustomData_external_write(struct CustomData *data,
+ struct ID *id, CustomDataMask mask, int totelem, int free);
+void CustomData_external_read(struct CustomData *data,
+ struct ID *id, CustomDataMask mask, int totelem);
+
#endif
+
diff --git a/source/blender/blenkernel/BKE_customdata_file.h b/source/blender/blenkernel/BKE_customdata_file.h
new file mode 100644
index 00000000000..5cbff193cd3
--- /dev/null
+++ b/source/blender/blenkernel/BKE_customdata_file.h
@@ -0,0 +1,59 @@
+/*
+ * $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.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef BKE_CUSTOMDATA_FILE_H
+#define BKE_CUSTOMDATA_FILE_H
+
+#define CDF_TYPE_IMAGE 0
+#define CDF_TYPE_MESH 1
+
+#define CDF_LAYER_NAME_MAX 64
+
+typedef struct CDataFile CDataFile;
+typedef struct CDataFileLayer CDataFileLayer;
+
+/* Create/Free */
+
+CDataFile *cdf_create(int type);
+void cdf_free(CDataFile *cdf);
+
+/* File read/write/remove */
+
+int cdf_read_open(CDataFile *cdf, char *filename);
+int cdf_read_layer(CDataFile *cdf, CDataFileLayer *blay);
+int cdf_read_data(CDataFile *cdf, int size, void *data);
+void cdf_read_close(CDataFile *cdf);
+
+int cdf_write_open(CDataFile *cdf, char *filename);
+int cdf_write_layer(CDataFile *cdf, CDataFileLayer *blay);
+int cdf_write_data(CDataFile *cdf, int size, void *data);
+void cdf_write_close(CDataFile *cdf);
+
+void cdf_remove(char *filename);
+
+/* Layers */
+
+CDataFileLayer *cdf_layer_find(CDataFile *cdf, int type, char *name);
+CDataFileLayer *cdf_layer_add(CDataFile *cdf, int type, char *name, size_t datasize);
+
+#endif /* BKE_CUSTOMDATA_FILE_H */
+
diff --git a/source/blender/blenkernel/BKE_fcurve.h b/source/blender/blenkernel/BKE_fcurve.h
index 5888c6d7530..fa6b8969edb 100644
--- a/source/blender/blenkernel/BKE_fcurve.h
+++ b/source/blender/blenkernel/BKE_fcurve.h
@@ -158,7 +158,12 @@ void copy_fcurves(ListBase *dst, ListBase *src);
struct FCurve *list_find_fcurve(ListBase *list, const char rna_path[], const int array_index);
/* high level function to get an fcurve from C without having the rna */
-struct FCurve *id_data_find_fcurve(ID* id, void *data, struct StructRNA *type, char *prop_name, int index);
+struct FCurve *id_data_find_fcurve(ID *id, void *data, struct StructRNA *type, char *prop_name, int index);
+
+/* Get list of LinkData's containing pointers to the F-Curves which control the types of data indicated
+ * e.g. numMatches = list_find_data_fcurves(matches, &act->curves, "pose.bones[", "MyFancyBone");
+ */
+int list_find_data_fcurves(ListBase *dst, ListBase *src, const char *dataPrefix, const char *dataName);
/* Binary search algorithm for finding where to 'insert' BezTriple with given frame number.
* Returns the index to insert at (data already at that index will be offset if replace is 0)
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index 75814261104..f1ab1d61fdf 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -63,10 +63,13 @@ struct BMesh *BKE_mesh_to_bmesh(struct Mesh *me, struct Object *ob);
use_poly_origindex sets whether or not the tesselation faces' origindex
layer should point to original poly indices or real poly indices.
+
+ use_face_origindex sets the tesselation faces' origindex layer
+ to point to the tesselation faces themselves, not the polys.
*/
int mesh_recalcTesselation(struct CustomData *fdata, struct CustomData *ldata,
struct CustomData *pdata, struct MVert *mvert, int totface,
- int totloop, int totpoly, int use_poly_origindex);
+ int totloop, int totpoly, int use_poly_origindex, int use_face_origindex);
/*calculates a face normal.*/
void mesh_calc_poly_normal(struct MPoly *mpoly, struct MLoop *loopstart,
diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h
index a05df810ca4..c9dbac1cf5d 100644
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@ -229,7 +229,7 @@ typedef struct ModifierTypeInfo {
*
* This function is optional (assumes never disabled if not present).
*/
- int (*isDisabled)(struct ModifierData *md);
+ int (*isDisabled)(struct ModifierData *md, int userRenderParams);
/* Add the appropriate relations to the DEP graph depending on the
* modifier data.
@@ -281,7 +281,7 @@ void modifier_copyData(struct ModifierData *md, struct ModifierData *ta
int modifier_dependsOnTime(struct ModifierData *md);
int modifier_supportsMapping(struct ModifierData *md);
int modifier_couldBeCage(struct ModifierData *md);
-int modifier_isDeformer(struct ModifierData *md);
+int modifier_isCorrectableDeformed(struct ModifierData *md);
int modifier_sameTopology(ModifierData *md);
int modifier_isEnabled(struct ModifierData *md, int required_mode);
void modifier_setError(struct ModifierData *md, char *format, ...);
@@ -304,7 +304,7 @@ int modifiers_isParticleEnabled(struct Object *ob);
struct Object *modifiers_isDeformedByArmature(struct Object *ob);
struct Object *modifiers_isDeformedByLattice(struct Object *ob);
int modifiers_usesArmature(struct Object *ob, struct bArmature *arm);
-int modifiers_isDeformed(struct Scene *scene, struct Object *ob);
+int modifiers_isCorrectableDeformed(struct Scene *scene, struct Object *ob);
void modifier_freeTemporaryData(struct ModifierData *md);
int modifiers_indexInObject(struct Object *ob, struct ModifierData *md);
diff --git a/source/blender/blenkernel/BKE_multires.h b/source/blender/blenkernel/BKE_multires.h
index d20a00cbfff..2f372f80957 100644
--- a/source/blender/blenkernel/BKE_multires.h
+++ b/source/blender/blenkernel/BKE_multires.h
@@ -27,52 +27,36 @@
* ***** END GPL LICENSE BLOCK *****
*/
+#ifndef BKE_MULTIRES_H
+#define BKE_MULTIRES_H
+
struct DerivedMesh;
struct Mesh;
struct MFace;
+struct Multires;
struct MultiresModifierData;
struct Object;
-typedef struct MultiresSubsurf {
- struct MultiresModifierData *mmd;
- struct Object *ob;
- int local_mmd;
-} MultiresSubsurf;
-
-/* MultiresDM */
-struct Object *MultiresDM_get_object(struct DerivedMesh *dm);
-struct Mesh *MultiresDM_get_mesh(struct DerivedMesh *dm);
-struct DerivedMesh *MultiresDM_new(struct MultiresSubsurf *, struct DerivedMesh*,
- int, int, int, int, int);
-void *MultiresDM_get_vertnorm(struct DerivedMesh *);
-void *MultiresDM_get_orco(struct DerivedMesh *);
-struct MVert *MultiresDM_get_subco(struct DerivedMesh *);
-struct ListBase *MultiresDM_get_vert_face_map(struct DerivedMesh *);
-struct ListBase *MultiresDM_get_vert_edge_map(struct DerivedMesh *);
-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*));
-
-/* 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*, int local_mmd, struct DerivedMesh*,
- struct Object *, int, int);
+struct DerivedMesh *multires_dm_create_from_derived(struct MultiresModifierData*,
+ int local_mmd, struct DerivedMesh*, struct Object *, 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,
+void multiresModifier_subdivide(struct MultiresModifierData *mmd, struct Object *ob,
int updateblock, int simple);
int multiresModifier_reshape(struct MultiresModifierData *mmd, struct Object *dst, struct Object *src);
+void multires_stitch_grids(struct Object *);
+
/* Related to the old multires */
-struct Multires;
-void multires_load_old(struct DerivedMesh *, struct Multires *);
-void multires_free(struct Multires*);
+void multires_free(struct Multires *mr);
+void multires_load_old(struct Object *ob, struct Mesh *me);
+void multires_load_old_250(struct Mesh *);
+
+#endif
+
diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h
index f9130e24a08..3ed9ab8778e 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -175,6 +175,7 @@ struct bNode *nodeCopyNode(struct bNodeTree *ntree, struct bNode *node, int inte
struct bNodeLink *nodeAddLink(struct bNodeTree *ntree, struct bNode *fromnode, struct bNodeSocket *fromsock, struct bNode *tonode, struct bNodeSocket *tosock);
void nodeRemLink(struct bNodeTree *ntree, struct bNodeLink *link);
+struct bNode *nodeFindNodebyName(struct bNodeTree *ntree, const char *name);
int nodeFindNode(struct bNodeTree *ntree, struct bNodeSocket *sock, struct bNode **nodep, int *sockindex);
struct bNodeLink *nodeFindLink(struct bNodeTree *ntree, struct bNodeSocket *from, struct bNodeSocket *to);
diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h
index aeb33cd3628..3e239e91453 100644
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@ -93,8 +93,10 @@ void disable_speed_curve(int val);
float bsystem_time(struct Scene *scene, struct Object *ob, float cfra, float ofs);
void object_scale_to_mat3(struct Object *ob, float mat[][3]);
void object_rot_to_mat3(struct Object *ob, float mat[][3]);
+void object_mat3_to_rot(struct Object *ob, float mat[][3], int use_compat);
void object_to_mat3(struct Object *ob, float mat[][3]);
void object_to_mat4(struct Object *ob, float mat[][4]);
+void object_apply_mat4(struct Object *ob, float mat[][4]);
void set_no_parent_ipo(int val);
diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h
index b532b0820d7..161ae2c3c5c 100644
--- a/source/blender/blenkernel/BKE_paint.h
+++ b/source/blender/blenkernel/BKE_paint.h
@@ -34,6 +34,7 @@ struct MultireModifierData;
struct MVert;
struct Object;
struct Paint;
+struct PBVH;
struct Scene;
struct StrokeCache;
@@ -68,25 +69,24 @@ typedef struct SculptSession {
struct MFace *mface;
int totvert, totface;
float *face_normals;
-
+ struct PBVH *tree;
struct Object *ob;
struct KeyBlock *kb, *refkb;
/* Mesh connectivity */
struct ListBase *fmap;
- struct IndexNode *fmap_mem;
- int fmap_size;
/* Used temporarily per-stroke */
float *vertexcosnos;
- ListBase damaged_rects;
- ListBase damaged_verts;
-
+
+ /* Partial redraw */
+ int partial_redraw;
+
/* Used to cache the render of the active texture */
unsigned int texcache_side, *texcache, texcache_actual;
/* Layer brush persistence between strokes */
- float (*mesh_co_orig)[3]; /* Copy of the mesh vertices' locations */
+ float (*layer_co)[3]; /* Copy of the mesh vertices' locations */
float *layer_disps; /* Displacements for each vertex */
struct SculptStroke *stroke;
diff --git a/source/blender/blenkernel/BKE_particle.h b/source/blender/blenkernel/BKE_particle.h
index 2291601bd47..2199240d77b 100644
--- a/source/blender/blenkernel/BKE_particle.h
+++ b/source/blender/blenkernel/BKE_particle.h
@@ -222,7 +222,7 @@ void copy_particle_key(struct ParticleKey *to, struct ParticleKey *from, int tim
void psys_particle_on_emitter(struct ParticleSystemModifierData *psmd, int distr, int index, int index_dmcache, float *fuv, float foffset, float *vec, float *nor, float *utan, float *vtan, float *orco, float *ornor);
struct ParticleSystemModifierData *psys_get_modifier(struct Object *ob, struct ParticleSystem *psys);
-void object_add_particle_system(struct Scene *scene, struct Object *ob);
+struct ModifierData *object_add_particle_system(struct Scene *scene, struct Object *ob, char *name);
void object_remove_particle_system(struct Scene *scene, struct Object *ob);
struct ParticleSettings *psys_new_settings(char *name, struct Main *main);
struct ParticleSettings *psys_copy_settings(struct ParticleSettings *part);
diff --git a/source/blender/blenkernel/BKE_pointcache.h b/source/blender/blenkernel/BKE_pointcache.h
index 5ae10d736fd..4b26eaa6d76 100644
--- a/source/blender/blenkernel/BKE_pointcache.h
+++ b/source/blender/blenkernel/BKE_pointcache.h
@@ -151,6 +151,7 @@ typedef struct PTCacheBaker {
int (*break_test)(void *data);
void *break_data;
void (*progressbar)(void *data, int num);
+ void (*progressend)(void *data);
void *progresscontext;
} PTCacheBaker;
diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h
index 686fc265de0..c372004bd19 100644
--- a/source/blender/blenkernel/BKE_scene.h
+++ b/source/blender/blenkernel/BKE_scene.h
@@ -66,6 +66,7 @@ void unlink_scene(struct Main *bmain, struct Scene *sce, struct Scene *newsce);
int next_object(struct Scene *scene, int val, struct Base **base, struct Object **ob);
struct Object *scene_find_camera(struct Scene *sc);
+struct Object *scene_find_camera_switch(struct Scene *scene); // DURIAN_CAMERA_SWITCH
struct Base *scene_add_base(struct Scene *sce, struct Object *ob);
void scene_deselect_all(struct Scene *sce);
@@ -74,6 +75,7 @@ void scene_select_base(struct Scene *sce, struct Base *selbase);
/* checks for cycle, returns 1 if it's all OK */
int scene_check_setscene(struct Scene *sce);
+void scene_update_tagged(struct Scene *sce);
void scene_update_for_newframe(struct Scene *sce, unsigned int lay);
void scene_add_render_layer(struct Scene *sce);
diff --git a/source/blender/blenkernel/BKE_screen.h b/source/blender/blenkernel/BKE_screen.h
index 39a90fe3074..c9d1caa1cfe 100644
--- a/source/blender/blenkernel/BKE_screen.h
+++ b/source/blender/blenkernel/BKE_screen.h
@@ -41,6 +41,7 @@ struct Header;
struct Menu;
struct ScrArea;
struct SpaceType;
+struct Scene;
struct wmNotifier;
struct wmWindow;
struct wmWindowManager;
@@ -54,7 +55,7 @@ struct uiMenuItem;
ED_spacetypes_init() in editors/area/spacetypes.c */
/* an editor in Blender is a combined ScrArea + SpaceType + SpaceData */
-#define BKE_ST_MAXNAME 32
+#define BKE_ST_MAXNAME 64
typedef struct SpaceType {
struct SpaceType *next, *prev;
@@ -233,7 +234,7 @@ void BKE_screen_area_free(struct ScrArea *sa);
/* screen */
void free_screen(struct bScreen *sc);
-unsigned int BKE_screen_visible_layers(struct bScreen *screen);
+unsigned int BKE_screen_visible_layers(struct bScreen *screen, struct Scene *scene);
#endif
diff --git a/source/blender/blenkernel/BKE_sequence.h b/source/blender/blenkernel/BKE_sequencer.h
index 2f7526d524c..dc7b6d3ad9b 100644
--- a/source/blender/blenkernel/BKE_sequence.h
+++ b/source/blender/blenkernel/BKE_sequencer.h
@@ -60,17 +60,17 @@ void seq_next(SeqIterator *iter);
void seq_end(SeqIterator *iter);
void seq_array(struct Editing *ed, struct Sequence ***seqarray, int *tot, int use_pointer);
-#define SEQP_BEGIN(ed, seq) \
+#define SEQP_BEGIN(ed, _seq) \
{ \
SeqIterator iter;\
for(seq_begin(ed, &iter, 1); iter.valid; seq_next(&iter)) { \
- seq= iter.seq;
+ _seq= iter.seq;
-#define SEQ_BEGIN(ed, seq) \
+#define SEQ_BEGIN(ed, _seq) \
{ \
SeqIterator iter;\
for(seq_begin(ed, &iter, 0); iter.valid; seq_next(&iter)) { \
- seq= iter.seq;
+ _seq= iter.seq;
#define SEQ_END \
} \
@@ -125,7 +125,7 @@ struct SeqEffectHandle {
float-rects or byte-rects
(mixed cases are handled one layer up...) */
- void (*execute)(struct Sequence *seq, int cfra,
+ void (*execute)(struct Scene *scene, struct Sequence *seq, int cfra,
float facf0, float facf1,
int x, int y,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
@@ -137,10 +137,15 @@ struct SeqEffectHandle {
/* sequence.c */
void printf_strip(struct Sequence *seq);
+/* apply functions recursively */
+void seqbase_recursive_apply(struct ListBase *seqbase, int (*apply_func)(struct Sequence *seq, void *), void *arg);
+void seq_recursive_apply(struct Sequence *seq, int (*apply_func)(struct Sequence *, void *), void *arg);
+
// extern
void seq_free_sequence(struct Scene *scene, struct Sequence *seq);
void seq_free_strip(struct Strip *strip);
void seq_free_editing(struct Scene *scene);
+void seq_free_clipboard(void);
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, int render_size);
@@ -178,17 +183,23 @@ void seq_tx_set_final_left(struct Sequence *seq, int val);
void seq_tx_set_final_right(struct Sequence *seq, int val);
void seq_tx_handle_xlimits(struct Sequence *seq, int leftflag, int rightflag);
int seq_tx_test(struct Sequence * seq);
-int check_single_seq(struct Sequence *seq);
-void fix_single_seq(struct Sequence *seq);
+int seq_single_check(struct Sequence *seq);
+void seq_single_fix(struct Sequence *seq);
int seq_test_overlap(struct ListBase * seqbasep, struct Sequence *test);
-int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test);
-int shuffle_seq_time(ListBase * seqbasep);
+struct ListBase *seq_seqbase(struct ListBase *seqbase, struct Sequence *seq);
+void seq_offset_animdata(struct Scene *scene, struct Sequence *seq, int ofs);
+int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test, struct Scene *evil_scene);
+int shuffle_seq_time(ListBase * seqbasep, struct Scene *evil_scene);
+int seqbase_isolated_sel_check(struct ListBase *seqbase);
void free_imbuf_seq(struct Scene *scene, struct ListBase * seqbasep, int check_mem_usage);
void seq_update_sound(struct Sequence *seq);
-
+void seq_update_muting(struct Editing *ed);
+void seqbase_sound_reload(Scene *scene, ListBase *seqbase);
void clear_scene_in_allseqs(struct Scene *sce);
+struct Sequence *get_seq_by_name(struct ListBase *seqbase, const char *name, int recursive);
+
struct Sequence *active_seq_get(struct Scene *scene);
void active_seq_set(struct Scene *scene, struct Sequence *seq);
@@ -224,3 +235,6 @@ struct Sequence *sequencer_add_image_strip(struct bContext *C, ListBase *seqbase
struct Sequence *sequencer_add_sound_strip(struct bContext *C, ListBase *seqbasep, struct SeqLoadInfo *seq_load);
struct Sequence *sequencer_add_movie_strip(struct bContext *C, ListBase *seqbasep, struct SeqLoadInfo *seq_load);
+/* copy/paste */
+extern ListBase seqbase_clipboard;
+extern int seqbase_clipboard_frame;
diff --git a/source/blender/blenkernel/BKE_sound.h b/source/blender/blenkernel/BKE_sound.h
index cbce4663d6f..64ce1983e7d 100644
--- a/source/blender/blenkernel/BKE_sound.h
+++ b/source/blender/blenkernel/BKE_sound.h
@@ -41,6 +41,8 @@ void sound_init();
void sound_exit();
+void sound_disable();
+
struct bSound* sound_new_file(struct Main *main, char* filename);
// XXX unused currently
diff --git a/source/blender/blenkernel/BKE_subsurf.h b/source/blender/blenkernel/BKE_subsurf.h
index f6dc22f650a..a0db944530e 100644
--- a/source/blender/blenkernel/BKE_subsurf.h
+++ b/source/blender/blenkernel/BKE_subsurf.h
@@ -34,21 +34,66 @@ struct DerivedMesh;
struct EditMesh;
struct MultiresSubsurf;
struct SubsurfModifierData;
+struct _CCGSubsurf;
+struct _CCGVert;
+struct _CCGEdge;
+struct _CCGFace;
+struct EdgeHash;
+struct PBVH;
+struct DMGridData;
+struct DMGridAdjacency;
-struct DerivedMesh *subsurf_make_derived_from_derived(
- struct DerivedMesh *dm,
- struct SubsurfModifierData *smd,
- int useRenderParams, float (*vertCos)[3],
- int isFinalCalc, int editMode);
+/**************************** External *****************************/
-struct DerivedMesh *subsurf_make_derived_from_derived_with_multires(
+struct DerivedMesh *subsurf_make_derived_from_derived(
struct DerivedMesh *dm,
struct SubsurfModifierData *smd,
- struct MultiresSubsurf *ms,
int useRenderParams, float (*vertCos)[3],
int isFinalCalc, int editMode);
void subsurf_calculate_limit_positions(Mesh *me, float (*positions_r)[3]);
+/**************************** Internal *****************************/
+
+typedef struct CCGDerivedMesh {
+ DerivedMesh dm;
+
+ struct _CCGSubSurf *ss;
+ int freeSS;
+ int drawInteriorEdges, useSubsurfUv;
+
+ struct {int startVert; struct _CCGVert *vert;} *vertMap;
+ struct {int startVert; int startEdge; struct _CCGEdge *edge;} *edgeMap;
+ struct {int startVert; int startEdge;
+ int startFace; struct _CCGFace *face;} *faceMap;
+
+ short *edgeFlags;
+ char *faceFlags;
+
+ int *reverseFaceMap;
+
+ struct PBVH *pbvh;
+
+ struct DMGridData **gridData;
+ struct DMGridAdjacency *gridAdjacency;
+ int *gridOffset;
+ struct _CCGFace **gridFaces;
+
+ struct {
+ struct MultiresModifierData *mmd;
+ int local_mmd;
+
+ int lvl, totlvl;
+ float (*orco)[3];
+
+ Object *ob;
+ int modified;
+
+ void (*update)(DerivedMesh*);
+ } multires;
+
+ struct EdgeHash *ehash;
+} CCGDerivedMesh;
+
#endif
diff --git a/source/blender/blenkernel/BKE_texture.h b/source/blender/blenkernel/BKE_texture.h
index b9dc5916e69..95ada45f5d8 100644
--- a/source/blender/blenkernel/BKE_texture.h
+++ b/source/blender/blenkernel/BKE_texture.h
@@ -62,7 +62,7 @@ int do_colorband(struct ColorBand *coba, float in, float out[4]);
void colorband_table_RGBA(struct ColorBand *coba, float **array, int *size);
void default_tex(struct Tex *tex);
-struct Tex *add_texture(char *name);
+struct Tex *add_texture(const char *name);
void default_mtex(struct MTex *mtex);
struct MTex *add_mtex(void);
struct Tex *copy_texture(struct Tex *tex);
diff --git a/source/blender/blenkernel/BKE_utildefines.h b/source/blender/blenkernel/BKE_utildefines.h
index 2b03531a071..102f0f73326 100644
--- a/source/blender/blenkernel/BKE_utildefines.h
+++ b/source/blender/blenkernel/BKE_utildefines.h
@@ -174,7 +174,15 @@ extern "C" {
#define ENDB MAKE_ID('E','N','D','B')
-/* This one rotates the bytes in an int */
+/* This one rotates the bytes in an int64, int (32) and short (16) */
+#define SWITCH_INT64(a) { \
+ char s_i, *p_i; \
+ p_i= (char *)&(a); \
+ s_i=p_i[0]; p_i[0]=p_i[7]; p_i[7]=s_i; \
+ s_i=p_i[1]; p_i[1]=p_i[6]; p_i[6]=s_i; \
+ s_i=p_i[2]; p_i[2]=p_i[5]; p_i[5]=s_i; \
+ s_i=p_i[3]; p_i[3]=p_i[4]; p_i[4]=s_i; }
+
#define SWITCH_INT(a) { \
char s_i, *p_i; \
p_i= (char *)&(a); \
diff --git a/source/blender/blenkernel/BKE_writeavi.h b/source/blender/blenkernel/BKE_writeavi.h
index 4ef63b069c2..a8d38dda103 100644
--- a/source/blender/blenkernel/BKE_writeavi.h
+++ b/source/blender/blenkernel/BKE_writeavi.h
@@ -37,17 +37,19 @@ extern "C" {
/* generic blender movie support, could move to own module */
struct RenderData;
+struct ReportList;
struct Scene;
-void start_avi(struct Scene *scene, struct RenderData *rd, int rectx, int recty);
+
+int start_avi(struct Scene *scene, struct RenderData *rd, int rectx, int recty, struct ReportList *reports);
void end_avi(void);
-void append_avi(struct RenderData *rd, int frame, int *pixels, int rectx, int recty);
+int append_avi(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, struct ReportList *reports);
void makeavistring (struct RenderData *rd, char *string);
typedef struct bMovieHandle {
- void (*start_movie)(struct Scene *scene, struct RenderData *rd, int rectx, int recty);
- void (*append_movie)(struct RenderData *rd, int frame, int *pixels, int rectx, int recty);
+ int (*start_movie)(struct Scene *scene, struct RenderData *rd, int rectx, int recty, struct ReportList *reports);
+ int (*append_movie)(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, struct ReportList *reports);
void (*end_movie)(void);
- int (*get_next_frame)(struct RenderData *rd); /* optional */
+ int (*get_next_frame)(struct RenderData *rd, struct ReportList *reports); /* optional */
} bMovieHandle;
bMovieHandle *BKE_get_movie_handle(int imtype);
diff --git a/source/blender/blenkernel/BKE_writeffmpeg.h b/source/blender/blenkernel/BKE_writeffmpeg.h
index 07e0e01ef7e..6ec8320f026 100644
--- a/source/blender/blenkernel/BKE_writeffmpeg.h
+++ b/source/blender/blenkernel/BKE_writeffmpeg.h
@@ -57,11 +57,12 @@ extern "C" {
struct IDProperty;
struct RenderData;
+struct ReportList;
struct Scene;
-extern void start_ffmpeg(struct Scene *scene, struct RenderData *rd, int rectx, int recty);
+extern int start_ffmpeg(struct Scene *scene, struct RenderData *rd, int rectx, int recty, struct ReportList *reports);
extern void end_ffmpeg(void);
-extern void append_ffmpeg(struct RenderData *rd, int frame, int *pixels, int rectx, int recty);
+extern int append_ffmpeg(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, struct ReportList *reports);
extern void ffmpeg_set_preset(struct RenderData *rd, int preset);
extern void ffmpeg_verify_image_type(struct RenderData *rd);
diff --git a/source/blender/blenkernel/BKE_writeframeserver.h b/source/blender/blenkernel/BKE_writeframeserver.h
index 6a38abe977f..50b905cfd75 100644
--- a/source/blender/blenkernel/BKE_writeframeserver.h
+++ b/source/blender/blenkernel/BKE_writeframeserver.h
@@ -33,12 +33,13 @@ extern "C" {
#endif
struct RenderData;
+struct ReportList;
struct Scene;
-extern void start_frameserver(struct Scene *scene, struct RenderData *rd, int rectx, int recty);
+extern int start_frameserver(struct Scene *scene, struct RenderData *rd, int rectx, int recty, struct ReportList *reports);
extern void end_frameserver(void);
-extern void append_frameserver(struct RenderData *rd, int frame, int *pixels, int rectx, int recty);
-extern int frameserver_loop(struct RenderData *rd);
+extern int append_frameserver(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, struct ReportList *reports);
+extern int frameserver_loop(struct RenderData *rd, struct ReportList *reports);
#ifdef __cplusplus
}
diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt
index 7bd6314097b..b1cbd16512e 100644
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@ -34,6 +34,7 @@ SET(INC
../nodes ../../../extern/glew/include ../gpu ../makesrna ../../../intern/smoke/extern
../../../intern/bsp/extern ../blenfont
../../../intern/audaspace/intern
+ ../../../source/blender/windowmanager # XXX - BAD LEVEL CALL WM_api.h
${ZLIB_INC}
)
diff --git a/source/blender/blenkernel/SConscript b/source/blender/blenkernel/SConscript
index 38f541ff7e8..602a1234f95 100644
--- a/source/blender/blenkernel/SConscript
+++ b/source/blender/blenkernel/SConscript
@@ -3,7 +3,8 @@ Import ('env')
sources = env.Glob('intern/*.c')
-incs = '. #/intern/guardedalloc #/intern/memutil ../editors/include ../blenlib ../blenfont ../makesdna'
+incs = '. #/intern/guardedalloc #/intern/memutil ../editors/include'
+incs += ' ../blenlib ../blenfont ../makesdna ../windowmanager'
incs += ' ../render/extern/include #/intern/decimation/extern ../makesrna'
incs += ' ../imbuf ../ikplugin ../avi #/intern/elbeem/extern ../nodes'
incs += ' #/intern/iksolver/extern ../blenloader'
diff --git a/source/blender/blenkernel/intern/CCGSubSurf.c b/source/blender/blenkernel/intern/CCGSubSurf.c
index cda035046f6..dc863869ad8 100644
--- a/source/blender/blenkernel/intern/CCGSubSurf.c
+++ b/source/blender/blenkernel/intern/CCGSubSurf.c
@@ -8,6 +8,12 @@
#include "BLO_sys_types.h" // for intptr_t support
+#ifdef _MSC_VER
+#define CCG_INLINE __inline
+#else
+#define CCG_INLINE inline
+#endif
+
/* used for normalize_v3 in BLI_math_vector
* float.h's FLT_EPSILON causes trouble with subsurf normals - campbell */
#define EPSILON (1.0e-35f)
@@ -34,7 +40,7 @@ typedef struct _EHash {
int numEntries, curSize, curSizeIdx;
CCGAllocatorIFC allocatorIFC;
- CCAllocHDL allocator;
+ CCGAllocatorHDL allocator;
} EHash;
#define EHASH_alloc(eh, nb) ((eh)->allocatorIFC.alloc((eh)->allocator, nb))
@@ -42,7 +48,7 @@ typedef struct _EHash {
#define EHASH_hash(eh, item) (((uintptr_t) (item))%((unsigned int) (eh)->curSize))
-static EHash *_ehash_new(int estimatedNumEntries, CCGAllocatorIFC *allocatorIFC, CCAllocHDL allocator) {
+static EHash *_ehash_new(int estimatedNumEntries, CCGAllocatorIFC *allocatorIFC, CCGAllocatorHDL allocator) {
EHash *eh = allocatorIFC->alloc(allocator, sizeof(*eh));
eh->allocatorIFC = *allocatorIFC;
eh->allocator = allocator;
@@ -178,13 +184,13 @@ static int _ehashIterator_isStopped(EHashIterator *ehi) {
/***/
-static void *_stdAllocator_alloc(CCAllocHDL a, int numBytes) {
+static void *_stdAllocator_alloc(CCGAllocatorHDL a, int numBytes) {
return malloc(numBytes);
}
-static void *_stdAllocator_realloc(CCAllocHDL a, void *ptr, int newSize, int oldSize) {
+static void *_stdAllocator_realloc(CCGAllocatorHDL a, void *ptr, int newSize, int oldSize) {
return realloc(ptr, newSize);
}
-static void _stdAllocator_free(CCAllocHDL a, void *ptr) {
+static void _stdAllocator_free(CCGAllocatorHDL a, void *ptr) {
free(ptr);
}
@@ -221,7 +227,7 @@ static int VertDataEqual(float *a, float *b) {
#define NormAdd(av, bv) { float *_a = (float*) av, *_b = (float*) bv; _a[0]+=_b[0]; _a[1]+=_b[1]; _a[2]+=_b[2]; }
-static int _edge_isBoundary(CCEdge *e);
+static int _edge_isBoundary(CCGEdge *e);
/***/
@@ -232,53 +238,53 @@ enum {
} VertFlags;
enum {
Edge_eEffected= (1<<0),
-} CCEdgeFlags;
+} CCGEdgeFlags;
enum {
Face_eEffected= (1<<0),
} FaceFlags;
-struct _CCVert {
- CCVert *next; /* EHData.next */
- CCVertHDL vHDL; /* EHData.key */
+struct _CCGVert {
+ CCGVert *next; /* EHData.next */
+ CCGVertHDL vHDL; /* EHData.key */
short numEdges, numFaces, flags, pad;
- CCEdge **edges;
- CCFace **faces;
+ CCGEdge **edges;
+ CCGFace **faces;
// byte *levelData;
// byte *userData;
};
#define VERT_getLevelData(v) ((byte*) &(v)[1])
-struct _CCEdge {
- CCEdge *next; /* EHData.next */
- CCEdgeHDL eHDL; /* EHData.key */
+struct _CCGEdge {
+ CCGEdge *next; /* EHData.next */
+ CCGEdgeHDL eHDL; /* EHData.key */
short numFaces, flags;
float crease;
- CCVert *v0,*v1;
- CCFace **faces;
+ CCGVert *v0,*v1;
+ CCGFace **faces;
// byte *levelData;
// byte *userData;
};
#define EDGE_getLevelData(e) ((byte*) &(e)[1])
-struct _CCFace {
- CCFace *next; /* EHData.next */
- CCFaceHDL fHDL; /* EHData.key */
+struct _CCGFace {
+ CCGFace *next; /* EHData.next */
+ CCGFaceHDL fHDL; /* EHData.key */
short numVerts, flags, pad1, pad2;
-// CCVert **verts;
-// CCEdge **edges;
+// CCGVert **verts;
+// CCGEdge **edges;
// byte *centerData;
// byte **gridData;
// byte *userData;
};
-#define FACE_getVerts(f) ((CCVert**) &(f)[1])
-#define FACE_getEdges(f) ((CCEdge**) &(FACE_getVerts(f)[(f)->numVerts]))
+#define FACE_getVerts(f) ((CCGVert**) &(f)[1])
+#define FACE_getEdges(f) ((CCGEdge**) &(FACE_getVerts(f)[(f)->numVerts]))
#define FACE_getCenterData(f) ((byte*) &(FACE_getEdges(f)[(f)->numVerts]))
typedef enum {
@@ -289,15 +295,15 @@ typedef enum {
eSyncState_Partial,
} SyncState;
-struct _CSubSurf {
- EHash *vMap; /* map of CCVertHDL -> Vert */
- EHash *eMap; /* map of CCEdgeHDL -> Edge */
- EHash *fMap; /* map of CCFaceHDL -> Face */
+struct _CCGSubSurf {
+ EHash *vMap; /* map of CCGVertHDL -> Vert */
+ EHash *eMap; /* map of CCGEdgeHDL -> Edge */
+ EHash *fMap; /* map of CCGFaceHDL -> Face */
CCGMeshIFC meshIFC;
CCGAllocatorIFC allocatorIFC;
- CCAllocHDL allocator;
+ CCGAllocatorHDL allocator;
int subdivLevels;
int numGrids;
@@ -323,8 +329,8 @@ struct _CSubSurf {
EHash *oldVMap, *oldEMap, *oldFMap;
int lenTempArrays;
- CCVert **tempVerts;
- CCEdge **tempEdges;
+ CCGVert **tempVerts;
+ CCGEdge **tempEdges;
};
#define CCGSUBSURF_alloc(ss, nb) ((ss)->allocatorIFC.alloc((ss)->allocator, nb))
@@ -333,8 +339,8 @@ struct _CSubSurf {
/***/
-static CCVert *_vert_new(CCVertHDL vHDL, CSubSurf *ss) {
- CCVert *v = CCGSUBSURF_alloc(ss, sizeof(CCVert) + ss->meshIFC.vertDataSize * (ss->subdivLevels+1) + ss->meshIFC.vertUserSize);
+static CCGVert *_vert_new(CCGVertHDL vHDL, CCGSubSurf *ss) {
+ CCGVert *v = CCGSUBSURF_alloc(ss, sizeof(CCGVert) + ss->meshIFC.vertDataSize * (ss->subdivLevels+1) + ss->meshIFC.vertUserSize);
byte *userData;
v->vHDL = vHDL;
@@ -343,13 +349,13 @@ static CCVert *_vert_new(CCVertHDL vHDL, CSubSurf *ss) {
v->numEdges = v->numFaces = 0;
v->flags = 0;
- userData = CCS_getVertUserData(ss, v);
+ userData = ccgSubSurf_getVertUserData(ss, v);
memset(userData, 0, ss->meshIFC.vertUserSize);
if (ss->useAgeCounts) *((int*) &userData[ss->vertUserAgeOffset]) = ss->currentAge;
return v;
}
-static void _vert_remEdge(CCVert *v, CCEdge *e) {
+static void _vert_remEdge(CCGVert *v, CCGEdge *e) {
int i;
for (i=0; i<v->numEdges; i++) {
if (v->edges[i]==e) {
@@ -358,7 +364,7 @@ static void _vert_remEdge(CCVert *v, CCEdge *e) {
}
}
}
-static void _vert_remFace(CCVert *v, CCFace *f) {
+static void _vert_remFace(CCGVert *v, CCGFace *f) {
int i;
for (i=0; i<v->numFaces; i++) {
if (v->faces[i]==f) {
@@ -367,25 +373,25 @@ static void _vert_remFace(CCVert *v, CCFace *f) {
}
}
}
-static void _vert_addEdge(CCVert *v, CCEdge *e, CSubSurf *ss) {
+static void _vert_addEdge(CCGVert *v, CCGEdge *e, CCGSubSurf *ss) {
v->edges = CCGSUBSURF_realloc(ss, v->edges, (v->numEdges+1)*sizeof(*v->edges), v->numEdges*sizeof(*v->edges));
v->edges[v->numEdges++] = e;
}
-static void _vert_addFace(CCVert *v, CCFace *f, CSubSurf *ss) {
+static void _vert_addFace(CCGVert *v, CCGFace *f, CCGSubSurf *ss) {
v->faces = CCGSUBSURF_realloc(ss, v->faces, (v->numFaces+1)*sizeof(*v->faces), v->numFaces*sizeof(*v->faces));
v->faces[v->numFaces++] = f;
}
-static CCEdge *_vert_findEdgeTo(CCVert *v, CCVert *vQ) {
+static CCGEdge *_vert_findEdgeTo(CCGVert *v, CCGVert *vQ) {
int i;
for (i=0; i<v->numEdges; i++) {
- CCEdge *e = v->edges[v->numEdges-1-i]; // XXX, note reverse
+ CCGEdge *e = v->edges[v->numEdges-1-i]; // XXX, note reverse
if ( (e->v0==v && e->v1==vQ) ||
(e->v1==v && e->v0==vQ))
return e;
}
return 0;
}
-static int _vert_isBoundary(CCVert *v) {
+static int _vert_isBoundary(CCGVert *v) {
int i;
for (i=0; i<v->numEdges; i++)
if (_edge_isBoundary(v->edges[i]))
@@ -393,27 +399,27 @@ static int _vert_isBoundary(CCVert *v) {
return 0;
}
-static void *_vert_getCo(CCVert *v, int lvl, int dataSize) {
+static void *_vert_getCo(CCGVert *v, int lvl, int dataSize) {
return &VERT_getLevelData(v)[lvl*dataSize];
}
-static float *_vert_getNo(CCVert *v, int lvl, int dataSize, int normalDataOffset) {
+static float *_vert_getNo(CCGVert *v, int lvl, int dataSize, int normalDataOffset) {
return (float*) &VERT_getLevelData(v)[lvl*dataSize + normalDataOffset];
}
-static void _vert_free(CCVert *v, CSubSurf *ss) {
+static void _vert_free(CCGVert *v, CCGSubSurf *ss) {
CCGSUBSURF_free(ss, v->edges);
CCGSUBSURF_free(ss, v->faces);
CCGSUBSURF_free(ss, v);
}
-static int VERT_seam(CCVert *v) {
+static int VERT_seam(CCGVert *v) {
return ((v->flags & Vert_eSeam) != 0);
}
/***/
-static CCEdge *_edge_new(CCEdgeHDL eHDL, CCVert *v0, CCVert *v1, float crease, CSubSurf *ss) {
- CCEdge *e = CCGSUBSURF_alloc(ss, sizeof(CCEdge) + ss->meshIFC.vertDataSize *((ss->subdivLevels+1) + (1<<(ss->subdivLevels+1))-1) + ss->meshIFC.edgeUserSize);
+static CCGEdge *_edge_new(CCGEdgeHDL eHDL, CCGVert *v0, CCGVert *v1, float crease, CCGSubSurf *ss) {
+ CCGEdge *e = CCGSUBSURF_alloc(ss, sizeof(CCGEdge) + ss->meshIFC.vertDataSize *((ss->subdivLevels+1) + (1<<(ss->subdivLevels+1))-1) + ss->meshIFC.edgeUserSize);
byte *userData;
e->eHDL = eHDL;
@@ -426,13 +432,13 @@ static CCEdge *_edge_new(CCEdgeHDL eHDL, CCVert *v0, CCVert *v1, float crease, C
_vert_addEdge(v0, e, ss);
_vert_addEdge(v1, e, ss);
- userData = CCS_getEdgeUserData(ss, e);
+ userData = ccgSubSurf_getEdgeUserData(ss, e);
memset(userData, 0, ss->meshIFC.edgeUserSize);
if (ss->useAgeCounts) *((int*) &userData[ss->edgeUserAgeOffset]) = ss->currentAge;
return e;
}
-static void _edge_remFace(CCEdge *e, CCFace *f) {
+static void _edge_remFace(CCGEdge *e, CCGFace *f) {
int i;
for (i=0; i<e->numFaces; i++) {
if (e->faces[i]==f) {
@@ -441,15 +447,15 @@ static void _edge_remFace(CCEdge *e, CCFace *f) {
}
}
}
-static void _edge_addFace(CCEdge *e, CCFace *f, CSubSurf *ss) {
+static void _edge_addFace(CCGEdge *e, CCGFace *f, CCGSubSurf *ss) {
e->faces = CCGSUBSURF_realloc(ss, e->faces, (e->numFaces+1)*sizeof(*e->faces), e->numFaces*sizeof(*e->faces));
e->faces[e->numFaces++] = f;
}
-static int _edge_isBoundary(CCEdge *e) {
+static int _edge_isBoundary(CCGEdge *e) {
return e->numFaces<2;
}
-static CCVert *_edge_getOtherVert(CCEdge *e, CCVert *vQ) {
+static CCGVert *_edge_getOtherVert(CCGEdge *e, CCGVert *vQ) {
if (vQ==e->v0) {
return e->v1;
} else {
@@ -457,17 +463,17 @@ static CCVert *_edge_getOtherVert(CCEdge *e, CCVert *vQ) {
}
}
-static void *_edge_getCo(CCEdge *e, int lvl, int x, int dataSize) {
+static void *_edge_getCo(CCGEdge *e, int lvl, int x, int dataSize) {
int levelBase = lvl + (1<<lvl) - 1;
return &EDGE_getLevelData(e)[dataSize*(levelBase + x)];
}
#if 0
-static float *_edge_getNo(CCEdge *e, int lvl, int x, int dataSize, int normalDataOffset) {
+static float *_edge_getNo(CCGEdge *e, int lvl, int x, int dataSize, int normalDataOffset) {
int levelBase = lvl + (1<<lvl) - 1;
return (float*) &EDGE_getLevelData(e)[dataSize*(levelBase + x) + normalDataOffset];
}
#endif
-static void *_edge_getCoVert(CCEdge *e, CCVert *v, int lvl, int x, int dataSize) {
+static void *_edge_getCoVert(CCGEdge *e, CCGVert *v, int lvl, int x, int dataSize) {
int levelBase = lvl + (1<<lvl) - 1;
if (v==e->v0) {
return &EDGE_getLevelData(e)[dataSize*(levelBase + x)];
@@ -476,11 +482,11 @@ static void *_edge_getCoVert(CCEdge *e, CCVert *v, int lvl, int x, int dataSize)
}
}
-static void _edge_free(CCEdge *e, CSubSurf *ss) {
+static void _edge_free(CCGEdge *e, CCGSubSurf *ss) {
CCGSUBSURF_free(ss, e->faces);
CCGSUBSURF_free(ss, e);
}
-static void _edge_unlinkMarkAndFree(CCEdge *e, CSubSurf *ss) {
+static void _edge_unlinkMarkAndFree(CCGEdge *e, CCGSubSurf *ss) {
_vert_remEdge(e->v0, e);
_vert_remEdge(e->v1, e);
e->v0->flags |= Vert_eEffected;
@@ -488,7 +494,7 @@ static void _edge_unlinkMarkAndFree(CCEdge *e, CSubSurf *ss) {
_edge_free(e, ss);
}
-static float EDGE_getSharpness(CCEdge *e, int lvl) {
+static float EDGE_getSharpness(CCGEdge *e, int lvl) {
if (!lvl)
return e->crease;
else if (!e->crease)
@@ -499,9 +505,9 @@ static float EDGE_getSharpness(CCEdge *e, int lvl) {
return e->crease - lvl;
}
-static CCFace *_face_new(CCFaceHDL fHDL, CCVert **verts, CCEdge **edges, int numVerts, CSubSurf *ss) {
+static CCGFace *_face_new(CCGFaceHDL fHDL, CCGVert **verts, CCGEdge **edges, int numVerts, CCGSubSurf *ss) {
int maxGridSize = 1 + (1<<(ss->subdivLevels-1));
- CCFace *f = CCGSUBSURF_alloc(ss, sizeof(CCFace) + sizeof(CCVert*)*numVerts + sizeof(CCEdge*)*numVerts + ss->meshIFC.vertDataSize *(1 + numVerts*maxGridSize + numVerts*maxGridSize*maxGridSize) + ss->meshIFC.faceUserSize);
+ CCGFace *f = CCGSUBSURF_alloc(ss, sizeof(CCGFace) + sizeof(CCGVert*)*numVerts + sizeof(CCGEdge*)*numVerts + ss->meshIFC.vertDataSize *(1 + numVerts*maxGridSize + numVerts*maxGridSize*maxGridSize) + ss->meshIFC.faceUserSize);
byte *userData;
int i;
@@ -516,39 +522,39 @@ static CCFace *_face_new(CCFaceHDL fHDL, CCVert **verts, CCEdge **edges, int num
_edge_addFace(edges[i], f, ss);
}
- userData = CCS_getFaceUserData(ss, f);
+ userData = ccgSubSurf_getFaceUserData(ss, f);
memset(userData, 0, ss->meshIFC.faceUserSize);
if (ss->useAgeCounts) *((int*) &userData[ss->faceUserAgeOffset]) = ss->currentAge;
return f;
}
-static void *_face_getIECo(CCFace *f, int lvl, int S, int x, int levels, int dataSize) {
+static CCG_INLINE void *_face_getIECo(CCGFace *f, int lvl, int S, int x, int levels, int dataSize) {
int maxGridSize = 1 + (1<<(levels-1));
int spacing = 1<<(levels-lvl);
byte *gridBase = FACE_getCenterData(f) + dataSize*(1 + S*(maxGridSize + maxGridSize*maxGridSize));
return &gridBase[dataSize*x*spacing];
}
-static void *_face_getIFCo(CCFace *f, int lvl, int S, int x, int y, int levels, int dataSize) {
+static CCG_INLINE void *_face_getIFCo(CCGFace *f, int lvl, int S, int x, int y, int levels, int dataSize) {
int maxGridSize = 1 + (1<<(levels-1));
int spacing = 1<<(levels-lvl);
byte *gridBase = FACE_getCenterData(f) + dataSize*(1 + S*(maxGridSize + maxGridSize*maxGridSize));
return &gridBase[dataSize*(maxGridSize + (y*maxGridSize + x)*spacing)];
}
-static float *_face_getIFNo(CCFace *f, int lvl, int S, int x, int y, int levels, int dataSize, int normalDataOffset) {
+static CCG_INLINE float *_face_getIFNo(CCGFace *f, int lvl, int S, int x, int y, int levels, int dataSize, int normalDataOffset) {
int maxGridSize = 1 + (1<<(levels-1));
int spacing = 1<<(levels-lvl);
byte *gridBase = FACE_getCenterData(f) + dataSize*(1 + S*(maxGridSize + maxGridSize*maxGridSize));
return (float*) &gridBase[dataSize*(maxGridSize + (y*maxGridSize + x)*spacing) + normalDataOffset];
}
-static int _face_getVertIndex(CCFace *f, CCVert *v) {
+static int _face_getVertIndex(CCGFace *f, CCGVert *v) {
int i;
for (i=0; i<f->numVerts; i++)
if (FACE_getVerts(f)[i]==v)
return i;
return -1;
}
-static void *_face_getIFCoEdge(CCFace *f, CCEdge *e, int lvl, int eX, int eY, int levels, int dataSize) {
+static CCG_INLINE void *_face_getIFCoEdge(CCGFace *f, CCGEdge *e, int lvl, int eX, int eY, int levels, int dataSize) {
int maxGridSize = 1 + (1<<(levels-1));
int spacing = 1<<(levels-lvl);
int S, x, y, cx, cy;
@@ -578,10 +584,10 @@ static void *_face_getIFCoEdge(CCFace *f, CCEdge *e, int lvl, int eX, int eY, in
}
return _face_getIFCo(f, levels, S, cx, cy, levels, dataSize);
}
-static float *_face_getIFNoEdge(CCFace *f, CCEdge *e, int lvl, int eX, int eY, int levels, int dataSize, int normalDataOffset) {
+static float *_face_getIFNoEdge(CCGFace *f, CCGEdge *e, int lvl, int eX, int eY, int levels, int dataSize, int normalDataOffset) {
return (float*) ((byte*) _face_getIFCoEdge(f, e, lvl, eX, eY, levels, dataSize) + normalDataOffset);
}
-void _face_calcIFNo(CCFace *f, int lvl, int S, int x, int y, float *no, int levels, int dataSize) {
+void _face_calcIFNo(CCGFace *f, int lvl, int S, int x, int y, float *no, int levels, int dataSize) {
float *a = _face_getIFCo(f, lvl, S, x+0, y+0, levels, dataSize);
float *b = _face_getIFCo(f, lvl, S, x+1, y+0, levels, dataSize);
float *c = _face_getIFCo(f, lvl, S, x+1, y+1, levels, dataSize);
@@ -607,10 +613,10 @@ void _face_calcIFNo(CCFace *f, int lvl, int S, int x, int y, float *no, int leve
}
}
-static void _face_free(CCFace *f, CSubSurf *ss) {
+static void _face_free(CCGFace *f, CCGSubSurf *ss) {
CCGSUBSURF_free(ss, f);
}
-static void _face_unlinkMarkAndFree(CCFace *f, CSubSurf *ss) {
+static void _face_unlinkMarkAndFree(CCGFace *f, CCGSubSurf *ss) {
int j;
for (j=0; j<f->numVerts; j++) {
_vert_remFace(FACE_getVerts(f)[j], f);
@@ -622,7 +628,7 @@ static void _face_unlinkMarkAndFree(CCFace *f, CSubSurf *ss) {
/***/
-CSubSurf *CCS_new(CCGMeshIFC *ifc, int subdivLevels, CCGAllocatorIFC *allocatorIFC, CCAllocHDL allocator) {
+CCGSubSurf *ccgSubSurf_new(CCGMeshIFC *ifc, int subdivLevels, CCGAllocatorIFC *allocatorIFC, CCGAllocatorHDL allocator) {
if (!allocatorIFC) {
allocatorIFC = _getStandardAllocatorIFC();
allocator = NULL;
@@ -631,7 +637,7 @@ CSubSurf *CCS_new(CCGMeshIFC *ifc, int subdivLevels, CCGAllocatorIFC *allocatorI
if (subdivLevels<1) {
return NULL;
} else {
- CSubSurf *ss = allocatorIFC->alloc(allocator, sizeof(*ss));
+ CCGSubSurf *ss = allocatorIFC->alloc(allocator, sizeof(*ss));
ss->allocatorIFC = *allocatorIFC;
ss->allocator = allocator;
@@ -670,9 +676,9 @@ CSubSurf *CCS_new(CCGMeshIFC *ifc, int subdivLevels, CCGAllocatorIFC *allocatorI
}
}
-void CCS_free(CSubSurf *ss) {
+void ccgSubSurf_free(CCGSubSurf *ss) {
CCGAllocatorIFC allocatorIFC = ss->allocatorIFC;
- CCAllocHDL allocator = ss->allocator;
+ CCGAllocatorHDL allocator = ss->allocator;
if (ss->syncState) {
_ehash_free(ss->oldFMap, (EHEntryFreeFP) _face_free, ss);
@@ -698,7 +704,7 @@ void CCS_free(CSubSurf *ss) {
}
}
-CCGError CCS_setAllowEdgeCreation(CSubSurf *ss, int allowEdgeCreation, float defaultCreaseValue, void *defaultUserData) {
+CCGError ccgSubSurf_setAllowEdgeCreation(CCGSubSurf *ss, int allowEdgeCreation, float defaultCreaseValue, void *defaultUserData) {
if (ss->defaultEdgeUserData) {
CCGSUBSURF_free(ss, ss->defaultEdgeUserData);
}
@@ -715,7 +721,7 @@ CCGError CCS_setAllowEdgeCreation(CSubSurf *ss, int allowEdgeCreation, float def
return eCCGError_None;
}
-void CCS_getAllowEdgeCreation(CSubSurf *ss, int *allowEdgeCreation_r, float *defaultCreaseValue_r, void *defaultUserData_r) {
+void ccgSubSurf_getAllowEdgeCreation(CCGSubSurf *ss, int *allowEdgeCreation_r, float *defaultCreaseValue_r, void *defaultUserData_r) {
if (allowEdgeCreation_r) *allowEdgeCreation_r = ss->allowEdgeCreation;
if (ss->allowEdgeCreation) {
if (defaultCreaseValue_r) *defaultCreaseValue_r = ss->defaultCreaseValue;
@@ -723,7 +729,7 @@ void CCS_getAllowEdgeCreation(CSubSurf *ss, int *allowEdgeCreation_r, float *def
}
}
-CCGError CCS_setSubdivisionLevels(CSubSurf *ss, int subdivisionLevels) {
+CCGError ccgSubSurf_setSubdivisionLevels(CCGSubSurf *ss, int subdivisionLevels) {
if (subdivisionLevels<=0) {
return eCCGError_InvalidValue;
} else if (subdivisionLevels!=ss->subdivLevels) {
@@ -740,7 +746,7 @@ CCGError CCS_setSubdivisionLevels(CSubSurf *ss, int subdivisionLevels) {
return eCCGError_None;
}
-void CCS_getUseAgeCounts(CSubSurf *ss, int *useAgeCounts_r, int *vertUserOffset_r, int *edgeUserOffset_r, int *faceUserOffset_r)
+void ccgSubSurf_getUseAgeCounts(CCGSubSurf *ss, int *useAgeCounts_r, int *vertUserOffset_r, int *edgeUserOffset_r, int *faceUserOffset_r)
{
*useAgeCounts_r = ss->useAgeCounts;
@@ -749,7 +755,7 @@ void CCS_getUseAgeCounts(CSubSurf *ss, int *useAgeCounts_r, int *vertUserOffset_
if (faceUserOffset_r) *faceUserOffset_r = ss->faceUserAgeOffset;
}
-CCGError CCS_setUseAgeCounts(CSubSurf *ss, int useAgeCounts, int vertUserOffset, int edgeUserOffset, int faceUserOffset) {
+CCGError ccgSubSurf_setUseAgeCounts(CCGSubSurf *ss, int useAgeCounts, int vertUserOffset, int edgeUserOffset, int faceUserOffset) {
if (useAgeCounts) {
if ( (vertUserOffset+4>ss->meshIFC.vertUserSize) ||
(edgeUserOffset+4>ss->meshIFC.edgeUserSize) ||
@@ -769,7 +775,7 @@ CCGError CCS_setUseAgeCounts(CSubSurf *ss, int useAgeCounts, int vertUserOffset,
return eCCGError_None;
}
-CCGError CCS_setCalcVertexNormals(CSubSurf *ss, int useVertNormals, int normalDataOffset) {
+CCGError ccgSubSurf_setCalcVertexNormals(CCGSubSurf *ss, int useVertNormals, int normalDataOffset) {
if (useVertNormals) {
if (normalDataOffset<0 || normalDataOffset+12>ss->meshIFC.vertDataSize) {
return eCCGError_InvalidValue;
@@ -787,7 +793,7 @@ CCGError CCS_setCalcVertexNormals(CSubSurf *ss, int useVertNormals, int normalDa
/***/
-CCGError CCS_initFullSync(CSubSurf *ss) {
+CCGError ccgSubSurf_initFullSync(CCGSubSurf *ss) {
if (ss->syncState!=eSyncState_None) {
return eCCGError_InvalidSyncState;
}
@@ -813,7 +819,7 @@ CCGError CCS_initFullSync(CSubSurf *ss) {
return eCCGError_None;
}
-CCGError CCS_initPartialSync(CSubSurf *ss) {
+CCGError ccgSubSurf_initPartialSync(CCGSubSurf *ss) {
if (ss->syncState!=eSyncState_None) {
return eCCGError_InvalidSyncState;
}
@@ -825,12 +831,12 @@ CCGError CCS_initPartialSync(CSubSurf *ss) {
return eCCGError_None;
}
-CCGError CCS_syncVertDel(CSubSurf *ss, CCVertHDL vHDL) {
+CCGError ccgSubSurf_syncVertDel(CCGSubSurf *ss, CCGVertHDL vHDL) {
if (ss->syncState!=eSyncState_Partial) {
return eCCGError_InvalidSyncState;
} else {
void **prevp;
- CCVert *v = _ehash_lookupWithPrev(ss->vMap, vHDL, &prevp);
+ CCGVert *v = _ehash_lookupWithPrev(ss->vMap, vHDL, &prevp);
if (!v || v->numFaces || v->numEdges) {
return eCCGError_InvalidValue;
@@ -843,12 +849,12 @@ CCGError CCS_syncVertDel(CSubSurf *ss, CCVertHDL vHDL) {
return eCCGError_None;
}
-CCGError CCS_syncEdgeDel(CSubSurf *ss, CCEdgeHDL eHDL) {
+CCGError ccgSubSurf_syncEdgeDel(CCGSubSurf *ss, CCGEdgeHDL eHDL) {
if (ss->syncState!=eSyncState_Partial) {
return eCCGError_InvalidSyncState;
} else {
void **prevp;
- CCEdge *e = _ehash_lookupWithPrev(ss->eMap, eHDL, &prevp);
+ CCGEdge *e = _ehash_lookupWithPrev(ss->eMap, eHDL, &prevp);
if (!e || e->numFaces) {
return eCCGError_InvalidValue;
@@ -861,12 +867,12 @@ CCGError CCS_syncEdgeDel(CSubSurf *ss, CCEdgeHDL eHDL) {
return eCCGError_None;
}
-CCGError CCS_syncFaceDel(CSubSurf *ss, CCFaceHDL fHDL) {
+CCGError ccgSubSurf_syncFaceDel(CCGSubSurf *ss, CCGFaceHDL fHDL) {
if (ss->syncState!=eSyncState_Partial) {
return eCCGError_InvalidSyncState;
} else {
void **prevp;
- CCFace *f = _ehash_lookupWithPrev(ss->fMap, fHDL, &prevp);
+ CCGFace *f = _ehash_lookupWithPrev(ss->fMap, fHDL, &prevp);
if (!f) {
return eCCGError_InvalidValue;
@@ -879,9 +885,9 @@ CCGError CCS_syncFaceDel(CSubSurf *ss, CCFaceHDL fHDL) {
return eCCGError_None;
}
-CCGError CCS_syncVert(CSubSurf *ss, CCVertHDL vHDL, void *vertData, int seam, CCVert **v_r) {
+CCGError ccgSubSurf_syncVert(CCGSubSurf *ss, CCGVertHDL vHDL, void *vertData, int seam, CCGVert **v_r) {
void **prevp;
- CCVert *v = NULL;
+ CCGVert *v = NULL;
short seamflag = (seam)? Vert_eSeam: 0;
if (ss->syncState==eSyncState_Partial) {
@@ -898,12 +904,12 @@ CCGError CCS_syncVert(CSubSurf *ss, CCVertHDL vHDL, void *vertData, int seam, CC
v->flags = Vert_eEffected|seamflag;
for (i=0; i<v->numEdges; i++) {
- CCEdge *e = v->edges[i];
+ CCGEdge *e = v->edges[i];
e->v0->flags |= Vert_eEffected;
e->v1->flags |= Vert_eEffected;
}
for (i=0; i<v->numFaces; i++) {
- CCFace *f = v->faces[i];
+ CCGFace *f = v->faces[i];
for (j=0; j<f->numVerts; j++) {
FACE_getVerts(f)[j]->flags |= Vert_eEffected;
}
@@ -936,15 +942,15 @@ CCGError CCS_syncVert(CSubSurf *ss, CCVertHDL vHDL, void *vertData, int seam, CC
return eCCGError_None;
}
-CCGError CCS_syncEdge(CSubSurf *ss, CCEdgeHDL eHDL, CCVertHDL e_vHDL0, CCVertHDL e_vHDL1, float crease, CCEdge **e_r) {
+CCGError ccgSubSurf_syncEdge(CCGSubSurf *ss, CCGEdgeHDL eHDL, CCGVertHDL e_vHDL0, CCGVertHDL e_vHDL1, float crease, CCGEdge **e_r) {
void **prevp;
- CCEdge *e = NULL, *eNew;
+ CCGEdge *e = NULL, *eNew;
if (ss->syncState==eSyncState_Partial) {
e = _ehash_lookupWithPrev(ss->eMap, eHDL, &prevp);
if (!e || e->v0->vHDL!=e_vHDL0 || e->v1->vHDL!=e_vHDL1 || crease!=e->crease) {
- CCVert *v0 = _ehash_lookup(ss->vMap, e_vHDL0);
- CCVert *v1 = _ehash_lookup(ss->vMap, e_vHDL1);
+ CCGVert *v0 = _ehash_lookup(ss->vMap, e_vHDL0);
+ CCGVert *v1 = _ehash_lookup(ss->vMap, e_vHDL1);
eNew = _edge_new(eHDL, v0, v1, crease, ss);
@@ -969,8 +975,8 @@ CCGError CCS_syncEdge(CSubSurf *ss, CCEdgeHDL eHDL, CCVertHDL e_vHDL0, CCVertHDL
e = _ehash_lookupWithPrev(ss->oldEMap, eHDL, &prevp);
if (!e || e->v0->vHDL!=e_vHDL0 || e->v1->vHDL!=e_vHDL1|| e->crease!=crease) {
- CCVert *v0 = _ehash_lookup(ss->vMap, e_vHDL0);
- CCVert *v1 = _ehash_lookup(ss->vMap, e_vHDL1);
+ CCGVert *v0 = _ehash_lookup(ss->vMap, e_vHDL0);
+ CCGVert *v1 = _ehash_lookup(ss->vMap, e_vHDL1);
e = _edge_new(eHDL, v0, v1, crease, ss);
_ehash_insert(ss->eMap, (EHEntry*) e);
e->v0->flags |= Vert_eEffected;
@@ -990,9 +996,9 @@ CCGError CCS_syncEdge(CSubSurf *ss, CCEdgeHDL eHDL, CCVertHDL e_vHDL0, CCVertHDL
return eCCGError_None;
}
-CCGError CCS_syncFace(CSubSurf *ss, CCFaceHDL fHDL, int numVerts, CCVertHDL *vHDLs, CCFace **f_r) {
+CCGError ccgSubSurf_syncFace(CCGSubSurf *ss, CCGFaceHDL fHDL, int numVerts, CCGVertHDL *vHDLs, CCGFace **f_r) {
void **prevp;
- CCFace *f = NULL, *fNew;
+ CCGFace *f = NULL, *fNew;
int j, k, topologyChanged = 0;
if (numVerts>ss->lenTempArrays) {
@@ -1057,12 +1063,12 @@ CCGError CCS_syncFace(CSubSurf *ss, CCFaceHDL fHDL, int numVerts, CCVertHDL *vHD
if (!ss->tempEdges[k]) {
if (ss->allowEdgeCreation) {
- CCEdge *e = ss->tempEdges[k] = _edge_new((CCEdgeHDL) -1, ss->tempVerts[k], ss->tempVerts[(k+1)%numVerts], ss->defaultCreaseValue, ss);
+ CCGEdge *e = ss->tempEdges[k] = _edge_new((CCGEdgeHDL) -1, ss->tempVerts[k], ss->tempVerts[(k+1)%numVerts], ss->defaultCreaseValue, ss);
_ehash_insert(ss->eMap, (EHEntry*) e);
e->v0->flags |= Vert_eEffected;
e->v1->flags |= Vert_eEffected;
if (ss->meshIFC.edgeUserSize) {
- memcpy(CCS_getEdgeUserData(ss, e), ss->defaultEdgeUserData, ss->meshIFC.edgeUserSize);
+ memcpy(ccgSubSurf_getEdgeUserData(ss, e), ss->defaultEdgeUserData, ss->meshIFC.edgeUserSize);
}
} else {
return eCCGError_InvalidValue;
@@ -1104,12 +1110,12 @@ CCGError CCS_syncFace(CSubSurf *ss, CCFaceHDL fHDL, int numVerts, CCVertHDL *vHD
return eCCGError_None;
}
-static void CCS__sync(CSubSurf *ss);
-CCGError CCS_processSync(CSubSurf *ss) {
+static void ccgSubSurf__sync(CCGSubSurf *ss);
+CCGError ccgSubSurf_processSync(CCGSubSurf *ss) {
if (ss->syncState==eSyncState_Partial) {
ss->syncState = eSyncState_None;
- CCS__sync(ss);
+ ccgSubSurf__sync(ss);
} else if (ss->syncState) {
_ehash_free(ss->oldFMap, (EHEntryFreeFP) _face_unlinkMarkAndFree, ss);
_ehash_free(ss->oldEMap, (EHEntryFreeFP) _edge_unlinkMarkAndFree, ss);
@@ -1125,7 +1131,7 @@ CCGError CCS_processSync(CSubSurf *ss) {
ss->syncState = eSyncState_None;
- CCS__sync(ss);
+ ccgSubSurf__sync(ss);
} else {
return eCCGError_InvalidSyncState;
}
@@ -1133,31 +1139,689 @@ CCGError CCS_processSync(CSubSurf *ss) {
return eCCGError_None;
}
-static void CCS__sync(CSubSurf *ss) {
- CCVert **effectedV;
- CCEdge **effectedE;
- CCFace **effectedF;
- int numEffectedV, numEffectedE, numEffectedF;
+#define FACE_getIFNo(f, lvl, S, x, y) _face_getIFNo(f, lvl, S, x, y, subdivLevels, vertDataSize, normalDataOffset)
+#define FACE_calcIFNo(f, lvl, S, x, y, no) _face_calcIFNo(f, lvl, S, x, y, no, subdivLevels, vertDataSize)
+static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss,
+ CCGVert **effectedV, CCGEdge **effectedE, CCGFace **effectedF,
+ int numEffectedV, int numEffectedE, int numEffectedF) {
+ int i,ptrIdx;
int subdivLevels = ss->subdivLevels;
+ int lvl = ss->subdivLevels;
+ int edgeSize = 1 + (1<<lvl);
+ int gridSize = 1 + (1<<(lvl-1));
+ int normalDataOffset = ss->normalDataOffset;
+ int vertDataSize = ss->meshIFC.vertDataSize;
+
+ #pragma omp parallel for private(ptrIdx) schedule(static)
+ for (ptrIdx=0; ptrIdx<numEffectedF; ptrIdx++) {
+ CCGFace *f = (CCGFace*) effectedF[ptrIdx];
+ int S, x, y;
+ float no[3];
+
+ for (S=0; S<f->numVerts; S++) {
+ for (y=0; y<gridSize-1; y++)
+ for (x=0; x<gridSize-1; x++)
+ NormZero(FACE_getIFNo(f, lvl, S, x, y));
+
+ if (FACE_getEdges(f)[(S-1+f->numVerts)%f->numVerts]->flags&Edge_eEffected)
+ for (x=0; x<gridSize-1; x++)
+ NormZero(FACE_getIFNo(f, lvl, S, x, gridSize-1));
+ if (FACE_getEdges(f)[S]->flags&Edge_eEffected)
+ for (y=0; y<gridSize-1; y++)
+ NormZero(FACE_getIFNo(f, lvl, S, gridSize-1, y));
+ if (FACE_getVerts(f)[S]->flags&Vert_eEffected)
+ NormZero(FACE_getIFNo(f, lvl, S, gridSize-1, gridSize-1));
+ }
+
+ for (S=0; S<f->numVerts; S++) {
+ int yLimit = !(FACE_getEdges(f)[(S-1+f->numVerts)%f->numVerts]->flags&Edge_eEffected);
+ int xLimit = !(FACE_getEdges(f)[S]->flags&Edge_eEffected);
+ int yLimitNext = xLimit;
+ int xLimitPrev = yLimit;
+
+ for (y=0; y<gridSize - 1; y++) {
+ for (x=0; x<gridSize - 1; x++) {
+ int xPlusOk = (!xLimit || x<gridSize-2);
+ int yPlusOk = (!yLimit || y<gridSize-2);
+
+ FACE_calcIFNo(f, lvl, S, x, y, no);
+
+ NormAdd(FACE_getIFNo(f, lvl, S, x+0, y+0), no);
+ if (xPlusOk)
+ NormAdd(FACE_getIFNo(f, lvl, S, x+1, y+0), no);
+ if (yPlusOk)
+ NormAdd(FACE_getIFNo(f, lvl, S, x+0, y+1), no);
+ if (xPlusOk && yPlusOk) {
+ if (x<gridSize-2 || y<gridSize-2 || FACE_getVerts(f)[S]->flags&Vert_eEffected) {
+ NormAdd(FACE_getIFNo(f, lvl, S, x+1, y+1), no);
+ }
+ }
+
+ if (x==0 && y==0) {
+ int K;
+
+ if (!yLimitNext || 1<gridSize-1)
+ NormAdd(FACE_getIFNo(f, lvl, (S+1)%f->numVerts, 0, 1), no);
+ if (!xLimitPrev || 1<gridSize-1)
+ NormAdd(FACE_getIFNo(f, lvl, (S-1+f->numVerts)%f->numVerts, 1, 0), no);
+
+ for (K=0; K<f->numVerts; K++) {
+ if (K!=S) {
+ NormAdd(FACE_getIFNo(f, lvl, K, 0, 0), no);
+ }
+ }
+ } else if (y==0) {
+ NormAdd(FACE_getIFNo(f, lvl, (S+1)%f->numVerts, 0, x), no);
+ if (!yLimitNext || x<gridSize-2)
+ NormAdd(FACE_getIFNo(f, lvl, (S+1)%f->numVerts, 0, x+1), no);
+ } else if (x==0) {
+ NormAdd(FACE_getIFNo(f, lvl, (S-1+f->numVerts)%f->numVerts, y, 0), no);
+ if (!xLimitPrev || y<gridSize-2)
+ NormAdd(FACE_getIFNo(f, lvl, (S-1+f->numVerts)%f->numVerts, y+1, 0), no);
+ }
+ }
+ }
+ }
+ }
+ // XXX can I reduce the number of normalisations here?
+ for (ptrIdx=0; ptrIdx<numEffectedV; ptrIdx++) {
+ CCGVert *v = (CCGVert*) effectedV[ptrIdx];
+ float length, *no = _vert_getNo(v, lvl, vertDataSize, normalDataOffset);
+
+ NormZero(no);
+
+ for (i=0; i<v->numFaces; i++) {
+ CCGFace *f = v->faces[i];
+ NormAdd(no, FACE_getIFNo(f, lvl, _face_getVertIndex(f,v), gridSize-1, gridSize-1));
+ }
+
+ length = sqrt(no[0]*no[0] + no[1]*no[1] + no[2]*no[2]);
+
+ if (length>EPSILON) {
+ float invLength = 1.0f/length;
+ no[0] *= invLength;
+ no[1] *= invLength;
+ no[2] *= invLength;
+ } else {
+ NormZero(no);
+ }
+
+ for (i=0; i<v->numFaces; i++) {
+ CCGFace *f = v->faces[i];
+ NormCopy(FACE_getIFNo(f, lvl, _face_getVertIndex(f,v), gridSize-1, gridSize-1), no);
+ }
+ }
+ for (ptrIdx=0; ptrIdx<numEffectedE; ptrIdx++) {
+ CCGEdge *e = (CCGEdge*) effectedE[ptrIdx];
+
+ if (e->numFaces) {
+ CCGFace *fLast = e->faces[e->numFaces-1];
+ int x;
+
+ for (i=0; i<e->numFaces-1; i++) {
+ CCGFace *f = e->faces[i];
+
+ for (x=1; x<edgeSize-1; x++) {
+ NormAdd(_face_getIFNoEdge(fLast, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset),
+ _face_getIFNoEdge(f, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset));
+ }
+ }
+
+ for (i=0; i<e->numFaces-1; i++) {
+ CCGFace *f = e->faces[i];
+
+ for (x=1; x<edgeSize-1; x++) {
+ NormCopy(_face_getIFNoEdge(f, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset),
+ _face_getIFNoEdge(fLast, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset));
+ }
+ }
+ }
+ }
+
+ #pragma omp parallel for private(ptrIdx) schedule(static)
+ for (ptrIdx=0; ptrIdx<numEffectedF; ptrIdx++) {
+ CCGFace *f = (CCGFace*) effectedF[ptrIdx];
+ int S, x, y;
+
+ for (S=0; S<f->numVerts; S++) {
+ NormCopy(FACE_getIFNo(f, lvl, (S+1)%f->numVerts, 0, gridSize-1),
+ FACE_getIFNo(f, lvl, S, gridSize-1, 0));
+ }
+
+ for (S=0; S<f->numVerts; S++) {
+ for (y=0; y<gridSize; y++) {
+ for (x=0; x<gridSize; x++) {
+ float *no = FACE_getIFNo(f, lvl, S, x, y);
+ float length = sqrt(no[0]*no[0] + no[1]*no[1] + no[2]*no[2]);
+
+ if (length>EPSILON) {
+ float invLength = 1.0f/length;
+ no[0] *= invLength;
+ no[1] *= invLength;
+ no[2] *= invLength;
+ } else {
+ NormZero(no);
+ }
+ }
+ }
+ }
+ }
+}
+#undef FACE_getIFNo
+
+#define VERT_getCo(v, lvl) _vert_getCo(v, lvl, vertDataSize)
+#define EDGE_getCo(e, lvl, x) _edge_getCo(e, lvl, x, vertDataSize)
+#define FACE_getIECo(f, lvl, S, x) _face_getIECo(f, lvl, S, x, subdivLevels, vertDataSize)
+#define FACE_getIFCo(f, lvl, S, x, y) _face_getIFCo(f, lvl, S, x, y, subdivLevels, vertDataSize)
+static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss,
+ CCGVert **effectedV, CCGEdge **effectedE, CCGFace **effectedF,
+ int numEffectedV, int numEffectedE, int numEffectedF, int curLvl) {
+ int subdivLevels = ss->subdivLevels;
+ int edgeSize = 1 + (1<<curLvl);
+ int gridSize = 1 + (1<<(curLvl-1));
+ int nextLvl = curLvl+1;
+ int ptrIdx, cornerIdx, i;
int vertDataSize = ss->meshIFC.vertDataSize;
- int i,ptrIdx,cornerIdx;
- int S,x,y;
void *q = ss->q, *r = ss->r;
+
+ #pragma omp parallel for private(ptrIdx) schedule(static)
+ for (ptrIdx=0; ptrIdx<numEffectedF; ptrIdx++) {
+ CCGFace *f = (CCGFace*) effectedF[ptrIdx];
+ int S, x, y;
+
+ /* interior face midpoints
+ * o old interior face points
+ */
+ for (S=0; S<f->numVerts; S++) {
+ for (y=0; y<gridSize-1; y++) {
+ for (x=0; x<gridSize-1; x++) {
+ int fx = 1 + 2*x;
+ int fy = 1 + 2*y;
+ void *co0 = FACE_getIFCo(f, curLvl, S, x+0, y+0);
+ void *co1 = FACE_getIFCo(f, curLvl, S, x+1, y+0);
+ void *co2 = FACE_getIFCo(f, curLvl, S, x+1, y+1);
+ void *co3 = FACE_getIFCo(f, curLvl, S, x+0, y+1);
+ void *co = FACE_getIFCo(f, nextLvl, S, fx, fy);
+
+ VertDataAvg4(co, co0, co1, co2, co3);
+ }
+ }
+ }
+
+ /* interior edge midpoints
+ * o old interior edge points
+ * o new interior face midpoints
+ */
+ for (S=0; S<f->numVerts; S++) {
+ for (x=0; x<gridSize-1; x++) {
+ int fx = x*2 + 1;
+ void *co0 = FACE_getIECo(f, curLvl, S, x+0);
+ void *co1 = FACE_getIECo(f, curLvl, S, x+1);
+ void *co2 = FACE_getIFCo(f, nextLvl, (S+1)%f->numVerts, 1, fx);
+ void *co3 = FACE_getIFCo(f, nextLvl, S, fx, 1);
+ void *co = FACE_getIECo(f, nextLvl, S, fx);
+
+ VertDataAvg4(co, co0, co1, co2, co3);
+ }
+
+ /* interior face interior edge midpoints
+ * o old interior face points
+ * o new interior face midpoints
+ */
+
+ /* vertical */
+ for (x=1; x<gridSize-1; x++) {
+ for (y=0; y<gridSize-1; y++) {
+ int fx = x*2;
+ int fy = y*2+1;
+ void *co0 = FACE_getIFCo(f, curLvl, S, x, y+0);
+ void *co1 = FACE_getIFCo(f, curLvl, S, x, y+1);
+ void *co2 = FACE_getIFCo(f, nextLvl, S, fx-1, fy);
+ void *co3 = FACE_getIFCo(f, nextLvl, S, fx+1, fy);
+ void *co = FACE_getIFCo(f, nextLvl, S, fx, fy);
+
+ VertDataAvg4(co, co0, co1, co2, co3);
+ }
+ }
+
+ /* horizontal */
+ for (y=1; y<gridSize-1; y++) {
+ for (x=0; x<gridSize-1; x++) {
+ int fx = x*2+1;
+ int fy = y*2;
+ void *co0 = FACE_getIFCo(f, curLvl, S, x+0, y);
+ void *co1 = FACE_getIFCo(f, curLvl, S, x+1, y);
+ void *co2 = FACE_getIFCo(f, nextLvl, S, fx, fy-1);
+ void *co3 = FACE_getIFCo(f, nextLvl, S, fx, fy+1);
+ void *co = FACE_getIFCo(f, nextLvl, S, fx, fy);
+
+ VertDataAvg4(co, co0, co1, co2, co3);
+ }
+ }
+ }
+ }
+
+ /* exterior edge midpoints
+ * o old exterior edge points
+ * o new interior face midpoints
+ */
+ for (ptrIdx=0; ptrIdx<numEffectedE; ptrIdx++) {
+ CCGEdge *e = (CCGEdge*) effectedE[ptrIdx];
+ float sharpness = EDGE_getSharpness(e, curLvl);
+ int x, j;
+
+ if (_edge_isBoundary(e) || sharpness>1.0) {
+ for (x=0; x<edgeSize-1; x++) {
+ int fx = x*2 + 1;
+ void *co0 = EDGE_getCo(e, curLvl, x+0);
+ void *co1 = EDGE_getCo(e, curLvl, x+1);
+ void *co = EDGE_getCo(e, nextLvl, fx);
+
+ VertDataCopy(co, co0);
+ VertDataAdd(co, co1);
+ VertDataMulN(co, 0.5);
+ }
+ } else {
+ for (x=0; x<edgeSize-1; x++) {
+ int fx = x*2 + 1;
+ void *co0 = EDGE_getCo(e, curLvl, x+0);
+ void *co1 = EDGE_getCo(e, curLvl, x+1);
+ void *co = EDGE_getCo(e, nextLvl, fx);
+ int numFaces = 0;
+
+ VertDataCopy(q, co0);
+ VertDataAdd(q, co1);
+
+ for (j=0; j<e->numFaces; j++) {
+ CCGFace *f = e->faces[j];
+ VertDataAdd(q, _face_getIFCoEdge(f, e, nextLvl, fx, 1, subdivLevels, vertDataSize));
+ numFaces++;
+ }
+
+ VertDataMulN(q, 1.0f/(2.0f+numFaces));
+
+ VertDataCopy(r, co0);
+ VertDataAdd(r, co1);
+ VertDataMulN(r, 0.5);
+
+ VertDataCopy(co, q);
+ VertDataSub(r, q);
+ VertDataMulN(r, sharpness);
+ VertDataAdd(co, r);
+ }
+ }
+ }
+
+ /* exterior vertex shift
+ * o old vertex points (shifting)
+ * o old exterior edge points
+ * o new interior face midpoints
+ */
+ for (ptrIdx=0; ptrIdx<numEffectedV; ptrIdx++) {
+ CCGVert *v = (CCGVert*) effectedV[ptrIdx];
+ void *co = VERT_getCo(v, curLvl);
+ void *nCo = VERT_getCo(v, nextLvl);
+ int sharpCount = 0, allSharp = 1;
+ float avgSharpness = 0.0;
+ int j, seam = VERT_seam(v), seamEdges = 0;
+
+ for (j=0; j<v->numEdges; j++) {
+ CCGEdge *e = v->edges[j];
+ float sharpness = EDGE_getSharpness(e, curLvl);
+
+ if (seam && _edge_isBoundary(e))
+ seamEdges++;
+
+ if (sharpness!=0.0f) {
+ sharpCount++;
+ avgSharpness += sharpness;
+ } else {
+ allSharp = 0;
+ }
+ }
+
+ if(sharpCount) {
+ avgSharpness /= sharpCount;
+ if (avgSharpness>1.0) {
+ avgSharpness = 1.0;
+ }
+ }
+
+ if (seam && seamEdges < 2)
+ seam = 0;
+
+ if (!v->numEdges) {
+ VertDataCopy(nCo, co);
+ } else if (_vert_isBoundary(v)) {
+ int numBoundary = 0;
+
+ VertDataZero(r);
+ for (j=0; j<v->numEdges; j++) {
+ CCGEdge *e = v->edges[j];
+ if (_edge_isBoundary(e)) {
+ VertDataAdd(r, _edge_getCoVert(e, v, curLvl, 1, vertDataSize));
+ numBoundary++;
+ }
+ }
+
+ VertDataCopy(nCo, co);
+ VertDataMulN(nCo, 0.75);
+ VertDataMulN(r, 0.25f/numBoundary);
+ VertDataAdd(nCo, r);
+ } else {
+ int cornerIdx = (1 + (1<<(curLvl))) - 2;
+ int numEdges = 0, numFaces = 0;
+
+ VertDataZero(q);
+ for (j=0; j<v->numFaces; j++) {
+ CCGFace *f = v->faces[j];
+ VertDataAdd(q, FACE_getIFCo(f, nextLvl, _face_getVertIndex(f,v), cornerIdx, cornerIdx));
+ numFaces++;
+ }
+ VertDataMulN(q, 1.0f/numFaces);
+ VertDataZero(r);
+ for (j=0; j<v->numEdges; j++) {
+ CCGEdge *e = v->edges[j];
+ VertDataAdd(r, _edge_getCoVert(e, v, curLvl, 1,vertDataSize));
+ numEdges++;
+ }
+ VertDataMulN(r, 1.0f/numEdges);
+
+ VertDataCopy(nCo, co);
+ VertDataMulN(nCo, numEdges-2.0f);
+ VertDataAdd(nCo, q);
+ VertDataAdd(nCo, r);
+ VertDataMulN(nCo, 1.0f/numEdges);
+ }
+
+ if ((sharpCount>1 && v->numFaces) || seam) {
+ VertDataZero(q);
+
+ if (seam) {
+ avgSharpness = 1.0f;
+ sharpCount = seamEdges;
+ allSharp = 1;
+ }
+
+ for (j=0; j<v->numEdges; j++) {
+ CCGEdge *e = v->edges[j];
+ float sharpness = EDGE_getSharpness(e, curLvl);
+
+ if (seam) {
+ if (_edge_isBoundary(e))
+ VertDataAdd(q, _edge_getCoVert(e, v, curLvl, 1, vertDataSize));
+ } else if (sharpness != 0.0) {
+ VertDataAdd(q, _edge_getCoVert(e, v, curLvl, 1, vertDataSize));
+ }
+ }
+
+ VertDataMulN(q, (float) 1/sharpCount);
+
+ if (sharpCount!=2 || allSharp) {
+ // q = q + (co-q)*avgSharpness
+ VertDataCopy(r, co);
+ VertDataSub(r, q);
+ VertDataMulN(r, avgSharpness);
+ VertDataAdd(q, r);
+ }
+
+ // r = co*.75 + q*.25
+ VertDataCopy(r, co);
+ VertDataMulN(r, .75);
+ VertDataMulN(q, .25);
+ VertDataAdd(r, q);
+
+ // nCo = nCo + (r-nCo)*avgSharpness
+ VertDataSub(r, nCo);
+ VertDataMulN(r, avgSharpness);
+ VertDataAdd(nCo, r);
+ }
+ }
+
+ /* exterior edge interior shift
+ * o old exterior edge midpoints (shifting)
+ * o old exterior edge midpoints
+ * o new interior face midpoints
+ */
+ for (ptrIdx=0; ptrIdx<numEffectedE; ptrIdx++) {
+ CCGEdge *e = (CCGEdge*) effectedE[ptrIdx];
+ float sharpness = EDGE_getSharpness(e, curLvl);
+ int sharpCount = 0;
+ float avgSharpness = 0.0;
+ int x, j;
+
+ if (sharpness!=0.0f) {
+ sharpCount = 2;
+ avgSharpness += sharpness;
+
+ if (avgSharpness>1.0) {
+ avgSharpness = 1.0;
+ }
+ } else {
+ sharpCount = 0;
+ avgSharpness = 0;
+ }
+
+ if (_edge_isBoundary(e) && (!e->numFaces || sharpCount<2)) {
+ for (x=1; x<edgeSize-1; x++) {
+ int fx = x*2;
+ void *co = EDGE_getCo(e, curLvl, x);
+ void *nCo = EDGE_getCo(e, nextLvl, fx);
+ VertDataCopy(r, EDGE_getCo(e, curLvl, x-1));
+ VertDataAdd(r, EDGE_getCo(e, curLvl, x+1));
+ VertDataMulN(r, 0.5);
+ VertDataCopy(nCo, co);
+ VertDataMulN(nCo, 0.75);
+ VertDataMulN(r, 0.25);
+ VertDataAdd(nCo, r);
+ }
+ } else {
+ for (x=1; x<edgeSize-1; x++) {
+ int fx = x*2;
+ void *co = EDGE_getCo(e, curLvl, x);
+ void *nCo = EDGE_getCo(e, nextLvl, fx);
+ int numFaces = 0;
+
+ VertDataZero(q);
+ VertDataZero(r);
+ VertDataAdd(r, EDGE_getCo(e, curLvl, x-1));
+ VertDataAdd(r, EDGE_getCo(e, curLvl, x+1));
+ for (j=0; j<e->numFaces; j++) {
+ CCGFace *f = e->faces[j];
+ VertDataAdd(q, _face_getIFCoEdge(f, e, nextLvl, fx-1, 1, subdivLevels, vertDataSize));
+ VertDataAdd(q, _face_getIFCoEdge(f, e, nextLvl, fx+1, 1, subdivLevels, vertDataSize));
+
+ VertDataAdd(r, _face_getIFCoEdge(f, e, curLvl, x, 1, subdivLevels, vertDataSize));
+ numFaces++;
+ }
+ VertDataMulN(q, 1.0/(numFaces*2.0f));
+ VertDataMulN(r, 1.0/(2.0f + numFaces));
+
+ VertDataCopy(nCo, co);
+ VertDataMulN(nCo, (float) numFaces);
+ VertDataAdd(nCo, q);
+ VertDataAdd(nCo, r);
+ VertDataMulN(nCo, 1.0f/(2+numFaces));
+
+ if (sharpCount==2) {
+ VertDataCopy(q, co);
+ VertDataMulN(q, 6.0f);
+ VertDataAdd(q, EDGE_getCo(e, curLvl, x-1));
+ VertDataAdd(q, EDGE_getCo(e, curLvl, x+1));
+ VertDataMulN(q, 1/8.0f);
+
+ VertDataSub(q, nCo);
+ VertDataMulN(q, avgSharpness);
+ VertDataAdd(nCo, q);
+ }
+ }
+ }
+ }
+
+ #pragma omp parallel private(ptrIdx)
+ {
+ void *q, *r;
+
+ #pragma omp critical
+ {
+ q = CCGSUBSURF_alloc(ss, ss->meshIFC.vertDataSize);
+ r = CCGSUBSURF_alloc(ss, ss->meshIFC.vertDataSize);
+ }
+
+ #pragma omp for schedule(static)
+ for (ptrIdx=0; ptrIdx<numEffectedF; ptrIdx++) {
+ CCGFace *f = (CCGFace*) effectedF[ptrIdx];
+ int S, x, y;
+
+ /* interior center point shift
+ * o old face center point (shifting)
+ * o old interior edge points
+ * o new interior face midpoints
+ */
+ VertDataZero(q);
+ for (S=0; S<f->numVerts; S++) {
+ VertDataAdd(q, FACE_getIFCo(f, nextLvl, S, 1, 1));
+ }
+ VertDataMulN(q, 1.0f/f->numVerts);
+ VertDataZero(r);
+ for (S=0; S<f->numVerts; S++) {
+ VertDataAdd(r, FACE_getIECo(f, curLvl, S, 1));
+ }
+ VertDataMulN(r, 1.0f/f->numVerts);
+
+ VertDataMulN(FACE_getCenterData(f), f->numVerts-2.0f);
+ VertDataAdd(FACE_getCenterData(f), q);
+ VertDataAdd(FACE_getCenterData(f), r);
+ VertDataMulN(FACE_getCenterData(f), 1.0f/f->numVerts);
+
+ for (S=0; S<f->numVerts; S++) {
+ /* interior face shift
+ * o old interior face point (shifting)
+ * o new interior edge midpoints
+ * o new interior face midpoints
+ */
+ for (x=1; x<gridSize-1; x++) {
+ for (y=1; y<gridSize-1; y++) {
+ int fx = x*2;
+ int fy = y*2;
+ void *co = FACE_getIFCo(f, curLvl, S, x, y);
+ void *nCo = FACE_getIFCo(f, nextLvl, S, fx, fy);
+
+ VertDataAvg4(q, FACE_getIFCo(f, nextLvl, S, fx-1, fy-1),
+ FACE_getIFCo(f, nextLvl, S, fx+1, fy-1),
+ FACE_getIFCo(f, nextLvl, S, fx+1, fy+1),
+ FACE_getIFCo(f, nextLvl, S, fx-1, fy+1));
+
+ VertDataAvg4(r, FACE_getIFCo(f, nextLvl, S, fx-1, fy+0),
+ FACE_getIFCo(f, nextLvl, S, fx+1, fy+0),
+ FACE_getIFCo(f, nextLvl, S, fx+0, fy-1),
+ FACE_getIFCo(f, nextLvl, S, fx+0, fy+1));
+
+ VertDataCopy(nCo, co);
+ VertDataSub(nCo, q);
+ VertDataMulN(nCo, 0.25f);
+ VertDataAdd(nCo, r);
+ }
+ }
+
+ /* interior edge interior shift
+ * o old interior edge point (shifting)
+ * o new interior edge midpoints
+ * o new interior face midpoints
+ */
+ for (x=1; x<gridSize-1; x++) {
+ int fx = x*2;
+ void *co = FACE_getIECo(f, curLvl, S, x);
+ void *nCo = FACE_getIECo(f, nextLvl, S, fx);
+
+ VertDataAvg4(q, FACE_getIFCo(f, nextLvl, (S+1)%f->numVerts, 1, fx-1),
+ FACE_getIFCo(f, nextLvl, (S+1)%f->numVerts, 1, fx+1),
+ FACE_getIFCo(f, nextLvl, S, fx+1, +1),
+ FACE_getIFCo(f, nextLvl, S, fx-1, +1));
+
+ VertDataAvg4(r, FACE_getIECo(f, nextLvl, S, fx-1),
+ FACE_getIECo(f, nextLvl, S, fx+1),
+ FACE_getIFCo(f, nextLvl, (S+1)%f->numVerts, 1, fx),
+ FACE_getIFCo(f, nextLvl, S, fx, 1));
+
+ VertDataCopy(nCo, co);
+ VertDataSub(nCo, q);
+ VertDataMulN(nCo, 0.25f);
+ VertDataAdd(nCo, r);
+ }
+ }
+ }
+
+ #pragma omp critical
+ {
+ CCGSUBSURF_free(ss, q);
+ CCGSUBSURF_free(ss, r);
+ }
+ }
+
+ /* copy down */
+ edgeSize = 1 + (1<<(nextLvl));
+ gridSize = 1 + (1<<((nextLvl)-1));
+ cornerIdx = gridSize-1;
+
+ #pragma omp parallel for private(i) schedule(static)
+ for (i=0; i<numEffectedE; i++) {
+ CCGEdge *e = effectedE[i];
+ VertDataCopy(EDGE_getCo(e, nextLvl, 0), VERT_getCo(e->v0, nextLvl));
+ VertDataCopy(EDGE_getCo(e, nextLvl, edgeSize-1), VERT_getCo(e->v1, nextLvl));
+ }
+
+ #pragma omp parallel for private(i) schedule(static)
+ for (i=0; i<numEffectedF; i++) {
+ CCGFace *f = effectedF[i];
+ int S, x;
+
+ for (S=0; S<f->numVerts; S++) {
+ CCGEdge *e = FACE_getEdges(f)[S];
+ CCGEdge *prevE = FACE_getEdges(f)[(S+f->numVerts-1)%f->numVerts];
+
+ VertDataCopy(FACE_getIFCo(f, nextLvl, S, 0, 0), FACE_getCenterData(f));
+ VertDataCopy(FACE_getIECo(f, nextLvl, S, 0), FACE_getCenterData(f));
+ VertDataCopy(FACE_getIFCo(f, nextLvl, S, cornerIdx, cornerIdx), VERT_getCo(FACE_getVerts(f)[S], nextLvl));
+ VertDataCopy(FACE_getIECo(f, nextLvl, S, cornerIdx), EDGE_getCo(FACE_getEdges(f)[S], nextLvl, cornerIdx));
+ for (x=1; x<gridSize-1; x++) {
+ void *co = FACE_getIECo(f, nextLvl, S, x);
+ VertDataCopy(FACE_getIFCo(f, nextLvl, S, x, 0), co);
+ VertDataCopy(FACE_getIFCo(f, nextLvl, (S+1)%f->numVerts, 0, x), co);
+ }
+ for (x=0; x<gridSize-1; x++) {
+ int eI = gridSize-1-x;
+ VertDataCopy(FACE_getIFCo(f, nextLvl, S, cornerIdx, x), _edge_getCoVert(e, FACE_getVerts(f)[S], nextLvl, eI,vertDataSize));
+ VertDataCopy(FACE_getIFCo(f, nextLvl, S, x, cornerIdx), _edge_getCoVert(prevE, FACE_getVerts(f)[S], nextLvl, eI,vertDataSize));
+ }
+ }
+ }
+}
+
+
+static void ccgSubSurf__sync(CCGSubSurf *ss) {
+ CCGVert **effectedV;
+ CCGEdge **effectedE;
+ CCGFace **effectedF;
+ int numEffectedV, numEffectedE, numEffectedF;
+ int subdivLevels = ss->subdivLevels;
+ int vertDataSize = ss->meshIFC.vertDataSize;
+ int i, j, ptrIdx, S;
int curLvl, nextLvl;
- int j;
+ void *q = ss->q, *r = ss->r;
effectedV = CCGSUBSURF_alloc(ss, sizeof(*effectedV)*ss->vMap->numEntries);
effectedE = CCGSUBSURF_alloc(ss, sizeof(*effectedE)*ss->eMap->numEntries);
effectedF = CCGSUBSURF_alloc(ss, sizeof(*effectedF)*ss->fMap->numEntries);
numEffectedV = numEffectedE = numEffectedF = 0;
for (i=0; i<ss->vMap->curSize; i++) {
- CCVert *v = (CCVert*) ss->vMap->buckets[i];
+ CCGVert *v = (CCGVert*) ss->vMap->buckets[i];
for (; v; v = v->next) {
if (v->flags&Vert_eEffected) {
effectedV[numEffectedV++] = v;
for (j=0; j<v->numEdges; j++) {
- CCEdge *e = v->edges[j];
+ CCGEdge *e = v->edges[j];
if (!(e->flags&Edge_eEffected)) {
effectedE[numEffectedE++] = e;
e->flags |= Edge_eEffected;
@@ -1165,7 +1829,7 @@ static void CCS__sync(CSubSurf *ss) {
}
for (j=0; j<v->numFaces; j++) {
- CCFace *f = v->faces[j];
+ CCGFace *f = v->faces[j];
if (!(f->flags&Face_eEffected)) {
effectedF[numEffectedF++] = f;
f->flags |= Face_eEffected;
@@ -1175,15 +1839,11 @@ static void CCS__sync(CSubSurf *ss) {
}
}
-#define VERT_getCo(v, lvl) _vert_getCo(v, lvl, vertDataSize)
-#define EDGE_getCo(e, lvl, x) _edge_getCo(e, lvl, x, vertDataSize)
-#define FACE_getIECo(f, lvl, S, x) _face_getIECo(f, lvl, S, x, subdivLevels, vertDataSize)
-#define FACE_getIFCo(f, lvl, S, x, y) _face_getIFCo(f, lvl, S, x, y, subdivLevels, vertDataSize)
curLvl = 0;
nextLvl = curLvl+1;
for (ptrIdx=0; ptrIdx<numEffectedF; ptrIdx++) {
- CCFace *f = effectedF[ptrIdx];
+ CCGFace *f = effectedF[ptrIdx];
void *co = FACE_getCenterData(f);
VertDataZero(co);
for (i=0; i<f->numVerts; i++) {
@@ -1194,7 +1854,7 @@ static void CCS__sync(CSubSurf *ss) {
f->flags = 0;
}
for (ptrIdx=0; ptrIdx<numEffectedE; ptrIdx++) {
- CCEdge *e = effectedE[ptrIdx];
+ CCGEdge *e = effectedE[ptrIdx];
void *co = EDGE_getCo(e, nextLvl, 1);
float sharpness = EDGE_getSharpness(e, curLvl);
@@ -1207,7 +1867,7 @@ static void CCS__sync(CSubSurf *ss) {
VertDataCopy(q, VERT_getCo(e->v0, curLvl));
VertDataAdd(q, VERT_getCo(e->v1, curLvl));
for (i=0; i<e->numFaces; i++) {
- CCFace *f = e->faces[i];
+ CCGFace *f = e->faces[i];
VertDataAdd(q, FACE_getCenterData(f));
numFaces++;
}
@@ -1226,7 +1886,7 @@ static void CCS__sync(CSubSurf *ss) {
// edge flags cleared later
}
for (ptrIdx=0; ptrIdx<numEffectedV; ptrIdx++) {
- CCVert *v = effectedV[ptrIdx];
+ CCGVert *v = effectedV[ptrIdx];
void *co = VERT_getCo(v, curLvl);
void *nCo = VERT_getCo(v, nextLvl);
int sharpCount = 0, allSharp = 1;
@@ -1234,7 +1894,7 @@ static void CCS__sync(CSubSurf *ss) {
int seam = VERT_seam(v), seamEdges = 0;
for (i=0; i<v->numEdges; i++) {
- CCEdge *e = v->edges[i];
+ CCGEdge *e = v->edges[i];
float sharpness = EDGE_getSharpness(e, curLvl);
if (seam && _edge_isBoundary(e))
@@ -1265,7 +1925,7 @@ static void CCS__sync(CSubSurf *ss) {
VertDataZero(r);
for (i=0; i<v->numEdges; i++) {
- CCEdge *e = v->edges[i];
+ CCGEdge *e = v->edges[i];
if (_edge_isBoundary(e)) {
VertDataAdd(r, VERT_getCo(_edge_getOtherVert(e, v), curLvl));
numBoundary++;
@@ -1280,14 +1940,14 @@ static void CCS__sync(CSubSurf *ss) {
VertDataZero(q);
for (i=0; i<v->numFaces; i++) {
- CCFace *f = v->faces[i];
+ CCGFace *f = v->faces[i];
VertDataAdd(q, FACE_getCenterData(f));
numFaces++;
}
VertDataMulN(q, 1.0f/numFaces);
VertDataZero(r);
for (i=0; i<v->numEdges; i++) {
- CCEdge *e = v->edges[i];
+ CCGEdge *e = v->edges[i];
VertDataAdd(r, VERT_getCo(_edge_getOtherVert(e, v), curLvl));
numEdges++;
}
@@ -1310,16 +1970,16 @@ static void CCS__sync(CSubSurf *ss) {
}
for (i=0; i<v->numEdges; i++) {
- CCEdge *e = v->edges[i];
+ CCGEdge *e = v->edges[i];
float sharpness = EDGE_getSharpness(e, curLvl);
if (seam) {
if (_edge_isBoundary(e)) {
- CCVert *oV = _edge_getOtherVert(e, v);
+ CCGVert *oV = _edge_getOtherVert(e, v);
VertDataAdd(q, VERT_getCo(oV, curLvl));
}
} else if (sharpness != 0.0) {
- CCVert *oV = _edge_getOtherVert(e, v);
+ CCGVert *oV = _edge_getOtherVert(e, v);
VertDataAdd(q, VERT_getCo(oV, curLvl));
}
}
@@ -1351,34 +2011,34 @@ static void CCS__sync(CSubSurf *ss) {
if (ss->useAgeCounts) {
for (i=0; i<numEffectedV; i++) {
- CCVert *v = effectedV[i];
- byte *userData = CCS_getVertUserData(ss, v);
+ CCGVert *v = effectedV[i];
+ byte *userData = ccgSubSurf_getVertUserData(ss, v);
*((int*) &userData[ss->vertUserAgeOffset]) = ss->currentAge;
}
for (i=0; i<numEffectedE; i++) {
- CCEdge *e = effectedE[i];
- byte *userData = CCS_getEdgeUserData(ss, e);
+ CCGEdge *e = effectedE[i];
+ byte *userData = ccgSubSurf_getEdgeUserData(ss, e);
*((int*) &userData[ss->edgeUserAgeOffset]) = ss->currentAge;
}
for (i=0; i<numEffectedF; i++) {
- CCFace *f = effectedF[i];
- byte *userData = CCS_getFaceUserData(ss, f);
+ CCGFace *f = effectedF[i];
+ byte *userData = ccgSubSurf_getFaceUserData(ss, f);
*((int*) &userData[ss->faceUserAgeOffset]) = ss->currentAge;
}
}
for (i=0; i<numEffectedE; i++) {
- CCEdge *e = effectedE[i];
+ CCGEdge *e = effectedE[i];
VertDataCopy(EDGE_getCo(e, nextLvl, 0), VERT_getCo(e->v0, nextLvl));
VertDataCopy(EDGE_getCo(e, nextLvl, 2), VERT_getCo(e->v1, nextLvl));
}
for (i=0; i<numEffectedF; i++) {
- CCFace *f = effectedF[i];
+ CCGFace *f = effectedF[i];
for (S=0; S<f->numVerts; S++) {
- CCEdge *e = FACE_getEdges(f)[S];
- CCEdge *prevE = FACE_getEdges(f)[(S+f->numVerts-1)%f->numVerts];
+ CCGEdge *e = FACE_getEdges(f)[S];
+ CCGEdge *prevE = FACE_getEdges(f)[(S+f->numVerts-1)%f->numVerts];
VertDataCopy(FACE_getIFCo(f, nextLvl, S, 0, 0), FACE_getCenterData(f));
VertDataCopy(FACE_getIECo(f, nextLvl, S, 0), FACE_getCenterData(f));
@@ -1391,684 +2051,428 @@ static void CCS__sync(CSubSurf *ss) {
}
for (curLvl=1; curLvl<subdivLevels; curLvl++) {
- int edgeSize = 1 + (1<<curLvl);
- int gridSize = 1 + (1<<(curLvl-1));
- nextLvl = curLvl+1;
+ ccgSubSurf__calcSubdivLevel(ss,
+ effectedV, effectedE, effectedF,
+ numEffectedV, numEffectedE, numEffectedF, curLvl);
+ }
- for (ptrIdx=0; ptrIdx<numEffectedF; ptrIdx++) {
- CCFace *f = (CCFace*) effectedF[ptrIdx];
+ if (ss->calcVertNormals)
+ ccgSubSurf__calcVertNormals(ss,
+ effectedV, effectedE, effectedF,
+ numEffectedV, numEffectedE, numEffectedF);
- /* interior face midpoints
- * o old interior face points
- */
- for (S=0; S<f->numVerts; S++) {
- for (y=0; y<gridSize-1; y++) {
- for (x=0; x<gridSize-1; x++) {
- int fx = 1 + 2*x;
- int fy = 1 + 2*y;
- void *co0 = FACE_getIFCo(f, curLvl, S, x+0, y+0);
- void *co1 = FACE_getIFCo(f, curLvl, S, x+1, y+0);
- void *co2 = FACE_getIFCo(f, curLvl, S, x+1, y+1);
- void *co3 = FACE_getIFCo(f, curLvl, S, x+0, y+1);
- void *co = FACE_getIFCo(f, nextLvl, S, fx, fy);
-
- VertDataAvg4(co, co0, co1, co2, co3);
- }
- }
- }
-
- /* interior edge midpoints
- * o old interior edge points
- * o new interior face midpoints
- */
- for (S=0; S<f->numVerts; S++) {
- for (x=0; x<gridSize-1; x++) {
- int fx = x*2 + 1;
- void *co0 = FACE_getIECo(f, curLvl, S, x+0);
- void *co1 = FACE_getIECo(f, curLvl, S, x+1);
- void *co2 = FACE_getIFCo(f, nextLvl, (S+1)%f->numVerts, 1, fx);
- void *co3 = FACE_getIFCo(f, nextLvl, S, fx, 1);
- void *co = FACE_getIECo(f, nextLvl, S, fx);
-
- VertDataAvg4(co, co0, co1, co2, co3);
- }
+ for (ptrIdx=0; ptrIdx<numEffectedV; ptrIdx++) {
+ CCGVert *v = effectedV[ptrIdx];
+ v->flags = 0;
+ }
+ for (ptrIdx=0; ptrIdx<numEffectedE; ptrIdx++) {
+ CCGEdge *e = effectedE[ptrIdx];
+ e->flags = 0;
+ }
- /* interior face interior edge midpoints
- * o old interior face points
- * o new interior face midpoints
- */
+ CCGSUBSURF_free(ss, effectedF);
+ CCGSUBSURF_free(ss, effectedE);
+ CCGSUBSURF_free(ss, effectedV);
+}
- /* vertical */
- for (x=1; x<gridSize-1; x++) {
- for (y=0; y<gridSize-1; y++) {
- int fx = x*2;
- int fy = y*2+1;
- void *co0 = FACE_getIFCo(f, curLvl, S, x, y+0);
- void *co1 = FACE_getIFCo(f, curLvl, S, x, y+1);
- void *co2 = FACE_getIFCo(f, nextLvl, S, fx-1, fy);
- void *co3 = FACE_getIFCo(f, nextLvl, S, fx+1, fy);
- void *co = FACE_getIFCo(f, nextLvl, S, fx, fy);
-
- VertDataAvg4(co, co0, co1, co2, co3);
- }
- }
+static void ccgSubSurf__allFaces(CCGSubSurf *ss, CCGFace ***faces, int *numFaces, int *freeFaces)
+{
+ CCGFace **array;
+ int i, num;
- /* horizontal */
- for (y=1; y<gridSize-1; y++) {
- for (x=0; x<gridSize-1; x++) {
- int fx = x*2+1;
- int fy = y*2;
- void *co0 = FACE_getIFCo(f, curLvl, S, x+0, y);
- void *co1 = FACE_getIFCo(f, curLvl, S, x+1, y);
- void *co2 = FACE_getIFCo(f, nextLvl, S, fx, fy-1);
- void *co3 = FACE_getIFCo(f, nextLvl, S, fx, fy+1);
- void *co = FACE_getIFCo(f, nextLvl, S, fx, fy);
+ if(!*faces) {
+ array = CCGSUBSURF_alloc(ss, sizeof(*array)*ss->fMap->numEntries);
+ num = 0;
+ for (i=0; i<ss->fMap->curSize; i++) {
+ CCGFace *f = (CCGFace*) ss->fMap->buckets[i];
- VertDataAvg4(co, co0, co1, co2, co3);
- }
- }
- }
+ for (; f; f = f->next)
+ array[num++] = f;
}
- /* exterior edge midpoints
- * o old exterior edge points
- * o new interior face midpoints
- */
- for (ptrIdx=0; ptrIdx<numEffectedE; ptrIdx++) {
- CCEdge *e = (CCEdge*) effectedE[ptrIdx];
- float sharpness = EDGE_getSharpness(e, curLvl);
+ *faces = array;
+ *numFaces = num;
+ *freeFaces= 1;
+ }
+ else
+ *freeFaces= 0;
+}
- if (_edge_isBoundary(e) || sharpness>1.0) {
- for (x=0; x<edgeSize-1; x++) {
- int fx = x*2 + 1;
- void *co0 = EDGE_getCo(e, curLvl, x+0);
- void *co1 = EDGE_getCo(e, curLvl, x+1);
- void *co = EDGE_getCo(e, nextLvl, fx);
+static void ccgSubSurf__effectedFaceNeighbours(CCGSubSurf *ss, CCGFace **faces, int numFaces, CCGVert ***verts, int *numVerts, CCGEdge ***edges, int *numEdges)
+{
+ CCGVert **arrayV;
+ CCGEdge **arrayE;
+ int numV, numE, i, j;
- VertDataCopy(co, co0);
- VertDataAdd(co, co1);
- VertDataMulN(co, 0.5);
- }
- } else {
- for (x=0; x<edgeSize-1; x++) {
- int fx = x*2 + 1;
- void *co0 = EDGE_getCo(e, curLvl, x+0);
- void *co1 = EDGE_getCo(e, curLvl, x+1);
- void *co = EDGE_getCo(e, nextLvl, fx);
- int numFaces = 0;
-
- VertDataCopy(q, co0);
- VertDataAdd(q, co1);
-
- for (i=0; i<e->numFaces; i++) {
- CCFace *f = e->faces[i];
- VertDataAdd(q, _face_getIFCoEdge(f, e, nextLvl, fx, 1, subdivLevels, vertDataSize));
- numFaces++;
- }
+ arrayV = CCGSUBSURF_alloc(ss, sizeof(*arrayV)*ss->vMap->numEntries);
+ arrayE = CCGSUBSURF_alloc(ss, sizeof(*arrayE)*ss->eMap->numEntries);
+ numV = numE = 0;
- VertDataMulN(q, 1.0f/(2.0f+numFaces));
+ for (i=0; i<numFaces; i++) {
+ CCGFace *f = faces[i];
+ f->flags |= Face_eEffected;
+ }
- VertDataCopy(r, co0);
- VertDataAdd(r, co1);
- VertDataMulN(r, 0.5);
+ for (i=0; i<ss->vMap->curSize; i++) {
+ CCGVert *v = (CCGVert*) ss->vMap->buckets[i];
- VertDataCopy(co, q);
- VertDataSub(r, q);
- VertDataMulN(r, sharpness);
- VertDataAdd(co, r);
- }
+ for (; v; v = v->next) {
+ for(j=0; j<v->numFaces; j++)
+ if(!(v->faces[j]->flags & Face_eEffected))
+ break;
+
+ if(j == v->numFaces) {
+ arrayV[numV++] = v;
+ v->flags |= Vert_eEffected;
}
}
+ }
- /* exterior vertex shift
- * o old vertex points (shifting)
- * o old exterior edge points
- * o new interior face midpoints
- */
- for (ptrIdx=0; ptrIdx<numEffectedV; ptrIdx++) {
- CCVert *v = (CCVert*) effectedV[ptrIdx];
- void *co = VERT_getCo(v, curLvl);
- void *nCo = VERT_getCo(v, nextLvl);
- int sharpCount = 0, allSharp = 1;
- float avgSharpness = 0.0;
- int seam = VERT_seam(v), seamEdges = 0;
+ for (i=0; i<ss->eMap->curSize; i++) {
+ CCGEdge *e = (CCGEdge*) ss->eMap->buckets[i];
- for (i=0; i<v->numEdges; i++) {
- CCEdge *e = v->edges[i];
- float sharpness = EDGE_getSharpness(e, curLvl);
+ for (; e; e = e->next) {
+ for(j=0; j<e->numFaces; j++)
+ if(!(e->faces[j]->flags & Face_eEffected))
+ break;
+
+ if(j == e->numFaces) {
+ e->flags |= Edge_eEffected;
+ arrayE[numE++] = e;
+ }
+ }
+ }
- if (seam && _edge_isBoundary(e))
- seamEdges++;
+ *verts = arrayV;
+ *numVerts = numV;
+ *edges = arrayE;
+ *numEdges = numE;
+}
- if (sharpness!=0.0f) {
- sharpCount++;
- avgSharpness += sharpness;
- } else {
- allSharp = 0;
- }
- }
+/* copy face grid coordinates to other places */
+CCGError ccgSubSurf_updateFromFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF, int numEffectedF)
+{
+ int i, S, x, gridSize, cornerIdx, subdivLevels;
+ int vertDataSize = ss->meshIFC.vertDataSize, freeF;
- if(sharpCount) {
- avgSharpness /= sharpCount;
- if (avgSharpness>1.0) {
- avgSharpness = 1.0;
- }
- }
+ subdivLevels = ss->subdivLevels;
+ lvl = (lvl)? lvl: subdivLevels;
+ gridSize = 1 + (1<<(lvl-1));
+ cornerIdx = gridSize-1;
- if (seam && seamEdges < 2)
- seam = 0;
+ ccgSubSurf__allFaces(ss, &effectedF, &numEffectedF, &freeF);
- if (!v->numEdges) {
- VertDataCopy(nCo, co);
- } else if (_vert_isBoundary(v)) {
- int numBoundary = 0;
+ for (i=0; i<numEffectedF; i++) {
+ CCGFace *f = effectedF[i];
- VertDataZero(r);
- for (i=0; i<v->numEdges; i++) {
- CCEdge *e = v->edges[i];
- if (_edge_isBoundary(e)) {
- VertDataAdd(r, _edge_getCoVert(e, v, curLvl, 1, vertDataSize));
- numBoundary++;
- }
- }
+ for (S=0; S<f->numVerts; S++) {
+ CCGEdge *e = FACE_getEdges(f)[S];
+ CCGEdge *prevE = FACE_getEdges(f)[(S+f->numVerts-1)%f->numVerts];
- VertDataCopy(nCo, co);
- VertDataMulN(nCo, 0.75);
- VertDataMulN(r, 0.25f/numBoundary);
- VertDataAdd(nCo, r);
- } else {
- int cornerIdx = (1 + (1<<(curLvl))) - 2;
- int numEdges = 0, numFaces = 0;
+ VertDataCopy(FACE_getCenterData(f), FACE_getIFCo(f, lvl, S, 0, 0));
+ VertDataCopy(VERT_getCo(FACE_getVerts(f)[S], lvl), FACE_getIFCo(f, lvl, S, cornerIdx, cornerIdx));
- VertDataZero(q);
- for (i=0; i<v->numFaces; i++) {
- CCFace *f = v->faces[i];
- VertDataAdd(q, FACE_getIFCo(f, nextLvl, _face_getVertIndex(f,v), cornerIdx, cornerIdx));
- numFaces++;
- }
- VertDataMulN(q, 1.0f/numFaces);
- VertDataZero(r);
- for (i=0; i<v->numEdges; i++) {
- CCEdge *e = v->edges[i];
- VertDataAdd(r, _edge_getCoVert(e, v, curLvl, 1,vertDataSize));
- numEdges++;
- }
- VertDataMulN(r, 1.0f/numEdges);
+ for (x=0; x<gridSize; x++)
+ VertDataCopy(FACE_getIECo(f, lvl, S, x), FACE_getIFCo(f, lvl, S, x, 0));
- VertDataCopy(nCo, co);
- VertDataMulN(nCo, numEdges-2.0f);
- VertDataAdd(nCo, q);
- VertDataAdd(nCo, r);
- VertDataMulN(nCo, 1.0f/numEdges);
+ for (x=0; x<gridSize; x++) {
+ int eI = gridSize-1-x;
+ VertDataCopy(_edge_getCoVert(e, FACE_getVerts(f)[S], lvl, eI,vertDataSize), FACE_getIFCo(f, lvl, S, cornerIdx, x));
+ VertDataCopy(_edge_getCoVert(prevE, FACE_getVerts(f)[S], lvl, eI,vertDataSize), FACE_getIFCo(f, lvl, S, x, cornerIdx));
}
+ }
+ }
- if ((sharpCount>1 && v->numFaces) || seam) {
- VertDataZero(q);
+ if(freeF) CCGSUBSURF_free(ss, effectedF);
- if (seam) {
- avgSharpness = 1.0f;
- sharpCount = seamEdges;
- allSharp = 1;
- }
+ return eCCGError_None;
+}
- for (i=0; i<v->numEdges; i++) {
- CCEdge *e = v->edges[i];
- float sharpness = EDGE_getSharpness(e, curLvl);
+/* copy other places to face grid coordinates */
+CCGError ccgSubSurf_updateToFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF, int numEffectedF)
+{
+ int i, S, x, gridSize, cornerIdx, subdivLevels;
+ int vertDataSize = ss->meshIFC.vertDataSize, freeF;
- if (seam) {
- if (_edge_isBoundary(e))
- VertDataAdd(q, _edge_getCoVert(e, v, curLvl, 1, vertDataSize));
- } else if (sharpness != 0.0) {
- VertDataAdd(q, _edge_getCoVert(e, v, curLvl, 1, vertDataSize));
- }
- }
+ subdivLevels = ss->subdivLevels;
+ lvl = (lvl)? lvl: subdivLevels;
+ gridSize = 1 + (1<<(lvl-1));
+ cornerIdx = gridSize-1;
- VertDataMulN(q, (float) 1/sharpCount);
+ ccgSubSurf__allFaces(ss, &effectedF, &numEffectedF, &freeF);
- if (sharpCount!=2 || allSharp) {
- // q = q + (co-q)*avgSharpness
- VertDataCopy(r, co);
- VertDataSub(r, q);
- VertDataMulN(r, avgSharpness);
- VertDataAdd(q, r);
- }
+ for (i=0; i<numEffectedF; i++) {
+ CCGFace *f = effectedF[i];
- // r = co*.75 + q*.25
- VertDataCopy(r, co);
- VertDataMulN(r, .75);
- VertDataMulN(q, .25);
- VertDataAdd(r, q);
+ for (S=0; S<f->numVerts; S++) {
+ int prevS = (S+f->numVerts-1)%f->numVerts;
+ CCGEdge *e = FACE_getEdges(f)[S];
+ CCGEdge *prevE = FACE_getEdges(f)[prevS];
+
+ for (x=0; x<gridSize; x++) {
+ int eI = gridSize-1-x;
+ VertDataCopy(FACE_getIFCo(f, lvl, S, cornerIdx, x), _edge_getCoVert(e, FACE_getVerts(f)[S], lvl, eI,vertDataSize));
+ VertDataCopy(FACE_getIFCo(f, lvl, S, x, cornerIdx), _edge_getCoVert(prevE, FACE_getVerts(f)[S], lvl, eI,vertDataSize));
+ }
- // nCo = nCo + (r-nCo)*avgSharpness
- VertDataSub(r, nCo);
- VertDataMulN(r, avgSharpness);
- VertDataAdd(nCo, r);
+ for (x=1; x<gridSize-1; x++) {
+ VertDataCopy(FACE_getIFCo(f, lvl, S, 0, x), FACE_getIECo(f, lvl, prevS, x));
+ VertDataCopy(FACE_getIFCo(f, lvl, S, x, 0), FACE_getIECo(f, lvl, S, x));
}
+
+ VertDataCopy(FACE_getIFCo(f, lvl, S, 0, 0), FACE_getCenterData(f));
+ VertDataCopy(FACE_getIFCo(f, lvl, S, cornerIdx, cornerIdx), VERT_getCo(FACE_getVerts(f)[S], lvl));
}
+ }
- /* exterior edge interior shift
- * o old exterior edge midpoints (shifting)
- * o old exterior edge midpoints
- * o new interior face midpoints
- */
- for (ptrIdx=0; ptrIdx<numEffectedE; ptrIdx++) {
- CCEdge *e = (CCEdge*) effectedE[ptrIdx];
- float sharpness = EDGE_getSharpness(e, curLvl);
- int sharpCount = 0;
- float avgSharpness = 0.0;
+ if(freeF) CCGSUBSURF_free(ss, effectedF);
- if (sharpness!=0.0f) {
- sharpCount = 2;
- avgSharpness += sharpness;
+ return eCCGError_None;
+}
- if (avgSharpness>1.0) {
- avgSharpness = 1.0;
- }
- } else {
- sharpCount = 0;
- avgSharpness = 0;
- }
+/* stitch together face grids, averaging coordinates at edges
+ and vertices, for multires displacements */
+CCGError ccgSubSurf_stitchFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF, int numEffectedF)
+{
+ CCGVert **effectedV;
+ CCGEdge **effectedE;
+ int numEffectedV, numEffectedE, freeF;
+ int i, S, x, gridSize, cornerIdx, subdivLevels, edgeSize;
+ int vertDataSize = ss->meshIFC.vertDataSize;
- if (_edge_isBoundary(e) && (!e->numFaces || sharpCount<2)) {
- for (x=1; x<edgeSize-1; x++) {
- int fx = x*2;
- void *co = EDGE_getCo(e, curLvl, x);
- void *nCo = EDGE_getCo(e, nextLvl, fx);
- VertDataCopy(r, EDGE_getCo(e, curLvl, x-1));
- VertDataAdd(r, EDGE_getCo(e, curLvl, x+1));
- VertDataMulN(r, 0.5);
- VertDataCopy(nCo, co);
- VertDataMulN(nCo, 0.75);
- VertDataMulN(r, 0.25);
- VertDataAdd(nCo, r);
- }
- } else {
- for (x=1; x<edgeSize-1; x++) {
- int fx = x*2;
- void *co = EDGE_getCo(e, curLvl, x);
- void *nCo = EDGE_getCo(e, nextLvl, fx);
- int numFaces = 0;
-
- VertDataZero(q);
- VertDataZero(r);
- VertDataAdd(r, EDGE_getCo(e, curLvl, x-1));
- VertDataAdd(r, EDGE_getCo(e, curLvl, x+1));
- for (i=0; i<e->numFaces; i++) {
- CCFace *f = e->faces[i];
- VertDataAdd(q, _face_getIFCoEdge(f, e, nextLvl, fx-1, 1, subdivLevels, vertDataSize));
- VertDataAdd(q, _face_getIFCoEdge(f, e, nextLvl, fx+1, 1, subdivLevels, vertDataSize));
-
- VertDataAdd(r, _face_getIFCoEdge(f, e, curLvl, x, 1, subdivLevels, vertDataSize));
- numFaces++;
- }
- VertDataMulN(q, 1.0/(numFaces*2.0f));
- VertDataMulN(r, 1.0/(2.0f + numFaces));
+ subdivLevels = ss->subdivLevels;
+ lvl = (lvl)? lvl: subdivLevels;
+ gridSize = 1 + (1<<(lvl-1));
+ edgeSize = 1 + (1<<lvl);
+ cornerIdx = gridSize-1;
- VertDataCopy(nCo, co);
- VertDataMulN(nCo, (float) numFaces);
- VertDataAdd(nCo, q);
- VertDataAdd(nCo, r);
- VertDataMulN(nCo, 1.0f/(2+numFaces));
-
- if (sharpCount==2) {
- VertDataCopy(q, co);
- VertDataMulN(q, 6.0f);
- VertDataAdd(q, EDGE_getCo(e, curLvl, x-1));
- VertDataAdd(q, EDGE_getCo(e, curLvl, x+1));
- VertDataMulN(q, 1/8.0f);
-
- VertDataSub(q, nCo);
- VertDataMulN(q, avgSharpness);
- VertDataAdd(nCo, q);
- }
- }
- }
- }
+ ccgSubSurf__allFaces(ss, &effectedF, &numEffectedF, &freeF);
+ ccgSubSurf__effectedFaceNeighbours(ss, effectedF, numEffectedF,
+ &effectedV, &numEffectedV, &effectedE, &numEffectedE);
- for (ptrIdx=0; ptrIdx<numEffectedF; ptrIdx++) {
- CCFace *f = (CCFace*) effectedF[ptrIdx];
+ /* zero */
+ for (i=0; i<numEffectedV; i++) {
+ CCGVert *v = effectedV[i];
+ VertDataZero(VERT_getCo(v, lvl));
+ }
- /* interior center point shift
- * o old face center point (shifting)
- * o old interior edge points
- * o new interior face midpoints
- */
- VertDataZero(q);
- for (S=0; S<f->numVerts; S++) {
- VertDataAdd(q, FACE_getIFCo(f, nextLvl, S, 1, 1));
- }
- VertDataMulN(q, 1.0f/f->numVerts);
- VertDataZero(r);
- for (S=0; S<f->numVerts; S++) {
- VertDataAdd(r, FACE_getIECo(f, curLvl, S, 1));
- }
- VertDataMulN(r, 1.0f/f->numVerts);
+ for (i=0; i<numEffectedE; i++) {
+ CCGEdge *e = effectedE[i];
- VertDataMulN(FACE_getCenterData(f), f->numVerts-2.0f);
- VertDataAdd(FACE_getCenterData(f), q);
- VertDataAdd(FACE_getCenterData(f), r);
- VertDataMulN(FACE_getCenterData(f), 1.0f/f->numVerts);
+ for (x=0; x<edgeSize; x++)
+ VertDataZero(EDGE_getCo(e, lvl, x));
+ }
- for (S=0; S<f->numVerts; S++) {
- /* interior face shift
- * o old interior face point (shifting)
- * o new interior edge midpoints
- * o new interior face midpoints
- */
- for (x=1; x<gridSize-1; x++) {
- for (y=1; y<gridSize-1; y++) {
- int fx = x*2;
- int fy = y*2;
- void *co = FACE_getIFCo(f, curLvl, S, x, y);
- void *nCo = FACE_getIFCo(f, nextLvl, S, fx, fy);
-
- VertDataAvg4(q, FACE_getIFCo(f, nextLvl, S, fx-1, fy-1),
- FACE_getIFCo(f, nextLvl, S, fx+1, fy-1),
- FACE_getIFCo(f, nextLvl, S, fx+1, fy+1),
- FACE_getIFCo(f, nextLvl, S, fx-1, fy+1));
+ /* add */
+ for (i=0; i<numEffectedF; i++) {
+ CCGFace *f = effectedF[i];
- VertDataAvg4(r, FACE_getIFCo(f, nextLvl, S, fx-1, fy+0),
- FACE_getIFCo(f, nextLvl, S, fx+1, fy+0),
- FACE_getIFCo(f, nextLvl, S, fx+0, fy-1),
- FACE_getIFCo(f, nextLvl, S, fx+0, fy+1));
+ VertDataZero(FACE_getCenterData(f));
- VertDataCopy(nCo, co);
- VertDataSub(nCo, q);
- VertDataMulN(nCo, 0.25f);
- VertDataAdd(nCo, r);
- }
- }
+ for (S=0; S<f->numVerts; S++)
+ if (FACE_getEdges(f)[S]->flags&Edge_eEffected)
+ for (x=0; x<gridSize; x++)
+ VertDataZero(FACE_getIECo(f, lvl, S, x));
- /* interior edge interior shift
- * o old interior edge point (shifting)
- * o new interior edge midpoints
- * o new interior face midpoints
- */
- for (x=1; x<gridSize-1; x++) {
- int fx = x*2;
- void *co = FACE_getIECo(f, curLvl, S, x);
- void *nCo = FACE_getIECo(f, nextLvl, S, fx);
-
- VertDataAvg4(q, FACE_getIFCo(f, nextLvl, (S+1)%f->numVerts, 1, fx-1),
- FACE_getIFCo(f, nextLvl, (S+1)%f->numVerts, 1, fx+1),
- FACE_getIFCo(f, nextLvl, S, fx+1, +1),
- FACE_getIFCo(f, nextLvl, S, fx-1, +1));
+ for (S=0; S<f->numVerts; S++) {
+ int prevS = (S+f->numVerts-1)%f->numVerts;
+ CCGEdge *e = FACE_getEdges(f)[S];
+ CCGEdge *prevE = FACE_getEdges(f)[prevS];
- VertDataAvg4(r, FACE_getIECo(f, nextLvl, S, fx-1),
- FACE_getIECo(f, nextLvl, S, fx+1),
- FACE_getIFCo(f, nextLvl, (S+1)%f->numVerts, 1, fx),
- FACE_getIFCo(f, nextLvl, S, fx, 1));
+ VertDataAdd(FACE_getCenterData(f), FACE_getIFCo(f, lvl, S, 0, 0));
+ if (FACE_getVerts(f)[S]->flags&Vert_eEffected)
+ VertDataAdd(VERT_getCo(FACE_getVerts(f)[S], lvl), FACE_getIFCo(f, lvl, S, cornerIdx, cornerIdx));
- VertDataCopy(nCo, co);
- VertDataSub(nCo, q);
- VertDataMulN(nCo, 0.25f);
- VertDataAdd(nCo, r);
- }
+ for (x=1; x<gridSize-1; x++) {
+ if (FACE_getEdges(f)[S]->flags&Edge_eEffected)
+ VertDataAdd(FACE_getIECo(f, lvl, S, x), FACE_getIFCo(f, lvl, S, x, 0));
+ if (FACE_getEdges(f)[prevS]->flags&Edge_eEffected)
+ VertDataAdd(FACE_getIECo(f, lvl, prevS, x), FACE_getIFCo(f, lvl, S, 0, x));
}
- }
-
- /* copy down */
- edgeSize = 1 + (1<<(nextLvl));
- gridSize = 1 + (1<<((nextLvl)-1));
- cornerIdx = gridSize-1;
- for (i=0; i<numEffectedE; i++) {
- CCEdge *e = effectedE[i];
- VertDataCopy(EDGE_getCo(e, nextLvl, 0), VERT_getCo(e->v0, nextLvl));
- VertDataCopy(EDGE_getCo(e, nextLvl, edgeSize-1), VERT_getCo(e->v1, nextLvl));
- }
- for (i=0; i<numEffectedF; i++) {
- CCFace *f = effectedF[i];
- for (S=0; S<f->numVerts; S++) {
- CCEdge *e = FACE_getEdges(f)[S];
- CCEdge *prevE = FACE_getEdges(f)[(S+f->numVerts-1)%f->numVerts];
- VertDataCopy(FACE_getIFCo(f, nextLvl, S, 0, 0), FACE_getCenterData(f));
- VertDataCopy(FACE_getIECo(f, nextLvl, S, 0), FACE_getCenterData(f));
- VertDataCopy(FACE_getIFCo(f, nextLvl, S, cornerIdx, cornerIdx), VERT_getCo(FACE_getVerts(f)[S], nextLvl));
- VertDataCopy(FACE_getIECo(f, nextLvl, S, cornerIdx), EDGE_getCo(FACE_getEdges(f)[S], nextLvl, cornerIdx));
- for (x=1; x<gridSize-1; x++) {
- void *co = FACE_getIECo(f, nextLvl, S, x);
- VertDataCopy(FACE_getIFCo(f, nextLvl, S, x, 0), co);
- VertDataCopy(FACE_getIFCo(f, nextLvl, (S+1)%f->numVerts, 0, x), co);
- }
- for (x=0; x<gridSize-1; x++) {
- int eI = gridSize-1-x;
- VertDataCopy(FACE_getIFCo(f, nextLvl, S, cornerIdx, x), _edge_getCoVert(e, FACE_getVerts(f)[S], nextLvl, eI,vertDataSize));
- VertDataCopy(FACE_getIFCo(f, nextLvl, S, x, cornerIdx), _edge_getCoVert(prevE, FACE_getVerts(f)[S], nextLvl, eI,vertDataSize));
- }
+ for (x=0; x<gridSize-1; x++) {
+ int eI = gridSize-1-x;
+ if (FACE_getEdges(f)[S]->flags&Edge_eEffected)
+ VertDataAdd(_edge_getCoVert(e, FACE_getVerts(f)[S], lvl, eI,vertDataSize), FACE_getIFCo(f, lvl, S, cornerIdx, x));
+ if (FACE_getEdges(f)[prevS]->flags&Edge_eEffected)
+ if(x != 0)
+ VertDataAdd(_edge_getCoVert(prevE, FACE_getVerts(f)[S], lvl, eI,vertDataSize), FACE_getIFCo(f, lvl, S, x, cornerIdx));
}
}
}
-#define FACE_getIFNo(f, lvl, S, x, y) _face_getIFNo(f, lvl, S, x, y, subdivLevels, vertDataSize, normalDataOffset)
-#define FACE_calcIFNo(f, lvl, S, x, y, no) _face_calcIFNo(f, lvl, S, x, y, no, subdivLevels, vertDataSize)
- if (ss->calcVertNormals) {
- int lvl = ss->subdivLevels;
- int edgeSize = 1 + (1<<lvl);
- int gridSize = 1 + (1<<(lvl-1));
- int normalDataOffset = ss->normalDataOffset;
+ /* average */
+ for (i=0; i<numEffectedV; i++) {
+ CCGVert *v = effectedV[i];
+ VertDataMulN(VERT_getCo(v, lvl), 1.0f/v->numFaces);
+ }
- for (ptrIdx=0; ptrIdx<numEffectedF; ptrIdx++) {
- CCFace *f = (CCFace*) effectedF[ptrIdx];
- int S, x, y;
+ for (i=0; i<numEffectedE; i++) {
+ CCGEdge *e = effectedE[i];
- for (S=0; S<f->numVerts; S++) {
- for (y=0; y<gridSize-1; y++)
- for (x=0; x<gridSize-1; x++)
- NormZero(FACE_getIFNo(f, lvl, S, x, y));
+ VertDataCopy(EDGE_getCo(e, lvl, 0), VERT_getCo(e->v0, lvl));
+ VertDataCopy(EDGE_getCo(e, lvl, edgeSize-1), VERT_getCo(e->v1, lvl));
- if (FACE_getEdges(f)[(S-1+f->numVerts)%f->numVerts]->flags&Edge_eEffected)
- for (x=0; x<gridSize-1; x++)
- NormZero(FACE_getIFNo(f, lvl, S, x, gridSize-1));
- if (FACE_getEdges(f)[S]->flags&Edge_eEffected)
- for (y=0; y<gridSize-1; y++)
- NormZero(FACE_getIFNo(f, lvl, S, gridSize-1, y));
- if (FACE_getVerts(f)[S]->flags&Vert_eEffected)
- NormZero(FACE_getIFNo(f, lvl, S, gridSize-1, gridSize-1));
- }
- }
-
- for (ptrIdx=0; ptrIdx<numEffectedF; ptrIdx++) {
- CCFace *f = (CCFace*) effectedF[ptrIdx];
- int S, x, y;
- float no[3];
+ for (x=1; x<edgeSize-1; x++)
+ VertDataMulN(EDGE_getCo(e, lvl, x), 1.0f/e->numFaces);
+ }
- for (S=0; S<f->numVerts; S++) {
- int yLimit = !(FACE_getEdges(f)[(S-1+f->numVerts)%f->numVerts]->flags&Edge_eEffected);
- int xLimit = !(FACE_getEdges(f)[S]->flags&Edge_eEffected);
- int yLimitNext = xLimit;
- int xLimitPrev = yLimit;
-
- for (y=0; y<gridSize - 1; y++) {
- for (x=0; x<gridSize - 1; x++) {
- int xPlusOk = (!xLimit || x<gridSize-2);
- int yPlusOk = (!yLimit || y<gridSize-2);
-
- FACE_calcIFNo(f, lvl, S, x, y, no);
-
- NormAdd(FACE_getIFNo(f, lvl, S, x+0, y+0), no);
- if (xPlusOk)
- NormAdd(FACE_getIFNo(f, lvl, S, x+1, y+0), no);
- if (yPlusOk)
- NormAdd(FACE_getIFNo(f, lvl, S, x+0, y+1), no);
- if (xPlusOk && yPlusOk) {
- if (x<gridSize-2 || y<gridSize-2 || FACE_getVerts(f)[S]->flags&Vert_eEffected) {
- NormAdd(FACE_getIFNo(f, lvl, S, x+1, y+1), no);
- }
- }
+ /* copy */
+ for (i=0; i<numEffectedF; i++) {
+ CCGFace *f = effectedF[i];
- if (x==0 && y==0) {
- int K;
+ VertDataMulN(FACE_getCenterData(f), 1.0f/f->numVerts);
- if (!yLimitNext || 1<gridSize-1)
- NormAdd(FACE_getIFNo(f, lvl, (S+1)%f->numVerts, 0, 1), no);
- if (!xLimitPrev || 1<gridSize-1)
- NormAdd(FACE_getIFNo(f, lvl, (S-1+f->numVerts)%f->numVerts, 1, 0), no);
+ for (S=0; S<f->numVerts; S++)
+ if (FACE_getEdges(f)[S]->flags&Edge_eEffected)
+ for (x=1; x<gridSize-1; x++)
+ VertDataMulN(FACE_getIECo(f, lvl, S, x), 0.5f);
- for (K=0; K<f->numVerts; K++) {
- if (K!=S) {
- NormAdd(FACE_getIFNo(f, lvl, K, 0, 0), no);
- }
- }
- } else if (y==0) {
- NormAdd(FACE_getIFNo(f, lvl, (S+1)%f->numVerts, 0, x), no);
- if (!yLimitNext || x<gridSize-2)
- NormAdd(FACE_getIFNo(f, lvl, (S+1)%f->numVerts, 0, x+1), no);
- } else if (x==0) {
- NormAdd(FACE_getIFNo(f, lvl, (S-1+f->numVerts)%f->numVerts, y, 0), no);
- if (!xLimitPrev || y<gridSize-2)
- NormAdd(FACE_getIFNo(f, lvl, (S-1+f->numVerts)%f->numVerts, y+1, 0), no);
- }
- }
- }
- }
- }
- // XXX can I reduce the number of normalisations here?
- for (ptrIdx=0; ptrIdx<numEffectedV; ptrIdx++) {
- CCVert *v = (CCVert*) effectedV[ptrIdx];
- float length, *no = _vert_getNo(v, lvl, vertDataSize, normalDataOffset);
+ for (S=0; S<f->numVerts; S++) {
+ int prevS = (S+f->numVerts-1)%f->numVerts;
+ CCGEdge *e = FACE_getEdges(f)[S];
+ CCGEdge *prevE = FACE_getEdges(f)[prevS];
- NormZero(no);
+ VertDataCopy(FACE_getIFCo(f, lvl, S, 0, 0), FACE_getCenterData(f));
+ VertDataCopy(FACE_getIFCo(f, lvl, S, cornerIdx, cornerIdx), VERT_getCo(FACE_getVerts(f)[S], lvl));
- for (i=0; i<v->numFaces; i++) {
- CCFace *f = v->faces[i];
- NormAdd(no, FACE_getIFNo(f, lvl, _face_getVertIndex(f,v), gridSize-1, gridSize-1));
+ for (x=1; x<gridSize-1; x++) {
+ VertDataCopy(FACE_getIFCo(f, lvl, S, x, 0), FACE_getIECo(f, lvl, S, x));
+ VertDataCopy(FACE_getIFCo(f, lvl, S, 0, x), FACE_getIECo(f, lvl, prevS, x));
}
- length = sqrt(no[0]*no[0] + no[1]*no[1] + no[2]*no[2]);
-
- if (length>EPSILON) {
- float invLength = 1.0f/length;
- no[0] *= invLength;
- no[1] *= invLength;
- no[2] *= invLength;
- } else {
- NormZero(no);
+ for (x=0; x<gridSize-1; x++) {
+ int eI = gridSize-1-x;
+ VertDataCopy(FACE_getIFCo(f, lvl, S, cornerIdx, x), _edge_getCoVert(e, FACE_getVerts(f)[S], lvl, eI,vertDataSize));
+ VertDataCopy(FACE_getIFCo(f, lvl, S, x, cornerIdx), _edge_getCoVert(prevE, FACE_getVerts(f)[S], lvl, eI,vertDataSize));
}
- for (i=0; i<v->numFaces; i++) {
- CCFace *f = v->faces[i];
- NormCopy(FACE_getIFNo(f, lvl, _face_getVertIndex(f,v), gridSize-1, gridSize-1), no);
- }
+ VertDataCopy(FACE_getIECo(f, lvl, S, 0), FACE_getCenterData(f));
+ VertDataCopy(FACE_getIECo(f, lvl, S, gridSize-1), FACE_getIFCo(f, lvl, S, gridSize-1, 0));
}
- for (ptrIdx=0; ptrIdx<numEffectedE; ptrIdx++) {
- CCEdge *e = (CCEdge*) effectedE[ptrIdx];
+ }
- if (e->numFaces) {
- CCFace *fLast = e->faces[e->numFaces-1];
- int x;
+ for (i=0; i<numEffectedV; i++)
+ effectedV[i]->flags = 0;
+ for (i=0; i<numEffectedE; i++)
+ effectedE[i]->flags = 0;
+ for (i=0; i<numEffectedF; i++)
+ effectedF[i]->flags = 0;
- for (i=0; i<e->numFaces-1; i++) {
- CCFace *f = e->faces[i];
+ CCGSUBSURF_free(ss, effectedE);
+ CCGSUBSURF_free(ss, effectedV);
+ if(freeF) CCGSUBSURF_free(ss, effectedF);
- for (x=1; x<edgeSize-1; x++) {
- NormAdd(_face_getIFNoEdge(fLast, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset),
- _face_getIFNoEdge(f, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset));
- }
- }
+ return eCCGError_None;
+}
- for (i=0; i<e->numFaces-1; i++) {
- CCFace *f = e->faces[i];
+/* update normals for specified faces */
+CCGError ccgSubSurf_updateNormals(CCGSubSurf *ss, CCGFace **effectedF, int numEffectedF) {
+ CCGVert **effectedV;
+ CCGEdge **effectedE;
+ int i, numEffectedV, numEffectedE, freeF;
- for (x=1; x<edgeSize-1; x++) {
- NormCopy(_face_getIFNoEdge(f, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset),
- _face_getIFNoEdge(fLast, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset));
- }
- }
- }
- }
- for (ptrIdx=0; ptrIdx<numEffectedF; ptrIdx++) {
- CCFace *f = (CCFace*) effectedF[ptrIdx];
- int S;
+ ccgSubSurf__allFaces(ss, &effectedF, &numEffectedF, &freeF);
+ ccgSubSurf__effectedFaceNeighbours(ss, effectedF, numEffectedF,
+ &effectedV, &numEffectedV, &effectedE, &numEffectedE);
- for (S=0; S<f->numVerts; S++) {
- NormCopy(FACE_getIFNo(f, lvl, (S+1)%f->numVerts, 0, gridSize-1),
- FACE_getIFNo(f, lvl, S, gridSize-1, 0));
- }
- }
- for (ptrIdx=0; ptrIdx<numEffectedF; ptrIdx++) {
- CCFace *f = (CCFace*) effectedF[ptrIdx];
- int S, x, y;
+ if (ss->calcVertNormals)
+ ccgSubSurf__calcVertNormals(ss,
+ effectedV, effectedE, effectedF,
+ numEffectedV, numEffectedE, numEffectedF);
- for (S=0; S<f->numVerts; S++) {
- for (y=0; y<gridSize; y++) {
- for (x=0; x<gridSize; x++) {
- float *no = FACE_getIFNo(f, lvl, S, x, y);
- float length = sqrt(no[0]*no[0] + no[1]*no[1] + no[2]*no[2]);
-
- if (length>EPSILON) {
- float invLength = 1.0f/length;
- no[0] *= invLength;
- no[1] *= invLength;
- no[2] *= invLength;
- } else {
- NormZero(no);
- }
- }
- }
- }
- }
- }
-#undef FACE_getIFNo
+ for (i=0; i<numEffectedV; i++)
+ effectedV[i]->flags = 0;
+ for (i=0; i<numEffectedE; i++)
+ effectedE[i]->flags = 0;
+ for (i=0; i<numEffectedF; i++)
+ effectedF[i]->flags = 0;
- for (ptrIdx=0; ptrIdx<numEffectedV; ptrIdx++) {
- CCVert *v = effectedV[ptrIdx];
- v->flags = 0;
- }
- for (ptrIdx=0; ptrIdx<numEffectedE; ptrIdx++) {
- CCEdge *e = effectedE[ptrIdx];
- e->flags = 0;
+ CCGSUBSURF_free(ss, effectedE);
+ CCGSUBSURF_free(ss, effectedV);
+ if(freeF) CCGSUBSURF_free(ss, effectedF);
+
+ return eCCGError_None;
+}
+
+/* compute subdivision levels from a given starting point, used by
+ multires subdivide/propagate, by filling in coordinates at a
+ certain level, and then subdividing that up to the highest level */
+CCGError ccgSubSurf_updateLevels(CCGSubSurf *ss, int lvl, CCGFace **effectedF, int numEffectedF)
+{
+ CCGVert **effectedV;
+ CCGEdge **effectedE;
+ int numEffectedV, numEffectedE, freeF, i;
+ int curLvl, subdivLevels = ss->subdivLevels;
+
+ ccgSubSurf__allFaces(ss, &effectedF, &numEffectedF, &freeF);
+ ccgSubSurf__effectedFaceNeighbours(ss, effectedF, numEffectedF,
+ &effectedV, &numEffectedV, &effectedE, &numEffectedE);
+
+ for (curLvl=lvl; curLvl<subdivLevels; curLvl++) {
+ ccgSubSurf__calcSubdivLevel(ss,
+ effectedV, effectedE, effectedF,
+ numEffectedV, numEffectedE, numEffectedF, curLvl);
}
-#undef VERT_getCo
-#undef EDGE_getCo
-#undef FACE_getIECo
-#undef FACE_getIFCo
+ for (i=0; i<numEffectedV; i++)
+ effectedV[i]->flags = 0;
+ for (i=0; i<numEffectedE; i++)
+ effectedE[i]->flags = 0;
+ for (i=0; i<numEffectedF; i++)
+ effectedF[i]->flags = 0;
- CCGSUBSURF_free(ss, effectedF);
CCGSUBSURF_free(ss, effectedE);
CCGSUBSURF_free(ss, effectedV);
+ if(freeF) CCGSUBSURF_free(ss, effectedF);
+
+ return eCCGError_None;
}
+#undef VERT_getCo
+#undef EDGE_getCo
+#undef FACE_getIECo
+#undef FACE_getIFCo
+
/*** External API accessor functions ***/
-int CCS_getNumVerts(CSubSurf *ss) {
+int ccgSubSurf_getNumVerts(CCGSubSurf *ss) {
return ss->vMap->numEntries;
}
-int CCS_getNumEdges(CSubSurf *ss) {
+int ccgSubSurf_getNumEdges(CCGSubSurf *ss) {
return ss->eMap->numEntries;
}
-int CCS_getNumFaces(CSubSurf *ss) {
+int ccgSubSurf_getNumFaces(CCGSubSurf *ss) {
return ss->fMap->numEntries;
}
-CCVert *CCS_getVert(CSubSurf *ss, CCVertHDL v) {
- return (CCVert*) _ehash_lookup(ss->vMap, v);
+CCGVert *ccgSubSurf_getVert(CCGSubSurf *ss, CCGVertHDL v) {
+ return (CCGVert*) _ehash_lookup(ss->vMap, v);
}
-CCEdge *CCS_getEdge(CSubSurf *ss, CCEdgeHDL e) {
- return (CCEdge*) _ehash_lookup(ss->eMap, e);
+CCGEdge *ccgSubSurf_getEdge(CCGSubSurf *ss, CCGEdgeHDL e) {
+ return (CCGEdge*) _ehash_lookup(ss->eMap, e);
}
-CCFace *CCS_getFace(CSubSurf *ss, CCFaceHDL f) {
- return (CCFace*) _ehash_lookup(ss->fMap, f);
+CCGFace *ccgSubSurf_getFace(CCGSubSurf *ss, CCGFaceHDL f) {
+ return (CCGFace*) _ehash_lookup(ss->fMap, f);
}
-int CCS_getSubdivisionLevels(CSubSurf *ss) {
+int ccgSubSurf_getSubdivisionLevels(CCGSubSurf *ss) {
return ss->subdivLevels;
}
-int CCS_getEdgeSize(CSubSurf *ss) {
- return CCS_getEdgeLevelSize(ss, ss->subdivLevels);
+int ccgSubSurf_getEdgeSize(CCGSubSurf *ss) {
+ return ccgSubSurf_getEdgeLevelSize(ss, ss->subdivLevels);
}
-int CCS_getEdgeLevelSize(CSubSurf *ss, int level) {
+int ccgSubSurf_getEdgeLevelSize(CCGSubSurf *ss, int level) {
if (level<1 || level>ss->subdivLevels) {
return -1;
} else {
return 1 + (1<<level);
}
}
-int CCS_getGridSize(CSubSurf *ss) {
- return CCS_getGridLevelSize(ss, ss->subdivLevels);
+int ccgSubSurf_getGridSize(CCGSubSurf *ss) {
+ return ccgSubSurf_getGridLevelSize(ss, ss->subdivLevels);
}
-int CCS_getGridLevelSize(CSubSurf *ss, int level) {
+int ccgSubSurf_getGridLevelSize(CCGSubSurf *ss, int level) {
if (level<1 || level>ss->subdivLevels) {
return -1;
} else {
@@ -2078,44 +2482,44 @@ int CCS_getGridLevelSize(CSubSurf *ss, int level) {
/* Vert accessors */
-CCVertHDL CCS_getVertVertHandle(CCVert *v) {
+CCGVertHDL ccgSubSurf_getVertVertHandle(CCGVert *v) {
return v->vHDL;
}
-int CCS_getVertAge(CSubSurf *ss, CCVert *v) {
+int ccgSubSurf_getVertAge(CCGSubSurf *ss, CCGVert *v) {
if (ss->useAgeCounts) {
- byte *userData = CCS_getVertUserData(ss, v);
+ byte *userData = ccgSubSurf_getVertUserData(ss, v);
return ss->currentAge - *((int*) &userData[ss->vertUserAgeOffset]);
} else {
return 0;
}
}
-void *CCS_getVertUserData(CSubSurf *ss, CCVert *v) {
+void *ccgSubSurf_getVertUserData(CCGSubSurf *ss, CCGVert *v) {
return VERT_getLevelData(v) + ss->meshIFC.vertDataSize*(ss->subdivLevels+1);
}
-int CCS_getVertNumFaces(CCVert *v) {
+int ccgSubSurf_getVertNumFaces(CCGVert *v) {
return v->numFaces;
}
-CCFace *CCS_getVertFace(CCVert *v, int index) {
+CCGFace *ccgSubSurf_getVertFace(CCGVert *v, int index) {
if (index<0 || index>=v->numFaces) {
return NULL;
} else {
return v->faces[index];
}
}
-int CCS_getVertNumEdges(CCVert *v) {
+int ccgSubSurf_getVertNumEdges(CCGVert *v) {
return v->numEdges;
}
-CCEdge *CCS_getVertEdge(CCVert *v, int index) {
+CCGEdge *ccgSubSurf_getVertEdge(CCGVert *v, int index) {
if (index<0 || index>=v->numEdges) {
return NULL;
} else {
return v->edges[index];
}
}
-void *CCS_getVertData(CSubSurf *ss, CCVert *v) {
- return CCS_getVertLevelData(ss, v, ss->subdivLevels);
+void *ccgSubSurf_getVertData(CCGSubSurf *ss, CCGVert *v) {
+ return ccgSubSurf_getVertLevelData(ss, v, ss->subdivLevels);
}
-void *CCS_getVertLevelData(CSubSurf *ss, CCVert *v, int level) {
+void *ccgSubSurf_getVertLevelData(CCGSubSurf *ss, CCGVert *v, int level) {
if (level<0 || level>ss->subdivLevels) {
return NULL;
} else {
@@ -2125,88 +2529,88 @@ void *CCS_getVertLevelData(CSubSurf *ss, CCVert *v, int level) {
/* Edge accessors */
-CCEdgeHDL CCS_getEdgeEdgeHandle(CCEdge *e) {
+CCGEdgeHDL ccgSubSurf_getEdgeEdgeHandle(CCGEdge *e) {
return e->eHDL;
}
-int CCS_getEdgeAge(CSubSurf *ss, CCEdge *e) {
+int ccgSubSurf_getEdgeAge(CCGSubSurf *ss, CCGEdge *e) {
if (ss->useAgeCounts) {
- byte *userData = CCS_getEdgeUserData(ss, e);
+ byte *userData = ccgSubSurf_getEdgeUserData(ss, e);
return ss->currentAge - *((int*) &userData[ss->edgeUserAgeOffset]);
} else {
return 0;
}
}
-void *CCS_getEdgeUserData(CSubSurf *ss, CCEdge *e) {
+void *ccgSubSurf_getEdgeUserData(CCGSubSurf *ss, CCGEdge *e) {
return EDGE_getLevelData(e) + ss->meshIFC.vertDataSize *((ss->subdivLevels+1) + (1<<(ss->subdivLevels+1))-1);
}
-int CCS_getEdgeNumFaces(CCEdge *e) {
+int ccgSubSurf_getEdgeNumFaces(CCGEdge *e) {
return e->numFaces;
}
-CCFace *CCS_getEdgeFace(CCEdge *e, int index) {
+CCGFace *ccgSubSurf_getEdgeFace(CCGEdge *e, int index) {
if (index<0 || index>=e->numFaces) {
return NULL;
} else {
return e->faces[index];
}
}
-CCVert *CCS_getEdgeVert0(CCEdge *e) {
+CCGVert *ccgSubSurf_getEdgeVert0(CCGEdge *e) {
return e->v0;
}
-CCVert *CCS_getEdgeVert1(CCEdge *e) {
+CCGVert *ccgSubSurf_getEdgeVert1(CCGEdge *e) {
return e->v1;
}
-void *CCS_getEdgeDataArray(CSubSurf *ss, CCEdge *e) {
- return CCS_getEdgeData(ss, e, 0);
+void *ccgSubSurf_getEdgeDataArray(CCGSubSurf *ss, CCGEdge *e) {
+ return ccgSubSurf_getEdgeData(ss, e, 0);
}
-void *CCS_getEdgeData(CSubSurf *ss, CCEdge *e, int x) {
- return CCS_getEdgeLevelData(ss, e, x, ss->subdivLevels);
+void *ccgSubSurf_getEdgeData(CCGSubSurf *ss, CCGEdge *e, int x) {
+ return ccgSubSurf_getEdgeLevelData(ss, e, x, ss->subdivLevels);
}
-void *CCS_getEdgeLevelData(CSubSurf *ss, CCEdge *e, int x, int level) {
+void *ccgSubSurf_getEdgeLevelData(CCGSubSurf *ss, CCGEdge *e, int x, int level) {
if (level<0 || level>ss->subdivLevels) {
return NULL;
} else {
return _edge_getCo(e, level, x, ss->meshIFC.vertDataSize);
}
}
-float CCS_getEdgeCrease(CCEdge *e) {
+float ccgSubSurf_getEdgeCrease(CCGEdge *e) {
return e->crease;
}
/* Face accessors */
-CCFaceHDL CCS_getFaceFaceHandle(CSubSurf *ss, CCFace *f) {
+CCGFaceHDL ccgSubSurf_getFaceFaceHandle(CCGSubSurf *ss, CCGFace *f) {
return f->fHDL;
}
-int CCS_getFaceAge(CSubSurf *ss, CCFace *f) {
+int ccgSubSurf_getFaceAge(CCGSubSurf *ss, CCGFace *f) {
if (ss->useAgeCounts) {
- byte *userData = CCS_getFaceUserData(ss, f);
+ byte *userData = ccgSubSurf_getFaceUserData(ss, f);
return ss->currentAge - *((int*) &userData[ss->faceUserAgeOffset]);
} else {
return 0;
}
}
-void *CCS_getFaceUserData(CSubSurf *ss, CCFace *f) {
+void *ccgSubSurf_getFaceUserData(CCGSubSurf *ss, CCGFace *f) {
int maxGridSize = 1 + (1<<(ss->subdivLevels-1));
return FACE_getCenterData(f) + ss->meshIFC.vertDataSize *(1 + f->numVerts*maxGridSize + f->numVerts*maxGridSize*maxGridSize);
}
-int CCS_getFaceNumVerts(CCFace *f) {
+int ccgSubSurf_getFaceNumVerts(CCGFace *f) {
return f->numVerts;
}
-CCVert *CCS_getFaceVert(CSubSurf *ss, CCFace *f, int index) {
+CCGVert *ccgSubSurf_getFaceVert(CCGSubSurf *ss, CCGFace *f, int index) {
if (index<0 || index>=f->numVerts) {
return NULL;
} else {
return FACE_getVerts(f)[index];
}
}
-CCEdge *CCS_getFaceEdge(CSubSurf *ss, CCFace *f, int index) {
+CCGEdge *ccgSubSurf_getFaceEdge(CCGSubSurf *ss, CCGFace *f, int index) {
if (index<0 || index>=f->numVerts) {
return NULL;
} else {
return FACE_getEdges(f)[index];
}
}
-int CCS_getFaceEdgeIndex(CCFace *f, CCEdge *e) {
+int ccgSubSurf_getFaceEdgeIndex(CCGFace *f, CCGEdge *e) {
int i;
for (i=0; i<f->numVerts; i++)
@@ -2215,88 +2619,88 @@ int CCS_getFaceEdgeIndex(CCFace *f, CCEdge *e) {
return -1;
}
-void *CCS_getFaceCenterData(CCFace *f) {
+void *ccgSubSurf_getFaceCenterData(CCGFace *f) {
return FACE_getCenterData(f);
}
-void *CCS_getFaceGridEdgeDataArray(CSubSurf *ss, CCFace *f, int gridIndex) {
- return CCS_getFaceGridEdgeData(ss, f, gridIndex, 0);
+void *ccgSubSurf_getFaceGridEdgeDataArray(CCGSubSurf *ss, CCGFace *f, int gridIndex) {
+ return ccgSubSurf_getFaceGridEdgeData(ss, f, gridIndex, 0);
}
-void *CCS_getFaceGridEdgeData(CSubSurf *ss, CCFace *f, int gridIndex, int x) {
+void *ccgSubSurf_getFaceGridEdgeData(CCGSubSurf *ss, CCGFace *f, int gridIndex, int x) {
return _face_getIECo(f, ss->subdivLevels, gridIndex, x, ss->subdivLevels, ss->meshIFC.vertDataSize);
}
-void *CCS_getFaceGridDataArray(CSubSurf *ss, CCFace *f, int gridIndex) {
- return CCS_getFaceGridData(ss, f, gridIndex, 0, 0);
+void *ccgSubSurf_getFaceGridDataArray(CCGSubSurf *ss, CCGFace *f, int gridIndex) {
+ return ccgSubSurf_getFaceGridData(ss, f, gridIndex, 0, 0);
}
-void *CCS_getFaceGridData(CSubSurf *ss, CCFace *f, int gridIndex, int x, int y) {
+void *ccgSubSurf_getFaceGridData(CCGSubSurf *ss, CCGFace *f, int gridIndex, int x, int y) {
return _face_getIFCo(f, ss->subdivLevels, gridIndex, x, y, ss->subdivLevels, ss->meshIFC.vertDataSize);
}
/*** External API iterator functions ***/
-CCVertIterator *CCS_getVertIterator(CSubSurf *ss) {
- return (CCVertIterator*) _ehashIterator_new(ss->vMap);
+CCGVertIterator *ccgSubSurf_getVertIterator(CCGSubSurf *ss) {
+ return (CCGVertIterator*) _ehashIterator_new(ss->vMap);
}
-CCEdgeIterator *CCS_getEdgeIterator(CSubSurf *ss) {
- return (CCEdgeIterator*) _ehashIterator_new(ss->eMap);
+CCGEdgeIterator *ccgSubSurf_getEdgeIterator(CCGSubSurf *ss) {
+ return (CCGEdgeIterator*) _ehashIterator_new(ss->eMap);
}
-CCFaceIterator *CCS_getFaceIterator(CSubSurf *ss) {
- return (CCFaceIterator*) _ehashIterator_new(ss->fMap);
+CCGFaceIterator *ccgSubSurf_getFaceIterator(CCGSubSurf *ss) {
+ return (CCGFaceIterator*) _ehashIterator_new(ss->fMap);
}
-CCVert *CCVIter_getCurrent(CCVertIterator *vi) {
- return (CCVert*) _ehashIterator_getCurrent((EHashIterator*) vi);
+CCGVert *ccgVertIterator_getCurrent(CCGVertIterator *vi) {
+ return (CCGVert*) _ehashIterator_getCurrent((EHashIterator*) vi);
}
-int CCVIter_isStopped(CCVertIterator *vi) {
+int ccgVertIterator_isStopped(CCGVertIterator *vi) {
return _ehashIterator_isStopped((EHashIterator*) vi);
}
-void CCVIter_next(CCVertIterator *vi) {
+void ccgVertIterator_next(CCGVertIterator *vi) {
_ehashIterator_next((EHashIterator*) vi);
}
-void CCVIter_free(CCVertIterator *vi) {
+void ccgVertIterator_free(CCGVertIterator *vi) {
_ehashIterator_free((EHashIterator*) vi);
}
-CCEdge *CCEIter_getCurrent(CCEdgeIterator *vi) {
- return (CCEdge*) _ehashIterator_getCurrent((EHashIterator*) vi);
+CCGEdge *ccgEdgeIterator_getCurrent(CCGEdgeIterator *vi) {
+ return (CCGEdge*) _ehashIterator_getCurrent((EHashIterator*) vi);
}
-int CCEIter_isStopped(CCEdgeIterator *vi) {
+int ccgEdgeIterator_isStopped(CCGEdgeIterator *vi) {
return _ehashIterator_isStopped((EHashIterator*) vi);
}
-void CCEIter_next(CCEdgeIterator *vi) {
+void ccgEdgeIterator_next(CCGEdgeIterator *vi) {
_ehashIterator_next((EHashIterator*) vi);
}
-void CCEIter_free(CCEdgeIterator *vi) {
+void ccgEdgeIterator_free(CCGEdgeIterator *vi) {
_ehashIterator_free((EHashIterator*) vi);
}
-CCFace *CCFIter_getCurrent(CCFaceIterator *vi) {
- return (CCFace*) _ehashIterator_getCurrent((EHashIterator*) vi);
+CCGFace *ccgFaceIterator_getCurrent(CCGFaceIterator *vi) {
+ return (CCGFace*) _ehashIterator_getCurrent((EHashIterator*) vi);
}
-int CCFIter_isStopped(CCFaceIterator *vi) {
+int ccgFaceIterator_isStopped(CCGFaceIterator *vi) {
return _ehashIterator_isStopped((EHashIterator*) vi);
}
-void CCFIter_next(CCFaceIterator *vi) {
+void ccgFaceIterator_next(CCGFaceIterator *vi) {
_ehashIterator_next((EHashIterator*) vi);
}
-void CCFIter_free(CCFaceIterator *vi) {
+void ccgFaceIterator_free(CCGFaceIterator *vi) {
_ehashIterator_free((EHashIterator*) vi);
}
/*** Extern API final vert/edge/face interface ***/
-int CCS_getNumFinalVerts(CSubSurf *ss) {
+int ccgSubSurf_getNumFinalVerts(CCGSubSurf *ss) {
int edgeSize = 1 + (1<<ss->subdivLevels);
int gridSize = 1 + (1<<(ss->subdivLevels-1));
int numFinalVerts = ss->vMap->numEntries + ss->eMap->numEntries*(edgeSize-2) + ss->fMap->numEntries + ss->numGrids*((gridSize-2) + ((gridSize-2)*(gridSize-2)));
return numFinalVerts;
}
-int CCS_getNumFinalEdges(CSubSurf *ss) {
+int ccgSubSurf_getNumFinalEdges(CCGSubSurf *ss) {
int edgeSize = 1 + (1<<ss->subdivLevels);
int gridSize = 1 + (1<<(ss->subdivLevels-1));
int numFinalEdges = ss->eMap->numEntries*(edgeSize-1) + ss->numGrids*((gridSize-1) + 2*((gridSize-2)*(gridSize-1)));
return numFinalEdges;
}
-int CCS_getNumFinalFaces(CSubSurf *ss) {
+int ccgSubSurf_getNumFinalFaces(CCGSubSurf *ss) {
int gridSize = 1 + (1<<(ss->subdivLevels-1));
int numFinalFaces = ss->numGrids*((gridSize-1)*(gridSize-1));
return numFinalFaces;
diff --git a/source/blender/blenkernel/intern/CCGSubSurf.h b/source/blender/blenkernel/intern/CCGSubSurf.h
index 2d4bef3d038..12212c7a37b 100644
--- a/source/blender/blenkernel/intern/CCGSubSurf.h
+++ b/source/blender/blenkernel/intern/CCGSubSurf.h
@@ -1,30 +1,31 @@
/* $Id$ */
typedef void* CCGMeshHDL;
-typedef void* CCVertHDL;
-typedef void* CCEdgeHDL;
-typedef void* CCFaceHDL;
+typedef void* CCGVertHDL;
+typedef void* CCGEdgeHDL;
+typedef void* CCGFaceHDL;
-typedef struct _CCVert CCVert;
-typedef struct _CCEdge CCEdge;
-typedef struct _CCFace CCFace;
+typedef struct _CCGVert CCGVert;
+typedef struct _CCGEdge CCGEdge;
+typedef struct _CCGFace CCGFace;
typedef struct _CCGMeshIFC CCGMeshIFC;
struct _CCGMeshIFC {
- int vertUserSize, edgeUserSize, faceUserSize;
- int vertDataSize;
+ int vertUserSize, edgeUserSize, faceUserSize;
+
+ int vertDataSize;
};
/***/
-typedef void* CCAllocHDL;
+typedef void* CCGAllocatorHDL;
typedef struct _CCGAllocatorIFC CCGAllocatorIFC;
struct _CCGAllocatorIFC {
- void* (*alloc) (CCAllocHDL a, int numBytes);
- void* (*realloc) (CCAllocHDL a, void *ptr, int newSize, int oldSize);
- void (*free) (CCAllocHDL a, void *ptr);
- void (*release) (CCAllocHDL a);
+ void* (*alloc) (CCGAllocatorHDL a, int numBytes);
+ void* (*realloc) (CCGAllocatorHDL a, void *ptr, int newSize, int oldSize);
+ void (*free) (CCGAllocatorHDL a, void *ptr);
+ void (*release) (CCGAllocatorHDL a);
};
/***/
@@ -38,114 +39,120 @@ typedef enum {
/***/
-typedef struct _CSubSurf CSubSurf;
+typedef struct _CCGSubSurf CCGSubSurf;
+
+CCGSubSurf* ccgSubSurf_new (CCGMeshIFC *ifc, int subdivisionLevels, CCGAllocatorIFC *allocatorIFC, CCGAllocatorHDL allocator);
+void ccgSubSurf_free (CCGSubSurf *ss);
-CSubSurf* CCS_new (CCGMeshIFC *ifc, int subdivisionLevels, CCGAllocatorIFC *allocatorIFC, CCAllocHDL allocator);
-void CCS_free (CSubSurf *ss);
+CCGError ccgSubSurf_sync (CCGSubSurf *ss);
-CCGError CCS_sync (CSubSurf *ss);
+CCGError ccgSubSurf_initFullSync (CCGSubSurf *ss);
+CCGError ccgSubSurf_initPartialSync (CCGSubSurf *ss);
-CCGError CCS_initFullSync (CSubSurf *ss);
-CCGError CCS_initPartialSync (CSubSurf *ss);
+CCGError ccgSubSurf_syncVert (CCGSubSurf *ss, CCGVertHDL vHDL, void *vertData, int seam, CCGVert **v_r);
+CCGError ccgSubSurf_syncEdge (CCGSubSurf *ss, CCGEdgeHDL eHDL, CCGVertHDL e_vHDL0, CCGVertHDL e_vHDL1, float crease, CCGEdge **e_r);
+CCGError ccgSubSurf_syncFace (CCGSubSurf *ss, CCGFaceHDL fHDL, int numVerts, CCGVertHDL *vHDLs, CCGFace **f_r);
-CCGError CCS_syncVert (CSubSurf *ss, CCVertHDL vHDL, void *vertData, int seam, CCVert **v_r);
-CCGError CCS_syncEdge (CSubSurf *ss, CCEdgeHDL eHDL, CCVertHDL e_vHDL0, CCVertHDL e_vHDL1, float crease, CCEdge **e_r);
-CCGError CCS_syncFace (CSubSurf *ss, CCFaceHDL fHDL, int numVerts, CCVertHDL *vHDLs, CCFace **f_r);
+CCGError ccgSubSurf_syncVertDel (CCGSubSurf *ss, CCGVertHDL vHDL);
+CCGError ccgSubSurf_syncEdgeDel (CCGSubSurf *ss, CCGEdgeHDL eHDL);
+CCGError ccgSubSurf_syncFaceDel (CCGSubSurf *ss, CCGFaceHDL fHDL);
-CCGError CCS_syncVertDel (CSubSurf *ss, CCVertHDL vHDL);
-CCGError CCS_syncEdgeDel (CSubSurf *ss, CCEdgeHDL eHDL);
-CCGError CCS_syncFaceDel (CSubSurf *ss, CCFaceHDL fHDL);
+CCGError ccgSubSurf_processSync (CCGSubSurf *ss);
-CCGError CCS_processSync (CSubSurf *ss);
+CCGError ccgSubSurf_updateFromFaces(CCGSubSurf *ss, int lvl, CCGFace **faces, int numFaces);
+CCGError ccgSubSurf_updateToFaces(CCGSubSurf *ss, int lvl, CCGFace **faces, int numFaces);
+CCGError ccgSubSurf_updateNormals(CCGSubSurf *ss, CCGFace **faces, int numFaces);
+CCGError ccgSubSurf_updateLevels(CCGSubSurf *ss, int lvl, CCGFace **faces, int numFaces);
+CCGError ccgSubSurf_stitchFaces(CCGSubSurf *ss, int lvl, CCGFace **faces, int numFaces);
-CCGError CCS_setSubdivisionLevels(CSubSurf *ss, int subdivisionLevels);
+CCGError ccgSubSurf_setSubdivisionLevels (CCGSubSurf *ss, int subdivisionLevels);
-CCGError CCS_setAllowEdgeCreation(CSubSurf *ss, int allowEdgeCreation, float defaultCreaseValue, void *defaultUserData);
-void CCS_getAllowEdgeCreation(CSubSurf *ss, int *allowEdgeCreation_r, float *defaultCreaseValue_r, void *defaultUserData_r);
+CCGError ccgSubSurf_setAllowEdgeCreation (CCGSubSurf *ss, int allowEdgeCreation, float defaultCreaseValue, void *defaultUserData);
+void ccgSubSurf_getAllowEdgeCreation (CCGSubSurf *ss, int *allowEdgeCreation_r, float *defaultCreaseValue_r, void *defaultUserData_r);
-void CCS_getUseAgeCounts (CSubSurf *ss, int *useAgeCounts_r, int *vertUserOffset_r, int *edgeUserOffset_r, int *faceUserOffset_r);
-CCGError CCS_setUseAgeCounts (CSubSurf *ss, int useAgeCounts, int vertUserOffset, int edgeUserOffset, int faceUserOffset);
+void ccgSubSurf_getUseAgeCounts (CCGSubSurf *ss, int *useAgeCounts_r, int *vertUserOffset_r, int *edgeUserOffset_r, int *faceUserOffset_r);
+CCGError ccgSubSurf_setUseAgeCounts (CCGSubSurf *ss, int useAgeCounts, int vertUserOffset, int edgeUserOffset, int faceUserOffset);
-CCGError CCS_setCalcVertexNormals(CSubSurf *ss, int useVertNormals, int normalDataOffset);
+CCGError ccgSubSurf_setCalcVertexNormals (CCGSubSurf *ss, int useVertNormals, int normalDataOffset);
/***/
-int CCS_getNumVerts (CSubSurf *ss);
-int CCS_getNumEdges (CSubSurf *ss);
-int CCS_getNumFaces (CSubSurf *ss);
-
-int CCS_getSubdivisionLevels(CSubSurf *ss);
-int CCS_getEdgeSize (CSubSurf *ss);
-int CCS_getEdgeLevelSize (CSubSurf *ss, int level);
-int CCS_getGridSize (CSubSurf *ss);
-int CCS_getGridLevelSize (CSubSurf *ss, int level);
-
-CCVert* CCS_getVert (CSubSurf *ss, CCVertHDL v);
-CCVertHDL CCS_getVertVertHandle (CCVert *v);
-int CCS_getVertNumFaces (CCVert *v);
-CCFace* CCS_getVertFace (CCVert *v, int index);
-int CCS_getVertNumEdges (CCVert *v);
-CCEdge* CCS_getVertEdge (CCVert *v, int index);
-
-int CCS_getVertAge (CSubSurf *ss, CCVert *v);
-void* CCS_getVertUserData (CSubSurf *ss, CCVert *v);
-void* CCS_getVertData (CSubSurf *ss, CCVert *v);
-void* CCS_getVertLevelData (CSubSurf *ss, CCVert *v, int level);
-
-CCEdge* CCS_getEdge (CSubSurf *ss, CCEdgeHDL e);
-CCEdgeHDL CCS_getEdgeEdgeHandle (CCEdge *e);
-int CCS_getEdgeNumFaces (CCEdge *e);
-CCFace* CCS_getEdgeFace (CCEdge *e, int index);
-CCVert* CCS_getEdgeVert0 (CCEdge *e);
-CCVert* CCS_getEdgeVert1 (CCEdge *e);
-float CCS_getEdgeCrease (CCEdge *e);
-
-int CCS_getEdgeAge (CSubSurf *ss, CCEdge *e);
-void* CCS_getEdgeUserData (CSubSurf *ss, CCEdge *e);
-void* CCS_getEdgeDataArray (CSubSurf *ss, CCEdge *e);
-void* CCS_getEdgeData (CSubSurf *ss, CCEdge *e, int x);
-void* CCS_getEdgeLevelData (CSubSurf *ss, CCEdge *e, int x, int level);
-
-CCFace* CCS_getFace (CSubSurf *ss, CCFaceHDL f);
-CCFaceHDL CCS_getFaceFaceHandle (CSubSurf *ss, CCFace *f);
-int CCS_getFaceNumVerts (CCFace *f);
-CCVert* CCS_getFaceVert (CSubSurf *ss, CCFace *f, int index);
-CCEdge* CCS_getFaceEdge (CSubSurf *ss, CCFace *f, int index);
-int CCS_getFaceEdgeIndex (CCFace *f, CCEdge *e);
-
-int CCS_getFaceAge (CSubSurf *ss, CCFace *f);
-void* CCS_getFaceUserData (CSubSurf *ss, CCFace *f);
-void* CCS_getFaceCenterData (CCFace *f);
-void* CCS_getFaceGridEdgeDataArray (CSubSurf *ss, CCFace *f, int gridIndex);
-void* CCS_getFaceGridEdgeData (CSubSurf *ss, CCFace *f, int gridIndex, int x);
-void* CCS_getFaceGridDataArray (CSubSurf *ss, CCFace *f, int gridIndex);
-void* CCS_getFaceGridData (CSubSurf *ss, CCFace *f, int gridIndex, int x, int y);
-
-int CCS_getNumFinalVerts (CSubSurf *ss);
-int CCS_getNumFinalEdges (CSubSurf *ss);
-int CCS_getNumFinalFaces (CSubSurf *ss);
+int ccgSubSurf_getNumVerts (CCGSubSurf *ss);
+int ccgSubSurf_getNumEdges (CCGSubSurf *ss);
+int ccgSubSurf_getNumFaces (CCGSubSurf *ss);
+
+int ccgSubSurf_getSubdivisionLevels (CCGSubSurf *ss);
+int ccgSubSurf_getEdgeSize (CCGSubSurf *ss);
+int ccgSubSurf_getEdgeLevelSize (CCGSubSurf *ss, int level);
+int ccgSubSurf_getGridSize (CCGSubSurf *ss);
+int ccgSubSurf_getGridLevelSize (CCGSubSurf *ss, int level);
+
+CCGVert* ccgSubSurf_getVert (CCGSubSurf *ss, CCGVertHDL v);
+CCGVertHDL ccgSubSurf_getVertVertHandle (CCGVert *v);
+int ccgSubSurf_getVertNumFaces (CCGVert *v);
+CCGFace* ccgSubSurf_getVertFace (CCGVert *v, int index);
+int ccgSubSurf_getVertNumEdges (CCGVert *v);
+CCGEdge* ccgSubSurf_getVertEdge (CCGVert *v, int index);
+
+int ccgSubSurf_getVertAge (CCGSubSurf *ss, CCGVert *v);
+void* ccgSubSurf_getVertUserData (CCGSubSurf *ss, CCGVert *v);
+void* ccgSubSurf_getVertData (CCGSubSurf *ss, CCGVert *v);
+void* ccgSubSurf_getVertLevelData (CCGSubSurf *ss, CCGVert *v, int level);
+
+CCGEdge* ccgSubSurf_getEdge (CCGSubSurf *ss, CCGEdgeHDL e);
+CCGEdgeHDL ccgSubSurf_getEdgeEdgeHandle (CCGEdge *e);
+int ccgSubSurf_getEdgeNumFaces (CCGEdge *e);
+CCGFace* ccgSubSurf_getEdgeFace (CCGEdge *e, int index);
+CCGVert* ccgSubSurf_getEdgeVert0 (CCGEdge *e);
+CCGVert* ccgSubSurf_getEdgeVert1 (CCGEdge *e);
+float ccgSubSurf_getEdgeCrease (CCGEdge *e);
+
+int ccgSubSurf_getEdgeAge (CCGSubSurf *ss, CCGEdge *e);
+void* ccgSubSurf_getEdgeUserData (CCGSubSurf *ss, CCGEdge *e);
+void* ccgSubSurf_getEdgeDataArray (CCGSubSurf *ss, CCGEdge *e);
+void* ccgSubSurf_getEdgeData (CCGSubSurf *ss, CCGEdge *e, int x);
+void* ccgSubSurf_getEdgeLevelData (CCGSubSurf *ss, CCGEdge *e, int x, int level);
+
+CCGFace* ccgSubSurf_getFace (CCGSubSurf *ss, CCGFaceHDL f);
+CCGFaceHDL ccgSubSurf_getFaceFaceHandle (CCGSubSurf *ss, CCGFace *f);
+int ccgSubSurf_getFaceNumVerts (CCGFace *f);
+CCGVert* ccgSubSurf_getFaceVert (CCGSubSurf *ss, CCGFace *f, int index);
+CCGEdge* ccgSubSurf_getFaceEdge (CCGSubSurf *ss, CCGFace *f, int index);
+int ccgSubSurf_getFaceEdgeIndex (CCGFace *f, CCGEdge *e);
+
+int ccgSubSurf_getFaceAge (CCGSubSurf *ss, CCGFace *f);
+void* ccgSubSurf_getFaceUserData (CCGSubSurf *ss, CCGFace *f);
+void* ccgSubSurf_getFaceCenterData (CCGFace *f);
+void* ccgSubSurf_getFaceGridEdgeDataArray (CCGSubSurf *ss, CCGFace *f, int gridIndex);
+void* ccgSubSurf_getFaceGridEdgeData (CCGSubSurf *ss, CCGFace *f, int gridIndex, int x);
+void* ccgSubSurf_getFaceGridDataArray (CCGSubSurf *ss, CCGFace *f, int gridIndex);
+void* ccgSubSurf_getFaceGridData (CCGSubSurf *ss, CCGFace *f, int gridIndex, int x, int y);
+
+int ccgSubSurf_getNumFinalVerts (CCGSubSurf *ss);
+int ccgSubSurf_getNumFinalEdges (CCGSubSurf *ss);
+int ccgSubSurf_getNumFinalFaces (CCGSubSurf *ss);
/***/
-typedef struct _CCVertIterator CCVertIterator;
-typedef struct _CCEdgeIterator CCEdgeIterator;
-typedef struct _CCFaceIterator CCFaceIterator;
+typedef struct _CCGVertIterator CCGVertIterator;
+typedef struct _CCGEdgeIterator CCGEdgeIterator;
+typedef struct _CCGFaceIterator CCGFaceIterator;
-CCVertIterator* CCS_getVertIterator (CSubSurf *ss);
-CCEdgeIterator* CCS_getEdgeIterator (CSubSurf *ss);
-CCFaceIterator* CCS_getFaceIterator (CSubSurf *ss);
+CCGVertIterator* ccgSubSurf_getVertIterator (CCGSubSurf *ss);
+CCGEdgeIterator* ccgSubSurf_getEdgeIterator (CCGSubSurf *ss);
+CCGFaceIterator* ccgSubSurf_getFaceIterator (CCGSubSurf *ss);
-CCVert* CCVIter_getCurrent (CCVertIterator *vi);
-int CCVIter_isStopped (CCVertIterator *vi);
-void CCVIter_next (CCVertIterator *vi);
-void CCVIter_free (CCVertIterator *vi);
+CCGVert* ccgVertIterator_getCurrent (CCGVertIterator *vi);
+int ccgVertIterator_isStopped (CCGVertIterator *vi);
+void ccgVertIterator_next (CCGVertIterator *vi);
+void ccgVertIterator_free (CCGVertIterator *vi);
-CCEdge* CCEIter_getCurrent (CCEdgeIterator *ei);
-int CCEIter_isStopped (CCEdgeIterator *ei);
-void CCEIter_next (CCEdgeIterator *ei);
-void CCEIter_free (CCEdgeIterator *ei);
+CCGEdge* ccgEdgeIterator_getCurrent (CCGEdgeIterator *ei);
+int ccgEdgeIterator_isStopped (CCGEdgeIterator *ei);
+void ccgEdgeIterator_next (CCGEdgeIterator *ei);
+void ccgEdgeIterator_free (CCGEdgeIterator *ei);
-CCFace* CCFIter_getCurrent (CCFaceIterator *fi);
-int CCFIter_isStopped (CCFaceIterator *fi);
-void CCFIter_next (CCFaceIterator *fi);
-void CCFIter_free (CCFaceIterator *fi);
+CCGFace* ccgFaceIterator_getCurrent (CCGFaceIterator *fi);
+int ccgFaceIterator_isStopped (CCGFaceIterator *fi);
+void ccgFaceIterator_next (CCGFaceIterator *fi);
+void ccgFaceIterator_free (CCGFaceIterator *fi);
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index 4585a56675a..1876493f5e2 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -1770,7 +1770,7 @@ DerivedMesh *mesh_create_derived_for_modifier(Scene *scene, Object *ob, Modifier
md->scene= scene;
if (!(md->mode&eModifierMode_Realtime)) return NULL;
- if (mti->isDisabled && mti->isDisabled(md)) return NULL;
+ if (mti->isDisabled && mti->isDisabled(md, 0)) return NULL;
if (mti->type==eModifierTypeType_OnlyDeform) {
int numVerts;
@@ -2141,7 +2141,7 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
mask &= ~CD_MASK_ORCO;
DM_set_only_copy(orcodm, mask);
- ndm = mti->applyModifier(md, ob, orcodm, useRenderParams, !inputVertexCos);
+ ndm = mti->applyModifier(md, ob, orcodm, useRenderParams, 0);
if(ndm) {
/* if the modifier returned a new dm, release the old one */
@@ -2748,7 +2748,7 @@ int editbmesh_get_first_deform_matrices(Object *ob, BMEditMesh *em, float (**def
}
for(; md && i <= cageIndex; md = md->next, i++)
- if(editbmesh_modifier_is_enabled(md, dm) && modifier_isDeformer(md))
+ if(editbmesh_modifier_is_enabled(md, dm) && modifier_isCorrectableDeformed(md))
numleft++;
if(dm)
diff --git a/source/blender/blenkernel/intern/Makefile b/source/blender/blenkernel/intern/Makefile
index 26b9b9ef0dd..95c82d31890 100644
--- a/source/blender/blenkernel/intern/Makefile
+++ b/source/blender/blenkernel/intern/Makefile
@@ -53,6 +53,8 @@ CPPFLAGS += -I../../blenlib
CPPFLAGS += -I../../blenloader
CPPFLAGS += -I../../python
CPPFLAGS += -I../../blenfont
+# This is bad level, remove eventually
+CPPFLAGS += -I../../windowmanager
# also avi is used
CPPFLAGS += -I../../avi
CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include
diff --git a/source/blender/blenkernel/intern/action.c b/source/blender/blenkernel/intern/action.c
index af3c4719e32..303cd208b7c 100644
--- a/source/blender/blenkernel/intern/action.c
+++ b/source/blender/blenkernel/intern/action.c
@@ -153,7 +153,6 @@ void make_local_action(bAction *act)
}
}
-
void free_action (bAction *act)
{
/* sanity check */
@@ -255,101 +254,68 @@ void set_active_action_group (bAction *act, bActionGroup *agrp, short select)
* - always adds at the end of the group
*/
void action_groups_add_channel (bAction *act, bActionGroup *agrp, FCurve *fcurve)
-{
- FCurve *fcu;
- short done=0;
-
+{
/* sanity checks */
if (ELEM3(NULL, act, agrp, fcurve))
return;
- /* if no channels, just add to two lists at the same time */
+ /* if no channels anywhere, just add to two lists at the same time */
if (act->curves.first == NULL) {
fcurve->next = fcurve->prev = NULL;
agrp->channels.first = agrp->channels.last = fcurve;
act->curves.first = act->curves.last = fcurve;
-
- fcurve->grp= agrp;
- return;
}
- /* try to find a channel to slot this in before/after */
- for (fcu= act->curves.first; fcu; fcu= fcu->next) {
- /* if channel has no group, then we have ungrouped channels, which should always occur after groups */
- if (fcu->grp == NULL) {
- BLI_insertlinkbefore(&act->curves, fcu, fcurve);
-
- if (agrp->channels.first == NULL)
- agrp->channels.first= fcurve;
- agrp->channels.last= fcurve;
+ /* if the group already has channels, the F-Curve can simply be added to the list
+ * (i.e. as the last channel in the group)
+ */
+ else if (agrp->channels.first) {
+ /* if the group's last F-Curve is the action's last F-Curve too,
+ * then set the F-Curve as the last for the action first so that
+ * the lists will be in sync after linking
+ */
+ if (agrp->channels.last == act->curves.last)
+ act->curves.last= fcurve;
- done= 1;
- break;
- }
+ /* link in the given F-Curve after the last F-Curve in the group,
+ * which means that it should be able to fit in with the rest of the
+ * list seamlessly
+ */
+ BLI_insertlinkafter(&agrp->channels, agrp->channels.last, fcurve);
+ }
+
+ /* otherwise, need to find the nearest F-Curve in group before/after current to link with */
+ else {
+ bActionGroup *grp;
- /* if channel has group after current, we can now insert (otherwise we have gone too far) */
- else if (fcu->grp == agrp->next) {
- BLI_insertlinkbefore(&act->curves, fcu, fcurve);
-
- if (agrp->channels.first == NULL)
- agrp->channels.first= fcurve;
- agrp->channels.last= fcurve;
-
- done= 1;
- break;
- }
+ /* firstly, link this F-Curve to the group */
+ agrp->channels.first = agrp->channels.last = fcurve;
- /* if channel has group we're targeting, check whether it is the last one of these */
- else if (fcu->grp == agrp) {
- if ((fcu->next) && (fcu->next->grp != agrp)) {
- BLI_insertlinkafter(&act->curves, fcu, fcurve);
- agrp->channels.last= fcurve;
- done= 1;
- break;
- }
- else if (fcu->next == NULL) {
- BLI_addtail(&act->curves, fcurve);
- agrp->channels.last= fcurve;
- done= 1;
+ /* step through the groups preceeding this one, finding the F-Curve there to attach this one after */
+ for (grp= agrp->prev; grp; grp= grp->prev) {
+ /* if this group has F-Curves, we want weave the given one in right after the last channel there,
+ * but via the Action's list not this group's list
+ * - this is so that the F-Curve is in the right place in the Action,
+ * but won't be included in the previous group
+ */
+ if (grp->channels.last) {
+ /* once we've added, break here since we don't need to search any further... */
+ BLI_insertlinkafter(&act->curves, grp->channels.last, fcurve);
break;
}
}
- /* if channel has group before target, check whether the next one is something after target */
- else if (fcu->grp == agrp->prev) {
- if (fcu->next) {
- if ((fcu->next->grp != fcu->grp) && (fcu->next->grp != agrp)) {
- BLI_insertlinkafter(&act->curves, fcu, fcurve);
-
- agrp->channels.first= fcurve;
- agrp->channels.last= fcurve;
-
- done= 1;
- break;
- }
- }
- else {
- BLI_insertlinkafter(&act->curves, fcu, fcurve);
-
- agrp->channels.first= fcurve;
- agrp->channels.last= fcurve;
-
- done= 1;
- break;
- }
- }
+ /* if grp is NULL, that means we fell through, and this F-Curve should be added as the new first
+ * since group is (effectively) the first group. Thus, the existing first F-Curve becomes the
+ * second in the chain, etc. etc.
+ */
+ if (grp == NULL)
+ BLI_insertlinkbefore(&act->curves, act->curves.first, fcurve);
}
- /* only if added, set channel as belonging to this group */
- if (done) {
- //printf("FCurve added to group \n");
- fcurve->grp= agrp;
- }
- else {
- printf("Error: FCurve '%s' couldn't be added to Group '%s' \n", fcurve->rna_path, agrp->name);
- BLI_addtail(&act->curves, fcurve);
- }
+ /* set the F-Curve's new group */
+ fcurve->grp= agrp;
}
/* Remove the given channel from all groups */
@@ -457,6 +423,8 @@ bPoseChannel *verify_pose_channel(bPose* pose, const char* name)
chan->ikrotweight = chan->iklinweight = 0.0f;
unit_m4(chan->constinv);
+ chan->protectflag = OB_LOCK_ROT4D; /* lock by components by default */
+
BLI_addtail(&pose->chanbase, chan);
return chan;
@@ -640,6 +608,48 @@ static void copy_pose_channel_data(bPoseChannel *pchan, const bPoseChannel *chan
}
}
+/* makes copies of internal data, unlike copy_pose_channel_data which only
+ * copies the pose state.
+ * hint: use when copying bones in editmode (on returned value from verify_pose_channel) */
+void duplicate_pose_channel_data(bPoseChannel *pchan, const bPoseChannel *pchan_from)
+{
+ /* copy transform locks */
+ pchan->protectflag = pchan_from->protectflag;
+
+ /* copy rotation mode */
+ pchan->rotmode = pchan_from->rotmode;
+
+ /* copy bone group */
+ pchan->agrp_index= pchan_from->agrp_index;
+
+ /* ik (dof) settings */
+ pchan->ikflag = pchan_from->ikflag;
+ VECCOPY(pchan->limitmin, pchan_from->limitmin);
+ VECCOPY(pchan->limitmax, pchan_from->limitmax);
+ VECCOPY(pchan->stiffness, pchan_from->stiffness);
+ pchan->ikstretch= pchan_from->ikstretch;
+ pchan->ikrotweight= pchan_from->ikrotweight;
+ pchan->iklinweight= pchan_from->iklinweight;
+
+ /* constraints */
+ copy_constraints(&pchan->constraints, &pchan_from->constraints);
+
+ /* id-properties */
+ if(pchan->prop) {
+ /* unlikely but possible it exists */
+ IDP_FreeProperty(pchan->prop);
+ MEM_freeN(pchan->prop);
+ pchan->prop= NULL;
+ }
+ if(pchan_from->prop) {
+ pchan->prop= IDP_CopyProperty(pchan_from->prop);
+ }
+
+ /* custom shape */
+ pchan->custom= pchan_from->custom;
+}
+
+
/* checks for IK constraint, Spline IK, and also for Follow-Path constraint.
* can do more constraints flags later
*/
@@ -1042,7 +1052,10 @@ void copy_pose_result(bPose *to, bPose *from)
VECCOPY(pchanto->pose_head, pchanfrom->pose_head);
VECCOPY(pchanto->pose_tail, pchanfrom->pose_tail);
+
+ pchanto->rotmode= pchanfrom->rotmode;
pchanto->flag= pchanfrom->flag;
+ pchanto->protectflag= pchanfrom->protectflag;
}
}
}
diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c
index 5ebcec63cd4..a6f733708c7 100644
--- a/source/blender/blenkernel/intern/anim_sys.c
+++ b/source/blender/blenkernel/intern/anim_sys.c
@@ -697,20 +697,26 @@ static short animsys_write_rna_setting (PointerRNA *ptr, char *path, int array_i
switch (RNA_property_type(prop))
{
case PROP_BOOLEAN:
- if (RNA_property_array_length(&new_ptr, prop))
- RNA_property_boolean_set_index(&new_ptr, prop, array_index, (int)value);
+ if (RNA_property_array_length(&new_ptr, prop)) {
+ if (RNA_property_editable_index(&new_ptr, prop, array_index))
+ RNA_property_boolean_set_index(&new_ptr, prop, array_index, (int)value);
+ }
else
RNA_property_boolean_set(&new_ptr, prop, (int)value);
break;
case PROP_INT:
- if (RNA_property_array_length(&new_ptr, prop))
- RNA_property_int_set_index(&new_ptr, prop, array_index, (int)value);
+ if (RNA_property_array_length(&new_ptr, prop)){
+ if (RNA_property_editable_index(&new_ptr, prop, array_index))
+ RNA_property_int_set_index(&new_ptr, prop, array_index, (int)value);
+ }
else
RNA_property_int_set(&new_ptr, prop, (int)value);
break;
case PROP_FLOAT:
- if (RNA_property_array_length(&new_ptr, prop))
- RNA_property_float_set_index(&new_ptr, prop, array_index, value);
+ if (RNA_property_array_length(&new_ptr, prop)) {
+ if (RNA_property_editable_index(&new_ptr, prop, array_index))
+ RNA_property_float_set_index(&new_ptr, prop, array_index, value);
+ }
else
RNA_property_float_set(&new_ptr, prop, value);
break;
@@ -1434,20 +1440,26 @@ void nladata_flush_channels (ListBase *channels)
switch (RNA_property_type(prop))
{
case PROP_BOOLEAN:
- if (RNA_property_array_length(ptr, prop))
- RNA_property_boolean_set_index(ptr, prop, array_index, (int)value);
+ if (RNA_property_array_length(ptr, prop)) {
+ if (RNA_property_editable_index(ptr, prop, array_index))
+ RNA_property_boolean_set_index(ptr, prop, array_index, (int)value);
+ }
else
RNA_property_boolean_set(ptr, prop, (int)value);
break;
case PROP_INT:
- if (RNA_property_array_length(ptr, prop))
- RNA_property_int_set_index(ptr, prop, array_index, (int)value);
+ if (RNA_property_array_length(ptr, prop)) {
+ if (RNA_property_editable_index(ptr, prop, array_index))
+ RNA_property_int_set_index(ptr, prop, array_index, (int)value);
+ }
else
RNA_property_int_set(ptr, prop, (int)value);
break;
case PROP_FLOAT:
- if (RNA_property_array_length(ptr, prop))
- RNA_property_float_set_index(ptr, prop, array_index, value);
+ if (RNA_property_array_length(ptr, prop)) {
+ if (RNA_property_editable_index(ptr, prop, array_index))
+ RNA_property_float_set_index(ptr, prop, array_index, value);
+ }
else
RNA_property_float_set(ptr, prop, value);
break;
diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c
index 75ee27a73af..8d8f33238c3 100644
--- a/source/blender/blenkernel/intern/armature.c
+++ b/source/blender/blenkernel/intern/armature.c
@@ -38,6 +38,7 @@
#include "BLI_blenlib.h"
#include "BLI_cellalloc.h"
+#include "DNA_anim_types.h"
#include "DNA_armature_types.h"
#include "DNA_action_types.h"
#include "DNA_curve_types.h"
@@ -50,6 +51,7 @@
#include "DNA_scene_types.h"
#include "DNA_view3d_types.h"
+#include "BKE_animsys.h"
#include "BKE_armature.h"
#include "BKE_action.h"
#include "BKE_anim.h"
@@ -128,6 +130,12 @@ void free_armature(bArmature *arm)
freeSketch(arm->sketch);
arm->sketch = NULL;
}
+
+ /* free animation data */
+ if (arm->adt) {
+ BKE_free_animdata(&arm->id);
+ arm->adt= NULL;
+ }
}
}
@@ -177,6 +185,9 @@ static void copy_bonechildren (Bone* newBone, Bone* oldBone, Bone* actBone, Bone
if(oldBone == actBone)
*newActBone= newBone;
+ if(oldBone->prop)
+ newBone->prop= IDP_CopyProperty(oldBone->prop);
+
/* Copy this bone's list*/
BLI_duplicatelist(&newBone->childbase, &oldBone->childbase);
@@ -1502,6 +1513,10 @@ static void pose_proxy_synchronize(Object *ob, Object *from, int layer_protected
pchanw.child= pchan->child;
pchanw.path= NULL;
+ /* this is freed so copy a copy, else undo crashes */
+ if(pchanw.prop)
+ pchanw.prop= IDP_CopyProperty(pchanw.prop);
+
/* constraints - proxy constraints are flushed... local ones are added after
* 1. extract constraints not from proxy (CONSTRAINT_PROXY_LOCAL) from pchan's constraints
* 2. copy proxy-pchan's constraints on-to new
@@ -2221,34 +2236,43 @@ void where_is_pose_bone(Scene *scene, Object *ob, bPoseChannel *pchan, float cti
/* the rotation of the parent restposition */
copy_m4_m4(tmat, parbone->arm_mat);
-
- /* the location of actual parent transform */
- VECCOPY(tmat[3], offs_bone[3]);
- offs_bone[3][0]= offs_bone[3][1]= offs_bone[3][2]= 0.0f;
- mul_m4_v3(parchan->pose_mat, tmat[3]);
-
mul_serie_m4(pchan->pose_mat, tmat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL);
}
else if(bone->flag & BONE_NO_SCALE) {
float orthmat[4][4];
- /* get the official transform, but we only use the vector from it (optimize...) */
- mul_serie_m4(pchan->pose_mat, parchan->pose_mat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL);
- VECCOPY(vec, pchan->pose_mat[3]);
-
- /* do this again, but with an ortho-parent matrix */
+ /* do transform, with an ortho-parent matrix */
copy_m4_m4(orthmat, parchan->pose_mat);
normalize_m4(orthmat);
mul_serie_m4(pchan->pose_mat, orthmat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL);
-
- /* copy correct transform */
- VECCOPY(pchan->pose_mat[3], vec);
}
- else
+ else
mul_serie_m4(pchan->pose_mat, parchan->pose_mat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL);
+
+ /* in these cases we need to compute location separately */
+ if(bone->flag & (BONE_HINGE|BONE_NO_SCALE|BONE_NO_LOCAL_LOCATION)) {
+ float bone_loc[3], chan_loc[3];
+
+ mul_v3_m4v3(bone_loc, parchan->pose_mat, offs_bone[3]);
+ copy_v3_v3(chan_loc, pchan->chan_mat[3]);
+
+ /* no local location is not transformed by bone matrix */
+ if(!(bone->flag & BONE_NO_LOCAL_LOCATION))
+ mul_mat3_m4_v3(offs_bone, chan_loc);
+
+ /* for hinge we use armature instead of pose mat */
+ if(bone->flag & BONE_HINGE) mul_mat3_m4_v3(parbone->arm_mat, chan_loc);
+ else mul_mat3_m4_v3(parchan->pose_mat, chan_loc);
+
+ add_v3_v3v3(pchan->pose_mat[3], bone_loc, chan_loc);
+ }
}
else {
mul_m4_m4m4(pchan->pose_mat, pchan->chan_mat, bone->arm_mat);
+
+ /* optional location without arm_mat rotation */
+ if(bone->flag & BONE_NO_LOCAL_LOCATION)
+ add_v3_v3v3(pchan->pose_mat[3], bone->arm_mat[3], pchan->chan_mat[3]);
/* only rootbones get the cyclic offset (unless user doesn't want that) */
if ((bone->flag & BONE_NO_CYCLICOFFSET) == 0)
diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c
index a803f14b664..f3e46104efc 100644
--- a/source/blender/blenkernel/intern/blender.c
+++ b/source/blender/blenkernel/intern/blender.c
@@ -83,7 +83,7 @@
#include "BKE_report.h"
#include "BKE_scene.h"
#include "BKE_screen.h"
-#include "BKE_sequence.h"
+#include "BKE_sequencer.h"
#include "BKE_sound.h"
#include "BLI_editVert.h"
@@ -94,6 +94,8 @@
#include "BKE_utildefines.h" // O_BINARY FALSE
+#include "WM_api.h" // XXXXX BAD, very BAD dependency (bad level call) - remove asap, elubie
+
Global G;
UserDef U;
ListBase WMlist= {NULL, NULL};
diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c
index a9d72d93091..667b0d50ee9 100644
--- a/source/blender/blenkernel/intern/brush.c
+++ b/source/blender/blenkernel/intern/brush.c
@@ -40,6 +40,8 @@
#include "DNA_scene_types.h"
#include "DNA_windowmanager_types.h"
+#include "WM_types.h"
+
#include "RNA_access.h"
#include "BLI_math.h"
@@ -56,6 +58,8 @@
#include "BKE_texture.h"
#include "BKE_utildefines.h"
+
+
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
@@ -75,13 +79,14 @@ Brush *add_brush(const char *name)
brush->rgb[2]= 1.0f;
brush->alpha= 0.2f;
brush->size= 25;
- brush->spacing= 10.0f;
+ brush->spacing= 7.5f;
brush->smooth_stroke_radius= 75;
brush->smooth_stroke_factor= 0.9;
brush->rate= 0.1f;
brush->jitter= 0.0f;
brush->clone.alpha= 0.5;
brush->sculpt_tool = SCULPT_TOOL_DRAW;
+ brush->flag |= BRUSH_SPACE;
brush_curve_preset(brush, BRUSH_PRESET_SMOOTH);
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index c76d40fc0b1..9d47425fcd4 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -1,4 +1,4 @@
-/*
+ /*
* $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
@@ -52,7 +52,7 @@
#include "BLI_blenlib.h"
#include "BLI_edgehash.h"
#include "BLI_editVert.h"
-#include "BLI_ghash.h"
+#include "BLI_pbvh.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
@@ -82,6 +82,12 @@ typedef struct {
MFace *mface;
MLoop *mloop;
MPoly *mpoly;
+
+ /* Cached */
+ struct PBVH *pbvh;
+ /* Mesh connectivity */
+ struct ListBase *fmap;
+ struct IndexNode *fmap_mem;
} CDDerivedMesh;
DMFaceIter *cdDM_newFaceIter(DerivedMesh *source);
@@ -183,6 +189,33 @@ static void cdDM_getVertNo(DerivedMesh *dm, int index, float no_r[3])
no_r[2] = no[2]/32767.f;
}
+static ListBase *cdDM_getFaceMap(DerivedMesh *dm)
+{
+ CDDerivedMesh *cddm = (CDDerivedMesh*) dm;
+
+ if(!cddm->fmap) {
+ create_vert_face_map(&cddm->fmap, &cddm->fmap_mem, cddm->mface,
+ dm->getNumVerts(dm), dm->getNumFaces(dm));
+ }
+
+ return cddm->fmap;
+}
+
+static struct PBVH *cdDM_getPBVH(Object *ob, DerivedMesh *dm)
+{
+ CDDerivedMesh *cddm = (CDDerivedMesh*) dm;
+
+ if(!cddm->pbvh && ob->type == OB_MESH) {
+ Mesh *me= ob->data;
+
+ cddm->pbvh = BLI_pbvh_new();
+ BLI_pbvh_build_mesh(cddm->pbvh, me->mface, me->mvert,
+ me->totface, me->totvert);
+ }
+
+ return cddm->pbvh;
+}
+
static void cdDM_drawVerts(DerivedMesh *dm)
{
CDDerivedMesh *cddm = (CDDerivedMesh*) dm;
@@ -372,7 +405,9 @@ static void cdDM_drawLooseEdges(DerivedMesh *dm)
}
}
-static void cdDM_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int, void *attribs))
+static void cdDM_drawFacesSolid(DerivedMesh *dm,
+ float (*partial_redraw_planes)[4],
+ int fast, int (*setMaterial)(int, void *attribs))
{
CDDerivedMesh *cddm = (CDDerivedMesh*) dm;
MVert *mvert = cddm->mvert;
@@ -388,6 +423,20 @@ static void cdDM_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int, void *a
glVertex3fv(mvert[index].co); \
}
+ if(cddm->pbvh) {
+ float (*face_nors)[3] = CustomData_get_layer(&dm->faceData, CD_NORMAL);
+
+ /* should be per face */
+ if(dm->numFaceData && mface->flag & ME_SMOOTH)
+ glShadeModel(GL_SMOOTH);
+
+ BLI_pbvh_draw(cddm->pbvh, partial_redraw_planes, face_nors);
+
+ glShadeModel(GL_FLAT);
+
+ return;
+ }
+
if( GPU_buffer_legacy(dm) ) {
DEBUG_VBO( "Using legacy code. cdDM_drawFacesSolid\n" );
glBegin(glmode = GL_QUADS);
@@ -563,7 +612,7 @@ static void cdDM_drawFacesTex_common(DerivedMesh *dm,
unsigned char *cp = NULL;
if(drawParams) {
- flag = drawParams(tf? &tf[i]: NULL, mcol? &mcol[i*4]: NULL, mf->mat_nr);
+ flag = drawParams(tf? &tf[i]: NULL, mcol!=NULL, mf->mat_nr);
}
else {
if(index) {
@@ -668,7 +717,7 @@ static void cdDM_drawFacesTex_common(DerivedMesh *dm,
int flag = 1;
if(drawParams) {
- flag = drawParams(tf? &tf[actualFace]: NULL, mcol? &mcol[actualFace*4]: NULL, mf[actualFace].mat_nr);
+ flag = drawParams(tf? &tf[actualFace]: NULL, mcol!=NULL, mf[actualFace].mat_nr);
}
else {
if(index) {
@@ -897,7 +946,7 @@ static void cdDM_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, vo
continue;
}
else if(setDrawOptions) {
- orig = index[a];
+ orig = (index)? index[a]: a;
if(orig == ORIGINDEX_NONE)
continue;
@@ -1299,7 +1348,7 @@ static void cdDM_recalcTesselation(DerivedMesh *dm)
dm->numFaceData = mesh_recalcTesselation(&dm->faceData, &dm->loopData,
&dm->polyData, cddm->mvert, dm->numFaceData, dm->numLoopData,
- dm->numPolyData, 1);
+ dm->numPolyData, 1, 0);
cddm->mface = CustomData_get_layer(&dm->faceData, CD_MFACE);
}
@@ -1311,17 +1360,26 @@ static void cdDM_recalcTesselation2(DerivedMesh *dm)
dm->numFaceData = mesh_recalcTesselation(&dm->faceData, &dm->loopData,
&dm->polyData, cddm->mvert, dm->numFaceData, dm->numLoopData,
- dm->numPolyData, 0);
+ dm->numPolyData, 0, 0);
cddm->mface = CustomData_get_layer(&dm->faceData, CD_MFACE);
}
+static void cdDM_free_internal(CDDerivedMesh *cddm)
+{
+ if(cddm->pbvh) BLI_pbvh_free(cddm->pbvh);
+ if(cddm->fmap) MEM_freeN(cddm->fmap);
+ if(cddm->fmap_mem) MEM_freeN(cddm->fmap_mem);
+}
+
static void cdDM_release(DerivedMesh *dm)
{
CDDerivedMesh *cddm = (CDDerivedMesh*)dm;
- if (DM_release(dm))
+ if (DM_release(dm)) {
+ cdDM_free_internal(cddm);
MEM_freeN(cddm);
+ }
}
int CDDM_Check(DerivedMesh *dm)
@@ -1367,6 +1425,9 @@ static CDDerivedMesh *cdDM_create(const char *desc)
dm->getVertCo = cdDM_getVertCo;
dm->getVertNo = cdDM_getVertNo;
+ dm->getPBVH = cdDM_getPBVH;
+ dm->getFaceMap = cdDM_getFaceMap;
+
dm->drawVerts = cdDM_drawVerts;
dm->drawUVEdges = cdDM_drawUVEdges;
@@ -1423,18 +1484,13 @@ DerivedMesh *CDDM_from_mesh(Mesh *mesh, Object *ob)
CDDerivedMesh *cddm = cdDM_create("CDDM_from_mesh dm");
DerivedMesh *dm = &cddm->dm;
CustomDataMask mask = CD_MASK_MESH & (~CD_MASK_MDISPS);
- int i, *index, alloctype;
+ int alloctype;
- /* this does a referenced copy, the only new layers being ORIGINDEX,
- * with an exception for fluidsim */
+ /* this does a referenced copy, with an exception for fluidsim */
DM_init(dm, mesh->totvert, mesh->totedge, mesh->totface,
mesh->totloop, mesh->totpoly);
- CustomData_add_layer(&dm->vertData, CD_ORIGINDEX, CD_CALLOC, NULL, mesh->totvert);
- CustomData_add_layer(&dm->edgeData, CD_ORIGINDEX, CD_CALLOC, NULL, mesh->totedge);
- CustomData_add_layer(&dm->polyData, CD_ORIGINDEX, CD_CALLOC, NULL, mesh->totpoly);
-
dm->deformedOnly = 1;
alloctype= CD_REFERENCE;
@@ -1456,18 +1512,6 @@ DerivedMesh *CDDM_from_mesh(Mesh *mesh, Object *ob)
cddm->mpoly = CustomData_get_layer(&dm->polyData, CD_MPOLY);
cddm->mface = CustomData_get_layer(&dm->faceData, CD_MFACE);
- index = CustomData_get_layer(&dm->vertData, CD_ORIGINDEX);
- for(i = 0; i < mesh->totvert; ++i, ++index)
- *index = i;
-
- index = CustomData_get_layer(&dm->edgeData, CD_ORIGINDEX);
- for(i = 0; i < mesh->totedge; ++i, ++index)
- *index = i;
-
- index = CustomData_get_layer(&dm->polyData, CD_ORIGINDEX);
- for(i = 0; i < mesh->totpoly; ++i, ++index)
- *index = i;
-
if (!CustomData_has_layer(&cddm->dm.faceData, CD_ORIGINDEX))
CustomData_add_layer(&dm->faceData, CD_ORIGINDEX, CD_CALLOC, NULL, mesh->totface);
@@ -1907,6 +1951,11 @@ DerivedMesh *CDDM_copy(DerivedMesh *source, int faces_from_tessfaces)
int numLoops = source->numLoopData;
int numPolys = source->numPolyData;
+ /* ensure these are created if they are made on demand */
+ source->getVertDataArray(source, CD_ORIGINDEX);
+ source->getEdgeDataArray(source, CD_ORIGINDEX);
+ source->getTessFaceDataArray(source, CD_ORIGINDEX);
+
/* this initializes dm, and copies all non mvert/medge/mface layers */
DM_from_template(dm, source, numVerts, numEdges, numFaces,
numLoops, numPolys);
@@ -1953,6 +2002,13 @@ DerivedMesh *CDDM_from_template(DerivedMesh *source,
CustomData_add_layer(&dm->loopData, CD_MLOOP, CD_CALLOC, NULL, numLoops);
CustomData_add_layer(&dm->polyData, CD_MPOLY, CD_CALLOC, NULL, numPolys);
+ if(!CustomData_get_layer(&dm->vertData, CD_ORIGINDEX))
+ CustomData_add_layer(&dm->vertData, CD_ORIGINDEX, CD_CALLOC, NULL, numVerts);
+ if(!CustomData_get_layer(&dm->edgeData, CD_ORIGINDEX))
+ CustomData_add_layer(&dm->edgeData, CD_ORIGINDEX, CD_CALLOC, NULL, numEdges);
+ if(!CustomData_get_layer(&dm->faceData, CD_ORIGINDEX))
+ CustomData_add_layer(&dm->faceData, CD_ORIGINDEX, CD_CALLOC, NULL, numFaces);
+
cddm->mvert = CustomData_get_layer(&dm->vertData, CD_MVERT);
cddm->medge = CustomData_get_layer(&dm->edgeData, CD_MEDGE);
cddm->mface = CustomData_get_layer(&dm->faceData, CD_MFACE);
@@ -2334,244 +2390,20 @@ void CDDM_tessfaces_to_faces(DerivedMesh *dm)
void CDDM_set_mvert(DerivedMesh *dm, MVert *mvert)
{
CDDerivedMesh *cddm = (CDDerivedMesh*)dm;
- CustomData_add_layer(&cddm->dm.vertData, CD_MVERT, CD_ASSIGN, mvert, cddm->dm.numVertData);
+
cddm->mvert = mvert;
}
void CDDM_set_medge(DerivedMesh *dm, MEdge *medge)
{
CDDerivedMesh *cddm = (CDDerivedMesh*)dm;
- CustomData_add_layer(&cddm->dm.edgeData, CD_MEDGE, CD_ASSIGN, medge, cddm->dm.numEdgeData);
+
cddm->medge = medge;
}
void CDDM_set_mface(DerivedMesh *dm, MFace *mface)
{
CDDerivedMesh *cddm = (CDDerivedMesh*)dm;
- CustomData_add_layer(&cddm->dm.faceData, CD_MFACE, CD_ASSIGN, mface, cddm->dm.numFaceData);
- cddm->mface = mface;
-}
-
-void CDDM_set_mloop(DerivedMesh *dm, MLoop *mloop)
-{
- CDDerivedMesh *cddm = (CDDerivedMesh*)dm;
- CustomData_add_layer(&cddm->dm.loopData, CD_MLOOP, CD_ASSIGN, mloop, cddm->dm.numLoopData);
- cddm->mloop = mloop;
-}
-
-void CDDM_set_mpoly(DerivedMesh *dm, MPoly *mpoly)
-{
- CDDerivedMesh *cddm = (CDDerivedMesh*)dm;
- CustomData_add_layer(&cddm->dm.polyData, CD_MPOLY, CD_ASSIGN, mpoly, cddm->dm.numPolyData);
- cddm->mpoly = mpoly;
-}
-
-
-/* Multires DerivedMesh, extends CDDM */
-typedef struct MultiresDM {
- CDDerivedMesh cddm;
-
- MultiresModifierData *mmd;
- int local_mmd;
-
- int lvl, totlvl;
- float (*orco)[3];
- MVert *subco;
-
- ListBase *vert_face_map, *vert_edge_map;
- IndexNode *vert_face_map_mem, *vert_edge_map_mem;
- int *face_offsets;
-
- Object *ob;
- int modified;
-
- void (*update)(DerivedMesh*);
-} MultiresDM;
-
-static void MultiresDM_release(DerivedMesh *dm)
-{
- MultiresDM *mrdm = (MultiresDM*)dm;
- int mvert_layer;
-
- /* Before freeing, need to update the displacement map */
- if(dm->needsFree && mrdm->modified) {
- /* Check that mmd still exists */
- if(!mrdm->local_mmd && BLI_findindex(&mrdm->ob->modifiers, mrdm->mmd) < 0)
- mrdm->mmd = NULL;
- if(mrdm->mmd)
- mrdm->update(dm);
- }
-
- /* If the MVert data is being used as the sculpt undo store, don't free it */
- mvert_layer = CustomData_get_layer_index(&dm->vertData, CD_MVERT);
- if(mvert_layer != -1) {
- CustomDataLayer *cd = &dm->vertData.layers[mvert_layer];
- if(mrdm->mmd && cd->data == mrdm->mmd->undo_verts)
- cd->flag |= CD_FLAG_NOFREE;
- }
-
- if(DM_release(dm)) {
- MEM_freeN(mrdm->subco);
- MEM_freeN(mrdm->orco);
- if(mrdm->vert_face_map)
- MEM_freeN(mrdm->vert_face_map);
- if(mrdm->vert_face_map_mem)
- MEM_freeN(mrdm->vert_face_map_mem);
- if(mrdm->vert_edge_map)
- MEM_freeN(mrdm->vert_edge_map);
- if(mrdm->vert_edge_map_mem)
- MEM_freeN(mrdm->vert_edge_map_mem);
- if(mrdm->face_offsets)
- MEM_freeN(mrdm->face_offsets);
- MEM_freeN(mrdm);
- }
-}
-DerivedMesh *MultiresDM_new(MultiresSubsurf *ms, DerivedMesh *orig,
- int numVerts, int numEdges, int numFaces,
- int numLoops, int numPolys)
-{
- MultiresDM *mrdm = MEM_callocN(sizeof(MultiresDM), "MultiresDM");
- CDDerivedMesh *cddm = cdDM_create("MultiresDM CDDM");
- DerivedMesh *dm = NULL;
-
- mrdm->cddm = *cddm;
- MEM_freeN(cddm);
- dm = &mrdm->cddm.dm;
-
- mrdm->mmd = ms->mmd;
- mrdm->ob = ms->ob;
- mrdm->local_mmd = ms->local_mmd;
-
- if(dm) {
- MDisps *disps;
- MVert *mvert;
- int i;
-
- DM_from_template(dm, orig, numVerts, numEdges, numFaces,
- numLoops, numPolys);
- CustomData_free_layers(&dm->faceData, CD_MDISPS, numFaces);
-
- disps = CustomData_get_layer(&orig->faceData, CD_MDISPS);
- if(disps)
- CustomData_add_layer(&dm->faceData, CD_MDISPS, CD_REFERENCE, disps, numFaces);
-
-
- mvert = CustomData_get_layer(&orig->vertData, CD_MVERT);
- mrdm->orco = MEM_callocN(sizeof(float) * 3 * orig->getNumVerts(orig), "multires orco");
- for(i = 0; i < orig->getNumVerts(orig); ++i)
- copy_v3_v3(mrdm->orco[i], mvert[i].co);
- }
- else
- DM_init(dm, numVerts, numEdges, numFaces, numLoops, numPolys);
-
- CustomData_add_layer(&dm->vertData, CD_MVERT, CD_CALLOC, NULL, numVerts);
- CustomData_add_layer(&dm->edgeData, CD_MEDGE, CD_CALLOC, NULL, numEdges);
- CustomData_add_layer(&dm->faceData, CD_MFACE, CD_CALLOC, NULL, numFaces);
-
- mrdm->cddm.mvert = CustomData_get_layer(&dm->vertData, CD_MVERT);
- mrdm->cddm.medge = CustomData_get_layer(&dm->edgeData, CD_MEDGE);
- mrdm->cddm.mface = CustomData_get_layer(&dm->faceData, CD_MFACE);
-
- mrdm->lvl = ms->mmd->lvl;
- mrdm->totlvl = ms->mmd->totlvl;
- mrdm->subco = MEM_callocN(sizeof(MVert)*numVerts, "multires subdivided verts");
- mrdm->modified = 0;
-
- dm->release = MultiresDM_release;
-
- return dm;
-}
-
-Mesh *MultiresDM_get_mesh(DerivedMesh *dm)
-{
- return get_mesh(((MultiresDM*)dm)->ob);
-}
-
-Object *MultiresDM_get_object(DerivedMesh *dm)
-{
- return ((MultiresDM*)dm)->ob;
-}
-
-void *MultiresDM_get_orco(DerivedMesh *dm)
-{
- return ((MultiresDM*)dm)->orco;
-
-}
-
-MVert *MultiresDM_get_subco(DerivedMesh *dm)
-{
- return ((MultiresDM*)dm)->subco;
-}
-
-int MultiresDM_get_totlvl(DerivedMesh *dm)
-{
- return ((MultiresDM*)dm)->totlvl;
-}
-
-int MultiresDM_get_lvl(DerivedMesh *dm)
-{
- return ((MultiresDM*)dm)->lvl;
-}
-
-void MultiresDM_set_orco(DerivedMesh *dm, float (*orco)[3])
-{
- ((MultiresDM*)dm)->orco = orco;
-}
-
-void MultiresDM_set_update(DerivedMesh *dm, void (*update)(DerivedMesh*))
-{
- ((MultiresDM*)dm)->update = update;
-}
-
-ListBase *MultiresDM_get_vert_face_map(DerivedMesh *dm)
-{
- MultiresDM *mrdm = (MultiresDM*)dm;
- Mesh *me = mrdm->ob->data;
-
- if(!mrdm->vert_face_map)
- create_vert_face_map(&mrdm->vert_face_map, &mrdm->vert_face_map_mem, me->mface,
- me->totvert, me->totface);
-
- return mrdm->vert_face_map;
-}
-
-ListBase *MultiresDM_get_vert_edge_map(DerivedMesh *dm)
-{
- MultiresDM *mrdm = (MultiresDM*)dm;
- Mesh *me = mrdm->ob->data;
-
- if(!mrdm->vert_edge_map)
- create_vert_edge_map(&mrdm->vert_edge_map, &mrdm->vert_edge_map_mem, me->medge,
- me->totvert, me->totedge);
-
- return mrdm->vert_edge_map;
-}
-
-int *MultiresDM_get_face_offsets(DerivedMesh *dm)
-{
- MultiresDM *mrdm = (MultiresDM*)dm;
- Mesh *me = mrdm->ob->data;
- int i, accum = 0;
-
- if(!mrdm->face_offsets) {
- int len = (int)pow(2, mrdm->lvl - 2) - 1;
- int area = len * len;
- int t = 1 + len * 3 + area * 3, q = t + len + area;
-
- mrdm->face_offsets = MEM_callocN(sizeof(int) * me->totface, "mrdm face offsets");
- for(i = 0; i < me->totface; ++i) {
- mrdm->face_offsets[i] = accum;
-
- accum += (me->mface[i].v4 ? q : t);
- }
- }
-
- return mrdm->face_offsets;
-}
-
-void MultiresDM_mark_as_modified(DerivedMesh *dm)
-{
- ((MultiresDM*)dm)->modified = 1;
+ cddm->mface = mface;
}
-
diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c
index a3517404c2b..2fdfaaabc01 100644
--- a/source/blender/blenkernel/intern/cloth.c
+++ b/source/blender/blenkernel/intern/cloth.c
@@ -155,6 +155,7 @@ void cloth_init ( ClothModifierData *clmd )
clmd->sim_parms->defgoal = 0.0f;
clmd->sim_parms->goalspring = 1.0f;
clmd->sim_parms->goalfrict = 0.0f;
+ clmd->sim_parms->velocity_smooth = 0.0f;
if(!clmd->sim_parms->effector_weights)
clmd->sim_parms->effector_weights = BKE_add_effector_weights(NULL);
diff --git a/source/blender/blenkernel/intern/colortools.c b/source/blender/blenkernel/intern/colortools.c
index f3448a60b5a..48e42bc539f 100644
--- a/source/blender/blenkernel/intern/colortools.c
+++ b/source/blender/blenkernel/intern/colortools.c
@@ -58,52 +58,6 @@
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
-/* ********************************* color transforms ********************************* */
-
-/*Transform linear RGB values to nonlinear RGB values. Rec.
- 709 is ITU-R Recommendation BT. 709 (1990) ``Basic
- Parameter Values for the HDTV Standard for the Studio and
- for International Programme Exchange'', formerly CCIR Rec.
- 709.*/
-void gamma_correct_rec709(float *c, float gamma)
-{
- /* Rec. 709 gamma correction. */
- const float cc = 0.018f;
-
- if (*c < cc)
- *c *= ((1.099f * (float)powf(cc, gamma)) - 0.099f) * (1.0f/cc);
- else
- *c = (1.099f * (float)powf(*c, gamma)) - 0.099f;
-}
-
-void gamma_correct(float *c, float gamma)
-{
- *c = powf((*c), gamma);
-}
-
-float srgb_to_linearrgb(float c)
-{
- if (c < 0.04045f)
- return (c < 0.0f)? 0.0f: c*(1.0f/12.92f);
- else
- return powf((c + 0.055f)*(1.0f/1.055f), 2.4f);
-}
-
-float linearrgb_to_srgb(float c)
-{
- if (c < 0.0031308f)
- return (c < 0.0f)? 0.0f: c * 12.92f;
- else
- return 1.055f * powf(c, 1.0f/2.4f) - 0.055f;
-}
-
-/* utility function convert an RGB triplet from sRGB to linear RGB color space */
-void color_manage_linearize(float *col_to, float *col_from)
-{
- col_to[0] = srgb_to_linearrgb(col_from[0]);
- col_to[1] = srgb_to_linearrgb(col_from[1]);
- col_to[2] = srgb_to_linearrgb(col_from[2]);
-}
void floatbuf_to_srgb_byte(float *rectf, unsigned char *rectc, int x1, int x2, int y1, int y2, int w)
{
diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c
index 8d750e73459..26f9215ad08 100644
--- a/source/blender/blenkernel/intern/constraint.c
+++ b/source/blender/blenkernel/intern/constraint.c
@@ -442,15 +442,14 @@ static void contarget_get_mesh_mat (Scene *scene, Object *ob, char *substring, f
/* only continue if there's a valid DerivedMesh */
if (dm) {
MDeformVert *dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT);
- int *index = (int *)dm->getVertDataArray(dm, CD_ORIGINDEX);
int numVerts = dm->getNumVerts(dm);
int i, j, count = 0;
float co[3], nor[3];
- /* check that dvert and index are valid pointers (just in case) */
- if (dvert && index) {
+ /* check that dvert is a valid pointers (just in case) */
+ if (dvert) {
/* get the average of all verts with that are in the vertex-group */
- for (i = 0; i < numVerts; i++, index++) {
+ for (i = 0; i < numVerts; i++) {
for (j = 0; j < dvert[i].totweight; j++) {
/* does this vertex belong to nominated vertex group? */
if (dvert[i].dw[j].def_nr == dgroup) {
@@ -1194,17 +1193,17 @@ static void followpath_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr
if ((data->followflag & FOLLOWPATH_STATIC) == 0) {
/* animated position along curve depending on time */
if (cob->scene)
- curvetime= bsystem_time(cob->scene, ct->tar, ctime, 0.0) - data->offset;
+ curvetime= bsystem_time(cob->scene, ct->tar, cu->ctime, 0.0) - data->offset;
else
- curvetime= ctime - data->offset;
+ curvetime= cu->ctime - data->offset;
/* ctime is now a proper var setting of Curve which gets set by Animato like any other var that's animated,
* but this will only work if it actually is animated...
*
- * we firstly calculate the modulus of cu->ctime/cu->pathlen to clamp ctime within the 0.0 to 1.0 times pathlen
- * range, then divide this (the modulus) by pathlen to get a value between 0.0 and 1.0
+ * we divide the curvetime calculated in the previous step by the length of the path, to get a time
+ * factor, which then gets clamped to lie within 0.0 - 1.0 range
*/
- curvetime= fmod(cu->ctime, cu->pathlen) / cu->pathlen;
+ curvetime /= cu->pathlen;
CLAMP(curvetime, 0.0, 1.0);
}
else {
@@ -1214,7 +1213,7 @@ static void followpath_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr
if ( where_on_path(ct->tar, curvetime, vec, dir, NULL, &radius) ) {
if (data->followflag & FOLLOWPATH_FOLLOW) {
- vec_to_quat( quat,dir, (short) data->trackflag, (short) data->upflag);
+ vec_to_quat(quat, dir, (short)data->trackflag, (short)data->upflag);
normalize_v3(dir);
q[0]= (float)cos(0.5*vec[3]);
@@ -1224,7 +1223,7 @@ static void followpath_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr
q[3]= -x1*dir[2];
mul_qt_qtqt(quat, q, quat);
- quat_to_mat4( totmat,quat);
+ quat_to_mat4(totmat, quat);
}
if (data->followflag & FOLLOWPATH_RADIUS) {
@@ -1254,12 +1253,12 @@ static void followpath_evaluate (bConstraint *con, bConstraintOb *cob, ListBase
float size[3];
bFollowPathConstraint *data= con->data;
- /* get Object local transform (loc/rot/size) to determine transformation from path */
- //object_to_mat4(ob, obmat);
- copy_m4_m4(obmat, cob->matrix); // FIXME!!!
+ /* get Object transform (loc/rot/size) to determine transformation from path */
+ // TODO: this used to be local at one point, but is probably more useful as-is
+ copy_m4_m4(obmat, cob->matrix);
/* get scaling of object before applying constraint */
- mat4_to_size( size,cob->matrix);
+ mat4_to_size(size, cob->matrix);
/* apply targetmat - containing location on path, and rotation */
mul_serie_m4(cob->matrix, ct->matrix, obmat, NULL, NULL, NULL, NULL, NULL, NULL);
@@ -3790,7 +3789,7 @@ void relink_constraints (ListBase *conlist)
/* ......... */
/* duplicate all of the constraints in a constraint stack */
-void copy_constraints (ListBase *dst, ListBase *src)
+void copy_constraints (ListBase *dst, const ListBase *src)
{
bConstraint *con, *srccon;
diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c
index 21549f6b147..fc1ef4aede9 100644
--- a/source/blender/blenkernel/intern/context.c
+++ b/source/blender/blenkernel/intern/context.c
@@ -878,18 +878,18 @@ int CTX_data_editable_bones(const bContext *C, ListBase *list)
return ctx_data_collection_get(C, "editable_bones", list);
}
-struct bPoseChannel *CTX_data_active_pchan(const bContext *C)
+struct bPoseChannel *CTX_data_active_pose_bone(const bContext *C)
{
- return ctx_data_pointer_get(C, "active_pchan");
+ return ctx_data_pointer_get(C, "active_pose_bone");
}
-int CTX_data_selected_pchans(const bContext *C, ListBase *list)
+int CTX_data_selected_pose_bones(const bContext *C, ListBase *list)
{
- return ctx_data_collection_get(C, "selected_pchans", list);
+ return ctx_data_collection_get(C, "selected_pose_bones", list);
}
-int CTX_data_visible_pchans(const bContext *C, ListBase *list)
+int CTX_data_visible_pose_bones(const bContext *C, ListBase *list)
{
- return ctx_data_collection_get(C, "visible_pchans", list);
+ return ctx_data_collection_get(C, "visible_pose_bones", list);
}
diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c
index eba35d579bf..e0f1c1342da 100644
--- a/source/blender/blenkernel/intern/customdata.c
+++ b/source/blender/blenkernel/intern/customdata.c
@@ -32,19 +32,27 @@
*
*/
-#include "BKE_customdata.h"
-#include "BKE_utildefines.h" // CLAMP
-#include "BLI_math.h"
-#include "BLI_blenlib.h"
-#include "BLI_linklist.h"
-#include "BLI_mempool.h"
+#include <math.h>
+#include <string.h>
#include "BLI_cellalloc.h"
+#include "MEM_guardedalloc.h"
+
#include "DNA_customdata_types.h"
#include "DNA_listBase.h"
#include "DNA_meshdata_types.h"
+#include "DNA_ID.h"
-#include "MEM_guardedalloc.h"
+#include "BLI_blenlib.h"
+#include "BLI_linklist.h"
+#include "BLI_math.h"
+#include "BLI_mempool.h"
+#include "BLI_string.h"
+
+#include "BKE_customdata.h"
+#include "BKE_customdata_file.h"
+#include "BKE_global.h"
+#include "BKE_utildefines.h"
#include "bmesh.h"
@@ -100,6 +108,15 @@ typedef struct LayerTypeInfo {
void (*add)(void *data1, void *data2);
void (*dominmax)(void *data1, void *min, void *max);
void (*copyvalue)(void *source, void *dest);
+
+ /* a function to read data from a cdf file */
+ int (*read)(CDataFile *cdf, void *data, int count);
+
+ /* a function to write data to a cdf file */
+ int (*write)(CDataFile *cdf, void *data, int count);
+
+ /* a function to determine file size */
+ size_t (*filesize)(CDataFile *cdf, void *data, int count);
} LayerTypeInfo;
static void layerCopy_mdeformvert(const void *source, void *dest,
@@ -393,6 +410,7 @@ static void layerDefault_origspace_face(void *data, int count)
osf[i] = default_osf;
}
+#if 0
/* Adapted from sculptmode.c */
static void mdisps_bilinear(float out[3], float (*disps)[3], int st, float u, float v)
{
@@ -438,23 +456,28 @@ static void mdisps_bilinear(float out[3], float (*disps)[3], int st, float u, fl
add_v3_v3v3(out, d2[0], d2[1]);
}
+#endif
+
+static int mdisp_corners(MDisps *s)
+{
+ /* silly trick because we don't get it from callback */
+ return (s->totdisp % (3*3) == 0)? 3: 4;
+}
static void layerSwap_mdisps(void *data, int *ci)
{
MDisps *s = data;
float (*d)[3] = NULL;
- int x, y, st;
+ int corners, cornersize, S;
- if(!(ci[0] == 2 && ci[1] == 3 && ci[2] == 0 && ci[3] == 1)) return;
+ /* this function is untested .. */
+ corners = mdisp_corners(s);
+ cornersize = s->totdisp/corners;
d = MEM_callocN(sizeof(float) * 3 * s->totdisp, "mdisps swap");
- st = sqrt(s->totdisp);
- for(y = 0; y < st; ++y) {
- for(x = 0; x < st; ++x) {
- copy_v3_v3(d[(st - y - 1) * st + (st - x - 1)], s->disps[y * st + x]);
- }
- }
+ for(S = 0; S < corners; S++)
+ memcpy(d + cornersize*S, s->disps + cornersize*ci[S], cornersize*3*sizeof(float));
if(s->disps)
MEM_freeN(s->disps);
@@ -464,6 +487,8 @@ static void layerSwap_mdisps(void *data, int *ci)
static void layerInterp_mdisps(void **sources, float *weights, float *sub_weights,
int count, void *dest)
{
+ // XXX
+#if 0
MDisps *d = dest;
MDisps *s = NULL;
int st, stl;
@@ -508,6 +533,7 @@ static void layerInterp_mdisps(void **sources, float *weights, float *sub_weight
copy_v3_v3(d->disps[y * st + x], srcdisp);
}
}
+#endif
}
static void layerCopy_mdisps(const void *source, void *dest, int count)
@@ -542,6 +568,51 @@ static void layerFree_mdisps(void *data, int count, int size)
}
}
+static int layerRead_mdisps(CDataFile *cdf, void *data, int count)
+{
+ MDisps *d = data;
+ int i;
+
+ for(i = 0; i < count; ++i) {
+ if(!d[i].disps)
+ d[i].disps = MEM_callocN(sizeof(float)*3*d[i].totdisp, "mdisps read");
+
+ if(!cdf_read_data(cdf, d[i].totdisp*3*sizeof(float), d[i].disps)) {
+ printf("failed to read %d/%d %d\n", i, count, d[i].totdisp);
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+static int layerWrite_mdisps(CDataFile *cdf, void *data, int count)
+{
+ MDisps *d = data;
+ int i;
+
+ for(i = 0; i < count; ++i) {
+ if(!cdf_write_data(cdf, d[i].totdisp*3*sizeof(float), d[i].disps)) {
+ printf("failed to write %d/%d %d\n", i, count, d[i].totdisp);
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+static size_t layerFilesize_mdisps(CDataFile *cdf, void *data, int count)
+{
+ MDisps *d = data;
+ size_t size = 0;
+ int i;
+
+ for(i = 0; i < count; ++i)
+ size += d[i].totdisp*3*sizeof(float);
+
+ return size;
+}
+
/* --------- */
static void layerCopyValue_mloopcol(void *source, void *dest)
{
@@ -882,7 +953,9 @@ const LayerTypeInfo LAYERTYPEINFO[CD_NUMTYPES] = {
layerAdd_mloopcol, layerDoMinMax_mloopcol, layerCopyValue_mloopcol},
{sizeof(float)*3*4, "", 0, NULL, NULL, NULL, NULL, NULL, NULL},
{sizeof(MDisps), "MDisps", 1, NULL, layerCopy_mdisps,
- layerFree_mdisps, layerInterp_mdisps, layerSwap_mdisps, NULL},
+ layerFree_mdisps, layerInterp_mdisps, layerSwap_mdisps, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL,
+ layerRead_mdisps, layerWrite_mdisps, layerFilesize_mdisps},
{sizeof(MCol)*4, "MCol", 4, "WeightCol", NULL, NULL, layerInterp_mcol,
layerSwap_mcol, layerDefault_mcol},
{sizeof(MPoly), "MPoly", 1, "NGon Face", NULL, NULL, NULL, NULL, NULL},
@@ -912,7 +985,7 @@ const CustomDataMask CD_MASK_MESH =
CD_MASK_MSTICKY | CD_MASK_MDEFORMVERT | CD_MASK_MTFACE | CD_MASK_MCOL |
CD_MASK_PROP_FLT | CD_MASK_PROP_INT | CD_MASK_PROP_STR | CD_MASK_MDISPS |
CD_MASK_MLOOPUV | CD_MASK_MLOOPCOL | CD_MASK_MPOLY | CD_MASK_MLOOP |
- CD_MASK_MTEXPOLY | CD_MASK_NORMAL;
+ CD_MASK_MTEXPOLY | CD_MASK_NORMAL | CD_MASK_MDISPS;
const CustomDataMask CD_MASK_EDITMESH =
CD_MASK_MSTICKY | CD_MASK_MDEFORMVERT | CD_MASK_MTFACE | CD_MASK_MLOOPUV |
CD_MASK_MLOOPCOL | CD_MASK_MTEXPOLY | CD_MASK_SHAPE_KEYINDEX |
@@ -926,7 +999,7 @@ const CustomDataMask CD_MASK_DERIVEDMESH =
CD_MASK_WEIGHT_MCOL | CD_MASK_NORMAL;
const CustomDataMask CD_MASK_BMESH = CD_MASK_MLOOPUV | CD_MASK_MLOOPCOL | CD_MASK_MTEXPOLY |
CD_MASK_MSTICKY | CD_MASK_MDEFORMVERT | CD_MASK_PROP_FLT | CD_MASK_PROP_INT |
- CD_MASK_PROP_STR | CD_MASK_SHAPEKEY | CD_MASK_SHAPE_KEYINDEX;
+ CD_MASK_PROP_STR | CD_MASK_SHAPEKEY | CD_MASK_SHAPE_KEYINDEX | CD_MASK_MDISPS;
const CustomDataMask CD_MASK_FACECORNERS =
CD_MASK_MTFACE | CD_MASK_MCOL | CD_MASK_MTEXPOLY | CD_MASK_MLOOPUV |
CD_MASK_MLOOPCOL;
@@ -1036,6 +1109,14 @@ static void customData_free_layer__internal(CustomDataLayer *layer, int totelem)
}
}
+static void CustomData_external_free(CustomData *data)
+{
+ if(data->external) {
+ MEM_freeN(data->external);
+ data->external= NULL;
+ }
+}
+
void CustomData_free(CustomData *data, int totelem)
{
int i;
@@ -1046,6 +1127,8 @@ void CustomData_free(CustomData *data, int totelem)
if(data->layers)
MEM_freeN(data->layers);
+ CustomData_external_free(data);
+
memset(data, 0, sizeof(*data));
}
@@ -1131,7 +1214,7 @@ int CustomData_get_clone_layer_index(const CustomData *data, int type)
return -1;
}
-int CustomData_get_mask_layer_index(const CustomData *data, int type)
+int CustomData_get_stencil_layer_index(const CustomData *data, int type)
{
int i;
@@ -1175,7 +1258,7 @@ int CustomData_get_clone_layer(const CustomData *data, int type)
return -1;
}
-int CustomData_get_mask_layer(const CustomData *data, int type)
+int CustomData_get_stencil_layer(const CustomData *data, int type)
{
int i;
@@ -1213,7 +1296,7 @@ void CustomData_set_layer_clone(CustomData *data, int type, int n)
data->layers[i].active_clone = n;
}
-void CustomData_set_layer_mask(CustomData *data, int type, int n)
+void CustomData_set_layer_stencil(CustomData *data, int type, int n)
{
int i;
@@ -1250,7 +1333,7 @@ void CustomData_set_layer_clone_index(CustomData *data, int type, int n)
data->layers[i].active_clone = n-i;
}
-void CustomData_set_layer_mask_index(CustomData *data, int type, int n)
+void CustomData_set_layer_stencil_index(CustomData *data, int type, int n)
{
int i;
@@ -2599,3 +2682,236 @@ int CustomData_verify_versions(struct CustomData *data, int index)
return keeplayer;
}
+/****************************** External Files *******************************/
+
+static void customdata_external_filename(char filename[FILE_MAX], ID *id, CustomDataExternal *external)
+{
+ char *path = (id->lib)? id->lib->filename: G.sce;
+
+ BLI_strncpy(filename, external->filename, FILE_MAX);
+ BLI_convertstringcode(filename, path);
+}
+
+void CustomData_external_read(CustomData *data, ID *id, CustomDataMask mask, int totelem)
+{
+ CustomDataExternal *external= data->external;
+ CustomDataLayer *layer;
+ CDataFile *cdf;
+ CDataFileLayer *blay;
+ char filename[FILE_MAX];
+ const LayerTypeInfo *typeInfo;
+ int i, update = 0;
+
+ if(!external)
+ return;
+
+ for(i=0; i<data->totlayer; i++) {
+ layer = &data->layers[i];
+ typeInfo = layerType_getInfo(layer->type);
+
+ if(!(mask & (1<<layer->type)));
+ else if(layer->flag & CD_FLAG_IN_MEMORY);
+ else if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->read)
+ update= 1;
+ }
+
+ if(!update)
+ return;
+
+ customdata_external_filename(filename, id, external);
+
+ cdf= cdf_create(CDF_TYPE_MESH);
+ if(!cdf_read_open(cdf, filename))
+ return;
+
+ for(i=0; i<data->totlayer; i++) {
+ layer = &data->layers[i];
+ typeInfo = layerType_getInfo(layer->type);
+
+ if(!(mask & (1<<layer->type)));
+ else if(layer->flag & CD_FLAG_IN_MEMORY);
+ else if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->read) {
+ blay= cdf_layer_find(cdf, layer->type, layer->name);
+
+ if(blay) {
+ if(cdf_read_layer(cdf, blay)) {
+ if(typeInfo->read(cdf, layer->data, totelem));
+ else break;
+ layer->flag |= CD_FLAG_IN_MEMORY;
+ }
+ else
+ break;
+ }
+ }
+ }
+
+ cdf_read_close(cdf);
+ cdf_free(cdf);
+}
+
+void CustomData_external_write(CustomData *data, ID *id, CustomDataMask mask, int totelem, int free)
+{
+ CustomDataExternal *external= data->external;
+ CustomDataLayer *layer;
+ CDataFile *cdf;
+ CDataFileLayer *blay;
+ const LayerTypeInfo *typeInfo;
+ int i, update = 0;
+ char filename[FILE_MAX];
+
+ if(!external)
+ return;
+
+ for(i=0; i<data->totlayer; i++) {
+ layer = &data->layers[i];
+ typeInfo = layerType_getInfo(layer->type);
+
+ if(!(mask & (1<<layer->type)));
+ else if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->write)
+ update= 1;
+ }
+
+ if(!update)
+ return;
+
+ CustomData_external_read(data, id, mask, totelem);
+
+ cdf= cdf_create(CDF_TYPE_MESH);
+
+ for(i=0; i<data->totlayer; i++) {
+ layer = &data->layers[i];
+ typeInfo = layerType_getInfo(layer->type);
+
+ if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->filesize)
+ cdf_layer_add(cdf, layer->type, layer->name,
+ typeInfo->filesize(cdf, layer->data, totelem));
+ }
+
+ customdata_external_filename(filename, id, external);
+ if(!cdf_write_open(cdf, filename))
+ return;
+
+ for(i=0; i<data->totlayer; i++) {
+ layer = &data->layers[i];
+ typeInfo = layerType_getInfo(layer->type);
+
+ if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->write) {
+ blay= cdf_layer_find(cdf, layer->type, layer->name);
+
+ if(cdf_write_layer(cdf, blay)) {
+ if(typeInfo->write(cdf, layer->data, totelem));
+ else break;
+ }
+ else
+ break;
+ }
+ }
+
+ if(i != data->totlayer) {
+ cdf_free(cdf);
+ return;
+ }
+
+ for(i=0; i<data->totlayer; i++) {
+ layer = &data->layers[i];
+ typeInfo = layerType_getInfo(layer->type);
+
+ if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->write) {
+ if(free) {
+ if(typeInfo->free)
+ typeInfo->free(layer->data, totelem, typeInfo->size);
+ layer->flag &= ~CD_FLAG_IN_MEMORY;
+ }
+ }
+ }
+
+ cdf_write_close(cdf);
+ cdf_free(cdf);
+}
+
+void CustomData_external_add(CustomData *data, ID *id, int type, int totelem, const char *filename)
+{
+ CustomDataExternal *external= data->external;
+ CustomDataLayer *layer;
+ int layer_index;
+
+ layer_index = CustomData_get_active_layer_index(data, type);
+ if(layer_index < 0) return;
+
+ layer = &data->layers[layer_index];
+
+ if(layer->flag & CD_FLAG_EXTERNAL)
+ return;
+
+ if(!external) {
+ external= MEM_callocN(sizeof(CustomDataExternal), "CustomDataExternal");
+ BLI_strncpy(external->filename, filename, sizeof(external->filename));
+ data->external= external;
+ }
+
+ layer->flag |= CD_FLAG_EXTERNAL|CD_FLAG_IN_MEMORY;
+}
+
+void CustomData_external_remove(CustomData *data, ID *id, int type, int totelem)
+{
+ CustomDataExternal *external= data->external;
+ CustomDataLayer *layer;
+ //char filename[FILE_MAX];
+ int layer_index; // i, remove_file;
+
+ layer_index = CustomData_get_active_layer_index(data, type);
+ if(layer_index < 0) return;
+
+ layer = &data->layers[layer_index];
+
+ if(!external)
+ return;
+
+ if(layer->flag & CD_FLAG_EXTERNAL) {
+ if(!(layer->flag & CD_FLAG_IN_MEMORY))
+ CustomData_external_read(data, id, (1<<layer->type), totelem);
+
+ layer->flag &= ~CD_FLAG_EXTERNAL;
+
+#if 0
+ remove_file= 1;
+ for(i=0; i<data->totlayer; i++)
+ if(data->layers[i].flag & CD_FLAG_EXTERNAL)
+ remove_file= 0;
+
+ if(remove_file) {
+ customdata_external_filename(filename, id, external);
+ cdf_remove(filename);
+ CustomData_external_free(data);
+ }
+#endif
+ }
+}
+
+int CustomData_external_test(CustomData *data, int type)
+{
+ CustomDataLayer *layer;
+ int layer_index;
+
+ layer_index = CustomData_get_active_layer_index(data, type);
+ if(layer_index < 0) return 0;
+
+ layer = &data->layers[layer_index];
+ return (layer->flag & CD_FLAG_EXTERNAL);
+}
+
+#if 0
+void CustomData_external_remove_object(CustomData *data, ID *id)
+{
+ CustomDataExternal *external= data->external;
+ char filename[FILE_MAX];
+
+ if(!external)
+ return;
+
+ customdata_external_filename(filename, id, external);
+ cdf_remove(filename);
+ CustomData_external_free(data);
+}
+#endif
+
diff --git a/source/blender/blenkernel/intern/customdata_file.c b/source/blender/blenkernel/intern/customdata_file.c
new file mode 100644
index 00000000000..b58ada878de
--- /dev/null
+++ b/source/blender/blenkernel/intern/customdata_file.c
@@ -0,0 +1,446 @@
+/*
+ * $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.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "MEM_guardedalloc.h"
+
+#include "BLI_fileops.h"
+#include "BLI_string.h"
+
+#include "BKE_customdata_file.h"
+#include "BKE_global.h"
+#include "BKE_utildefines.h"
+
+/************************* File Format Definitions ***************************/
+
+#define CDF_ENDIAN_LITTLE 0
+#define CDF_ENDIAN_BIG 1
+
+#define CDF_DATA_FLOAT 0
+
+typedef struct CDataFileHeader {
+ char ID[4]; /* "BCDF" */
+ char endian; /* little, big */
+ char version; /* non-compatible versions */
+ char subversion; /* compatible sub versions */
+ char pad; /* padding */
+
+ int structbytes; /* size of this struct in bytes */
+ int type; /* image, mesh */
+ int totlayer; /* number of layers in the file */
+} CDataFileHeader;
+
+typedef struct CDataFileImageHeader {
+ int structbytes; /* size of this struct in bytes */
+ int width; /* image width */
+ int height; /* image height */
+ int tile_size; /* tile size (required power of 2) */
+} CDataFileImageHeader;
+
+typedef struct CDataFileMeshHeader {
+ int structbytes; /* size of this struct in bytes */
+} CDataFileMeshHeader;
+
+struct CDataFileLayer {
+ int structbytes; /* size of this struct in bytes */
+ int datatype; /* only float for now */
+ uint64_t datasize; /* size of data in layer */
+ int type; /* layer type */
+ char name[CDF_LAYER_NAME_MAX]; /* layer name */
+};
+
+/**************************** Other Definitions ******************************/
+
+#define CDF_VERSION 0
+#define CDF_SUBVERSION 0
+#define CDF_TILE_SIZE 64
+
+struct CDataFile {
+ int type;
+
+ CDataFileHeader header;
+ union {
+ CDataFileImageHeader image;
+ CDataFileMeshHeader mesh;
+ } btype;
+
+ CDataFileLayer *layer;
+ int totlayer;
+
+ FILE *readf;
+ FILE *writef;
+ int switchendian;
+ size_t dataoffset;
+};
+
+/********************************* Create/Free *******************************/
+
+static int cdf_endian(void)
+{
+ if(ENDIAN_ORDER == L_ENDIAN)
+ return CDF_ENDIAN_LITTLE;
+ else
+ return CDF_ENDIAN_BIG;
+}
+
+/*static int cdf_data_type_size(int datatype)
+{
+ if(datatype == CDF_DATA_FLOAT)
+ return sizeof(float);
+
+ return 0;
+}*/
+
+CDataFile *cdf_create(int type)
+{
+ CDataFile *cdf= MEM_callocN(sizeof(CDataFile), "CDataFile");
+
+ cdf->type= type;
+
+ return cdf;
+}
+
+void cdf_free(CDataFile *cdf)
+{
+ cdf_read_close(cdf);
+ cdf_write_close(cdf);
+
+ if(cdf->layer)
+ MEM_freeN(cdf->layer);
+
+ MEM_freeN(cdf);
+}
+
+/********************************* Read/Write ********************************/
+
+static int cdf_read_header(CDataFile *cdf)
+{
+ CDataFileHeader *header;
+ CDataFileImageHeader *image;
+ CDataFileMeshHeader *mesh;
+ CDataFileLayer *layer;
+ FILE *f= cdf->readf;
+ size_t offset = 0;
+ int a;
+
+ header= &cdf->header;
+
+ if(!fread(header, sizeof(CDataFileHeader), 1, cdf->readf))
+ return 0;
+
+ if(memcmp(header->ID, "BCDF", sizeof(header->ID)) != 0)
+ return 0;
+ if(header->version > CDF_VERSION)
+ return 0;
+
+ cdf->switchendian= header->endian != cdf_endian();
+ header->endian= cdf_endian();
+
+ if(cdf->switchendian) {
+ SWITCH_INT(header->type);
+ SWITCH_INT(header->totlayer);
+ SWITCH_INT(header->structbytes);
+ }
+
+ if(!ELEM(header->type, CDF_TYPE_IMAGE, CDF_TYPE_MESH))
+ return 0;
+
+ offset += header->structbytes;
+ header->structbytes= sizeof(CDataFileHeader);
+
+ if(fseek(f, offset, SEEK_SET) != 0)
+ return 0;
+
+ if(header->type == CDF_TYPE_IMAGE) {
+ image= &cdf->btype.image;
+ if(!fread(image, sizeof(CDataFileImageHeader), 1, f))
+ return 0;
+
+ if(cdf->switchendian) {
+ SWITCH_INT(image->width);
+ SWITCH_INT(image->height);
+ SWITCH_INT(image->tile_size);
+ SWITCH_INT(image->structbytes);
+ }
+
+ offset += image->structbytes;
+ image->structbytes= sizeof(CDataFileImageHeader);
+ }
+ else if(header->type == CDF_TYPE_MESH) {
+ mesh= &cdf->btype.mesh;
+ if(!fread(mesh, sizeof(CDataFileMeshHeader), 1, f))
+ return 0;
+
+ if(cdf->switchendian)
+ SWITCH_INT(mesh->structbytes);
+
+ offset += mesh->structbytes;
+ mesh->structbytes= sizeof(CDataFileMeshHeader);
+ }
+
+ if(fseek(f, offset, SEEK_SET) != 0)
+ return 0;
+
+ cdf->layer= MEM_callocN(sizeof(CDataFileLayer)*header->totlayer, "CDataFileLayer");
+ cdf->totlayer= header->totlayer;
+
+ for(a=0; a<header->totlayer; a++) {
+ layer= &cdf->layer[a];
+
+ if(!fread(layer, sizeof(CDataFileLayer), 1, f))
+ return 0;
+
+ if(cdf->switchendian) {
+ SWITCH_INT(layer->type);
+ SWITCH_INT(layer->datatype);
+ SWITCH_INT64(layer->datasize);
+ SWITCH_INT(layer->structbytes);
+ }
+
+ if(layer->datatype != CDF_DATA_FLOAT)
+ return 0;
+
+ offset += layer->structbytes;
+ layer->structbytes= sizeof(CDataFileLayer);
+
+ if(fseek(f, offset, SEEK_SET) != 0)
+ return 0;
+ }
+
+ cdf->dataoffset= offset;
+
+ return 1;
+}
+
+static int cdf_write_header(CDataFile *cdf)
+{
+ CDataFileHeader *header;
+ CDataFileImageHeader *image;
+ CDataFileMeshHeader *mesh;
+ CDataFileLayer *layer;
+ FILE *f= cdf->writef;
+ int a;
+
+ header= &cdf->header;
+
+ if(!fwrite(header, sizeof(CDataFileHeader), 1, f))
+ return 0;
+
+ if(header->type == CDF_TYPE_IMAGE) {
+ image= &cdf->btype.image;
+ if(!fwrite(image, sizeof(CDataFileImageHeader), 1, f))
+ return 0;
+ }
+ else if(header->type == CDF_TYPE_MESH) {
+ mesh= &cdf->btype.mesh;
+ if(!fwrite(mesh, sizeof(CDataFileMeshHeader), 1, f))
+ return 0;
+ }
+
+ for(a=0; a<header->totlayer; a++) {
+ layer= &cdf->layer[a];
+
+ if(!fwrite(layer, sizeof(CDataFileLayer), 1, f))
+ return 0;
+ }
+
+ return 1;
+}
+
+int cdf_read_open(CDataFile *cdf, char *filename)
+{
+ FILE *f;
+
+ f= fopen(filename, "rb");
+ if(!f)
+ return 0;
+
+ cdf->readf= f;
+
+ if(!cdf_read_header(cdf)) {
+ cdf_read_close(cdf);
+ return 0;
+ }
+
+ if(cdf->header.type != cdf->type) {
+ cdf_read_close(cdf);
+ return 0;
+ }
+
+ return 1;
+}
+
+int cdf_read_layer(CDataFile *cdf, CDataFileLayer *blay)
+{
+ size_t offset;
+ int a;
+
+ /* seek to right location in file */
+ offset= cdf->dataoffset;
+ for(a=0; a<cdf->totlayer; a++) {
+ if(&cdf->layer[a] == blay)
+ break;
+ else
+ offset += cdf->layer[a].datasize;
+ }
+
+ return (fseek(cdf->readf, offset, SEEK_SET) == 0);
+}
+
+int cdf_read_data(CDataFile *cdf, int size, void *data)
+{
+ float *fdata;
+ int a;
+
+ /* read data */
+ if(!fread(data, size, 1, cdf->readf))
+ return 0;
+
+ /* switch endian if necessary */
+ if(cdf->switchendian) {
+ fdata= data;
+
+ for(a=0; a<size/sizeof(float); a++)
+ SWITCH_INT(fdata[a])
+ }
+
+ return 1;
+}
+
+void cdf_read_close(CDataFile *cdf)
+{
+ if(cdf->readf) {
+ fclose(cdf->readf);
+ cdf->readf= NULL;
+ }
+}
+
+int cdf_write_open(CDataFile *cdf, char *filename)
+{
+ CDataFileHeader *header;
+ CDataFileImageHeader *image;
+ CDataFileMeshHeader *mesh;
+ FILE *f;
+
+ f= fopen(filename, "wb");
+ if(!f)
+ return 0;
+
+ cdf->writef= f;
+
+ /* fill header */
+ header= &cdf->header;
+ strcpy(header->ID, "BCDF");
+ header->endian= cdf_endian();
+ header->version= CDF_VERSION;
+ header->subversion= CDF_SUBVERSION;
+
+ header->structbytes= sizeof(CDataFileHeader);
+ header->type= cdf->type;
+ header->totlayer= cdf->totlayer;
+
+ if(cdf->type == CDF_TYPE_IMAGE) {
+ /* fill image header */
+ image= &cdf->btype.image;
+ image->structbytes= sizeof(CDataFileImageHeader);
+ image->tile_size= CDF_TILE_SIZE;
+ }
+ else if(cdf->type == CDF_TYPE_MESH) {
+ /* fill mesh header */
+ mesh= &cdf->btype.mesh;
+ mesh->structbytes= sizeof(CDataFileMeshHeader);
+ }
+
+ cdf_write_header(cdf);
+
+ return 1;
+}
+
+int cdf_write_layer(CDataFile *cdf, CDataFileLayer *blay)
+{
+ return 1;
+}
+
+int cdf_write_data(CDataFile *cdf, int size, void *data)
+{
+ /* write data */
+ if(!fwrite(data, size, 1, cdf->writef))
+ return 0;
+
+ return 1;
+}
+
+void cdf_write_close(CDataFile *cdf)
+{
+ if(cdf->writef) {
+ fclose(cdf->writef);
+ cdf->writef= NULL;
+ }
+}
+
+void cdf_remove(char *filename)
+{
+ BLI_delete(filename, 0, 0);
+}
+
+/********************************** Layers ***********************************/
+
+CDataFileLayer *cdf_layer_find(CDataFile *cdf, int type, char *name)
+{
+ CDataFileLayer *layer;
+ int a;
+
+ for(a=0; a<cdf->totlayer; a++) {
+ layer= &cdf->layer[a];
+
+ if(layer->type == type && strcmp(layer->name, name) == 0)
+ return layer;
+ }
+
+ return NULL;
+}
+
+CDataFileLayer *cdf_layer_add(CDataFile *cdf, int type, char *name, size_t datasize)
+{
+ CDataFileLayer *newlayer, *layer;
+
+ /* expand array */
+ newlayer= MEM_callocN(sizeof(CDataFileLayer)*(cdf->totlayer+1), "CDataFileLayer");
+ memcpy(newlayer, cdf->layer, sizeof(CDataFileLayer)*cdf->totlayer);
+ cdf->layer= newlayer;
+
+ cdf->totlayer++;
+
+ /* fill in new layer */
+ layer= &cdf->layer[cdf->totlayer-1];
+ layer->structbytes= sizeof(CDataFileLayer);
+ layer->datatype= CDF_DATA_FLOAT;
+ layer->datasize= datasize;
+ layer->type= type;
+ BLI_strncpy(layer->name, name, CDF_LAYER_NAME_MAX);
+
+ return layer;
+}
+
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c
index 302b81f2a04..8535bfc6d0c 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -2155,7 +2155,7 @@ static void dag_current_scene_layers(Main *bmain, Scene **sce, unsigned int *lay
for(win=wm->windows.first; win; win=win->next) {
if(win->screen) {
if(!*sce) *sce= win->screen->scene;
- *lay |= BKE_screen_visible_layers(win->screen);
+ *lay |= BKE_screen_visible_layers(win->screen, win->screen->scene);
}
}
}
diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c
index 3d8fbe248bf..c694422124a 100644
--- a/source/blender/blenkernel/intern/displist.c
+++ b/source/blender/blenkernel/intern/displist.c
@@ -1225,7 +1225,7 @@ static ModifierData *curve_get_tesselate_point(Object *ob, int forRender, int ed
ModifierTypeInfo *mti = modifierType_getInfo(md->type);
if ((md->mode & required_mode) != required_mode) continue;
- if (mti->isDisabled && mti->isDisabled(md)) continue;
+ if (mti->isDisabled && mti->isDisabled(md, forRender)) continue;
if (ELEM3(md->type, eModifierType_Hook, eModifierType_Softbody, eModifierType_MeshDeform)) {
preTesselatePoint = md;
@@ -1275,7 +1275,7 @@ static void curve_calc_modifiers_pre(Scene *scene, Object *ob, int forRender, fl
md->scene= scene;
if ((md->mode & required_mode) != required_mode) continue;
- if (mti->isDisabled && mti->isDisabled(md)) continue;
+ if (mti->isDisabled && mti->isDisabled(md, forRender)) continue;
if (mti->type!=eModifierTypeType_OnlyDeform) continue;
if (!deformedVerts) {
@@ -1330,7 +1330,7 @@ static void curve_calc_modifiers_post(Scene *scene, Object *ob, ListBase *dispba
md->scene= scene;
if ((md->mode & required_mode) != required_mode) continue;
- if (mti->isDisabled && mti->isDisabled(md)) continue;
+ if (mti->isDisabled && mti->isDisabled(md, forRender)) continue;
if (mti->type!=eModifierTypeType_OnlyDeform && mti->type!=eModifierTypeType_DeformOrConstruct) continue;
/* need to put all verts in 1 block for curve deform */
diff --git a/source/blender/blenkernel/intern/editderivedbmesh.c b/source/blender/blenkernel/intern/editderivedbmesh.c
index 6c9957e3ab3..b23322299b5 100644
--- a/source/blender/blenkernel/intern/editderivedbmesh.c
+++ b/source/blender/blenkernel/intern/editderivedbmesh.c
@@ -268,8 +268,8 @@ void BMEdit_UpdateLinkedCustomData(BMEditMesh *em)
act = CustomData_get_clone_layer(&bm->pdata, CD_MTEXPOLY);
CustomData_set_layer_clone(&bm->ldata, CD_MLOOPUV, act);
- act = CustomData_get_mask_layer(&bm->pdata, CD_MTEXPOLY);
- CustomData_set_layer_mask(&bm->ldata, CD_MLOOPUV, act);
+ act = CustomData_get_stencil_layer(&bm->pdata, CD_MTEXPOLY);
+ CustomData_set_layer_stencil(&bm->ldata, CD_MLOOPUV, act);
}
}
diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c
index d8d0e49dcb4..0f4d09f82d3 100644
--- a/source/blender/blenkernel/intern/effect.c
+++ b/source/blender/blenkernel/intern/effect.c
@@ -128,7 +128,6 @@ PartDeflect *object_add_collision_fields(int type)
pd->seed = ((unsigned int)(ceil(PIL_check_seconds_timer()))+1) % 128;
pd->f_strength = 1.0f;
pd->f_damp = 1.0f;
- pd->f_size = 1.0f;
/* set sensible defaults based on type */
switch(type) {
@@ -139,6 +138,9 @@ PartDeflect *object_add_collision_fields(int type)
pd->shape = PFIELD_SHAPE_PLANE;
pd->f_flow = 1.0f; /* realistic wind behavior */
break;
+ case PFIELD_TEXTURE:
+ pd->f_size = 1.0f;
+ break;
}
pd->flag = PFIELD_DO_LOCATION|PFIELD_DO_ROTATION;
@@ -693,6 +695,10 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin
sub_v3_v3v3(efd->vec_to_point, point->loc, efd->loc);
efd->distance = len_v3(efd->vec_to_point);
+ /* rest length for harmonic effector, will have to see later if this could be extended to other effectors */
+ if(eff->pd->forcefield == PFIELD_HARMONIC && eff->pd->f_size)
+ mul_v3_fl(efd->vec_to_point, (efd->distance-eff->pd->f_size)/efd->distance);
+
if(eff->flag & PE_USE_NORMAL_DATA) {
VECCOPY(efd->vec_to_point2, efd->vec_to_point);
VECCOPY(efd->nor2, efd->nor);
@@ -735,7 +741,7 @@ static void get_effector_tot(EffectorCache *eff, EffectorData *efd, EffectedPoin
*/
efd->charge = eff->pd->f_strength;
}
- else if(eff->pd->forcefield == PFIELD_HARMONIC) {
+ else if(eff->pd->forcefield == PFIELD_HARMONIC && (eff->pd->flag & PFIELD_MULTIPLE_SPRINGS)==0) {
/* every particle is mapped to only one harmonic effector particle */
*p= point->index % eff->psys->totpart;
*tot= *p + 1;
diff --git a/source/blender/blenkernel/intern/exotic.c b/source/blender/blenkernel/intern/exotic.c
index 6ea1acaf645..c83a0443356 100644
--- a/source/blender/blenkernel/intern/exotic.c
+++ b/source/blender/blenkernel/intern/exotic.c
@@ -4050,7 +4050,7 @@ static void dxf_read(Scene *scene, char *filename)
ob->type= OB_MESH;
- ob->dt= OB_SHADED;
+ ob->dt= OB_TEXTURE;
ob->trackflag= OB_POSY;
ob->upflag= OB_POSZ;
diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c
index c451168a005..d5e033652a8 100644
--- a/source/blender/blenkernel/intern/fcurve.c
+++ b/source/blender/blenkernel/intern/fcurve.c
@@ -167,53 +167,42 @@ void copy_fcurves (ListBase *dst, ListBase *src)
}
}
-/* ---------------------- Relink --------------------------- */
-
-#if 0
-/* uses id->newid to match pointers with other copied data
- * - called after single-user or other such
- */
- if (icu->driver)
- ID_NEW(icu->driver->ob);
-#endif
-
/* --------------------- Finding -------------------------- */
+/* high level function to get an fcurve from C without having the rna */
FCurve *id_data_find_fcurve(ID *id, void *data, StructRNA *type, char *prop_name, int index)
{
/* anim vars */
- AnimData *adt;
+ AnimData *adt= BKE_animdata_from_id(id);
FCurve *fcu= NULL;
/* rna vars */
PointerRNA ptr;
PropertyRNA *prop;
char *path;
-
- adt= BKE_animdata_from_id(id);
-
+
/* only use the current action ??? */
- if(adt==NULL || adt->action==NULL)
+ if (ELEM(NULL, adt, adt->action))
return NULL;
-
+
RNA_pointer_create(id, type, data, &ptr);
prop = RNA_struct_find_property(&ptr, prop_name);
-
- if(prop) {
+
+ if (prop) {
path= RNA_path_from_ID_to_property(&ptr, prop);
-
- if(path) {
+
+ if (path) {
/* animation takes priority over drivers */
- if(adt->action && adt->action->curves.first)
+ if ((adt->action) && (adt->action->curves.first))
fcu= list_find_fcurve(&adt->action->curves, path, index);
-
+
/* if not animated, check if driven */
#if 0
- if(!fcu && (adt->drivers.first)) {
+ if ((fcu == NULL) && (adt->drivers.first)) {
fcu= list_find_fcurve(&adt->drivers, path, but->rnaindex);
}
#endif
-
+
MEM_freeN(path);
}
}
@@ -245,6 +234,54 @@ FCurve *list_find_fcurve (ListBase *list, const char rna_path[], const int array
return NULL;
}
+/* Get list of LinkData's containing pointers to the F-Curves which control the types of data indicated
+ * Lists...
+ * - dst: list of LinkData's matching the criteria returned.
+ * List must be freed after use, and is assumed to be empty when passed.
+ * - src: list of F-Curves to search through
+ * Filters...
+ * - dataPrefix: i.e. 'pose.bones[' or 'nodes['
+ * - dataName: name of entity within "" immediately following the prefix
+ */
+int list_find_data_fcurves (ListBase *dst, ListBase *src, const char *dataPrefix, const char *dataName)
+{
+ FCurve *fcu;
+ int matches = 0;
+
+ /* sanity checks */
+ if (ELEM4(NULL, dst, src, dataPrefix, dataName))
+ return 0;
+ else if ((dataPrefix[0] == 0) || (dataName[0] == 0))
+ return 0;
+
+ /* search each F-Curve one by one */
+ for (fcu= src->first; fcu; fcu= fcu->next) {
+ /* check if quoted string matches the path */
+ if ((fcu->rna_path) && strstr(fcu->rna_path, dataPrefix)) {
+ char *quotedName= BLI_getQuotedStr(fcu->rna_path, dataPrefix);
+
+ if (quotedName) {
+ /* check if the quoted name matches the required name */
+ if (strcmp(quotedName, dataName) == 0) {
+ LinkData *ld= MEM_callocN(sizeof(LinkData), "list_find_data_fcurves");
+
+ ld->data= fcu;
+ BLI_addtail(dst, ld);
+
+ matches++;
+ }
+
+ /* always free the quoted string, since it needs freeing */
+ MEM_freeN(quotedName);
+ }
+ }
+ }
+
+ /* return the number of matches */
+ return matches;
+}
+
+
/* threshold for binary-searching keyframes - threshold here should be good enough for now, but should become userpref */
#define BEZT_BINARYSEARCH_THRESH 0.00001f
@@ -731,6 +768,9 @@ DriverTarget *driver_add_new_target (ChannelDriver *driver)
dtar= MEM_callocN(sizeof(DriverTarget), "DriverTarget");
BLI_addtail(&driver->targets, dtar);
+ /* make the default ID-type ID_OB, since most driver targets refer to objects */
+ dtar->idtype= ID_OB;
+
/* give the target a 'unique' name */
strcpy(dtar->name, "var");
BLI_uniquename(&driver->targets, dtar, "var", '_', offsetof(DriverTarget, name), 64);
@@ -755,7 +795,12 @@ void fcurve_free_driver(FCurve *fcu)
dtarn= dtar->next;
driver_free_target(driver, dtar);
}
-
+
+#ifndef DISABLE_PYTHON
+ if(driver->expr_comp)
+ BPY_DECREF(driver->expr_comp);
+#endif
+
/* free driver itself, then set F-Curve's point to this to NULL (as the curve may still be used) */
MEM_freeN(driver);
fcu->driver= NULL;
@@ -819,7 +864,11 @@ float driver_get_target_value (ChannelDriver *driver, DriverTarget *dtar)
}
/* get property to read from, and get value as appropriate */
- if (RNA_path_resolve(&id_ptr, path, &ptr, &prop)) {
+ if (RNA_path_resolve_full(&id_ptr, path, &ptr, &prop, &index)) {
+ /* for now, if there is no valid index, fall back to the array-index specified separately */
+ if (index == -1)
+ index= dtar->array_index;
+
switch (RNA_property_type(prop)) {
case PROP_BOOLEAN:
if (RNA_property_array_length(&ptr, prop))
@@ -907,6 +956,7 @@ static float evaluate_driver (ChannelDriver *driver, float evaltime)
// TODO: the flags for individual targets need to be used too for more fine-grained support...
switch (driver->type) {
case DRIVER_TYPE_AVERAGE: /* average values of driver targets */
+ case DRIVER_TYPE_SUM: /* sum values of driver targets */
{
/* check how many targets there are first (i.e. just one?) */
if (driver->targets.first == driver->targets.last) {
@@ -921,16 +971,19 @@ static float evaluate_driver (ChannelDriver *driver, float evaltime)
/* loop through targets, adding (hopefully we don't get any overflow!) */
for (dtar= driver->targets.first; dtar; dtar=dtar->next) {
- value += driver_get_target_value(driver, dtar);
+ value += driver_get_target_value(driver, dtar);
tot++;
}
/* return the average of these */
- return (value / (float)tot);
+ if (driver->type == DRIVER_TYPE_AVERAGE)
+ return (value / (float)tot);
+ else
+ return value;
+
}
}
break;
-
case DRIVER_TYPE_PYTHON: /* expression */
{
#ifndef DISABLE_PYTHON
diff --git a/source/blender/blenkernel/intern/fmodifier.c b/source/blender/blenkernel/intern/fmodifier.c
index d4dde0fed5d..3be9d0133fe 100644
--- a/source/blender/blenkernel/intern/fmodifier.c
+++ b/source/blender/blenkernel/intern/fmodifier.c
@@ -53,8 +53,6 @@
#include "RNA_access.h"
#include "RNA_types.h"
-#include "AUD_C-API.h"
-
#ifndef DISABLE_PYTHON
#include "BPY_extern.h" /* for BPY_pydriver_eval() */
#endif
@@ -873,96 +871,6 @@ static FModifierTypeInfo FMI_LIMITS = {
fcm_limits_evaluate /* evaluate */
};
-/* Sound F-Curve Modifier --------------------------- */
-
-static void fcm_sound_new_data (void *mdata)
-{
- FMod_Sound *data= (FMod_Sound *)mdata;
-
- /* defaults */
- data->strength= 1.0f;
- data->delay = 0.0f;
- data->modification = FCM_SOUND_MODIF_REPLACE;
- data->sound = NULL;
-}
-
-static void fcm_sound_evaluate (FCurve *fcu, FModifier *fcm, float *cvalue, float evaltime)
-{
- FMod_Sound *data= (FMod_Sound *)fcm->data;
- float amplitude;
-
- AUD_Device *device;
- AUD_Sound *limiter;
- AUD_SoundInfo info;
-
- // XXX fixme - need to get in terms of time instead of frames to be really useful
-// evaltime = FRA2TIME(evaltime);
- evaltime -= data->delay;
-
- /* sound-system cannot cope with negative times/frames */
- if (evaltime < 0.0f)
- return;
- /* must have a sound with a cache so that this can be used */
- if (ELEM(NULL, data->sound, data->sound->cache))
- return;
-
- /* examine this snippet of the wave, and extract the amplitude from it */
- info = AUD_getInfo(data->sound->cache);
- info.specs.channels = 1;
- info.specs.format = AUD_FORMAT_FLOAT32;
- device = AUD_openReadDevice(info.specs);
- limiter = AUD_limitSound(data->sound->cache, evaltime, evaltime + 1);
- AUD_playDevice(device, limiter);
- AUD_unload(limiter);
- AUD_readDevice(device, (sample_t*)&amplitude, 1);
- AUD_closeReadDevice(device);
-
- /* combine the amplitude with existing motion data */
- switch (data->modification) {
- case FCM_SOUND_MODIF_ADD:
- *cvalue= *cvalue + amplitude * data->strength;
- break;
- case FCM_SOUND_MODIF_SUBTRACT:
- *cvalue= *cvalue - amplitude * data->strength;
- break;
- case FCM_SOUND_MODIF_MULTIPLY:
- *cvalue= *cvalue * amplitude * data->strength;
- break;
- case FCM_SOUND_MODIF_REPLACE:
- default:
- *cvalue= *cvalue + amplitude * data->strength;
- break;
- }
-}
-
-static float fcm_sound_time (FCurve *fcu, FModifier *fcm, float cvalue, float evaltime)
-{
- FMod_Sound *data= (FMod_Sound *)fcm->data;
-
- /* check for the time delay */
-// evaltime = FRA2TIME(evaltime);
- if(evaltime < data->delay)
- return data->delay;
-
- /* modifier doesn't change time */
- return evaltime;
-}
-
-static FModifierTypeInfo FMI_SOUND = {
- FMODIFIER_TYPE_SOUND, /* type */
- sizeof(FMod_Sound), /* size */
- FMI_TYPE_REPLACE_VALUES, /* action type */
- 0, /* requirements */
- "Sound", /* name */
- "FMod_Sound", /* struct name */
- NULL, /* free data */
- NULL, /* copy data */
- fcm_sound_new_data, /* new data */
- NULL, /* verify */
- fcm_sound_time, /* evaluate time */
- fcm_sound_evaluate /* evaluate */
-};
-
/* F-Curve Modifier API --------------------------- */
/* All of the F-Curve Modifier api functions use FModifierTypeInfo structs to carry out
* and operations that involve F-Curve modifier specific code.
@@ -984,7 +892,6 @@ static void fmods_init_typeinfo ()
fmodifiersTypeInfo[6]= NULL/*&FMI_FILTER*/; /* Filter F-Curve Modifier */ // XXX unimplemented
fmodifiersTypeInfo[7]= &FMI_PYTHON; /* Custom Python F-Curve Modifier */
fmodifiersTypeInfo[8]= &FMI_LIMITS; /* Limits F-Curve Modifier */
- fmodifiersTypeInfo[9]= &FMI_SOUND; /* Sound F-Curve Modifier */
}
/* This function should be used for getting the appropriate type-info when only
diff --git a/source/blender/blenkernel/intern/font.c b/source/blender/blenkernel/intern/font.c
index e2dccf02b40..1a63f97e310 100644
--- a/source/blender/blenkernel/intern/font.c
+++ b/source/blender/blenkernel/intern/font.c
@@ -705,10 +705,10 @@ struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode)
/* We assume the worst case: 1 character per line (is freed at end anyway) */
- linedata= MEM_mallocN(sizeof(float)*(slen+2),"buildtext2");
- linedata2= MEM_mallocN(sizeof(float)*(slen+2),"buildtext3");
- linedata3= MEM_callocN(sizeof(float)*(slen+2),"buildtext4");
- linedata4= MEM_callocN(sizeof(float)*(slen+2),"buildtext5");
+ linedata= MEM_mallocN(sizeof(float)*(slen*2 + 1),"buildtext2");
+ linedata2= MEM_mallocN(sizeof(float)*(slen*2 + 1),"buildtext3");
+ linedata3= MEM_callocN(sizeof(float)*(slen*2 + 1),"buildtext4");
+ linedata4= MEM_callocN(sizeof(float)*(slen*2 + 1),"buildtext5");
linedist= cu->linedist;
diff --git a/source/blender/blenkernel/intern/group.c b/source/blender/blenkernel/intern/group.c
index 3ab02a576d0..f35a0a96bb4 100644
--- a/source/blender/blenkernel/intern/group.c
+++ b/source/blender/blenkernel/intern/group.c
@@ -217,8 +217,8 @@ static int rem_from_group_internal(Group *group, Object *ob)
int rem_from_group(Group *group, Object *object, Scene *scene, Base *base)
{
if(rem_from_group_internal(group, object)) {
-
- if(find_group(object, NULL) == NULL) {
+ /* object can be NULL */
+ if(object && find_group(object, NULL) == NULL) {
if(scene && base==NULL)
base= object_in_scene(object, scene);
diff --git a/source/blender/blenkernel/intern/ipo.c b/source/blender/blenkernel/intern/ipo.c
index 18a8210c68d..6fc3fc547df 100644
--- a/source/blender/blenkernel/intern/ipo.c
+++ b/source/blender/blenkernel/intern/ipo.c
@@ -885,6 +885,17 @@ static char *get_rna_access (int blocktype, int adrcode, char actname[], char co
case ID_SEQ: /* sequencer strip */
//SEQ_FAC1:
+ switch (adrcode) {
+ case SEQ_FAC1:
+ propname= "effect_fader";
+ break;
+ case SEQ_FAC_SPEED:
+ propname= "speed_fader";
+ break;
+ case SEQ_FAC_OPACITY:
+ propname= "blend_opacity";
+ break;
+ }
// poin= &(seq->facf0); // XXX this doesn't seem to be included anywhere in sequencer RNA...
break;
@@ -1604,6 +1615,7 @@ void do_versions_ipos_to_animato(Main *main)
ListBase drivers = {NULL, NULL};
ID *id;
AnimData *adt;
+ Scene *scene;
if (main == NULL) {
printf("Argh! Main is NULL in do_versions_ipos_to_animato() \n");
@@ -1781,6 +1793,51 @@ void do_versions_ipos_to_animato(Main *main)
}
}
+ /* sequence strips */
+ for(scene = main->scene.first; scene; scene = scene->id.next) {
+ if(scene->ed && scene->ed->seqbasep) {
+ Sequence * seq;
+
+ for(seq = scene->ed->seqbasep->first;
+ seq; seq = seq->next) {
+ short adrcode = SEQ_FAC1;
+
+ if (G.f & G_DEBUG)
+ printf("\tconverting sequence strip %s \n", seq->name+2);
+
+ if (!seq->ipo || !seq->ipo->curve.first) {
+ seq->flag |=
+ SEQ_USE_EFFECT_DEFAULT_FADE;
+ continue;
+ }
+
+ /* patch adrcode, so that we can map
+ to different DNA variables later
+ (semi-hack (tm) )
+ */
+ switch(seq->type) {
+ case SEQ_IMAGE:
+ case SEQ_META:
+ case SEQ_SCENE:
+ case SEQ_MOVIE:
+ case SEQ_COLOR:
+ adrcode = SEQ_FAC_OPACITY;
+ break;
+ case SEQ_SPEED:
+ adrcode = SEQ_FAC_SPEED;
+ break;
+ }
+ ((IpoCurve*) seq->ipo->curve.first)
+ ->adrcode = adrcode;
+ ipo_to_animdata((ID*) seq, seq->ipo,
+ NULL, NULL);
+ seq->ipo->id.us--;
+ seq->ipo = NULL;
+ }
+ }
+ }
+
+
/* textures */
for (id= main->tex.first; id; id= id->next) {
Tex *te= (Tex *)id;
diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c
index af3642f1b06..d2f17292df8 100644
--- a/source/blender/blenkernel/intern/lattice.c
+++ b/source/blender/blenkernel/intern/lattice.c
@@ -1003,7 +1003,7 @@ void lattice_calc_modifiers(Scene *scene, Object *ob)
if (!(md->mode&eModifierMode_Realtime)) continue;
if (editmode && !(md->mode&eModifierMode_Editmode)) continue;
- if (mti->isDisabled && mti->isDisabled(md)) continue;
+ if (mti->isDisabled && mti->isDisabled(md, 0)) continue;
if (mti->type!=eModifierTypeType_OnlyDeform) continue;
if (!vertexCos) vertexCos = lattice_getVertexCos(ob, &numVerts);
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 0867afc0fb2..eee2df20743 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -141,9 +141,9 @@ void mesh_update_linked_customdata(Mesh *me)
CustomData_set_layer_clone(&me->ldata, CD_MLOOPUV, act);
CustomData_set_layer_clone(&me->fdata, CD_MTFACE, act);
- act = CustomData_get_mask_layer(&me->pdata, CD_MTEXPOLY);
- CustomData_set_layer_mask(&me->ldata, CD_MLOOPUV, act);
- CustomData_set_layer_mask(&me->fdata, CD_MTFACE, act);
+ act = CustomData_get_stencil_layer(&me->pdata, CD_MTEXPOLY);
+ CustomData_set_layer_stencil(&me->ldata, CD_MLOOPUV, act);
+ CustomData_set_layer_stencil(&me->fdata, CD_MTFACE, act);
}
if (CustomData_has_layer(&me->ldata, CD_MLOOPCOL)) {
@@ -156,8 +156,8 @@ void mesh_update_linked_customdata(Mesh *me)
act = CustomData_get_clone_layer(&me->ldata, CD_MLOOPCOL);
CustomData_set_layer_clone(&me->fdata, CD_MCOL, act);
- act = CustomData_get_mask_layer(&me->ldata, CD_MLOOPCOL);
- CustomData_set_layer_mask(&me->fdata, CD_MCOL, act);
+ act = CustomData_get_stencil_layer(&me->ldata, CD_MLOOPCOL);
+ CustomData_set_layer_stencil(&me->fdata, CD_MCOL, act);
}
}
@@ -1604,7 +1604,8 @@ static void mesh_loops_to_corners(CustomData *fdata, CustomData *ldata,
int mesh_recalcTesselation(CustomData *fdata,
CustomData *ldata, CustomData *pdata,
MVert *mvert, int totface, int totloop,
- int totpoly, int use_poly_origindex)
+ int totpoly, int use_poly_origindex,
+ int use_face_origindex)
{
MPoly *mp, *mpoly;
MLoop *ml, *mloop;
@@ -1659,7 +1660,7 @@ int mesh_recalcTesselation(CustomData *fdata,
mf[k].v3 = f->v3->keyindex;
mf[k].mat_nr = mp->mat_nr;
mf[k].flag = mp->flag;
- origIndex[k] = f->v1->tmp.l;
+ origIndex[k] = use_face_origindex ? k : f->v1->tmp.l;
k++;
}
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index e26d084c1d1..6f428213e53 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -192,7 +192,7 @@ static DerivedMesh *get_original_dm(Scene *scene, Object *ob, float (*vertexCos)
/***/
-static int noneModifier_isDisabled(ModifierData *md)
+static int noneModifier_isDisabled(ModifierData *md, int userRenderParams)
{
return 1;
}
@@ -227,7 +227,7 @@ static CustomDataMask curveModifier_requiredDataMask(Object *ob, ModifierData *m
return dataMask;
}
-static int curveModifier_isDisabled(ModifierData *md)
+static int curveModifier_isDisabled(ModifierData *md, int userRenderParams)
{
CurveModifierData *cmd = (CurveModifierData*) md;
@@ -303,7 +303,7 @@ static CustomDataMask latticeModifier_requiredDataMask(Object *ob, ModifierData
return dataMask;
}
-static int latticeModifier_isDisabled(ModifierData *md)
+static int latticeModifier_isDisabled(ModifierData *md, int userRenderParams)
{
LatticeModifierData *lmd = (LatticeModifierData*) md;
@@ -400,13 +400,20 @@ static void subsurfModifier_freeData(ModifierData *md)
SubsurfModifierData *smd = (SubsurfModifierData*) md;
if(smd->mCache) {
- CCS_free(smd->mCache);
+ ccgSubSurf_free(smd->mCache);
}
if(smd->emCache) {
- CCS_free(smd->emCache);
+ ccgSubSurf_free(smd->emCache);
}
}
+static int subsurfModifier_isDisabled(ModifierData *md, int useRenderParams)
+{
+ SubsurfModifierData *smd = (SubsurfModifierData*) md;
+
+ return (useRenderParams)? (smd->renderLevels == 0): (smd->levels == 0);
+}
+
static DerivedMesh *subsurfModifier_applyModifier(
ModifierData *md, Object *ob, DerivedMesh *derivedData,
int useRenderParams, int isFinalCalc)
@@ -415,8 +422,13 @@ static DerivedMesh *subsurfModifier_applyModifier(
DerivedMesh *result;
result = subsurf_make_derived_from_derived(derivedData, smd,
- useRenderParams, NULL,
- isFinalCalc, 0);
+ useRenderParams, NULL, isFinalCalc, 0);
+
+ if(useRenderParams || !isFinalCalc) {
+ DerivedMesh *cddm= CDDM_copy(result, 1);
+ result->release(result);
+ result= cddm;
+ }
return result;
}
@@ -2501,7 +2513,7 @@ DerivedMesh *doEdgeSplit(DerivedMesh *dm, EdgeSplitModifierData *emd)
cddm->numFaceData = mesh_recalcTesselation(&cddm->faceData,
&cddm->loopData, &cddm->polyData,
mvert, cddm->numFaceData,
- cddm->numLoopData, cddm->numPolyData, 1);
+ cddm->numLoopData, cddm->numPolyData, 1, 0);
CDDM_set_mface(cddm, DM_get_tessface_data_layer(cddm, CD_MFACE));
CDDM_calc_normals(cddm);
@@ -2717,7 +2729,7 @@ static void displaceModifier_foreachIDLink(ModifierData *md, Object *ob,
displaceModifier_foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
}
-static int displaceModifier_isDisabled(ModifierData *md)
+static int displaceModifier_isDisabled(ModifierData *md, int useRenderParams)
{
DisplaceModifierData *dmd = (DisplaceModifierData*) md;
@@ -3462,7 +3474,7 @@ static void smoothModifier_copyData(ModifierData *md, ModifierData *target)
strncpy(tsmd->defgrp_name, smd->defgrp_name, 32);
}
-static int smoothModifier_isDisabled(ModifierData *md)
+static int smoothModifier_isDisabled(ModifierData *md, int useRenderParams)
{
SmoothModifierData *smd = (SmoothModifierData*) md;
short flag;
@@ -3692,7 +3704,7 @@ static void castModifier_copyData(ModifierData *md, ModifierData *target)
strncpy(tcmd->defgrp_name, cmd->defgrp_name, 32);
}
-static int castModifier_isDisabled(ModifierData *md)
+static int castModifier_isDisabled(ModifierData *md, int useRenderParams)
{
CastModifierData *cmd = (CastModifierData*) md;
short flag;
@@ -4681,7 +4693,7 @@ static CustomDataMask armatureModifier_requiredDataMask(Object *ob, ModifierData
return dataMask;
}
-static int armatureModifier_isDisabled(ModifierData *md)
+static int armatureModifier_isDisabled(ModifierData *md, int useRenderParams)
{
ArmatureModifierData *amd = (ArmatureModifierData*) md;
@@ -4804,7 +4816,7 @@ static void hookModifier_freeData(ModifierData *md)
if (hmd->indexar) MEM_freeN(hmd->indexar);
}
-static int hookModifier_isDisabled(ModifierData *md)
+static int hookModifier_isDisabled(ModifierData *md, int useRenderParams)
{
HookModifierData *hmd = (HookModifierData*) md;
@@ -4876,7 +4888,7 @@ static void hookModifier_deformVerts(
/* if DerivedMesh is present and has original index data,
* use it
*/
- if(dm && dm->getVertData(dm, 0, CD_ORIGINDEX)) {
+ if(dm && dm->getVertDataArray(dm, CD_ORIGINDEX)) {
int j;
int orig_index;
for(j = 0; j < numVerts; ++j) {
@@ -4989,6 +5001,465 @@ static int softbodyModifier_dependsOnTime(ModifierData *md)
return 1;
}
+/* Solidify */
+
+
+typedef struct EdgeFaceRef {
+ int f1; /* init as -1 */
+ int f2;
+} EdgeFaceRef;
+
+static void dm_calc_normal(DerivedMesh *dm, float (*temp_nors)[3])
+{
+ int i, numVerts, numEdges, numFaces;
+ MFace *mface, *mf;
+ MVert *mvert, *mv;
+
+ float (*face_nors)[3];
+ float *f_no;
+ int calc_face_nors= 0;
+
+ numVerts = dm->getNumVerts(dm);
+ numEdges = dm->getNumEdges(dm);
+ numFaces = dm->getNumFaces(dm);
+ mface = dm->getTessFaceArray(dm);
+ mvert = dm->getVertArray(dm);
+
+ /* we don't want to overwrite any referenced layers */
+
+ /*
+ Dosnt work here!
+ mv = CustomData_duplicate_referenced_layer(&dm->vertData, CD_MVERT);
+ cddm->mvert = mv;
+ */
+
+ face_nors = CustomData_get_layer(&dm->faceData, CD_NORMAL);
+ if(!face_nors) {
+ calc_face_nors = 1;
+ face_nors = CustomData_add_layer(&dm->faceData, CD_NORMAL, CD_CALLOC, NULL, numFaces);
+ }
+
+ mv = mvert;
+ mf = mface;
+
+ {
+ EdgeHash *edge_hash = BLI_edgehash_new();
+ EdgeHashIterator *edge_iter;
+ int edge_ref_count = 0;
+ int ed_v1, ed_v2; /* use when getting the key */
+ EdgeFaceRef *edge_ref_array = MEM_callocN(numEdges * sizeof(EdgeFaceRef), "Edge Connectivity");
+ EdgeFaceRef *edge_ref;
+ float edge_normal[3];
+
+ /* This function adds an edge hash if its not there, and adds the face index */
+#define NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(EDV1, EDV2); \
+ edge_ref = (EdgeFaceRef *)BLI_edgehash_lookup(edge_hash, EDV1, EDV2); \
+ if (!edge_ref) { \
+ edge_ref = &edge_ref_array[edge_ref_count]; edge_ref_count++; \
+ edge_ref->f1=i; \
+ edge_ref->f2=-1; \
+ BLI_edgehash_insert(edge_hash, EDV1, EDV2, edge_ref); \
+ } else { \
+ edge_ref->f2=i; \
+ }
+
+ for(i = 0; i < numFaces; i++, mf++) {
+ f_no = face_nors[i];
+
+ if(mf->v4) {
+ if(calc_face_nors)
+ normal_quad_v3(f_no, mv[mf->v1].co, mv[mf->v2].co, mv[mf->v3].co, mv[mf->v4].co);
+
+ NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(mf->v1, mf->v2);
+ NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(mf->v2, mf->v3);
+ NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(mf->v3, mf->v4);
+ NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(mf->v4, mf->v1);
+ } else {
+ if(calc_face_nors)
+ normal_tri_v3(f_no, mv[mf->v1].co, mv[mf->v2].co, mv[mf->v3].co);
+
+ NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(mf->v1, mf->v2);
+ NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(mf->v2, mf->v3);
+ NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(mf->v3, mf->v1);
+ }
+ }
+
+ for(edge_iter = BLI_edgehashIterator_new(edge_hash); !BLI_edgehashIterator_isDone(edge_iter); BLI_edgehashIterator_step(edge_iter)) {
+ /* Get the edge vert indicies, and edge value (the face indicies that use it)*/
+ BLI_edgehashIterator_getKey(edge_iter, (int*)&ed_v1, (int*)&ed_v2);
+ edge_ref = BLI_edgehashIterator_getValue(edge_iter);
+
+ if (edge_ref->f2 != -1) {
+ /* We have 2 faces using this edge, calculate the edges normal
+ * using the angle between the 2 faces as a weighting */
+ add_v3_v3v3(edge_normal, face_nors[edge_ref->f1], face_nors[edge_ref->f2]);
+ normalize_v3(edge_normal);
+ mul_v3_fl(edge_normal, angle_normalized_v3v3(face_nors[edge_ref->f1], face_nors[edge_ref->f2]));
+ } else {
+ /* only one face attached to that edge */
+ /* an edge without another attached- the weight on this is
+ * undefined, M_PI/2 is 90d in radians and that seems good enough */
+ VECCOPY(edge_normal, face_nors[edge_ref->f1])
+ mul_v3_fl(edge_normal, M_PI/2);
+ }
+ add_v3_v3(temp_nors[ed_v1], edge_normal);
+ add_v3_v3(temp_nors[ed_v2], edge_normal);
+ }
+ BLI_edgehashIterator_free(edge_iter);
+ BLI_edgehash_free(edge_hash, NULL);
+ MEM_freeN(edge_ref_array);
+ }
+
+ /* normalize vertex normals and assign */
+ for(i = 0; i < numVerts; i++, mv++) {
+ if(normalize_v3(temp_nors[i]) == 0.0f) {
+ normal_short_to_float_v3(temp_nors[i], mv->no);
+ }
+ }
+}
+
+static void solidifyModifier_initData(ModifierData *md)
+{
+ SolidifyModifierData *smd = (SolidifyModifierData*) md;
+ smd->offset = 0.01f;
+ smd->flag = MOD_SOLIDIFY_EVEN | MOD_SOLIDIFY_RIM | MOD_SOLIDIFY_NORMAL_CALC;
+}
+
+static void solidifyModifier_copyData(ModifierData *md, ModifierData *target)
+{
+ SolidifyModifierData *smd = (SolidifyModifierData*) md;
+ SolidifyModifierData *tsmd = (SolidifyModifierData*) target;
+ tsmd->offset = smd->offset;
+ tsmd->crease_inner = smd->crease_inner;
+ tsmd->crease_outer = smd->crease_outer;
+ tsmd->crease_rim = smd->crease_rim;
+ strcpy(tsmd->vgroup, smd->vgroup);
+}
+
+static DerivedMesh *solidifyModifier_applyModifier(ModifierData *md,
+ Object *ob,
+ DerivedMesh *dm,
+ int useRenderParams,
+ int isFinalCalc)
+{
+ int i;
+ DerivedMesh *result;
+ SolidifyModifierData *smd = (SolidifyModifierData*) md;
+
+ MFace *mf, *mface, *orig_mface;
+ MEdge *ed, *medge, *orig_medge;
+ MVert *mv, *mvert, *orig_mvert;
+
+ int numVerts = dm->getNumVerts(dm);
+ int numEdges = dm->getNumEdges(dm);
+ int numFaces = dm->getNumFaces(dm);
+
+ /* use for edges */
+ int *new_vert_arr= NULL;
+ int newFaces = 0;
+
+ int *new_edge_arr= NULL;
+ int newEdges = 0;
+
+ int *edge_users= NULL;
+ char *edge_order= NULL;
+
+ float (*vert_nors)[3]= NULL;
+
+ orig_mface = dm->getTessFaceArray(dm);
+ orig_medge = dm->getEdgeArray(dm);
+ orig_mvert = dm->getVertArray(dm);
+
+ if(smd->flag & MOD_SOLIDIFY_RIM) {
+ EdgeHash *edgehash = BLI_edgehash_new();
+ EdgeHashIterator *ehi;
+ int v1, v2;
+ int eidx;
+
+ for(i=0, mv=orig_mvert; i<numVerts; i++, mv++) {
+ mv->flag &= ~ME_VERT_TMP_TAG;
+ }
+
+ for(i=0, ed=orig_medge; i<numEdges; i++, ed++) {
+ BLI_edgehash_insert(edgehash, ed->v1, ed->v2, SET_INT_IN_POINTER(i));
+ }
+
+#define INVALID_UNUSED -1
+#define INVALID_PAIR -2
+
+#define ADD_EDGE_USER(_v1, _v2, edge_ord) \
+ eidx= GET_INT_FROM_POINTER(BLI_edgehash_lookup(edgehash, _v1, _v2)); \
+ if(edge_users[eidx] == INVALID_UNUSED) { \
+ edge_users[eidx]= (_v1 < _v2) ? i:(i+numFaces); \
+ edge_order[eidx]= edge_ord; \
+ } else { \
+ edge_users[eidx]= INVALID_PAIR; \
+ } \
+
+
+ edge_users= MEM_mallocN(sizeof(int) * numEdges, "solid_mod edges");
+ edge_order= MEM_mallocN(sizeof(char) * numEdges, "solid_mod eorder");
+ memset(edge_users, INVALID_UNUSED, sizeof(int) * numEdges);
+
+ for(i=0, mf=orig_mface; i<numFaces; i++, mf++) {
+ if(mf->v4) {
+ ADD_EDGE_USER(mf->v1, mf->v2, 0);
+ ADD_EDGE_USER(mf->v2, mf->v3, 1);
+ ADD_EDGE_USER(mf->v3, mf->v4, 2);
+ ADD_EDGE_USER(mf->v4, mf->v1, 3);
+ }
+ else {
+ ADD_EDGE_USER(mf->v1, mf->v2, 0);
+ ADD_EDGE_USER(mf->v2, mf->v3, 1);
+ ADD_EDGE_USER(mf->v3, mf->v1, 2);
+ }
+ }
+
+#undef ADD_EDGE_USER
+#undef INVALID_UNUSED
+#undef INVALID_PAIR
+
+
+ new_edge_arr= MEM_callocN(sizeof(int) * numEdges, "solid_mod arr");
+
+ ehi= BLI_edgehashIterator_new(edgehash);
+ for(; !BLI_edgehashIterator_isDone(ehi); BLI_edgehashIterator_step(ehi)) {
+ int eidx= GET_INT_FROM_POINTER(BLI_edgehashIterator_getValue(ehi));
+ if(edge_users[eidx] >= 0) {
+ BLI_edgehashIterator_getKey(ehi, &v1, &v2);
+ orig_mvert[v1].flag |= ME_VERT_TMP_TAG;
+ orig_mvert[v2].flag |= ME_VERT_TMP_TAG;
+ new_edge_arr[newFaces]= eidx;
+ newFaces++;
+ }
+ }
+ BLI_edgehashIterator_free(ehi);
+
+
+
+ new_vert_arr= MEM_callocN(sizeof(int) * numVerts, "solid_mod new_varr");
+ for(i=0, mv=orig_mvert; i<numVerts; i++, mv++) {
+ if(mv->flag & ME_VERT_TMP_TAG) {
+ new_vert_arr[newEdges] = i;
+ newEdges++;
+
+ mv->flag &= ~ME_VERT_TMP_TAG;
+ }
+ }
+
+ BLI_edgehash_free(edgehash, NULL);
+ }
+
+ if(smd->flag & MOD_SOLIDIFY_NORMAL_CALC) {
+ vert_nors= MEM_callocN(sizeof(float) * numVerts * 3, "mod_solid_vno_hq");
+ dm_calc_normal(dm, vert_nors);
+ }
+
+ result = CDDM_from_template(dm, numVerts * 2, (numEdges * 2) + newEdges, (numFaces * 2) + newFaces, 0, 0);
+
+ mface = result->getTessFaceArray(result);
+ medge = result->getEdgeArray(result);
+ mvert = result->getVertArray(result);
+
+ DM_copy_face_data(dm, result, 0, 0, numFaces);
+ DM_copy_face_data(dm, result, 0, numFaces, numFaces);
+
+ DM_copy_edge_data(dm, result, 0, 0, numEdges);
+ DM_copy_edge_data(dm, result, 0, numEdges, numEdges);
+
+ DM_copy_vert_data(dm, result, 0, 0, numVerts);
+ DM_copy_vert_data(dm, result, 0, numVerts, numVerts);
+
+ {
+ static int corner_indices[4] = {2, 1, 0, 3};
+ int is_quad;
+
+ for(i=0, mf=mface+numFaces; i<numFaces; i++, mf++) {
+ mf->v1 += numVerts;
+ mf->v2 += numVerts;
+ mf->v3 += numVerts;
+ if(mf->v4)
+ mf->v4 += numVerts;
+
+ /* Flip face normal */
+ {
+ is_quad = mf->v4;
+ SWAP(int, mf->v1, mf->v3);
+ DM_swap_tessface_data(result, i+numFaces, corner_indices);
+ test_index_face(mf, &result->faceData, numFaces, is_quad ? 4:3);
+ }
+ }
+ }
+
+ for(i=0, ed=medge+numEdges; i<numEdges; i++, ed++) {
+ ed->v1 += numVerts;
+ ed->v2 += numVerts;
+ }
+
+ if((smd->flag & MOD_SOLIDIFY_EVEN) == 0) {
+ /* no even thickness, very simple */
+ float scalar_short = smd->offset / 32767.0f;
+
+ if(smd->offset < 0.0f) mv= mvert+numVerts;
+ else mv= mvert;
+
+ for(i=0; i<numVerts; i++, mv++) {
+ mv->co[0] += mv->no[0] * scalar_short;
+ mv->co[1] += mv->no[1] * scalar_short;
+ mv->co[2] += mv->no[2] * scalar_short;
+ }
+ }
+ else {
+ /* make a face normal layer if not present */
+ float (*face_nors)[3];
+ int face_nors_calc= 0;
+
+ /* same as EM_solidify() in editmesh_lib.c */
+ float *vert_angles= MEM_callocN(sizeof(float) * numVerts * 2, "mod_solid_pair"); /* 2 in 1 */
+ float *vert_accum= vert_angles + numVerts;
+ float face_angles[4];
+ int i, j, vidx;
+
+ face_nors = CustomData_get_layer(&dm->faceData, CD_NORMAL);
+ if(!face_nors) {
+ face_nors = CustomData_add_layer(&dm->faceData, CD_NORMAL, CD_CALLOC, NULL, dm->numFaceData);
+ face_nors_calc= 1;
+ }
+
+ if(vert_nors==NULL) {
+ vert_nors= MEM_mallocN(sizeof(float) * numVerts * 3, "mod_solid_vno");
+ for(i=0, mv=mvert; i<numVerts; i++, mv++) {
+ normal_short_to_float_v3(vert_nors[i], mv->no);
+ }
+ }
+
+ for(i=0, mf=mface; i<numFaces; i++, mf++) {
+
+ /* just added, calc the normal */
+ if(face_nors_calc) {
+ if(mf->v4)
+ normal_quad_v3(face_nors[i], mvert[mf->v1].co, mvert[mf->v2].co, mvert[mf->v3].co, mvert[mf->v4].co);
+ else
+ normal_tri_v3(face_nors[i] , mvert[mf->v1].co, mvert[mf->v2].co, mvert[mf->v3].co);
+ }
+
+ if(mf->v4) {
+ angle_quad_v3(face_angles, mvert[mf->v1].co, mvert[mf->v2].co, mvert[mf->v3].co, mvert[mf->v4].co);
+ j= 3;
+ }
+ else {
+ angle_tri_v3(face_angles, mvert[mf->v1].co, mvert[mf->v2].co, mvert[mf->v3].co);
+ j= 2;
+ }
+
+ for(; j>=0; j--) {
+ vidx = *(&mf->v1 + j);
+ vert_accum[vidx] += face_angles[j];
+ vert_angles[vidx]+= shell_angle_to_dist(angle_normalized_v3v3(vert_nors[vidx], face_nors[i])) * face_angles[j];
+ }
+ }
+
+ if(smd->offset < 0.0f) mv= mvert+numVerts;
+ else mv= mvert;
+
+ for(i=0; i<numVerts; i++, mv++) {
+ if(vert_accum[i]) { /* zero if unselected */
+ madd_v3_v3fl(mv->co, vert_nors[i], smd->offset * (vert_angles[i] / vert_accum[i]));
+ }
+ }
+
+ MEM_freeN(vert_angles);
+ }
+
+ if(vert_nors)
+ MEM_freeN(vert_nors);
+
+ if(smd->flag & MOD_SOLIDIFY_RIM) {
+
+ static int edge_indices[4][4] = {
+ {1, 0, 0, 1},
+ {2, 1, 1, 2},
+ {3, 2, 2, 3},
+ {0, 3, 3, 0}};
+
+ /* add faces & edges */
+ ed= medge + (numEdges * 2);
+ for(i=0; i<newEdges; i++, ed++) {
+ ed->v1= new_vert_arr[i];
+ ed->v2= new_vert_arr[i] + numVerts;
+ ed->flag |= ME_EDGEDRAW;
+
+ if(smd->crease_rim)
+ ed->crease= smd->crease_rim * 255.0f;
+ }
+
+ /* faces */
+ mf= mface + (numFaces * 2);
+ for(i=0; i<newFaces; i++, mf++) {
+ int eidx= new_edge_arr[i];
+ int fidx= edge_users[eidx];
+ int flip;
+
+ if(fidx >= numFaces) {
+ fidx -= numFaces;
+ flip= 1;
+ }
+ else {
+ flip= 0;
+ }
+
+ ed= medge + eidx;
+
+ /* copy most of the face settings */
+ DM_copy_face_data(dm, result, fidx, (numFaces * 2) + i, 1);
+
+ if(flip) {
+ DM_swap_tessface_data(result, (numFaces * 2) + i, edge_indices[edge_order[eidx]]);
+
+ mf->v1= ed->v1;
+ mf->v2= ed->v2;
+ mf->v3= ed->v2 + numVerts;
+ mf->v4= ed->v1 + numVerts;
+ }
+ else {
+ DM_swap_tessface_data(result, (numFaces * 2) + i, edge_indices[edge_order[eidx]]);
+
+ mf->v1= ed->v2;
+ mf->v2= ed->v1;
+ mf->v3= ed->v1 + numVerts;
+ mf->v4= ed->v2 + numVerts;
+
+
+ }
+
+ if(smd->crease_outer > 0.0f)
+ ed->crease= smd->crease_outer * 255.0f;
+
+ if(smd->crease_inner > 0.0f) {
+ ed= medge + (numEdges + eidx);
+ ed->crease= smd->crease_inner * 255.0f;
+ }
+ }
+
+ MEM_freeN(new_vert_arr);
+ MEM_freeN(new_edge_arr);
+ MEM_freeN(edge_users);
+ MEM_freeN(edge_order);
+ }
+
+ CDDM_tessfaces_to_faces(result);
+
+ return result;
+}
+
+static DerivedMesh *solidifyModifier_applyModifierEM(ModifierData *md,
+ Object *ob,
+ EditMesh *editData,
+ DerivedMesh *derivedData)
+{
+ return solidifyModifier_applyModifier(md, ob, derivedData, 0, 1);
+}
+
/* Smoke */
static void smokeModifier_initData(ModifierData *md)
@@ -5502,7 +5973,7 @@ static void booleanModifier_copyData(ModifierData *md, ModifierData *target)
tbmd->operation = bmd->operation;
}
-static int booleanModifier_isDisabled(ModifierData *md)
+static int booleanModifier_isDisabled(ModifierData *md, int useRenderParams)
{
BooleanModifierData *bmd = (BooleanModifierData*) md;
@@ -5752,6 +6223,7 @@ static void particleInstanceModifier_copyData(ModifierData *md, ModifierData *ta
tpimd->ob = pimd->ob;
tpimd->psys = pimd->psys;
tpimd->flag = pimd->flag;
+ tpimd->axis = pimd->axis;
tpimd->position = pimd->position;
tpimd->random_position = pimd->random_position;
}
@@ -6954,7 +7426,7 @@ static CustomDataMask meshdeformModifier_requiredDataMask(Object *ob, ModifierDa
return dataMask;
}
-static int meshdeformModifier_isDisabled(ModifierData *md)
+static int meshdeformModifier_isDisabled(ModifierData *md, int useRenderParams)
{
MeshDeformModifierData *mmd = (MeshDeformModifierData*) md;
@@ -7091,7 +7563,7 @@ static void meshdeformModifier_do(
/* progress bar redraw can make this recursive .. */
if(!recursive) {
recursive = 1;
- mmd->bindfunc(md->scene, mmd, (float*)vertexCos, numVerts, cagemat);
+ mmd->bindfunc(md->scene, dm, mmd, (float*)vertexCos, numVerts, cagemat);
recursive = 0;
}
}
@@ -7244,15 +7716,10 @@ static void multiresModifier_initData(ModifierData *md)
{
MultiresModifierData *mmd = (MultiresModifierData*)md;
- mmd->lvl = mmd->totlvl = 1;
-}
-
-static void multiresModifier_freeData(ModifierData *md)
-{
- MultiresModifierData *mmd = (MultiresModifierData*)md;
-
- if(mmd->undo_verts)
- MEM_freeN(mmd->undo_verts);
+ mmd->lvl = 0;
+ mmd->sculptlvl = 0;
+ mmd->renderlvl = 0;
+ mmd->totlvl = 0;
}
static void multiresModifier_copyData(ModifierData *md, ModifierData *target)
@@ -7260,37 +7727,35 @@ static void multiresModifier_copyData(ModifierData *md, ModifierData *target)
MultiresModifierData *mmd = (MultiresModifierData*) md;
MultiresModifierData *tmmd = (MultiresModifierData*) target;
- tmmd->totlvl = mmd->totlvl;
tmmd->lvl = mmd->lvl;
+ tmmd->sculptlvl = mmd->sculptlvl;
+ tmmd->renderlvl = mmd->renderlvl;
+ tmmd->totlvl = mmd->totlvl;
}
static DerivedMesh *multiresModifier_applyModifier(ModifierData *md, Object *ob, DerivedMesh *dm,
int useRenderParams, int isFinalCalc)
{
MultiresModifierData *mmd = (MultiresModifierData*)md;
- DerivedMesh *final;
+ DerivedMesh *result;
- /* TODO: for now just skip a level1 mesh */
- if(mmd->lvl == 1)
- return dm;
+ result = multires_dm_create_from_derived(mmd, 0, dm, ob, useRenderParams, isFinalCalc);
- final = multires_dm_create_from_derived(mmd, 0, dm, ob, useRenderParams, isFinalCalc);
- if(mmd->undo_signal && mmd->undo_verts && mmd->undo_verts_tot == final->getNumVerts(final)) {
- int i;
- MVert *dst = CDDM_get_verts(final);
- for(i = 0; i < mmd->undo_verts_tot; ++i) {
- copy_v3_v3(dst[i].co, mmd->undo_verts[i].co);
- }
- CDDM_calc_normals(final);
-
- MultiresDM_mark_as_modified(final);
+ if(result == dm)
+ return dm;
- MEM_freeN(mmd->undo_verts);
- mmd->undo_signal = 0;
- mmd->undo_verts = NULL;
+ if(useRenderParams || !isFinalCalc) {
+ DerivedMesh *cddm= CDDM_copy(result, 0);
+ result->release(result);
+ result= cddm;
+ }
+ else if(ob->mode & OB_MODE_SCULPT) {
+ /* would be created on the fly too, just nicer this
+ way on first stroke after e.g. switching levels */
+ result->getPBVH(ob, result);
}
- return final;
+ return result;
}
/* Shrinkwrap */
@@ -7339,7 +7804,7 @@ static CustomDataMask shrinkwrapModifier_requiredDataMask(Object *ob, ModifierDa
return dataMask;
}
-static int shrinkwrapModifier_isDisabled(ModifierData *md)
+static int shrinkwrapModifier_isDisabled(ModifierData *md, int useRenderParams)
{
ShrinkwrapModifierData *smd = (ShrinkwrapModifierData*) md;
return !smd->target;
@@ -7635,6 +8100,7 @@ ModifierTypeInfo *modifierType_getInfo(ModifierType type)
mti->initData = subsurfModifier_initData;
mti->copyData = subsurfModifier_copyData;
mti->freeData = subsurfModifier_freeData;
+ mti->isDisabled = subsurfModifier_isDisabled;
mti->applyModifier = subsurfModifier_applyModifier;
mti->applyModifierEM = subsurfModifier_applyModifierEM;
@@ -7967,7 +8433,6 @@ ModifierTypeInfo *modifierType_getInfo(ModifierType type)
mti->type = eModifierTypeType_Constructive;
mti->flags = eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_RequiresOriginalData;
mti->initData = multiresModifier_initData;
- mti->freeData = multiresModifier_freeData;
mti->copyData = multiresModifier_copyData;
mti->applyModifier = multiresModifier_applyModifier;
@@ -7979,6 +8444,16 @@ ModifierTypeInfo *modifierType_getInfo(ModifierType type)
mti->deformVertsEM = shapekeyModifier_deformVertsEM;
mti->deformMatricesEM = shapekeyModifier_deformMatricesEM;
+ mti = INIT_TYPE(Solidify);
+ mti->type = eModifierTypeType_Constructive;
+ mti->flags = eModifierTypeFlag_AcceptsMesh
+ //| eModifierTypeFlag_SupportsMapping
+ | eModifierTypeFlag_SupportsEditmode
+ | eModifierTypeFlag_EnableInEditmode;
+ mti->initData = solidifyModifier_initData;
+ mti->copyData = solidifyModifier_copyData;
+ mti->applyModifier = solidifyModifier_applyModifier;
+ mti->applyModifierEM = solidifyModifier_applyModifierEM;
typeArrInit = 0;
#undef INIT_TYPE
}
@@ -8117,7 +8592,7 @@ int modifier_couldBeCage(ModifierData *md)
return ( (md->mode & eModifierMode_Realtime) &&
(md->mode & eModifierMode_Editmode) &&
- (!mti->isDisabled || !mti->isDisabled(md)) &&
+ (!mti->isDisabled || !mti->isDisabled(md, 0)) &&
modifier_supportsMapping(md));
}
@@ -8160,7 +8635,7 @@ int modifiers_getCageIndex(Object *ob, int *lastPossibleCageIndex_r, int virtual
if (!(md->mode & eModifierMode_Realtime)) continue;
if (!(md->mode & eModifierMode_Editmode)) continue;
- if (mti->isDisabled && mti->isDisabled(md)) continue;
+ if (mti->isDisabled && mti->isDisabled(md, 0)) continue;
if (!(mti->flags & eModifierTypeFlag_SupportsEditmode)) continue;
if (md->mode & eModifierMode_DisableTemporary) continue;
@@ -8202,7 +8677,7 @@ int modifier_isEnabled(ModifierData *md, int required_mode)
ModifierTypeInfo *mti = modifierType_getInfo(md->type);
if((md->mode & required_mode) != required_mode) return 0;
- if(mti->isDisabled && mti->isDisabled(md)) return 0;
+ if(mti->isDisabled && mti->isDisabled(md, required_mode == eModifierMode_Render)) return 0;
if(md->mode & eModifierMode_DisableTemporary) return 0;
if(required_mode & eModifierMode_Editmode)
if(!(mti->flags & eModifierTypeFlag_SupportsEditmode)) return 0;
@@ -8348,15 +8823,15 @@ Object *modifiers_isDeformedByArmature(Object *ob)
}
/* Takes an object and returns its first selected lattice, else just its
-* armature
-* This should work for multiple armatures per object
+* lattice
+* This should work for multiple lattics per object
*/
Object *modifiers_isDeformedByLattice(Object *ob)
{
ModifierData *md = modifiers_getVirtualModifierList(ob);
LatticeModifierData *lmd= NULL;
- /* return the first selected armature, this lets us use multiple armatures
+ /* return the first selected lattice, this lets us use multiple lattices
*/
for (; md; md=md->next) {
if (md->type==eModifierType_Lattice) {
@@ -8389,28 +8864,24 @@ int modifiers_usesArmature(Object *ob, bArmature *arm)
return 0;
}
-int modifier_isDeformer(ModifierData *md)
+int modifier_isCorrectableDeformed(ModifierData *md)
{
if (md->type==eModifierType_Armature)
return 1;
- if (md->type==eModifierType_Curve)
- return 1;
- if (md->type==eModifierType_Lattice)
- return 1;
if (md->type==eModifierType_ShapeKey)
return 1;
return 0;
}
-int modifiers_isDeformed(Scene *scene, Object *ob)
+int modifiers_isCorrectableDeformed(Scene *scene, Object *ob)
{
ModifierData *md = modifiers_getVirtualModifierList(ob);
for (; md; md=md->next) {
if(ob->mode==OB_MODE_EDIT && (md->mode & eModifierMode_Editmode)==0);
else
- if(modifier_isDeformer(md))
+ if(modifier_isCorrectableDeformed(md))
return 1;
}
return 0;
diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c
index 09673aba7f7..b1f2a9d90f2 100644
--- a/source/blender/blenkernel/intern/multires.c
+++ b/source/blender/blenkernel/intern/multires.c
@@ -39,6 +39,7 @@
#include "BLI_math.h"
#include "BLI_blenlib.h"
+#include "BLI_pbvh.h"
#include "BKE_cdderivedmesh.h"
#include "BKE_customdata.h"
@@ -50,14 +51,20 @@
#include "BKE_multires.h"
#include "BKE_object.h"
#include "BKE_subsurf.h"
+#include "BKE_utildefines.h"
+
+#include "CCGSubSurf.h"
#include <math.h>
#include <string.h>
/* MULTIRES MODIFIER */
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};
+static const int multires_grid_tot[] = {0, 4, 9, 25, 81, 289, 1089, 4225, 16641, 66049, 263169, 1050625, 4198401, 16785409};
+static const int multires_side_tot[] = {0, 2, 3, 5, 9, 17, 33, 65, 129, 257, 513, 1025, 2049, 4097};
+
+static void multires_mvert_to_ss(DerivedMesh *dm, MVert *mvert);
+static void multiresModifier_disp_run(DerivedMesh *dm, Mesh *me, int invert, int add, DMGridData **oldGridData, int totlvl);
MultiresModifierData *find_multires_modifier(Object *ob)
{
@@ -72,23 +79,53 @@ MultiresModifierData *find_multires_modifier(Object *ob)
}
return mmd;
+}
+static int multires_get_level(Object *ob, MultiresModifierData *mmd, int render)
+{
+ if(render)
+ return mmd->renderlvl;
+ else if(ob->mode == OB_MODE_SCULPT)
+ return mmd->sculptlvl;
+ else
+ return mmd->lvl;
}
-int multiresModifier_switch_level(Object *ob, const int distance)
+static void multires_set_tot_level(Object *ob, MultiresModifierData *mmd, int lvl)
{
- MultiresModifierData *mmd = find_multires_modifier(ob);
-
- if(mmd) {
- mmd->lvl += distance;
- if(mmd->lvl < 1) mmd->lvl = 1;
- else if(mmd->lvl > mmd->totlvl) mmd->lvl = mmd->totlvl;
- /* XXX: DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
- object_handle_update(ob);*/
- return 1;
+ mmd->totlvl = lvl;
+
+ if(ob->mode != OB_MODE_SCULPT) {
+ mmd->lvl = MAX2(mmd->lvl, lvl);
+ CLAMP(mmd->lvl, 0, mmd->totlvl);
+ }
+
+ mmd->sculptlvl = MAX2(mmd->sculptlvl, lvl);
+ CLAMP(mmd->sculptlvl, 0, mmd->totlvl);
+
+ mmd->renderlvl = MAX2(mmd->renderlvl, lvl);
+ CLAMP(mmd->renderlvl, 0, mmd->totlvl);
+}
+
+static void multires_dm_mark_as_modified(DerivedMesh *dm)
+{
+ CCGDerivedMesh *ccgdm = (CCGDerivedMesh*)dm;
+ ccgdm->multires.modified = 1;
+}
+
+void multires_mark_as_modified(Object *ob)
+{
+ if(ob && ob->derivedFinal)
+ multires_dm_mark_as_modified(ob->derivedFinal);
+}
+
+void multires_force_update(Object *ob)
+{
+ if(ob && ob->derivedFinal) {
+ ob->derivedFinal->needsFree =1;
+ ob->derivedFinal->release(ob->derivedFinal);
+ ob->derivedFinal = NULL;
}
- else
- return 0;
}
/* XXX */
@@ -153,338 +190,158 @@ void multiresModifier_join(Object *ob)
}
#endif
-/* Returns 0 on success, 1 if the src's totvert doesn't match */
+/* Returns 1 on success, 0 if the src's totvert doesn't match */
int multiresModifier_reshape(MultiresModifierData *mmd, Object *dst, Object *src)
{
- Mesh *src_me = get_mesh(src);
+ DerivedMesh *srcdm = src->derivedFinal;
DerivedMesh *mrdm = dst->derivedFinal;
- if(mrdm && mrdm->getNumVerts(mrdm) == src_me->totvert) {
- MVert *mvert = CDDM_get_verts(mrdm);
- int i;
+ if(mrdm && srcdm && mrdm->getNumVerts(mrdm) == srcdm->getNumVerts(srcdm)) {
+ multires_mvert_to_ss(mrdm, srcdm->getVertArray(srcdm));
- for(i = 0; i < src_me->totvert; ++i)
- copy_v3_v3(mvert[i].co, src_me->mvert[i].co);
- mrdm->needsFree = 1;
- MultiresDM_mark_as_modified(mrdm);
- mrdm->release(mrdm);
- dst->derivedFinal = NULL;
+ multires_dm_mark_as_modified(mrdm);
+ multires_force_update(dst);
- return 0;
+ return 1;
}
- return 1;
+ return 0;
}
-static void Mat3FromColVecs(float mat[][3], float v1[3], float v2[3], float v3[3])
+static void column_vectors_to_mat3(float mat[][3], float v1[3], float v2[3], float v3[3])
{
copy_v3_v3(mat[0], v1);
copy_v3_v3(mat[1], v2);
copy_v3_v3(mat[2], v3);
}
-static DerivedMesh *multires_subdisp_pre(DerivedMesh *mrdm, int distance, int simple)
+static void multires_copy_grid(float (*gridA)[3], float (*gridB)[3], int sizeA, int sizeB)
{
- DerivedMesh *final;
- SubsurfModifierData smd;
+ int x, y, j, skip;
- memset(&smd, 0, sizeof(SubsurfModifierData));
- smd.levels = distance;
- if(simple)
- smd.subdivType = ME_SIMPLE_SUBSURF;
+ if(sizeA > sizeB) {
+ skip = (sizeA-1)/(sizeB-1);
- final = subsurf_make_derived_from_derived_with_multires(mrdm, &smd, NULL, 0, NULL, 0, 0);
+ for(j = 0, y = 0; y < sizeB; y++)
+ for(x = 0; x < sizeB; x++, j++)
+ copy_v3_v3(gridA[y*skip*sizeA + x*skip], gridB[j]);
+ }
+ else {
+ skip = (sizeB-1)/(sizeA-1);
- return final;
+ for(j = 0, y = 0; y < sizeA; y++)
+ for(x = 0; x < sizeA; x++, j++)
+ copy_v3_v3(gridA[j], gridB[y*skip*sizeB + x*skip]);
+ }
}
-static void VecAddUf(float a[3], float b[3])
+static void multires_copy_dm_grid(DMGridData *gridA, DMGridData *gridB, int sizeA, int sizeB)
{
- a[0] += b[0];
- a[1] += b[1];
- a[2] += b[2];
-}
+ int x, y, j, skip;
-static void multires_subdisp(DerivedMesh *orig, Object *ob, DerivedMesh *final, int lvl, int totlvl,
- int totsubvert, int totsubedge, int totsubface, int addverts)
-{
- DerivedMesh *mrdm;
- Mesh *me = ob->data;
- MultiresModifierData mmd_sub;
- MVert *mvs = CDDM_get_verts(final);
- MVert *mvd, *mvd_f1, *mvs_f1, *mvd_f3, *mvd_f4;
- MVert *mvd_f2, *mvs_f2, *mvs_e1, *mvd_e1, *mvs_e2;
- int totvert;
- int slo1 = multires_side_tot[lvl - 1];
- int sll = slo1 / 2;
- int slo2 = multires_side_tot[totlvl - 2];
- int shi2 = multires_side_tot[totlvl - 1];
- int skip = multires_side_tot[totlvl - lvl] - 1;
- int i, j, k;
+ if(sizeA > sizeB) {
+ skip = (sizeA-1)/(sizeB-1);
- memset(&mmd_sub, 0, sizeof(MultiresModifierData));
- mmd_sub.lvl = mmd_sub.totlvl = totlvl;
- mrdm = multires_dm_create_from_derived(&mmd_sub, 1, orig, ob, 0, 0);
-
- mvd = CDDM_get_verts(mrdm);
- /* Need to map from ccg to mrdm */
- totvert = mrdm->getNumVerts(mrdm);
-
- if(!addverts) {
- for(i = 0; i < totvert; ++i) {
- float z[3] = {0,0,0};
- copy_v3_v3(mvd[i].co, z);
- }
+ for(j = 0, y = 0; y < sizeB; y++)
+ for(x = 0; x < sizeB; x++, j++)
+ copy_v3_v3(gridA[y*skip*sizeA + x*skip].co, gridB[j].co);
}
+ else {
+ skip = (sizeB-1)/(sizeA-1);
- /* Load base verts */
- for(i = 0; i < me->totvert; ++i)
- VecAddUf(mvd[totvert - me->totvert + i].co, mvs[totvert - me->totvert + i].co);
+ for(j = 0, y = 0; y < sizeA; y++)
+ for(x = 0; x < sizeA; x++, j++)
+ copy_v3_v3(gridA[j].co, gridB[y*skip*sizeB + x*skip].co);
+ }
+}
- mvd_f1 = mvd;
- mvs_f1 = mvs;
- mvd_f2 = mvd;
- mvs_f2 = mvs + totvert - totsubvert;
- mvs_e1 = mvs + totsubface * (skip-1) * (skip-1);
+/* direction=1 for delete higher, direction=0 for lower (not implemented yet) */
+void multiresModifier_del_levels(MultiresModifierData *mmd, Object *ob, int direction)
+{
+ Mesh *me = get_mesh(ob);
+ int lvl = multires_get_level(ob, mmd, 0);
+ int levels = mmd->totlvl - lvl;
+ MDisps *mdisps;
- for(i = 0; i < me->totface; ++i) {
- const int end = me->mface[i].v4 ? 4 : 3;
- int x, y, x2, y2, mov= 0;
-
- mvd_f1 += 1 + end * (slo2-2); //center+edgecross
- mvd_f3 = mvd_f4 = mvd_f1;
-
- for(j = 0; j < end; ++j) {
- mvd_f1 += (skip/2 - 1) * (slo2 - 2) + (skip/2 - 1);
- /* Update sub faces */
- for(y = 0; y < sll; ++y) {
- for(x = 0; x < sll; ++x) {
- /* Face center */
- VecAddUf(mvd_f1->co, mvs_f1->co);
- mvs_f1 += 1;
-
- /* Now we hold the center of the subface at mvd_f1
- and offset it to the edge cross and face verts */
-
- /* Edge cross */
- for(k = 0; k < 4; ++k) {
- if(k == 0) mov = -1;
- else if(k == 1) mov = slo2 - 2;
- else if(k == 2) mov = 1;
- else if(k == 3) mov = -(slo2 - 2);
-
- for(x2 = 1; x2 < skip/2; ++x2) {
- VecAddUf((mvd_f1 + mov * x2)->co, mvs_f1->co);
- ++mvs_f1;
- }
- }
+ CustomData_external_read(&me->ldata, &me->id, CD_MASK_MDISPS, me->totloop);
+ mdisps= CustomData_get_layer(&me->ldata, CD_MDISPS);
- /* Main face verts */
- for(k = 0; k < 4; ++k) {
- int movx= 0, movy= 0;
-
- if(k == 0) { movx = -1; movy = -(slo2 - 2); }
- else if(k == 1) { movx = slo2 - 2; movy = -1; }
- else if(k == 2) { movx = 1; movy = slo2 - 2; }
- else if(k == 3) { movx = -(slo2 - 2); movy = 1; }
-
- for(y2 = 1; y2 < skip/2; ++y2) {
- for(x2 = 1; x2 < skip/2; ++x2) {
- VecAddUf((mvd_f1 + movy * y2 + movx * x2)->co, mvs_f1->co);
- ++mvs_f1;
- }
- }
- }
-
- mvd_f1 += skip;
- }
- mvd_f1 += (skip - 1) * (slo2 - 2) - 1;
- }
- mvd_f1 -= (skip - 1) * (slo2 - 2) - 1 + skip;
- mvd_f1 += (slo2 - 2) * (skip/2-1) + skip/2-1 + 1;
- }
+ multires_force_update(ob);
- /* update face center verts */
- VecAddUf(mvd_f2->co, mvs_f2->co);
+ if(mdisps && levels > 0 && direction == 1) {
+ if(lvl > 0) {
+ MLoop *ml = me->mloop;
+ int nsize = multires_side_tot[lvl];
+ int hsize = multires_side_tot[mmd->totlvl];
+ int i, j, k=0;
- mvd_f2 += 1;
- mvs_f2 += 1;
+ for(i = 0; i < me->totpoly; ++i) {
+ for (j=0; j<me->mpoly[i].totloop; j++, k++) {
+ MDisps *mdisp= &mdisps[k];
+ float (*disps)[3], (*ndisps)[3], (*hdisps)[3];
+ int totdisp = multires_grid_tot[lvl];
- /* update face edge verts */
- for(j = 0; j < end; ++j) {
- MVert *restore;
+ disps = MEM_callocN(sizeof(float) * 3 * totdisp, "multires disps");
- /* Super-face edge cross */
- for(k = 0; k < skip-1; ++k) {
- VecAddUf(mvd_f2->co, mvs_e1->co);
- mvd_f2++;
- mvs_e1++;
- }
- for(x = 1; x < sll; ++x) {
- VecAddUf(mvd_f2->co, mvs_f2->co);
- mvd_f2++;
- mvs_f2++;
-
- for(k = 0; k < skip-1; ++k) {
- VecAddUf(mvd_f2->co, mvs_e1->co);
- mvd_f2++;
- mvs_e1++;
- }
- }
+ ndisps = disps;
+ hdisps = mdisp->disps;
- restore = mvs_e1;
- for(y = 0; y < sll - 1; ++y) {
- for(x = 0; x < sll; ++x) {
- for(k = 0; k < skip - 1; ++k) {
- VecAddUf(mvd_f3[(skip-1)+(y*skip) + (x*skip+k)*(slo2-2)].co,
- mvs_e1->co);
- ++mvs_e1;
- }
- mvs_e1 += skip-1;
- }
- }
-
- mvs_e1 = restore + skip - 1;
- for(y = 0; y < sll - 1; ++y) {
- for(x = 0; x < sll; ++x) {
- for(k = 0; k < skip - 1; ++k) {
- VecAddUf(mvd_f3[(slo2-2)*(skip-1)+(x*skip)+k + y*skip*(slo2-2)].co,
- mvs_e1->co);
- ++mvs_e1;
- }
- mvs_e1 += skip - 1;
- }
- }
+ multires_copy_grid(ndisps, hdisps, nsize, hsize);
- mvd_f3 += (slo2-2)*(slo2-2);
- mvs_e1 -= skip - 1;
- }
+ ndisps += nsize*nsize;
+ hdisps += hsize*hsize;
- /* update base (2) face verts */
- for(j = 0; j < end; ++j) {
- mvd_f2 += (slo2 - 1) * (skip - 1);
- for(y = 0; y < sll - 1; ++y) {
- for(x = 0; x < sll - 1; ++x) {
- VecAddUf(mvd_f2->co, mvs_f2->co);
- mvd_f2 += skip;
- ++mvs_f2;
+ MEM_freeN(mdisp->disps);
+ mdisp->disps = disps;
+ mdisp->totdisp = totdisp;
}
- mvd_f2 += (slo2 - 1) * (skip - 1);
}
- mvd_f2 -= (skip - 1);
}
- }
-
- /* edges */
- mvd_e1 = mvd + totvert - me->totvert - me->totedge * (shi2-2);
- mvs_e2 = mvs + totvert - me->totvert - me->totedge * (slo1-2);
- for(i = 0; i < me->totedge; ++i) {
- for(j = 0; j < skip - 1; ++j) {
- VecAddUf(mvd_e1->co, mvs_e1->co);
- mvd_e1++;
- mvs_e1++;
- }
- for(j = 0; j < slo1 - 2; j++) {
- VecAddUf(mvd_e1->co, mvs_e2->co);
- mvd_e1++;
- mvs_e2++;
-
- for(k = 0; k < skip - 1; ++k) {
- VecAddUf(mvd_e1->co, mvs_e1->co);
- mvd_e1++;
- mvs_e1++;
- }
+ else {
+ CustomData_external_remove(&me->ldata, &me->id, CD_MDISPS, me->totloop);
+ CustomData_free_layer_active(&me->ldata, CD_MDISPS, me->totloop);
}
}
- final->needsFree = 1;
- final->release(final);
- mrdm->needsFree = 1;
- MultiresDM_mark_as_modified(mrdm);
- mrdm->release(mrdm);
+ multires_set_tot_level(ob, mmd, lvl);
}
-/* direction=1 for delete higher, direction=0 for lower (not implemented yet) */
-void multiresModifier_del_levels(struct MultiresModifierData *mmd, struct Object *ob, int direction)
+static DerivedMesh *multires_dm_create_local(Object *ob, DerivedMesh *dm, int lvl, int totlvl, int simple)
{
- Mesh *me = get_mesh(ob);
- int distance = mmd->totlvl - mmd->lvl;
- MDisps *mdisps = CustomData_get_layer(&me->fdata, CD_MDISPS);
+ MultiresModifierData mmd;
- multires_force_update(ob);
+ memset(&mmd, 0, sizeof(MultiresModifierData));
+ mmd.lvl = lvl;
+ mmd.sculptlvl = lvl;
+ mmd.renderlvl = lvl;
+ mmd.totlvl = totlvl;
+ mmd.simple = simple;
- if(mdisps && distance > 0 && direction == 1) {
- int skip = multires_side_tot[distance] - 1;
- int st = multires_side_tot[mmd->totlvl - 1];
- int totdisp = multires_quad_tot[mmd->lvl - 1];
- int i, j, x, y;
+ return multires_dm_create_from_derived(&mmd, 1, dm, ob, 0, 0);
+}
- for(i = 0; i < me->totface; ++i) {
- float (*disps)[3] = MEM_callocN(sizeof(float) * 3 * totdisp, "multires del disps");
-
- for(j = 0, y = 0; y < st; y += skip) {
- for(x = 0; x < st; x += skip) {
- copy_v3_v3(disps[j], mdisps[i].disps[y * st + x]);
- ++j;
- }
- }
+static DerivedMesh *subsurf_dm_create_local(Object *ob, DerivedMesh *dm, int lvl, int simple, int optimal)
+{
+ SubsurfModifierData smd;
- MEM_freeN(mdisps[i].disps);
- mdisps[i].disps = disps;
- mdisps[i].totdisp = totdisp;
- }
- }
+ memset(&smd, 0, sizeof(SubsurfModifierData));
+ smd.levels = smd.renderLevels = lvl;
+ smd.flags |= eSubsurfModifierFlag_SubsurfUv;
+ if(simple)
+ smd.subdivType = ME_SIMPLE_SUBSURF;
+ if(optimal)
+ smd.flags |= eSubsurfModifierFlag_ControlEdges;
- mmd->totlvl = mmd->lvl;
+ return subsurf_make_derived_from_derived(dm, &smd, 0, NULL, 0, 0);
}
-void multiresModifier_subdivide(MultiresModifierData *mmd, Object *ob, int distance, int updateblock, int simple)
+static void multires_reallocate_mdisps(Mesh *me, MDisps *mdisps, int lvl)
{
- DerivedMesh *final = NULL;
- int totsubvert = 0, totsubface = 0, totsubedge = 0;
- Mesh *me = get_mesh(ob);
- MDisps *mdisps;
int i;
- if(distance == 0)
- return;
-
- if(mmd->totlvl > multires_max_levels)
- mmd->totlvl = multires_max_levels;
- if(mmd->lvl > multires_max_levels)
- mmd->lvl = multires_max_levels;
-
- multires_force_update(ob);
-
- mmd->lvl = mmd->totlvl;
- mmd->totlvl += distance;
-
- mdisps = CustomData_get_layer(&me->fdata, CD_MDISPS);
- if(!mdisps)
- mdisps = CustomData_add_layer(&me->fdata, CD_MDISPS, CD_DEFAULT, NULL, me->totface);
-
- if(mdisps->disps && !updateblock && mmd->totlvl > 2) {
- DerivedMesh *orig, *mrdm;
- MultiresModifierData mmd_sub;
-
- orig = CDDM_from_mesh(me, NULL);
- memset(&mmd_sub, 0, sizeof(MultiresModifierData));
- mmd_sub.lvl = mmd_sub.totlvl = mmd->lvl;
- mmd_sub.simple = simple;
- mrdm = multires_dm_create_from_derived(&mmd_sub, 1, orig, ob, 0, 0);
- totsubvert = mrdm->getNumVerts(mrdm);
- totsubedge = mrdm->getNumEdges(mrdm);
- totsubface = mrdm->getNumTessFaces(mrdm);
- orig->needsFree = 1;
- orig->release(orig);
-
- final = multires_subdisp_pre(mrdm, distance, simple);
- mrdm->needsFree = 1;
- mrdm->release(mrdm);
- }
-
- for(i = 0; i < me->totface; ++i) {
- const int totdisp = multires_quad_tot[mmd->totlvl - 1];
+ /* reallocate displacements to be filled in */
+ for(i = 0; i < me->totloop; ++i) {
+ int totdisp = multires_grid_tot[lvl];
float (*disps)[3] = MEM_callocN(sizeof(float) * 3 * totdisp, "multires disps");
if(mdisps[i].disps)
@@ -493,772 +350,482 @@ void multiresModifier_subdivide(MultiresModifierData *mmd, Object *ob, int dista
mdisps[i].disps = disps;
mdisps[i].totdisp = totdisp;
}
-
-
- if(final) {
- DerivedMesh *orig;
-
- orig = CDDM_from_mesh(me, NULL);
-
- multires_subdisp(orig, ob, final, mmd->lvl, mmd->totlvl, totsubvert, totsubedge, totsubface, 0);
-
- orig->needsFree = 1;
- orig->release(orig);
- }
-
- mmd->lvl = mmd->totlvl;
}
-typedef struct DisplacerEdges {
- /* DerivedMesh index at the start of each edge (using face x/y directions to define the start) */
- int base[4];
- /* 1 if edge moves in the positive x or y direction, -1 otherwise */
- int dir[4];
-} DisplacerEdges;
-
-typedef struct DisplacerSpill {
- /* Index of face (in base mesh), -1 for none */
- int face;
-
- /* Spill flag */
- /* 1 = Negative variable axis */
- /* 2 = Near fixed axis */
- /* 4 = Flip axes */
- int f;
+void multiresModifier_subdivide(MultiresModifierData *mmd, Object *ob, int updateblock, int simple)
+{
+ Mesh *me = ob->data;
+ MDisps *mdisps;
+ int lvl= mmd->totlvl;
+ int totlvl= mmd->totlvl+1;
- /* Neighboring edges */
- DisplacerEdges edges;
-} DisplacerSpill;
+ if(totlvl > multires_max_levels)
+ return;
-typedef struct MultiresDisplacer {
- Mesh *me;
- MDisps *grid;
- MFace *face;
-
- int dm_first_base_vert_index;
+ multires_force_update(ob);
- int spacing;
- int sidetot, interior_st, disp_st;
- int sidendx;
- int type;
- int invert;
- MVert *subco;
- int subco_index, face_index;
- float weight;
+ mdisps = CustomData_get_layer(&me->ldata, CD_MDISPS);
+ if(!mdisps)
+ mdisps = CustomData_add_layer(&me->ldata, CD_MDISPS, CD_DEFAULT, NULL, me->totloop);
+
+ if(mdisps->disps && !updateblock && totlvl > 1) {
+ /* upsample */
+ DerivedMesh *lowdm, *cddm, *highdm;
+ DMGridData **highGridData, **lowGridData, **subGridData;
+ CCGSubSurf *ss;
+ int i, numGrids, highGridSize, lowGridSize;
+
+ /* create subsurf DM from original mesh at high level */
+ cddm = CDDM_from_mesh(me, NULL);
+ highdm = subsurf_dm_create_local(ob, cddm, totlvl, simple, 0);
+
+ /* create multires DM from original mesh at low level */
+ lowdm = multires_dm_create_local(ob, cddm, lvl, lvl, simple);
+ cddm->release(cddm);
+
+ /* copy subsurf grids and replace them with low displaced grids */
+ numGrids = highdm->getNumGrids(highdm);
+ highGridSize = highdm->getGridSize(highdm);
+ highGridData = highdm->getGridData(highdm);
+ lowGridSize = lowdm->getGridSize(lowdm);
+ lowGridData = lowdm->getGridData(lowdm);
+
+ subGridData = MEM_callocN(sizeof(float*)*numGrids, "subGridData*");
+
+ for(i = 0; i < numGrids; ++i) {
+ /* backup subsurf grids */
+ subGridData[i] = MEM_callocN(sizeof(DMGridData)*highGridSize*highGridSize, "subGridData");
+ memcpy(subGridData[i], highGridData[i], sizeof(DMGridData)*highGridSize*highGridSize);
+
+ /* overwrite with current displaced grids */
+ multires_copy_dm_grid(highGridData[i], lowGridData[i], highGridSize, lowGridSize);
+ }
- /* Valence for each corner */
- int valence[4];
+ /* low lower level dm no longer needed at this point */
+ lowdm->release(lowdm);
- /* Neighboring edges for current face */
- DisplacerEdges edges_primary;
+ /* subsurf higher levels again with displaced data */
+ ss= ((CCGDerivedMesh*)highdm)->ss;
+ ccgSubSurf_updateFromFaces(ss, lvl, NULL, 0);
+ ccgSubSurf_updateLevels(ss, lvl, NULL, 0);
- /* Neighboring faces */
- DisplacerSpill spill_x, spill_y;
+ /* reallocate displacements */
+ multires_reallocate_mdisps(me, mdisps, totlvl);
- int *face_offsets;
+ /* compute displacements */
+ multiresModifier_disp_run(highdm, me, 1, 0, subGridData, totlvl);
- int x, y, ax, ay;
-} MultiresDisplacer;
+ /* free */
+ highdm->release(highdm);
+ for(i = 0; i < numGrids; ++i)
+ MEM_freeN(subGridData[i]);
+ MEM_freeN(subGridData);
+ }
+ else {
+ /* only reallocate, nothing to upsample */
+ multires_reallocate_mdisps(me, mdisps, totlvl);
+ }
-static int mface_v(MFace *f, int v)
-{
- return v == 0 ? f->v1 : v == 1 ? f->v2 : v == 2 ? f->v3 : v == 3 ? f->v4 : -1;
+ multires_set_tot_level(ob, mmd, totlvl);
}
-/* Get the edges (and their directions) */
-static void find_displacer_edges(MultiresDisplacer *d, DerivedMesh *dm, DisplacerEdges *de, MFace *f)
+static void grid_tangent(int gridSize, int index, int x, int y, int axis, DMGridData **gridData, float t[3])
{
- ListBase *emap = MultiresDM_get_vert_edge_map(dm);
- IndexNode *n;
- int i, end = f->v4 ? 4 : 3;
- int offset = dm->getNumVerts(dm) - d->me->totvert - d->me->totedge * d->interior_st;
-
- for(i = 0; i < end; ++i) {
- int vcur = mface_v(f, i);
- int vnext = mface_v(f, i == end - 1 ? 0 : i + 1);
-
- de->dir[i] = 1;
-
- for(n = emap[vcur].first; n; n = n->next) {
- MEdge *e = &d->me->medge[n->index];
-
- if(e->v1 == vnext || e->v2 == vnext) {
- de->base[i] = n->index * d->interior_st;
- if(((i == 0 || i == 1) && e->v1 == vnext) ||
- ((i == 2 || i == 3) && e->v2 == vnext)) {
- de->dir[i] = -1;
- de->base[i] += d->interior_st - 1;
- }
- de->base[i] += offset;
- break;
- }
+ if(axis == 0) {
+ if(x == gridSize - 1) {
+ if(y == gridSize - 1)
+ sub_v3_v3v3(t, gridData[index][x + gridSize*(y - 1)].co, gridData[index][x - 1 + gridSize*(y - 1)].co);
+ else
+ sub_v3_v3v3(t, gridData[index][x + gridSize*y].co, gridData[index][x - 1 + gridSize*y].co);
}
+ else
+ sub_v3_v3v3(t, gridData[index][x + 1 + gridSize*y].co, gridData[index][x + gridSize*y].co);
}
-}
-
-/* Returns in out the corners [0-3] that use v1 and v2 */
-static void find_face_corners(MFace *f, int v1, int v2, int out[2])
-{
- int i, end = f->v4 ? 4 : 3;
-
- for(i = 0; i < end; ++i) {
- int corner = mface_v(f, i);
- if(corner == v1)
- out[0] = i;
- if(corner == v2)
- out[1] = i;
+ else if(axis == 1) {
+ if(y == gridSize - 1) {
+ if(x == gridSize - 1)
+ sub_v3_v3v3(t, gridData[index][x - 1 + gridSize*y].co, gridData[index][x - 1 + gridSize*(y - 1)].co);
+ else
+ sub_v3_v3v3(t, gridData[index][x + gridSize*y].co, gridData[index][x + gridSize*(y - 1)].co);
+ }
+ else
+ sub_v3_v3v3(t, gridData[index][x + gridSize*(y + 1)].co, gridData[index][x + gridSize*y].co);
}
}
-static void multires_displacer_get_spill_faces(MultiresDisplacer *d, DerivedMesh *dm, MFace *mface)
+static void multiresModifier_disp_run(DerivedMesh *dm, Mesh *me, int invert, int add, DMGridData **oldGridData, int totlvl)
{
- ListBase *map = MultiresDM_get_vert_face_map(dm);
- IndexNode *n1, *n2;
- int v4 = d->face->v4 ? d->face->v4 : d->face->v1;
- int crn[2], lv;
-
- memset(&d->spill_x, 0, sizeof(DisplacerSpill));
- memset(&d->spill_y, 0, sizeof(DisplacerSpill));
- d->spill_x.face = d->spill_y.face = -1;
-
- for(n1 = map[d->face->v3].first; n1; n1 = n1->next) {
- if(n1->index == d->face_index)
- continue;
-
- for(n2 = map[d->face->v2].first; n2; n2 = n2->next) {
- if(n1->index == n2->index)
- d->spill_x.face = n1->index;
- }
- for(n2 = map[v4].first; n2; n2 = n2->next) {
- if(n1->index == n2->index)
- d->spill_y.face = n1->index;
- }
- }
-
- if(d->spill_x.face != -1) {
- /* Neighbor of v2/v3 found, find flip and orientation */
- find_face_corners(&mface[d->spill_x.face], d->face->v2, d->face->v3, crn);
- lv = mface[d->spill_x.face].v4 ? 3 : 2;
-
- if(crn[0] == 0 && crn[1] == lv)
- d->spill_x.f = 0+2+0;
- else if(crn[0] == lv && crn[1] == 0)
- d->spill_x.f = 1+2+0;
- else if(crn[0] == 1 && crn[1] == 0)
- d->spill_x.f = 1+2+4;
- else if(crn[0] == 0 && crn[1] == 1)
- d->spill_x.f = 0+2+4;
- else if(crn[0] == 2 && crn[1] == 1)
- d->spill_x.f = 1+0+0;
- else if(crn[0] == 1 && crn[1] == 2)
- d->spill_x.f = 0+0+0;
- else if(crn[0] == 3 && crn[1] == 2)
- d->spill_x.f = 0+0+4;
- else if(crn[0] == 2 && crn[1] == 3)
- d->spill_x.f = 1+0+4;
-
- find_displacer_edges(d, dm, &d->spill_x.edges, &mface[d->spill_x.face]);
- }
-
- if(d->spill_y.face != -1) {
- /* Neighbor of v3/v4 found, find flip and orientation */
- find_face_corners(&mface[d->spill_y.face], d->face->v3, v4, crn);
- lv = mface[d->spill_y.face].v4 ? 3 : 2;
-
- if(crn[0] == 1 && crn[1] == 0)
- d->spill_y.f = 1+2+0;
- else if(crn[0] == 0 && crn[1] == 1)
- d->spill_y.f = 0+2+0;
- else if(crn[0] == 2 && crn[1] == 1)
- d->spill_y.f = 1+0+4;
- else if(crn[0] == 1 && crn[1] == 2)
- d->spill_y.f = 0+0+4;
- else if(crn[0] == 3 && crn[1] == 2)
- d->spill_y.f = 0+0+0;
- else if(crn[0] == 2 && crn[1] == 3)
- d->spill_y.f = 1+0+0;
- else if(crn[0] == 0 && crn[1] == lv)
- d->spill_y.f = 0+2+4;
- else if(crn[0] == lv && crn[1] == 0)
- d->spill_y.f = 1+2+4;
-
- find_displacer_edges(d, dm, &d->spill_y.edges, &mface[d->spill_y.face]);
+ CCGDerivedMesh *ccgdm = (CCGDerivedMesh*)dm;
+ DMGridData **gridData, **subGridData;
+ MPoly *mpoly = me->mpoly;
+ MDisps *mdisps = CustomData_get_layer(&me->ldata, CD_MDISPS);
+ int *gridOffset;
+ int i, k, numGrids, gridSize, dGridSize, dSkip;
+
+ if(!mdisps) {
+ if(invert)
+ mdisps = CustomData_add_layer(&me->ldata, CD_MDISPS, CD_DEFAULT, NULL, me->totloop);
+ else
+ return;
}
-}
-static void find_corner_valences(MultiresDisplacer *d, DerivedMesh *dm)
-{
- int i;
+ numGrids = dm->getNumGrids(dm);
+ gridSize = dm->getGridSize(dm);
+ gridData = dm->getGridData(dm);
+ gridOffset = dm->getGridOffset(dm);
+ subGridData = (oldGridData)? oldGridData: gridData;
+
+ dGridSize = multires_side_tot[totlvl];
+ dSkip = (dGridSize-1)/(gridSize-1);
+
+ k = 0; /*current loop/mdisp index within the mloop array*/
+
+ #pragma omp parallel for private(i) schedule(static)
+ for(i = 0; i < me->totpoly; ++i) {
+ const int numVerts = mpoly[i].totloop;
+ int S, x, y, gIndex = gridOffset[i];
+
+ for(S = 0; S < numVerts; ++S, ++gIndex, ++k) {
+ MDisps *mdisp = &mdisps[k];
+ DMGridData *grid = gridData[gIndex];
+ DMGridData *subgrid = subGridData[gIndex];
+ float (*dispgrid)[3] = NULL;
+
+ /* when adding new faces in edit mode, need to allocate disps */
+ if(!mdisp->disps)
+ #pragma omp critical
+ {
+ multires_reallocate_mdisps(me, mdisps, totlvl);
+ }
- d->valence[3] = -1;
+ dispgrid = mdisp->disps;
- /* Set the vertex valence for the corners */
- for(i = 0; i < (d->face->v4 ? 4 : 3); ++i)
- d->valence[i] = BLI_countlist(&MultiresDM_get_vert_edge_map(dm)[mface_v(d->face, i)]);
-}
+ for(y = 0; y < gridSize; y++) {
+ for(x = 0; x < gridSize; x++) {
+ float *co = grid[x + y*gridSize].co;
+ float *sco = subgrid[x + y*gridSize].co;
+ float *no = subgrid[x + y*gridSize].no;
+ float *data = dispgrid[dGridSize*y*dSkip + x*dSkip];
+ float mat[3][3], tx[3], ty[3], disp[3], d[3];
-static void multires_displacer_init(MultiresDisplacer *d, DerivedMesh *dm,
- const int face_index, const int invert)
-{
- Mesh *me = MultiresDM_get_mesh(dm);
-
- d->me = me;
- d->face = me->mface + face_index;
- d->face_index = face_index;
- d->face_offsets = MultiresDM_get_face_offsets(dm);
- /* Get the multires grid from customdata */
- d->grid = CustomData_get_layer(&me->fdata, CD_MDISPS);
- if(d->grid)
- d->grid += face_index;
-
- d->spacing = pow(2, MultiresDM_get_totlvl(dm) - MultiresDM_get_lvl(dm));
- d->sidetot = multires_side_tot[MultiresDM_get_lvl(dm) - 1];
- d->interior_st = d->sidetot - 2;
- d->disp_st = multires_side_tot[MultiresDM_get_totlvl(dm) - 1];
- d->invert = invert;
-
- multires_displacer_get_spill_faces(d, dm, me->mface);
- find_displacer_edges(d, dm, &d->edges_primary, d->face);
- find_corner_valences(d, dm);
-
- d->dm_first_base_vert_index = dm->getNumVerts(dm) - me->totvert;
-}
+ /* construct tangent space matrix */
+ grid_tangent(gridSize, gIndex, x, y, 0, subGridData, tx);
+ normalize_v3(tx);
-static void multires_displacer_weight(MultiresDisplacer *d, const float w)
-{
- d->weight = w;
-}
+ grid_tangent(gridSize, gIndex, x, y, 1, subGridData, ty);
+ normalize_v3(ty);
-static void multires_displacer_anchor(MultiresDisplacer *d, const int type, const int side_index)
-{
- d->sidendx = side_index;
- d->x = d->y = d->sidetot / 2;
- d->type = type;
-
- if(type == 2) {
- if(side_index == 0)
- d->y -= 1;
- else if(side_index == 1)
- d->x += 1;
- else if(side_index == 2)
- d->y += 1;
- else if(side_index == 3)
- d->x -= 1;
- }
- else if(type == 3) {
- if(side_index == 0) {
- d->x -= 1;
- d->y -= 1;
- }
- else if(side_index == 1) {
- d->x += 1;
- d->y -= 1;
- }
- else if(side_index == 2) {
- d->x += 1;
- d->y += 1;
- }
- else if(side_index == 3) {
- d->x -= 1;
- d->y += 1;
- }
- }
+ //mul_v3_fl(tx, 1.0f/(gridSize-1));
+ //mul_v3_fl(ty, 1.0f/(gridSize-1));
+ //cross_v3_v3v3(no, tx, ty);
- d->ax = d->x;
- d->ay = d->y;
-}
+ column_vectors_to_mat3(mat, tx, ty, no);
-static void multires_displacer_anchor_edge(MultiresDisplacer *d, int v1, int v2, int x)
-{
- d->type = 4;
-
- if(v1 == d->face->v1) {
- d->x = 0;
- d->y = 0;
- if(v2 == d->face->v2)
- d->x += x;
- else if(v2 == d->face->v3) {
- if(x < d->sidetot / 2)
- d->y = x;
- else {
- d->x = x;
- d->y = d->sidetot - 1;
- }
- }
- else
- d->y += x;
- }
- else if(v1 == d->face->v2) {
- d->x = d->sidetot - 1;
- d->y = 0;
- if(v2 == d->face->v1)
- d->x -= x;
- else
- d->y += x;
- }
- else if(v1 == d->face->v3) {
- d->x = d->sidetot - 1;
- d->y = d->sidetot - 1;
- if(v2 == d->face->v2)
- d->y -= x;
- else if(v2 == d->face->v1) {
- if(x < d->sidetot / 2)
- d->x -= x;
- else {
- d->x = 0;
- d->y -= x;
+ if(!invert) {
+ /* convert to object space and add */
+ mul_v3_m3v3(disp, mat, data);
+ add_v3_v3v3(co, sco, disp);
+ }
+ else if(!add) {
+ /* convert difference to tangent space */
+ sub_v3_v3v3(disp, co, sco);
+ invert_m3(mat);
+ mul_v3_m3v3(data, mat, disp);
+ }
+ else {
+ /* convert difference to tangent space */
+ invert_m3(mat);
+ mul_v3_m3v3(d, mat, co);
+ add_v3_v3(data, d);
+ }
+ }
}
}
- else
- d->x -= x;
}
- else if(v1 == d->face->v4) {
- d->x = 0;
- d->y = d->sidetot - 1;
- if(v2 == d->face->v3)
- d->x += x;
- else
- d->y -= x;
+
+ if(!invert) {
+ ccgSubSurf_stitchFaces(ccgdm->ss, 0, NULL, 0);
+ ccgSubSurf_updateNormals(ccgdm->ss, NULL, 0);
}
}
-static void multires_displacer_anchor_vert(MultiresDisplacer *d, const int v)
+static void multiresModifier_update(DerivedMesh *dm)
{
- const int e = d->sidetot - 1;
+ CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm;
+ Object *ob;
+ Mesh *me;
+ MDisps *mdisps;
+ MultiresModifierData *mmd;
- d->type = 5;
+ ob = ccgdm->multires.ob;
+ me = ccgdm->multires.ob->data;
+ mmd = ccgdm->multires.mmd;
+ CustomData_external_read(&me->ldata, &me->id, CD_MASK_MDISPS, me->totloop);
+ mdisps = CustomData_get_layer(&me->ldata, CD_MDISPS);
- d->x = d->y = 0;
- if(v == d->face->v2)
- d->x = e;
- else if(v == d->face->v3)
- d->x = d->y = e;
- else if(v == d->face->v4)
- d->y = e;
-}
+ if(mdisps) {
+ int lvl = ccgdm->multires.lvl;
+ int totlvl = ccgdm->multires.totlvl;
+
+ if(lvl < totlvl) {
+ Mesh *me = ob->data;
+ DerivedMesh *lowdm, *cddm, *highdm;
+ DMGridData **highGridData, **lowGridData, **subGridData, **gridData, *diffGrid;
+ CCGSubSurf *ss;
+ int i, j, numGrids, highGridSize, lowGridSize;
+
+ /* create subsurf DM from original mesh at high level */
+ cddm = CDDM_from_mesh(me, NULL);
+ highdm = subsurf_dm_create_local(ob, cddm, totlvl, mmd->simple, 0);
+
+ /* create multires DM from original mesh and displacements */
+ lowdm = multires_dm_create_local(ob, cddm, lvl, totlvl, mmd->simple);
+ cddm->release(cddm);
+
+ /* gather grid data */
+ numGrids = highdm->getNumGrids(highdm);
+ highGridSize = highdm->getGridSize(highdm);
+ highGridData = highdm->getGridData(highdm);
+ lowGridSize = lowdm->getGridSize(lowdm);
+ lowGridData = lowdm->getGridData(lowdm);
+ gridData = dm->getGridData(dm);
+
+ subGridData = MEM_callocN(sizeof(DMGridData*)*numGrids, "subGridData*");
+ diffGrid = MEM_callocN(sizeof(DMGridData)*lowGridSize*lowGridSize, "diff");
+
+ for(i = 0; i < numGrids; ++i) {
+ /* backup subsurf grids */
+ subGridData[i] = MEM_callocN(sizeof(DMGridData)*highGridSize*highGridSize, "subGridData");
+ memcpy(subGridData[i], highGridData[i], sizeof(DMGridData)*highGridSize*highGridSize);
+
+ /* write difference of subsurf and displaced low level into high subsurf */
+ for(j = 0; j < lowGridSize*lowGridSize; ++j)
+ sub_v3_v3v3(diffGrid[j].co, gridData[i][j].co, lowGridData[i][j].co);
+
+ multires_copy_dm_grid(highGridData[i], diffGrid, highGridSize, lowGridSize);
+ }
-static void multires_displacer_jump(MultiresDisplacer *d)
-{
- if(d->sidendx == 0) {
- d->x -= 1;
- d->y = d->ay;
- }
- else if(d->sidendx == 1) {
- d->x = d->ax;
- d->y -= 1;
- }
- else if(d->sidendx == 2) {
- d->x += 1;
- d->y = d->ay;
- }
- else if(d->sidendx == 3) {
- d->x = d->ax;
- d->y += 1;
- }
-}
+ /* lower level dm no longer needed at this point */
+ MEM_freeN(diffGrid);
+ lowdm->release(lowdm);
-/* Treating v1 as (0,0) and v3 as (st-1,st-1),
- returns the index of the vertex at (x,y).
- If x or y is >= st, wraps over to the adjacent face,
- or if there is no adjacent face, returns -2. */
-static int multires_index_at_loc(int face_index, int x, int y, MultiresDisplacer *d, DisplacerEdges *de)
-{
- int coord_edge = d->sidetot - 1; /* Max value of x/y at edge of grid */
- int mid = d->sidetot / 2;
- int lim = mid - 1;
- int qtot = lim * lim;
- int base = d->face_offsets[face_index];
-
- /* Edge spillover */
- if(x == d->sidetot || y == d->sidetot) {
- int flags, v_axis, f_axis, lx, ly;
-
- if(x == d->sidetot && d->spill_x.face != -1) {
- flags = d->spill_x.f;
-
- /* Handle triangle seam between v1 and v3 */
- if(!d->me->mface[d->spill_x.face].v4 &&
- ((flags == 2 && y >= mid) || (flags == 3 && y < mid)))
- flags += 2;
-
- v_axis = (flags & 1) ? d->sidetot - 1 - y : y;
- f_axis = (flags & 2) ? 1 : d->sidetot - 2;
- lx = f_axis, ly = v_axis;
-
- if(flags & 4) {
- lx = v_axis;
- ly = f_axis;
- }
+ /* subsurf higher levels again with difference of coordinates */
+ ss= ((CCGDerivedMesh*)highdm)->ss;
+ ccgSubSurf_updateFromFaces(ss, lvl, NULL, 0);
+ ccgSubSurf_updateLevels(ss, lvl, NULL, 0);
- return multires_index_at_loc(d->spill_x.face, lx, ly, d, &d->spill_x.edges);
+ /* add to displacements */
+ multiresModifier_disp_run(highdm, me, 1, 1, subGridData, mmd->totlvl);
+
+ /* free */
+ highdm->release(highdm);
+ for(i = 0; i < numGrids; ++i)
+ MEM_freeN(subGridData[i]);
+ MEM_freeN(subGridData);
}
- else if(y == d->sidetot && d->spill_y.face != -1) {
- flags = d->spill_y.f;
+ else {
+ DerivedMesh *cddm, *subdm;
- /* Handle triangle seam between v1 and v3 */
- if(!d->me->mface[d->spill_y.face].v4 &&
- ((flags == 6 && x >= mid) || (flags == 7 && x < mid)))
- flags = ~flags;
+ cddm = CDDM_from_mesh(me, NULL);
+ subdm = subsurf_dm_create_local(ob, cddm, mmd->totlvl, mmd->simple, 0);
+ cddm->release(cddm);
- v_axis = (flags & 1) ? x : d->sidetot - 1 - x;
- f_axis = (flags & 2) ? 1 : d->sidetot - 2;
- lx = v_axis, ly = f_axis;
+ multiresModifier_disp_run(dm, me, 1, 0, subdm->getGridData(subdm), mmd->totlvl);
- if(flags & 4) {
- lx = f_axis;
- ly = v_axis;
- }
-
- return multires_index_at_loc(d->spill_y.face, lx, ly, d, &d->spill_y.edges);
+ subdm->release(subdm);
}
- else
- return -2;
- }
- /* Corners */
- else if(x == 0 && y == 0)
- return d->dm_first_base_vert_index + d->face->v1;
- else if(x == coord_edge && y == 0)
- return d->dm_first_base_vert_index + d->face->v2;
- else if(x == coord_edge && y == coord_edge)
- return d->dm_first_base_vert_index + d->face->v3;
- else if(x == 0 && y == coord_edge)
- return d->dm_first_base_vert_index + d->face->v4;
- /* Edges */
- else if(x == 0) {
- if(d->face->v4)
- return de->base[3] + de->dir[3] * (y - 1);
- else
- return de->base[2] + de->dir[2] * (y - 1);
- }
- else if(y == 0)
- return de->base[0] + de->dir[0] * (x - 1);
- else if(x == d->sidetot - 1)
- return de->base[1] + de->dir[1] * (y - 1);
- else if(y == d->sidetot - 1)
- return de->base[2] + de->dir[2] * (x - 1);
- /* Face center */
- else if(x == mid && y == mid)
- return base;
- /* Cross */
- else if(x == mid && y < mid)
- return base + (mid - y);
- else if(y == mid && x > mid)
- return base + lim + (x - mid);
- else if(x == mid && y > mid)
- return base + lim*2 + (y - mid);
- else if(y == mid && x < mid) {
- if(d->face->v4)
- return base + lim*3 + (mid - x);
- else
- return base + lim*2 + (mid - x);
- }
- /* Quarters */
- else {
- int offset = base + lim * (d->face->v4 ? 4 : 3);
- if(x < mid && y < mid)
- return offset + ((mid - x - 1)*lim + (mid - y));
- else if(x > mid && y < mid)
- return offset + qtot + ((mid - y - 1)*lim + (x - mid));
- else if(x > mid && y > mid)
- return offset + qtot*2 + ((x - mid - 1)*lim + (y - mid));
- else if(x < mid && y > mid)
- return offset + qtot*3 + ((y - mid - 1)*lim + (mid - x));
}
-
- return -1;
}
-/* Calculate the TS matrix used for applying displacements.
- Uses the undisplaced subdivided mesh's curvature to find a
- smoothly normal and tangents. */
-static void calc_disp_mat(MultiresDisplacer *d, float mat[3][3])
+void multires_stitch_grids(Object *ob)
{
- int u = multires_index_at_loc(d->face_index, d->x + 1, d->y, d, &d->edges_primary);
- int v = multires_index_at_loc(d->face_index, d->x, d->y + 1, d, &d->edges_primary);
- float norm[3], t1[3], t2[3], inv[3][3];
- MVert *base = d->subco + d->subco_index;
+ /* utility for smooth brush */
+ if(ob && ob->derivedFinal) {
+ CCGDerivedMesh *ccgdm = (CCGDerivedMesh*)ob->derivedFinal;
+ CCGFace **faces;
+ int totface;
- //printf("f=%d, x=%d, y=%d, i=%d, u=%d, v=%d ", d->face_index, d->x, d->y, d->subco_index, u, v);
-
- norm[0] = base->no[0] / 32767.0f;
- norm[1] = base->no[1] / 32767.0f;
- norm[2] = base->no[2] / 32767.0f;
-
- /* Special handling for vertices of valence 3 */
- if(d->valence[1] == 3 && d->x == d->sidetot - 1 && d->y == 0)
- u = -1;
- else if(d->valence[2] == 3 && d->x == d->sidetot - 1 && d->y == d->sidetot - 1)
- u = v = -1;
- else if(d->valence[3] == 3 && d->x == 0 && d->y == d->sidetot - 1)
- v = -1;
-
- /* If either u or v is -2, it's on a boundary. In this
- case, back up by one row/column and use the same
- vector as the preceeding sub-edge. */
-
- if(u < 0) {
- u = multires_index_at_loc(d->face_index, d->x - 1, d->y, d, &d->edges_primary);
- sub_v3_v3v3(t1, base->co, d->subco[u].co);
+ if(ccgdm->pbvh) {
+ BLI_pbvh_get_grid_updates(ccgdm->pbvh, 0, (void***)&faces, &totface);
+
+ if(totface) {
+ ccgSubSurf_stitchFaces(ccgdm->ss, 0, faces, totface);
+ MEM_freeN(faces);
+ }
+ }
}
- else
- sub_v3_v3v3(t1, d->subco[u].co, base->co);
+}
- if(v < 0) {
- v = multires_index_at_loc(d->face_index, d->x, d->y - 1, d, &d->edges_primary);
- sub_v3_v3v3(t2, base->co, d->subco[v].co);
+DerivedMesh *multires_dm_create_from_derived(MultiresModifierData *mmd, int local_mmd, DerivedMesh *dm, Object *ob,
+ int useRenderParams, int isFinalCalc)
+{
+ Mesh *me= ob->data;
+ DerivedMesh *result;
+ CCGDerivedMesh *ccgdm;
+ DMGridData **gridData, **subGridData;
+ int lvl= multires_get_level(ob, mmd, useRenderParams);
+ int i, gridSize, numGrids;
+
+ if(lvl == 0)
+ return dm;
+
+ result = subsurf_dm_create_local(ob, dm, lvl,
+ mmd->simple, mmd->flags & eMultiresModifierFlag_ControlEdges);
+
+ if(!local_mmd) {
+ ccgdm = (CCGDerivedMesh*)result;
+
+ ccgdm->multires.ob = ob;
+ ccgdm->multires.mmd = mmd;
+ ccgdm->multires.local_mmd = local_mmd;
+ ccgdm->multires.lvl = lvl;
+ ccgdm->multires.totlvl = mmd->totlvl;
+ ccgdm->multires.modified = 0;
+ ccgdm->multires.update = multiresModifier_update;
}
- else
- sub_v3_v3v3(t2, d->subco[v].co, base->co);
- //printf("uu=%d, vv=%d\n", u, v);
+ numGrids = result->getNumGrids(result);
+ gridSize = result->getGridSize(result);
+ gridData = result->getGridData(result);
- normalize_v3(t1);
- normalize_v3(t2);
- Mat3FromColVecs(mat, t1, t2, norm);
+ subGridData = MEM_callocN(sizeof(DMGridData*)*numGrids, "subGridData*");
- if(d->invert) {
- invert_m3_m3(inv, mat);
- copy_m3_m3(mat, inv);
+ for(i = 0; i < numGrids; i++) {
+ subGridData[i] = MEM_callocN(sizeof(DMGridData)*gridSize*gridSize, "subGridData");
+ memcpy(subGridData[i], gridData[i], sizeof(DMGridData)*gridSize*gridSize);
}
-}
-static void multires_displace(MultiresDisplacer *d, float co[3])
-{
- float disp[3], mat[3][3];
- float *data;
- MVert *subco = &d->subco[d->subco_index];
+ CustomData_external_read(&me->ldata, &me->id, CD_MASK_MDISPS, me->totloop);
+ multiresModifier_disp_run(result, ob->data, 0, 0, subGridData, mmd->totlvl);
- if(!d->grid || !d->grid->disps) return;
+ for(i = 0; i < numGrids; i++)
+ MEM_freeN(subGridData[i]);
+ MEM_freeN(subGridData);
- data = d->grid->disps[(d->y * d->spacing) * d->disp_st + (d->x * d->spacing)];
+ return result;
+}
- if(d->invert)
- sub_v3_v3v3(disp, co, subco->co);
- else
- copy_v3_v3(disp, data);
+/**** Old Multires code ****
+***************************/
+/* Adapted from sculptmode.c */
+static void old_mdisps_bilinear(float out[3], float (*disps)[3], int st, float u, float v)
+{
+ int x, y, x2, y2;
+ const int st_max = st - 1;
+ float urat, vrat, uopp;
+ float d[4][3], d2[2][3];
+
+ if(u < 0)
+ u = 0;
+ else if(u >= st)
+ u = st_max;
+ if(v < 0)
+ v = 0;
+ else if(v >= st)
+ v = st_max;
+
+ x = floor(u);
+ y = floor(v);
+ x2 = x + 1;
+ y2 = y + 1;
+
+ if(x2 >= st) x2 = st_max;
+ if(y2 >= st) y2 = st_max;
+
+ urat = u - x;
+ vrat = v - y;
+ uopp = 1 - urat;
- /* Apply ts matrix to displacement */
- calc_disp_mat(d, mat);
- mul_m3_v3(mat, disp);
+ mul_v3_v3fl(d[0], disps[y * st + x], uopp);
+ mul_v3_v3fl(d[1], disps[y * st + x2], urat);
+ mul_v3_v3fl(d[2], disps[y2 * st + x], uopp);
+ mul_v3_v3fl(d[3], disps[y2 * st + x2], urat);
- if(d->invert) {
- copy_v3_v3(data, disp);
-
- }
- else {
- if(d->type == 4 || d->type == 5)
- mul_v3_fl(disp, d->weight);
- add_v3_v3v3(co, co, disp);
- }
+ add_v3_v3v3(d2[0], d[0], d[1]);
+ add_v3_v3v3(d2[1], d[2], d[3]);
+ mul_v3_fl(d2[0], 1 - vrat);
+ mul_v3_fl(d2[1], vrat);
- if(d->type == 2) {
- if(d->sidendx == 0)
- d->y -= 1;
- else if(d->sidendx == 1)
- d->x += 1;
- else if(d->sidendx == 2)
- d->y += 1;
- else if(d->sidendx == 3)
- d->x -= 1;
- }
- else if(d->type == 3) {
- if(d->sidendx == 0)
- d->y -= 1;
- else if(d->sidendx == 1)
- d->x += 1;
- else if(d->sidendx == 2)
- d->y += 1;
- else if(d->sidendx == 3)
- d->x -= 1;
- }
+ add_v3_v3v3(out, d2[0], d2[1]);
}
-static void multiresModifier_disp_run(DerivedMesh *dm, MVert *subco, int invert)
+static void old_mdisps_rotate(int S, int newside, int oldside, int x, int y, float *u, float *v)
{
- const int lvl = MultiresDM_get_lvl(dm);
- const int gridFaces = multires_side_tot[lvl - 2] - 1;
- const int edgeSize = multires_side_tot[lvl - 1] - 1;
- MVert *mvert = CDDM_get_verts(dm);
- MEdge *medge = MultiresDM_get_mesh(dm)->medge;
- MFace *mface = MultiresDM_get_mesh(dm)->mface;
- ListBase *map = MultiresDM_get_vert_face_map(dm);
- Mesh *me = MultiresDM_get_mesh(dm);
- MultiresDisplacer d;
- int i, S, x, y;
-
- d.subco = subco;
- d.subco_index = 0;
+ float offset = oldside*0.5f - 0.5f;
- for(i = 0; i < me->totface; ++i) {
- const int numVerts = mface[i].v4 ? 4 : 3;
-
- /* Center */
- multires_displacer_init(&d, dm, i, invert);
- multires_displacer_anchor(&d, 1, 0);
- multires_displace(&d, mvert->co);
- ++mvert;
- ++d.subco_index;
-
- /* Cross */
- for(S = 0; S < numVerts; ++S) {
- multires_displacer_anchor(&d, 2, S);
- for(x = 1; x < gridFaces; ++x) {
- multires_displace(&d, mvert->co);
- ++mvert;
- ++d.subco_index;
- }
- }
+ if(S == 1) { *u= offset + x; *v = offset - y; }
+ if(S == 2) { *u= offset + y; *v = offset + x; }
+ if(S == 3) { *u= offset - x; *v = offset + y; }
+ if(S == 0) { *u= offset - y; *v = offset - x; }
+}
- /* Quarters */
- for(S = 0; S < numVerts; S++) {
- multires_displacer_anchor(&d, 3, S);
- for(y = 1; y < gridFaces; y++) {
- for(x = 1; x < gridFaces; x++) {
- multires_displace(&d, mvert->co);
- ++mvert;
- ++d.subco_index;
- }
- multires_displacer_jump(&d);
+static void old_mdisps_convert(MFace *mface, MDisps *mdisp)
+{
+ int newlvl = log(sqrt(mdisp->totdisp)-1)/log(2);
+ int oldlvl = newlvl+1;
+ int oldside = multires_side_tot[oldlvl];
+ int newside = multires_side_tot[newlvl];
+ int nvert = (mface->v4)? 4: 3;
+ int newtotdisp = multires_grid_tot[newlvl]*nvert;
+ int x, y, S;
+ float (*disps)[3], (*out)[3], u, v;
+
+ disps = MEM_callocN(sizeof(float) * 3 * newtotdisp, "multires disps");
+
+ out = disps;
+ for(S = 0; S < nvert; S++) {
+ for(y = 0; y < newside; ++y) {
+ for(x = 0; x < newside; ++x, ++out) {
+ old_mdisps_rotate(S, newside, oldside, x, y, &u, &v);
+ old_mdisps_bilinear(*out, mdisp->disps, oldside, u, v);
+
+ if(S == 1) { (*out)[1]= -(*out)[1]; }
+ else if(S == 2) { SWAP(float, (*out)[0], (*out)[1]); }
+ else if(S == 3) { (*out)[0]= -(*out)[0]; }
+ else if(S == 0) { SWAP(float, (*out)[0], (*out)[1]); (*out)[0]= -(*out)[0]; (*out)[1]= -(*out)[1]; };
}
}
}
- for(i = 0; i < me->totedge; ++i) {
- const MEdge *e = &medge[i];
- for(x = 1; x < edgeSize; ++x) {
- IndexNode *n1, *n2;
- int numFaces = 0;
- for(n1 = map[e->v1].first; n1; n1 = n1->next) {
- for(n2 = map[e->v2].first; n2; n2 = n2->next) {
- if(n1->index == n2->index)
- ++numFaces;
- }
- }
- multires_displacer_weight(&d, 1.0f / numFaces);
- /* TODO: Better to have these loops outside the x loop */
- for(n1 = map[e->v1].first; n1; n1 = n1->next) {
- for(n2 = map[e->v2].first; n2; n2 = n2->next) {
- if(n1->index == n2->index) {
- multires_displacer_init(&d, dm, n1->index, invert);
- multires_displacer_anchor_edge(&d, e->v1, e->v2, x);
- multires_displace(&d, mvert->co);
- }
- }
- }
- ++mvert;
- ++d.subco_index;
- }
- }
-
- for(i = 0; i < me->totvert; ++i) {
- IndexNode *n;
- multires_displacer_weight(&d, 1.0f / BLI_countlist(&map[i]));
- for(n = map[i].first; n; n = n->next) {
- multires_displacer_init(&d, dm, n->index, invert);
- multires_displacer_anchor_vert(&d, i);
- multires_displace(&d, mvert->co);
- }
- ++mvert;
- ++d.subco_index;
- }
+ MEM_freeN(mdisp->disps);
- if(!invert)
- CDDM_calc_normals(dm);
+ mdisp->totdisp= newtotdisp;
+ mdisp->disps= disps;
}
-static void multiresModifier_update(DerivedMesh *dm)
+void multires_load_old_250(Mesh *me)
{
- Object *ob;
- Mesh *me;
- MDisps *mdisps;
+ MDisps *mdisps, *mdisps2;
+ MFace *mf;
+ int i, j, k;
- ob = MultiresDM_get_object(dm);
- me = MultiresDM_get_mesh(dm);
- mdisps = CustomData_get_layer(&me->fdata, CD_MDISPS);
+ mdisps= CustomData_get_layer(&me->fdata, CD_MDISPS);
if(mdisps) {
- const int lvl = MultiresDM_get_lvl(dm);
- const int totlvl = MultiresDM_get_totlvl(dm);
+ for(i=0; i<me->totface; i++)
+ if(mdisps[i].totdisp)
+ old_mdisps_convert(&me->mface[i], &mdisps[i]);
- if(lvl < totlvl) {
- /* Propagate disps upwards */
- DerivedMesh *final, *subco_dm, *orig;
- MVert *verts_new = NULL, *cur_lvl_orig_verts = NULL;
- MultiresModifierData mmd;
- int i;
-
- orig = CDDM_from_mesh(me, NULL);
+ CustomData_add_layer(&me->ldata, CD_MDISPS, CD_CALLOC, NULL, me->totloop);
+ mdisps2 = CustomData_get_layer(&me->ldata, CD_MDISPS);
+
+ k = 0;
+ mf = me->mface;
+ for (i=0; i<me->totface; i++, mf++) {
+ int nvert = mf->v4 ? 4 : 3;
+ int totdisp = mdisps[i].totdisp / nvert;
- /* Regenerate the current level's vertex coordinates
- (includes older displacements but not new sculpts) */
- mmd.totlvl = totlvl;
- mmd.lvl = lvl;
- subco_dm = multires_dm_create_from_derived(&mmd, 1, orig, ob, 0, 0);
- cur_lvl_orig_verts = CDDM_get_verts(subco_dm);
-
- /* Subtract the original vertex cos from the new vertex cos */
- verts_new = CDDM_get_verts(dm);
- for(i = 0; i < dm->getNumVerts(dm); ++i)
- sub_v3_v3v3(verts_new[i].co, verts_new[i].co, cur_lvl_orig_verts[i].co);
-
- final = multires_subdisp_pre(dm, totlvl - lvl, 0);
-
- multires_subdisp(orig, ob, final, lvl, totlvl, dm->getNumVerts(dm), dm->getNumEdges(dm),
- dm->getNumTessFaces(dm), 1);
+ for (j=0; j < mf->v4 ? 4 : 3; j++, k++) {
+ mdisps2[k].disps = MEM_callocN(sizeof(float)*3*totdisp, "multires disp in conversion");
+ mdisps2[k].totdisp = totdisp;
+ memcpy(mdisps2[k].disps, mdisps[i].disps + totdisp*j, totdisp);
+ }
- subco_dm->release(subco_dm);
- orig->release(orig);
}
- else
- multiresModifier_disp_run(dm, MultiresDM_get_subco(dm), 1);
- }
-}
-
-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) {
- ob->derivedFinal->needsFree =1;
- ob->derivedFinal->release(ob->derivedFinal);
- ob->derivedFinal = NULL;
}
}
-struct DerivedMesh *multires_dm_create_from_derived(MultiresModifierData *mmd, int local_mmd, DerivedMesh *dm, Object *ob,
- int useRenderParams, int isFinalCalc)
-{
- SubsurfModifierData smd;
- MultiresSubsurf ms;
- DerivedMesh *result;
- int i;
-
- ms.mmd = mmd;
- ms.ob = ob;
- ms.local_mmd = local_mmd;
-
- memset(&smd, 0, sizeof(SubsurfModifierData));
- smd.levels = smd.renderLevels = mmd->lvl - 1;
- smd.flags |= eSubsurfModifierFlag_SubsurfUv;
-
- result = subsurf_make_derived_from_derived_with_multires(dm, &smd, &ms, useRenderParams, NULL, isFinalCalc, 0);
- for(i = 0; i < result->getNumVerts(result); ++i)
- MultiresDM_get_subco(result)[i] = CDDM_get_verts(result)[i];
- multiresModifier_disp_run(result, MultiresDM_get_subco(result), 0);
- MultiresDM_set_update(result, multiresModifier_update);
-
- return result;
-}
-
-/**** Old Multires code ****
-***************************/
-
/* Does not actually free lvl itself */
static void multires_free_level(MultiresLevel *lvl)
{
@@ -1419,15 +986,75 @@ static void multires_load_old_faces(ListBase **fmap, ListBase **emap, MultiresLe
}
}
+static void multires_mvert_to_ss(DerivedMesh *dm, MVert *mvert)
+{
+ CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm;
+ CCGSubSurf *ss = ccgdm->ss;
+ DMGridData *vd;
+ int index;
+ int totvert, totedge, totface;
+ int gridSize = ccgSubSurf_getGridSize(ss);
+ int edgeSize = ccgSubSurf_getEdgeSize(ss);
+ int i = 0;
+
+ totface = ccgSubSurf_getNumFaces(ss);
+ for(index = 0; index < totface; index++) {
+ CCGFace *f = ccgdm->faceMap[index].face;
+ int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f);
+
+ vd= ccgSubSurf_getFaceCenterData(f);
+ copy_v3_v3(vd->co, mvert[i].co);
+ i++;
+
+ for(S = 0; S < numVerts; S++) {
+ for(x = 1; x < gridSize - 1; x++, i++) {
+ vd= ccgSubSurf_getFaceGridEdgeData(ss, f, S, x);
+ copy_v3_v3(vd->co, mvert[i].co);
+ }
+ }
+
+ for(S = 0; S < numVerts; S++) {
+ for(y = 1; y < gridSize - 1; y++) {
+ for(x = 1; x < gridSize - 1; x++, i++) {
+ vd= ccgSubSurf_getFaceGridData(ss, f, S, x, y);
+ copy_v3_v3(vd->co, mvert[i].co);
+ }
+ }
+ }
+ }
+
+ totedge = ccgSubSurf_getNumEdges(ss);
+ for(index = 0; index < totedge; index++) {
+ CCGEdge *e = ccgdm->edgeMap[index].edge;
+ int x;
+
+ for(x = 1; x < edgeSize - 1; x++, i++) {
+ vd= ccgSubSurf_getEdgeData(ss, e, x);
+ copy_v3_v3(vd->co, mvert[i].co);
+ }
+ }
+
+ totvert = ccgSubSurf_getNumVerts(ss);
+ for(index = 0; index < totvert; index++) {
+ CCGVert *v = ccgdm->vertMap[index].vert;
+
+ vd= ccgSubSurf_getVertData(ss, v);
+ copy_v3_v3(vd->co, mvert[i].co);
+ i++;
+ }
+
+ ccgSubSurf_updateToFaces(ss, 0, NULL, 0);
+}
+
/* Loads a multires object stored in the old Multires struct into the new format */
-void multires_load_old(DerivedMesh *dm, Multires *mr)
+static void multires_load_old_dm(DerivedMesh *dm, Mesh *me, int totlvl)
{
MultiresLevel *lvl, *lvl1;
+ Multires *mr= me->mr;
MVert *vsrc, *vdst;
int src, dst;
- int totlvl = MultiresDM_get_totlvl(dm);
- int st = multires_side_tot[totlvl - 2] - 1;
- int extedgelen = multires_side_tot[totlvl - 1] - 2;
+ int st = multires_side_tot[totlvl - 1] - 1;
+ int extedgelen = multires_side_tot[totlvl] - 2;
int *vvmap; // inorder for dst, map to src
int crossedgelen;
int i, j, s, x, totvert, tottri, totquad;
@@ -1435,7 +1062,7 @@ void multires_load_old(DerivedMesh *dm, Multires *mr)
src = 0;
dst = 0;
vsrc = mr->verts;
- vdst = CDDM_get_verts(dm);
+ vdst = dm->getVertArray(dm);
totvert = dm->getNumVerts(dm);
vvmap = MEM_callocN(sizeof(int) * totvert, "multires vvmap");
@@ -1454,9 +1081,9 @@ void multires_load_old(DerivedMesh *dm, Multires *mr)
lvl = lvl1->next;
for(j = 2; j <= mr->level_count; ++j) {
- int base = multires_side_tot[totlvl - j] - 2;
- int skip = multires_side_tot[totlvl - j + 1] - 1;
- int st = multires_side_tot[j - 2] - 1;
+ int base = multires_side_tot[totlvl - j + 1] - 2;
+ int skip = multires_side_tot[totlvl - j + 2] - 1;
+ int st = multires_side_tot[j - 1] - 1;
for(x = 0; x < st; ++x)
vvmap[ldst + base + x * skip] = lsrc + st * i + x;
@@ -1483,7 +1110,7 @@ void multires_load_old(DerivedMesh *dm, Multires *mr)
/* Face edge cross */
tottri = totquad = 0;
- crossedgelen = multires_side_tot[totlvl - 2] - 2;
+ crossedgelen = multires_side_tot[totlvl - 1] - 2;
dst = 0;
for(i = 0; i < lvl1->totface; ++i) {
int sides = lvl1->faces[i].v[3] ? 4 : 3;
@@ -1492,8 +1119,8 @@ void multires_load_old(DerivedMesh *dm, Multires *mr)
++dst;
for(j = 3; j <= mr->level_count; ++j) {
- int base = multires_side_tot[totlvl - j] - 2;
- int skip = multires_side_tot[totlvl - j + 1] - 1;
+ int base = multires_side_tot[totlvl - j + 1] - 2;
+ int skip = multires_side_tot[totlvl - j + 2] - 1;
int st = pow(2, j - 2);
int st2 = pow(2, j - 3);
int lsrc = lvl->prev->totvert;
@@ -1541,8 +1168,8 @@ void multires_load_old(DerivedMesh *dm, Multires *mr)
int ldst = dst + 1 + sides * (st - 1);
for(s = 0; s < sides; ++s) {
- int st2 = multires_side_tot[totlvl - 2] - 2;
- int st3 = multires_side_tot[totlvl - 3] - 2;
+ int st2 = multires_side_tot[totlvl - 1] - 2;
+ int st3 = multires_side_tot[totlvl - 2] - 2;
int st4 = st3 == 0 ? 1 : (st3 + 1) / 2;
int mid = ldst + st2 * st3 + st3;
int cv = lvl1->faces[j].v[s];
@@ -1582,4 +1209,64 @@ void multires_load_old(DerivedMesh *dm, Multires *mr)
copy_v3_v3(vdst[i].co, vsrc[vvmap[i]].co);
MEM_freeN(vvmap);
+
+ multires_mvert_to_ss(dm, vdst);
+}
+
+
+void multires_load_old(Object *ob, Mesh *me)
+{
+ MultiresLevel *lvl;
+ ModifierData *md;
+ MultiresModifierData *mmd;
+ DerivedMesh *dm, *orig;
+ int i;
+
+ /* Load original level into the mesh */
+ lvl = me->mr->levels.first;
+ CustomData_free_layers(&me->vdata, CD_MVERT, lvl->totvert);
+ CustomData_free_layers(&me->edata, CD_MEDGE, lvl->totedge);
+ CustomData_free_layers(&me->fdata, CD_MFACE, lvl->totface);
+ me->totvert = lvl->totvert;
+ me->totedge = lvl->totedge;
+ me->totface = lvl->totface;
+ me->mvert = CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, NULL, me->totvert);
+ me->medge = CustomData_add_layer(&me->edata, CD_MEDGE, CD_CALLOC, NULL, me->totedge);
+ me->mface = CustomData_add_layer(&me->fdata, CD_MFACE, CD_CALLOC, NULL, me->totface);
+ memcpy(me->mvert, me->mr->verts, sizeof(MVert) * me->totvert);
+ for(i = 0; i < me->totedge; ++i) {
+ me->medge[i].v1 = lvl->edges[i].v[0];
+ me->medge[i].v2 = lvl->edges[i].v[1];
+ }
+ for(i = 0; i < me->totface; ++i) {
+ me->mface[i].v1 = lvl->faces[i].v[0];
+ me->mface[i].v2 = lvl->faces[i].v[1];
+ me->mface[i].v3 = lvl->faces[i].v[2];
+ me->mface[i].v4 = lvl->faces[i].v[3];
+ }
+
+ /* Add a multires modifier to the object */
+ md = ob->modifiers.first;
+ while(md && modifierType_getInfo(md->type)->type == eModifierTypeType_OnlyDeform)
+ md = md->next;
+ mmd = (MultiresModifierData*)modifier_new(eModifierType_Multires);
+ BLI_insertlinkbefore(&ob->modifiers, md, mmd);
+
+ for(i = 0; i < me->mr->level_count - 1; ++i)
+ multiresModifier_subdivide(mmd, ob, 1, 0);
+
+ mmd->lvl = mmd->totlvl;
+ orig = CDDM_from_mesh(me, NULL);
+ dm = multires_dm_create_from_derived(mmd, 0, orig, ob, 0, 0);
+
+ multires_load_old_dm(dm, me, mmd->totlvl+1);
+
+ multires_dm_mark_as_modified(dm);
+ dm->release(dm);
+ orig->release(orig);
+
+ /* Remove the old multires */
+ multires_free(me->mr);
+ me->mr= NULL;
}
+
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index 9efbf7699c6..1daf3a0df2f 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -767,6 +767,17 @@ void nodeGroupSocketUseFlags(bNodeTree *ngroup)
}
}
+/* finds a node based on its name */
+bNode *nodeFindNodebyName(bNodeTree *ntree, const char *name)
+{
+ bNode *node=NULL;
+
+ for(node= ntree->nodes.first; node; node= node->next) {
+ if (strcmp(name, node->name) == 0)
+ break;
+ }
+ return node;
+}
/* finds a node based on given socket */
int nodeFindNode(bNodeTree *ntree, bNodeSocket *sock, bNode **nodep, int *sockindex)
@@ -1675,7 +1686,9 @@ void ntreeSocketUseFlags(bNodeTree *ntree)
/* tag all thats in use */
for(link= ntree->links.first; link; link= link->next) {
- link->fromsock->flag |= SOCK_IN_USE;
+
+ if(link->fromsock) // FIXME, see below
+ link->fromsock->flag |= SOCK_IN_USE;
if(link->tosock) // FIXME This can be NULL, when dragging a new link in the UI, should probably copy the node tree for preview render - campbell
link->tosock->flag |= SOCK_IN_USE;
}
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index a8acdf36461..b61ada3cf9b 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -229,14 +229,6 @@ void free_sculptsession(SculptSession **ssp)
{
if(ssp && *ssp) {
SculptSession *ss = *ssp;
- if(ss->projverts)
- MEM_freeN(ss->projverts);
-
- if(ss->fmap)
- MEM_freeN(ss->fmap);
-
- if(ss->fmap_mem)
- MEM_freeN(ss->fmap_mem);
if(ss->texcache)
MEM_freeN(ss->texcache);
@@ -244,8 +236,8 @@ void free_sculptsession(SculptSession **ssp)
if(ss->layer_disps)
MEM_freeN(ss->layer_disps);
- if(ss->mesh_co_orig)
- MEM_freeN(ss->mesh_co_orig);
+ if(ss->layer_co)
+ MEM_freeN(ss->layer_co);
MEM_freeN(ss);
@@ -563,6 +555,17 @@ void unlink_object(Scene *scene, Object *ob)
if(sce->id.lib==NULL) {
if(sce->camera==ob) sce->camera= NULL;
if(sce->toolsettings->skgen_template==ob) sce->toolsettings->skgen_template = NULL;
+
+#ifdef DURIAN_CAMERA_SWITCH
+ {
+ TimeMarker *m;
+
+ for (m= sce->markers.first; m; m= m->next) {
+ if(m->camera==ob)
+ m->camera= NULL;
+ }
+ }
+#endif
}
sce= sce->id.next;
}
@@ -742,12 +745,12 @@ float dof_camera(Object *ob)
if (cam->dof_ob) {
/* too simple, better to return the distance on the view axis only
* return len_v3v3(ob->obmat[3], cam->dof_ob->obmat[3]); */
- float mat[4][4], obmat[4][4];
+ float mat[4][4], imat[4][4], obmat[4][4];
copy_m4_m4(obmat, ob->obmat);
normalize_m4(obmat);
- invert_m4_m4(ob->imat, obmat);
- mul_m4_m4m4(mat, cam->dof_ob->obmat, ob->imat);
+ invert_m4_m4(imat, obmat);
+ mul_m4_m4m4(mat, cam->dof_ob->obmat, imat);
return (float)fabs(mat[3][2]);
}
return cam->YF_dofdist;
@@ -796,7 +799,7 @@ void *add_lamp(char *name)
la->sun_intensity = 1.0f;
la->skyblendtype= MA_RAMP_ADD;
la->skyblendfac= 1.0f;
- la->sky_colorspace= BLI_CS_CIE;
+ la->sky_colorspace= BLI_XYZ_CIE;
la->sky_exposure= 1.0f;
curvemapping_initialize(la->curfalloff);
@@ -963,24 +966,27 @@ Object *add_only_object(int type, char *name)
/* default object vars */
ob->type= type;
- /* ob->transflag= OB_QUAT; */
-
-#if 0 /* not used yet */
- unit_qt(ob->quat);
- unit_qt(ob->dquat);
-#endif
-
+
ob->col[0]= ob->col[1]= ob->col[2]= 1.0;
ob->col[3]= 1.0;
-
- ob->loc[0]= ob->loc[1]= ob->loc[2]= 0.0;
- ob->rot[0]= ob->rot[1]= ob->rot[2]= 0.0;
+
ob->size[0]= ob->size[1]= ob->size[2]= 1.0;
+
+ /* objects should default to having Euler XYZ rotations,
+ * but rotations default to quaternions
+ */
+ ob->rotmode= ROT_MODE_EUL;
+ /* axis-angle must not have a 0,0,0 axis, so set y-axis as default... */
+ ob->rotAxis[1]= ob->drotAxis[1]= 1.0f;
+ /* quaternions should be 1,0,0,0 by default.... */
+ ob->quat[0]= ob->dquat[0]= 1.0f;
+ /* rotation locks should be 4D for 4 component rotations by default... */
+ ob->protectflag = OB_LOCK_ROT4D;
unit_m4(ob->constinv);
unit_m4(ob->parentinv);
unit_m4(ob->obmat);
- ob->dt= OB_SHADED;
+ ob->dt= OB_TEXTURE;
ob->empty_drawtype= OB_ARROWS;
ob->empty_drawsize= 1.0;
@@ -993,11 +999,6 @@ Object *add_only_object(int type, char *name)
ob->upflag= OB_POSZ;
}
-#if 0 // XXX old animation system
- ob->ipoflag = OB_OFFS_OB+OB_OFFS_PARENT;
- ob->ipowin= ID_OB; /* the ipowin shown */
-#endif // XXX old animation system
-
ob->dupon= 1; ob->dupoff= 0;
ob->dupsta= 1; ob->dupend= 100;
ob->dupfacesca = 1.0;
@@ -1039,13 +1040,6 @@ Object *add_object(struct Scene *scene, int type)
ob->lay= scene->lay;
- /* objects should default to having Euler XYZ rotations,
- * but rotations default to quaternions
- */
- ob->rotmode= ROT_MODE_EUL;
- /* axis-angle must not have a 0,0,0 axis, so set y-axis as default... */
- ob->rotAxis[1]= ob->drotAxis[1]= 1.0f;
-
base= scene_add_base(scene, ob);
scene_select_base(scene, base);
ob->recalc |= OB_RECALC;
@@ -1625,6 +1619,32 @@ void object_rot_to_mat3(Object *ob, float mat[][3])
mul_m3_m3m3(mat, dmat, rmat);
}
+void object_mat3_to_rot(Object *ob, float mat[][3], int use_compat)
+{
+ if (ob->rotmode == ROT_MODE_QUAT)
+ mat3_to_quat(ob->quat, mat);
+ else if (ob->rotmode == ROT_MODE_AXISANGLE)
+ mat3_to_axis_angle(ob->rotAxis, &ob->rotAngle, mat);
+ else {
+ if(use_compat) {
+ float eul[3];
+ VECCOPY(eul, ob->rot);
+ mat3_to_compatible_eulO(ob->rot, eul, ob->rotmode, mat);
+ }
+ else
+ mat3_to_eulO(ob->rot, ob->rotmode, mat);
+ }
+}
+
+void object_apply_mat4(Object *ob, float mat[][4])
+{
+ float mat3[3][3];
+ VECCOPY(ob->loc, mat[3]);
+ mat4_to_size(ob->size, mat);
+ copy_m3_m4(mat3, mat);
+ object_mat3_to_rot(ob, mat3, 0);
+}
+
void object_to_mat3(Object *ob, float mat[][3]) /* no parent */
{
float smat[3][3];
@@ -1682,10 +1702,10 @@ static void ob_parcurve(Scene *scene, Object *ob, Object *par, float mat[][4])
/* ctime is now a proper var setting of Curve which gets set by Animato like any other var that's animated,
* but this will only work if it actually is animated...
*
- * we firstly calculate the modulus of cu->ctime/cu->pathlen to clamp ctime within the 0.0 to 1.0 times pathlen
- * range, then divide this (the modulus) by pathlen to get a value between 0.0 and 1.0
+ * we divide the curvetime calculated in the previous step by the length of the path, to get a time
+ * factor, which then gets clamped to lie within 0.0 - 1.0 range
*/
- ctime= fmod(cu->ctime, cu->pathlen) / cu->pathlen;
+ ctime= cu->ctime / cu->pathlen;
CLAMP(ctime, 0.0, 1.0);
}
else {
@@ -1787,13 +1807,15 @@ static void give_parvert(Object *par, int nr, float *vec)
DerivedMesh *dm = par->derivedFinal;
if(dm) {
- int i, count = 0, numVerts = dm->getNumVerts(dm);
+ int i, count = 0, vindex, numVerts = dm->getNumVerts(dm);
int *index = (int *)dm->getVertDataArray(dm, CD_ORIGINDEX);
float co[3];
/* get the average of all verts with (original index == nr) */
- for(i = 0; i < numVerts; ++i, ++index) {
- if(*index == nr) {
+ for(i = 0; i < numVerts; ++i) {
+ vindex= (index)? *index: i;
+
+ if(vindex == nr) {
dm->getVertCo(dm, i, co);
add_v3_v3v3(vec, vec, co);
count++;
@@ -2365,6 +2387,9 @@ void object_handle_update(Scene *scene, Object *ob)
}
if(ob->recalc & OB_RECALC_DATA) {
+ ID *data_id= (ID *)ob->data;
+ AnimData *adt= BKE_animdata_from_id(data_id);
+ float ctime= (float)scene->r.cfra; // XXX this is bad...
if (G.f & G_DEBUG)
printf("recalcdata %s\n", ob->id.name+2);
@@ -2386,10 +2411,6 @@ void object_handle_update(Scene *scene, Object *ob)
makeDispListCurveTypes(scene, ob, 0);
}
else if(ELEM(ob->type, OB_CAMERA, OB_LAMP)) {
- ID *data_id= (ID *)ob->data;
- AnimData *adt= BKE_animdata_from_id(data_id);
- float ctime= (float)scene->r.cfra; // XXX this is bad...
-
/* evaluate drivers */
BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS);
}
@@ -2402,6 +2423,9 @@ void object_handle_update(Scene *scene, Object *ob)
if(ob->pose==NULL || (ob->pose->flag & POSE_RECALC))
armature_rebuild_pose(ob, ob->data);
+ /* evaluate drivers */
+ BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS);
+
if(ob->id.lib && ob->proxy_from) {
copy_pose_result(ob->pose, ob->proxy_from->pose);
// printf("pose proxy copy, lib ob %s proxy %s\n", ob->id.name, ob->proxy_from->id.name);
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index 27fcfa8b9cb..4fe63a966be 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -175,6 +175,8 @@ void paint_init(Paint *p, const char col[3])
memcpy(p->paint_cursor_col, col, 3);
p->paint_cursor_col[3] = 128;
+
+ p->flags |= PAINT_SHOW_BRUSH;
}
void free_paint(Paint *paint)
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index 68846966cb3..55b50499e6a 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -791,7 +791,7 @@ int psys_render_simplify_distribution(ParticleThreadContext *ctx, int tot)
totface= dm->getNumTessFaces(dm);
totorigface= me->totface;
- if(totface == 0 || totorigface == 0 || origindex == NULL)
+ if(totface == 0 || totorigface == 0)
return tot;
facearea= MEM_callocN(sizeof(float)*totorigface, "SimplifyFaceArea");
@@ -808,14 +808,14 @@ int psys_render_simplify_distribution(ParticleThreadContext *ctx, int tot)
/* compute number of children per original face */
for(a=0; a<tot; a++) {
- b= origindex[ctx->index[a]];
+ b= (origindex)? origindex[ctx->index[a]]: ctx->index[a];
if(b != -1)
elems[b].totchild++;
}
/* compute areas and centers of original faces */
for(mf=mface, a=0; a<totface; a++, mf++) {
- b= origindex[a];
+ b= (origindex)? origindex[a]: a;
if(b != -1) {
VECCOPY(co1, mvert[mf->v1].co);
@@ -911,7 +911,7 @@ int psys_render_simplify_distribution(ParticleThreadContext *ctx, int tot)
skipped= 0;
for(a=0, newtot=0; a<tot; a++) {
- b= origindex[ctx->index[a]];
+ b= (origindex)? origindex[ctx->index[a]]: ctx->index[a];
if(b != -1) {
if(elems[b].curchild++ < ceil(elems[b].lambda*elems[b].totchild)) {
ctx->index[newtot]= ctx->index[a];
@@ -944,7 +944,7 @@ int psys_render_simplify_params(ParticleSystem *psys, ChildParticle *cpa, float
if(!data->dosimplify)
return 0;
- b= data->origindex[cpa->num];
+ b= (data->origindex)? data->origindex[cpa->num]: cpa->num;
if(b == -1)
return 0;
@@ -2333,6 +2333,7 @@ static int psys_threads_init_path(ParticleThread *threads, Scene *scene, float c
ctx->totparent= totparent;
ctx->parent_pass= 0;
ctx->cfra= cfra;
+ ctx->editupdate= editupdate;
psys->lattice = psys_get_lattice(&ctx->sim);
@@ -2444,7 +2445,7 @@ static void psys_thread_create_path(ParticleThread *thread, struct ChildParticle
mul_m4_v3(ob->obmat,cpa_1st);
}
- pa = psys->particles + cpa->parent;
+ pa = psys->particles + cpa->pa[0];
psys_mat_hair_to_global(ob, ctx->sim.psmd->dm, psys->part->from, pa, hairmat);
@@ -2616,6 +2617,9 @@ static void psys_thread_create_path(ParticleThread *thread, struct ChildParticle
get_strand_normal(ctx->ma, ornor, cur_length, (state-1)->vel);
}
+ if(k == ctx->steps)
+ VECSUB(state->vel,state->co,(state-1)->co);
+
/* check if path needs to be cut before actual end of data points */
if(k){
VECSUB(dvec,state->co,(state-1)->co);
@@ -3269,14 +3273,14 @@ void psys_mat_hair_to_global(Object *ob, DerivedMesh *dm, short from, ParticleDa
/************************************************/
/* ParticleSettings handling */
/************************************************/
-void object_add_particle_system(Scene *scene, Object *ob)
+ModifierData *object_add_particle_system(Scene *scene, Object *ob, char *name)
{
ParticleSystem *psys;
ModifierData *md;
ParticleSystemModifierData *psmd;
if(!ob || ob->type != OB_MESH)
- return;
+ return NULL;
psys = ob->particlesystem.first;
for(; psys; psys=psys->next)
@@ -3294,7 +3298,11 @@ void object_add_particle_system(Scene *scene, Object *ob)
strcpy(psys->name, "ParticleSystem");
md= modifier_new(eModifierType_ParticleSystem);
- sprintf(md->name, "ParticleSystem %i", BLI_countlist(&ob->particlesystem));
+
+ if(name) BLI_strncpy(md->name, name, sizeof(md->name));
+ else sprintf(md->name, "ParticleSystem %i", BLI_countlist(&ob->particlesystem));
+ modifier_unique_name(&ob->modifiers, md);
+
psmd= (ParticleSystemModifierData*) md;
psmd->psys=psys;
BLI_addtail(&ob->modifiers, md);
@@ -3305,6 +3313,8 @@ void object_add_particle_system(Scene *scene, Object *ob)
DAG_scene_sort(scene);
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
+
+ return md;
}
void object_remove_particle_system(Scene *scene, Object *ob)
{
@@ -4060,7 +4070,7 @@ int psys_get_particle_state(ParticleSimulationData *sim, int p, ParticleKey *sta
else{
if(cpa){
ParticleKey *key1;
- float t = (cfra - pa->time + pa->loop * pa->lifetime) / pa->lifetime;
+ float t = (cfra - pa->time) / pa->lifetime;
key1=&pa->state;
offset_child(cpa, key1, state, part->childflat, part->childrad);
diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c
index 0f8e70054f6..670db6157ff 100644
--- a/source/blender/blenkernel/intern/particle_system.c
+++ b/source/blender/blenkernel/intern/particle_system.c
@@ -170,6 +170,12 @@ static void realloc_particles(ParticleSimulationData *sim, int new_totpart)
PARTICLE_P;
int totpart, totsaved = 0;
+ if(psys->edit && psys->free_edit) {
+ psys->free_edit(psys->edit);
+ psys->edit = NULL;
+ psys->free_edit = NULL;
+ }
+
if(new_totpart<0) {
if(part->distr==PART_DISTR_GRID && part->from != PART_FROM_VERT) {
totpart= part->grid_res;
@@ -287,12 +293,12 @@ void psys_calc_dmcache(Object *ob, DerivedMesh *dm, ParticleSystem *psys)
if(psys->part->from == PART_FROM_VERT) {
totdmelem= dm->getNumVerts(dm);
totelem= me->totvert;
- origindex= DM_get_vert_data_layer(dm, CD_ORIGINDEX);
+ origindex= dm->getVertDataArray(dm, CD_ORIGINDEX);
}
else { /* FROM_FACE/FROM_VOLUME */
totdmelem= dm->getNumTessFaces(dm);
totelem= me->totface;
- origindex= DM_get_face_data_layer(dm, CD_ORIGINDEX);
+ origindex= dm->getTessFaceDataArray(dm, CD_ORIGINDEX);
}
nodedmelem= MEM_callocN(sizeof(LinkNode)*totdmelem, "psys node elems");
@@ -389,7 +395,7 @@ static void distribute_particles_in_grid(DerivedMesh *dm, ParticleSystem *psys)
pa->fuv[1]=min[1]+(float)j*d;
pa->fuv[2]=min[2]+(float)k*d;
pa->flag |= PARS_UNEXIST;
- pa->loop=0; /* abused in volume calculation */
+ pa->hair_index=0; /* abused in volume calculation */
}
}
}
@@ -451,7 +457,7 @@ static void distribute_particles_in_grid(DerivedMesh *dm, ParticleSystem *psys)
if(from==PART_FROM_FACE)
(pa+(int)(lambda*size[a])*a0mul)->flag &= ~PARS_UNEXIST;
else /* store number of intersections */
- (pa+(int)(lambda*size[a])*a0mul)->loop++;
+ (pa+(int)(lambda*size[a])*a0mul)->hair_index++;
}
if(mface->v4){
@@ -461,20 +467,20 @@ static void distribute_particles_in_grid(DerivedMesh *dm, ParticleSystem *psys)
if(from==PART_FROM_FACE)
(pa+(int)(lambda*size[a])*a0mul)->flag &= ~PARS_UNEXIST;
else
- (pa+(int)(lambda*size[a])*a0mul)->loop++;
+ (pa+(int)(lambda*size[a])*a0mul)->hair_index++;
}
}
}
if(from==PART_FROM_VOLUME){
- int in=pa->loop%2;
- if(in) pa->loop++;
+ int in=pa->hair_index%2;
+ if(in) pa->hair_index++;
for(i=0; i<size[0]; i++){
- if(in || (pa+i*a0mul)->loop%2)
+ if(in || (pa+i*a0mul)->hair_index%2)
(pa+i*a0mul)->flag &= ~PARS_UNEXIST;
/* odd intersections == in->out / out->in */
/* even intersections -> in stays same */
- in=(in + (pa+i*a0mul)->loop) % 2;
+ in=(in + (pa+i*a0mul)->hair_index) % 2;
}
}
}
@@ -948,7 +954,8 @@ static int psys_threads_init_distribution(ParticleThread *threads, Scene *scene,
if(totpart==0)
return 0;
- if (!finaldm->deformedOnly && !CustomData_has_layer( &finaldm->faceData, CD_ORIGINDEX ) ) {
+ if (!finaldm->deformedOnly && !finaldm->getTessFaceDataArray(finaldm, CD_ORIGINDEX)) {
+ printf("Can't create particles with the current modifier stack, disable destructive modifiers\n");
// XXX error("Can't paint with the current modifier stack, disable destructive modifiers");
return 0;
}
@@ -1583,7 +1590,7 @@ void initialize_particle(ParticleSimulationData *sim, ParticleData *pa, int p)
pa->flag &= ~PARS_UNEXIST;
}
- pa->loop=0;
+ pa->hair_index=0;
/* we can't reset to -1 anymore since we've figured out correct index in distribute_particles */
/* usage other than straight after distribute has to handle this index by itself - jahka*/
//pa->num_dmcache = DMCACHE_NOTFOUND; /* assume we dont have a derived mesh face */
@@ -2267,12 +2274,13 @@ static void apply_particle_forces(ParticleSimulationData *sim, int p, float dfra
EffectedPoint epoint;
ParticleKey states[5], tkey;
float timestep = psys_get_timestep(sim);
- float force[3],impulse[3],dx[4][3],dv[4][3];
+ float force[3],impulse[3],dx[4][3],dv[4][3],oldpos[3];
float dtime=dfra*timestep, time, pa_mass=part->mass, fac, fra=sim->psys->cfra;
int i, steps=1;
/* maintain angular velocity */
VECCOPY(pa->state.ave,pa->prev_state.ave);
+ VECCOPY(oldpos,pa->state.co);
if(part->flag & PART_SIZEMASS)
pa_mass*=pa->size;
@@ -2287,6 +2295,9 @@ static void apply_particle_forces(ParticleSimulationData *sim, int p, float dfra
case PART_INT_RK4:
steps=4;
break;
+ case PART_INT_VERLET:
+ steps=1;
+ break;
}
copy_particle_key(states,&pa->state,1);
@@ -2392,6 +2403,13 @@ static void apply_particle_forces(ParticleSimulationData *sim, int p, float dfra
VECADDFAC(pa->state.vel,pa->state.vel,dv[3],1.0f/6.0f);
}
break;
+ case PART_INT_VERLET: /* Verlet integration */
+ VECADDFAC(pa->state.vel,pa->state.vel,force,dtime);
+ VECADDFAC(pa->state.co,pa->state.co,pa->state.vel,dtime);
+
+ VECSUB(pa->state.vel,pa->state.co,oldpos);
+ mul_v3_fl(pa->state.vel,1.0f/dtime);
+ break;
}
}
@@ -2914,6 +2932,8 @@ static void psys_update_path_cache(ParticleSimulationData *sim, float cfra)
psys_find_parents(sim);
}
}
+ else
+ psys_free_children(psys);
}
if((part->type==PART_HAIR || psys->flag&PSYS_KEYED || psys->pointcache->flag & PTCACHE_BAKED)==0)
@@ -3201,14 +3221,6 @@ static void dynamics_step(ParticleSimulationData *sim, float cfra)
pa->size *= 1.0f - part->randsize * PSYS_FRAND(p + 1);
reset_particle(sim, pa, dtime, cfra);
-
- if(cfra > pa->time && part->flag & PART_LOOP && part->type!=PART_HAIR){
- pa->loop = (short)((cfra-pa->time)/pa->lifetime);
- pa->alive = PARS_UNBORN;
- }
- else{
- pa->loop = 0;
- }
}
if(vg_size)
@@ -3262,7 +3274,7 @@ static void dynamics_step(ParticleSimulationData *sim, float cfra)
//if(psys->reactevents.first && ELEM(pa->alive,PARS_DEAD,PARS_KILLED)==0)
// react_to_events(psys,p);
- birthtime = pa->time + pa->loop * pa->lifetime;
+ birthtime = pa->time;
dietime = birthtime + pa->lifetime;
pa_dfra = dfra;
@@ -3321,15 +3333,8 @@ static void dynamics_step(ParticleSimulationData *sim, float cfra)
if(pa->alive == PARS_DYING){
//push_reaction(ob,psys,p,PART_EVENT_DEATH,&pa->state);
- if(part->flag & PART_LOOP && part->type!=PART_HAIR){
- pa->loop++;
- reset_particle(sim, pa, 0.0, cfra);
- pa->alive=PARS_ALIVE;
- }
- else{
- pa->alive=PARS_DEAD;
- pa->state.time=pa->dietime;
- }
+ pa->alive=PARS_DEAD;
+ pa->state.time=pa->dietime;
}
else
pa->state.time=cfra;
@@ -3380,13 +3385,8 @@ static void cached_step(ParticleSimulationData *sim, float cfra)
psys->lattice= psys_get_lattice(sim);
- if(part->flag & PART_LOOP && part->type!=PART_HAIR)
- pa->loop = (short)((cfra - pa->time) / pa->lifetime);
- else
- pa->loop = 0;
-
- birthtime = pa->time + pa->loop * pa->lifetime;
- dietime = birthtime + (1 + pa->loop) * (pa->dietime - pa->time);
+ birthtime = pa->time;
+ dietime = pa->dietime;
/* update alive status and push events */
if(pa->time > cfra) {
diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c
index c2798b4a746..7b2cf72e311 100644
--- a/source/blender/blenkernel/intern/pointcache.c
+++ b/source/blender/blenkernel/intern/pointcache.c
@@ -2232,6 +2232,7 @@ void BKE_ptcache_quick_cache_all(Scene *scene)
baker.break_test=NULL;
baker.pid=NULL;
baker.progressbar=NULL;
+ baker.progressend=NULL;
baker.progresscontext=NULL;
baker.render=0;
baker.anim_init = 0;
@@ -2361,6 +2362,9 @@ void BKE_ptcache_make_cache(PTCacheBaker* baker)
break;
}
+ if (baker->progressend)
+ baker->progressend(baker->progresscontext);
+
/* clear baking flag */
if(pid) {
cache->flag &= ~(PTCACHE_BAKING|PTCACHE_REDO_NEEDED);
@@ -2400,7 +2404,7 @@ void BKE_ptcache_make_cache(PTCacheBaker* baker)
scene->r.framelen = frameleno;
CFRA = cfrao;
-
+
if(bake) /* already on cfra unless baking */
scene_update_for_newframe(scene, scene->lay);
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 91fd0bac400..eadeac585b2 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -29,6 +29,7 @@
* ***** END GPL LICENSE BLOCK *****
*/
+#include <stddef.h>
#include <stdio.h>
#include <string.h>
@@ -77,8 +78,9 @@
#include "BKE_node.h"
#include "BKE_object.h"
#include "BKE_paint.h"
+#include "BKE_pointcache.h"
#include "BKE_scene.h"
-#include "BKE_sequence.h"
+#include "BKE_sequencer.h"
#include "BKE_world.h"
#include "BKE_utildefines.h"
@@ -247,7 +249,12 @@ void free_scene(Scene *sce)
/* do not free objects! */
if(sce->gpd) {
+#if 0 // removed since this can be invalid memory when freeing everything
+ // since the grease pencil data is free'd before the scene.
+ // since grease pencil data is not (yet?), shared between objects
+ // its probably safe not to do this, some save and reload will free this.
sce->gpd->id.us--;
+#endif
sce->gpd= NULL;
}
@@ -348,7 +355,7 @@ Scene *add_scene(char *name)
sce->r.bake_normal_space= R_BAKE_SPACE_TANGENT;
sce->r.scemode= R_DOCOMP|R_DOSEQ|R_EXTENSION;
- sce->r.stamp= R_STAMP_TIME|R_STAMP_FRAME|R_STAMP_DATE|R_STAMP_SCENE|R_STAMP_CAMERA;
+ sce->r.stamp= R_STAMP_TIME|R_STAMP_FRAME|R_STAMP_DATE|R_STAMP_SCENE|R_STAMP_CAMERA|R_STAMP_RENDERTIME;
sce->r.threads= 1;
@@ -416,6 +423,7 @@ Scene *add_scene(char *name)
pset->brushtype= PE_BRUSH_NONE;
pset->draw_step= 2;
pset->fade_frames= 2;
+ pset->selectmode= SCE_SELECT_PATH;
for(a=0; a<PE_TOT_BRUSH; a++) {
pset->brush[a].strength= 50;
pset->brush[a].size= 50;
@@ -695,6 +703,47 @@ Object *scene_find_camera(Scene *sc)
return NULL;
}
+#ifdef DURIAN_CAMERA_SWITCH
+Object *scene_find_camera_switch(Scene *scene)
+{
+ TimeMarker *m;
+ int cfra = scene->r.cfra;
+ int frame = -(MAXFRAME + 1);
+ Object *camera= NULL;
+
+ for (m= scene->markers.first; m; m= m->next) {
+ if(m->camera && (m->frame <= cfra) && (m->frame > frame)) {
+ camera= m->camera;
+ frame= m->frame;
+
+ if(frame == cfra)
+ break;
+
+ }
+ }
+ return camera;
+}
+#endif
+
+static char *get_cfra_marker_name(Scene *scene)
+{
+ ListBase *markers= &scene->markers;
+ TimeMarker *m1, *m2;
+
+ /* search through markers for match */
+ for (m1=markers->first, m2=markers->last; m1 && m2; m1=m1->next, m2=m2->prev) {
+ if (m1->frame==CFRA)
+ return m1->name;
+
+ if (m1 == m2)
+ break;
+
+ if (m2->frame==CFRA)
+ return m2->name;
+ }
+
+ return NULL;
+}
Base *scene_add_base(Scene *sce, Object *ob)
{
@@ -771,7 +820,7 @@ float frame_to_float (Scene *scene, int cfra) /* see also bsystem_time in objec
return ctime;
}
-static void scene_update(Scene *sce, unsigned int lay)
+static void scene_update_newframe(Scene *sce, unsigned int lay)
{
Base *base;
Object *ob;
@@ -803,6 +852,40 @@ static void scene_update(Scene *sce, unsigned int lay)
}
}
+/* this is called in main loop, doing tagged updates before redraw */
+void scene_update_tagged(Scene *scene)
+{
+ Scene *sce;
+ Base *base;
+ float ctime = frame_to_float(scene, scene->r.cfra);
+
+ /* update all objects: drivers, matrices, displists, etc. flags set
+ by depgraph or manual, no layer check here, gets correct flushed */
+
+ /* sets first, we allow per definition current scene to have
+ dependencies on sets, but not the other way around. */
+ if(scene->set) {
+ for(SETLOOPER(scene->set, base))
+ object_handle_update(scene, base->object);
+ }
+
+ for(base= scene->base.first; base; base= base->next) {
+ object_handle_update(scene, base->object);
+ }
+
+ /* recalc scene animation data here (for sequencer) */
+ {
+ AnimData *adt= BKE_animdata_from_id(&scene->id);
+
+ if(adt && (adt->recalc & ADT_RECALC_ANIM))
+ BKE_animsys_evaluate_animdata(&scene->id, adt, ctime, 0);
+ }
+
+ BKE_ptcache_quick_cache_all(scene);
+
+ /* in the future this should handle updates for all datablocks, not
+ only objects and scenes. - brecht */
+}
/* applies changes right away, does all sets too */
void scene_update_for_newframe(Scene *sce, unsigned int lay)
@@ -814,19 +897,20 @@ void scene_update_for_newframe(Scene *sce, unsigned int lay)
/* sets first, we allow per definition current scene to have dependencies on sets */
for(sce= sce->set; sce; sce= sce->set)
- scene_update(sce, lay);
+ scene_update_newframe(sce, lay);
- scene_update(scene, lay);
+ scene_update_newframe(scene, lay);
}
/* return default layer, also used to patch old files */
void scene_add_render_layer(Scene *sce)
{
SceneRenderLayer *srl;
- int tot= 1 + BLI_countlist(&sce->r.layers);
+// int tot= 1 + BLI_countlist(&sce->r.layers);
srl= MEM_callocN(sizeof(SceneRenderLayer), "new render layer");
- sprintf(srl->name, "%d RenderLayer", tot);
+ sprintf(srl->name, "RenderLayer");
+ BLI_uniquename(&sce->r.layers, srl, "RenderLayer", '.', offsetof(SceneRenderLayer, name), 32);
BLI_addtail(&sce->r.layers, srl);
/* note, this is also in render, pipeline.c, to make layer when scenedata doesnt have it */
diff --git a/source/blender/blenkernel/intern/screen.c b/source/blender/blenkernel/intern/screen.c
index 459db96dbfb..0dc6bf359f6 100644
--- a/source/blender/blenkernel/intern/screen.c
+++ b/source/blender/blenkernel/intern/screen.c
@@ -318,21 +318,20 @@ void free_screen(bScreen *sc)
}
/* for depsgraph */
-unsigned int BKE_screen_visible_layers(bScreen *screen)
+unsigned int BKE_screen_visible_layers(bScreen *screen, Scene *scene)
{
ScrArea *sa;
unsigned int layer= 0;
- if(!screen)
- return layer;
-
- /* get all used view3d layers */
- for(sa= screen->areabase.first; sa; sa= sa->next)
- if(sa->spacetype==SPACE_VIEW3D)
- layer |= ((View3D *)sa->spacedata.first)->lay;
+ if(screen) {
+ /* get all used view3d layers */
+ for(sa= screen->areabase.first; sa; sa= sa->next)
+ if(sa->spacetype==SPACE_VIEW3D)
+ layer |= ((View3D *)sa->spacedata.first)->lay;
+ }
if(!layer)
- return screen->scene->lay;
+ return scene->lay;
return layer;
}
diff --git a/source/blender/blenkernel/intern/seqeffects.c b/source/blender/blenkernel/intern/seqeffects.c
index a1f81bf6166..2c532bfed1c 100644
--- a/source/blender/blenkernel/intern/seqeffects.c
+++ b/source/blender/blenkernel/intern/seqeffects.c
@@ -44,7 +44,7 @@
#include "BKE_global.h"
#include "BKE_fcurve.h"
#include "BKE_plugin_types.h"
-#include "BKE_sequence.h"
+#include "BKE_sequencer.h"
#include "BKE_texture.h"
#include "BKE_utildefines.h"
@@ -231,7 +231,7 @@ static ImBuf * IMB_cast_away_list(ImBuf * i)
return (ImBuf*) (((void**) i) + 2);
}
-static void do_plugin_effect(Sequence * seq,int cfra,
+static void do_plugin_effect(Scene *scene, Sequence *seq, int cfra,
float facf0, float facf1, int x, int y,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
struct ImBuf *ibuf3, struct ImBuf *out)
@@ -477,7 +477,7 @@ static void do_alphaover_effect_float(float facf0, float facf1, int x, int y,
}
}
-static void do_alphaover_effect(Sequence * seq,int cfra,
+static void do_alphaover_effect(Scene *scene, Sequence *seq, int cfra,
float facf0, float facf1, int x, int y,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
struct ImBuf *ibuf3, struct ImBuf *out)
@@ -644,7 +644,7 @@ static void do_alphaunder_effect_float(float facf0, float facf1, int x, int y,
}
}
-static void do_alphaunder_effect(Sequence * seq,int cfra,
+static void do_alphaunder_effect(Scene *scene, Sequence *seq, int cfra,
float facf0, float facf1, int x, int y,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
struct ImBuf *ibuf3, struct ImBuf *out)
@@ -764,7 +764,7 @@ void do_cross_effect_float(float facf0, float facf1, int x, int y,
/* carefull: also used by speed effect! */
-static void do_cross_effect(Sequence * seq,int cfra,
+static void do_cross_effect(Scene *scene, Sequence *seq, int cfra,
float facf0, float facf1, int x, int y,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
struct ImBuf *ibuf3, struct ImBuf *out)
@@ -1026,7 +1026,7 @@ static void do_gammacross_effect_float(float facf0, float facf1,
}
}
-static void do_gammacross_effect(Sequence * seq,int cfra,
+static void do_gammacross_effect(Scene *scene, Sequence *seq, int cfra,
float facf0, float facf1, int x, int y,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
struct ImBuf *ibuf3, struct ImBuf *out)
@@ -1140,7 +1140,7 @@ static void do_add_effect_float(float facf0, float facf1, int x, int y,
}
}
-static void do_add_effect(Sequence * seq,int cfra,
+static void do_add_effect(Scene *scene, Sequence *seq, int cfra,
float facf0, float facf1, int x, int y,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
struct ImBuf *ibuf3, struct ImBuf *out)
@@ -1252,7 +1252,7 @@ static void do_sub_effect_float(float facf0, float facf1, int x, int y,
}
}
-static void do_sub_effect(Sequence * seq,int cfra,
+static void do_sub_effect(Scene *scene, Sequence *seq, int cfra,
float facf0, float facf1, int x, int y,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
struct ImBuf *ibuf3, struct ImBuf *out)
@@ -1360,7 +1360,7 @@ static void do_drop_effect_float(float facf0, float facf1, int x, int y,
}
-static void do_drop_effect(Sequence * seq,int cfra,
+static void do_drop_effect(Scene *scene, Sequence *seq, int cfra,
float facf0, float facf1, int x, int y,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
struct ImBuf * ibuf3,
@@ -1481,7 +1481,7 @@ static void do_mul_effect_float(float facf0, float facf1, int x, int y,
}
}
-static void do_mul_effect(Sequence * seq,int cfra,
+static void do_mul_effect(Scene *scene, Sequence *seq, int cfra,
float facf0, float facf1, int x, int y,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
struct ImBuf *ibuf3, struct ImBuf *out)
@@ -1931,7 +1931,7 @@ static void do_wipe_effect_float(Sequence *seq, float facf0, float facf1,
}
}
-static void do_wipe_effect(Sequence * seq,int cfra,
+static void do_wipe_effect(Scene *scene, Sequence *seq, int cfra,
float facf0, float facf1, int x, int y,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
struct ImBuf *ibuf3, struct ImBuf *out)
@@ -1953,27 +1953,29 @@ static void do_wipe_effect(Sequence * seq,int cfra,
********************************************************************** */
static void init_transform_effect(Sequence *seq)
{
- TransformVars *scale;
+ TransformVars *transform;
if(seq->effectdata)MEM_freeN(seq->effectdata);
seq->effectdata = MEM_callocN(sizeof(struct TransformVars), "transformvars");
- scale = (TransformVars *)seq->effectdata;
- scale->ScalexIni = 1;
- scale->ScaleyIni = 1;
- scale->ScalexFin = 1;
- scale->ScaleyFin = 1;
-
- scale->xIni=0;
- scale->xFin=0;
- scale->yIni=0;
- scale->yFin=0;
-
- scale->rotIni=0;
- scale->rotFin=0;
+ transform = (TransformVars *)seq->effectdata;
+
+ transform->ScalexIni = 1.0f;
+ transform->ScaleyIni = 1.0f;
+ transform->ScalexFin = 1.0f;
+ transform->ScalexFin = 1.0f;
+
+ transform->xIni=0.0f;
+ transform->xFin=0.0f;
+ transform->yIni=0.0f;
+ transform->yFin=0.0f;
+
+ transform->rotIni=0.0f;
+ transform->rotFin=0.0f;
- scale->interpolation=1;
- scale->percent=1;
+ transform->interpolation=1;
+ transform->percent=1;
+ transform->uniform_scale=0;
}
static int num_inputs_transform()
@@ -1992,82 +1994,94 @@ static void copy_transform_effect(Sequence *dst, Sequence *src)
dst->effectdata = MEM_dupallocN(src->effectdata);
}
-static void do_transform(Sequence * seq,float facf0, int x, int y,
- struct ImBuf *ibuf1,struct ImBuf *out)
+static void transform_image(int x, int y, struct ImBuf *ibuf1, struct ImBuf *out,
+ float scale_x, float scale_y, float translate_x, float translate_y,
+ float rotate, int interpolation)
{
int xo, yo, xi, yi;
- float xs,ys,factxScale,factyScale,tx,ty,rad,s,c,xaux,yaux,factRot,px,py;
- TransformVars *scale;
-
- // XXX struct RenderData *rd = NULL; // 2.5 global: &G.scene->r;
+ float xt, yt, xr, yr;
+ float s,c;
-
- scale = (TransformVars *)seq->effectdata;
xo = x;
yo = y;
-
- //factor scale
- factxScale = scale->ScalexIni + (scale->ScalexFin - scale->ScalexIni) * facf0;
- factyScale = scale->ScaleyIni + (scale->ScaleyFin - scale->ScaleyIni) * facf0;
-
- //Factor translate
- if(!scale->percent){
- float rd_s = 0.0f; // XXX 2.5 global: (rd->size / 100.0f);
-
- tx = scale->xIni * rd_s+(xo / 2.0f) + (scale->xFin * rd_s -(xo / 2.0f) - scale->xIni * rd_s +(xo / 2.0f)) * facf0;
- ty = scale->yIni * rd_s+(yo / 2.0f) + (scale->yFin * rd_s -(yo / 2.0f) - scale->yIni * rd_s +(yo / 2.0f)) * facf0;
- }else{
- tx = xo*(scale->xIni/100.0f)+(xo / 2.0f) + (xo*(scale->xFin/100.0f)-(xo / 2.0f) - xo*(scale->xIni/100.0f)+(xo / 2.0f)) * facf0;
- ty = yo*(scale->yIni/100.0f)+(yo / 2.0f) + (yo*(scale->yFin/100.0f)-(yo / 2.0f) - yo*(scale->yIni/100.0f)+(yo / 2.0f)) * facf0;
- }
-
- //factor Rotate
- factRot = scale->rotIni + (scale->rotFin - scale->rotIni) * facf0;
- rad = (M_PI * factRot) / 180.0f;
- s= sin(rad);
- c= cos(rad);
-
+
+ // Rotate
+ s= sin(rotate);
+ c= cos(rotate);
for (yi = 0; yi < yo; yi++) {
for (xi = 0; xi < xo; xi++) {
- //tranlate point
- px = xi-tx;
- py = yi-ty;
+
+ //translate point
+ xt = xi-translate_x;
+ yt = yi-translate_y;
//rotate point with center ref
- xaux = c*px + py*s ;
- yaux = -s*px + c*py;
+ xr = c*xt + s*yt;
+ yr = -s*xt + c*yt;
//scale point with center ref
- xs = xaux / factxScale;
- ys = yaux / factyScale;
+ xt = xr / scale_x;
+ yt = yr / scale_y;
//undo reference center point
- xs += (xo / 2.0f);
- ys += (yo / 2.0f);
+ xt += (xo / 2.0f);
+ yt += (yo / 2.0f);
//interpolate
- switch(scale->interpolation) {
+ switch(interpolation) {
case 0:
- neareast_interpolation(ibuf1,out, xs,ys,xi,yi);
+ neareast_interpolation(ibuf1,out, xt,yt,xi,yi);
break;
case 1:
- bilinear_interpolation(ibuf1,out, xs,ys,xi,yi);
+ bilinear_interpolation(ibuf1,out, xt,yt,xi,yi);
break;
case 2:
- bicubic_interpolation(ibuf1,out, xs,ys,xi,yi);
+ bicubic_interpolation(ibuf1,out, xt,yt,xi,yi);
break;
}
}
- }
+ }
+}
+
+static void do_transform(Scene *scene, Sequence *seq, float facf0, int x, int y,
+ struct ImBuf *ibuf1,struct ImBuf *out)
+{
+ TransformVars *transform = (TransformVars *)seq->effectdata;
+ float scale_x, scale_y, translate_x, translate_y, rotate_radians;
+
+ // Scale
+ if (transform->uniform_scale) {
+ scale_x = scale_y = transform->ScalexIni;
+ } else {
+ scale_x = transform->ScalexIni;
+ scale_y = transform->ScaleyIni;
+ }
+
+ // Translate
+ if(!transform->percent){
+ float rd_s = (scene->r.size/100.0f);
+
+ translate_x = transform->xIni*rd_s+(x/2.0f);
+ translate_y = transform->yIni*rd_s+(y/2.0f);
+ }else{
+ translate_x = x*(transform->xIni/100.0f)+(x/2.0f);
+ translate_y = y*(transform->yIni/100.0f)+(y/2.0f);
+ }
+
+ // Rotate
+ rotate_radians = (M_PI*transform->rotIni)/180.0f;
+ transform_image(x,y, ibuf1, out, scale_x, scale_y, translate_x, translate_y, rotate_radians, transform->interpolation);
}
-static void do_transform_effect(Sequence * seq,int cfra,
+
+
+static void do_transform_effect(Scene *scene, Sequence *seq,int cfra,
float facf0, float facf1, int x, int y,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
struct ImBuf *ibuf3, struct ImBuf *out)
{
- do_transform(seq, facf0, x, y, ibuf1, out);
+ do_transform(scene, seq, facf0, x, y, ibuf1, out);
}
@@ -2574,7 +2588,7 @@ static void do_glow_effect_float(Sequence *seq, float facf0, float facf1,
RVAddBitmaps_float (inbuf , outbuf, outbuf, x, y);
}
-static void do_glow_effect(Sequence * seq,int cfra,
+static void do_glow_effect(Scene *scene, Sequence *seq, int cfra,
float facf0, float facf1, int x, int y,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
struct ImBuf *ibuf3, struct ImBuf *out)
@@ -2629,7 +2643,7 @@ static int early_out_color(struct Sequence *seq,
return -1;
}
-static void do_solid_color(Sequence * seq,int cfra,
+static void do_solid_color(Scene *scene, Sequence *seq, int cfra,
float facf0, float facf1, int x, int y,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
struct ImBuf *ibuf3, struct ImBuf *out)
@@ -2992,16 +3006,16 @@ static void get_default_fac_fade(struct Sequence *seq, int cfra,
*facf1 /= seq->len;
}
-static void do_overdrop_effect(struct Sequence * seq, int cfra,
+static void do_overdrop_effect(Scene *scene, Sequence *seq, int cfra,
float fac, float facf,
int x, int y, struct ImBuf * ibuf1,
struct ImBuf * ibuf2,
struct ImBuf * ibuf3,
struct ImBuf * out)
{
- do_drop_effect(seq, cfra, fac, facf, x, y,
+ do_drop_effect(scene, seq, cfra, fac, facf, x, y,
ibuf1, ibuf2, ibuf3, out);
- do_alphaover_effect(seq, cfra, fac, facf, x, y,
+ do_alphaover_effect(scene, seq, cfra, fac, facf, x, y,
ibuf1, ibuf2, ibuf3, out);
}
diff --git a/source/blender/blenkernel/intern/sequence.c b/source/blender/blenkernel/intern/sequencer.c
index 07969704521..aa81cea79f5 100644
--- a/source/blender/blenkernel/intern/sequence.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -43,20 +43,23 @@
#include "BKE_global.h"
#include "BKE_image.h"
#include "BKE_main.h"
-#include "BKE_sequence.h"
+#include "BKE_sequencer.h"
#include "BKE_fcurve.h"
#include "BKE_utildefines.h"
#include "RNA_access.h"
#include "RE_pipeline.h"
-#include "BLI_blenlib.h"
-#include "BLI_util.h"
+#include "BLI_fileops.h"
+#include "BLI_listbase.h"
+#include "BLI_path_util.h"
+#include "BLI_string.h"
+#include "BLI_threads.h"
+#include <pthread.h>
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
-#include "BLI_threads.h"
-#include <pthread.h>
+
#include "BKE_context.h"
#include "BKE_sound.h"
@@ -73,7 +76,9 @@ static int seqrecty= 0;
//static int blender_test_break() {return 0;}
/* **** XXX ******** */
-
+#define SELECT 1
+ListBase seqbase_clipboard;
+int seqbase_clipboard_frame;
void printf_strip(Sequence *seq)
{
@@ -82,6 +87,20 @@ void printf_strip(Sequence *seq)
fprintf(stderr, "\tseq_tx_set_final_left: %d %d\n\n", seq_tx_get_final_left(seq, 0), seq_tx_get_final_right(seq, 0));
}
+void seqbase_recursive_apply(ListBase *seqbase, int (*apply_func)(Sequence *seq, void *), void *arg)
+{
+ Sequence *iseq;
+ for(iseq= seqbase->first; iseq; iseq= iseq->next) {
+ seq_recursive_apply(iseq, apply_func, arg);
+ }
+}
+
+void seq_recursive_apply(Sequence *seq, int (*apply_func)(Sequence *, void *), void *arg)
+{
+ if(apply_func(seq, arg) && seq->seqbase.first)
+ seqbase_recursive_apply(&seq->seqbase, apply_func, arg);
+}
+
/* **********************************************************************
alloc / free functions
********************************************************************** */
@@ -197,23 +216,26 @@ void seq_free_strip(Strip *strip)
void seq_free_sequence(Scene *scene, Sequence *seq)
{
- Editing *ed = scene->ed;
-
if(seq->strip) seq_free_strip(seq->strip);
if(seq->anim) IMB_free_anim(seq->anim);
- if(seq->sound_handle)
- sound_delete_handle(scene, seq->sound_handle);
-
if (seq->type & SEQ_EFFECT) {
struct SeqEffectHandle sh = get_sequence_effect(seq);
sh.free(seq);
}
- if (ed->act_seq==seq)
- ed->act_seq= NULL;
+ /* clipboard has no scene and will never have a sound handle or be active */
+ if(scene) {
+ Editing *ed = scene->ed;
+
+ if (ed->act_seq==seq)
+ ed->act_seq= NULL;
+
+ if(seq->sound_handle)
+ sound_delete_handle(scene, seq->sound_handle);
+ }
MEM_freeN(seq);
}
@@ -229,6 +251,17 @@ Editing *seq_give_editing(Scene *scene, int alloc)
return scene->ed;
}
+void seq_free_clipboard(void)
+{
+ Sequence *seq, *nseq;
+
+ for(seq= seqbase_clipboard.first; seq; seq= nseq) {
+ nseq= seq->next;
+ seq_free_sequence(NULL, seq);
+ }
+ seqbase_clipboard.first= seqbase_clipboard.last= NULL;
+}
+
void seq_free_editing(Scene *scene)
{
Editing *ed = scene->ed;
@@ -670,28 +703,22 @@ void sort_seq(Scene *scene)
}
-void clear_scene_in_allseqs(Scene *sce)
+static int clear_scene_in_allseqs_cb(Sequence *seq, void *arg_pt)
{
- Scene *sce1;
- Editing *ed;
- Sequence *seq;
-
- /* when a scene is deleted: test all seqs */
-
- sce1= G.main->scene.first;
- while(sce1) {
- if(sce1!=sce && sce1->ed) {
- ed= sce1->ed;
-
- SEQ_BEGIN(ed, seq) {
+ if(seq->scene==(Scene *)arg_pt)
+ seq->scene= NULL;
+ return 1;
+}
- if(seq->scene==sce) seq->scene= 0;
+void clear_scene_in_allseqs(Scene *scene)
+{
+ Scene *scene_iter;
- }
- SEQ_END
+ /* when a scene is deleted: test all seqs */
+ for(scene_iter= G.main->scene.first; scene_iter; scene_iter= scene_iter->id.next) {
+ if(scene_iter != scene && scene_iter->ed) {
+ seqbase_recursive_apply(&scene_iter->ed->seqbase, clear_scene_in_allseqs_cb, scene);
}
-
- sce1= sce1->id.next;
}
}
@@ -820,23 +847,26 @@ static void do_effect(Scene *scene, int cfra, Sequence *seq, TStripElem * se)
return;
}
- fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence,
- "effect_fader", 0);
-
- if (!fcu) {
+ if ((seq->flag & SEQ_USE_EFFECT_DEFAULT_FADE) != 0) {
sh.get_default_fac(seq, cfra, &fac, &facf);
if( scene->r.mode & R_FIELDS ); else facf= fac;
} else {
- fac = facf = evaluate_fcurve(fcu, cfra);
- if( scene->r.mode & R_FIELDS ) {
- facf = evaluate_fcurve(fcu, cfra + 0.5);
+ fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence,
+ "effect_fader", 0);
+ if (fcu) {
+ fac = facf = evaluate_fcurve(fcu, cfra);
+ if( scene->r.mode & R_FIELDS ) {
+ facf = evaluate_fcurve(fcu, cfra + 0.5);
+ }
+ } else {
+ fac = facf = seq->effect_fader;
}
}
early_out = sh.early_out(seq, fac, facf);
if (early_out == -1) { /* no input needed */
- sh.execute(seq, cfra, fac, facf,
+ sh.execute(scene, seq, cfra, fac, facf,
se->ibuf->x, se->ibuf->y,
0, 0, 0, se->ibuf);
return;
@@ -925,7 +955,7 @@ static void do_effect(Scene *scene, int cfra, Sequence *seq, TStripElem * se)
IMB_rect_from_float(se3->ibuf);
}
- sh.execute(seq, cfra, fac, facf, x, y, se1->ibuf, se2->ibuf, se3->ibuf,
+ sh.execute(scene, seq, cfra, fac, facf, x, y, se1->ibuf, se2->ibuf, se3->ibuf,
se->ibuf);
}
@@ -2007,13 +2037,18 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
}
}
} else if(seq->type == SEQ_SCENE) { // scene can be NULL after deletions
- Scene *sce= seq->scene, *oldsce= scene;
+ Scene *sce= seq->scene;// *oldsce= scene;
Render *re;
RenderResult rres;
char scenename[64];
- int have_seq= (sce->r.scemode & R_DOSEQ) && sce->ed && sce->ed->seqbase.first;
- int sce_valid =sce && (sce->camera || have_seq);
-
+ int have_seq= FALSE;
+ int sce_valid= FALSE;
+
+ if(sce) {
+ have_seq= (sce->r.scemode & R_DOSEQ) && sce->ed && sce->ed->seqbase.first;
+ sce_valid= (sce->camera || have_seq);
+ }
+
if (se->ibuf == NULL && sce_valid && !build_proxy_run) {
se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size);
if (se->ibuf) {
@@ -2122,16 +2157,19 @@ static void do_effect_seq_recursively(Scene *scene, Sequence *seq, TStripElem *s
se->se2 = 0;
se->se3 = 0;
- fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence,
- "effect_fader", 0);
-
- if (!fcu) {
+ if ((seq->flag & SEQ_USE_EFFECT_DEFAULT_FADE) != 0) {
sh.get_default_fac(seq, cfra, &fac, &facf);
if( scene->r.mode & R_FIELDS ); else facf= fac;
} else {
- fac = facf = evaluate_fcurve(fcu, cfra);
- if( scene->r.mode & R_FIELDS ) {
- facf = evaluate_fcurve(fcu, cfra + 0.5);
+ fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence,
+ "effect_fader", 0);
+ if (fcu) {
+ fac = facf = evaluate_fcurve(fcu, cfra);
+ if( scene->r.mode & R_FIELDS ) {
+ facf = evaluate_fcurve(fcu, cfra + 0.5);
+ }
+ } else {
+ fac = facf = seq->effect_fader;
}
}
@@ -2270,7 +2308,7 @@ static TStripElem* do_handle_speed_effect(Scene *scene, Sequence * seq, int cfra
} else {
sh = get_sequence_effect(seq);
- sh.execute(seq, cfra,
+ sh.execute(scene, seq, cfra,
f_cfra - (float) cfra_left,
f_cfra - (float) cfra_left,
se->ibuf->x, se->ibuf->y,
@@ -2504,12 +2542,12 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene,
}
if (swap_input) {
- sh.execute(seq, cfra,
+ sh.execute(scene, seq, cfra,
facf, facf, x, y,
se2->ibuf, se1->ibuf_comp, 0,
se2->ibuf_comp);
} else {
- sh.execute(seq, cfra,
+ sh.execute(scene, seq, cfra,
facf, facf, x, y,
se1->ibuf_comp, se2->ibuf, 0,
se2->ibuf_comp);
@@ -3192,6 +3230,23 @@ static void free_imbuf_seq_with_ipo(Scene *scene, struct Ipo *ipo)
}
#endif
+static int seq_sound_reload_cb(Sequence *seq, void *arg_pt)
+{
+ if (seq->type==SEQ_SOUND && seq->sound) {
+ Scene *scene= (Scene *)arg_pt;
+ if(seq->sound_handle)
+ sound_delete_handle(scene, seq->sound_handle);
+
+ seq->sound_handle = sound_new_handle(scene, seq->sound, seq->start, seq->start + seq->strip->len, 0);
+ return 0;
+ }
+ return 1; /* recurse meta's */
+}
+void seqbase_sound_reload(Scene *scene, ListBase *seqbase)
+{
+ seqbase_recursive_apply(seqbase, seq_sound_reload_cb, (void *)scene);
+}
+
/* seq funcs's for transforming internally
notice the difference between start/end and left/right.
@@ -3250,7 +3305,7 @@ void seq_tx_set_final_right(Sequence *seq, int val)
/* used so we can do a quick check for single image seq
since they work a bit differently to normal image seq's (during transform) */
-int check_single_seq(Sequence *seq)
+int seq_single_check(Sequence *seq)
{
if ( seq->len==1 && (seq->type == SEQ_IMAGE || seq->type == SEQ_COLOR))
return 1;
@@ -3258,6 +3313,42 @@ int check_single_seq(Sequence *seq)
return 0;
}
+/* check if the selected seq's reference unselected seq's */
+int seqbase_isolated_sel_check(ListBase *seqbase)
+{
+ Sequence *seq;
+ /* is there more than 1 select */
+ int ok= FALSE;
+
+ for(seq= seqbase->first; seq; seq= seq->next) {
+ if(seq->flag & SELECT) {
+ ok= TRUE;
+ break;
+ }
+ }
+
+ if(ok == FALSE)
+ return FALSE;
+
+ /* test relationships */
+ for(seq= seqbase->first; seq; seq= seq->next) {
+ if(seq->flag & SELECT) {
+ if(seq->type & SEQ_EFFECT) {
+ if(seq->seq1 && (seq->seq1->flag & SELECT)==0) return FALSE;
+ if(seq->seq2 && (seq->seq2->flag & SELECT)==0) return FALSE;
+ if(seq->seq3 && (seq->seq3->flag & SELECT)==0) return FALSE;
+ }
+ }
+ else if(seq->type & SEQ_EFFECT) {
+ if(seq->seq1 && (seq->seq1->flag & SELECT)) return FALSE;
+ if(seq->seq2 && (seq->seq2->flag & SELECT)) return FALSE;
+ if(seq->seq3 && (seq->seq3->flag & SELECT)) return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
/* use to impose limits when dragging/extending - so impossible situations dont happen
* Cant use the SEQ_LEFTSEL and SEQ_LEFTSEL directly because the strip may be in a metastrip */
void seq_tx_handle_xlimits(Sequence *seq, int leftflag, int rightflag)
@@ -3267,7 +3358,7 @@ void seq_tx_handle_xlimits(Sequence *seq, int leftflag, int rightflag)
seq_tx_set_final_left(seq, seq_tx_get_final_right(seq, 0)-1);
}
- if (check_single_seq(seq)==0) {
+ if (seq_single_check(seq)==0) {
if (seq_tx_get_final_left(seq, 0) >= seq_tx_get_end(seq)) {
seq_tx_set_final_left(seq, seq_tx_get_end(seq)-1);
}
@@ -3289,7 +3380,7 @@ void seq_tx_handle_xlimits(Sequence *seq, int leftflag, int rightflag)
seq_tx_set_final_right(seq, seq_tx_get_final_left(seq, 0)+1);
}
- if (check_single_seq(seq)==0) {
+ if (seq_single_check(seq)==0) {
if (seq_tx_get_final_right(seq, 0) <= seq_tx_get_start(seq)) {
seq_tx_set_final_right(seq, seq_tx_get_start(seq)+1);
}
@@ -3303,10 +3394,10 @@ void seq_tx_handle_xlimits(Sequence *seq, int leftflag, int rightflag)
}
}
-void fix_single_seq(Sequence *seq)
+void seq_single_fix(Sequence *seq)
{
int left, start, offset;
- if (!check_single_seq(seq))
+ if (!seq_single_check(seq))
return;
/* make sure the image is always at the start since there is only one,
@@ -3351,13 +3442,15 @@ int seq_test_overlap(ListBase * seqbasep, Sequence *test)
}
-static void seq_translate(Sequence *seq, int delta)
+static void seq_translate(Scene *evil_scene, Sequence *seq, int delta)
{
+ seq_offset_animdata(evil_scene, seq, delta);
seq->start += delta;
+
if(seq->type==SEQ_META) {
Sequence *seq_child;
for(seq_child= seq->seqbase.first; seq_child; seq_child= seq_child->next) {
- seq_translate(seq_child, delta);
+ seq_translate(evil_scene, seq_child, delta);
}
}
@@ -3365,7 +3458,7 @@ static void seq_translate(Sequence *seq, int delta)
}
/* return 0 if there werent enough space */
-int shuffle_seq(ListBase * seqbasep, Sequence *test)
+int shuffle_seq(ListBase * seqbasep, Sequence *test, Scene *evil_scene)
{
int orig_machine= test->machine;
test->machine++;
@@ -3393,7 +3486,7 @@ int shuffle_seq(ListBase * seqbasep, Sequence *test)
test->machine= orig_machine;
new_frame = new_frame + (test->start-test->startdisp); /* adjust by the startdisp */
- seq_translate(test, new_frame - test->start);
+ seq_translate(evil_scene, test, new_frame - test->start);
calc_sequence(test);
return 0;
@@ -3449,7 +3542,7 @@ static int shuffle_seq_time_offset(ListBase * seqbasep, char dir)
return tot_ofs;
}
-int shuffle_seq_time(ListBase * seqbasep)
+int shuffle_seq_time(ListBase * seqbasep, Scene *evil_scene)
{
/* note: seq->tmp is used to tag strips to move */
@@ -3462,7 +3555,7 @@ int shuffle_seq_time(ListBase * seqbasep)
if(offset) {
for(seq= seqbasep->first; seq; seq= seq->next) {
if(seq->tmp) {
- seq_translate(seq, offset);
+ seq_translate(evil_scene, seq, offset);
seq->flag &= ~SEQ_OVERLAP;
}
}
@@ -3471,19 +3564,118 @@ int shuffle_seq_time(ListBase * seqbasep)
return offset? 0:1;
}
-
-void seq_update_sound(struct Sequence *seq)
+void seq_update_sound(Sequence *seq)
{
- if(seq->type == SEQ_SOUND)
+ if(seq->type == SEQ_SOUND && seq->sound_handle)
{
seq->sound_handle->startframe = seq->startdisp;
seq->sound_handle->endframe = seq->enddisp;
seq->sound_handle->frameskip = seq->startofs + seq->anim_startofs;
- seq->sound_handle->mute = seq->flag & SEQ_MUTE ? 1 : 0;
seq->sound_handle->changed = -1;
+ /* mute is set in seq_update_muting_recursive */
+ }
+}
+
+static void seq_update_muting_recursive(ListBase *seqbasep, Sequence *metaseq, int mute)
+{
+ Sequence *seq;
+ int seqmute;
+
+ /* for sound we go over full meta tree to update muted state,
+ since sound is played outside of evaluating the imbufs, */
+ for(seq=seqbasep->first; seq; seq=seq->next) {
+ seqmute= (mute || (seq->flag & SEQ_MUTE));
+
+ if(seq->type == SEQ_META) {
+ /* if this is the current meta sequence, unmute because
+ all sequences above this were set to mute */
+ if(seq == metaseq)
+ seqmute= 0;
+
+ seq_update_muting_recursive(&seq->seqbase, metaseq, seqmute);
+ }
+ else if(seq->type == SEQ_SOUND) {
+ if(seq->sound_handle && seqmute != seq->sound_handle->mute) {
+ seq->sound_handle->mute = seqmute;
+ seq->sound_handle->changed = -1;
+ }
+ }
+ }
+}
+
+void seq_update_muting(Editing *ed)
+{
+ if(ed) {
+ /* mute all sounds up to current metastack list */
+ MetaStack *ms= ed->metastack.last;
+
+ if(ms)
+ seq_update_muting_recursive(&ed->seqbase, ms->parseq, 1);
+ else
+ seq_update_muting_recursive(&ed->seqbase, NULL, 0);
}
}
+/* in cases where we done know the sequence's listbase */
+ListBase *seq_seqbase(ListBase *seqbase, Sequence *seq)
+{
+ Sequence *iseq;
+ ListBase *lb= NULL;
+
+ for(iseq= seqbase->first; iseq; iseq= iseq->next) {
+ if(seq==iseq) {
+ return seqbase;
+ }
+ else if(iseq->seqbase.first && (lb= seq_seqbase(&iseq->seqbase, seq))) {
+ return lb;
+ }
+ }
+
+ return NULL;
+}
+
+/* XXX - hackish function needed for transforming strips! TODO - have some better solution */
+void seq_offset_animdata(Scene *scene, Sequence *seq, int ofs)
+{
+ char str[32];
+ FCurve *fcu;
+
+ if(scene->adt==NULL || ofs==0)
+ return;
+
+ sprintf(str, "[\"%s\"]", seq->name+2);
+
+ for (fcu= scene->adt->action->curves.first; fcu; fcu= fcu->next) {
+ if(strstr(fcu->rna_path, "sequence_editor.sequences_all[") && strstr(fcu->rna_path, str)) {
+ int i;
+ for (i = 0; i < fcu->totvert; i++) {
+ BezTriple *bezt= &fcu->bezt[i];
+ bezt->vec[0][0] += ofs;
+ bezt->vec[1][0] += ofs;
+ bezt->vec[2][0] += ofs;
+ }
+ }
+ }
+}
+
+
+Sequence *get_seq_by_name(ListBase *seqbase, const char *name, int recursive)
+{
+ Sequence *iseq=NULL;
+ Sequence *rseq=NULL;
+
+ for (iseq=seqbase->first; iseq; iseq=iseq->next) {
+ if (strcmp(name, iseq->name+2) == 0)
+ return iseq;
+ else if(recursive && (iseq->seqbase.first) && (rseq=get_seq_by_name(&iseq->seqbase, name, 1))) {
+ return rseq;
+ }
+ }
+
+ return NULL;
+}
+
+
Sequence *active_seq_get(Scene *scene)
{
Editing *ed= seq_give_editing(scene, FALSE);
@@ -3512,7 +3704,7 @@ void seq_load_apply(Scene *scene, Sequence *seq, SeqLoadInfo *seq_load)
}
if(seq_load->flag & SEQ_LOAD_REPLACE_SEL) {
- seq_load->flag |= 1; /* SELECT */
+ seq_load->flag |= SELECT;
active_seq_set(scene, seq);
}
@@ -3538,7 +3730,7 @@ Sequence *alloc_sequence(ListBase *lb, int cfra, int machine)
*( (short *)seq->name )= ID_SEQ;
seq->name[2]= 0;
- seq->flag= 1; /* SELECT */
+ seq->flag= SELECT;
seq->start= cfra;
seq->machine= machine;
seq->mul= 1.0;
diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c
index e3a66b33ca3..cf1e5d8d985 100644
--- a/source/blender/blenkernel/intern/softbody.c
+++ b/source/blender/blenkernel/intern/softbody.c
@@ -3753,6 +3753,7 @@ static void softbody_update_positions(Object *ob, SoftBody *sb, float (*vertexCo
}
}
+
/* void SB_estimate_transform */
/* input Object *ob out (says any object that can do SB like mesh,lattice,curve )
output float lloc[3],float lrot[3][3],float lscale[3][3]
@@ -3765,164 +3766,40 @@ static void softbody_update_positions(Object *ob, SoftBody *sb, float (*vertexCo
lloc,lrot,lscale are allowed to be NULL, just in case you don't need it.
should be pretty useful for pythoneers :)
not! velocity .. 2nd order stuff
+ vcloud_estimate_transform see
*/
-/* can't believe there is none in math utils */
-float _det_m3(float m2[3][3])
-{
- float det = 0.f;
- if (m2){
- det= m2[0][0]* (m2[1][1]*m2[2][2] - m2[1][2]*m2[2][1])
- -m2[1][0]* (m2[0][1]*m2[2][2] - m2[0][2]*m2[2][1])
- +m2[2][0]* (m2[0][1]*m2[1][2] - m2[0][2]*m2[1][1]);
- }
- return det;
-}
-
void SB_estimate_transform(Object *ob,float lloc[3],float lrot[3][3],float lscale[3][3])
{
BodyPoint *bp;
ReferenceVert *rp;
- float accu_pos[3] = {0.0f,0.0f,0.0f};
- float com[3],va[3],vb[3],rcom[3];
- float accu_mass = 0.0f,la = 0.0f,lb = 0.0f,eps = 0.000001f;
SoftBody *sb = 0;
- int a,i=0,imax=16;
- int _localdebug;
-
- if (lloc) zero_v3(lloc);
- if (lrot) zero_m3(lrot);
- if (lscale) zero_m3(lscale);
-
+ float (*opos)[3];
+ float (*rpos)[3];
+ float com[3],rcom[3];
+ int a;
if(!ob ||!ob->soft) return; /* why did we get here ? */
sb= ob->soft;
- /*for threading there should be a lock */
- /* sb-> lock; */
- /* calculate center of mass */
if(!sb || !sb->bpoint) return;
- _localdebug=sb->solverflags & SBSO_MONITOR; /* turn this on/off if you (don't) want to see progress on console */
- for(a=0,bp=sb->bpoint; a<sb->totpoint; a++, bp++) {
- VECADD(accu_pos,accu_pos,bp->pos);
- accu_mass += bp->mass;
+ opos= MEM_callocN( (sb->totpoint)*3*sizeof(float), "SB_OPOS");
+ rpos= MEM_callocN( (sb->totpoint)*3*sizeof(float), "SB_RPOS");
+ /* might filter vertex selection with a vertex group */
+ for(a=0, bp=sb->bpoint, rp=sb->scratch->Ref.ivert; a<sb->totpoint; a++, bp++, rp++) {
+ VECCOPY(rpos[a],rp->pos);
+ VECCOPY(opos[a],bp->pos);
}
- VECCOPY(com,accu_pos);
- mul_v3_fl(com,1.0f/accu_mass);
- /* center of mass done*/
- if (sb->scratch){
- float dcom[3],stunt[3];
- float m[3][3],mr[3][3],q[3][3],qi[3][3];
- float odet,ndet;
- zero_m3(m);
- zero_m3(mr);
- VECSUB(dcom,com,sb->scratch->Ref.com);
- VECCOPY(rcom,sb->scratch->Ref.com);
- if (_localdebug) {
- printf("DCOM %f %f %f\n",dcom[0],dcom[1],dcom[2]);
- }
- if (lloc) VECCOPY(lloc,dcom);
- VECCOPY(sb->lcom,dcom);
- /* build 'projection' matrix */
- for(a=0, bp=sb->bpoint, rp=sb->scratch->Ref.ivert; a<sb->totpoint; a++, bp++, rp++) {
- VECSUB(va,rp->pos,rcom);
- la += len_v3(va);
- /* mul_v3_fl(va,bp->mass); mass needs renormalzation here ?? */
- VECSUB(vb,bp->pos,com);
- lb += len_v3(vb);
- /* mul_v3_fl(va,rp->mass); */
- m[0][0] += va[0] * vb[0];
- m[0][1] += va[0] * vb[1];
- m[0][2] += va[0] * vb[2];
-
- m[1][0] += va[1] * vb[0];
- m[1][1] += va[1] * vb[1];
- m[1][2] += va[1] * vb[2];
-
- m[2][0] += va[2] * vb[0];
- m[2][1] += va[2] * vb[1];
- m[2][2] += va[2] * vb[2];
-
- /* building the referenc matrix on the fly
- needed to scale properly later*/
-
- mr[0][0] += va[0] * va[0];
- mr[0][1] += va[0] * va[1];
- mr[0][2] += va[0] * va[2];
-
- mr[1][0] += va[1] * va[0];
- mr[1][1] += va[1] * va[1];
- mr[1][2] += va[1] * va[2];
-
- mr[2][0] += va[2] * va[0];
- mr[2][1] += va[2] * va[1];
- mr[2][2] += va[2] * va[2];
- }
- /* we are pretty much set up here and we could return that raw mess containing essential information
- but being nice fellows we proceed:
- knowing we did split off the tanslational part to the center of mass (com) part
- however let's do some more reverse engeneering and see if we can split
- rotation from scale ->Polardecompose
- */
- copy_m3_m3(q,m);
- stunt[0] = q[0][0]; stunt[1] = q[1][1]; stunt[2] = q[2][2];
- /* nothing to see here but renormalizing works nicely
- printf("lenght stunt %5.3f a %5.3f b %5.3f %5.3f\n",len_v3(stunt),la,lb,sqrt(la*lb));
- */
- mul_m3_fl(q,1.f/len_v3(stunt));
- /* not too much to see here
- if(_localdebug){
- printf("q0 %5.3f %5.3f %5.3f\n",q[0][0],q[0][1],q[0][2]);
- printf("q1 %5.3f %5.3f %5.3f\n",q[1][0],q[1][1],q[1][2]);
- printf("q2 %5.3f %5.3f %5.3f\n",q[2][0],q[2][1],q[2][2]);
- }
- */
- /* this is pretty much Polardecompose 'inline' the algo based on Higham's thesis */
- /* without the far case !!! but seems to work here pretty neat */
- odet = 0.f;
- ndet = _det_m3(q);
- while((odet-ndet)*(odet-ndet) > eps && i<imax){
- invert_m3_m3(qi,q);
- transpose_m3(qi);
- add_m3_m3m3(q,q,qi);
- mul_m3_fl(q,0.5f);
- odet =ndet;
- ndet =_det_m3(q);
- i++;
- }
- if (i){
- float scale[3][3];
- float irot[3][3];
- if(lrot) copy_m3_m3(lrot,q);
- copy_m3_m3(sb->lrot,q);
- if(_localdebug){
- printf("Rot .. i %d\n",i);
- printf("!q0 %5.3f %5.3f %5.3f\n",q[0][0],q[0][1],q[0][2]);
- printf("!q1 %5.3f %5.3f %5.3f\n",q[1][0],q[1][1],q[1][2]);
- printf("!q2 %5.3f %5.3f %5.3f\n",q[2][0],q[2][1],q[2][2]);
- }
- invert_m3_m3(irot,q);
- /* now that's where we need mr to get scaling right */
- invert_m3_m3(qi,mr);
- mul_m3_m3m3(q,m,qi);
-
- //mul_m3_m3m3(scale,q,irot);
- mul_m3_m3m3(scale,irot,q); /* i always have a problem with this C functions left/right operator applies first*/
- mul_m3_fl(scale,lb/la); /* 0 order scale was normalized away so put it back here dunno if that is needed here ???*/
-
- if(lscale) copy_m3_m3(lscale,scale);
- copy_m3_m3(sb->lscale,scale);
- if(_localdebug){
- printf("Scale .. \n");
- printf("!s0 %5.3f %5.3f %5.3f\n",scale[0][0],scale[0][1],scale[0][2]);
- printf("!s1 %5.3f %5.3f %5.3f\n",scale[1][0],scale[1][1],scale[1][2]);
- printf("!s2 %5.3f %5.3f %5.3f\n",scale[2][0],scale[2][1],scale[2][2]);
- }
-
- }
- }
- /*for threading there should be a unlock */
- /* sb-> unlock; */
+ vcloud_estimate_transform(sb->totpoint, opos, NULL, rpos, NULL, com, rcom,lrot,lscale);
+ //VECSUB(com,com,rcom);
+ if (lloc) VECCOPY(lloc,com);
+ VECCOPY(sb->lcom,com);
+ if (lscale) copy_m3_m3(sb->lscale,lscale);
+ if (lrot) copy_m3_m3(sb->lrot,lrot);
+
+
+ MEM_freeN(opos);
+ MEM_freeN(rpos);
}
static void softbody_reset(Object *ob, SoftBody *sb, float (*vertexCos)[3], int numVerts)
@@ -4183,10 +4060,6 @@ void sbObjectStep(Scene *scene, Object *ob, float cfra, float (*vertexCos)[3], i
dtime = timescale;
softbody_update_positions(ob, sb, vertexCos, numVerts);
softbody_step(scene, ob, sb, dtime);
- if(sb->solverflags & SBSO_MONITOR ){
- printf("Picked from cache continue_physics %d\n",framenr);
- }
-
softbody_to_object(ob, vertexCos, numVerts, 0);
return;
}
@@ -4211,9 +4084,6 @@ void sbObjectStep(Scene *scene, Object *ob, float cfra, float (*vertexCos)[3], i
cache_result = BKE_ptcache_read_cache(&pid, framenr, scene->r.frs_sec);
if(cache_result == PTCACHE_READ_EXACT || cache_result == PTCACHE_READ_INTERPOLATED) {
- if(sb->solverflags & SBSO_MONITOR ){
- printf("Picked from cache at frame %d\n",framenr);
- }
softbody_to_object(ob, vertexCos, numVerts, sb->local);
cache->simframe= framenr;
diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c
index d8950c7dace..74c6afdc018 100644
--- a/source/blender/blenkernel/intern/sound.c
+++ b/source/blender/blenkernel/intern/sound.c
@@ -31,6 +31,13 @@
#include <config.h>
#endif
+static int sound_disabled = 0;
+
+void sound_disable()
+{
+ sound_disabled = 1;
+}
+
void sound_init()
{
AUD_Specs specs;
@@ -42,6 +49,9 @@ void sound_init()
specs.format = U.audioformat;
specs.rate = U.audiorate;
+ if (sound_disabled)
+ device = 0;
+
if(buffersize < 128)
buffersize = AUD_DEFAULT_BUFFER_SIZE;
diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c
index af5cefbe161..092c0ff1042 100644
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
@@ -54,11 +54,12 @@
#include "BKE_tessmesh.h"
#include "BLI_blenlib.h"
+#include "BLI_edgehash.h"
#include "BLI_editVert.h"
-#include "BLI_math.h"
#include "BLI_linklist.h"
+#include "BLI_math.h"
#include "BLI_memarena.h"
-#include "BLI_edgehash.h"
+#include "BLI_pbvh.h"
#include "PIL_time.h"
#include "BLI_array.h"
@@ -71,58 +72,32 @@
#include "CCGSubSurf.h"
-typedef struct _VertData {
- float co[3];
- float no[3];
-} VertData;
-
-struct CCGDerivedMesh {
- DerivedMesh dm;
-
- CSubSurf *ss;
- int drawInteriorEdges, useSubsurfUv;
-
- struct {int startVert; CCVert *vert;} *vertMap;
- struct {int startVert; int startEdge; CCEdge *edge;} *edgeMap;
- struct {int startVert; int startEdge;
- int startFace; CCFace *face;} *faceMap;
- /*maps final faces to faceMap faces*/
- int *reverseFaceMap;
-
- EdgeHash *ehash;
-};
-
-typedef struct CCGDerivedMesh CCGDerivedMesh;
-
-static int cgdm_getVertMapIndex(CSubSurf *ss, CCVert *v);
-static int cgdm_getEdgeMapIndex(CSubSurf *ss, CCEdge *e);
-static int cgdm_getFaceMapIndex(CSubSurf *ss, CCFace *f);
-static CCGDerivedMesh *getCCGDerivedMesh(CSubSurf *ss,
+static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
int drawInteriorEdges,
int useSubsurfUv,
DerivedMesh *dm);
///
-static void *arena_alloc(CCAllocHDL a, int numBytes) {
+static void *arena_alloc(CCGAllocatorHDL a, int numBytes) {
return BLI_memarena_alloc(a, numBytes);
}
-static void *arena_realloc(CCAllocHDL a, void *ptr, int newSize, int oldSize) {
+static void *arena_realloc(CCGAllocatorHDL a, void *ptr, int newSize, int oldSize) {
void *p2 = BLI_memarena_alloc(a, newSize);
if (ptr) {
memcpy(p2, ptr, oldSize);
}
return p2;
}
-static void arena_free(CCAllocHDL a, void *ptr) {
+static void arena_free(CCGAllocatorHDL a, void *ptr) {
}
-static void arena_release(CCAllocHDL a) {
+static void arena_release(CCGAllocatorHDL a) {
BLI_memarena_free(a);
}
-static CSubSurf *_getSubSurf(CSubSurf *prevSS, int subdivLevels, int useAging, int useArena, int useFlatSubdiv) {
+static CCGSubSurf *_getSubSurf(CCGSubSurf *prevSS, int subdivLevels, int useAging, int useArena, int useFlatSubdiv) {
CCGMeshIFC ifc;
- CSubSurf *ccgSS;
+ CCGSubSurf *ccgSS;
/* subdivLevels==0 is not allowed */
subdivLevels = MAX2(subdivLevels, 1);
@@ -131,12 +106,12 @@ static CSubSurf *_getSubSurf(CSubSurf *prevSS, int subdivLevels, int useAging, i
int oldUseAging;
useAging = !!useAging;
- CCS_getUseAgeCounts(prevSS, &oldUseAging, NULL, NULL, NULL);
+ ccgSubSurf_getUseAgeCounts(prevSS, &oldUseAging, NULL, NULL, NULL);
if (oldUseAging!=useAging) {
- CCS_free(prevSS);
+ ccgSubSurf_free(prevSS);
} else {
- CCS_setSubdivisionLevels(prevSS, subdivLevels);
+ ccgSubSurf_setSubdivisionLevels(prevSS, subdivLevels);
return prevSS;
}
@@ -147,37 +122,37 @@ static CSubSurf *_getSubSurf(CSubSurf *prevSS, int subdivLevels, int useAging, i
} else {
ifc.vertUserSize = ifc.edgeUserSize = ifc.faceUserSize = 8;
}
- ifc.vertDataSize = sizeof(VertData);
+ ifc.vertDataSize = sizeof(DMGridData);
if (useArena) {
CCGAllocatorIFC allocatorIFC;
- CCAllocHDL allocator = BLI_memarena_new((1<<16));
+ CCGAllocatorHDL allocator = BLI_memarena_new((1<<16));
allocatorIFC.alloc = arena_alloc;
allocatorIFC.realloc = arena_realloc;
allocatorIFC.free = arena_free;
allocatorIFC.release = arena_release;
- ccgSS = CCS_new(&ifc, subdivLevels, &allocatorIFC, allocator);
+ ccgSS = ccgSubSurf_new(&ifc, subdivLevels, &allocatorIFC, allocator);
} else {
- ccgSS = CCS_new(&ifc, subdivLevels, NULL, NULL);
+ ccgSS = ccgSubSurf_new(&ifc, subdivLevels, NULL, NULL);
}
if (useAging) {
- CCS_setUseAgeCounts(ccgSS, 1, 8, 8, 8);
+ ccgSubSurf_setUseAgeCounts(ccgSS, 1, 8, 8, 8);
}
- CCS_setCalcVertexNormals(ccgSS, 1, BLI_STRUCT_OFFSET(VertData, no));
+ ccgSubSurf_setCalcVertexNormals(ccgSS, 1, BLI_STRUCT_OFFSET(DMGridData, no));
return ccgSS;
}
-static int getEdgeIndex(CSubSurf *ss, CCEdge *e, int x, int edgeSize) {
- CCVert *v0 = CCS_getEdgeVert0(e);
- CCVert *v1 = CCS_getEdgeVert1(e);
- int v0idx = *((int*) CCS_getVertUserData(ss, v0));
- int v1idx = *((int*) CCS_getVertUserData(ss, v1));
- int edgeBase = *((int*) CCS_getEdgeUserData(ss, e));
+static int getEdgeIndex(CCGSubSurf *ss, CCGEdge *e, int x, int edgeSize) {
+ CCGVert *v0 = ccgSubSurf_getEdgeVert0(e);
+ CCGVert *v1 = ccgSubSurf_getEdgeVert1(e);
+ int v0idx = *((int*) ccgSubSurf_getVertUserData(ss, v0));
+ int v1idx = *((int*) ccgSubSurf_getVertUserData(ss, v1));
+ int edgeBase = *((int*) ccgSubSurf_getEdgeUserData(ss, e));
if (x==0) {
return v0idx;
@@ -188,27 +163,27 @@ static int getEdgeIndex(CSubSurf *ss, CCEdge *e, int x, int edgeSize) {
}
}
-BM_INLINE int getFaceIndex(CSubSurf *ss, CCFace *f, int S, int x, int y, int edgeSize, int gridSize) {
- int faceBase = *((int*) CCS_getFaceUserData(ss, f));
- int numVerts = CCS_getFaceNumVerts(f);
+BM_INLINE int getFaceIndex(CCGSubSurf *ss, CCGFace *f, int S, int x, int y, int edgeSize, int gridSize) {
+ int faceBase = *((int*) ccgSubSurf_getFaceUserData(ss, f));
+ int numVerts = ccgSubSurf_getFaceNumVerts(f);
if (x==gridSize-1 && y==gridSize-1) {
- CCVert *v = CCS_getFaceVert(ss, f, S);
- return *((int*) CCS_getVertUserData(ss, v));
+ CCGVert *v = ccgSubSurf_getFaceVert(ss, f, S);
+ return *((int*) ccgSubSurf_getVertUserData(ss, v));
} else if (x==gridSize-1) {
- CCVert *v = CCS_getFaceVert(ss, f, S);
- CCEdge *e = CCS_getFaceEdge(ss, f, S);
- int edgeBase = *((int*) CCS_getEdgeUserData(ss, e));
- if (v==CCS_getEdgeVert0(e)) {
+ CCGVert *v = ccgSubSurf_getFaceVert(ss, f, S);
+ CCGEdge *e = ccgSubSurf_getFaceEdge(ss, f, S);
+ int edgeBase = *((int*) ccgSubSurf_getEdgeUserData(ss, e));
+ if (v==ccgSubSurf_getEdgeVert0(e)) {
return edgeBase + (gridSize-1-y)-1;
} else {
return edgeBase + (edgeSize-2-1)-((gridSize-1-y)-1);
}
} else if (y==gridSize-1) {
- CCVert *v = CCS_getFaceVert(ss, f, S);
- CCEdge *e = CCS_getFaceEdge(ss, f, (S+numVerts-1)%numVerts);
- int edgeBase = *((int*) CCS_getEdgeUserData(ss, e));
- if (v==CCS_getEdgeVert0(e)) {
+ CCGVert *v = ccgSubSurf_getFaceVert(ss, f, S);
+ CCGEdge *e = ccgSubSurf_getFaceEdge(ss, f, (S+numVerts-1)%numVerts);
+ int edgeBase = *((int*) ccgSubSurf_getEdgeUserData(ss, e));
+ if (v==ccgSubSurf_getEdgeVert0(e)) {
return edgeBase + (gridSize-1-x)-1;
} else {
return edgeBase + (edgeSize-2-1)-((gridSize-1-x)-1);
@@ -225,7 +200,7 @@ BM_INLINE int getFaceIndex(CSubSurf *ss, CCFace *f, int S, int x, int y, int edg
}
}
-static void get_face_uv_map_vert(UvVertMap *vmap, struct MFace *mf, int fi, CCVertHDL *fverts) {
+static void get_face_uv_map_vert(UvVertMap *vmap, struct MFace *mf, int fi, CCGVertHDL *fverts) {
unsigned int *fv = &mf->v1;
UvMapVert *v, *nv;
int j, nverts= mf->v4? 4: 3;
@@ -242,7 +217,7 @@ static void get_face_uv_map_vert(UvVertMap *vmap, struct MFace *mf, int fi, CCVe
}
}
-static int ss_sync_from_uv(CSubSurf *ss, CSubSurf *origss, DerivedMesh *dm, MTFace *tface) {
+static int ss_sync_from_uv(CCGSubSurf *ss, CCGSubSurf *origss, DerivedMesh *dm, MTFace *tface) {
#if 0
MFace *mface = dm->getTessFaceArray(dm);
MVert *mvert = dm->getVertArray(dm);
@@ -252,16 +227,16 @@ static int ss_sync_from_uv(CSubSurf *ss, CSubSurf *origss, DerivedMesh *dm, MTFa
UvMapVert *v;
UvVertMap *vmap;
float limit[2];
- CCVertHDL fverts[4];
+ CCGVertHDL fverts[4];
EdgeHash *ehash;
- float creaseFactor = (float)CCS_getSubdivisionLevels(ss);
+ float creaseFactor = (float)ccgSubSurf_getSubdivisionLevels(ss);
limit[0]= limit[1]= STD_UV_CONNECT_LIMIT;
vmap= make_uv_vert_map(mface, tface, totface, totvert, 0, limit);
if (!vmap)
return 0;
- CCS_initFullSync(ss);
+ ccgSubSurf_initFullSync(ss);
/* create vertices */
for (i=0; i<totvert; i++) {
@@ -276,15 +251,15 @@ static int ss_sync_from_uv(CSubSurf *ss, CSubSurf *origss, DerivedMesh *dm, MTFa
for (v=get_uv_map_vert(vmap, i); v; v=v->next) {
if (v->separate) {
- CCVert *ssv;
- CCVertHDL vhdl = SET_INT_IN_POINTER(v->f*4 + v->tfindex);
+ CCGVert *ssv;
+ CCGVertHDL vhdl = SET_INT_IN_POINTER(v->f*4 + v->tfindex);
float uv[3];
uv[0]= (tface+v->f)->uv[v->tfindex][0];
uv[1]= (tface+v->f)->uv[v->tfindex][1];
uv[2]= 0.0f;
- CCS_syncVert(ss, vhdl, uv, seam, &ssv);
+ ccgSubSurf_syncVert(ss, vhdl, uv, seam, &ssv);
}
}
}
@@ -295,7 +270,7 @@ static int ss_sync_from_uv(CSubSurf *ss, CSubSurf *origss, DerivedMesh *dm, MTFa
for (i=0; i<totface; i++) {
MFace *mf = &((MFace*) mface)[i];
int nverts= mf->v4? 4: 3;
- CCFace *origf= CCS_getFace(origss, SET_INT_IN_POINTER(i));
+ CCGFace *origf= ccgSubSurf_getFace(origss, SET_INT_IN_POINTER(i));
unsigned int *fv = &mf->v1;
get_face_uv_map_vert(vmap, mf, i, fverts);
@@ -307,16 +282,16 @@ static int ss_sync_from_uv(CSubSurf *ss, CSubSurf *origss, DerivedMesh *dm, MTFa
MVert *mv1 = mvert + *(fv+((j+1)%nverts));
if (!BLI_edgehash_haskey(ehash, v0, v1)) {
- CCEdge *e, *orige= CCS_getFaceEdge(origss, origf, j);
- CCEdgeHDL ehdl= SET_INT_IN_POINTER(i*4 + j);
+ CCGEdge *e, *orige= ccgSubSurf_getFaceEdge(origss, origf, j);
+ CCGEdgeHDL ehdl= SET_INT_IN_POINTER(i*4 + j);
float crease;
if ((mv0->flag&mv1->flag) & ME_VERT_MERGED)
crease = creaseFactor;
else
- crease = CCS_getEdgeCrease(orige);
+ crease = ccgSubSurf_getEdgeCrease(orige);
- CCS_syncEdge(ss, ehdl, fverts[j], fverts[(j+1)%nverts], crease, &e);
+ ccgSubSurf_syncEdge(ss, ehdl, fverts[j], fverts[(j+1)%nverts], crease, &e);
BLI_edgehash_insert(ehash, v0, v1, NULL);
}
}
@@ -328,25 +303,25 @@ static int ss_sync_from_uv(CSubSurf *ss, CSubSurf *origss, DerivedMesh *dm, MTFa
for (i=0; i<totface; i++) {
MFace *mf = &((MFace*) mface)[i];
int nverts= mf->v4? 4: 3;
- CCFace *f;
+ CCGFace *f;
get_face_uv_map_vert(vmap, mf, i, fverts);
- CCS_syncFace(ss, SET_INT_IN_POINTER(i), nverts, fverts, &f);
+ ccgSubSurf_syncFace(ss, SET_INT_IN_POINTER(i), nverts, fverts, &f);
}
free_uv_vert_map(vmap);
- CCS_processSync(ss);
+ ccgSubSurf_processSync(ss);
#endif
return 1;
}
-static void set_subsurf_uv(CSubSurf *ss, DerivedMesh *dm, DerivedMesh *result, int n)
+static void set_subsurf_uv(CCGSubSurf *ss, DerivedMesh *dm, DerivedMesh *result, int n)
{
- CSubSurf *uvss;
- CCFace **faceMap;
+ CCGSubSurf *uvss;
+ CCGFace **faceMap;
MTFace *tf;
- CCFaceIterator *fi;
+ CCGFaceIterator *fi;
int index, gridSize, gridFaces, edgeSize, totface, x, y, S;
MTFace *dmtface = CustomData_get_layer_n(&dm->faceData, CD_MTFACE, n);
MTFace *tface = CustomData_get_layer_n(&result->faceData, CD_MTFACE, n);
@@ -354,39 +329,39 @@ static void set_subsurf_uv(CSubSurf *ss, DerivedMesh *dm, DerivedMesh *result, i
if(!dmtface || !tface)
return;
- /* create a CCGSubsurf from uv's */
- uvss = _getSubSurf(NULL, CCS_getSubdivisionLevels(ss), 0, 1, 0);
+ /* create a CCGSubSurf from uv's */
+ uvss = _getSubSurf(NULL, ccgSubSurf_getSubdivisionLevels(ss), 0, 1, 0);
if(!ss_sync_from_uv(uvss, ss, dm, dmtface)) {
- CCS_free(uvss);
+ ccgSubSurf_free(uvss);
return;
}
- /* get some info from CCGSubsurf */
- totface = CCS_getNumFaces(uvss);
- edgeSize = CCS_getEdgeSize(uvss);
- gridSize = CCS_getGridSize(uvss);
+ /* get some info from CCGSubSurf */
+ totface = ccgSubSurf_getNumFaces(uvss);
+ edgeSize = ccgSubSurf_getEdgeSize(uvss);
+ gridSize = ccgSubSurf_getGridSize(uvss);
gridFaces = gridSize - 1;
- /* make a map from original faces to CCFaces */
+ /* make a map from original faces to CCGFaces */
faceMap = MEM_mallocN(totface*sizeof(*faceMap), "facemapuv");
- fi = CCS_getFaceIterator(uvss);
- for(; !CCFIter_isStopped(fi); CCFIter_next(fi)) {
- CCFace *f = CCFIter_getCurrent(fi);
- faceMap[GET_INT_FROM_POINTER(CCS_getFaceFaceHandle(uvss, f))] = f;
+ fi = ccgSubSurf_getFaceIterator(uvss);
+ for(; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
+ CCGFace *f = ccgFaceIterator_getCurrent(fi);
+ faceMap[GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(uvss, f))] = f;
}
- CCFIter_free(fi);
+ ccgFaceIterator_free(fi);
/* load coordinates from uvss into tface */
tf= tface;
for(index = 0; index < totface; index++) {
- CCFace *f = faceMap[index];
- int numVerts = CCS_getFaceNumVerts(f);
+ CCGFace *f = faceMap[index];
+ int numVerts = ccgSubSurf_getFaceNumVerts(f);
for (S=0; S<numVerts; S++) {
- VertData *faceGridData= CCS_getFaceGridDataArray(uvss, f, S);
+ DMGridData *faceGridData= ccgSubSurf_getFaceGridDataArray(uvss, f, S);
for(y = 0; y < gridFaces; y++) {
for(x = 0; x < gridFaces; x++) {
@@ -406,42 +381,10 @@ static void set_subsurf_uv(CSubSurf *ss, DerivedMesh *dm, DerivedMesh *result, i
}
}
- CCS_free(uvss);
+ ccgSubSurf_free(uvss);
MEM_freeN(faceMap);
}
-#if 0
-static unsigned int ss_getEdgeFlags(CSubSurf *ss, CCEdge *e, int ssFromEditmesh, DispListMesh *dlm, MEdge *medge, MTFace *tface)
-{
- unsigned int flags = 0;
- int N = CCS_getEdgeNumFaces(e);
-
- if (!N) flags |= ME_LOOSEEDGE;
-
- if (ssFromEditmesh) {
- EditEdge *eed = CCS_getEdgeEdgeHandle(e);
-
- flags |= ME_EDGEDRAW|ME_EDGERENDER;
- if (eed->seam) {
- flags |= ME_SEAM;
- }
- } else {
- if (edgeIdx!=-1) {
- MEdge *origMed = &medge[edgeIdx];
-
- if (dlm) {
- flags |= origMed->flag&~ME_EDGE_STEPINDEX;
- } else {
- flags |= (origMed->flag&ME_SEAM)|ME_EDGEDRAW|ME_EDGERENDER;
- }
- }
- }
-
- return flags;
-}
-#endif
-
-
static void calc_ss_weights(int gridFaces,
FaceVertWeight **qweight, FaceVertWeight **tweight)
{
@@ -558,9 +501,9 @@ void free_ss_weights(WeightTable *wtable)
}
}
-static DerivedMesh *ss_to_cdderivedmesh(CSubSurf *ss, int ssFromEditmesh,
+static DerivedMesh *ss_to_cdderivedmesh(CCGSubSurf *ss, int ssFromEditmesh,
int drawInteriorEdges, int useSubsurfUv,
- DerivedMesh *dm, MultiresSubsurf *ms)
+ DerivedMesh *dm, struct MultiresSubsurf *ms)
{
DerivedMesh *cgdm, *result;
double curt = PIL_check_seconds_timer();
@@ -578,19 +521,19 @@ static DerivedMesh *ss_to_cdderivedmesh(CSubSurf *ss, int ssFromEditmesh,
return result;
#if 0
DerivedMesh *result;
- int edgeSize = CCS_getEdgeSize(ss);
- int gridSize = CCS_getGridSize(ss);
+ int edgeSize = ccgSubSurf_getEdgeSize(ss);
+ int gridSize = ccgSubSurf_getGridSize(ss);
int gridFaces = gridSize - 1;
int edgeBase, faceBase;
int i, j, k, S, x, y, index;
int *vertIdx = NULL;
BLI_array_declare(vertIdx);
- CCVertIterator *vi;
- CCEdgeIterator *ei;
- CCFaceIterator *fi;
- CCFace **faceMap2;
- CCEdge **edgeMap2;
- CCVert **vertMap2;
+ CCGVertIterator *vi;
+ CCGEdgeIterator *ei;
+ CCGFaceIterator *fi;
+ CCGFace **faceMap2;
+ CCGEdge **edgeMap2;
+ CCGVert **vertMap2;
int totvert, totedge, totface;
MVert *mvert;
MEdge *med;
@@ -603,49 +546,49 @@ static DerivedMesh *ss_to_cdderivedmesh(CSubSurf *ss, int ssFromEditmesh,
memset(&wtable, 0, sizeof(wtable));
/* vert map */
- totvert = CCS_getNumVerts(ss);
+ totvert = ccgSubSurf_getNumVerts(ss);
vertMap2 = MEM_mallocN(totvert*sizeof(*vertMap2), "vertmap");
- vi = CCS_getVertIterator(ss);
- for(; !CCVIter_isStopped(vi); CCVIter_next(vi)) {
- CCVert *v = CCVIter_getCurrent(vi);
+ vi = ccgSubSurf_getVertIterator(ss);
+ for(; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
+ CCGVert *v = ccgVertIterator_getCurrent(vi);
- vertMap2[GET_INT_FROM_POINTER(CCS_getVertVertHandle(v))] = v;
+ vertMap2[GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v))] = v;
}
- CCVIter_free(vi);
+ ccgVertIterator_free(vi);
- totedge = CCS_getNumEdges(ss);
+ totedge = ccgSubSurf_getNumEdges(ss);
edgeMap2 = MEM_mallocN(totedge*sizeof(*edgeMap2), "edgemap");
- ei = CCS_getEdgeIterator(ss);
- for(; !CCEIter_isStopped(ei); CCEIter_next(ei)) {
- CCEdge *e = CCEIter_getCurrent(ei);
+ ei = ccgSubSurf_getEdgeIterator(ss);
+ for(; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
+ CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
- edgeMap2[GET_INT_FROM_POINTER(CCS_getEdgeEdgeHandle(e))] = e;
+ edgeMap2[GET_INT_FROM_POINTER(ccgSubSurf_getEdgeEdgeHandle(e))] = e;
}
- totface = CCS_getNumFaces(ss);
+ totface = ccgSubSurf_getNumFaces(ss);
faceMap2 = MEM_mallocN(totface*sizeof(*faceMap2), "facemap");
- fi = CCS_getFaceIterator(ss);
- for(; !CCFIter_isStopped(fi); CCFIter_next(fi)) {
- CCFace *f = CCFIter_getCurrent(fi);
+ fi = ccgSubSurf_getFaceIterator(ss);
+ for(; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
+ CCGFace *f = ccgFaceIterator_getCurrent(fi);
- faceMap2[GET_INT_FROM_POINTER(CCS_getFaceFaceHandle(ss, f))] = f;
+ faceMap2[GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(ss, f))] = f;
}
- CCFIter_free(fi);
+ ccgFaceIterator_free(fi);
if(ms) {
- result = MultiresDM_new(ms, dm, CCS_getNumFinalVerts(ss),
- CCS_getNumFinalEdges(ss),
- CCS_getNumFinalFaces(ss), 0, 0);
+ result = MultiresDM_new(ms, dm, ccgSubSurf_getNumFinalVerts(ss),
+ ccgSubSurf_getNumFinalEdges(ss),
+ ccgSubSurf_getNumFinalFaces(ss), 0, 0);
}
else {
if(dm) {
- result = CDDM_from_template(dm, CCS_getNumFinalVerts(ss),
- CCS_getNumFinalEdges(ss),
- CCS_getNumFinalFaces(ss), 0, 0);
+ result = CDDM_from_template(dm, ccgSubSurf_getNumFinalVerts(ss),
+ ccgSubSurf_getNumFinalEdges(ss),
+ ccgSubSurf_getNumFinalFaces(ss), 0, 0);
} else {
- result = CDDM_new(CCS_getNumFinalVerts(ss),
- CCS_getNumFinalEdges(ss),
- CCS_getNumFinalFaces(ss), 0, 0);
+ result = CDDM_new(ccgSubSurf_getNumFinalVerts(ss),
+ ccgSubSurf_getNumFinalEdges(ss),
+ ccgSubSurf_getNumFinalFaces(ss), 0, 0);
}
}
@@ -655,23 +598,23 @@ static DerivedMesh *ss_to_cdderivedmesh(CSubSurf *ss, int ssFromEditmesh,
origIndex = result->getVertData(result, 0, CD_ORIGINDEX);
for(index = 0; index < totface; index++) {
- CCFace *f = faceMap2[index];
- int x, y, S, numVerts = CCS_getFaceNumVerts(f);
+ CCGFace *f = faceMap2[index];
+ int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f);
FaceVertWeight *weight = 0;//get_ss_weights(&wtable, gridFaces-1, numVerts);
BLI_array_empty(vertIdx);
for(S = 0; S < numVerts; S++) {
- CCVert *v = CCS_getFaceVert(ss, f, S);
+ CCGVert *v = ccgSubSurf_getFaceVert(ss, f, S);
BLI_array_growone(vertIdx);
- vertIdx[S] = GET_INT_FROM_POINTER(CCS_getVertVertHandle(v));
+ vertIdx[S] = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v));
}
#if 0
DM_interp_vert_data(dm, result, vertIdx, weight[0][0], numVerts, i);
#endif
- copy_v3_v3(mvert->co, CCS_getFaceCenterData(f));
+ copy_v3_v3(mvert->co, ccgSubSurf_getFaceCenterData(f));
*origIndex = ORIGINDEX_NONE;
++mvert;
++origIndex;
@@ -697,7 +640,7 @@ static DerivedMesh *ss_to_cdderivedmesh(CSubSurf *ss, int ssFromEditmesh,
DM_interp_vert_data(dm, result, vertIdx, w, numVerts, i);
#endif
copy_v3_v3(mvert->co,
- CCS_getFaceGridEdgeData(ss, f, S, x));
+ ccgSubSurf_getFaceGridEdgeData(ss, f, S, x));
*origIndex = ORIGINDEX_NONE;
++mvert;
@@ -727,7 +670,7 @@ static DerivedMesh *ss_to_cdderivedmesh(CSubSurf *ss, int ssFromEditmesh,
#endif
copy_v3_v3(mvert->co,
- CCS_getFaceGridData(ss, f, S, x, y));
+ ccgSubSurf_getFaceGridData(ss, f, S, x, y));
*origIndex = ORIGINDEX_NONE;
++mvert;
++origIndex;
@@ -735,21 +678,21 @@ static DerivedMesh *ss_to_cdderivedmesh(CSubSurf *ss, int ssFromEditmesh,
}
}
}
- *((int*)CCS_getFaceUserData(ss, f)) = faceBase;
+ *((int*)ccgSubSurf_getFaceUserData(ss, f)) = faceBase;
faceBase += 1 + numVerts * ((gridSize-2) + (gridSize-2) * (gridSize-2));
}
edgeBase = i;
for(index = 0; index < totedge; index++) {
- CCEdge *e = edgeMap2[index];
+ CCGEdge *e = edgeMap2[index];
int x;
int vertIdx[2];
- CCVert *v;
- v = CCS_getEdgeVert0(e);
- vertIdx[0] = GET_INT_FROM_POINTER(CCS_getVertVertHandle(v));
- v = CCS_getEdgeVert1(e);
- vertIdx[1] = GET_INT_FROM_POINTER(CCS_getVertVertHandle(v));
+ CCGVert *v;
+ v = ccgSubSurf_getEdgeVert0(e);
+ vertIdx[0] = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v));
+ v = ccgSubSurf_getEdgeVert1(e);
+ vertIdx[1] = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v));
for(x = 1; x < edgeSize - 1; x++) {
float w2[2];
@@ -758,28 +701,28 @@ static DerivedMesh *ss_to_cdderivedmesh(CSubSurf *ss, int ssFromEditmesh,
w2[0] = 1 - w2[1];
DM_interp_vert_data(dm, result, vertIdx, w2, 2, i);
- copy_v3_v3(mvert->co, CCS_getEdgeData(ss, e, x));
+ copy_v3_v3(mvert->co, ccgSubSurf_getEdgeData(ss, e, x));
*origIndex = ORIGINDEX_NONE;
++mvert;
++origIndex;
i++;
}
- *((int*)CCS_getEdgeUserData(ss, e)) = edgeBase;
+ *((int*)ccgSubSurf_getEdgeUserData(ss, e)) = edgeBase;
edgeBase += edgeSize-2;
}
for(index = 0; index < totvert; index++) {
- CCVert *v = vertMap2[index];
+ CCGVert *v = vertMap2[index];
int vertIdx;
- vertIdx = GET_INT_FROM_POINTER(CCS_getVertVertHandle(v));
+ vertIdx = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v));
DM_copy_vert_data(dm, result, vertIdx, i, 1);
- copy_v3_v3(mvert->co, CCS_getVertData(ss, v));
+ copy_v3_v3(mvert->co, ccgSubSurf_getVertData(ss, v));
- *((int*)CCS_getVertUserData(ss, v)) = i;
- *origIndex = cgdm_getVertMapIndex(ss, v);
+ *((int*)ccgSubSurf_getVertUserData(ss, v)) = i;
+ *origIndex = ccgDM_getVertMapIndex(ss, v);
++mvert;
++origIndex;
i++;
@@ -791,8 +734,8 @@ static DerivedMesh *ss_to_cdderivedmesh(CSubSurf *ss, int ssFromEditmesh,
origIndex = result->getEdgeData(result, 0, CD_ORIGINDEX);
for(index = 0; index < totface; index++) {
- CCFace *f = faceMap2[index];
- int numVerts = CCS_getFaceNumVerts(f);
+ CCGFace *f = faceMap2[index];
+ int numVerts = ccgSubSurf_getFaceNumVerts(f);
for(k = 0; k < numVerts; k++) {
for(x = 0; x < gridFaces; x++) {
@@ -832,12 +775,12 @@ static DerivedMesh *ss_to_cdderivedmesh(CSubSurf *ss, int ssFromEditmesh,
}
for(index = 0; index < totedge; index++) {
- CCEdge *e = edgeMap2[index];
+ CCGEdge *e = edgeMap2[index];
unsigned int flags = 0;
char bweight = 0;
- int edgeIdx = GET_INT_FROM_POINTER(CCS_getEdgeEdgeHandle(e));
+ int edgeIdx = GET_INT_FROM_POINTER(ccgSubSurf_getEdgeEdgeHandle(e));
- if(!CCS_getEdgeNumFaces(e)) flags |= ME_LOOSEEDGE;
+ if(!ccgSubSurf_getEdgeNumFaces(e)) flags |= ME_LOOSEEDGE;
if(edgeIdx != -1 && dm) {
@@ -853,7 +796,7 @@ static DerivedMesh *ss_to_cdderivedmesh(CSubSurf *ss, int ssFromEditmesh,
med->v2 = getEdgeIndex(ss, e, x + 1, edgeSize);
med->flag = flags;
med->bweight = bweight;
- *origIndex = cgdm_getEdgeMapIndex(ss, e);
+ *origIndex = ccgDM_getEdgeMapIndex(ss, e);
++med;
++origIndex;
i++;
@@ -866,12 +809,12 @@ static DerivedMesh *ss_to_cdderivedmesh(CSubSurf *ss, int ssFromEditmesh,
origIndex = result->getTessFaceData(result, 0, CD_ORIGINDEX);
for(index = 0; index < totface; index++) {
- CCFace *f = faceMap2[index];
- int numVerts = CCS_getFaceNumVerts(f);
+ CCGFace *f = faceMap2[index];
+ int numVerts = ccgSubSurf_getFaceNumVerts(f);
int mat_nr;
int flag;
- int mapIndex = cgdm_getFaceMapIndex(ss, f);
- int faceIdx = GET_INT_FROM_POINTER(CCS_getFaceFaceHandle(ss, f));
+ int mapIndex = ccgDM_getFaceMapIndex(ss, f);
+ int faceIdx = GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(ss, f));
if(!ssFromEditmesh) {
MFace origMFace;
@@ -880,7 +823,7 @@ static DerivedMesh *ss_to_cdderivedmesh(CSubSurf *ss, int ssFromEditmesh,
mat_nr = origMFace.mat_nr;
flag = origMFace.flag;
} else {
- BMFace *ef = CCS_getFaceFaceHandle(ss, f);
+ BMFace *ef = ccgSubSurf_getFaceFaceHandle(ss, f);
mat_nr = ef->mat_nr;
flag = BMFlags_To_MEFlags(ef);
}
@@ -955,11 +898,11 @@ static DerivedMesh *ss_to_cdderivedmesh(CSubSurf *ss, int ssFromEditmesh,
#endif
}
-static void ss_sync_from_derivedmesh(CSubSurf *ss, DerivedMesh *dm,
+static void ss_sync_from_derivedmesh(CCGSubSurf *ss, DerivedMesh *dm,
float (*vertexCos)[3], int useFlatSubdiv)
{
- float creaseFactor = (float) CCS_getSubdivisionLevels(ss);
- CCVertHDL *fVerts = NULL;
+ float creaseFactor = (float) ccgSubSurf_getSubdivisionLevels(ss);
+ CCGVertHDL *fVerts = NULL;
BLI_array_declare(fVerts);
int totvert = dm->getNumVerts(dm);
int totedge = dm->getNumEdges(dm);
@@ -976,40 +919,40 @@ static void ss_sync_from_derivedmesh(CSubSurf *ss, DerivedMesh *dm,
DMFaceIter *fiter;
DMLoopIter *liter;
- CCS_initFullSync(ss);
+ ccgSubSurf_initFullSync(ss);
mv = mvert;
index = (int *)dm->getVertDataArray(dm, CD_ORIGINDEX);
- for(i = 0; i < totvert; i++, mv++, index++) {
- CCVert *v;
+ for(i = 0; i < totvert; i++, mv++) {
+ CCGVert *v;
if(vertexCos) {
- CCS_syncVert(ss, SET_INT_IN_POINTER(i), vertexCos[i], 0, &v);
+ ccgSubSurf_syncVert(ss, SET_INT_IN_POINTER(i), vertexCos[i], 0, &v);
} else {
- CCS_syncVert(ss, SET_INT_IN_POINTER(i), mv->co, 0, &v);
+ ccgSubSurf_syncVert(ss, SET_INT_IN_POINTER(i), mv->co, 0, &v);
}
- ((int*)CCS_getVertUserData(ss, v))[1] = *index;
+ ((int*)ccgSubSurf_getVertUserData(ss, v))[1] = (index)? *index++: i;
}
me = medge;
index = (int *)dm->getEdgeDataArray(dm, CD_ORIGINDEX);
- for(i = 0; i < totedge; i++, me++, index++) {
- CCEdge *e;
+ for(i = 0; i < totedge; i++, me++) {
+ CCGEdge *e;
float crease;
crease = useFlatSubdiv ? creaseFactor :
me->crease * creaseFactor / 255.0f;
- CCS_syncEdge(ss, SET_INT_IN_POINTER(i), SET_INT_IN_POINTER(me->v1),
+ ccgSubSurf_syncEdge(ss, SET_INT_IN_POINTER(i), SET_INT_IN_POINTER(me->v1),
SET_INT_IN_POINTER(me->v2), crease, &e);
- ((int*)CCS_getEdgeUserData(ss, e))[1] = *index;
+ ((int*)ccgSubSurf_getEdgeUserData(ss, e))[1] = (index)? *index++: i;
}
fiter = dm->newFaceIter(dm);
for (i=0; !fiter->done; fiter->step(fiter), i++) {
- CCFace *f;
+ CCGFace *f;
BLI_array_empty(fVerts);
index = (int*) fiter->getCDData(fiter, CD_ORIGINDEX, -1);
@@ -1024,7 +967,7 @@ static void ss_sync_from_derivedmesh(CSubSurf *ss, DerivedMesh *dm,
* it is not really possible to continue without modifying
* other parts of code significantly to handle missing faces.
* since this really shouldn't even be possible we just bail.*/
- if(CCS_syncFace(ss, SET_INT_IN_POINTER(i), fiter->len,
+ if(ccgSubSurf_syncFace(ss, SET_INT_IN_POINTER(i), fiter->len,
fVerts, &f) == eCCGError_InvalidValue) {
static int hasGivenError = 0;
@@ -1038,62 +981,62 @@ static void ss_sync_from_derivedmesh(CSubSurf *ss, DerivedMesh *dm,
return;
}
- ((int*)CCS_getFaceUserData(ss, f))[1] = *index;
+ ((int*)ccgSubSurf_getFaceUserData(ss, f))[1] = (index)? *index++: i;
}
fiter->free(fiter);
- CCS_processSync(ss);
+ ccgSubSurf_processSync(ss);
BLI_array_free(fVerts);
}
/***/
-static int cgdm_getVertMapIndex(CSubSurf *ss, CCVert *v) {
- return ((int*) CCS_getVertUserData(ss, v))[1];
+int ccgDM_getVertMapIndex(CCGSubSurf *ss, CCGVert *v) {
+ return ((int*) ccgSubSurf_getVertUserData(ss, v))[1];
}
-static int cgdm_getEdgeMapIndex(CSubSurf *ss, CCEdge *e) {
- return ((int*) CCS_getEdgeUserData(ss, e))[1];
+int ccgDM_getEdgeMapIndex(CCGSubSurf *ss, CCGEdge *e) {
+ return ((int*) ccgSubSurf_getEdgeUserData(ss, e))[1];
}
-static int cgdm_getFaceMapIndex(CSubSurf *ss, CCFace *f) {
- return ((int*) CCS_getFaceUserData(ss, f))[1];
+int ccgDM_getFaceMapIndex(CCGSubSurf *ss, CCGFace *f) {
+ return ((int*) ccgSubSurf_getFaceUserData(ss, f))[1];
}
static void cgdm_getMinMax(DerivedMesh *dm, float min_r[3], float max_r[3]) {
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
- CCVertIterator *vi = CCS_getVertIterator(ss);
- CCEdgeIterator *ei = CCS_getEdgeIterator(ss);
- CCFaceIterator *fi = CCS_getFaceIterator(ss);
- int i, edgeSize = CCS_getEdgeSize(ss);
- int gridSize = CCS_getGridSize(ss);
-
- if (!CCS_getNumVerts(ss))
+ CCGSubSurf *ss = cgdm->ss;
+ CCGVertIterator *vi = ccgSubSurf_getVertIterator(ss);
+ CCGEdgeIterator *ei = ccgSubSurf_getEdgeIterator(ss);
+ CCGFaceIterator *fi = ccgSubSurf_getFaceIterator(ss);
+ int i, edgeSize = ccgSubSurf_getEdgeSize(ss);
+ int gridSize = ccgSubSurf_getGridSize(ss);
+
+ if (!ccgSubSurf_getNumVerts(ss))
min_r[0] = min_r[1] = min_r[2] = max_r[0] = max_r[1] = max_r[2] = 0.0;
- for (; !CCVIter_isStopped(vi); CCVIter_next(vi)) {
- CCVert *v = CCVIter_getCurrent(vi);
- float *co = CCS_getVertData(ss, v);
+ for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
+ CCGVert *v = ccgVertIterator_getCurrent(vi);
+ float *co = ccgSubSurf_getVertData(ss, v);
DO_MINMAX(co, min_r, max_r);
}
- for (; !CCEIter_isStopped(ei); CCEIter_next(ei)) {
- CCEdge *e = CCEIter_getCurrent(ei);
- VertData *edgeData = CCS_getEdgeDataArray(ss, e);
+ for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
+ CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
+ DMGridData *edgeData = ccgSubSurf_getEdgeDataArray(ss, e);
for (i=0; i<edgeSize; i++)
DO_MINMAX(edgeData[i].co, min_r, max_r);
}
- for (; !CCFIter_isStopped(fi); CCFIter_next(fi)) {
- CCFace *f = CCFIter_getCurrent(fi);
- int S, x, y, numVerts = CCS_getFaceNumVerts(f);
+ for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
+ CCGFace *f = ccgFaceIterator_getCurrent(fi);
+ int S, x, y, numVerts = ccgSubSurf_getFaceNumVerts(f);
for (S=0; S<numVerts; S++) {
- VertData *faceGridData = CCS_getFaceGridDataArray(ss, f, S);
+ DMGridData *faceGridData = ccgSubSurf_getFaceGridDataArray(ss, f, S);
for (y=0; y<gridSize; y++)
for (x=0; x<gridSize; x++)
@@ -1101,41 +1044,41 @@ static void cgdm_getMinMax(DerivedMesh *dm, float min_r[3], float max_r[3]) {
}
}
- CCFIter_free(fi);
- CCEIter_free(ei);
- CCVIter_free(vi);
+ ccgFaceIterator_free(fi);
+ ccgEdgeIterator_free(ei);
+ ccgVertIterator_free(vi);
}
static int cgdm_getNumVerts(DerivedMesh *dm) {
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- return CCS_getNumFinalVerts(cgdm->ss);
+ return ccgSubSurf_getNumFinalVerts(cgdm->ss);
}
static int cgdm_getNumEdges(DerivedMesh *dm) {
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- return CCS_getNumFinalEdges(cgdm->ss);
+ return ccgSubSurf_getNumFinalEdges(cgdm->ss);
}
static int cgdm_getNumTessFaces(DerivedMesh *dm) {
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- return CCS_getNumFinalFaces(cgdm->ss);
+ return ccgSubSurf_getNumFinalFaces(cgdm->ss);
}
static void cgdm_getFinalVert(DerivedMesh *dm, int vertNum, MVert *mv)
{
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
+ CCGSubSurf *ss = cgdm->ss;
int i;
memset(mv, 0, sizeof(*mv));
- if((vertNum < cgdm->edgeMap[0].startVert) && (CCS_getNumFaces(ss) > 0)) {
+ if((vertNum < cgdm->edgeMap[0].startVert) && (ccgSubSurf_getNumFaces(ss) > 0)) {
/* this vert comes from face data */
- int lastface = CCS_getNumFaces(ss) - 1;
- CCFace *f;
+ int lastface = ccgSubSurf_getNumFaces(ss) - 1;
+ CCGFace *f;
int x, y, grid, numVerts;
int offset;
- int gridSize = CCS_getGridSize(ss);
+ int gridSize = ccgSubSurf_getGridSize(ss);
int gridSideVerts;
int gridInternalVerts;
int gridSideEnd;
@@ -1146,7 +1089,7 @@ static void cgdm_getFinalVert(DerivedMesh *dm, int vertNum, MVert *mv)
++i;
f = cgdm->faceMap[i].face;
- numVerts = CCS_getFaceNumVerts(f);
+ numVerts = ccgSubSurf_getFaceNumVerts(f);
gridSideVerts = gridSize - 2;
gridInternalVerts = gridSideVerts * gridSideVerts;
@@ -1156,24 +1099,24 @@ static void cgdm_getFinalVert(DerivedMesh *dm, int vertNum, MVert *mv)
offset = vertNum - cgdm->faceMap[i].startVert;
if(offset < 1) {
- copy_v3_v3(mv->co, CCS_getFaceCenterData(f));
+ copy_v3_v3(mv->co, ccgSubSurf_getFaceCenterData(f));
} else if(offset < gridSideEnd) {
offset -= 1;
grid = offset / gridSideVerts;
x = offset % gridSideVerts + 1;
- copy_v3_v3(mv->co, CCS_getFaceGridEdgeData(ss, f, grid, x));
+ copy_v3_v3(mv->co, ccgSubSurf_getFaceGridEdgeData(ss, f, grid, x));
} else if(offset < gridInternalEnd) {
offset -= gridSideEnd;
grid = offset / gridInternalVerts;
offset %= gridInternalVerts;
y = offset / gridSideVerts + 1;
x = offset % gridSideVerts + 1;
- copy_v3_v3(mv->co, CCS_getFaceGridData(ss, f, grid, x, y));
+ copy_v3_v3(mv->co, ccgSubSurf_getFaceGridData(ss, f, grid, x, y));
}
- } else if((vertNum < cgdm->vertMap[0].startVert) && (CCS_getNumEdges(ss) > 0)) {
+ } else if((vertNum < cgdm->vertMap[0].startVert) && (ccgSubSurf_getNumEdges(ss) > 0)) {
/* this vert comes from edge data */
- CCEdge *e;
- int lastedge = CCS_getNumEdges(ss) - 1;
+ CCGEdge *e;
+ int lastedge = ccgSubSurf_getNumEdges(ss) - 1;
int x;
i = 0;
@@ -1183,33 +1126,33 @@ static void cgdm_getFinalVert(DerivedMesh *dm, int vertNum, MVert *mv)
e = cgdm->edgeMap[i].edge;
x = vertNum - cgdm->edgeMap[i].startVert + 1;
- copy_v3_v3(mv->co, CCS_getEdgeData(ss, e, x));
+ copy_v3_v3(mv->co, ccgSubSurf_getEdgeData(ss, e, x));
} else {
/* this vert comes from vert data */
- CCVert *v;
+ CCGVert *v;
i = vertNum - cgdm->vertMap[0].startVert;
v = cgdm->vertMap[i].vert;
- copy_v3_v3(mv->co, CCS_getVertData(ss, v));
+ copy_v3_v3(mv->co, ccgSubSurf_getVertData(ss, v));
}
}
static void cgdm_getFinalEdge(DerivedMesh *dm, int edgeNum, MEdge *med)
{
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
+ CCGSubSurf *ss = cgdm->ss;
int i;
memset(med, 0, sizeof(*med));
if(edgeNum < cgdm->edgeMap[0].startEdge) {
/* this edge comes from face data */
- int lastface = CCS_getNumFaces(ss) - 1;
- CCFace *f;
+ int lastface = ccgSubSurf_getNumFaces(ss) - 1;
+ CCGFace *f;
int x, y, grid, numVerts;
int offset;
- int gridSize = CCS_getGridSize(ss);
- int edgeSize = CCS_getEdgeSize(ss);
+ int gridSize = ccgSubSurf_getGridSize(ss);
+ int edgeSize = ccgSubSurf_getEdgeSize(ss);
int gridSideEdges;
int gridInternalEdges;
@@ -1218,7 +1161,7 @@ static void cgdm_getFinalEdge(DerivedMesh *dm, int edgeNum, MEdge *med)
++i;
f = cgdm->faceMap[i].face;
- numVerts = CCS_getFaceNumVerts(f);
+ numVerts = ccgSubSurf_getFaceNumVerts(f);
gridSideEdges = gridSize - 1;
gridInternalEdges = (gridSideEdges - 1) * gridSideEdges * 2;
@@ -1245,23 +1188,24 @@ static void cgdm_getFinalEdge(DerivedMesh *dm, int edgeNum, MEdge *med)
}
} else {
/* this vert comes from edge data */
- CCEdge *e;
- int edgeSize = CCS_getEdgeSize(ss);
- int x, *edgeFlag;
+ CCGEdge *e;
+ int edgeSize = ccgSubSurf_getEdgeSize(ss);
+ int x;
+ short *edgeFlag;
unsigned int flags = 0;
i = (edgeNum - cgdm->edgeMap[0].startEdge) / (edgeSize - 1);
e = cgdm->edgeMap[i].edge;
- if(!CCS_getEdgeNumFaces(e)) flags |= ME_LOOSEEDGE;
+ if(!ccgSubSurf_getEdgeNumFaces(e)) flags |= ME_LOOSEEDGE;
x = edgeNum - cgdm->edgeMap[i].startEdge;
med->v1 = getEdgeIndex(ss, e, x, edgeSize);
med->v2 = getEdgeIndex(ss, e, x+1, edgeSize);
- edgeFlag = dm->getEdgeData(dm, edgeNum, CD_FLAGS);
+ edgeFlag = (cgdm->edgeFlags)? &cgdm->edgeFlags[i]: NULL;
if(edgeFlag)
flags |= (*edgeFlag & (ME_SEAM | ME_SHARP))
| ME_EDGEDRAW | ME_EDGERENDER;
@@ -1275,19 +1219,19 @@ static void cgdm_getFinalEdge(DerivedMesh *dm, int edgeNum, MEdge *med)
static void cgdm_getFinalFace(DerivedMesh *dm, int faceNum, MFace *mf)
{
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
- int gridSize = CCS_getGridSize(ss);
- int edgeSize = CCS_getEdgeSize(ss);
+ CCGSubSurf *ss = cgdm->ss;
+ int gridSize = ccgSubSurf_getGridSize(ss);
+ int edgeSize = ccgSubSurf_getEdgeSize(ss);
int gridSideEdges = gridSize - 1;
int gridFaces = gridSideEdges * gridSideEdges;
int i;
- CCFace *f;
+ CCGFace *f;
int numVerts;
int offset;
int grid;
int x, y;
- int lastface = CCS_getNumFaces(ss) - 1;
- char *faceFlags = dm->getTessFaceDataArray(dm, CD_FLAGS);
+ int lastface = ccgSubSurf_getNumFaces(ss) - 1;
+ char *faceFlags = cgdm->faceFlags;
memset(mf, 0, sizeof(*mf));
if (faceNum >= cgdm->dm.numFaceData)
@@ -1296,7 +1240,7 @@ static void cgdm_getFinalFace(DerivedMesh *dm, int faceNum, MFace *mf)
i = cgdm->reverseFaceMap[faceNum];
f = cgdm->faceMap[i].face;
- numVerts = CCS_getFaceNumVerts(f);
+ numVerts = ccgSubSurf_getFaceNumVerts(f);
offset = faceNum - cgdm->faceMap[i].startFace;
grid = offset / gridFaces;
@@ -1310,8 +1254,8 @@ static void cgdm_getFinalFace(DerivedMesh *dm, int faceNum, MFace *mf)
mf->v4 = getFaceIndex(ss, f, grid, x+1, y+0, edgeSize, gridSize);
if(faceFlags) {
- mf->flag = faceFlags[i*4];
- mf->mat_nr = faceFlags[i*4+1];
+ mf->flag = faceFlags[i*2];
+ mf->mat_nr = faceFlags[i*2+1];
} else
mf->flag = ME_SMOOTH;
}
@@ -1319,53 +1263,63 @@ static void cgdm_getFinalFace(DerivedMesh *dm, int faceNum, MFace *mf)
static void cgdm_copyFinalVertArray(DerivedMesh *dm, MVert *mvert)
{
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
+ CCGSubSurf *ss = cgdm->ss;
+ DMGridData *vd;
int index;
int totvert, totedge, totface;
- int gridSize = CCS_getGridSize(ss);
- int edgeSize = CCS_getEdgeSize(ss);
+ int gridSize = ccgSubSurf_getGridSize(ss);
+ int edgeSize = ccgSubSurf_getEdgeSize(ss);
int i = 0;
- totface = CCS_getNumFaces(ss);
+ totface = ccgSubSurf_getNumFaces(ss);
for(index = 0; index < totface; index++) {
- CCFace *f = cgdm->faceMap[index].face;
- int x, y, S, numVerts = CCS_getFaceNumVerts(f);
+ CCGFace *f = cgdm->faceMap[index].face;
+ int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f);
- copy_v3_v3(mvert[i++].co, CCS_getFaceCenterData(f));
+ vd= ccgSubSurf_getFaceCenterData(f);
+ copy_v3_v3(mvert[i].co, vd->co);
+ normal_float_to_short_v3(mvert[i].no, vd->no);
+ i++;
for(S = 0; S < numVerts; S++) {
- for(x = 1; x < gridSize - 1; x++) {
- copy_v3_v3(mvert[i++].co,
- CCS_getFaceGridEdgeData(ss, f, S, x));
+ for(x = 1; x < gridSize - 1; x++, i++) {
+ vd= ccgSubSurf_getFaceGridEdgeData(ss, f, S, x);
+ copy_v3_v3(mvert[i].co, vd->co);
+ normal_float_to_short_v3(mvert[i].no, vd->no);
}
}
for(S = 0; S < numVerts; S++) {
for(y = 1; y < gridSize - 1; y++) {
- for(x = 1; x < gridSize - 1; x++) {
- copy_v3_v3(mvert[i++].co,
- CCS_getFaceGridData(ss, f, S, x, y));
+ for(x = 1; x < gridSize - 1; x++, i++) {
+ vd= ccgSubSurf_getFaceGridData(ss, f, S, x, y);
+ copy_v3_v3(mvert[i].co, vd->co);
+ normal_float_to_short_v3(mvert[i].no, vd->no);
}
}
}
}
- totedge = CCS_getNumEdges(ss);
+ totedge = ccgSubSurf_getNumEdges(ss);
for(index = 0; index < totedge; index++) {
- CCEdge *e = cgdm->edgeMap[index].edge;
+ CCGEdge *e = cgdm->edgeMap[index].edge;
int x;
- for(x = 1; x < edgeSize - 1; x++) {
- copy_v3_v3(mvert[i++].co, CCS_getEdgeData(ss, e, x));
+ for(x = 1; x < edgeSize - 1; x++, i++) {
+ vd= ccgSubSurf_getEdgeData(ss, e, x);
+ copy_v3_v3(mvert[i].co, vd->co);
+ /* TODO CCGSubsurf does not set these */
+ normal_float_to_short_v3(mvert[i].no, vd->no);
}
}
- totvert = CCS_getNumVerts(ss);
+ totvert = ccgSubSurf_getNumVerts(ss);
for(index = 0; index < totvert; index++) {
- CCVert *v = cgdm->vertMap[index].vert;
-
- copy_v3_v3(mvert[i].co, CCS_getVertData(ss, v));
+ CCGVert *v = cgdm->vertMap[index].vert;
+ vd= ccgSubSurf_getVertData(ss, v);
+ copy_v3_v3(mvert[i].co, vd->co);
+ normal_float_to_short_v3(mvert[i].no, vd->no);
i++;
}
}
@@ -1373,18 +1327,18 @@ static void cgdm_copyFinalVertArray(DerivedMesh *dm, MVert *mvert)
static void cgdm_copyFinalEdgeArray(DerivedMesh *dm, MEdge *medge)
{
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
+ CCGSubSurf *ss = cgdm->ss;
int index;
int totedge, totface;
- int gridSize = CCS_getGridSize(ss);
- int edgeSize = CCS_getEdgeSize(ss);
+ int gridSize = ccgSubSurf_getGridSize(ss);
+ int edgeSize = ccgSubSurf_getEdgeSize(ss);
int i = 0;
- int *edgeFlags = dm->getEdgeDataArray(dm, CD_FLAGS);
+ short *edgeFlags = cgdm->edgeFlags;
- totface = CCS_getNumFaces(ss);
+ totface = ccgSubSurf_getNumFaces(ss);
for(index = 0; index < totface; index++) {
- CCFace *f = cgdm->faceMap[index].face;
- int x, y, S, numVerts = CCS_getFaceNumVerts(f);
+ CCGFace *f = cgdm->faceMap[index].face;
+ int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f);
for(S = 0; S < numVerts; S++) {
for(x = 0; x < gridSize - 1; x++) {
@@ -1423,18 +1377,18 @@ static void cgdm_copyFinalEdgeArray(DerivedMesh *dm, MEdge *medge)
}
}
- totedge = CCS_getNumEdges(ss);
+ totedge = ccgSubSurf_getNumEdges(ss);
for(index = 0; index < totedge; index++) {
- CCEdge *e = cgdm->edgeMap[index].edge;
+ CCGEdge *e = cgdm->edgeMap[index].edge;
unsigned int flags = 0;
int x;
- int edgeIdx = GET_INT_FROM_POINTER(CCS_getEdgeEdgeHandle(e));
+ int edgeIdx = GET_INT_FROM_POINTER(ccgSubSurf_getEdgeEdgeHandle(e));
- if(!CCS_getEdgeNumFaces(e)) flags |= ME_LOOSEEDGE;
+ if(!ccgSubSurf_getEdgeNumFaces(e)) flags |= ME_LOOSEEDGE;
if(edgeFlags) {
if(edgeIdx != -1) {
- flags |= (edgeFlags[i] & (ME_SEAM | ME_SHARP))
+ flags |= (edgeFlags[index] & (ME_SEAM | ME_SHARP))
| ME_EDGEDRAW | ME_EDGERENDER;
}
} else {
@@ -1481,7 +1435,7 @@ void cgdm_faceIterStep(void *self)
fiter->head.index++;
- if (fiter->head.index >= CCS_getNumFinalFaces(fiter->cgdm->ss)) {
+ if (fiter->head.index >= ccgSubSurf_getNumFinalFaces(fiter->cgdm->ss)) {
fiter->head.done = 1;
return;
};
@@ -1611,20 +1565,20 @@ DMFaceIter *cgdm_newFaceIter(DerivedMesh *dm)
static void cgdm_copyFinalFaceArray(DerivedMesh *dm, MFace *mface)
{
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
+ CCGSubSurf *ss = cgdm->ss;
int index;
int totface;
- int gridSize = CCS_getGridSize(ss);
- int edgeSize = CCS_getEdgeSize(ss);
+ int gridSize = ccgSubSurf_getGridSize(ss);
+ int edgeSize = ccgSubSurf_getEdgeSize(ss);
int i = 0;
- char *faceFlags = dm->getTessFaceDataArray(dm, CD_FLAGS);
+ char *faceFlags = cgdm->faceFlags;
- totface = CCS_getNumFaces(ss);
+ totface = ccgSubSurf_getNumFaces(ss);
for(index = 0; index < totface; index++) {
- CCFace *f = cgdm->faceMap[index].face;
- int x, y, S, numVerts = CCS_getFaceNumVerts(f);
- int mat_nr = 0;
- int flag = ME_SMOOTH; /* assume face is smooth by default */
+ CCGFace *f = cgdm->faceMap[index].face;
+ int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f);
+ int flag = (faceFlags)? faceFlags[index*2]: ME_SMOOTH;
+ int mat_nr = (faceFlags)? faceFlags[index*2+1]: 0;
for(S = 0; S < numVerts; S++) {
for(y = 0; y < gridSize - 1; y++) {
@@ -1639,11 +1593,13 @@ static void cgdm_copyFinalFaceArray(DerivedMesh *dm, MFace *mface)
mf->v4 = getFaceIndex(ss, f, S, x + 1, y + 0,
edgeSize, gridSize);
if (faceFlags) {
- mat_nr = faceFlags[index*4+1];
- mf->flag = faceFlags[index*4];
+ mat_nr = faceFlags[index*2+1];
+ mf->flag = faceFlags[index*2];
} else mf->flag = flag;
mf->mat_nr = mat_nr;
+ mf->flag = flag;
+
i++;
}
}
@@ -1653,81 +1609,81 @@ static void cgdm_copyFinalFaceArray(DerivedMesh *dm, MFace *mface)
static void cgdm_getVertCos(DerivedMesh *dm, float (*cos)[3]) {
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
- int edgeSize = CCS_getEdgeSize(ss);
- int gridSize = CCS_getGridSize(ss);
+ CCGSubSurf *ss = cgdm->ss;
+ int edgeSize = ccgSubSurf_getEdgeSize(ss);
+ int gridSize = ccgSubSurf_getGridSize(ss);
int i;
- CCVertIterator *vi;
- CCEdgeIterator *ei;
- CCFaceIterator *fi;
- CCFace **faceMap2;
- CCEdge **edgeMap2;
- CCVert **vertMap2;
+ CCGVertIterator *vi;
+ CCGEdgeIterator *ei;
+ CCGFaceIterator *fi;
+ CCGFace **faceMap2;
+ CCGEdge **edgeMap2;
+ CCGVert **vertMap2;
int index, totvert, totedge, totface;
- totvert = CCS_getNumVerts(ss);
+ totvert = ccgSubSurf_getNumVerts(ss);
vertMap2 = MEM_mallocN(totvert*sizeof(*vertMap2), "vertmap");
- vi = CCS_getVertIterator(ss);
- for (; !CCVIter_isStopped(vi); CCVIter_next(vi)) {
- CCVert *v = CCVIter_getCurrent(vi);
+ vi = ccgSubSurf_getVertIterator(ss);
+ for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
+ CCGVert *v = ccgVertIterator_getCurrent(vi);
- vertMap2[GET_INT_FROM_POINTER(CCS_getVertVertHandle(v))] = v;
+ vertMap2[GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v))] = v;
}
- CCVIter_free(vi);
+ ccgVertIterator_free(vi);
- totedge = CCS_getNumEdges(ss);
+ totedge = ccgSubSurf_getNumEdges(ss);
edgeMap2 = MEM_mallocN(totedge*sizeof(*edgeMap2), "edgemap");
- ei = CCS_getEdgeIterator(ss);
- for (i=0; !CCEIter_isStopped(ei); i++,CCEIter_next(ei)) {
- CCEdge *e = CCEIter_getCurrent(ei);
+ ei = ccgSubSurf_getEdgeIterator(ss);
+ for (i=0; !ccgEdgeIterator_isStopped(ei); i++,ccgEdgeIterator_next(ei)) {
+ CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
- edgeMap2[GET_INT_FROM_POINTER(CCS_getEdgeEdgeHandle(e))] = e;
+ edgeMap2[GET_INT_FROM_POINTER(ccgSubSurf_getEdgeEdgeHandle(e))] = e;
}
- totface = CCS_getNumFaces(ss);
+ totface = ccgSubSurf_getNumFaces(ss);
faceMap2 = MEM_mallocN(totface*sizeof(*faceMap2), "facemap");
- fi = CCS_getFaceIterator(ss);
- for (; !CCFIter_isStopped(fi); CCFIter_next(fi)) {
- CCFace *f = CCFIter_getCurrent(fi);
+ fi = ccgSubSurf_getFaceIterator(ss);
+ for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
+ CCGFace *f = ccgFaceIterator_getCurrent(fi);
- faceMap2[GET_INT_FROM_POINTER(CCS_getFaceFaceHandle(ss, f))] = f;
+ faceMap2[GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(ss, f))] = f;
}
- CCFIter_free(fi);
+ ccgFaceIterator_free(fi);
i = 0;
for (index=0; index<totface; index++) {
- CCFace *f = faceMap2[index];
- int x, y, S, numVerts = CCS_getFaceNumVerts(f);
+ CCGFace *f = faceMap2[index];
+ int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f);
- copy_v3_v3(cos[i++], CCS_getFaceCenterData(f));
+ copy_v3_v3(cos[i++], ccgSubSurf_getFaceCenterData(f));
for (S=0; S<numVerts; S++) {
for (x=1; x<gridSize-1; x++) {
- copy_v3_v3(cos[i++], CCS_getFaceGridEdgeData(ss, f, S, x));
+ copy_v3_v3(cos[i++], ccgSubSurf_getFaceGridEdgeData(ss, f, S, x));
}
}
for (S=0; S<numVerts; S++) {
for (y=1; y<gridSize-1; y++) {
for (x=1; x<gridSize-1; x++) {
- copy_v3_v3(cos[i++], CCS_getFaceGridData(ss, f, S, x, y));
+ copy_v3_v3(cos[i++], ccgSubSurf_getFaceGridData(ss, f, S, x, y));
}
}
}
}
for (index=0; index<totedge; index++) {
- CCEdge *e= edgeMap2[index];
+ CCGEdge *e= edgeMap2[index];
int x;
for (x=1; x<edgeSize-1; x++) {
- copy_v3_v3(cos[i++], CCS_getEdgeData(ss, e, x));
+ copy_v3_v3(cos[i++], ccgSubSurf_getEdgeData(ss, e, x));
}
}
for (index=0; index<totvert; index++) {
- CCVert *v = vertMap2[index];
- copy_v3_v3(cos[i++], CCS_getVertData(ss, v));
+ CCGVert *v = vertMap2[index];
+ copy_v3_v3(cos[i++], ccgSubSurf_getVertData(ss, v));
}
MEM_freeN(vertMap2);
@@ -1736,29 +1692,29 @@ static void cgdm_getVertCos(DerivedMesh *dm, float (*cos)[3]) {
}
static void cgdm_foreachMappedVert(DerivedMesh *dm, void (*func)(void *userData, int index, float *co, float *no_f, short *no_s), void *userData) {
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CCVertIterator *vi = CCS_getVertIterator(cgdm->ss);
+ CCGVertIterator *vi = ccgSubSurf_getVertIterator(cgdm->ss);
- for (; !CCVIter_isStopped(vi); CCVIter_next(vi)) {
- CCVert *v = CCVIter_getCurrent(vi);
- VertData *vd = CCS_getVertData(cgdm->ss, v);
- int index = cgdm_getVertMapIndex(cgdm->ss, v);
+ for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
+ CCGVert *v = ccgVertIterator_getCurrent(vi);
+ DMGridData *vd = ccgSubSurf_getVertData(cgdm->ss, v);
+ int index = ccgDM_getVertMapIndex(cgdm->ss, v);
if (index!=-1)
func(userData, index, vd->co, vd->no, NULL);
}
- CCVIter_free(vi);
+ ccgVertIterator_free(vi);
}
static void cgdm_foreachMappedEdge(DerivedMesh *dm, void (*func)(void *userData, int index, float *v0co, float *v1co), void *userData) {
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
- CCEdgeIterator *ei = CCS_getEdgeIterator(ss);
- int i, edgeSize = CCS_getEdgeSize(ss);
+ CCGSubSurf *ss = cgdm->ss;
+ CCGEdgeIterator *ei = ccgSubSurf_getEdgeIterator(ss);
+ int i, edgeSize = ccgSubSurf_getEdgeSize(ss);
- for (; !CCEIter_isStopped(ei); CCEIter_next(ei)) {
- CCEdge *e = CCEIter_getCurrent(ei);
- VertData *edgeData = CCS_getEdgeDataArray(ss, e);
- int index = cgdm_getEdgeMapIndex(ss, e);
+ for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
+ CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
+ DMGridData *edgeData = ccgSubSurf_getEdgeDataArray(ss, e);
+ int index = ccgDM_getEdgeMapIndex(ss, e);
if (index!=-1) {
for (i=0; i<edgeSize-1; i++)
@@ -1766,73 +1722,73 @@ static void cgdm_foreachMappedEdge(DerivedMesh *dm, void (*func)(void *userData,
}
}
- CCEIter_free(ei);
+ ccgEdgeIterator_free(ei);
}
static void cgdm_drawVerts(DerivedMesh *dm) {
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
- int edgeSize = CCS_getEdgeSize(ss);
- int gridSize = CCS_getGridSize(ss);
- CCVertIterator *vi;
- CCEdgeIterator *ei;
- CCFaceIterator *fi;
+ CCGSubSurf *ss = cgdm->ss;
+ int edgeSize = ccgSubSurf_getEdgeSize(ss);
+ int gridSize = ccgSubSurf_getGridSize(ss);
+ CCGVertIterator *vi;
+ CCGEdgeIterator *ei;
+ CCGFaceIterator *fi;
glBegin(GL_POINTS);
- vi = CCS_getVertIterator(ss);
- for (; !CCVIter_isStopped(vi); CCVIter_next(vi)) {
- CCVert *v = CCVIter_getCurrent(vi);
- glVertex3fv(CCS_getVertData(ss, v));
+ vi = ccgSubSurf_getVertIterator(ss);
+ for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
+ CCGVert *v = ccgVertIterator_getCurrent(vi);
+ glVertex3fv(ccgSubSurf_getVertData(ss, v));
}
- CCVIter_free(vi);
+ ccgVertIterator_free(vi);
- ei = CCS_getEdgeIterator(ss);
- for (; !CCEIter_isStopped(ei); CCEIter_next(ei)) {
- CCEdge *e = CCEIter_getCurrent(ei);
+ ei = ccgSubSurf_getEdgeIterator(ss);
+ for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
+ CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
int x;
for (x=1; x<edgeSize-1; x++)
- glVertex3fv(CCS_getEdgeData(ss, e, x));
+ glVertex3fv(ccgSubSurf_getEdgeData(ss, e, x));
}
- CCEIter_free(ei);
+ ccgEdgeIterator_free(ei);
- fi = CCS_getFaceIterator(ss);
- for (; !CCFIter_isStopped(fi); CCFIter_next(fi)) {
- CCFace *f = CCFIter_getCurrent(fi);
- int x, y, S, numVerts = CCS_getFaceNumVerts(f);
+ fi = ccgSubSurf_getFaceIterator(ss);
+ for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
+ CCGFace *f = ccgFaceIterator_getCurrent(fi);
+ int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f);
- glVertex3fv(CCS_getFaceCenterData(f));
+ glVertex3fv(ccgSubSurf_getFaceCenterData(f));
for (S=0; S<numVerts; S++)
for (x=1; x<gridSize-1; x++)
- glVertex3fv(CCS_getFaceGridEdgeData(ss, f, S, x));
+ glVertex3fv(ccgSubSurf_getFaceGridEdgeData(ss, f, S, x));
for (S=0; S<numVerts; S++)
for (y=1; y<gridSize-1; y++)
for (x=1; x<gridSize-1; x++)
- glVertex3fv(CCS_getFaceGridData(ss, f, S, x, y));
+ glVertex3fv(ccgSubSurf_getFaceGridData(ss, f, S, x, y));
}
- CCFIter_free(fi);
+ ccgFaceIterator_free(fi);
glEnd();
}
static void cgdm_drawEdges(DerivedMesh *dm, int drawLooseEdges) {
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
- CCEdgeIterator *ei = CCS_getEdgeIterator(ss);
- CCFaceIterator *fi = CCS_getFaceIterator(ss);
- int i, edgeSize = CCS_getEdgeSize(ss);
- int gridSize = CCS_getGridSize(ss);
+ CCGSubSurf *ss = cgdm->ss;
+ CCGEdgeIterator *ei = ccgSubSurf_getEdgeIterator(ss);
+ CCGFaceIterator *fi = ccgSubSurf_getFaceIterator(ss);
+ int i, edgeSize = ccgSubSurf_getEdgeSize(ss);
+ int gridSize = ccgSubSurf_getGridSize(ss);
int useAging;
- CCS_getUseAgeCounts(ss, &useAging, NULL, NULL, NULL);
+ ccgSubSurf_getUseAgeCounts(ss, &useAging, NULL, NULL, NULL);
- for (; !CCEIter_isStopped(ei); CCEIter_next(ei)) {
- CCEdge *e = CCEIter_getCurrent(ei);
- VertData *edgeData = CCS_getEdgeDataArray(ss, e);
+ for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
+ CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
+ DMGridData *edgeData = ccgSubSurf_getEdgeDataArray(ss, e);
- if (!drawLooseEdges && !CCS_getEdgeNumFaces(e))
+ if (!drawLooseEdges && !ccgSubSurf_getEdgeNumFaces(e))
continue;
if (useAging && !(G.f&G_BACKBUFSEL)) {
- int ageCol = 255-CCS_getEdgeAge(ss, e)*4;
+ int ageCol = 255-ccgSubSurf_getEdgeAge(ss, e)*4;
glColor3ub(0, ageCol>0?ageCol:0, 0);
}
@@ -1849,12 +1805,12 @@ static void cgdm_drawEdges(DerivedMesh *dm, int drawLooseEdges) {
}
if (cgdm->drawInteriorEdges) {
- for (; !CCFIter_isStopped(fi); CCFIter_next(fi)) {
- CCFace *f = CCFIter_getCurrent(fi);
- int S, x, y, numVerts = CCS_getFaceNumVerts(f);
+ for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
+ CCGFace *f = ccgFaceIterator_getCurrent(fi);
+ int S, x, y, numVerts = ccgSubSurf_getFaceNumVerts(f);
for (S=0; S<numVerts; S++) {
- VertData *faceGridData = CCS_getFaceGridDataArray(ss, f, S);
+ DMGridData *faceGridData = ccgSubSurf_getFaceGridDataArray(ss, f, S);
glBegin(GL_LINE_STRIP);
for (x=0; x<gridSize; x++)
@@ -1876,20 +1832,20 @@ static void cgdm_drawEdges(DerivedMesh *dm, int drawLooseEdges) {
}
}
- CCFIter_free(fi);
- CCEIter_free(ei);
+ ccgFaceIterator_free(fi);
+ ccgEdgeIterator_free(ei);
}
static void cgdm_drawLooseEdges(DerivedMesh *dm) {
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
- CCEdgeIterator *ei = CCS_getEdgeIterator(ss);
- int i, edgeSize = CCS_getEdgeSize(ss);
+ CCGSubSurf *ss = cgdm->ss;
+ CCGEdgeIterator *ei = ccgSubSurf_getEdgeIterator(ss);
+ int i, edgeSize = ccgSubSurf_getEdgeSize(ss);
- for (; !CCEIter_isStopped(ei); CCEIter_next(ei)) {
- CCEdge *e = CCEIter_getCurrent(ei);
- VertData *edgeData = CCS_getEdgeDataArray(ss, e);
+ for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
+ CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
+ DMGridData *edgeData = ccgSubSurf_getEdgeDataArray(ss, e);
- if (!CCS_getEdgeNumFaces(e)) {
+ if (!ccgSubSurf_getEdgeNumFaces(e)) {
glBegin(GL_LINE_STRIP);
for (i=0; i<edgeSize-1; i++) {
glVertex3fv(edgeData[i].co);
@@ -1899,10 +1855,10 @@ static void cgdm_drawLooseEdges(DerivedMesh *dm) {
}
}
- CCEIter_free(ei);
+ ccgEdgeIterator_free(ei);
}
-static void cgdm_glNormalFast(float *a, float *b, float *c, float *d)
+void ccgDM_glNormalFast(float *a, float *b, float *c, float *d)
{
float a_cX = c[0]-a[0], a_cY = c[1]-a[1], a_cZ = c[2]-a[2];
float b_dX = d[0]-b[0], b_dY = d[1]-b[1], b_dZ = d[2]-b[2];
@@ -1917,22 +1873,48 @@ static void cgdm_glNormalFast(float *a, float *b, float *c, float *d)
}
/* Only used by non-editmesh types */
-static void cgdm_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int, void *attribs)) {
+static void ccgDM_drawFacesSolid(DerivedMesh *dm, float (*partial_redraw_planes)[4], int fast, int (*setMaterial)(int, void *attribs)) {
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
- CCFaceIterator *fi = CCS_getFaceIterator(ss);
- int gridSize = CCS_getGridSize(ss);
- char *faceFlags = DM_get_tessface_data_layer(dm, CD_FLAGS);
-
- for (; !CCFIter_isStopped(fi); CCFIter_next(fi)) {
- CCFace *f = CCFIter_getCurrent(fi);
- int S, x, y, numVerts = CCS_getFaceNumVerts(f);
- int index = GET_INT_FROM_POINTER(CCS_getFaceFaceHandle(ss, f));
+ CCGSubSurf *ss = cgdm->ss;
+ CCGFaceIterator *fi;
+ int gridSize;
+ char *faceFlags = cgdm->faceFlags;
+ int step = (fast)? gridSize-1: 1;
+
+ if(cgdm->pbvh && cgdm->multires.mmd && !fast) {
+ CCGFace **faces;
+ int totface;
+
+ BLI_pbvh_get_grid_updates(cgdm->pbvh, 1, (void***)&faces, &totface);
+ if(totface) {
+ ccgSubSurf_updateFromFaces(ss, 0, faces, totface);
+ ccgSubSurf_updateNormals(ss, faces, totface);
+ MEM_freeN(faces);
+ }
+
+ /* should be per face */
+ if(faceFlags && faceFlags[0] & ME_SMOOTH)
+ glShadeModel(GL_SMOOTH);
+
+ BLI_pbvh_draw(cgdm->pbvh, partial_redraw_planes, NULL);
+
+ glShadeModel(GL_FLAT);
+
+ return;
+ }
+
+ gridSize = ccgSubSurf_getGridSize(ss);
+
+ fi = ccgSubSurf_getFaceIterator(ss);
+ for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
+ CCGFace *f = ccgFaceIterator_getCurrent(fi);
+ int S, x, y, numVerts = ccgSubSurf_getFaceNumVerts(f);
+ int index = GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(ss, f));
int drawSmooth, mat_nr;
if(faceFlags) {
- drawSmooth = (faceFlags[index*4] & ME_SMOOTH);
- mat_nr= faceFlags[index*4 + 1];
+ drawSmooth = (faceFlags[index*2] & ME_SMOOTH);
+ mat_nr= faceFlags[index*2 + 1];
}
else {
drawSmooth = 1;
@@ -1944,14 +1926,14 @@ static void cgdm_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int, void *a
glShadeModel(drawSmooth? GL_SMOOTH: GL_FLAT);
for (S=0; S<numVerts; S++) {
- VertData *faceGridData = CCS_getFaceGridDataArray(ss, f, S);
+ DMGridData *faceGridData = ccgSubSurf_getFaceGridDataArray(ss, f, S);
if (drawSmooth) {
- for (y=0; y<gridSize-1; y++) {
+ for (y=0; y<gridSize-1; y+=step) {
glBegin(GL_QUAD_STRIP);
- for (x=0; x<gridSize; x++) {
- VertData *a = &faceGridData[(y+0)*gridSize + x];
- VertData *b = &faceGridData[(y+1)*gridSize + x];
+ for (x=0; x<gridSize; x+=step) {
+ DMGridData *a = &faceGridData[(y+0)*gridSize + x];
+ DMGridData *b = &faceGridData[(y+step)*gridSize + x];
glNormal3fv(a->no);
glVertex3fv(a->co);
@@ -1962,14 +1944,14 @@ static void cgdm_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int, void *a
}
} else {
glBegin(GL_QUADS);
- for (y=0; y<gridSize-1; y++) {
- for (x=0; x<gridSize-1; x++) {
+ for (y=0; y<gridSize-1; y+=step) {
+ for (x=0; x<gridSize-1; x+=step) {
float *a = faceGridData[(y+0)*gridSize + x].co;
- float *b = faceGridData[(y+0)*gridSize + x + 1].co;
- float *c = faceGridData[(y+1)*gridSize + x + 1].co;
- float *d = faceGridData[(y+1)*gridSize + x].co;
+ float *b = faceGridData[(y+0)*gridSize + x + step].co;
+ float *c = faceGridData[(y+step)*gridSize + x + step].co;
+ float *d = faceGridData[(y+step)*gridSize + x].co;
- cgdm_glNormalFast(a, b, c, d);
+ ccgDM_glNormalFast(a, b, c, d);
glVertex3fv(d);
glVertex3fv(c);
@@ -1982,22 +1964,22 @@ static void cgdm_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int, void *a
}
}
- CCFIter_free(fi);
+ ccgFaceIterator_free(fi);
}
/* Only used by non-editmesh types */
static void cgdm_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, void *attribs), int (*setDrawOptions)(void *userData, int index), void *userData) {
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
- CCFaceIterator *fi = CCS_getFaceIterator(ss);
+ CCGSubSurf *ss = cgdm->ss;
+ CCGFaceIterator *fi = ccgSubSurf_getFaceIterator(ss);
GPUVertexAttribs gattribs;
DMVertexAttribs attribs;
MTFace *tf = dm->getTessFaceDataArray(dm, CD_MTFACE);
- int gridSize = CCS_getGridSize(ss);
+ int gridSize = ccgSubSurf_getGridSize(ss);
int gridFaces = gridSize - 1;
- int edgeSize = CCS_getEdgeSize(ss);
+ int edgeSize = ccgSubSurf_getEdgeSize(ss);
int transp, orig_transp, new_transp;
- char *faceFlags = DM_get_tessface_data_layer(dm, CD_FLAGS);
+ char *faceFlags = cgdm->faceFlags;
int a, b, i, doDraw, numVerts, matnr, new_matnr, totface;
doDraw = 0;
@@ -2029,18 +2011,18 @@ static void cgdm_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, vo
} \
}
- totface = CCS_getNumFaces(ss);
+ totface = ccgSubSurf_getNumFaces(ss);
for(a = 0, i = 0; i < totface; i++) {
- CCFace *f = cgdm->faceMap[i].face;
+ CCGFace *f = cgdm->faceMap[i].face;
int S, x, y, drawSmooth;
- int index = GET_INT_FROM_POINTER(CCS_getFaceFaceHandle(ss, f));
- int origIndex = cgdm_getFaceMapIndex(ss, f);
+ int index = GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(ss, f));
+ int origIndex = ccgDM_getFaceMapIndex(ss, f);
- numVerts = CCS_getFaceNumVerts(f);
+ numVerts = ccgSubSurf_getFaceNumVerts(f);
if(faceFlags) {
- drawSmooth = (faceFlags[index*4] & ME_SMOOTH);
- new_matnr= faceFlags[index*4 + 1] + 1;
+ drawSmooth = (faceFlags[index*2] & ME_SMOOTH);
+ new_matnr= faceFlags[index*2 + 1] + 1;
}
else {
drawSmooth = 1;
@@ -2072,8 +2054,8 @@ static void cgdm_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, vo
glShadeModel(drawSmooth? GL_SMOOTH: GL_FLAT);
for (S=0; S<numVerts; S++) {
- VertData *faceGridData = CCS_getFaceGridDataArray(ss, f, S);
- VertData *vda, *vdb;
+ DMGridData *faceGridData = ccgSubSurf_getFaceGridDataArray(ss, f, S);
+ DMGridData *vda, *vdb;
if (drawSmooth) {
for (y=0; y<gridFaces; y++) {
@@ -2118,7 +2100,7 @@ static void cgdm_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, vo
float *cco = faceGridData[(y+1)*gridSize + x + 1].co;
float *dco = faceGridData[(y+1)*gridSize + x].co;
- cgdm_glNormalFast(aco, bco, cco, dco);
+ ccgDM_glNormalFast(aco, bco, cco, dco);
PASSATTRIB(0, 1, 1);
glVertex3fv(dco);
@@ -2139,7 +2121,7 @@ static void cgdm_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, vo
#undef PASSATTRIB
- CCFIter_free(fi);
+ ccgFaceIterator_free(fi);
}
static void cgdm_drawFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, void *attribs)) {
@@ -2148,9 +2130,9 @@ static void cgdm_drawFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, void *at
static void cgdm_drawFacesColored(DerivedMesh *dm, int useTwoSided, unsigned char *col1, unsigned char *col2) {
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
- CCFaceIterator *fi = CCS_getFaceIterator(ss);
- int gridSize = CCS_getGridSize(ss);
+ CCGSubSurf *ss = cgdm->ss;
+ CCGFaceIterator *fi = ccgSubSurf_getFaceIterator(ss);
+ int gridSize = ccgSubSurf_getGridSize(ss);
unsigned char *cp1, *cp2;
int useTwoSide=1;
@@ -2167,12 +2149,12 @@ static void cgdm_drawFacesColored(DerivedMesh *dm, int useTwoSided, unsigned cha
glEnable(GL_CULL_FACE);
glBegin(GL_QUADS);
- for (; !CCFIter_isStopped(fi); CCFIter_next(fi)) {
- CCFace *f = CCFIter_getCurrent(fi);
- int S, x, y, numVerts = CCS_getFaceNumVerts(f);
+ for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
+ CCGFace *f = ccgFaceIterator_getCurrent(fi);
+ int S, x, y, numVerts = ccgSubSurf_getFaceNumVerts(f);
for (S=0; S<numVerts; S++) {
- VertData *faceGridData = CCS_getFaceGridDataArray(ss, f, S);
+ DMGridData *faceGridData = ccgSubSurf_getFaceGridDataArray(ss, f, S);
for (y=0; y<gridSize-1; y++) {
for (x=0; x<gridSize-1; x++) {
float *a = faceGridData[(y+0)*gridSize + x].co;
@@ -2208,7 +2190,7 @@ static void cgdm_drawFacesColored(DerivedMesh *dm, int useTwoSided, unsigned cha
}
glEnd();
- CCFIter_free(fi);
+ ccgFaceIterator_free(fi);
}
static void cgdm_drawFacesTex_common(DerivedMesh *dm,
@@ -2217,25 +2199,28 @@ static void cgdm_drawFacesTex_common(DerivedMesh *dm,
void *userData)
{
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
- MCol *mcol = DM_get_tessface_data_layer(dm, CD_MCOL);
+ CCGSubSurf *ss = cgdm->ss;
+ MCol *mcol = dm->getTessFaceDataArray(dm, CD_WEIGHT_MCOL);
MTFace *tf = DM_get_tessface_data_layer(dm, CD_MTFACE);
- char *faceFlags = DM_get_tessface_data_layer(dm, CD_FLAGS);
- int i, totface, flag, gridSize = CCS_getGridSize(ss);
+ char *faceFlags = cgdm->faceFlags;
+ int i, totface, flag, gridSize = ccgSubSurf_getGridSize(ss);
int gridFaces = gridSize - 1;
- totface = CCS_getNumFaces(ss);
+ if(!mcol)
+ mcol = dm->getTessFaceDataArray(dm, CD_MCOL);
+
+ totface = ccgSubSurf_getNumFaces(ss);
for(i = 0; i < totface; i++) {
- CCFace *f = cgdm->faceMap[i].face;
- int S, x, y, numVerts = CCS_getFaceNumVerts(f);
- int drawSmooth, index = cgdm_getFaceMapIndex(ss, f);
- int origIndex = GET_INT_FROM_POINTER(CCS_getFaceFaceHandle(ss, f));
+ CCGFace *f = cgdm->faceMap[i].face;
+ int S, x, y, numVerts = ccgSubSurf_getFaceNumVerts(f);
+ int drawSmooth, index = ccgDM_getFaceMapIndex(ss, f);
+ int origIndex = GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(ss, f));
unsigned char *cp= NULL;
int mat_nr;
if(faceFlags) {
- drawSmooth = (faceFlags[origIndex*4] & ME_SMOOTH);
- mat_nr= faceFlags[origIndex*4 + 1];
+ drawSmooth = (faceFlags[origIndex*2] & ME_SMOOTH);
+ mat_nr= faceFlags[origIndex*2 + 1];
}
else {
drawSmooth = 1;
@@ -2260,8 +2245,8 @@ static void cgdm_drawFacesTex_common(DerivedMesh *dm,
}
for (S=0; S<numVerts; S++) {
- VertData *faceGridData = CCS_getFaceGridDataArray(ss, f, S);
- VertData *a, *b;
+ DMGridData *faceGridData = ccgSubSurf_getFaceGridDataArray(ss, f, S);
+ DMGridData *a, *b;
if (drawSmooth) {
glShadeModel(GL_SMOOTH);
@@ -2315,7 +2300,7 @@ static void cgdm_drawFacesTex_common(DerivedMesh *dm,
float *c_co = faceGridData[(y+1)*gridSize + x + 1].co;
float *d_co = faceGridData[(y+1)*gridSize + x].co;
- cgdm_glNormalFast(a_co, b_co, c_co, d_co);
+ ccgDM_glNormalFast(a_co, b_co, c_co, d_co);
if(tf) glTexCoord2fv(tf->uv[1]);
if(cp) glColor3ub(cp[7], cp[6], cp[5]);
@@ -2386,24 +2371,38 @@ static void cgdm_drawUVEdges(DerivedMesh *dm)
}
}
-static void cgdm_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *userData, int index, int *drawSmooth_r), void *userData, int useColors) {
+static void ccgDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *userData, int index, int *drawSmooth_r), void *userData, int useColors) {
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
- CCFaceIterator *fi = CCS_getFaceIterator(ss);
- int i, gridSize = CCS_getGridSize(ss);
- char *faceFlags = dm->getTessFaceDataArray(dm, CD_FLAGS);
-
- for (i=0; !CCFIter_isStopped(fi); i++,CCFIter_next(fi)) {
- CCFace *f = CCFIter_getCurrent(fi);
- int S, x, y, numVerts = CCS_getFaceNumVerts(f);
- int drawSmooth, index = cgdm_getFaceMapIndex(ss, f);
+ CCGSubSurf *ss = cgdm->ss;
+ MCol *mcol= NULL;
+ int i, gridSize = ccgSubSurf_getGridSize(ss);
+ char *faceFlags = cgdm->faceFlags;
+ int gridFaces = gridSize - 1, totface;
+
+ if(useColors) {
+ mcol = dm->getTessFaceDataArray(dm, CD_WEIGHT_MCOL);
+ if(!mcol)
+ mcol = dm->getTessFaceDataArray(dm, CD_MCOL);
+ }
+
+ totface = ccgSubSurf_getNumFaces(ss);
+ for(i = 0; i < totface; i++) {
+ CCGFace *f = cgdm->faceMap[i].face;
+ int S, x, y, numVerts = ccgSubSurf_getFaceNumVerts(f);
+ int drawSmooth, index = ccgDM_getFaceMapIndex(ss, f);
int origIndex;
+ unsigned char *cp= NULL;
- origIndex = GET_INT_FROM_POINTER(CCS_getFaceFaceHandle(ss, f));
+ origIndex = GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(ss, f));
- if(faceFlags) drawSmooth = (faceFlags[origIndex*4] & ME_SMOOTH);
+ if(faceFlags) drawSmooth = (faceFlags[origIndex*2] & ME_SMOOTH);
else drawSmooth = 1;
-
+
+ if(mcol) {
+ cp= (unsigned char*)mcol;
+ mcol += gridFaces*gridFaces*numVerts*4;
+ }
+
if (index!=-1) {
int draw;
draw = setDrawOptions==NULL ? 1 : setDrawOptions(userData, index, &drawSmooth);
@@ -2415,44 +2414,64 @@ static void cgdm_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *us
}
for (S=0; S<numVerts; S++) {
- VertData *faceGridData = CCS_getFaceGridDataArray(ss, f, S);
+ DMGridData *faceGridData = ccgSubSurf_getFaceGridDataArray(ss, f, S);
if (drawSmooth) {
glShadeModel(GL_SMOOTH);
- for (y=0; y<gridSize-1; y++) {
+ for (y=0; y<gridFaces; y++) {
+ DMGridData *a, *b;
glBegin(GL_QUAD_STRIP);
- for (x=0; x<gridSize; x++) {
- VertData *a = &faceGridData[(y+0)*gridSize + x];
- VertData *b = &faceGridData[(y+1)*gridSize + x];
+ for (x=0; x<gridFaces; x++) {
+ a = &faceGridData[(y+0)*gridSize + x];
+ b = &faceGridData[(y+1)*gridSize + x];
+ if(cp) glColor3ub(cp[3], cp[2], cp[1]);
glNormal3fv(a->no);
glVertex3fv(a->co);
+ if(cp) glColor3ub(cp[7], cp[6], cp[5]);
glNormal3fv(b->no);
glVertex3fv(b->co);
+
+ if(x != gridFaces-1) {
+ if(cp) cp += 16;
+ }
}
+
+ a = &faceGridData[(y+0)*gridSize + x];
+ b = &faceGridData[(y+1)*gridSize + x];
+
+ if(cp) glColor3ub(cp[15], cp[14], cp[13]);
+ glNormal3fv(a->no);
+ glVertex3fv(a->co);
+ if(cp) glColor3ub(cp[11], cp[10], cp[9]);
+ glNormal3fv(b->no);
+ glVertex3fv(b->co);
+
+ if(cp) cp += 16;
+
glEnd();
}
} else {
glShadeModel(GL_FLAT);
glBegin(GL_QUADS);
- for (y=0; y<gridSize-1; y++) {
- for (x=0; x<gridSize-1; x++) {
+ for (y=0; y<gridFaces; y++) {
+ for (x=0; x<gridFaces; x++) {
float *a = faceGridData[(y+0)*gridSize + x].co;
float *b = faceGridData[(y+0)*gridSize + x + 1].co;
float *c = faceGridData[(y+1)*gridSize + x + 1].co;
float *d = faceGridData[(y+1)*gridSize + x].co;
- float a_cX = c[0]-a[0], a_cY = c[1]-a[1], a_cZ = c[2]-a[2];
- float b_dX = d[0]-b[0], b_dY = d[1]-b[1], b_dZ = d[2]-b[2];
- float no[3];
-
- no[0] = b_dY*a_cZ - b_dZ*a_cY;
- no[1] = b_dZ*a_cX - b_dX*a_cZ;
- no[2] = b_dX*a_cY - b_dY*a_cX;
- glNormal3fv(no);
+
+ ccgDM_glNormalFast(a, b, c, d);
+ if(cp) glColor3ub(cp[7], cp[6], cp[5]);
glVertex3fv(d);
+ if(cp) glColor3ub(cp[11], cp[10], cp[9]);
glVertex3fv(c);
+ if(cp) glColor3ub(cp[15], cp[14], cp[13]);
glVertex3fv(b);
+ if(cp) glColor3ub(cp[3], cp[2], cp[1]);
glVertex3fv(a);
+
+ if(cp) cp += 16;
}
}
glEnd();
@@ -2463,26 +2482,24 @@ static void cgdm_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *us
}
}
}
-
- CCFIter_free(fi);
}
static void cgdm_drawMappedEdges(DerivedMesh *dm, int (*setDrawOptions)(void *userData, int index), void *userData) {
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
- CCEdgeIterator *ei = CCS_getEdgeIterator(ss);
- int i, useAging, edgeSize = CCS_getEdgeSize(ss);
+ CCGSubSurf *ss = cgdm->ss;
+ CCGEdgeIterator *ei = ccgSubSurf_getEdgeIterator(ss);
+ int i, useAging, edgeSize = ccgSubSurf_getEdgeSize(ss);
- CCS_getUseAgeCounts(ss, &useAging, NULL, NULL, NULL);
+ ccgSubSurf_getUseAgeCounts(ss, &useAging, NULL, NULL, NULL);
- for (; !CCEIter_isStopped(ei); CCEIter_next(ei)) {
- CCEdge *e = CCEIter_getCurrent(ei);
- VertData *edgeData = CCS_getEdgeDataArray(ss, e);
- int index = cgdm_getEdgeMapIndex(ss, e);
+ for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
+ CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
+ DMGridData *edgeData = ccgSubSurf_getEdgeDataArray(ss, e);
+ int index = ccgDM_getEdgeMapIndex(ss, e);
glBegin(GL_LINE_STRIP);
if (index!=-1 && (!setDrawOptions || setDrawOptions(userData, index))) {
if (useAging && !(G.f&G_BACKBUFSEL)) {
- int ageCol = 255-CCS_getEdgeAge(ss, e)*4;
+ int ageCol = 255-ccgSubSurf_getEdgeAge(ss, e)*4;
glColor3ub(0, ageCol>0?ageCol:0, 0);
}
@@ -2494,20 +2511,20 @@ static void cgdm_drawMappedEdges(DerivedMesh *dm, int (*setDrawOptions)(void *us
glEnd();
}
- CCEIter_free(ei);
+ ccgEdgeIterator_free(ei);
}
static void cgdm_drawMappedEdgesInterp(DerivedMesh *dm, int (*setDrawOptions)(void *userData, int index), void (*setDrawInterpOptions)(void *userData, int index, float t), void *userData) {
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
- CCEdgeIterator *ei = CCS_getEdgeIterator(ss);
- int i, useAging, edgeSize = CCS_getEdgeSize(ss);
+ CCGSubSurf *ss = cgdm->ss;
+ CCGEdgeIterator *ei = ccgSubSurf_getEdgeIterator(ss);
+ int i, useAging, edgeSize = ccgSubSurf_getEdgeSize(ss);
- CCS_getUseAgeCounts(ss, &useAging, NULL, NULL, NULL);
+ ccgSubSurf_getUseAgeCounts(ss, &useAging, NULL, NULL, NULL);
- for (; !CCEIter_isStopped(ei); CCEIter_next(ei)) {
- CCEdge *e = CCEIter_getCurrent(ei);
- VertData *edgeData = CCS_getEdgeDataArray(ss, e);
- int index = cgdm_getEdgeMapIndex(ss, e);
+ for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
+ CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
+ DMGridData *edgeData = ccgSubSurf_getEdgeDataArray(ss, e);
+ int index = ccgDM_getEdgeMapIndex(ss, e);
glBegin(GL_LINE_STRIP);
if (index!=-1 && (!setDrawOptions || setDrawOptions(userData, index))) {
@@ -2515,7 +2532,7 @@ static void cgdm_drawMappedEdgesInterp(DerivedMesh *dm, int (*setDrawOptions)(vo
setDrawInterpOptions(userData, index, (float) i/(edgeSize-1));
if (useAging && !(G.f&G_BACKBUFSEL)) {
- int ageCol = 255-CCS_getEdgeAge(ss, e)*4;
+ int ageCol = 255-ccgSubSurf_getEdgeAge(ss, e)*4;
glColor3ub(0, ageCol>0?ageCol:0, 0);
}
@@ -2525,42 +2542,60 @@ static void cgdm_drawMappedEdgesInterp(DerivedMesh *dm, int (*setDrawOptions)(vo
glEnd();
}
- CCEIter_free(ei);
+ ccgEdgeIterator_free(ei);
}
static void cgdm_foreachMappedFaceCenter(DerivedMesh *dm, void (*func)(void *userData, int index, float *co, float *no), void *userData) {
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
- CSubSurf *ss = cgdm->ss;
- CCFaceIterator *fi = CCS_getFaceIterator(ss);
+ CCGSubSurf *ss = cgdm->ss;
+ CCGFaceIterator *fi = ccgSubSurf_getFaceIterator(ss);
- for (; !CCFIter_isStopped(fi); CCFIter_next(fi)) {
- CCFace *f = CCFIter_getCurrent(fi);
- int index = cgdm_getFaceMapIndex(ss, f);
+ for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
+ CCGFace *f = ccgFaceIterator_getCurrent(fi);
+ int index = ccgDM_getFaceMapIndex(ss, f);
if (index!=-1) {
/* Face center data normal isn't updated atm. */
- VertData *vd = CCS_getFaceGridData(ss, f, 0, 0, 0);
+ DMGridData *vd = ccgSubSurf_getFaceGridData(ss, f, 0, 0, 0);
func(userData, index, vd->co, vd->no);
}
}
- CCFIter_free(fi);
+ ccgFaceIterator_free(fi);
}
static void cgdm_release(DerivedMesh *dm) {
CCGDerivedMesh *cgdm = (CCGDerivedMesh*) dm;
if (DM_release(dm)) {
+ /* Before freeing, need to update the displacement map */
+ if(cgdm->multires.modified) {
+ /* Check that mmd still exists */
+ if(!cgdm->multires.local_mmd && BLI_findindex(&cgdm->multires.ob->modifiers, cgdm->multires.mmd) < 0)
+ cgdm->multires.mmd = NULL;
+ if(cgdm->multires.mmd)
+ cgdm->multires.update(dm);
+ }
+
+ if(cgdm->pbvh) BLI_pbvh_free(cgdm->pbvh);
+ if(cgdm->gridFaces) MEM_freeN(cgdm->gridFaces);
+ if(cgdm->gridData) MEM_freeN(cgdm->gridData);
+ if(cgdm->gridAdjacency) MEM_freeN(cgdm->gridAdjacency);
+ if(cgdm->gridOffset) MEM_freeN(cgdm->gridOffset);
+ if(cgdm->freeSS) ccgSubSurf_free(cgdm->ss);
+ if(cgdm->reverseFaceMap) MEM_freeN(cgdm->reverseFaceMap);
+
+ BLI_edgehash_free(cgdm->ehash, NULL);
+
+ MEM_freeN(cgdm->edgeFlags);
+ MEM_freeN(cgdm->faceFlags);
MEM_freeN(cgdm->vertMap);
MEM_freeN(cgdm->edgeMap);
MEM_freeN(cgdm->faceMap);
- MEM_freeN(cgdm->reverseFaceMap);
- BLI_edgehash_free(cgdm->ehash, NULL);
MEM_freeN(cgdm);
}
}
-
void ccg_loops_to_corners(CustomData *fdata, CustomData *ldata,
CustomData *pdata, int loopstart, int findex,
int polyindex, int numTex, int numCol)
@@ -2615,69 +2650,330 @@ void ccg_loops_to_corners(CustomData *fdata, CustomData *ldata,
}
}
-/*this function requires dm to be a CDDM*/
-static CCGDerivedMesh *getCCGDerivedMesh(CSubSurf *ss,
+static void *ccgDM_get_vert_data_layer(DerivedMesh *dm, int type)
+{
+ if(type == CD_ORIGINDEX) {
+ /* create origindex on demand to save memory */
+ CCGDerivedMesh *cgdm= (CCGDerivedMesh*)dm;
+ CCGSubSurf *ss= cgdm->ss;
+ int *origindex;
+ int a, index, totnone, totorig;
+
+ DM_add_vert_layer(dm, CD_ORIGINDEX, CD_CALLOC, NULL);
+ origindex= DM_get_vert_data_layer(dm, CD_ORIGINDEX);
+
+ totorig = ccgSubSurf_getNumVerts(ss);
+ totnone= dm->numVertData - totorig;
+
+ /* original vertices are at the end */
+ for(a=0; a<totnone; a++)
+ origindex[a]= ORIGINDEX_NONE;
+
+ for(index=0; index<totorig; index++, a++) {
+ CCGVert *v = cgdm->vertMap[index].vert;
+ origindex[a] = ccgDM_getVertMapIndex(cgdm->ss, v);
+ }
+
+ return origindex;
+ }
+
+ return DM_get_vert_data_layer(dm, type);
+}
+
+static void *ccgDM_get_edge_data_layer(DerivedMesh *dm, int type)
+{
+ if(type == CD_ORIGINDEX) {
+ /* create origindex on demand to save memory */
+ CCGDerivedMesh *cgdm= (CCGDerivedMesh*)dm;
+ CCGSubSurf *ss= cgdm->ss;
+ int *origindex;
+ int a, i, index, totnone, totorig, totedge;
+ int edgeSize= ccgSubSurf_getEdgeSize(ss);
+
+ DM_add_edge_layer(dm, CD_ORIGINDEX, CD_CALLOC, NULL);
+ origindex= DM_get_edge_data_layer(dm, CD_ORIGINDEX);
+
+ totedge= ccgSubSurf_getNumEdges(ss);
+ totorig= totedge*(edgeSize - 1);
+ totnone= dm->numEdgeData - totorig;
+
+ /* original edges are at the end */
+ for(a=0; a<totnone; a++)
+ origindex[a]= ORIGINDEX_NONE;
+
+ for(index=0; index<totedge; index++) {
+ CCGEdge *e= cgdm->edgeMap[index].edge;
+ int mapIndex= ccgDM_getEdgeMapIndex(ss, e);
+
+ for(i = 0; i < edgeSize - 1; i++, a++)
+ origindex[a]= mapIndex;
+ }
+
+ return origindex;
+ }
+
+ return DM_get_edge_data_layer(dm, type);
+}
+
+static void *ccgDM_get_face_data_layer(DerivedMesh *dm, int type)
+{
+ if(type == CD_ORIGINDEX) {
+ /* create origindex on demand to save memory */
+ CCGDerivedMesh *cgdm= (CCGDerivedMesh*)dm;
+ CCGSubSurf *ss= cgdm->ss;
+ int *origindex;
+ int a, i, index, totface;
+ int gridFaces = ccgSubSurf_getGridSize(ss) - 1;
+
+ DM_add_face_layer(dm, CD_ORIGINDEX, CD_CALLOC, NULL);
+ origindex= DM_get_tessface_data_layer(dm, CD_ORIGINDEX);
+
+ totface= ccgSubSurf_getNumFaces(ss);
+
+ for(a=0, index=0; index<totface; index++) {
+ CCGFace *f = cgdm->faceMap[index].face;
+ int numVerts = ccgSubSurf_getFaceNumVerts(f);
+ int mapIndex = ccgDM_getFaceMapIndex(ss, f);
+
+ for(i=0; i<gridFaces*gridFaces*numVerts; i++, a++)
+ origindex[a]= mapIndex;
+ }
+
+ return origindex;
+ }
+
+ return DM_get_tessface_data_layer(dm, type);
+}
+
+static int ccgDM_getNumGrids(DerivedMesh *dm)
+{
+ CCGDerivedMesh *cgdm= (CCGDerivedMesh*)dm;
+ int index, numFaces, numGrids;
+
+ numFaces= ccgSubSurf_getNumFaces(cgdm->ss);
+ numGrids= 0;
+
+ for(index=0; index<numFaces; index++) {
+ CCGFace *f = cgdm->faceMap[index].face;
+ numGrids += ccgSubSurf_getFaceNumVerts(f);
+ }
+
+ return numGrids;
+}
+
+static int ccgDM_getGridSize(DerivedMesh *dm)
+{
+ CCGDerivedMesh *cgdm= (CCGDerivedMesh*)dm;
+ return ccgSubSurf_getGridSize(cgdm->ss);
+}
+
+static int cgdm_adjacent_grid(CCGSubSurf *ss, int *gridOffset, CCGFace *f, int S, int offset)
+{
+ CCGFace *adjf;
+ CCGEdge *e;
+ int i, j= 0, numFaces, fIndex, numEdges= 0;
+
+ e = ccgSubSurf_getFaceEdge(ss, f, S);
+ numFaces = ccgSubSurf_getEdgeNumFaces(e);
+
+ if(numFaces != 2)
+ return -1;
+
+ for(i = 0; i < numFaces; i++) {
+ adjf = ccgSubSurf_getEdgeFace(e, i);
+
+ if(adjf != f) {
+ numEdges = ccgSubSurf_getFaceNumVerts(adjf);
+ for(j = 0; j < numEdges; j++)
+ if(ccgSubSurf_getFaceEdge(ss, adjf, j) == e)
+ break;
+
+ if(j != numEdges)
+ break;
+ }
+ }
+
+ fIndex = GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(ss, adjf));
+
+ return gridOffset[fIndex] + (j + offset)%numEdges;
+}
+
+static void cgdm_create_grids(DerivedMesh *dm)
+{
+ CCGDerivedMesh *cgdm= (CCGDerivedMesh*)dm;
+ CCGSubSurf *ss= cgdm->ss;
+ DMGridData **gridData;
+ DMGridAdjacency *gridAdjacency, *adj;
+ CCGFace **gridFaces;
+ int *gridOffset;
+ int index, numFaces, numGrids, S, gIndex, gridSize;
+
+ if(cgdm->gridData)
+ return;
+
+ numGrids = ccgDM_getNumGrids(dm);
+ numFaces = ccgSubSurf_getNumFaces(ss);
+ gridSize = ccgDM_getGridSize(dm);
+
+ /* compute offset into grid array for each face */
+ gridOffset = MEM_mallocN(sizeof(int)*numFaces, "cgdm.gridOffset");
+
+ for(gIndex = 0, index = 0; index < numFaces; index++) {
+ CCGFace *f = cgdm->faceMap[index].face;
+ int numVerts = ccgSubSurf_getFaceNumVerts(f);
+
+ gridOffset[index] = gIndex;
+ gIndex += numVerts;
+ }
+
+ /* compute grid data */
+ gridData = MEM_mallocN(sizeof(DMGridData*)*numGrids, "cgdm.gridData");
+ gridAdjacency = MEM_mallocN(sizeof(DMGridAdjacency)*numGrids, "cgdm.gridAdjacency");
+ gridFaces = MEM_mallocN(sizeof(CCGFace*)*numGrids, "cgdm.gridFaces");
+
+ for(gIndex = 0, index = 0; index < numFaces; index++) {
+ CCGFace *f = cgdm->faceMap[index].face;
+ int numVerts = ccgSubSurf_getFaceNumVerts(f);
+
+ for(S = 0; S < numVerts; S++, gIndex++) {
+ int prevS = (S - 1 + numVerts) % numVerts;
+ int nextS = (S + 1 + numVerts) % numVerts;
+
+ gridData[gIndex] = ccgSubSurf_getFaceGridDataArray(ss, f, S);
+ gridFaces[gIndex] = f;
+
+ adj = &gridAdjacency[gIndex];
+
+ adj->index[0] = gIndex - S + nextS;
+ adj->rotation[0] = 3;
+ adj->index[1] = cgdm_adjacent_grid(ss, gridOffset, f, prevS, 0);
+ adj->rotation[1] = 1;
+ adj->index[2] = cgdm_adjacent_grid(ss, gridOffset, f, S, 1);
+ adj->rotation[2] = 3;
+ adj->index[3] = gIndex - S + prevS;
+ adj->rotation[3] = 1;
+ }
+ }
+
+ cgdm->gridData = gridData;
+ cgdm->gridFaces = gridFaces;
+ cgdm->gridAdjacency = gridAdjacency;
+ cgdm->gridOffset = gridOffset;
+}
+
+static DMGridData **ccgDM_getGridData(DerivedMesh *dm)
+{
+ CCGDerivedMesh *cgdm= (CCGDerivedMesh*)dm;
+
+ cgdm_create_grids(dm);
+ return cgdm->gridData;
+}
+
+static DMGridAdjacency *ccgDM_getGridAdjacency(DerivedMesh *dm)
+{
+ CCGDerivedMesh *cgdm= (CCGDerivedMesh*)dm;
+
+ cgdm_create_grids(dm);
+ return cgdm->gridAdjacency;
+}
+
+static int *ccgDM_getGridOffset(DerivedMesh *dm)
+{
+ CCGDerivedMesh *cgdm= (CCGDerivedMesh*)dm;
+
+ cgdm_create_grids(dm);
+ return cgdm->gridOffset;
+}
+
+static struct PBVH *ccgDM_getPBVH(Object *ob, DerivedMesh *dm)
+{
+ CCGDerivedMesh *cgdm= (CCGDerivedMesh*)dm;
+ int gridSize, numGrids;
+
+ if(cgdm->pbvh)
+ return cgdm->pbvh;
+
+ if(cgdm->multires.mmd) {
+ cgdm_create_grids(dm);
+
+ gridSize = ccgDM_getGridSize(dm);
+ numGrids = ccgDM_getNumGrids(dm);
+
+ cgdm->pbvh = BLI_pbvh_new();
+ BLI_pbvh_build_grids(cgdm->pbvh, cgdm->gridData, cgdm->gridAdjacency,
+ numGrids, gridSize, (void**)cgdm->gridFaces);
+ }
+ else if(ob->type == OB_MESH) {
+ Mesh *me= ob->data;
+
+ cgdm->pbvh = BLI_pbvh_new();
+ BLI_pbvh_build_mesh(cgdm->pbvh, me->mface, me->mvert,
+ me->totface, me->totvert);
+ }
+
+ return cgdm->pbvh;
+}
+
+static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
int drawInteriorEdges,
int useSubsurfUv,
DerivedMesh *dm)
{
CCGDerivedMesh *cgdm = MEM_callocN(sizeof(*cgdm), "cgdm");
- CCVertIterator *vi;
- CCEdgeIterator *ei;
- CCFaceIterator *fi;
+ CCGVertIterator *vi;
+ CCGEdgeIterator *ei;
+ CCGFaceIterator *fi;
int index, totvert, totedge, totface;
int i;
int vertNum, edgeNum, faceNum;
int *vertOrigIndex, *faceOrigIndex, *polyOrigIndex; /* *edgeOrigIndex - as yet, unused */
- int *edgeFlags;
- char *faceFlags, *polyFlags;
+ short *edgeFlags;
+ char *faceFlags;
int *loopidx = NULL, *vertidx = NULL;
BLI_array_declare(loopidx);
BLI_array_declare(vertidx);
int loopindex, loopindex2;
- int edgeSize;
+ int edgeSize, has_edge_origindex;
int gridSize;
int gridFaces, gridCuts;
int gridSideVerts;
- /*int gridInternalVerts; - as yet unused */
int gridSideEdges;
int numTex, numCol;
int gridInternalEdges;
float *w = NULL, one = 1.0f;
WeightTable wtable = {0};
- /* MVert *mvert = NULL; - as yet unused */
MCol *mcol;
MEdge *medge = NULL, medge2;
MFace *mface = NULL;
MPoly *mpoly = NULL;
- DM_from_template(&cgdm->dm, dm, CCS_getNumFinalVerts(ss),
- CCS_getNumFinalEdges(ss),
- CCS_getNumFinalFaces(ss),
- CCS_getNumFinalFaces(ss)*4,
- CCS_getNumFinalFaces(ss));
- DM_add_tessface_layer(&cgdm->dm, CD_FLAGS, CD_CALLOC, NULL);
- DM_add_face_layer(&cgdm->dm, CD_FLAGS, CD_CALLOC, NULL);
- DM_add_edge_layer(&cgdm->dm, CD_FLAGS, CD_CALLOC, NULL);
+ DM_from_template(&cgdm->dm, dm, ccgSubSurf_getNumFinalVerts(ss),
+ ccgSubSurf_getNumFinalEdges(ss),
+ ccgSubSurf_getNumFinalFaces(ss),
+ ccgSubSurf_getNumFinalFaces(ss)*4,
+ ccgSubSurf_getNumFinalFaces(ss));
numTex = CustomData_number_of_layers(&cgdm->dm.loopData, CD_MLOOPUV);
numCol = CustomData_number_of_layers(&cgdm->dm.loopData, CD_MLOOPCOL);
if (numTex && CustomData_number_of_layers(&cgdm->dm.faceData, CD_MTFACE) != numTex)
- CustomData_from_bmeshpoly(&cgdm->dm.faceData, &cgdm->dm.polyData, &cgdm->dm.loopData, CCS_getNumFinalFaces(ss));
+ CustomData_from_bmeshpoly(&cgdm->dm.faceData, &cgdm->dm.polyData, &cgdm->dm.loopData, ccgSubSurf_getNumFinalFaces(ss));
else if (numCol && CustomData_number_of_layers(&cgdm->dm.faceData, CD_MCOL) != numCol)
- CustomData_from_bmeshpoly(&cgdm->dm.faceData, &cgdm->dm.polyData, &cgdm->dm.loopData, CCS_getNumFinalFaces(ss));
-
- CustomData_set_layer_flag(&cgdm->dm.faceData, CD_FLAGS, CD_FLAG_NOCOPY);
- CustomData_set_layer_flag(&cgdm->dm.edgeData, CD_FLAGS, CD_FLAG_NOCOPY);
+ CustomData_from_bmeshpoly(&cgdm->dm.faceData, &cgdm->dm.polyData, &cgdm->dm.loopData, ccgSubSurf_getNumFinalFaces(ss));
cgdm->dm.getMinMax = cgdm_getMinMax;
cgdm->dm.getNumVerts = cgdm_getNumVerts;
cgdm->dm.getNumTessFaces = cgdm_getNumTessFaces;
cgdm->dm.getNumFaces = cgdm_getNumTessFaces;
- cgdm->dm.newFaceIter = cgdm_newFaceIter;
+ cgdm->dm.getNumGrids = ccgDM_getNumGrids;
+ cgdm->dm.getGridSize = ccgDM_getGridSize;
+ cgdm->dm.getGridData = ccgDM_getGridData;
+ cgdm->dm.getGridAdjacency = ccgDM_getGridAdjacency;
+ cgdm->dm.getGridOffset = ccgDM_getGridOffset;
+ cgdm->dm.getPBVH = ccgDM_getPBVH;
+ cgdm->dm.newFaceIter = cgdm_newFaceIter;
cgdm->dm.getNumEdges = cgdm_getNumEdges;
cgdm->dm.getVert = cgdm_getFinalVert;
cgdm->dm.getEdge = cgdm_getFinalEdge;
@@ -2700,11 +2996,11 @@ static CCGDerivedMesh *getCCGDerivedMesh(CSubSurf *ss,
cgdm->dm.drawVerts = cgdm_drawVerts;
cgdm->dm.drawEdges = cgdm_drawEdges;
cgdm->dm.drawLooseEdges = cgdm_drawLooseEdges;
- cgdm->dm.drawFacesSolid = cgdm_drawFacesSolid;
+ cgdm->dm.drawFacesSolid = ccgDM_drawFacesSolid;
cgdm->dm.drawFacesColored = cgdm_drawFacesColored;
cgdm->dm.drawFacesTex = cgdm_drawFacesTex;
cgdm->dm.drawFacesGLSL = cgdm_drawFacesGLSL;
- cgdm->dm.drawMappedFaces = cgdm_drawMappedFaces;
+ cgdm->dm.drawMappedFaces = ccgDM_drawMappedFaces;
cgdm->dm.drawMappedFacesTex = cgdm_drawMappedFacesTex;
cgdm->dm.drawMappedFacesGLSL = cgdm_drawMappedFacesGLSL;
cgdm->dm.drawUVEdges = cgdm_drawUVEdges;
@@ -2718,39 +3014,39 @@ static CCGDerivedMesh *getCCGDerivedMesh(CSubSurf *ss,
cgdm->drawInteriorEdges = drawInteriorEdges;
cgdm->useSubsurfUv = useSubsurfUv;
- totvert = CCS_getNumVerts(ss);
+ totvert = ccgSubSurf_getNumVerts(ss);
cgdm->vertMap = MEM_mallocN(totvert * sizeof(*cgdm->vertMap), "vertMap");
- vi = CCS_getVertIterator(ss);
- for(; !CCVIter_isStopped(vi); CCVIter_next(vi)) {
- CCVert *v = CCVIter_getCurrent(vi);
+ vi = ccgSubSurf_getVertIterator(ss);
+ for(; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
+ CCGVert *v = ccgVertIterator_getCurrent(vi);
- cgdm->vertMap[GET_INT_FROM_POINTER(CCS_getVertVertHandle(v))].vert = v;
+ cgdm->vertMap[GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v))].vert = v;
}
- CCVIter_free(vi);
+ ccgVertIterator_free(vi);
- totedge = CCS_getNumEdges(ss);
+ totedge = ccgSubSurf_getNumEdges(ss);
cgdm->edgeMap = MEM_mallocN(totedge * sizeof(*cgdm->edgeMap), "edgeMap");
- ei = CCS_getEdgeIterator(ss);
- for(; !CCEIter_isStopped(ei); CCEIter_next(ei)) {
- CCEdge *e = CCEIter_getCurrent(ei);
+ ei = ccgSubSurf_getEdgeIterator(ss);
+ for(; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
+ CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
- cgdm->edgeMap[GET_INT_FROM_POINTER(CCS_getEdgeEdgeHandle(e))].edge = e;
+ cgdm->edgeMap[GET_INT_FROM_POINTER(ccgSubSurf_getEdgeEdgeHandle(e))].edge = e;
}
- totface = CCS_getNumFaces(ss);
+ totface = ccgSubSurf_getNumFaces(ss);
cgdm->faceMap = MEM_mallocN(totface * sizeof(*cgdm->faceMap), "faceMap");
- fi = CCS_getFaceIterator(ss);
- for(; !CCFIter_isStopped(fi); CCFIter_next(fi)) {
- CCFace *f = CCFIter_getCurrent(fi);
+ fi = ccgSubSurf_getFaceIterator(ss);
+ for(; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
+ CCGFace *f = ccgFaceIterator_getCurrent(fi);
- cgdm->faceMap[GET_INT_FROM_POINTER(CCS_getFaceFaceHandle(ss, f))].face = f;
+ cgdm->faceMap[GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(ss, f))].face = f;
}
- CCFIter_free(fi);
+ ccgFaceIterator_free(fi);
- cgdm->reverseFaceMap = MEM_callocN(sizeof(int)*CCS_getNumFinalFaces(ss), "reverseFaceMap");
+ cgdm->reverseFaceMap = MEM_callocN(sizeof(int)*ccgSubSurf_getNumFinalFaces(ss), "reverseFaceMap");
- edgeSize = CCS_getEdgeSize(ss);
- gridSize = CCS_getGridSize(ss);
+ edgeSize = ccgSubSurf_getEdgeSize(ss);
+ gridSize = ccgSubSurf_getGridSize(ss);
gridFaces = gridSize - 1;
gridSideVerts = gridSize - 2;
gridCuts = gridSize - 2;
@@ -2766,30 +3062,31 @@ static CCGDerivedMesh *getCCGDerivedMesh(CSubSurf *ss,
medge = dm->getEdgeArray(dm);
mface = dm->getTessFaceArray(dm);
- /*CDDM hack*/
mpoly = CustomData_get_layer(&dm->polyData, CD_MPOLY);
+ /*CDDM hack*/
+ edgeFlags = cgdm->edgeFlags = MEM_callocN(sizeof(short)*totedge, "faceFlags");
+ faceFlags = cgdm->faceFlags = MEM_callocN(sizeof(char)*2*totface, "faceFlags");
vertOrigIndex = DM_get_vert_data_layer(&cgdm->dm, CD_ORIGINDEX);
/*edgeOrigIndex = DM_get_edge_data_layer(&cgdm->dm, CD_ORIGINDEX);*/
faceOrigIndex = DM_get_tessface_data_layer(&cgdm->dm, CD_ORIGINDEX);
- faceFlags = DM_get_tessface_data_layer(&cgdm->dm, CD_FLAGS);
polyOrigIndex = DM_get_face_data_layer(&cgdm->dm, CD_ORIGINDEX);
- polyFlags = DM_get_face_data_layer(&cgdm->dm, CD_FLAGS);
if (!CustomData_has_layer(&cgdm->dm.faceData, CD_MCOL))
DM_add_tessface_layer(&cgdm->dm, CD_MCOL, CD_CALLOC, NULL);
mcol = DM_get_tessface_data_layer(&cgdm->dm, CD_MCOL);
+ has_edge_origindex = CustomData_has_layer(&cgdm->dm.edgeData, CD_ORIGINDEX);
faceNum = 0;
loopindex = loopindex2 = 0; //current loop index
for (index = 0; index < totface; index++) {
- CCFace *f = cgdm->faceMap[index].face;
- int numVerts = CCS_getFaceNumVerts(f);
+ CCGFace *f = cgdm->faceMap[index].face;
+ int numVerts = ccgSubSurf_getFaceNumVerts(f);
int numFinalEdges = numVerts * (gridSideEdges + gridInternalEdges);
- int mapIndex = cgdm_getFaceMapIndex(ss, f);
- int origIndex = GET_INT_FROM_POINTER(CCS_getFaceFaceHandle(ss, f));
+ int mapIndex = ccgDM_getFaceMapIndex(ss, f);
+ int origIndex = GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(ss, f));
int g2_wid = gridCuts+2;
float *w2;
int s, x, y;
@@ -2800,8 +3097,12 @@ static CCGDerivedMesh *getCCGDerivedMesh(CSubSurf *ss,
cgdm->faceMap[index].startEdge = edgeNum;
cgdm->faceMap[index].startFace = faceNum;
+ faceFlags[0] = mpoly[origIndex].flag;
+ faceFlags[1] = mpoly[origIndex].mat_nr;
+ faceFlags += 2;
+
/* set the face base vert */
- *((int*)CCS_getFaceUserData(ss, f)) = vertNum;
+ *((int*)ccgSubSurf_getFaceUserData(ss, f)) = vertNum;
BLI_array_empty(loopidx);
for (s=0; s<numVerts; s++) {
@@ -2811,10 +3112,10 @@ static CCGDerivedMesh *getCCGDerivedMesh(CSubSurf *ss,
BLI_array_empty(vertidx);
for(s = 0; s < numVerts; s++) {
- CCVert *v = CCS_getFaceVert(ss, f, s);
+ CCGVert *v = ccgSubSurf_getFaceVert(ss, f, s);
BLI_array_growone(vertidx);
- vertidx[s] = GET_INT_FROM_POINTER(CCS_getVertVertHandle(v));
+ vertidx[s] = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v));
}
@@ -2822,9 +3123,11 @@ static CCGDerivedMesh *getCCGDerivedMesh(CSubSurf *ss,
w2 = w; // + numVerts*(g2_wid-1)*(g2_wid-1); //numVerts*((g2_wid-1)*g2_wid+g2_wid-1);
DM_interp_vert_data(dm, &cgdm->dm, vertidx, w2,
numVerts, vertNum);
- if (vertOrigIndex)
+ if (vertOrigIndex) {
*vertOrigIndex = ORIGINDEX_NONE;
- ++vertOrigIndex;
+ ++vertOrigIndex;
+ }
+
++vertNum;
/*interpolate per-vert data*/
@@ -2834,9 +3137,11 @@ static CCGDerivedMesh *getCCGDerivedMesh(CSubSurf *ss,
DM_interp_vert_data(dm, &cgdm->dm, vertidx, w2,
numVerts, vertNum);
- if (vertOrigIndex)
+ if (vertOrigIndex) {
*vertOrigIndex = ORIGINDEX_NONE;
- ++vertOrigIndex;
+ ++vertOrigIndex;
+ }
+
++vertNum;
}
}
@@ -2849,17 +3154,22 @@ static CCGDerivedMesh *getCCGDerivedMesh(CSubSurf *ss,
DM_interp_vert_data(dm, &cgdm->dm, vertidx, w2,
numVerts, vertNum);
- if (vertOrigIndex)
+ if (vertOrigIndex) {
*vertOrigIndex = ORIGINDEX_NONE;
- ++vertOrigIndex;
+ ++vertOrigIndex;
+ }
+
++vertNum;
}
}
}
- for(i = 0; i < numFinalEdges; ++i)
- *(int *)DM_get_edge_data(&cgdm->dm, edgeNum + i,
- CD_ORIGINDEX) = ORIGINDEX_NONE;
+ if (has_edge_origindex) {
+ for(i = 0; i < numFinalEdges; ++i)
+ *(int *)DM_get_edge_data(&cgdm->dm, edgeNum + i,
+ CD_ORIGINDEX) = ORIGINDEX_NONE;
+ }
+
for (s=0; s<numVerts; s++) {
/*interpolate per-face data*/
for (y=0; y<gridFaces; y++) {
@@ -2892,86 +3202,88 @@ static CCGDerivedMesh *getCCGDerivedMesh(CSubSurf *ss,
&cgdm->dm.polyData, loopindex2-4, faceNum, faceNum, numTex, numCol);
/*set original index data*/
- *faceOrigIndex = origIndex;
- *polyOrigIndex = origIndex;
+ if (faceOrigIndex) {
+ *faceOrigIndex = origIndex;
+ faceOrigIndex++;
+ }
+ if (polyOrigIndex) {
+ *polyOrigIndex = origIndex;
+ polyOrigIndex++;
+ }
cgdm->reverseFaceMap[faceNum] = index;
- faceOrigIndex++;
- polyOrigIndex++;
faceNum++;
}
}
}
- polyFlags[0] = mpoly[origIndex].flag;
- polyFlags[1] = mpoly[origIndex].mat_nr;
- faceFlags[0] = polyFlags[0];
- faceFlags[1] = polyFlags[1];
-
- faceFlags += 4;
- polyFlags += 4;
edgeNum += numFinalEdges;
}
- edgeFlags = DM_get_edge_data_layer(&cgdm->dm, CD_FLAGS);
for(index = 0; index < totedge; ++index) {
- CCEdge *e = cgdm->edgeMap[index].edge;
+ CCGEdge *e = cgdm->edgeMap[index].edge;
int numFinalEdges = edgeSize - 1;
- int mapIndex = cgdm_getEdgeMapIndex(ss, e);
+ int mapIndex = ccgDM_getEdgeMapIndex(ss, e);
int x;
int vertIdx[2];
- int edgeIdx = GET_INT_FROM_POINTER(CCS_getEdgeEdgeHandle(e));
+ int edgeIdx = GET_INT_FROM_POINTER(ccgSubSurf_getEdgeEdgeHandle(e));
- CCVert *v;
- v = CCS_getEdgeVert0(e);
- vertIdx[0] = GET_INT_FROM_POINTER(CCS_getVertVertHandle(v));
- v = CCS_getEdgeVert1(e);
- vertIdx[1] = GET_INT_FROM_POINTER(CCS_getVertVertHandle(v));
+ CCGVert *v;
+ v = ccgSubSurf_getEdgeVert0(e);
+ vertIdx[0] = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v));
+ v = ccgSubSurf_getEdgeVert1(e);
+ vertIdx[1] = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v));
cgdm->edgeMap[index].startVert = vertNum;
cgdm->edgeMap[index].startEdge = edgeNum;
+ if(edgeIdx >= 0 && edgeFlags)
+ edgeFlags[edgeIdx] = medge[edgeIdx].flag;
+
/* set the edge base vert */
- *((int*)CCS_getEdgeUserData(ss, e)) = vertNum;
+ *((int*)ccgSubSurf_getEdgeUserData(ss, e)) = vertNum;
for(x = 1; x < edgeSize - 1; x++) {
float w[2];
w[1] = (float) x / (edgeSize - 1);
w[0] = 1 - w[1];
DM_interp_vert_data(dm, &cgdm->dm, vertIdx, w, 2, vertNum);
- *vertOrigIndex = ORIGINDEX_NONE;
- ++vertOrigIndex;
+ if (vertOrigIndex) {
+ *vertOrigIndex = ORIGINDEX_NONE;
+ ++vertOrigIndex;
+ }
++vertNum;
}
for(i = 0; i < numFinalEdges; ++i) {
- if(edgeIdx >= 0 && edgeFlags)
- edgeFlags[edgeNum + i] = medge[edgeIdx].flag;
-
- *(int *)DM_get_edge_data(&cgdm->dm, edgeNum + i,
+ if (has_edge_origindex) {
+ *(int *)DM_get_edge_data(&cgdm->dm, edgeNum + i,
CD_ORIGINDEX) = mapIndex;
+ }
}
edgeNum += numFinalEdges;
}
for(index = 0; index < totvert; ++index) {
- CCVert *v = cgdm->vertMap[index].vert;
- int mapIndex = cgdm_getVertMapIndex(cgdm->ss, v);
+ CCGVert *v = cgdm->vertMap[index].vert;
+ int mapIndex = ccgDM_getVertMapIndex(cgdm->ss, v);
int vidx;
- vidx = GET_INT_FROM_POINTER(CCS_getVertVertHandle(v));
+ vidx = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v));
cgdm->vertMap[index].startVert = vertNum;
/* set the vert base vert */
- *((int*) CCS_getVertUserData(ss, v)) = vertNum;
+ *((int*) ccgSubSurf_getVertUserData(ss, v)) = vertNum;
DM_copy_vert_data(dm, &cgdm->dm, vidx, vertNum, 1);
- *vertOrigIndex = mapIndex;
- ++vertOrigIndex;
+ if (vertOrigIndex) {
+ *vertOrigIndex = mapIndex;
+ ++vertOrigIndex;
+ }
++vertNum;
}
@@ -2990,207 +3302,15 @@ static CCGDerivedMesh *getCCGDerivedMesh(CSubSurf *ss,
cgdm_getFinalEdge((DerivedMesh*)cgdm, i, &medge2);
BLI_edgehash_insert(cgdm->ehash, medge2.v1, medge2.v2, SET_INT_IN_POINTER(i));
}
-#if 0
- for(index = 0; index < totface; ++index) {
- CCFace *f = cgdm->faceMap[index].face;
- int numVerts = CCS_getFaceNumVerts(f);
- int numFinalEdges = numVerts * (gridSideEdges + gridInternalEdges);
- int mapIndex = cgdm_getFaceMapIndex(ss, f);
- int origIndex = GET_INT_FROM_POINTER(CCS_getFaceFaceHandle(ss, f));
- FaceVertWeight *weight = (numVerts == 4) ? qweight : tweight;
- int S, x, y;
-
- cgdm->faceMap[index].startVert = vertNum;
- cgdm->faceMap[index].startEdge = edgeNum;
- cgdm->faceMap[index].startFace = faceNum;
- /* set the face base vert */
- *((int*)CCS_getFaceUserData(ss, f)) = vertNum;
- for(S = 0; S < numVerts; S++) {
- CCVert *v = CCS_getFaceVert(ss, f, S);
- BLI_array_growone(vertIdx);
-
- vertIdx[S] = GET_INT_FROM_POINTER(CCS_getVertVertHandle(v));
- }
-
- DM_interp_vert_data(dm, &cgdm->dm, vertIdx, weight[0][0],
- numVerts, vertNum);
- *vertOrigIndex = ORIGINDEX_NONE;
- ++vertOrigIndex;
- ++vertNum;
-
- for(S = 0; S < numVerts; S++) {
- int prevS = (S - 1 + numVerts) % numVerts;
- int nextS = (S + 1) % numVerts;
- int otherS = (numVerts == 4) ? (S + 2) % numVerts : 3;
-
- for(x = 1; x < gridFaces; x++) {
- float w[4];
-#if 0 //BMESH_TODO
- w[prevS] = weight[x][0][0];
- w[S] = weight[x][0][1];
- w[nextS] = weight[x][0][2];
- w[otherS] = weight[x][0][3];
- DM_interp_vert_data(dm, &cgdm->dm, vertIdx, w,
- numVerts, vertNum);
-#endif
- *vertOrigIndex = ORIGINDEX_NONE;
- ++vertOrigIndex;
- ++vertNum;
- }
- }
-
- for(S = 0; S < numVerts; S++) {
- int prevS = (S - 1 + numVerts) % numVerts;
- int nextS = (S + 1) % numVerts;
- int otherS = (numVerts == 4) ? (S + 2) % numVerts : 3;
- for(y = 1; y < gridFaces; y++) {
- for(x = 1; x < gridFaces; x++) {
- float w[4];
-#if 0 //BMESH_TODO
- w[prevS] = weight[y * gridFaces + x][0][0];
- w[S] = weight[y * gridFaces + x][0][1];
- w[nextS] = weight[y * gridFaces + x][0][2];
- w[otherS] = weight[y * gridFaces + x][0][3];
- DM_interp_vert_data(dm, &cgdm->dm, vertIdx, w,
- numVerts, vertNum);
-#endif
- *vertOrigIndex = ORIGINDEX_NONE;
- ++vertOrigIndex;
- ++vertNum;
- }
- }
- }
-
- for(i = 0; i < numFinalEdges; ++i)
- *(int *)DM_get_edge_data(&cgdm->dm, edgeNum + i,
- CD_ORIGINDEX) = ORIGINDEX_NONE;
-
- for(S = 0; S < numVerts; S++) {
- int prevS = (S - 1 + numVerts) % numVerts;
- int nextS = (S + 1) % numVerts;
- int otherS = (numVerts == 4) ? (S + 2) % numVerts : 3;
-
- weight = (numVerts == 4) ? qweight : tweight;
-
- for(y = 0; y < gridFaces; y++) {
- for(x = 0; x < gridFaces; x++) {
- FaceVertWeight w;
- int j;
-
-#if 1 //BMESH_TODO
- for(j = 0; j < 4; ++j) {
- w[j][prevS] = (*weight)[j][0];
- w[j][S] = (*weight)[j][1];
- w[j][nextS] = (*weight)[j][2];
- w[j][otherS] = (*weight)[j][3];
- }
-
- DM_interp_tessface_data(dm, &cgdm->dm, &origIndex, NULL,
- &w, 1, faceNum);
- weight++;
-#endif
-
- *faceOrigIndex = mapIndex;
-
- ++faceOrigIndex;
- ++faceNum;
- }
- }
- }
-
- faceFlags[index*4] = mface[origIndex].flag;
- faceFlags[index*4 + 1] = mface[origIndex].mat_nr;
-
- edgeNum += numFinalEdges;
- }
-
- if(useSubsurfUv) {
- CustomData *fdata = &cgdm->dm.faceData;
- CustomData *dmfdata = &dm->faceData;
- int numlayer = CustomData_number_of_layers(fdata, CD_MTFACE);
- int dmnumlayer = CustomData_number_of_layers(dmfdata, CD_MTFACE);
-
- for (i=0; i<numlayer && i<dmnumlayer; i++)
- set_subsurf_uv(ss, dm, &cgdm->dm, i);
- }
-
- edgeFlags = DM_get_edge_data_layer(&cgdm->dm, CD_FLAGS);
-
- for(index = 0; index < totedge; ++index) {
- CCEdge *e = cgdm->edgeMap[index].edge;
- int numFinalEdges = edgeSize - 1;
- int mapIndex = cgdm_getEdgeMapIndex(ss, e);
- int x;
- int vertIdx[2];
- int edgeIdx = GET_INT_FROM_POINTER(CCS_getEdgeEdgeHandle(e));
-
- CCVert *v;
- v = CCS_getEdgeVert0(e);
- vertIdx[0] = GET_INT_FROM_POINTER(CCS_getVertVertHandle(v));
- v = CCS_getEdgeVert1(e);
- vertIdx[1] = GET_INT_FROM_POINTER(CCS_getVertVertHandle(v));
-
- cgdm->edgeMap[index].startVert = vertNum;
- cgdm->edgeMap[index].startEdge = edgeNum;
-
- /* set the edge base vert */
- *((int*)CCS_getEdgeUserData(ss, e)) = vertNum;
-
- for(x = 1; x < edgeSize - 1; x++) {
- float w[2];
- w[1] = (float) x / (edgeSize - 1);
- w[0] = 1 - w[1];
- DM_interp_vert_data(dm, &cgdm->dm, vertIdx, w, 2, vertNum);
- *vertOrigIndex = ORIGINDEX_NONE;
- ++vertOrigIndex;
- ++vertNum;
- }
-
- for(i = 0; i < numFinalEdges; ++i) {
- if(edgeIdx >= 0 && edgeFlags)
- edgeFlags[edgeNum + i] = medge[edgeIdx].flag;
-
- *(int *)DM_get_edge_data(&cgdm->dm, edgeNum + i,
- CD_ORIGINDEX) = mapIndex;
- }
-
- edgeNum += numFinalEdges;
- }
-
- for(index = 0; index < totvert; ++index) {
- CCVert *v = cgdm->vertMap[index].vert;
- int mapIndex = cgdm_getVertMapIndex(cgdm->ss, v);
- int vertIdx;
-
- vertIdx = GET_INT_FROM_POINTER(CCS_getVertVertHandle(v));
-
- cgdm->vertMap[index].startVert = vertNum;
-
- /* set the vert base vert */
- *((int*) CCS_getVertUserData(ss, v)) = vertNum;
-
- DM_copy_vert_data(dm, &cgdm->dm, vertIdx, vertNum, 1);
-
- *vertOrigIndex = mapIndex;
- ++vertOrigIndex;
- ++vertNum;
- }
-
- MEM_freeN(qweight);
- MEM_freeN(tweight);
-
- BLI_array_free(vertIdx);
-#endif
return cgdm;
}
/***/
-struct DerivedMesh *subsurf_make_derived_from_derived_with_multires(
+struct DerivedMesh *subsurf_make_derived_from_derived(
struct DerivedMesh *dm,
struct SubsurfModifierData *smd,
- struct MultiresSubsurf *ms,
int useRenderParams, float (*vertCos)[3],
int isFinalCalc, int editMode)
{
@@ -3198,19 +3318,19 @@ struct DerivedMesh *subsurf_make_derived_from_derived_with_multires(
int useAging = smd->flags & eSubsurfModifierFlag_DebugIncr;
int useSubsurfUv = smd->flags & eSubsurfModifierFlag_SubsurfUv;
int drawInteriorEdges = !(smd->flags & eSubsurfModifierFlag_ControlEdges);
- DerivedMesh *result;
+ CCGDerivedMesh *result = NULL;
if(editMode) {
smd->emCache = _getSubSurf(smd->emCache, smd->levels, useAging, 0,
useSimple);
ss_sync_from_derivedmesh(smd->emCache, dm, vertCos, useSimple);
- return (DerivedMesh *)getCCGDerivedMesh(smd->emCache,
- drawInteriorEdges,
- useSubsurfUv, dm);
+ result = getCCGDerivedMesh(smd->emCache,
+ drawInteriorEdges,
+ useSubsurfUv, dm);
} else if(useRenderParams) {
/* Do not use cache in render mode. */
- CSubSurf *ss;
+ CCGSubSurf *ss;
int levels;
levels= smd->renderLevels; // XXX get_render_subsurf_level(&scene->r, smd->renderLevels);
@@ -3221,16 +3341,14 @@ struct DerivedMesh *subsurf_make_derived_from_derived_with_multires(
ss_sync_from_derivedmesh(ss, dm, vertCos, useSimple);
- result = ss_to_cdderivedmesh(ss, 0, drawInteriorEdges,
- useSubsurfUv, dm, ms);
+ result = getCCGDerivedMesh(ss,
+ drawInteriorEdges, useSubsurfUv, dm);
- CCS_free(ss);
-
- return result;
+ result->freeSS = 1;
} else {
int useIncremental = 1; //(smd->flags & eSubsurfModifierFlag_Incremental);
int useAging = smd->flags & eSubsurfModifierFlag_DebugIncr;
- CSubSurf *ss;
+ CCGSubSurf *ss;
/* It is quite possible there is a much better place to do this. It
* depends a bit on how rigourously we expect this function to never
@@ -3241,7 +3359,7 @@ struct DerivedMesh *subsurf_make_derived_from_derived_with_multires(
* comment that no one will read? Hmmm. - zr
*/
if(smd->emCache) {
- CCS_free(smd->emCache);
+ ccgSubSurf_free(smd->emCache);
smd->emCache = NULL;
}
@@ -3251,57 +3369,27 @@ struct DerivedMesh *subsurf_make_derived_from_derived_with_multires(
ss_sync_from_derivedmesh(ss, dm, vertCos, useSimple);
-
- return ss_to_cdderivedmesh(ss, 0, drawInteriorEdges,
- useSubsurfUv, dm, ms);
-
- /*return (DerivedMesh *)getCCGDerivedMesh(smd->mCache,
- drawInteriorEdges,
- useSubsurfUv, dm);*/
+ result = getCCGDerivedMesh(smd->mCache,
+ drawInteriorEdges,
+ useSubsurfUv, dm);
} else {
if (smd->mCache && isFinalCalc) {
- CCS_free(smd->mCache);
+ ccgSubSurf_free(smd->mCache);
smd->mCache = NULL;
}
ss = _getSubSurf(NULL, smd->levels, 0, 1, useSimple);
ss_sync_from_derivedmesh(ss, dm, vertCos, useSimple);
- /*smd->mCache = ss;
- result = (DerivedMesh *)getCCGDerivedMesh(smd->mCache,
- drawInteriorEdges,
- useSubsurfUv, dm);*/
-
- result = ss_to_cdderivedmesh(ss, 0, drawInteriorEdges,
- useSubsurfUv, dm, ms);
+ result = getCCGDerivedMesh(ss, drawInteriorEdges, useSubsurfUv, dm);
- CCS_free(ss);
-
- return result;
+ if(isFinalCalc)
+ smd->mCache = ss;
+ else
+ result->freeSS = 1;
}
}
-}
-
-struct DerivedMesh *subsurf_make_derived_from_derived(
- struct DerivedMesh *dm,
- struct SubsurfModifierData *smd,
- int useRenderParams, float (*vertCos)[3],
- int isFinalCalc, int editMode)
-{
- DerivedMesh *cddm = NULL, *result;
-
- if (!CDDM_Check(dm)) {
- cddm = CDDM_copy(dm, 0);
- dm = cddm;
- }
-
- result = subsurf_make_derived_from_derived_with_multires(dm, smd, NULL, useRenderParams, vertCos, isFinalCalc, editMode);
-
- if (cddm) {
- cddm->needsFree = 1;
- cddm->release(cddm);
- }
-
+
return result;
}
@@ -3312,19 +3400,19 @@ void subsurf_calculate_limit_positions(Mesh *me, float (*positions_r)[3])
* calculated vert positions is incorrect for the verts
* on the boundary of the mesh.
*/
- CSubSurf *ss = _getSubSurf(NULL, 1, 0, 1, 0);
+ CCGSubSurf *ss = _getSubSurf(NULL, 1, 0, 1, 0);
float edge_sum[3], face_sum[3];
- CCVertIterator *vi;
+ CCGVertIterator *vi;
DerivedMesh *dm = CDDM_from_mesh(me, NULL);
ss_sync_from_derivedmesh(ss, dm, NULL, 0);
- vi = CCS_getVertIterator(ss);
- for (; !CCVIter_isStopped(vi); CCVIter_next(vi)) {
- CCVert *v = CCVIter_getCurrent(vi);
- int idx = GET_INT_FROM_POINTER(CCS_getVertVertHandle(v));
- int N = CCS_getVertNumEdges(v);
- int numFaces = CCS_getVertNumFaces(v);
+ vi = ccgSubSurf_getVertIterator(ss);
+ for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
+ CCGVert *v = ccgVertIterator_getCurrent(vi);
+ int idx = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v));
+ int N = ccgSubSurf_getVertNumEdges(v);
+ int numFaces = ccgSubSurf_getVertNumFaces(v);
float *co;
int i;
@@ -3332,12 +3420,12 @@ void subsurf_calculate_limit_positions(Mesh *me, float (*positions_r)[3])
face_sum[0]= face_sum[1]= face_sum[2]= 0.0;
for (i=0; i<N; i++) {
- CCEdge *e = CCS_getVertEdge(v, i);
- add_v3_v3v3(edge_sum, edge_sum, CCS_getEdgeData(ss, e, 1));
+ CCGEdge *e = ccgSubSurf_getVertEdge(v, i);
+ add_v3_v3v3(edge_sum, edge_sum, ccgSubSurf_getEdgeData(ss, e, 1));
}
for (i=0; i<numFaces; i++) {
- CCFace *f = CCS_getVertFace(v, i);
- add_v3_v3v3(face_sum, face_sum, CCS_getFaceCenterData(f));
+ CCGFace *f = ccgSubSurf_getVertFace(v, i);
+ add_v3_v3v3(face_sum, face_sum, ccgSubSurf_getFaceCenterData(f));
}
/* ad-hoc correction for boundary vertices, to at least avoid them
@@ -3345,14 +3433,14 @@ void subsurf_calculate_limit_positions(Mesh *me, float (*positions_r)[3])
if(numFaces && numFaces != N)
mul_v3_fl(face_sum, (float)N/(float)numFaces);
- co = CCS_getVertData(ss, v);
+ co = ccgSubSurf_getVertData(ss, v);
positions_r[idx][0] = (co[0]*N*N + edge_sum[0]*4 + face_sum[0])/(N*(N+5));
positions_r[idx][1] = (co[1]*N*N + edge_sum[1]*4 + face_sum[1])/(N*(N+5));
positions_r[idx][2] = (co[2]*N*N + edge_sum[2]*4 + face_sum[2])/(N*(N+5));
}
- CCVIter_free(vi);
+ ccgVertIterator_free(vi);
- CCS_free(ss);
+ ccgSubSurf_free(ss);
dm->release(dm);
}
diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c
index 0171c58f2c6..818e6195049 100644
--- a/source/blender/blenkernel/intern/texture.c
+++ b/source/blender/blenkernel/intern/texture.c
@@ -518,7 +518,7 @@ void default_tex(Tex *tex)
/* ------------------------------------------------------------------------- */
-Tex *add_texture(char *name)
+Tex *add_texture(const char *name)
{
Tex *tex;
diff --git a/source/blender/blenkernel/intern/writeavi.c b/source/blender/blenkernel/intern/writeavi.c
index 7c58a4f9499..ec3d1185179 100644
--- a/source/blender/blenkernel/intern/writeavi.c
+++ b/source/blender/blenkernel/intern/writeavi.c
@@ -40,6 +40,7 @@
#include "BLI_blenlib.h"
#include "BKE_global.h"
+#include "BKE_report.h"
#include "BKE_utildefines.h"
#include "BKE_writeavi.h"
#include "AVI_avi.h"
@@ -127,7 +128,7 @@ void makeavistring (RenderData *rd, char *string)
}
}
-void start_avi(struct Scene *scene, RenderData *rd, int rectx, int recty)
+int start_avi(Scene *scene, RenderData *rd, int rectx, int recty, ReportList *reports)
{
int x, y;
char name[256];
@@ -153,10 +154,10 @@ void start_avi(struct Scene *scene, RenderData *rd, int rectx, int recty)
else format = AVI_FORMAT_MJPEG;
if (AVI_open_compress (name, avi, 1, format) != AVI_ERROR_NONE) {
- printf("cannot open or start AVI movie file");
+ BKE_report(reports, RPT_ERROR, "Cannot open or start AVI movie file.");
MEM_freeN (avi);
avi = NULL;
- return;
+ return 0;
}
AVI_set_compress_option (avi, AVI_OPTION_TYPE_MAIN, 0, AVI_OPTION_WIDTH, &x);
@@ -170,18 +171,17 @@ void start_avi(struct Scene *scene, RenderData *rd, int rectx, int recty)
/* avi->odd_fields= (rd->mode & R_ODDFIELD)?1:0; */
printf("Created avi: %s\n", name);
+ return 1;
}
-void append_avi(RenderData *rd, int frame, int *pixels, int rectx, int recty)
+int append_avi(RenderData *rd, int frame, int *pixels, int rectx, int recty, ReportList *reports)
{
unsigned int *rt1, *rt2, *rectot;
int x, y;
char *cp, rt;
- if (avi == NULL) {
- G.afbreek = 1;
- return;
- }
+ if (avi == NULL)
+ return 0;
/* note that libavi free's the buffer... stupid interface - zr */
rectot= MEM_mallocN(rectx*recty*sizeof(int), "rectot");
@@ -205,6 +205,8 @@ void append_avi(RenderData *rd, int frame, int *pixels, int rectx, int recty)
AVI_write_frame (avi, (frame-sframe), AVI_FORMAT_RGB32, rectot, rectx*recty*4);
// printf ("added frame %3d (frame %3d in avi): ", frame, frame-sframe);
+
+ return 1;
}
void end_avi(void)
@@ -215,3 +217,4 @@ void end_avi(void)
MEM_freeN (avi);
avi= NULL;
}
+
diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c
index 1953058fddf..417679417e4 100644
--- a/source/blender/blenkernel/intern/writeffmpeg.c
+++ b/source/blender/blenkernel/intern/writeffmpeg.c
@@ -52,23 +52,24 @@
#define snprintf _snprintf
#endif
-#include "BKE_writeffmpeg.h"
-
#include "MEM_guardedalloc.h"
+
+#include "DNA_scene_types.h"
+
#include "BLI_blenlib.h"
+#include "AUD_C-API.h" /* must be before BKE_sound.h for define */
+
#include "BKE_global.h"
#include "BKE_idprop.h"
+#include "BKE_main.h"
+#include "BKE_report.h"
+#include "BKE_sound.h"
+#include "BKE_writeffmpeg.h"
#include "IMB_imbuf_types.h"
#include "IMB_imbuf.h"
-#include "DNA_scene_types.h"
-
-#include "AUD_C-API.h"
-#include "BKE_sound.h"
-#include "BKE_main.h"
-
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
@@ -239,10 +240,10 @@ static const char** get_file_extensions(int format)
}
/* Write a frame to the output file */
-static void write_video_frame(RenderData *rd, AVFrame* frame)
+static int write_video_frame(RenderData *rd, AVFrame* frame, ReportList *reports)
{
int outsize = 0;
- int ret;
+ int ret, success= 1;
AVCodecContext* c = get_codec_from_stream(video_stream);
#ifdef FFMPEG_CODEC_TIME_BASE
frame->pts = rd->cfra - rd->sfra;
@@ -276,14 +277,17 @@ static void write_video_frame(RenderData *rd, AVFrame* frame)
packet.size = outsize;
ret = av_interleaved_write_frame(outfile, &packet);
} else ret = 0;
+
if (ret != 0) {
- G.afbreek = 1;
- //XXX error("Error writing frame");
+ success= 0;
+ BKE_report(reports, RPT_ERROR, "Error writing frame.");
}
+
+ return success;
}
/* read and encode a frame of audio from the buffer */
-static AVFrame* generate_video_frame(uint8_t* pixels)
+static AVFrame* generate_video_frame(uint8_t* pixels, ReportList *reports)
{
uint8_t* rendered_frame;
@@ -295,8 +299,7 @@ static AVFrame* generate_video_frame(uint8_t* pixels)
if (c->pix_fmt != PIX_FMT_BGR32) {
rgb_frame = alloc_picture(PIX_FMT_BGR32, width, height);
if (!rgb_frame) {
- G.afbreek=1;
- //XXX error("Couldn't allocate temporary frame");
+ BKE_report(reports, RPT_ERROR, "Couldn't allocate temporary frame.");
return NULL;
}
} else {
@@ -613,7 +616,7 @@ static AVStream* alloc_audio_stream(RenderData *rd, int codec_id, AVFormatContex
}
/* essential functions -- start, append, end */
-static void start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty)
+static int start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty, ReportList *reports)
{
/* Handle to the output file */
AVFormatContext* of;
@@ -648,22 +651,19 @@ static void start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty)
exts = get_file_extensions(ffmpeg_type);
if (!exts) {
- G.afbreek = 1; /* Abort render */
- //XXX error("No valid formats found");
- return;
+ BKE_report(reports, RPT_ERROR, "No valid formats found.");
+ return 0;
}
fmt = guess_format(NULL, exts[0], NULL);
if (!fmt) {
- G.afbreek = 1; /* Abort render */
- //XXX error("No valid formats found");
- return;
+ BKE_report(reports, RPT_ERROR, "No valid formats found.");
+ return 0;
}
of = av_alloc_format_context();
if (!of) {
- G.afbreek = 1;
- //XXX error("Error opening output file");
- return;
+ BKE_report(reports, RPT_ERROR, "Error opening output file");
+ return 0;
}
of->oformat = fmt;
@@ -711,22 +711,16 @@ static void start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty)
}
if (fmt->video_codec == CODEC_ID_DVVIDEO) {
if (rectx != 720) {
- G.afbreek = 1;
- //XXX error("Render width has to be 720 pixels for DV!");
- return;
+ BKE_report(reports, RPT_ERROR, "Render width has to be 720 pixels for DV!");
+ return 0;
}
if (rd->frs_sec != 25 && recty != 480) {
- G.afbreek = 1;
- //XXX error("Render height has to be 480 pixels "
- // "for DV-NTSC!");
- return;
-
+ BKE_report(reports, RPT_ERROR, "Render height has to be 480 pixels for DV-NTSC!");
+ return 0;
}
if (rd->frs_sec == 25 && recty != 576) {
- G.afbreek = 1;
- //XXX error("Render height has to be 576 pixels "
- // "for DV-PAL!");
- return;
+ BKE_report(reports, RPT_ERROR, "Render height has to be 576 pixels for DV-PAL!");
+ return 0;
}
}
@@ -735,46 +729,42 @@ static void start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty)
if (ffmpeg_type == FFMPEG_DV) {
fmt->audio_codec = CODEC_ID_PCM_S16LE;
if (ffmpeg_multiplex_audio && rd->ffcodecdata.audio_mixrate != 48000) {
- G.afbreek = 1;
- //XXX error("FFMPEG only supports 48khz / stereo "
- // "audio for DV!");
- return;
+ BKE_report(reports, RPT_ERROR, "FFMPEG only supports 48khz / stereo audio for DV!");
+ return 0;
}
}
video_stream = alloc_video_stream(rd, fmt->video_codec, of, rectx, recty);
+ printf("alloc video stream %p\n", video_stream);
if (!video_stream) {
- G.afbreek = 1;
- //XXX error("Error initializing video stream");
- return;
+ BKE_report(reports, RPT_ERROR, "Error initializing video stream.");
+ return 0;
}
if (ffmpeg_multiplex_audio) {
audio_stream = alloc_audio_stream(rd, fmt->audio_codec, of);
if (!audio_stream) {
- G.afbreek = 1;
- //XXX error("Error initializing audio stream");
- return;
+ BKE_report(reports, RPT_ERROR, "Error initializing audio stream.");
+ return 0;
}
//XXX audiostream_play(SFRA, 0, 1);
}
if (av_set_parameters(of, NULL) < 0) {
- G.afbreek = 1;
- //XXX error("Error setting output parameters");
- return;
+ BKE_report(reports, RPT_ERROR, "Error setting output parameters.");
+ return 0;
}
if (!(fmt->flags & AVFMT_NOFILE)) {
if (url_fopen(&of->pb, name, URL_WRONLY) < 0) {
- G.afbreek = 1;
- //
- //XXX error("Could not open file for writing");
- return;
+ BKE_report(reports, RPT_ERROR, "Could not open file for writing.");
+ return 0;
}
}
av_write_header(of);
outfile = of;
dump_format(of, 0, name, 1);
+
+ return 1;
}
/* **********************************************************************
@@ -831,11 +821,13 @@ static void makeffmpegstring(RenderData* rd, char* string) {
}
}
-void start_ffmpeg(struct Scene *scene, RenderData *rd, int rectx, int recty)
+int start_ffmpeg(struct Scene *scene, RenderData *rd, int rectx, int recty, ReportList *reports)
{
+ int success;
+
ffmpeg_autosplit_count = 0;
- start_ffmpeg_impl(rd, rectx, recty);
+ success = start_ffmpeg_impl(rd, rectx, recty, reports);
if(ffmpeg_multiplex_audio && audio_stream)
{
@@ -846,6 +838,8 @@ void start_ffmpeg(struct Scene *scene, RenderData *rd, int rectx, int recty)
specs.rate = rd->ffcodecdata.audio_mixrate;
audio_mixdown_device = sound_mixdown(scene, specs, rd->sfra, rd->efra, rd->ffcodecdata.audio_volume);
}
+
+ return success;
}
void end_ffmpeg(void);
@@ -870,22 +864,29 @@ static void write_audio_frames()
}
}
-void append_ffmpeg(RenderData *rd, int frame, int *pixels, int rectx, int recty)
+int append_ffmpeg(RenderData *rd, int frame, int *pixels, int rectx, int recty, ReportList *reports)
{
+ AVFrame* avframe;
+ int success;
+
fprintf(stderr, "Writing frame %i, "
"render width=%d, render height=%d\n", frame,
rectx, recty);
write_audio_frames();
- write_video_frame(rd, generate_video_frame((unsigned char*) pixels));
+
+ avframe= generate_video_frame((unsigned char*) pixels, reports);
+ success= (avframe && write_video_frame(rd, avframe, reports));
if (ffmpeg_autosplit) {
if (url_ftell(OUTFILE_PB) > FFMPEG_AUTOSPLIT_SIZE) {
end_ffmpeg();
ffmpeg_autosplit_count++;
- start_ffmpeg_impl(rd, rectx, recty);
+ success &= start_ffmpeg_impl(rd, rectx, recty, reports);
}
}
+
+ return success;
}
@@ -914,6 +915,7 @@ void end_ffmpeg(void)
if (video_stream && get_codec_from_stream(video_stream)) {
avcodec_close(get_codec_from_stream(video_stream));
video_stream = 0;
+ printf("zero video stream %p\n", video_stream);
}
diff --git a/source/blender/blenkernel/intern/writeframeserver.c b/source/blender/blenkernel/intern/writeframeserver.c
index 0780cd0dc48..20d858fffeb 100644
--- a/source/blender/blenkernel/intern/writeframeserver.c
+++ b/source/blender/blenkernel/intern/writeframeserver.c
@@ -48,6 +48,7 @@
#include "DNA_userdef_types.h"
#include "BKE_global.h"
+#include "BKE_report.h"
#include "IMB_imbuf_types.h"
#include "IMB_imbuf.h"
@@ -101,48 +102,45 @@ static int closesocket(int fd)
}
#endif
-void start_frameserver(struct Scene *scene, RenderData *rd, int rectx, int recty)
+int start_frameserver(struct Scene *scene, RenderData *rd, int rectx, int recty, ReportList *reports)
{
- struct sockaddr_in addr;
+ struct sockaddr_in addr;
int arg = 1;
if (!startup_socket_system()) {
- G.afbreek = 1;
- //XXX error("Can't startup socket system");
- return;
+ BKE_report(reports, RPT_ERROR, "Can't startup socket system");
+ return 0;
}
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
shutdown_socket_system();
- G.afbreek = 1; /* Abort render */
- //XXX error("Can't open socket");
- return;
- }
+ BKE_report(reports, RPT_ERROR, "Can't open socket");
+ return 0;
+ }
- setsockopt(sock, SOL_SOCKET, SO_REUSEADDR,
- (char*) &arg, sizeof(arg));
+ setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*) &arg, sizeof(arg));
addr.sin_family = AF_INET;
- addr.sin_port = htons(U.frameserverport);
- addr.sin_addr.s_addr = INADDR_ANY;
+ addr.sin_port = htons(U.frameserverport);
+ addr.sin_addr.s_addr = INADDR_ANY;
if (bind(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
shutdown_socket_system();
- G.afbreek = 1; /* Abort render */
- //XXX error("Can't bind to socket");
- return;
- }
+ BKE_report(reports, RPT_ERROR, "Can't bind to socket");
+ return 0;
+ }
- if (listen(sock, SOMAXCONN) < 0) {
+ if (listen(sock, SOMAXCONN) < 0) {
shutdown_socket_system();
- G.afbreek = 1; /* Abort render */
- //XXX error("Can't establish listen backlog");
- return;
- }
+ BKE_report(reports, RPT_ERROR, "Can't establish listen backlog");
+ return 0;
+ }
connsock = -1;
render_width = rectx;
render_height = recty;
+
+ return 1;
}
static char index_page[]
@@ -249,7 +247,7 @@ static int handle_request(RenderData *rd, char * req)
return -1;
}
-int frameserver_loop(RenderData *rd)
+int frameserver_loop(RenderData *rd, ReportList *reports)
{
fd_set readfds;
struct timeval tv;
@@ -355,7 +353,7 @@ static void serve_ppm(int *pixels, int rectx, int recty)
connsock = -1;
}
-void append_frameserver(RenderData *rd, int frame, int *pixels, int rectx, int recty)
+int append_frameserver(RenderData *rd, int frame, int *pixels, int rectx, int recty, ReportList *reports)
{
fprintf(stderr, "Serving frame: %d\n", frame);
if (write_ppm) {
@@ -365,6 +363,8 @@ void append_frameserver(RenderData *rd, int frame, int *pixels, int rectx, int r
closesocket(connsock);
connsock = -1;
}
+
+ return 0;
}
void end_frameserver()
diff --git a/source/blender/blenlib/BLI_blenlib.h b/source/blender/blenlib/BLI_blenlib.h
index cb5f68ed1e0..70f15f0f3af 100644
--- a/source/blender/blenlib/BLI_blenlib.h
+++ b/source/blender/blenlib/BLI_blenlib.h
@@ -78,7 +78,7 @@ extern "C" {
#include "BLI_string.h"
-#include "BLI_util.h"
+#include "BLI_path_util.h"
#include "BLI_storage.h"
diff --git a/source/blender/blenlib/BLI_listbase.h b/source/blender/blenlib/BLI_listbase.h
index 21b4c83bd88..bd735888f95 100644
--- a/source/blender/blenlib/BLI_listbase.h
+++ b/source/blender/blenlib/BLI_listbase.h
@@ -55,7 +55,7 @@ void BLI_sortlist(struct ListBase *listbase, int (*cmp)(void *, void *));
void BLI_freelist(struct ListBase *listbase);
int BLI_countlist(struct ListBase *listbase);
void BLI_freelinkN(struct ListBase *listbase, void *vlink);
-void BLI_duplicatelist(struct ListBase *list1, struct ListBase *list2); /* copy from 2 to 1 */
+void BLI_duplicatelist(struct ListBase *list1, const struct ListBase *list2);
/* create a generic list node containing link to provided data */
struct LinkData *BLI_genericNodeN(void *data);
diff --git a/source/blender/blenlib/BLI_math_base.h b/source/blender/blenlib/BLI_math_base.h
index 4e845ae35d9..af301386920 100644
--- a/source/blender/blenlib/BLI_math_base.h
+++ b/source/blender/blenlib/BLI_math_base.h
@@ -148,6 +148,8 @@ float power_of_2(float f);
float shell_angle_to_dist(float angle);
+double double_round(double x, int ndigits);
+
#ifdef __cplusplus
}
#endif
diff --git a/source/blender/blenlib/BLI_math_color.h b/source/blender/blenlib/BLI_math_color.h
index b2d14f3ecbd..7444e01c3a6 100644
--- a/source/blender/blenlib/BLI_math_color.h
+++ b/source/blender/blenlib/BLI_math_color.h
@@ -32,10 +32,16 @@
extern "C" {
#endif
-#define BLI_CS_SMPTE 0
-#define BLI_CS_REC709 1
-#define BLI_CS_CIE 2
+/* primaries */
+#define BLI_XYZ_SMPTE 0
+#define BLI_XYZ_REC709_SRGB 1
+#define BLI_XYZ_CIE 2
+/* built-in profiles */
+#define BLI_PR_NONE 0
+#define BLI_PR_SRGB 1
+#define BLI_PR_REC709 2
+
/******************* Conversion to RGB ********************/
void hsv_to_rgb(float h, float s, float v, float *r, float *g, float *b);
@@ -53,6 +59,16 @@ void rgb_to_hsv(float r, float g, float b, float *lh, float *ls, float *lv);
unsigned int rgb_to_cpack(float r, float g, float b);
unsigned int hsv_to_cpack(float h, float s, float v);
+/***************** Profile Transformations ********************/
+
+void gamma_correct(float *c, float gamma);
+float rec709_to_linearrgb(float c);
+float linearrgb_to_rec709(float c);
+float srgb_to_linearrgb(float c);
+float linearrgb_to_srgb(float c);
+void srgb_to_linearrgb_v3_v3(float *col_to, float *col_from);
+void linearrgb_to_srgb_v3_v3(float *col_to, float *col_from);
+
/************************** Other *************************/
int constrain_rgb(float *r, float *g, float *b);
diff --git a/source/blender/blenlib/BLI_math_geom.h b/source/blender/blenlib/BLI_math_geom.h
index d54be9d5e03..49d335f6c5c 100644
--- a/source/blender/blenlib/BLI_math_geom.h
+++ b/source/blender/blenlib/BLI_math_geom.h
@@ -85,6 +85,8 @@ int isect_ray_tri_v3(float p1[3], float d[3],
float v0[3], float v1[3], float v2[3], float *lambda, float *uv);
int isect_ray_tri_threshold_v3(float p1[3], float d[3],
float v0[3], float v1[3], float v2[3], float *lambda, float *uv, float threshold);
+int isect_ray_tri_epsilon_v3(float p1[3], float d[3],
+ float v0[3], float v1[3], float v2[3], float *lambda, float *uv, float epsilon);
/* point in polygon */
int isect_point_tri_v2(float p[2], float a[2], float b[2], float c[2]);
@@ -148,6 +150,12 @@ void sum_or_add_vertex_tangent(void *arena, VertexTangent **vtang,
void tangent_from_uv(float *uv1, float *uv2, float *uv3,
float *co1, float *co2, float *co3, float *n, float *tang);
+/********************************* vector clouds******************************/
+
+
+void vcloud_estimate_transform(int list_size, float (*pos)[3], float *weight,float (*rpos)[3], float *rweight,
+ float lloc[3],float rloc[3],float lrot[3][3],float lscale[3][3]);
+
#ifdef __cplusplus
}
#endif
diff --git a/source/blender/blenlib/BLI_math_matrix.h b/source/blender/blenlib/BLI_math_matrix.h
index 53476e4d03c..5667fb79332 100644
--- a/source/blender/blenlib/BLI_math_matrix.h
+++ b/source/blender/blenlib/BLI_math_matrix.h
@@ -82,6 +82,7 @@ void mul_m4_v4(float M[4][4], float r[3]);
void mul_project_m4_v4(float M[4][4], float r[3]);
void mul_m3_v3(float M[3][3], float r[3]);
+void mul_v3_m3v3(float r[3], float M[3][3], float a[3]);
void mul_transposed_m3_v3(float M[3][3], float r[3]);
void mul_m3_v3_double(float M[3][3], double r[3]);
diff --git a/source/blender/blenlib/BLI_math_vector.h b/source/blender/blenlib/BLI_math_vector.h
index e21c3800acc..e915a9a85f3 100644
--- a/source/blender/blenlib/BLI_math_vector.h
+++ b/source/blender/blenlib/BLI_math_vector.h
@@ -54,6 +54,9 @@ MINLINE void zero_v3(float r[3]);
MINLINE void copy_v2_v2(float r[2], float a[2]);
MINLINE void copy_v3_v3(float r[3], float a[3]);
+MINLINE void swap_v2_v2(float a[2], float b[2]);
+MINLINE void swap_v3_v3(float a[3], float b[3]);
+
/********************************* Arithmetic ********************************/
MINLINE void add_v2_v2(float r[2], float a[2]);
@@ -72,6 +75,11 @@ MINLINE void mul_v3_v3fl(float r[3], float a[3], float f);
MINLINE void mul_v3_v3(float r[3], float a[3]);
MINLINE void mul_v3_v3v3(float r[3], float a[3], float b[3]);
+MINLINE void madd_v3_v3fl(float r[3], float a[3], float f);
+MINLINE void madd_v3_v3v3(float r[3], float a[3], float b[3]);
+MINLINE void madd_v3_v3v3fl(float r[3], float a[3], float b[3], float f);
+MINLINE void madd_v3_v3v3v3(float r[3], float a[3], float b[3], float c[3]);
+
MINLINE void negate_v3(float r[3]);
MINLINE void negate_v3_v3(float r[3], float a[3]);
@@ -123,6 +131,8 @@ float angle_normalized_v2v2(float a[2], float b[2]);
float angle_v3v3(float a[2], float b[2]);
float angle_v3v3v3(float a[2], float b[2], float c[2]);
float angle_normalized_v3v3(float a[3], float b[3]);
+void angle_tri_v3(float angles[3], const float v1[3], const float v2[3], const float v3[3]);
+void angle_quad_v3(float angles[4], const float v1[3], const float v2[3], const float v3[3], const float v4[3]);
/********************************* Geometry **********************************/
@@ -137,8 +147,8 @@ void print_v2(char *str, float a[2]);
void print_v3(char *str, float a[3]);
void print_v4(char *str, float a[4]);
-void normal_short_to_float_v3(float r[3], short n[3]);
-void normal_float_to_short_v3(short r[3], float n[3]);
+MINLINE void normal_short_to_float_v3(float r[3], short n[3]);
+MINLINE void normal_float_to_short_v3(short r[3], float n[3]);
void minmax_v3_v3v3(float r[3], float min[3], float max[3]);
diff --git a/source/blender/blenlib/BLI_util.h b/source/blender/blenlib/BLI_path_util.h
index 7642b71eea0..ca483903d46 100644
--- a/source/blender/blenlib/BLI_util.h
+++ b/source/blender/blenlib/BLI_path_util.h
@@ -61,7 +61,7 @@ void BLI_split_dirfile_basic(const char *string, char *dir, char *file);
void BLI_join_dirfile(char *string, const char *dir, const char *file);
void BLI_getlastdir(const char* dir, char *last, int maxlen);
int BLI_testextensie(const char *str, const char *ext);
-void BLI_uniquename(struct ListBase *list, void *vlink, char defname[], char delim, short name_offs, short len);
+void BLI_uniquename(struct ListBase *list, void *vlink, const char defname[], char delim, short name_offs, short len);
void BLI_newname(char * name, int add);
int BLI_stringdec(char *string, char *kop, char *start, unsigned short *numlen);
void BLI_stringenc(char *string, char *kop, char *start, unsigned short numlen, int pic);
diff --git a/source/blender/blenlib/BLI_pbvh.h b/source/blender/blenlib/BLI_pbvh.h
new file mode 100644
index 00000000000..148d9507c14
--- /dev/null
+++ b/source/blender/blenlib/BLI_pbvh.h
@@ -0,0 +1,219 @@
+/**
+ * A BVH for high poly meshes.
+ *
+ * $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.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef BLI_PBVH_H
+#define BLI_PBVH_H
+
+struct MFace;
+struct MVert;
+struct DMGridAdjacency;
+struct DMGridData;
+struct PBVH;
+struct PBVHNode;
+struct ListBase;
+
+typedef struct PBVH PBVH;
+typedef struct PBVHNode PBVHNode;
+
+/* Callbacks */
+
+/* returns 1 if the search should continue from this node, 0 otherwise */
+typedef int (*BLI_pbvh_SearchCallback)(PBVHNode *node, void *data);
+
+typedef void (*BLI_pbvh_HitCallback)(PBVHNode *node, void *data);
+
+/* Building */
+
+PBVH *BLI_pbvh_new(void);
+void BLI_pbvh_build_mesh(PBVH *bvh, struct MFace *faces, struct MVert *verts,
+ int totface, int totvert);
+void BLI_pbvh_build_grids(PBVH *bvh, struct DMGridData **grids,
+ struct DMGridAdjacency *gridadj, int totgrid,
+ int gridsize, void **gridfaces);
+void BLI_pbvh_free(PBVH *bvh);
+
+/* Hierarchical Search in the BVH, two methods:
+ * for each hit calling a callback
+ * gather nodes in an array (easy to multithread) */
+
+void BLI_pbvh_search_callback(PBVH *bvh,
+ BLI_pbvh_SearchCallback scb, void *search_data,
+ BLI_pbvh_HitCallback hcb, void *hit_data);
+
+void BLI_pbvh_search_gather(PBVH *bvh,
+ BLI_pbvh_SearchCallback scb, void *search_data,
+ PBVHNode ***array, int *tot);
+
+/* Raycast
+ the hit callback is called for all leaf nodes intersecting the ray;
+ it's up to the callback to find the primitive within the leaves that is
+ hit first */
+
+void BLI_pbvh_raycast(PBVH *bvh, BLI_pbvh_HitCallback cb, void *data,
+ float ray_start[3], float ray_normal[3], int original);
+int BLI_pbvh_node_raycast(PBVH *bvh, PBVHNode *node, float (*origco)[3],
+ float ray_start[3], float ray_normal[3], float *dist);
+
+/* Drawing */
+
+void BLI_pbvh_node_draw(PBVHNode *node, void *data);
+int BLI_pbvh_node_planes_contain_AABB(PBVHNode *node, void *data);
+void BLI_pbvh_draw(PBVH *bvh, float (*planes)[4], float (*face_nors)[3]);
+
+/* Node Access */
+
+typedef enum {
+ PBVH_Leaf = 1,
+
+ PBVH_UpdateNormals = 2,
+ PBVH_UpdateBB = 4,
+ PBVH_UpdateOriginalBB = 8,
+ PBVH_UpdateDrawBuffers = 16,
+ PBVH_UpdateRedraw = 32
+} PBVHNodeFlags;
+
+void BLI_pbvh_node_mark_update(PBVHNode *node);
+
+void BLI_pbvh_node_get_grids(PBVH *bvh, PBVHNode *node,
+ int **grid_indices, int *totgrid, int *maxgrid, int *gridsize,
+ struct DMGridData ***griddata, struct DMGridAdjacency **gridadj);
+void BLI_pbvh_node_num_verts(PBVH *bvh, PBVHNode *node,
+ int *uniquevert, int *totvert);
+void BLI_pbvh_node_get_verts(PBVH *bvh, PBVHNode *node,
+ int **vert_indices, struct MVert **verts);
+
+void BLI_pbvh_node_get_BB(PBVHNode *node, float bb_min[3], float bb_max[3]);
+void BLI_pbvh_node_get_original_BB(PBVHNode *node, float bb_min[3], float bb_max[3]);
+
+/* Update Normals/Bounding Box/Draw Buffers/Redraw and clear flags */
+
+void BLI_pbvh_update(PBVH *bvh, int flags, float (*face_nors)[3]);
+void BLI_pbvh_redraw_BB(PBVH *bvh, float bb_min[3], float bb_max[3]);
+void BLI_pbvh_get_grid_updates(PBVH *bvh, int clear, void ***gridfaces, int *totface);
+
+/* Vertex Iterator */
+
+/* this iterator has quite a lot of code, but it's designed to:
+ - allow the compiler to eliminate dead code and variables
+ - spend most of the time in the relatively simple inner loop */
+
+#define PBVH_ITER_ALL 0
+#define PBVH_ITER_UNIQUE 1
+
+typedef struct PBVHVertexIter {
+ /* iteration */
+ int g;
+ int width;
+ int height;
+ int skip;
+ int gx;
+ int gy;
+ int i;
+
+ /* grid */
+ struct DMGridData **grids;
+ struct DMGridData *grid;
+ int *grid_indices;
+ int totgrid;
+ int gridsize;
+
+ /* mesh */
+ struct MVert *mverts;
+ int totvert;
+ int *vert_indices;
+
+ /* result: these are all computed in the macro, but we assume
+ that compiler optimizations will skip the ones we don't use */
+ struct MVert *mvert;
+ float *co;
+ short *no;
+ float *fno;
+} PBVHVertexIter;
+
+#define BLI_pbvh_vertex_iter_begin(bvh, node, vi, mode) \
+ { \
+ struct DMGridData **grids; \
+ struct MVert *verts; \
+ int *grid_indices, totgrid, gridsize, *vert_indices, uniq_verts, totvert; \
+ \
+ memset(&vi, 0, sizeof(PBVHVertexIter)); \
+ \
+ BLI_pbvh_node_get_grids(bvh, node, &grid_indices, &totgrid, NULL, &gridsize, &grids, NULL); \
+ BLI_pbvh_node_num_verts(bvh, node, &uniq_verts, &totvert); \
+ BLI_pbvh_node_get_verts(bvh, node, &vert_indices, &verts); \
+ \
+ vi.grids= grids; \
+ vi.grid_indices= grid_indices; \
+ vi.totgrid= (grids)? totgrid: 1; \
+ vi.gridsize= gridsize; \
+ \
+ if(mode == PBVH_ITER_ALL) \
+ vi.totvert = totvert; \
+ else \
+ vi.totvert= uniq_verts; \
+ vi.vert_indices= vert_indices; \
+ vi.mverts= verts; \
+ }\
+ \
+ for(vi.i=0, vi.g=0; vi.g<vi.totgrid; vi.g++) { \
+ if(vi.grids) { \
+ vi.width= vi.gridsize; \
+ vi.height= vi.gridsize; \
+ vi.grid= vi.grids[vi.grid_indices[vi.g]]; \
+ vi.skip= 0; \
+ \
+ /*if(mode == PVBH_ITER_UNIQUE) { \
+ vi.grid += subm->grid.offset; \
+ vi.skip= subm->grid.skip; \
+ vi.grid -= skip; \
+ }*/ \
+ } \
+ else { \
+ vi.width= vi.totvert; \
+ vi.height= 1; \
+ } \
+ \
+ for(vi.gy=0; vi.gy<vi.height; vi.gy++) { \
+ if(vi.grid) vi.grid += vi.skip; \
+ \
+ for(vi.gx=0; vi.gx<vi.width; vi.gx++, vi.i++) { \
+ if(vi.grid) { \
+ vi.co= vi.grid->co; \
+ vi.fno= vi.grid->no; \
+ vi.grid++; \
+ } \
+ else { \
+ vi.mvert= &vi.mverts[vi.vert_indices[vi.gx]]; \
+ vi.co= vi.mvert->co; \
+ vi.no= vi.mvert->no; \
+ } \
+
+#define BLI_pbvh_vertex_iter_end \
+ } \
+ } \
+ }
+
+
+#endif /* BLI_PBVH_H */
+
diff --git a/source/blender/blenlib/CMakeLists.txt b/source/blender/blenlib/CMakeLists.txt
index 4ed9eb4b007..00a5440bc75 100644
--- a/source/blender/blenlib/CMakeLists.txt
+++ b/source/blender/blenlib/CMakeLists.txt
@@ -28,6 +28,7 @@ FILE(GLOB SRC intern/*.c)
SET(INC
. ../makesdna ../blenkernel ../../../intern/guardedalloc ../include
+ ../gpu
${FREETYPE_INCLUDE_DIRS}
${ZLIB_INC}
)
diff --git a/source/blender/blenlib/SConscript b/source/blender/blenlib/SConscript
index fc586de5085..30c8e4dad50 100644
--- a/source/blender/blenlib/SConscript
+++ b/source/blender/blenlib/SConscript
@@ -4,10 +4,11 @@ Import ('env')
sources = env.Glob('intern/*.c')
cflags=''
-incs = '. ../makesdna ../blenkernel #/intern/guardedalloc ../editors/include'
+incs = '. ../makesdna ../blenkernel #/intern/guardedalloc ../editors/include ../gpu '
+incs += ' ../windowmanager #/extern/glew/include'
incs += ' ' + env['BF_FREETYPE_INC']
incs += ' ' + env['BF_ZLIB_INC']
-defs = ''
+defs = 'GLEW_STATIC'
if env['OURPLATFORM'] == 'linux2':
cflags='-pthread'
diff --git a/source/blender/blenlib/intern/BLI_bfile.c b/source/blender/blenlib/intern/BLI_bfile.c
index d9f6c8ad96f..8e3235bbf23 100644
--- a/source/blender/blenlib/intern/BLI_bfile.c
+++ b/source/blender/blenlib/intern/BLI_bfile.c
@@ -41,7 +41,7 @@
#include "MEM_guardedalloc.h"
#include "BKE_utildefines.h"
#include "BKE_blender.h"
-#include "BLI_util.h"
+#include "BLI_path_util.h"
#include "BLI_fileops.h"
#include "BLI_storage.h"
#include "BLI_bfile.h"
diff --git a/source/blender/blenlib/intern/Makefile b/source/blender/blenlib/intern/Makefile
index f729a4e3fe0..d8aed3ac0ed 100644
--- a/source/blender/blenlib/intern/Makefile
+++ b/source/blender/blenlib/intern/Makefile
@@ -50,6 +50,8 @@ CPPFLAGS += -I../../editors/include/
# path to zlib
CPPFLAGS += -I$(NAN_ZLIB)/include
+CPPFLAGS += -I../../gpu
+
ifdef NAN_PTHREADS
CPPFLAGS += -I$(NAN_PTHREADS)/include
endif
diff --git a/source/blender/blenlib/intern/bpath.c b/source/blender/blenlib/intern/bpath.c
index cadf8d2bdd1..0df9d9b8db3 100644
--- a/source/blender/blenlib/intern/bpath.c
+++ b/source/blender/blenlib/intern/bpath.c
@@ -60,7 +60,7 @@
#include "BKE_global.h"
#include "BKE_image.h" /* so we can check the image's type */
#include "BKE_main.h" /* so we can access G.main->*.first */
-#include "BKE_sequence.h"
+#include "BKE_sequencer.h"
#include "BKE_text.h" /* for writing to a textblock */
#include "BKE_utildefines.h"
diff --git a/source/blender/blenlib/intern/listbase.c b/source/blender/blenlib/intern/listbase.c
index b3a4722d6d9..166f4ed029e 100644
--- a/source/blender/blenlib/intern/listbase.c
+++ b/source/blender/blenlib/intern/listbase.c
@@ -343,7 +343,7 @@ int BLI_findindex(ListBase *listbase, void *vlink)
return -1;
}
-void BLI_duplicatelist(ListBase *list1, ListBase *list2) /* copy from 2 to 1 */
+void BLI_duplicatelist(ListBase *list1, const ListBase *list2)
{
struct Link *link1, *link2;
diff --git a/source/blender/blenlib/intern/math_base.c b/source/blender/blenlib/intern/math_base.c
index f3fe09c088f..3b63b033342 100644
--- a/source/blender/blenlib/intern/math_base.c
+++ b/source/blender/blenlib/intern/math_base.c
@@ -100,7 +100,7 @@ float interpf(float target, float origin, float fac)
* the distance gets very high, 180d would be inf, but this case isn't valid */
float shell_angle_to_dist(const float angle)
{
- return (angle < SMALL_NUMBER) ? 1.0f : fabsf(1.0f / cosf(angle * (M_PI/180.0f)));
+ return (angle < SMALL_NUMBER) ? 1.0f : fabsf(1.0f / cosf(angle));
}
/* used for zoom values*/
@@ -109,3 +109,63 @@ float power_of_2(float val)
return (float)pow(2, ceil(log(val) / log(2)));
}
+
+/* WARNING: MSVC compiling hack for double_round() */
+#if (WIN32 || WIN64) && !(FREE_WINDOWS)
+
+/* from python 3.1 pymath.c */
+double copysign(double x, double y)
+{
+ /* use atan2 to distinguish -0. from 0. */
+ if (y > 0. || (y == 0. && atan2(y, -1.) > 0.)) {
+ return fabs(x);
+ } else {
+ return -fabs(x);
+ }
+}
+
+/* from python 3.1 pymath.c */
+double round(double x)
+{
+ double absx, y;
+ absx = fabs(x);
+ y = floor(absx);
+ if (absx - y >= 0.5)
+ y += 1.0;
+ return copysign(y, x);
+}
+
+#endif
+
+
+/* from python 3.1 floatobject.c
+ * ndigits must be between 0 and 21 */
+double double_round(double x, int ndigits) {
+ double pow1, pow2, y, z;
+ if (ndigits >= 0) {
+ pow1 = pow(10.0, (double)ndigits);
+ pow2 = 1.0;
+ y = (x*pow1)*pow2;
+ /* if y overflows, then rounded value is exactly x */
+ if (!finite(y))
+ return x;
+ }
+ else {
+ pow1 = pow(10.0, (double)-ndigits);
+ pow2 = 1.0; /* unused; silences a gcc compiler warning */
+ y = x / pow1;
+ }
+
+ z = round(y);
+ if (fabs(y-z) == 0.5)
+ /* halfway between two integers; use round-half-even */
+ z = 2.0*round(y/2.0);
+
+ if (ndigits >= 0)
+ z = (z / pow2) / pow1;
+ else
+ z *= pow1;
+
+ /* if computation resulted in overflow, raise OverflowError */
+ return z;
+}
diff --git a/source/blender/blenlib/intern/math_color.c b/source/blender/blenlib/intern/math_color.c
index 7ae380a1dde..6dbd9c1381f 100644
--- a/source/blender/blenlib/intern/math_color.c
+++ b/source/blender/blenlib/intern/math_color.c
@@ -208,17 +208,17 @@ void rgb_to_hsv(float r, float g, float b, float *lh, float *ls, float *lv)
void xyz_to_rgb(float xc, float yc, float zc, float *r, float *g, float *b, int colorspace)
{
switch (colorspace) {
- case BLI_CS_SMPTE:
+ case BLI_XYZ_SMPTE:
*r = (3.50570f * xc) + (-1.73964f * yc) + (-0.544011f * zc);
*g = (-1.06906f * xc) + (1.97781f * yc) + (0.0351720f * zc);
*b = (0.0563117f * xc) + (-0.196994f * yc) + (1.05005f * zc);
break;
- case BLI_CS_REC709:
+ case BLI_XYZ_REC709_SRGB:
*r = (3.240476f * xc) + (-1.537150f * yc) + (-0.498535f * zc);
*g = (-0.969256f * xc) + (1.875992f * yc) + (0.041556f * zc);
*b = (0.055648f * xc) + (-0.204043f * yc) + (1.057311f * zc);
break;
- case BLI_CS_CIE:
+ case BLI_XYZ_CIE:
*r = (2.28783848734076f * xc) + (-0.833367677835217f * yc) + (-0.454470795871421f * zc);
*g = (-0.511651380743862f * xc) + (1.42275837632178f * yc) + (0.0888930017552939f * zc);
*b = (0.00572040983140966f * xc) + (-0.0159068485104036f * yc) + (1.0101864083734f * zc);
@@ -274,6 +274,61 @@ void cpack_to_rgb(unsigned int col, float *r, float *g, float *b)
*b /= 255.0f;
}
+/* ********************************* color transforms ********************************* */
+
+
+void gamma_correct(float *c, float gamma)
+{
+ *c = powf((*c), gamma);
+}
+
+float rec709_to_linearrgb(float c)
+{
+ if (c < 0.081f)
+ return (c < 0.0f)? 0.0f: c * (1.0f/4.5f);
+ else
+ return powf((c + 0.099f)*(1.0f/1.099f), (1.0f/0.45f));
+}
+
+float linearrgb_to_rec709(float c)
+{
+ if (c < 0.018f)
+ return (c < 0.0f)? 0.0f: c * 4.5f;
+ else
+ return 1.099f * powf(c, 0.45f) - 0.099f;
+}
+
+float srgb_to_linearrgb(float c)
+{
+ if (c < 0.04045f)
+ return (c < 0.0f)? 0.0f: c * (1.0f/12.92f);
+ else
+ return powf((c + 0.055f)*(1.0f/1.055f), 2.4f);
+}
+
+float linearrgb_to_srgb(float c)
+{
+ if (c < 0.0031308f)
+ return (c < 0.0f)? 0.0f: c * 12.92f;
+ else
+ return 1.055f * powf(c, 1.0f/2.4f) - 0.055f;
+}
+
+void srgb_to_linearrgb_v3_v3(float *col_to, float *col_from)
+{
+ col_to[0] = srgb_to_linearrgb(col_from[0]);
+ col_to[1] = srgb_to_linearrgb(col_from[1]);
+ col_to[2] = srgb_to_linearrgb(col_from[2]);
+}
+
+void linearrgb_to_srgb_v3_v3(float *col_to, float *col_from)
+{
+ col_to[0] = linearrgb_to_srgb(col_from[0]);
+ col_to[1] = linearrgb_to_srgb(col_from[1]);
+ col_to[2] = linearrgb_to_srgb(col_from[2]);
+}
+
+
void minmax_rgb(short c[])
{
if(c[0]>255) c[0]=255;
diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c
index 0b3ab2f0afc..3e714b384a7 100644
--- a/source/blender/blenlib/intern/math_geom.c
+++ b/source/blender/blenlib/intern/math_geom.c
@@ -458,6 +458,40 @@ int isect_ray_tri_v3(float p1[3], float d[3], float v0[3], float v1[3], float v2
return 1;
}
+int isect_ray_tri_epsilon_v3(float p1[3], float d[3], float v0[3], float v1[3], float v2[3], float *lambda, float *uv, float epsilon)
+{
+ float p[3], s[3], e1[3], e2[3], q[3];
+ float a, f, u, v;
+
+ sub_v3_v3v3(e1, v1, v0);
+ sub_v3_v3v3(e2, v2, v0);
+
+ cross_v3_v3v3(p, d, e2);
+ a = dot_v3v3(e1, p);
+ if (a == 0.0f) return 0;
+ f = 1.0f/a;
+
+ sub_v3_v3v3(s, p1, v0);
+
+ cross_v3_v3v3(q, s, e1);
+
+ u = f * dot_v3v3(s, p);
+ if ((u < -epsilon)||(u > 1.0f+epsilon)) return 0;
+
+ v = f * dot_v3v3(d, q);
+ if ((v < -epsilon)||((u + v) > 1.0f+epsilon)) return 0;
+
+ *lambda = f * dot_v3v3(e2, q);
+ if ((*lambda < 0.0f)) return 0;
+
+ if(uv) {
+ uv[0]= u;
+ uv[1]= v;
+ }
+
+ return 1;
+}
+
int isect_ray_tri_threshold_v3(float p1[3], float d[3], float v0[3], float v1[3], float v2[3], float *lambda, float *uv, float threshold)
{
float p[3], s[3], e1[3], e2[3], q[3];
@@ -1597,3 +1631,161 @@ void tangent_from_uv(float *uv1, float *uv2, float *uv3, float *co1, float *co2,
negate_v3(tang);
}
+/********************************************************/
+
+/* vector clouds */
+/* void vcloud_estimate_transform(int list_size, float (*pos)[3], float *weight,float (*rpos)[3], float *rweight,
+ float lloc[3],float rloc[3],float lrot[3][3],float lscale[3][3])
+
+input
+(
+int list_size
+4 lists as pointer to array[list_size]
+1. current pos array of 'new' positions
+2. current weight array of 'new'weights (may be NULL pointer if you have no weights )
+3. reference rpos array of 'old' positions
+4. reference rweight array of 'old'weights (may be NULL pointer if you have no weights )
+)
+output
+(
+float lloc[3] center of mass pos
+float rloc[3] center of mass rpos
+float lrot[3][3] rotation matrix
+float lscale[3][3] scale matrix
+pointers may be NULL if not needed
+)
+
+*/
+/* can't believe there is none in math utils */
+float _det_m3(float m2[3][3])
+{
+ float det = 0.f;
+ if (m2){
+ det= m2[0][0]* (m2[1][1]*m2[2][2] - m2[1][2]*m2[2][1])
+ -m2[1][0]* (m2[0][1]*m2[2][2] - m2[0][2]*m2[2][1])
+ +m2[2][0]* (m2[0][1]*m2[1][2] - m2[0][2]*m2[1][1]);
+ }
+ return det;
+}
+
+
+void vcloud_estimate_transform(int list_size, float (*pos)[3], float *weight,float (*rpos)[3], float *rweight,
+ float lloc[3],float rloc[3],float lrot[3][3],float lscale[3][3])
+{
+ float accu_com[3]= {0.0f,0.0f,0.0f}, accu_rcom[3]= {0.0f,0.0f,0.0f};
+ float accu_weight = 0.0f,accu_rweight = 0.0f,eps = 0.000001f;
+
+ int a;
+ /* first set up a nice default response */
+ if (lloc) zero_v3(lloc);
+ if (rloc) zero_v3(rloc);
+ if (lrot) unit_m3(lrot);
+ if (lscale) unit_m3(lscale);
+ /* do com for both clouds */
+ if (pos && rpos && (list_size > 0)) /* paranoya check */
+ {
+ /* do com for both clouds */
+ for(a=0; a<list_size; a++){
+ if (weight){
+ float v[3];
+ copy_v3_v3(v,pos[a]);
+ mul_v3_fl(v,weight[a]);
+ add_v3_v3v3(accu_com,accu_com,v);
+ accu_weight +=weight[a];
+ }
+ else add_v3_v3v3(accu_com,accu_com,pos[a]);
+
+ if (rweight){
+ float v[3];
+ copy_v3_v3(v,rpos[a]);
+ mul_v3_fl(v,rweight[a]);
+ add_v3_v3v3(accu_rcom,accu_rcom,v);
+ accu_rweight +=rweight[a];
+ }
+ else add_v3_v3v3(accu_rcom,accu_rcom,rpos[a]);
+
+ }
+ if (!weight || !rweight){
+ accu_weight = accu_rweight = list_size;
+ }
+
+ mul_v3_fl(accu_com,1.0f/accu_weight);
+ mul_v3_fl(accu_rcom,1.0f/accu_rweight);
+ if (lloc) copy_v3_v3(lloc,accu_com);
+ if (rloc) copy_v3_v3(rloc,accu_rcom);
+ if (lrot || lscale){ /* caller does not want rot nor scale, strange but legal */
+ /*so now do some reverse engeneering and see if we can split rotation from scale ->Polardecompose*/
+ /* build 'projection' matrix */
+ float m[3][3],mr[3][3],q[3][3],qi[3][3];
+ float va[3],vb[3],stunt[3];
+ float odet,ndet;
+ int i=0,imax=15;
+ zero_m3(m);
+ zero_m3(mr);
+
+ /* build 'projection' matrix */
+ for(a=0; a<list_size; a++){
+ sub_v3_v3v3(va,rpos[a],accu_rcom);
+ /* mul_v3_fl(va,bp->mass); mass needs renormalzation here ?? */
+ sub_v3_v3v3(vb,pos[a],accu_com);
+ /* mul_v3_fl(va,rp->mass); */
+ m[0][0] += va[0] * vb[0];
+ m[0][1] += va[0] * vb[1];
+ m[0][2] += va[0] * vb[2];
+
+ m[1][0] += va[1] * vb[0];
+ m[1][1] += va[1] * vb[1];
+ m[1][2] += va[1] * vb[2];
+
+ m[2][0] += va[2] * vb[0];
+ m[2][1] += va[2] * vb[1];
+ m[2][2] += va[2] * vb[2];
+
+ /* building the referenc matrix on the fly
+ needed to scale properly later*/
+
+ mr[0][0] += va[0] * va[0];
+ mr[0][1] += va[0] * va[1];
+ mr[0][2] += va[0] * va[2];
+
+ mr[1][0] += va[1] * va[0];
+ mr[1][1] += va[1] * va[1];
+ mr[1][2] += va[1] * va[2];
+
+ mr[2][0] += va[2] * va[0];
+ mr[2][1] += va[2] * va[1];
+ mr[2][2] += va[2] * va[2];
+ }
+ copy_m3_m3(q,m);
+ stunt[0] = q[0][0]; stunt[1] = q[1][1]; stunt[2] = q[2][2];
+ /* renormalizing for numeric stability */
+ mul_m3_fl(q,1.f/len_v3(stunt));
+
+ /* this is pretty much Polardecompose 'inline' the algo based on Higham's thesis */
+ /* without the far case ... but seems to work here pretty neat */
+ odet = 0.f;
+ ndet = _det_m3(q);
+ while((odet-ndet)*(odet-ndet) > eps && i<imax){
+ invert_m3_m3(qi,q);
+ transpose_m3(qi);
+ add_m3_m3m3(q,q,qi);
+ mul_m3_fl(q,0.5f);
+ odet =ndet;
+ ndet =_det_m3(q);
+ i++;
+ }
+
+ if (i){
+ float scale[3][3];
+ float irot[3][3];
+ if(lrot) copy_m3_m3(lrot,q);
+ invert_m3_m3(irot,q);
+ invert_m3_m3(qi,mr);
+ mul_m3_m3m3(q,m,qi);
+ mul_m3_m3m3(scale,irot,q);
+ if(lscale) copy_m3_m3(lscale,scale);
+
+ }
+ }
+ }
+}
diff --git a/source/blender/blenlib/intern/math_matrix.c b/source/blender/blenlib/intern/math_matrix.c
index edab1cc2440..47b99bce8ab 100644
--- a/source/blender/blenlib/intern/math_matrix.c
+++ b/source/blender/blenlib/intern/math_matrix.c
@@ -338,15 +338,19 @@ void mul_m4_v4(float mat[][4], float *vec)
vec[3]=x*mat[0][3] + y*mat[1][3] + z*mat[2][3] + mat[3][3]*vec[3];
}
-void mul_m3_v3(float mat[][3], float *vec)
+void mul_v3_m3v3(float r[3], float M[3][3], float a[3])
{
- float x,y;
+ r[0]= M[0][0]*a[0] + M[1][0]*a[1] + M[2][0]*a[2];
+ r[1]= M[0][1]*a[0] + M[1][1]*a[1] + M[2][1]*a[2];
+ r[2]= M[0][2]*a[0] + M[1][2]*a[1] + M[2][2]*a[2];
+}
- x=vec[0];
- y=vec[1];
- vec[0]= x*mat[0][0] + y*mat[1][0] + mat[2][0]*vec[2];
- vec[1]= x*mat[0][1] + y*mat[1][1] + mat[2][1]*vec[2];
- vec[2]= x*mat[0][2] + y*mat[1][2] + mat[2][2]*vec[2];
+void mul_m3_v3(float M[3][3], float r[3])
+{
+ float tmp[3];
+
+ mul_v3_m3v3(tmp, M, r);
+ copy_v3_v3(r, tmp);
}
void mul_transposed_m3_v3(float mat[][3], float *vec)
diff --git a/source/blender/blenlib/intern/math_vector.c b/source/blender/blenlib/intern/math_vector.c
index 502f241c195..3188587a96c 100644
--- a/source/blender/blenlib/intern/math_vector.c
+++ b/source/blender/blenlib/intern/math_vector.c
@@ -145,6 +145,19 @@ float angle_v3v3v3(float *v1, float *v2, float *v3)
return angle_normalized_v3v3(vec1, vec2);
}
+/* Return the shortest angle in radians between the 2 vectors */
+float angle_v3v3(float *v1, float *v2)
+{
+ float vec1[3], vec2[3];
+
+ copy_v3_v3(vec1, v1);
+ copy_v3_v3(vec2, v2);
+ normalize_v3(vec1);
+ normalize_v3(vec2);
+
+ return angle_normalized_v3v3(vec1, vec2);
+}
+
float angle_v2v2v2(float *v1, float *v2, float *v3)
{
float vec1[2], vec2[2];
@@ -164,14 +177,18 @@ float angle_v2v2v2(float *v1, float *v2, float *v3)
/* Return the shortest angle in radians between the 2 vectors */
float angle_v2v2(float *v1, float *v2)
{
- float vec1[3], vec2[3];
+ float vec1[2], vec2[2];
- copy_v3_v3(vec1, v1);
- copy_v3_v3(vec2, v2);
- normalize_v3(vec1);
- normalize_v3(vec2);
+ vec1[0] = v1[0];
+ vec1[1] = v1[1];
- return angle_normalized_v3v3(vec1, vec2);
+ vec2[0] = v2[0];
+ vec2[1] = v2[1];
+
+ normalize_v2(vec1);
+ normalize_v2(vec2);
+
+ return angle_normalized_v2v2(vec1, vec2);
}
float angle_normalized_v3v3(float *v1, float *v2)
@@ -205,6 +222,44 @@ float angle_normalized_v2v2(float *v1, float *v2)
return 2.0f*(float)saasin(len_v2v2(v2, v1)/2.0f);
}
+void angle_tri_v3(float angles[3], const float v1[3], const float v2[3], const float v3[3])
+{
+ float ed1[3], ed2[3], ed3[3];
+
+ sub_v3_v3v3(ed1, v3, v1);
+ sub_v3_v3v3(ed2, v1, v2);
+ sub_v3_v3v3(ed3, v2, v3);
+
+ normalize_v3(ed1);
+ normalize_v3(ed2);
+ normalize_v3(ed3);
+
+ angles[0]= M_PI - angle_normalized_v3v3(ed1, ed2);
+ angles[1]= M_PI - angle_normalized_v3v3(ed2, ed3);
+ // face_angles[2] = M_PI - angle_normalized_v3v3(ed3, ed1);
+ angles[2]= M_PI - (angles[0] + angles[1]);
+}
+
+void angle_quad_v3(float angles[4], const float v1[3], const float v2[3], const float v3[3], const float v4[3])
+{
+ float ed1[3], ed2[3], ed3[3], ed4[3];
+
+ sub_v3_v3v3(ed1, v4, v1);
+ sub_v3_v3v3(ed2, v1, v2);
+ sub_v3_v3v3(ed3, v2, v3);
+ sub_v3_v3v3(ed4, v3, v4);
+
+ normalize_v3(ed1);
+ normalize_v3(ed2);
+ normalize_v3(ed3);
+ normalize_v3(ed4);
+
+ angles[0]= M_PI - angle_normalized_v3v3(ed1, ed2);
+ angles[1]= M_PI - angle_normalized_v3v3(ed2, ed3);
+ angles[2]= M_PI - angle_normalized_v3v3(ed3, ed4);
+ angles[3]= M_PI - angle_normalized_v3v3(ed4, ed1);
+}
+
/********************************* Geometry **********************************/
/* Project v1 on v2 */
@@ -292,20 +347,6 @@ void print_v4(char *str, float v[4])
printf("%s: %.3f %.3f %.3f %.3f\n", str, v[0], v[1], v[2], v[3]);
}
-void normal_short_to_float_v3(float *out, short *in)
-{
- out[0] = in[0]*(1.0f/32767.0f);
- out[1] = in[1]*(1.0f/32767.0f);
- out[2] = in[2]*(1.0f/32767.0f);
-}
-
-void normal_float_to_short_v3(short *out, float *in)
-{
- out[0] = (short)(in[0]*32767.0f);
- out[1] = (short)(in[1]*32767.0f);
- out[2] = (short)(in[2]*32767.0f);
-}
-
void minmax_v3_v3v3(float *min, float *max, float *vec)
{
if(min[0]>vec[0]) min[0]= vec[0];
diff --git a/source/blender/blenlib/intern/math_vector_inline.c b/source/blender/blenlib/intern/math_vector_inline.c
index 5cb2290ca66..86a115c64ff 100644
--- a/source/blender/blenlib/intern/math_vector_inline.c
+++ b/source/blender/blenlib/intern/math_vector_inline.c
@@ -58,6 +58,19 @@ MINLINE void copy_v3_v3(float r[3], float a[3])
r[2]= a[2];
}
+MINLINE void swap_v2_v2(float a[2], float b[2])
+{
+ SWAP(float, a[0], b[0]);
+ SWAP(float, a[1], b[1]);
+}
+
+MINLINE void swap_v3_v3(float a[3], float b[3])
+{
+ SWAP(float, a[0], b[0]);
+ SWAP(float, a[1], b[1]);
+ SWAP(float, a[2], b[2]);
+}
+
/********************************* Arithmetic ********************************/
MINLINE void add_v2_v2(float *r, float *a)
@@ -139,6 +152,34 @@ MINLINE void mul_v3_v3(float r[3], float a[3])
r[2] *= a[2];
}
+MINLINE void madd_v3_v3fl(float r[3], float a[3], float f)
+{
+ r[0] += a[0]*f;
+ r[1] += a[1]*f;
+ r[2] += a[2]*f;
+}
+
+MINLINE void madd_v3_v3v3(float r[3], float a[3], float b[3])
+{
+ r[0] += a[0]*b[0];
+ r[1] += a[1]*b[1];
+ r[2] += a[2]*b[2];
+}
+
+MINLINE void madd_v3_v3v3fl(float r[3], float a[3], float b[3], float f)
+{
+ r[0] = a[0] + b[0]*f;
+ r[1] = a[1] + b[1]*f;
+ r[2] = a[2] + b[2]*f;
+}
+
+MINLINE void madd_v3_v3v3v3(float r[3], float a[3], float b[3], float c[3])
+{
+ r[0] = a[0] + b[0]*c[0];
+ r[1] = a[1] + b[1]*c[1];
+ r[2] = a[2] + b[2]*c[2];
+}
+
MINLINE void mul_v3_v3v3(float *v, float *v1, float *v2)
{
v[0] = v1[0] * v2[0];
@@ -254,7 +295,6 @@ MINLINE float normalize_v3(float n[3])
return d;
}
-
MINLINE double normalize_dv3(double n[3])
{
double d= n[0]*n[0] + n[1]*n[1] + n[2]*n[2];
@@ -262,18 +302,35 @@ MINLINE double normalize_dv3(double n[3])
/* a larger value causes normalize errors in a
scaled down models with camera xtreme close */
if(d > 1.0e-35f) {
- d= 1.0 / sqrt(d);
- n[0] *= d;
- n[1] *= d;
- n[2] *= d;
- }
- else {
- n[0] = n[1] = n[2] = 0.0;
+ double mul;
+
+ d= sqrt(d);
+ mul = 1.0 / d;
+
+ n[0] *= mul;
+ n[1] *= mul;
+ n[2] *= mul;
+ } else {
+ n[0] = n[1] = n[2] = 0;
d= 0.0;
}
return d;
}
+MINLINE void normal_short_to_float_v3(float *out, short *in)
+{
+ out[0] = in[0]*(1.0f/32767.0f);
+ out[1] = in[1]*(1.0f/32767.0f);
+ out[2] = in[2]*(1.0f/32767.0f);
+}
+
+MINLINE void normal_float_to_short_v3(short *out, float *in)
+{
+ out[0] = (short)(in[0]*32767.0f);
+ out[1] = (short)(in[1]*32767.0f);
+ out[2] = (short)(in[2]*32767.0f);
+}
+
#endif /* BLI_MATH_VECTOR_INLINE */
diff --git a/source/blender/blenlib/intern/util.c b/source/blender/blenlib/intern/path_util.c
index 39afced92bc..4f987fcd31e 100644
--- a/source/blender/blenlib/intern/util.c
+++ b/source/blender/blenlib/intern/path_util.c
@@ -1,9 +1,5 @@
-/* util.c
- *
- * various string, file, list operations.
- *
- *
- * $Id$
+/**
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
@@ -29,7 +25,8 @@
* Contributor(s): none yet.
*
* ***** END GPL LICENSE BLOCK *****
- *
+ *
+ * various string, file, list operations.
*/
#include <stdio.h>
@@ -45,12 +42,13 @@
#include "DNA_listBase.h"
#include "DNA_userdef_types.h"
-#include "BLI_blenlib.h"
+#include "BLI_dynamiclist.h"
+#include "BLI_fileops.h"
+#include "BLI_path_util.h"
+#include "BLI_string.h"
#include "BLI_storage.h"
#include "BLI_storage_types.h"
-#include "BLI_dynamiclist.h"
-#include "BLI_util.h"
#include "BKE_utildefines.h"
@@ -223,7 +221,7 @@ void BLI_newname(char *name, int add)
* defname: the name that should be used by default if none is specified already
* delim: the character which acts as a delimeter between parts of the name
*/
-void BLI_uniquename(ListBase *list, void *vlink, char defname[], char delim, short name_offs, short len)
+void BLI_uniquename(ListBase *list, void *vlink, const char defname[], char delim, short name_offs, short len)
{
Link *link;
char tempname[128];
diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c
new file mode 100644
index 00000000000..9512e3b9670
--- /dev/null
+++ b/source/blender/blenlib/intern/pbvh.c
@@ -0,0 +1,1304 @@
+/**
+ * $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.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include <float.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "MEM_guardedalloc.h"
+
+#include "DNA_meshdata_types.h"
+
+#include "BLI_math.h"
+#include "BLI_ghash.h"
+#include "BLI_pbvh.h"
+
+#include "BKE_DerivedMesh.h"
+#include "BKE_mesh.h"
+#include "BKE_utildefines.h"
+
+#include "gpu_buffers.h"
+
+#define LEAF_LIMIT 10000
+
+//#define PERFCNTRS
+
+/* Bitmap */
+typedef char* BLI_bitmap;
+
+BLI_bitmap BLI_bitmap_new(int tot)
+{
+ return MEM_callocN((tot >> 3) + 1, "BLI bitmap");
+}
+
+int BLI_bitmap_get(BLI_bitmap b, int index)
+{
+ return b[index >> 3] & (1 << (index & 7));
+}
+
+void BLI_bitmap_set(BLI_bitmap b, int index)
+{
+ b[index >> 3] |= (1 << (index & 7));
+}
+
+void BLI_bitmap_clear(BLI_bitmap b, int index)
+{
+ b[index >> 3] &= ~(1 << (index & 7));
+}
+
+/* Axis-aligned bounding box */
+typedef struct {
+ float bmin[3], bmax[3];
+} BB;
+
+/* Axis-aligned bounding box with centroid */
+typedef struct {
+ float bmin[3], bmax[3], bcentroid[3];
+} BBC;
+
+struct PBVHNode {
+ /* Opaque handle for drawing code */
+ void *draw_buffers;
+
+ int *vert_indices;
+
+ /* Voxel bounds */
+ BB vb;
+ BB orig_vb;
+
+ /* For internal nodes */
+ int children_offset;
+
+ /* Pointer into bvh prim_indices */
+ int *prim_indices;
+ int *face_vert_indices;
+
+ unsigned int totprim;
+ unsigned int uniq_verts, face_verts;
+
+ char flag;
+};
+
+struct PBVH {
+ PBVHNode *nodes;
+ int node_mem_count, totnode;
+
+ int *prim_indices;
+ int totprim;
+ int totvert;
+
+ int leaf_limit;
+
+ /* Mesh data */
+ MVert *verts;
+ MFace *faces;
+
+ /* Grid Data */
+ DMGridData **grids;
+ DMGridAdjacency *gridadj;
+ void **gridfaces;
+ int totgrid;
+ int gridsize;
+
+ /* Only used during BVH build and update,
+ don't need to remain valid after */
+ BLI_bitmap vert_bitmap;
+
+#ifdef PERFCNTRS
+ int perf_modified;
+#endif
+};
+
+#define STACK_FIXED_DEPTH 100
+
+typedef struct PBVHStack {
+ PBVHNode *node;
+ int revisiting;
+} PBVHStack;
+
+typedef struct PBVHIter {
+ PBVH *bvh;
+ BLI_pbvh_SearchCallback scb;
+ void *search_data;
+
+ PBVHStack *stack;
+ int stacksize;
+
+ PBVHStack stackfixed[STACK_FIXED_DEPTH];
+ int stackspace;
+} PBVHIter;
+
+static void BB_reset(BB *bb)
+{
+ bb->bmin[0] = bb->bmin[1] = bb->bmin[2] = FLT_MAX;
+ bb->bmax[0] = bb->bmax[1] = bb->bmax[2] = -FLT_MAX;
+}
+
+/* Expand the bounding box to include a new coordinate */
+static void BB_expand(BB *bb, float co[3])
+{
+ int i;
+ for(i = 0; i < 3; ++i) {
+ bb->bmin[i] = MIN2(bb->bmin[i], co[i]);
+ bb->bmax[i] = MAX2(bb->bmax[i], co[i]);
+ }
+}
+
+/* Expand the bounding box to include another bounding box */
+static void BB_expand_with_bb(BB *bb, BB *bb2)
+{
+ int i;
+ for(i = 0; i < 3; ++i) {
+ bb->bmin[i] = MIN2(bb->bmin[i], bb2->bmin[i]);
+ bb->bmax[i] = MAX2(bb->bmax[i], bb2->bmax[i]);
+ }
+}
+
+/* Return 0, 1, or 2 to indicate the widest axis of the bounding box */
+static int BB_widest_axis(BB *bb)
+{
+ float dim[3];
+ int i;
+
+ for(i = 0; i < 3; ++i)
+ dim[i] = bb->bmax[i] - bb->bmin[i];
+
+ if(dim[0] > dim[1]) {
+ if(dim[0] > dim[2])
+ return 0;
+ else
+ return 2;
+ }
+ else {
+ if(dim[1] > dim[2])
+ return 1;
+ else
+ return 2;
+ }
+}
+
+static void BBC_update_centroid(BBC *bbc)
+{
+ int i;
+ for(i = 0; i < 3; ++i)
+ bbc->bcentroid[i] = (bbc->bmin[i] + bbc->bmax[i]) * 0.5f;
+}
+
+/* Not recursive */
+static void update_node_vb(PBVH *bvh, PBVHNode *node)
+{
+ BB vb;
+
+ BB_reset(&vb);
+
+ if(node->flag & PBVH_Leaf) {
+ PBVHVertexIter vd;
+
+ BLI_pbvh_vertex_iter_begin(bvh, node, vd, PBVH_ITER_ALL) {
+ BB_expand(&vb, vd.co);
+ }
+ BLI_pbvh_vertex_iter_end;
+ }
+ else {
+ BB_expand_with_bb(&vb,
+ &bvh->nodes[node->children_offset].vb);
+ BB_expand_with_bb(&vb,
+ &bvh->nodes[node->children_offset + 1].vb);
+ }
+
+ node->vb= vb;
+}
+
+/* Adapted from BLI_kdopbvh.c */
+/* Returns the index of the first element on the right of the partition */
+static int partition_indices(int *prim_indices, int lo, int hi, int axis,
+ float mid, BBC *prim_bbc)
+{
+ int i=lo, j=hi;
+ for(;;) {
+ for(; prim_bbc[prim_indices[i]].bcentroid[axis] < mid; i++);
+ for(; mid < prim_bbc[prim_indices[j]].bcentroid[axis]; j--);
+
+ if(!(i < j))
+ return i;
+
+ SWAP(int, prim_indices[i], prim_indices[j]);
+ i++;
+ }
+}
+
+void check_partitioning(int *prim_indices, int lo, int hi, int axis,
+ float mid, BBC *prim_bbc, int index_of_2nd_partition)
+{
+ int i;
+ for(i = lo; i <= hi; ++i) {
+ const float c = prim_bbc[prim_indices[i]].bcentroid[axis];
+
+ if((i < index_of_2nd_partition && c > mid) ||
+ (i > index_of_2nd_partition && c < mid)) {
+ printf("fail\n");
+ }
+ }
+}
+
+static void grow_nodes(PBVH *bvh, int totnode)
+{
+ if(totnode > bvh->node_mem_count) {
+ PBVHNode *prev = bvh->nodes;
+ bvh->node_mem_count *= 1.33;
+ if(bvh->node_mem_count < totnode)
+ bvh->node_mem_count = totnode;
+ bvh->nodes = MEM_callocN(sizeof(PBVHNode) * bvh->node_mem_count,
+ "bvh nodes");
+ memcpy(bvh->nodes, prev, bvh->totnode * sizeof(PBVHNode));
+ MEM_freeN(prev);
+ }
+
+ bvh->totnode = totnode;
+}
+
+/* Add a vertex to the map, with a positive value for unique vertices and
+ a negative value for additional vertices */
+static int map_insert_vert(PBVH *bvh, GHash *map,
+ unsigned int *face_verts,
+ unsigned int *uniq_verts, int vertex)
+{
+ void *value, *key = SET_INT_IN_POINTER(vertex);
+
+ if(!BLI_ghash_haskey(map, key)) {
+ if(BLI_bitmap_get(bvh->vert_bitmap, vertex)) {
+ value = SET_INT_IN_POINTER(-(*face_verts) - 1);
+ ++(*face_verts);
+ }
+ else {
+ BLI_bitmap_set(bvh->vert_bitmap, vertex);
+ value = SET_INT_IN_POINTER(*uniq_verts);
+ ++(*uniq_verts);
+ }
+
+ BLI_ghash_insert(map, key, value);
+ return GET_INT_FROM_POINTER(value);
+ }
+ else
+ return GET_INT_FROM_POINTER(BLI_ghash_lookup(map, key));
+}
+
+/* Find vertices used by the faces in this node and update the draw buffers */
+static void build_mesh_leaf_node(PBVH *bvh, PBVHNode *node)
+{
+ GHashIterator *iter;
+ GHash *map;
+ int i, j, totface;
+
+ map = BLI_ghash_new(BLI_ghashutil_inthash, BLI_ghashutil_intcmp);
+
+ node->uniq_verts = node->face_verts = 0;
+ totface= node->totprim;
+
+ node->face_vert_indices = MEM_callocN(sizeof(int) *
+ 4*totface, "bvh node face vert indices");
+
+ for(i = 0; i < totface; ++i) {
+ MFace *f = bvh->faces + node->prim_indices[i];
+ int sides = f->v4 ? 4 : 3;
+
+ for(j = 0; j < sides; ++j) {
+ node->face_vert_indices[i*4 + j]=
+ map_insert_vert(bvh, map, &node->face_verts,
+ &node->uniq_verts, (&f->v1)[j]);
+ }
+ }
+
+ node->vert_indices = MEM_callocN(sizeof(int) *
+ (node->uniq_verts + node->face_verts),
+ "bvh node vert indices");
+
+ /* Build the vertex list, unique verts first */
+ for(iter = BLI_ghashIterator_new(map), i = 0;
+ !BLI_ghashIterator_isDone(iter);
+ BLI_ghashIterator_step(iter), ++i) {
+ void *value = BLI_ghashIterator_getValue(iter);
+ int ndx = GET_INT_FROM_POINTER(value);
+
+ if(ndx < 0)
+ ndx = -ndx + node->uniq_verts - 1;
+
+ node->vert_indices[ndx] =
+ GET_INT_FROM_POINTER(BLI_ghashIterator_getKey(iter));
+ }
+
+ for(i = 0; i < totface*4; ++i)
+ if(node->face_vert_indices[i] < 0)
+ node->face_vert_indices[i]= -node->face_vert_indices[i] + node->uniq_verts - 1;
+
+ node->draw_buffers =
+ GPU_build_mesh_buffers(map, bvh->verts, bvh->faces,
+ node->prim_indices,
+ node->totprim, node->vert_indices,
+ node->uniq_verts,
+ node->uniq_verts + node->face_verts);
+
+ BLI_ghash_free(map, NULL, NULL);
+}
+
+static void build_grids_leaf_node(PBVH *bvh, PBVHNode *node)
+{
+ node->draw_buffers =
+ GPU_build_grid_buffers(bvh->grids, node->prim_indices,
+ node->totprim, bvh->gridsize);
+}
+
+/* Recursively build a node in the tree
+
+ vb is the voxel box around all of the primitives contained in
+ this node.
+
+ cb is the bounding box around all the centroids of the primitives
+ contained in this node
+
+ offset and start indicate a range in the array of primitive indices
+*/
+
+void build_sub(PBVH *bvh, int node_index, BB *cb, BBC *prim_bbc,
+ int offset, int count)
+{
+ int i, axis, end;
+ BB cb_backing;
+
+ /* Decide whether this is a leaf or not */
+ // XXX adapt leaf limit for grids
+ if(count <= bvh->leaf_limit) {
+ bvh->nodes[node_index].flag |= PBVH_Leaf;
+
+ bvh->nodes[node_index].prim_indices = bvh->prim_indices + offset;
+ bvh->nodes[node_index].totprim = count;
+
+ /* Still need vb for searches */
+ BB_reset(&bvh->nodes[node_index].vb);
+ for(i = offset + count - 1; i >= offset; --i) {
+ BB_expand_with_bb(&bvh->nodes[node_index].vb,
+ (BB*)(prim_bbc +
+ bvh->prim_indices[i]));
+ }
+
+ if(bvh->faces)
+ build_mesh_leaf_node(bvh, bvh->nodes + node_index);
+ else
+ build_grids_leaf_node(bvh, bvh->nodes + node_index);
+ bvh->nodes[node_index].orig_vb= bvh->nodes[node_index].vb;
+
+ /* Done with this subtree */
+ return;
+ }
+ else {
+ BB_reset(&bvh->nodes[node_index].vb);
+ bvh->nodes[node_index].children_offset = bvh->totnode;
+ grow_nodes(bvh, bvh->totnode + 2);
+
+ if(!cb) {
+ cb = &cb_backing;
+ BB_reset(cb);
+ for(i = offset + count - 1; i >= offset; --i)
+ BB_expand(cb, prim_bbc[bvh->prim_indices[i]].bcentroid);
+ }
+ }
+
+ axis = BB_widest_axis(cb);
+
+ for(i = offset + count - 1; i >= offset; --i) {
+ BB_expand_with_bb(&bvh->nodes[node_index].vb,
+ (BB*)(prim_bbc + bvh->prim_indices[i]));
+ }
+
+ bvh->nodes[node_index].orig_vb= bvh->nodes[node_index].vb;
+
+ end = partition_indices(bvh->prim_indices, offset, offset + count - 1,
+ axis,
+ (cb->bmax[axis] + cb->bmin[axis]) * 0.5f,
+ prim_bbc);
+ check_partitioning(bvh->prim_indices, offset, offset + count - 1,
+ axis,
+ (cb->bmax[axis] + cb->bmin[axis]) * 0.5f,
+ prim_bbc, end);
+
+ build_sub(bvh, bvh->nodes[node_index].children_offset, NULL,
+ prim_bbc, offset, end - offset);
+ build_sub(bvh, bvh->nodes[node_index].children_offset + 1, NULL,
+ prim_bbc, end, offset + count - end);
+}
+
+static void pbvh_build(PBVH *bvh, BB *cb, BBC *prim_bbc, int totprim)
+{
+ int i;
+
+ if(totprim != bvh->totprim) {
+ bvh->totprim = totprim;
+ if(bvh->nodes) MEM_freeN(bvh->nodes);
+ if(bvh->prim_indices) MEM_freeN(bvh->prim_indices);
+ bvh->prim_indices = MEM_callocN(sizeof(int) * totprim,
+ "bvh prim indices");
+ for(i = 0; i < totprim; ++i)
+ bvh->prim_indices[i] = i;
+ bvh->totnode = 0;
+ if(bvh->node_mem_count < 100) {
+ bvh->node_mem_count = 100;
+ bvh->nodes = MEM_callocN(sizeof(PBVHNode) *
+ bvh->node_mem_count,
+ "bvh initial nodes");
+ }
+ }
+
+ bvh->totnode = 1;
+ build_sub(bvh, 0, cb, prim_bbc, 0, totprim);
+}
+
+/* Do a full rebuild with on Mesh data structure */
+void BLI_pbvh_build_mesh(PBVH *bvh, MFace *faces, MVert *verts, int totface, int totvert)
+{
+ BBC *prim_bbc = NULL;
+ BB cb;
+ int i, j;
+
+ bvh->faces = faces;
+ bvh->verts = verts;
+ bvh->vert_bitmap = BLI_bitmap_new(totvert);
+ bvh->totvert = totvert;
+ bvh->leaf_limit = LEAF_LIMIT;
+
+ BB_reset(&cb);
+
+ /* For each face, store the AABB and the AABB centroid */
+ prim_bbc = MEM_mallocN(sizeof(BBC) * totface, "prim_bbc");
+
+ for(i = 0; i < totface; ++i) {
+ MFace *f = faces + i;
+ const int sides = f->v4 ? 4 : 3;
+ BBC *bbc = prim_bbc + i;
+
+ BB_reset((BB*)bbc);
+
+ for(j = 0; j < sides; ++j)
+ BB_expand((BB*)bbc, verts[(&f->v1)[j]].co);
+
+ BBC_update_centroid(bbc);
+
+ BB_expand(&cb, bbc->bcentroid);
+ }
+
+ if(totface)
+ pbvh_build(bvh, &cb, prim_bbc, totface);
+
+ MEM_freeN(prim_bbc);
+ MEM_freeN(bvh->vert_bitmap);
+}
+
+/* Do a full rebuild with on Grids data structure */
+void BLI_pbvh_build_grids(PBVH *bvh, DMGridData **grids, DMGridAdjacency *gridadj,
+ int totgrid, int gridsize, void **gridfaces)
+{
+ BBC *prim_bbc = NULL;
+ BB cb;
+ int i, j;
+
+ bvh->grids= grids;
+ bvh->gridadj= gridadj;
+ bvh->gridfaces= gridfaces;
+ bvh->totgrid= totgrid;
+ bvh->gridsize= gridsize;
+ bvh->leaf_limit = MAX2(LEAF_LIMIT/((gridsize-1)*(gridsize-1)), 1);
+
+ BB_reset(&cb);
+
+ /* For each grid, store the AABB and the AABB centroid */
+ prim_bbc = MEM_mallocN(sizeof(BBC) * totgrid, "prim_bbc");
+
+ for(i = 0; i < totgrid; ++i) {
+ DMGridData *grid= grids[i];
+ BBC *bbc = prim_bbc + i;
+
+ BB_reset((BB*)bbc);
+
+ for(j = 0; j < gridsize*gridsize; ++j)
+ BB_expand((BB*)bbc, grid[j].co);
+
+ BBC_update_centroid(bbc);
+
+ BB_expand(&cb, bbc->bcentroid);
+ }
+
+ if(totgrid)
+ pbvh_build(bvh, &cb, prim_bbc, totgrid);
+
+ MEM_freeN(prim_bbc);
+}
+
+PBVH *BLI_pbvh_new(void)
+{
+ PBVH *bvh = MEM_callocN(sizeof(PBVH), "pbvh");
+
+ return bvh;
+}
+
+void BLI_pbvh_free(PBVH *bvh)
+{
+ PBVHNode *node;
+ int i;
+
+ for(i = 0; i < bvh->totnode; ++i) {
+ node= &bvh->nodes[i];
+
+ if(node->flag & PBVH_Leaf) {
+ if(node->draw_buffers)
+ GPU_free_buffers(node->draw_buffers);
+ if(node->vert_indices)
+ MEM_freeN(node->vert_indices);
+ if(node->face_vert_indices)
+ MEM_freeN(node->face_vert_indices);
+ }
+ }
+
+ MEM_freeN(bvh->nodes);
+ MEM_freeN(bvh->prim_indices);
+ MEM_freeN(bvh);
+}
+
+static void pbvh_iter_begin(PBVHIter *iter, PBVH *bvh, BLI_pbvh_SearchCallback scb, void *search_data)
+{
+ iter->bvh= bvh;
+ iter->scb= scb;
+ iter->search_data= search_data;
+
+ iter->stack= iter->stackfixed;
+ iter->stackspace= STACK_FIXED_DEPTH;
+
+ iter->stack[0].node= bvh->nodes;
+ iter->stack[0].revisiting= 0;
+ iter->stacksize= 1;
+}
+
+static void pbvh_iter_end(PBVHIter *iter)
+{
+ if(iter->stackspace > STACK_FIXED_DEPTH)
+ MEM_freeN(iter->stack);
+}
+
+static void pbvh_stack_push(PBVHIter *iter, PBVHNode *node, int revisiting)
+{
+ if(iter->stacksize == iter->stackspace) {
+ PBVHStack *newstack;
+
+ iter->stackspace *= 2;
+ newstack= MEM_callocN(sizeof(PBVHStack)*iter->stackspace, "PBVHStack");
+ memcpy(newstack, iter->stack, sizeof(PBVHStack)*iter->stacksize);
+
+ if(iter->stackspace > STACK_FIXED_DEPTH)
+ MEM_freeN(iter->stack);
+ iter->stack= newstack;
+ }
+
+ iter->stack[iter->stacksize].node= node;
+ iter->stack[iter->stacksize].revisiting= revisiting;
+ iter->stacksize++;
+}
+
+static PBVHNode *pbvh_iter_next(PBVHIter *iter)
+{
+ PBVHNode *node;
+ int revisiting;
+ void *search_data;
+
+ /* purpose here is to traverse tree, visiting child nodes before their
+ parents, this order is necessary for e.g. computing bounding boxes */
+
+ while(iter->stacksize) {
+ /* pop node */
+ iter->stacksize--;
+ node= iter->stack[iter->stacksize].node;
+ revisiting= iter->stack[iter->stacksize].revisiting;
+
+ /* revisiting node already checked */
+ if(revisiting)
+ return node;
+
+ /* check search callback */
+ search_data= iter->search_data;
+
+ if(iter->scb && !iter->scb(node, search_data))
+ continue; /* don't traverse, outside of search zone */
+
+ if(node->flag & PBVH_Leaf) {
+ /* immediately hit leaf node */
+ return node;
+ }
+ else {
+ /* come back later when children are done */
+ pbvh_stack_push(iter, node, 1);
+
+ /* push two child nodes on the stack */
+ pbvh_stack_push(iter, iter->bvh->nodes+node->children_offset+1, 0);
+ pbvh_stack_push(iter, iter->bvh->nodes+node->children_offset, 0);
+ }
+ }
+
+ return NULL;
+}
+
+void BLI_pbvh_search_gather(PBVH *bvh,
+ BLI_pbvh_SearchCallback scb, void *search_data,
+ PBVHNode ***r_array, int *r_tot)
+{
+ PBVHIter iter;
+ PBVHNode **array= NULL, **newarray, *node;
+ int tot= 0, space= 0;
+
+ pbvh_iter_begin(&iter, bvh, scb, search_data);
+
+ while((node=pbvh_iter_next(&iter))) {
+ if(node->flag & PBVH_Leaf) {
+ if(tot == space) {
+ /* resize array if needed */
+ space= (tot == 0)? 32: space*2;
+ newarray= MEM_callocN(sizeof(PBVHNode)*space, "PBVHNodeSearch");
+
+ if(array) {
+ memcpy(newarray, array, sizeof(PBVHNode)*tot);
+ MEM_freeN(array);
+ }
+
+ array= newarray;
+ }
+
+ array[tot]= node;
+ tot++;
+ }
+ }
+
+ pbvh_iter_end(&iter);
+
+ *r_array= array;
+ *r_tot= tot;
+}
+
+void BLI_pbvh_search_callback(PBVH *bvh,
+ BLI_pbvh_SearchCallback scb, void *search_data,
+ BLI_pbvh_HitCallback hcb, void *hit_data)
+{
+ PBVHIter iter;
+ PBVHNode *node;
+
+ pbvh_iter_begin(&iter, bvh, scb, search_data);
+
+ while((node=pbvh_iter_next(&iter)))
+ if(node->flag & PBVH_Leaf)
+ hcb(node, hit_data);
+
+ pbvh_iter_end(&iter);
+}
+
+static int update_search_cb(PBVHNode *node, void *data_v)
+{
+ int flag= GET_INT_FROM_POINTER(data_v);
+
+ if(node->flag & PBVH_Leaf)
+ return (node->flag & flag);
+
+ return 1;
+}
+
+static void pbvh_update_normals(PBVH *bvh, PBVHNode **nodes,
+ int totnode, float (*face_nors)[3])
+{
+ float (*vnor)[3];
+ int n;
+
+ if(bvh->grids)
+ return;
+
+ /* could be per node to save some memory, but also means
+ we have to store for each vertex which node it is in */
+ vnor= MEM_callocN(sizeof(float)*3*bvh->totvert, "bvh temp vnors");
+
+ /* subtle assumptions:
+ - We know that for all edited vertices, the nodes with faces
+ adjacent to these vertices have been marked with PBVH_UpdateNormals.
+ This is true because if the vertex is inside the brush radius, the
+ bounding box of it's adjacent faces will be as well.
+ - However this is only true for the vertices that have actually been
+ edited, not for all vertices in the nodes marked for update, so we
+ can only update vertices marked with ME_VERT_PBVH_UPDATE.
+ */
+
+ #pragma omp parallel for private(n) schedule(static)
+ for(n = 0; n < totnode; n++) {
+ PBVHNode *node= nodes[n];
+
+ if((node->flag & PBVH_UpdateNormals)) {
+ int i, j, totface, *faces;
+
+ faces= node->prim_indices;
+ totface= node->totprim;
+
+ for(i = 0; i < totface; ++i) {
+ MFace *f= bvh->faces + faces[i];
+ float fn[3];
+ unsigned int *fv = &f->v1;
+ int sides= (f->v4)? 4: 3;
+
+ if(f->v4)
+ normal_quad_v3(fn, bvh->verts[f->v1].co, bvh->verts[f->v2].co,
+ bvh->verts[f->v3].co, bvh->verts[f->v4].co);
+ else
+ normal_tri_v3(fn, bvh->verts[f->v1].co, bvh->verts[f->v2].co,
+ bvh->verts[f->v3].co);
+
+ for(j = 0; j < sides; ++j) {
+ int v= fv[j];
+
+ if(bvh->verts[v].flag & ME_VERT_PBVH_UPDATE) {
+ /* this seems like it could be very slow but profile
+ does not show this, so just leave it for now? */
+ #pragma omp atomic
+ vnor[v][0] += fn[0];
+ #pragma omp atomic
+ vnor[v][1] += fn[1];
+ #pragma omp atomic
+ vnor[v][2] += fn[2];
+ }
+ }
+
+ if(face_nors)
+ copy_v3_v3(face_nors[faces[i]], fn);
+ }
+ }
+ }
+
+ #pragma omp parallel for private(n) schedule(static)
+ for(n = 0; n < totnode; n++) {
+ PBVHNode *node= nodes[n];
+
+ if(node->flag & PBVH_UpdateNormals) {
+ int i, *verts, totvert;
+
+ verts= node->vert_indices;
+ totvert= node->uniq_verts;
+
+ for(i = 0; i < totvert; ++i) {
+ const int v = verts[i];
+ MVert *mvert= &bvh->verts[v];
+
+ if(mvert->flag & ME_VERT_PBVH_UPDATE) {
+ float no[3];
+
+ copy_v3_v3(no, vnor[v]);
+ normalize_v3(no);
+
+ mvert->no[0] = (short)(no[0]*32767.0f);
+ mvert->no[1] = (short)(no[1]*32767.0f);
+ mvert->no[2] = (short)(no[2]*32767.0f);
+
+ mvert->flag &= ~ME_VERT_PBVH_UPDATE;
+ }
+ }
+
+ node->flag &= ~PBVH_UpdateNormals;
+ }
+ }
+
+ MEM_freeN(vnor);
+}
+
+static void pbvh_update_BB_redraw(PBVH *bvh, PBVHNode **nodes,
+ int totnode, int flag)
+{
+ int n;
+
+ /* update BB, redraw flag */
+ #pragma omp parallel for private(n) schedule(static)
+ for(n = 0; n < totnode; n++) {
+ PBVHNode *node= nodes[n];
+
+ if((flag & PBVH_UpdateBB) && (node->flag & PBVH_UpdateBB))
+ /* don't clear flag yet, leave it for flushing later */
+ update_node_vb(bvh, node);
+
+ if((flag & PBVH_UpdateOriginalBB) && (node->flag & PBVH_UpdateOriginalBB))
+ node->orig_vb= node->vb;
+
+ if((flag & PBVH_UpdateRedraw) && (node->flag & PBVH_UpdateRedraw))
+ node->flag &= ~PBVH_UpdateRedraw;
+ }
+}
+
+static void pbvh_update_draw_buffers(PBVH *bvh, PBVHNode **nodes, int totnode)
+{
+ PBVHNode *node;
+ int n;
+
+ /* can't be done in parallel with OpenGL */
+ for(n = 0; n < totnode; n++) {
+ node= nodes[n];
+
+ if(node->flag & PBVH_UpdateDrawBuffers) {
+ if(bvh->grids) {
+ GPU_update_grid_buffers(node->draw_buffers,
+ bvh->grids,
+ node->prim_indices,
+ node->totprim,
+ bvh->gridsize);
+ }
+ else {
+ GPU_update_mesh_buffers(node->draw_buffers,
+ bvh->verts,
+ node->vert_indices,
+ node->uniq_verts +
+ node->face_verts);
+ }
+
+ node->flag &= ~PBVH_UpdateDrawBuffers;
+ }
+ }
+}
+
+static int pbvh_flush_bb(PBVH *bvh, PBVHNode *node, int flag)
+{
+ int update= 0;
+
+ /* difficult to multithread well, we just do single threaded recursive */
+ if(node->flag & PBVH_Leaf) {
+ if(flag & PBVH_UpdateBB) {
+ update |= (node->flag & PBVH_UpdateBB);
+ node->flag &= ~PBVH_UpdateBB;
+ }
+
+ if(flag & PBVH_UpdateOriginalBB) {
+ update |= (node->flag & PBVH_UpdateOriginalBB);
+ node->flag &= ~PBVH_UpdateOriginalBB;
+ }
+
+ return update;
+ }
+ else {
+ update |= pbvh_flush_bb(bvh, bvh->nodes + node->children_offset, flag);
+ update |= pbvh_flush_bb(bvh, bvh->nodes + node->children_offset + 1, flag);
+
+ if(update & PBVH_UpdateBB)
+ update_node_vb(bvh, node);
+ if(update & PBVH_UpdateOriginalBB)
+ node->orig_vb= node->vb;
+ }
+
+ return update;
+}
+
+void BLI_pbvh_update(PBVH *bvh, int flag, float (*face_nors)[3])
+{
+ PBVHNode **nodes;
+ int totnode;
+
+ BLI_pbvh_search_gather(bvh, update_search_cb, SET_INT_IN_POINTER(flag),
+ &nodes, &totnode);
+
+ if(flag & PBVH_UpdateNormals)
+ pbvh_update_normals(bvh, nodes, totnode, face_nors);
+
+ if(flag & (PBVH_UpdateBB|PBVH_UpdateOriginalBB|PBVH_UpdateRedraw))
+ pbvh_update_BB_redraw(bvh, nodes, totnode, flag);
+
+ if(flag & PBVH_UpdateDrawBuffers)
+ pbvh_update_draw_buffers(bvh, nodes, totnode);
+
+ if(flag & (PBVH_UpdateBB|PBVH_UpdateOriginalBB))
+ pbvh_flush_bb(bvh, bvh->nodes, flag);
+
+ if(nodes) MEM_freeN(nodes);
+}
+
+void BLI_pbvh_redraw_BB(PBVH *bvh, float bb_min[3], float bb_max[3])
+{
+ PBVHIter iter;
+ PBVHNode *node;
+ BB bb;
+
+ BB_reset(&bb);
+
+ pbvh_iter_begin(&iter, bvh, NULL, NULL);
+
+ while((node=pbvh_iter_next(&iter)))
+ if(node->flag & PBVH_UpdateRedraw)
+ BB_expand_with_bb(&bb, &node->vb);
+
+ pbvh_iter_end(&iter);
+
+ copy_v3_v3(bb_min, bb.bmin);
+ copy_v3_v3(bb_max, bb.bmax);
+}
+
+void BLI_pbvh_get_grid_updates(PBVH *bvh, int clear, void ***gridfaces, int *totface)
+{
+ PBVHIter iter;
+ PBVHNode *node;
+ GHashIterator *hiter;
+ GHash *map;
+ void *face, **faces;
+ int i, tot;
+
+ map = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp);
+
+ pbvh_iter_begin(&iter, bvh, NULL, NULL);
+
+ while((node=pbvh_iter_next(&iter))) {
+ if(node->flag & PBVH_UpdateNormals) {
+ for(i = 0; i < node->totprim; ++i) {
+ face= bvh->gridfaces[node->prim_indices[i]];
+ if(!BLI_ghash_lookup(map, face))
+ BLI_ghash_insert(map, face, face);
+ }
+
+ if(clear)
+ node->flag &= ~PBVH_UpdateNormals;
+ }
+ }
+
+ pbvh_iter_end(&iter);
+
+ tot= BLI_ghash_size(map);
+ if(tot == 0) {
+ *totface= 0;
+ *gridfaces= NULL;
+ BLI_ghash_free(map, NULL, NULL);
+ return;
+ }
+
+ faces= MEM_callocN(sizeof(void*)*tot, "PBVH Grid Faces");
+
+ for(hiter = BLI_ghashIterator_new(map), i = 0;
+ !BLI_ghashIterator_isDone(hiter);
+ BLI_ghashIterator_step(hiter), ++i)
+ faces[i]= BLI_ghashIterator_getKey(hiter);
+
+ BLI_ghash_free(map, NULL, NULL);
+
+ *totface= tot;
+ *gridfaces= faces;
+}
+
+/***************************** Node Access ***********************************/
+
+void BLI_pbvh_node_mark_update(PBVHNode *node)
+{
+ node->flag |= PBVH_UpdateNormals|PBVH_UpdateBB|PBVH_UpdateOriginalBB|PBVH_UpdateDrawBuffers|PBVH_UpdateRedraw;
+}
+
+void BLI_pbvh_node_get_verts(PBVH *bvh, PBVHNode *node, int **vert_indices, MVert **verts)
+{
+ if(vert_indices) *vert_indices= node->vert_indices;
+ if(verts) *verts= bvh->verts;
+}
+
+void BLI_pbvh_node_num_verts(PBVH *bvh, PBVHNode *node, int *uniquevert, int *totvert)
+{
+ if(bvh->grids) {
+ if(totvert) *totvert= node->totprim*bvh->gridsize*bvh->gridsize;
+ if(uniquevert) *uniquevert= *totvert;
+ }
+ else {
+ if(totvert) *totvert= node->uniq_verts + node->face_verts;
+ if(uniquevert) *uniquevert= node->uniq_verts;
+ }
+}
+
+void BLI_pbvh_node_get_grids(PBVH *bvh, PBVHNode *node, int **grid_indices, int *totgrid, int *maxgrid, int *gridsize, DMGridData ***griddata, DMGridAdjacency **gridadj)
+{
+ if(bvh->grids) {
+ if(grid_indices) *grid_indices= node->prim_indices;
+ if(totgrid) *totgrid= node->totprim;
+ if(maxgrid) *maxgrid= bvh->totgrid;
+ if(gridsize) *gridsize= bvh->gridsize;
+ if(griddata) *griddata= bvh->grids;
+ if(gridadj) *gridadj= bvh->gridadj;
+ }
+ else {
+ if(grid_indices) *grid_indices= NULL;
+ if(totgrid) *totgrid= 0;
+ if(maxgrid) *maxgrid= 0;
+ if(gridsize) *gridsize= 0;
+ if(griddata) *griddata= NULL;
+ if(gridadj) *gridadj= NULL;
+ }
+}
+
+void BLI_pbvh_node_get_BB(PBVHNode *node, float bb_min[3], float bb_max[3])
+{
+ copy_v3_v3(bb_min, node->vb.bmin);
+ copy_v3_v3(bb_max, node->vb.bmax);
+}
+
+void BLI_pbvh_node_get_original_BB(PBVHNode *node, float bb_min[3], float bb_max[3])
+{
+ copy_v3_v3(bb_min, node->orig_vb.bmin);
+ copy_v3_v3(bb_max, node->orig_vb.bmax);
+}
+
+/********************************* Raycast ***********************************/
+
+typedef struct {
+ /* Ray */
+ float start[3];
+ int sign[3];
+ float inv_dir[3];
+ int original;
+} RaycastData;
+
+/* Adapted from here: http://www.gamedev.net/community/forums/topic.asp?topic_id=459973 */
+static int ray_aabb_intersect(PBVHNode *node, void *data_v)
+{
+ RaycastData *ray = data_v;
+ float bb_min[3], bb_max[3], bbox[2][3];
+ float tmin, tmax, tymin, tymax, tzmin, tzmax;
+
+ if(ray->original)
+ BLI_pbvh_node_get_original_BB(node, bb_min, bb_max);
+ else
+ BLI_pbvh_node_get_BB(node, bb_min, bb_max);
+
+ copy_v3_v3(bbox[0], bb_min);
+ copy_v3_v3(bbox[1], bb_max);
+
+ tmin = (bbox[ray->sign[0]][0] - ray->start[0]) * ray->inv_dir[0];
+ tmax = (bbox[1-ray->sign[0]][0] - ray->start[0]) * ray->inv_dir[0];
+
+ tymin = (bbox[ray->sign[1]][1] - ray->start[1]) * ray->inv_dir[1];
+ tymax = (bbox[1-ray->sign[1]][1] - ray->start[1]) * ray->inv_dir[1];
+
+ if((tmin > tymax) || (tymin > tmax))
+ return 0;
+ if(tymin > tmin)
+ tmin = tymin;
+ if(tymax < tmax)
+ tmax = tymax;
+
+ tzmin = (bbox[ray->sign[2]][2] - ray->start[2]) * ray->inv_dir[2];
+ tzmax = (bbox[1-ray->sign[2]][2] - ray->start[2]) * ray->inv_dir[2];
+
+ if((tmin > tzmax) || (tzmin > tmax))
+ return 0;
+
+ return 1;
+
+ /* XXX: Not sure about this?
+ if(tzmin > tmin)
+ tmin = tzmin;
+ if(tzmax < tmax)
+ tmax = tzmax;
+ return ((tmin < t1) && (tmax > t0));
+ */
+
+}
+
+void BLI_pbvh_raycast(PBVH *bvh, BLI_pbvh_HitCallback cb, void *data,
+ float ray_start[3], float ray_normal[3], int original)
+{
+ RaycastData rcd;
+
+ copy_v3_v3(rcd.start, ray_start);
+ rcd.inv_dir[0] = 1.0f / ray_normal[0];
+ rcd.inv_dir[1] = 1.0f / ray_normal[1];
+ rcd.inv_dir[2] = 1.0f / ray_normal[2];
+ rcd.sign[0] = rcd.inv_dir[0] < 0;
+ rcd.sign[1] = rcd.inv_dir[1] < 0;
+ rcd.sign[2] = rcd.inv_dir[2] < 0;
+ rcd.original = original;
+
+ BLI_pbvh_search_callback(bvh, ray_aabb_intersect, &rcd, cb, data);
+}
+
+/* XXX: Code largely copied from bvhutils.c, could be unified */
+/* Returns 1 if a better intersection has been found */
+static int ray_face_intersection(float ray_start[3], float ray_normal[3],
+ float *t0, float *t1, float *t2, float *t3,
+ float *fdist)
+{
+ int hit = 0;
+
+ do
+ {
+ float dist = FLT_MAX;
+
+ if(!isect_ray_tri_epsilon_v3(ray_start, ray_normal, t0, t1, t2,
+ &dist, NULL, 0.1f))
+ dist = FLT_MAX;
+
+ if(dist >= 0 && dist < *fdist) {
+ hit = 1;
+ *fdist = dist;
+ }
+
+ t1 = t2;
+ t2 = t3;
+ t3 = NULL;
+
+ } while(t2);
+
+ return hit;
+}
+
+int BLI_pbvh_node_raycast(PBVH *bvh, PBVHNode *node, float (*origco)[3],
+ float ray_start[3], float ray_normal[3], float *dist)
+{
+ int hit= 0;
+
+ if(bvh->faces) {
+ MVert *vert = bvh->verts;
+ int *faces= node->prim_indices;
+ int *face_verts= node->face_vert_indices;
+ int totface= node->totprim;
+ int i;
+
+ for(i = 0; i < totface; ++i) {
+ MFace *f = bvh->faces + faces[i];
+
+ if(origco) {
+ /* intersect with backuped original coordinates */
+ hit |= ray_face_intersection(ray_start, ray_normal,
+ origco[face_verts[i*4+0]],
+ origco[face_verts[i*4+1]],
+ origco[face_verts[i*4+2]],
+ f->v4? origco[face_verts[i*4+3]]: NULL,
+ dist);
+ }
+ else {
+ /* intersect with current coordinates */
+ hit |= ray_face_intersection(ray_start, ray_normal,
+ vert[f->v1].co,
+ vert[f->v2].co,
+ vert[f->v3].co,
+ f->v4 ? vert[f->v4].co : NULL,
+ dist);
+ }
+ }
+ }
+ else {
+ int totgrid= node->totprim;
+ int gridsize= bvh->gridsize;
+ int i, x, y;
+
+ for(i = 0; i < totgrid; ++i) {
+ DMGridData *grid= bvh->grids[node->prim_indices[i]];
+
+ for(y = 0; y < gridsize-1; ++y) {
+ for(x = 0; x < gridsize-1; ++x) {
+ if(origco) {
+ hit |= ray_face_intersection(ray_start, ray_normal,
+ origco[y*gridsize + x],
+ origco[y*gridsize + x+1],
+ origco[(y+1)*gridsize + x+1],
+ origco[(y+1)*gridsize + x],
+ dist);
+ }
+ else {
+ hit |= ray_face_intersection(ray_start, ray_normal,
+ grid[y*gridsize + x].co,
+ grid[y*gridsize + x+1].co,
+ grid[(y+1)*gridsize + x+1].co,
+ grid[(y+1)*gridsize + x].co,
+ dist);
+ }
+ }
+ }
+
+ if(origco)
+ origco += gridsize*gridsize;
+ }
+ }
+
+ return hit;
+}
+
+#include "BIF_gl.h"
+#include "BIF_glutil.h"
+
+void BLI_pbvh_node_draw(PBVHNode *node, void *data)
+{
+#if 0
+ /* XXX: Just some quick code to show leaf nodes in different colors */
+ float col[3]; int i;
+
+ if(0) { //is_partial) {
+ col[0] = (rand() / (float)RAND_MAX); col[1] = col[2] = 0.6;
+ }
+ else {
+ srand((long long)node);
+ for(i = 0; i < 3; ++i)
+ col[i] = (rand() / (float)RAND_MAX) * 0.3 + 0.7;
+ }
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, col);
+
+ glColor3f(1, 0, 0);
+#endif
+ GPU_draw_buffers(node->draw_buffers);
+}
+
+/* Adapted from:
+ http://www.gamedev.net/community/forums/topic.asp?topic_id=512123
+ Returns true if the AABB is at least partially within the frustum
+ (ok, not a real frustum), false otherwise.
+*/
+int BLI_pbvh_node_planes_contain_AABB(PBVHNode *node, void *data)
+{
+ float (*planes)[4] = data;
+ int i, axis;
+ float vmin[3], vmax[3], bb_min[3], bb_max[3];
+
+ BLI_pbvh_node_get_BB(node, bb_min, bb_max);
+
+ for(i = 0; i < 4; ++i) {
+ for(axis = 0; axis < 3; ++axis) {
+ if(planes[i][axis] > 0) {
+ vmin[axis] = bb_min[axis];
+ vmax[axis] = bb_max[axis];
+ }
+ else {
+ vmin[axis] = bb_max[axis];
+ vmax[axis] = bb_min[axis];
+ }
+ }
+
+ if(dot_v3v3(planes[i], vmin) + planes[i][3] > 0)
+ return 0;
+ }
+
+ return 1;
+}
+
+void BLI_pbvh_draw(PBVH *bvh, float (*planes)[4], float (*face_nors)[3])
+{
+ BLI_pbvh_update(bvh, PBVH_UpdateNormals|PBVH_UpdateDrawBuffers, face_nors);
+
+ if(planes) {
+ BLI_pbvh_search_callback(bvh, BLI_pbvh_node_planes_contain_AABB,
+ planes, BLI_pbvh_node_draw, NULL);
+ }
+ else {
+ BLI_pbvh_search_callback(bvh, NULL, NULL, BLI_pbvh_node_draw, NULL);
+ }
+}
+
diff --git a/source/blender/blenlib/intern/scanfill.c b/source/blender/blenlib/intern/scanfill.c
index b89adbefc79..4265ee088eb 100644
--- a/source/blender/blenlib/intern/scanfill.c
+++ b/source/blender/blenlib/intern/scanfill.c
@@ -35,12 +35,11 @@
#include "MEM_guardedalloc.h"
-#include "BLI_blenlib.h"
-
-#include "BLI_util.h"
#include "DNA_listBase.h"
#include "DNA_mesh_types.h"
+
#include "BLI_editVert.h"
+#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BLI_scanfill.h"
#include "BLI_callbacks.h"
diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c
index dbf1f5100a6..c830e5fc2c8 100644
--- a/source/blender/blenlib/intern/storage.c
+++ b/source/blender/blenlib/intern/storage.c
@@ -87,13 +87,13 @@
#include "MEM_guardedalloc.h"
#include "DNA_listBase.h"
-#include "BLI_blenlib.h"
-#include "BLI_storage.h"
-#include "BLI_storage_types.h"
-#include "BLI_util.h"
+#include "BLI_listbase.h"
#include "BLI_linklist.h"
-
+#include "BLI_path_util.h"
+#include "BLI_storage.h"
+#include "BLI_storage_types.h"
+#include "BLI_string.h"
#include "BKE_utildefines.h"
/* vars: */
diff --git a/source/blender/blenlib/intern/winstuff.c b/source/blender/blenlib/intern/winstuff.c
index 16295fc2680..107ece8ebed 100644
--- a/source/blender/blenlib/intern/winstuff.c
+++ b/source/blender/blenlib/intern/winstuff.c
@@ -39,8 +39,8 @@
#include "MEM_guardedalloc.h"
-#include "BLI_blenlib.h"
-#include "BLI_util.h"
+#include "BLI_path_util.h"
+#include "BLI_string.h"
#define WIN32_SKIP_HKEY_PROTECTION // need to use HKEY
#include "BLI_winstuff.h"
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 91f45c59444..e3ecc8ac2a2 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -140,9 +140,10 @@
#include "BKE_report.h"
#include "BKE_sca.h" // for init_actuator
#include "BKE_scene.h"
+#include "BKE_screen.h"
#include "BKE_softbody.h" // sbNew()
#include "BKE_bullet.h" // bsbNew()
-#include "BKE_sequence.h"
+#include "BKE_sequencer.h"
#include "BKE_texture.h" // for open_plugin_tex
#include "BKE_utildefines.h" // SWITCH_INT DATA ENDB DNA1 O_BINARY GLOB USER TEST REND
#include "BKE_idprop.h"
@@ -1695,12 +1696,6 @@ static void lib_link_fmodifiers(FileData *fd, ID *id, ListBase *list)
data->script = newlibadr(fd, id->lib, data->script);
}
break;
- case FMODIFIER_TYPE_SOUND:
- {
- FMod_Sound *data= (FMod_Sound *)fcm->data;
- data->sound = newlibadr(fd, id->lib, data->sound);
- }
- break;
}
}
}
@@ -1709,6 +1704,9 @@ static void lib_link_fcurves(FileData *fd, ID *id, ListBase *list)
{
FCurve *fcu;
+ if (list == NULL)
+ return;
+
/* relink ID-block references... */
for (fcu= list->first; fcu; fcu= fcu->next) {
/* driver data */
@@ -1855,6 +1853,9 @@ static void lib_link_nladata_strips(FileData *fd, ID *id, ListBase *list)
/* check strip's children */
lib_link_nladata_strips(fd, id, &strip->strips);
+ /* check strip's F-Curves */
+ lib_link_fcurves(fd, id, &strip->fcurves);
+
/* reassign the counted-reference to action */
strip->act = newlibadr_us(fd, id->lib, strip->act);
}
@@ -2392,7 +2393,9 @@ static void direct_link_armature(FileData *fd, bArmature *arm)
link_list(fd, &arm->bonebase);
arm->edbo= NULL;
arm->sketch = NULL;
+
arm->adt= newdataadr(fd, arm->adt);
+ direct_link_animdata(fd, arm->adt);
bone=arm->bonebase.first;
while (bone) {
@@ -3073,6 +3076,12 @@ static void direct_link_pointcache_list(FileData *fd, ListBase *ptcaches, PointC
}
}
+void lib_link_partdeflect(FileData *fd, ID *id, PartDeflect *pd)
+{
+ if(pd && pd->tex)
+ pd->tex=newlibadr_us(fd, id->lib, pd->tex);
+}
+
static void lib_link_particlesettings(FileData *fd, Main *main)
{
ParticleSettings *part;
@@ -3089,6 +3098,9 @@ static void lib_link_particlesettings(FileData *fd, Main *main)
part->eff_group = newlibadr(fd, part->id.lib, part->eff_group);
part->bb_ob = newlibadr(fd, part->id.lib, part->bb_ob);
+ lib_link_partdeflect(fd, &part->id, part->pd);
+ lib_link_partdeflect(fd, &part->id, part->pd2);
+
if(part->effector_weights)
part->effector_weights->group = newlibadr(fd, part->id.lib, part->effector_weights->group);
@@ -3125,15 +3137,22 @@ static void lib_link_particlesettings(FileData *fd, Main *main)
}
}
+static void direct_link_partdeflect(PartDeflect *pd)
+{
+ if(pd) pd->rng=NULL;
+}
+
static void direct_link_particlesettings(FileData *fd, ParticleSettings *part)
{
part->adt= newdataadr(fd, part->adt);
part->pd= newdataadr(fd, part->pd);
part->pd2= newdataadr(fd, part->pd2);
- if(part->effector_weights)
- part->effector_weights = newdataadr(fd, part->effector_weights);
- else
+ direct_link_partdeflect(part->pd);
+ direct_link_partdeflect(part->pd2);
+
+ part->effector_weights = newdataadr(fd, part->effector_weights);
+ if(!part->effector_weights)
part->effector_weights = BKE_add_effector_weights(part->eff_group);
link_list(fd, &part->dupliweights);
@@ -3361,14 +3380,14 @@ static void direct_link_dverts(FileData *fd, int count, MDeformVert *mdverts)
}
}
-static void direct_link_mdisps(FileData *fd, int count, MDisps *mdisps)
+static void direct_link_mdisps(FileData *fd, int count, MDisps *mdisps, int external)
{
if(mdisps) {
int i;
for(i = 0; i < count; ++i) {
mdisps[i].disps = newdataadr(fd, mdisps[i].disps);
- if(!mdisps[i].disps)
+ if(!external && !mdisps[i].disps)
mdisps[i].totdisp = 0;
}
}
@@ -3381,14 +3400,18 @@ static void direct_link_customdata(FileData *fd, CustomData *data, int count)
int i = 0;
data->layers= newdataadr(fd, data->layers);
+ data->external= newdataadr(fd, data->external);
while (i < data->totlayer) {
CustomDataLayer *layer = &data->layers[i];
+ if(layer->flag & CD_FLAG_EXTERNAL)
+ layer->flag &= ~CD_FLAG_IN_MEMORY;
+
if (CustomData_verify_versions(data, i)) {
layer->data = newdataadr(fd, layer->data);
if(layer->type == CD_MDISPS)
- direct_link_mdisps(fd, count, layer->data);
+ direct_link_mdisps(fd, count, layer->data, layer->flag & CD_FLAG_EXTERNAL);
i++;
}
}
@@ -3881,8 +3904,7 @@ static void lib_link_object(FileData *fd, Main *main)
/* texture field */
if(ob->pd)
- if(ob->pd->tex)
- ob->pd->tex=newlibadr_us(fd, ob->id.lib, ob->pd->tex);
+ lib_link_partdeflect(fd, &ob->id, ob->pd);
if(ob->soft)
ob->soft->effector_weights->group = newlibadr(fd, ob->id.lib, ob->soft->effector_weights->group);
@@ -3969,9 +3991,8 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb)
clmd->sim_parms->reset = 0;
}
- if(clmd->sim_parms->effector_weights)
- clmd->sim_parms->effector_weights = newdataadr(fd, clmd->sim_parms->effector_weights);
- else
+ clmd->sim_parms->effector_weights = newdataadr(fd, clmd->sim_parms->effector_weights);
+ if(!clmd->sim_parms->effector_weights)
clmd->sim_parms->effector_weights = BKE_add_effector_weights(NULL);
}
@@ -3998,9 +4019,8 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb)
smd->domain->tex_shadow = NULL;
smd->domain->tex_wt = NULL;
- if(smd->domain->effector_weights)
- smd->domain->effector_weights = newdataadr(fd, smd->domain->effector_weights);
- else
+ smd->domain->effector_weights = newdataadr(fd, smd->domain->effector_weights);
+ if(!smd->domain->effector_weights)
smd->domain->effector_weights = BKE_add_effector_weights(NULL);
direct_link_pointcache_list(fd, &(smd->domain->ptcaches[0]), &(smd->domain->point_cache[0]));
@@ -4108,12 +4128,6 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb)
SWITCH_INT(mmd->dynverts[a])
}
}
- else if (md->type==eModifierType_Multires) {
- MultiresModifierData *mmd = (MultiresModifierData*) md;
-
- mmd->undo_verts = newdataadr(fd, mmd->undo_verts);
- mmd->undo_signal = !!mmd->undo_verts;
- }
}
}
@@ -4205,8 +4219,7 @@ static void direct_link_object(FileData *fd, Object *ob)
}
ob->pd= newdataadr(fd, ob->pd);
- if(ob->pd)
- ob->pd->rng=NULL;
+ direct_link_partdeflect(ob->pd);
ob->soft= newdataadr(fd, ob->soft);
if(ob->soft) {
SoftBody *sb= ob->soft;
@@ -4224,9 +4237,8 @@ static void direct_link_object(FileData *fd, Object *ob)
}
}
- if(sb->effector_weights)
- sb->effector_weights = newdataadr(fd, sb->effector_weights);
- else
+ sb->effector_weights = newdataadr(fd, sb->effector_weights);
+ if(!sb->effector_weights)
sb->effector_weights = BKE_add_effector_weights(NULL);
direct_link_pointcache_list(fd, &sb->ptcaches, &sb->pointcache);
@@ -4350,6 +4362,7 @@ static void lib_link_scene(FileData *fd, Main *main)
Base *base, *next;
Sequence *seq;
SceneRenderLayer *srl;
+ TimeMarker *marker;
sce= main->scene.first;
while(sce) {
@@ -4392,6 +4405,7 @@ static void lib_link_scene(FileData *fd, Main *main)
if(seq->ipo) seq->ipo= newlibadr_us(fd, sce->id.lib, seq->ipo);
if(seq->scene) seq->scene= newlibadr(fd, sce->id.lib, seq->scene);
if(seq->sound) {
+ seq->sound_handle= NULL;
if(seq->type == SEQ_HD_SOUND)
seq->type = SEQ_SOUND;
else
@@ -4404,6 +4418,17 @@ static void lib_link_scene(FileData *fd, Main *main)
seq->anim= 0;
}
SEQ_END
+
+#ifdef DURIAN_CAMERA_SWITCH
+ for(marker= sce->markers.first; marker; marker= marker->next) {
+ if(marker->camera) {
+ marker->camera= newlibadr(fd, sce->id.lib, marker->camera);
+ }
+ }
+#endif
+
+ if(sce->ed)
+ seq_update_muting(sce->ed);
if(sce->nodetree) {
lib_link_ntree(fd, &sce->id, sce->nodetree);
@@ -4438,10 +4463,13 @@ static void link_recurs_seq(FileData *fd, ListBase *lb)
static void direct_link_paint(FileData *fd, Paint **paint)
{
- (*paint)= newdataadr(fd, (*paint));
- if(*paint) {
- (*paint)->paint_cursor= NULL;
- (*paint)->brushes= newdataadr(fd, (*paint)->brushes);
+ Paint *p;
+
+ p= (*paint)= newdataadr(fd, (*paint));
+ if(p) {
+ p->paint_cursor= NULL;
+ p->brushes= newdataadr(fd, p->brushes);
+ test_pointer_array(fd, (void**)&p->brushes);
}
}
@@ -4478,6 +4506,7 @@ static void direct_link_scene(FileData *fd, Scene *sce)
direct_link_paint(fd, (Paint**)&sce->toolsettings->wpaint);
sce->toolsettings->imapaint.paint.brushes= newdataadr(fd, sce->toolsettings->imapaint.paint.brushes);
+ test_pointer_array(fd, (void**)&sce->toolsettings->imapaint.paint.brushes);
sce->toolsettings->imapaint.paintcursor= NULL;
sce->toolsettings->particle.paintcursor= NULL;
@@ -4620,7 +4649,7 @@ static void direct_link_scene(FileData *fd, Scene *sce)
link_list(fd, &(sce->markers));
link_list(fd, &(sce->transform_spaces));
link_list(fd, &(sce->r.layers));
-
+
sce->nodetree= newdataadr(fd, sce->nodetree);
if(sce->nodetree)
direct_link_nodetree(fd, sce->nodetree);
@@ -5219,6 +5248,7 @@ static void direct_link_screen(FileData *fd, bScreen *sc)
if (sl->spacetype==SPACE_VIEW3D) {
View3D *v3d= (View3D*) sl;
v3d->bgpic= newdataadr(fd, v3d->bgpic);
+ v3d->flag |= V3D_INVALID_BACKBUF;
if(v3d->bgpic)
v3d->bgpic->iuser.ok= 1;
if(v3d->gpd) {
@@ -6113,7 +6143,8 @@ static void area_add_header_region(ScrArea *sa, ListBase *lb)
static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb)
{
ARegion *ar;
-
+ ARegion *ar_main;
+
if(sl) {
/* first channels for ipo action nla... */
switch(sl->spacetype) {
@@ -6172,12 +6203,24 @@ static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb)
ar->regiontype= RGN_TYPE_UI;
ar->alignment= RGN_ALIGN_TOP;
break;
+ case SPACE_SEQ:
+ ar_main = (ARegion*)lb->first;
+ for (; ar_main; ar_main = ar_main->next) {
+ if (ar_main->regiontype == RGN_TYPE_WINDOW)
+ break;
+ }
+ ar= MEM_callocN(sizeof(ARegion), "preview area for sequencer");
+ BLI_insertlinkbefore(lb, ar_main, ar);
+ ar->regiontype= RGN_TYPE_PREVIEW;
+ ar->alignment= RGN_ALIGN_TOP;
+ ar->flag |= RGN_FLAG_HIDDEN;
+ break;
case SPACE_VIEW3D:
/* toolbar */
ar= MEM_callocN(sizeof(ARegion), "toolbar for view3d");
BLI_addtail(lb, ar);
- ar->regiontype= RGN_TYPE_UI;
+ ar->regiontype= RGN_TYPE_TOOLS;
ar->alignment= RGN_ALIGN_LEFT;
ar->flag = RGN_FLAG_HIDDEN;
@@ -6185,7 +6228,7 @@ static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb)
ar= MEM_callocN(sizeof(ARegion), "tool properties for view3d");
BLI_addtail(lb, ar);
- ar->regiontype= RGN_TYPE_UI;
+ ar->regiontype= RGN_TYPE_TOOL_PROPS;
ar->alignment= RGN_ALIGN_BOTTOM|RGN_SPLIT_PREV;
ar->flag = RGN_FLAG_HIDDEN;
@@ -9802,7 +9845,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
ToolSettings *ts;
//PTCacheID *pid;
//ListBase pidlist;
- int i, a;
+ int a;
for(ob = main->object.first; ob; ob = ob->id.next) {
//BKE_ptcache_ids_from_object(&pidlist, ob);
@@ -9819,58 +9862,8 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
void *olddata = ob->data;
ob->data = me;
- if(me && me->id.lib==NULL && me->mr) { /* XXX - library meshes crash on loading most yoFrankie levels, the multires pointer gets invalid - Campbell */
- MultiresLevel *lvl;
- ModifierData *md;
- MultiresModifierData *mmd;
- DerivedMesh *dm, *orig;
-
- /* Load original level into the mesh */
- lvl = me->mr->levels.first;
- CustomData_free_layers(&me->vdata, CD_MVERT, lvl->totvert);
- CustomData_free_layers(&me->edata, CD_MEDGE, lvl->totedge);
- CustomData_free_layers(&me->fdata, CD_MFACE, lvl->totface);
- me->totvert = lvl->totvert;
- me->totedge = lvl->totedge;
- me->totface = lvl->totface;
- me->mvert = CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, NULL, me->totvert);
- me->medge = CustomData_add_layer(&me->edata, CD_MEDGE, CD_CALLOC, NULL, me->totedge);
- me->mface = CustomData_add_layer(&me->fdata, CD_MFACE, CD_CALLOC, NULL, me->totface);
- memcpy(me->mvert, me->mr->verts, sizeof(MVert) * me->totvert);
- for(i = 0; i < me->totedge; ++i) {
- me->medge[i].v1 = lvl->edges[i].v[0];
- me->medge[i].v2 = lvl->edges[i].v[1];
- }
- for(i = 0; i < me->totface; ++i) {
- me->mface[i].v1 = lvl->faces[i].v[0];
- me->mface[i].v2 = lvl->faces[i].v[1];
- me->mface[i].v3 = lvl->faces[i].v[2];
- me->mface[i].v4 = lvl->faces[i].v[3];
- }
-
- /* Add a multires modifier to the object */
- md = ob->modifiers.first;
- while(md && modifierType_getInfo(md->type)->type == eModifierTypeType_OnlyDeform)
- md = md->next;
- mmd = (MultiresModifierData*)modifier_new(eModifierType_Multires);
- BLI_insertlinkbefore(&ob->modifiers, md, mmd);
-
- multiresModifier_subdivide(mmd, ob, me->mr->level_count - 1, 1, 0);
-
- mmd->lvl = mmd->totlvl;
- orig = CDDM_from_mesh(me, NULL);
- dm = multires_dm_create_from_derived(mmd, 0, orig, ob, 0, 0);
-
- multires_load_old(dm, me->mr);
-
- MultiresDM_mark_as_modified(dm);
- dm->release(dm);
- orig->release(orig);
-
- /* Remove the old multires */
- multires_free(me->mr);
- me->mr = NULL;
- }
+ if(me && me->id.lib==NULL && me->mr) /* XXX - library meshes crash on loading most yoFrankie levels, the multires pointer gets invalid - Campbell */
+ multires_load_old(ob, me);
ob->data = olddata;
}
@@ -10234,7 +10227,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
}
}
- /* put 2.50 compatibility code here until next subversion bump */
+ if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 8))
{
{
Scene *sce= main->scene.first;
@@ -10270,8 +10263,226 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
ntree= ntree->id.next;
}
}
+ {
+ Object *ob=main->object.first;
+ while (ob) {
+ /* shaded mode disabled for now */
+ if (ob->dt == OB_SHADED) ob->dt = OB_TEXTURE;
+ ob=ob->id.next;
+ }
+ }
+
+ {
+ bScreen *screen;
+ ScrArea *sa;
+ SpaceLink *sl;
+
+ for(screen= main->screen.first; screen; screen= screen->id.next) {
+ for(sa= screen->areabase.first; sa; sa= sa->next) {
+ for(sl= sa->spacedata.first; sl; sl= sl->next) {
+ if(sl->spacetype==SPACE_VIEW3D) {
+ View3D *v3d = (View3D *)sl;
+ if (v3d->drawtype == OB_SHADED) v3d->drawtype = OB_SOLID;
+ }
+ }
+ }
+ }
+ }
+
+ /* only convert old 2.50 files with color management */
+ if (main->versionfile == 250) {
+ Scene *sce=main->scene.first;
+ Material *ma=main->mat.first;
+ World *wo=main->world.first;
+ int convert=0;
+
+ /* convert to new color management system:
+ while previously colors were stored as srgb,
+ now they are stored as linear internally,
+ with screen gamma correction in certain places in the UI. */
+
+ /* don't know what scene is active, so we'll convert if any scene has it enabled... */
+ while (sce) {
+ if(sce->r.color_mgt_flag & R_COLOR_MANAGEMENT)
+ convert=1;
+ sce=sce->id.next;
+ }
+
+ if (convert) {
+ while(ma) {
+ srgb_to_linearrgb_v3_v3(&ma->r, &ma->r);
+ srgb_to_linearrgb_v3_v3(&ma->specr, &ma->specr);
+ srgb_to_linearrgb_v3_v3(&ma->mirr, &ma->mirr);
+ srgb_to_linearrgb_v3_v3(ma->sss_col, ma->sss_col);
+ ma=ma->id.next;
+ }
+
+ while(wo) {
+ srgb_to_linearrgb_v3_v3(&wo->ambr, &wo->ambr);
+ srgb_to_linearrgb_v3_v3(&wo->horr, &wo->horr);
+ srgb_to_linearrgb_v3_v3(&wo->zenr, &wo->zenr);
+ wo=wo->id.next;
+ }
+ }
+ }
+ /* clear hanging 'temp' screens from older 2.5 files*/
+ if (main->versionfile == 250) {
+ bScreen *screen, *nextscreen;
+ wmWindowManager *wm;
+ wmWindow *win, *nextwin;
+
+ for(screen= main->screen.first; screen; screen= nextscreen) {
+ nextscreen= screen->id.next;
+
+ if (screen->full == SCREENTEMP) {
+ /* remove corresponding windows */
+ for(wm= main->wm.first; wm; wm=wm->id.next) {
+ for(win= wm->windows.first; win; win=nextwin) {
+ nextwin= win->next;
+
+ if(newlibadr(fd, wm->id.lib, win->screen) == screen)
+ BLI_freelinkN(&wm->windows, win);
+ }
+ }
+
+ /* remove screen itself */
+ free_libblock(&main->screen, screen);
+ }
+ }
+ }
+ }
+
+ if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 9))
+ {
+ Scene *sce;
+ Mesh *me;
+ Object *ob;
+
+ for(sce=main->scene.first; sce; sce=sce->id.next)
+ if(!sce->toolsettings->particle.selectmode)
+ sce->toolsettings->particle.selectmode= SCE_SELECT_PATH;
+
+ if (main->versionfile == 250 && main->subversionfile > 1) {
+ for(me=main->mesh.first; me; me=me->id.next)
+ multires_load_old_250(me);
+
+ for(ob=main->object.first; ob; ob=ob->id.next) {
+ MultiresModifierData *mmd = (MultiresModifierData *)modifiers_findByType(ob, eModifierType_Multires);
+
+ if(mmd) {
+ mmd->totlvl--;
+ mmd->lvl--;
+ mmd->sculptlvl= mmd->lvl;
+ mmd->renderlvl= mmd->lvl;
+ }
+ }
+ }
+ }
+
+ if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 10))
+ {
+ Object *ob;
+
+ /* properly initialise hair clothsim data on old files */
+ for(ob = main->object.first; ob; ob = ob->id.next) {
+ ModifierData *md;
+ for(md= ob->modifiers.first; md; md= md->next) {
+ if (md->type == eModifierType_Cloth) {
+ ClothModifierData *clmd = (ClothModifierData *)md;
+ if (clmd->sim_parms->velocity_smooth < 0.01f)
+ clmd->sim_parms->velocity_smooth = 0.f;
+ }
+ }
+ }
+ }
+
+ /* fix bad area setup in subversion 10 */
+ if (main->versionfile == 250 && main->subversionfile == 10)
+ {
+ /* fix for new view type in sequencer */
+ bScreen *screen;
+ ScrArea *sa;
+ SpaceLink *sl;
+
+
+ /* remove all preview window in wrong spaces */
+ for(screen= main->screen.first; screen; screen= screen->id.next) {
+ for(sa= screen->areabase.first; sa; sa= sa->next) {
+ for(sl= sa->spacedata.first; sl; sl= sl->next) {
+ if(sl->spacetype!=SPACE_SEQ) {
+ ARegion *ar;
+ ListBase *regionbase;
+
+ if (sl == sa->spacedata.first) {
+ regionbase = &sa->regionbase;
+ } else {
+ regionbase = &sl->regionbase;
+ }
+
+
+ for( ar = regionbase->first; ar; ar = ar->next) {
+ if (ar->regiontype == RGN_TYPE_PREVIEW)
+ break;
+ }
+
+ if (ar) {
+ SpaceType *st= BKE_spacetype_from_id(SPACE_SEQ);
+ BKE_area_region_free(st, ar);
+ BLI_freelinkN(regionbase, ar);
+ }
+ }
+ }
+ }
+ }
}
+ if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 11))
+ {
+ {
+ /* fix for new view type in sequencer */
+ bScreen *screen;
+ ScrArea *sa;
+ SpaceLink *sl;
+
+
+ for(screen= main->screen.first; screen; screen= screen->id.next) {
+ for(sa= screen->areabase.first; sa; sa= sa->next) {
+ for(sl= sa->spacedata.first; sl; sl= sl->next) {
+ if(sl->spacetype==SPACE_SEQ) {
+ ARegion *ar;
+ ARegion *ar_main;
+ ListBase *regionbase;
+ SpaceSeq *sseq = (SpaceSeq *)sl;
+
+ if (sl == sa->spacedata.first) {
+ regionbase = &sa->regionbase;
+ } else {
+ regionbase = &sl->regionbase;
+ }
+
+ if (sseq->view == 0) sseq->view = SEQ_VIEW_SEQUENCE;
+ if (sseq->mainb == 0) sseq->mainb = SEQ_DRAW_IMG_IMBUF;
+
+ ar_main = (ARegion*)regionbase->first;
+ for (; ar_main; ar_main = ar_main->next) {
+ if (ar_main->regiontype == RGN_TYPE_WINDOW)
+ break;
+ }
+ ar= MEM_callocN(sizeof(ARegion), "preview area for sequencer");
+ BLI_insertlinkbefore(regionbase, ar_main, ar);
+ ar->regiontype= RGN_TYPE_PREVIEW;
+ ar->alignment= RGN_ALIGN_TOP;
+ ar->flag |= RGN_FLAG_HIDDEN;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /* put 2.50 compatibility code here until next subversion bump */
+
+
/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
/* WATCH IT 2!: Userdef struct init has to be in src/usiblender.c! */
@@ -10624,13 +10835,6 @@ static void expand_fmodifiers(FileData *fd, Main *mainvar, ListBase *list)
expand_doit(fd, mainvar, data->script);
}
break;
- case FMODIFIER_TYPE_SOUND:
- {
- FMod_Sound *data= (FMod_Sound *)fcm->data;
-
- expand_doit(fd, mainvar, data->sound);
- }
- break;
}
}
}
@@ -10690,6 +10894,9 @@ static void expand_animdata_nlastrips(FileData *fd, Main *mainvar, ListBase *lis
/* check child strips */
expand_animdata_nlastrips(fd, mainvar, &strip->strips);
+ /* check F-Curves */
+ expand_fcurves(fd, mainvar, &strip->fcurves);
+
/* check F-Modifiers */
expand_fmodifiers(fd, mainvar, &strip->modifiers);
@@ -11302,6 +11509,28 @@ static void expand_scene(FileData *fd, Main *mainvar, Scene *sce)
if(sce->gpd)
expand_doit(fd, mainvar, sce->gpd);
+
+ if(sce->ed) {
+ Sequence *seq;
+
+ SEQ_BEGIN(sce->ed, seq) {
+ if(seq->scene) expand_doit(fd, mainvar, seq->scene);
+ if(seq->sound) expand_doit(fd, mainvar, seq->sound);
+ }
+ SEQ_END
+ }
+
+#ifdef DURIAN_CAMERA_SWITCH
+ {
+ TimeMarker *marker;
+
+ for(marker= sce->markers.first; marker; marker= marker->next) {
+ if(marker->camera) {
+ expand_doit(fd, mainvar, marker->camera);
+ }
+ }
+ }
+#endif
}
static void expand_camera(FileData *fd, Main *mainvar, Camera *ca)
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index 1cf5b466c65..caf06626235 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -160,7 +160,7 @@ Any case: direct data is ALWAYS after the lib block
#include "BKE_pointcache.h"
#include "BKE_report.h"
#include "BKE_screen.h" // for waitcursor
-#include "BKE_sequence.h"
+#include "BKE_sequencer.h"
#include "BKE_sound.h" /* ... and for samples */
#include "BKE_utildefines.h" // for defines
#include "BKE_modifier.h"
@@ -475,6 +475,8 @@ static void write_nodetree(WriteData *wd, bNodeTree *ntree)
/* for link_list() speed, we write per list */
+ if(ntree->adt) write_animdata(wd, ntree->adt);
+
for(node= ntree->nodes.first; node; node= node->next)
writestruct(wd, DATA, "bNode", 1, node);
@@ -932,8 +934,14 @@ static void write_fcurves(WriteData *wd, ListBase *fcurves)
ChannelDriver *driver= fcu->driver;
DriverTarget *dtar;
+ /* don't save compiled python bytecode */
+ void *expr_comp= driver->expr_comp;
+ driver->expr_comp= NULL;
+
writestruct(wd, DATA, "ChannelDriver", 1, driver);
+ driver->expr_comp= expr_comp; /* restore */
+
/* targets */
for (dtar= driver->targets.first; dtar; dtar= dtar->next) {
writestruct(wd, DATA, "DriverTarget", 1, dtar);
@@ -1214,12 +1222,6 @@ static void write_modifiers(WriteData *wd, ListBase *modbase)
writestruct(wd, DATA, "MDefInfluence", mmd->totinfluence, mmd->dyninfluences);
writedata(wd, DATA, sizeof(int)*mmd->totvert, mmd->dynverts);
}
- else if (md->type==eModifierType_Multires) {
- MultiresModifierData *mmd = (MultiresModifierData*) md;
-
- if(mmd->undo_verts)
- writestruct(wd, DATA, "MVert", mmd->undo_verts_tot, mmd->undo_verts);
- }
}
}
@@ -1440,23 +1442,29 @@ static void write_dverts(WriteData *wd, int count, MDeformVert *dvlist)
}
}
-static void write_mdisps(WriteData *wd, int count, MDisps *mdlist)
+static void write_mdisps(WriteData *wd, int count, MDisps *mdlist, int external)
{
if(mdlist) {
int i;
writestruct(wd, DATA, "MDisps", count, mdlist);
- for(i = 0; i < count; ++i) {
- if(mdlist[i].disps)
- writedata(wd, DATA, sizeof(float)*3*mdlist[i].totdisp, mdlist[i].disps);
+ if(!external) {
+ for(i = 0; i < count; ++i) {
+ if(mdlist[i].disps)
+ writedata(wd, DATA, sizeof(float)*3*mdlist[i].totdisp, mdlist[i].disps);
+ }
}
}
}
-static void write_customdata(WriteData *wd, int count, CustomData *data, int partial_type, int partial_count)
+static void write_customdata(WriteData *wd, ID *id, int count, CustomData *data, int partial_type, int partial_count)
{
int i;
+ /* write external customdata (not for undo) */
+ if(data->external && !wd->current)
+ CustomData_external_write(data, id, CD_MASK_MESH, count, 0);
+
writestruct(wd, DATA, "CustomDataLayer", data->maxlayer, data->layers);
for (i=0; i<data->totlayer; i++) {
@@ -1469,7 +1477,7 @@ static void write_customdata(WriteData *wd, int count, CustomData *data, int par
write_dverts(wd, count, layer->data);
}
else if (layer->type == CD_MDISPS) {
- write_mdisps(wd, count, layer->data);
+ write_mdisps(wd, count, layer->data, layer->flag & CD_FLAG_EXTERNAL);
}
else {
CustomData_file_write_info(layer->type, &structname, &structnum);
@@ -1486,6 +1494,9 @@ static void write_customdata(WriteData *wd, int count, CustomData *data, int par
printf("error: this CustomDataLayer must not be written to file\n");
}
}
+
+ if(data->external)
+ writestruct(wd, DATA, "CustomDataExternal", 1, data->external);
}
static void write_meshs(WriteData *wd, ListBase *idbase)
@@ -1504,18 +1515,18 @@ static void write_meshs(WriteData *wd, ListBase *idbase)
writedata(wd, DATA, sizeof(void *)*mesh->totcol, mesh->mat);
if(mesh->pv) {
- write_customdata(wd, mesh->pv->totvert, &mesh->vdata, -1, 0);
- write_customdata(wd, mesh->pv->totedge, &mesh->edata,
+ write_customdata(wd, &mesh->id, mesh->pv->totvert, &mesh->vdata, -1, 0);
+ write_customdata(wd, &mesh->id, mesh->pv->totedge, &mesh->edata,
CD_MEDGE, mesh->totedge);
- write_customdata(wd, mesh->pv->totface, &mesh->fdata,
+ write_customdata(wd, &mesh->id, mesh->pv->totface, &mesh->fdata,
CD_MFACE, mesh->totface);
}
else {
- write_customdata(wd, mesh->totvert, &mesh->vdata, -1, 0);
- write_customdata(wd, mesh->totedge, &mesh->edata, -1, 0);
- write_customdata(wd, mesh->totface, &mesh->fdata, -1, 0);
- write_customdata(wd, mesh->totloop, &mesh->ldata, -1, 0);
- write_customdata(wd, mesh->totpoly, &mesh->pdata, -1, 0);
+ write_customdata(wd, &mesh->id, mesh->totvert, &mesh->vdata, -1, 0);
+ write_customdata(wd, &mesh->id, mesh->totedge, &mesh->edata, -1, 0);
+ write_customdata(wd, &mesh->id, mesh->totface, &mesh->fdata, -1, 0);
+ write_customdata(wd, &mesh->id, mesh->totloop, &mesh->ldata, -1, 0);
+ write_customdata(wd, &mesh->id, mesh->totpoly, &mesh->pdata, -1, 0);
}
/* PMV data */
diff --git a/source/blender/collada/DocumentExporter.cpp b/source/blender/collada/DocumentExporter.cpp
index fac7b2c882a..d2543423097 100644
--- a/source/blender/collada/DocumentExporter.cpp
+++ b/source/blender/collada/DocumentExporter.cpp
@@ -21,7 +21,7 @@ extern "C"
{
#include "BKE_DerivedMesh.h"
#include "BKE_fcurve.h"
-#include "BLI_util.h"
+#include "BLI_path_util.h"
#include "BLI_fileops.h"
#include "ED_keyframing.h"
}
@@ -673,7 +673,7 @@ protected:
copy_m4_m4(local, mat);
}
- TransformBase::decompose(local, loc, rot, size);
+ TransformBase::decompose(local, loc, rot, NULL, size);
/*
// this code used to create a single <rotate> representing object rotation
diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp
index 83f0debb60d..575160ff84e 100644
--- a/source/blender/collada/DocumentImporter.cpp
+++ b/source/blender/collada/DocumentImporter.cpp
@@ -1,3 +1,7 @@
+// TODO:
+// * name imported objects
+// * import object rotation as euler
+
#include "COLLADAFWRoot.h"
#include "COLLADAFWIWriter.h"
#include "COLLADAFWStableHeaders.h"
@@ -48,9 +52,10 @@ extern "C"
#include "BKE_texture.h"
#include "BKE_fcurve.h"
#include "BKE_depsgraph.h"
-#include "BLI_util.h"
+#include "BLI_path_util.h"
#include "BKE_displist.h"
#include "BLI_math.h"
+#include "BKE_scene.h"
}
#include "BKE_armature.h"
#include "BKE_mesh.h"
@@ -91,12 +96,10 @@ extern "C"
#include <float.h>
// #define COLLADA_DEBUG
+#define ARMATURE_TEST
char *CustomData_get_layer_name(const struct CustomData *data, int type, int n);
-// armature module internal func, it's not good to use it here? (Arystan)
-struct EditBone *addEditBone(struct bArmature *arm, char *name);
-
const char *primTypeToStr(COLLADAFW::MeshPrimitive::PrimitiveType type)
{
using namespace COLLADAFW;
@@ -132,8 +135,10 @@ const char *geomTypeToStr(COLLADAFW::Geometry::GeometryType type)
return "SPLINE";
case COLLADAFW::Geometry::GEO_TYPE_CONVEX_MESH:
return "CONVEX_MESH";
+ case COLLADAFW::Geometry::GEO_TYPE_UNKNOWN:
+ default:
+ return "UNKNOWN";
}
- return "UNKNOWN";
}
// works for COLLADAFW::Node, COLLADAFW::Geometry
@@ -196,41 +201,16 @@ public:
switch(type) {
case COLLADAFW::Transformation::TRANSLATE:
- {
- COLLADAFW::Translate *tra = (COLLADAFW::Translate*)tm;
- COLLADABU::Math::Vector3& t = tra->getTranslation();
-
- unit_m4(cur);
- cur[3][0] = (float)t[0];
- cur[3][1] = (float)t[1];
- cur[3][2] = (float)t[2];
- }
+ dae_translate_to_mat4(tm, cur);
break;
case COLLADAFW::Transformation::ROTATE:
- {
- COLLADAFW::Rotate *ro = (COLLADAFW::Rotate*)tm;
- COLLADABU::Math::Vector3& raxis = ro->getRotationAxis();
- float angle = (float)(ro->getRotationAngle() * M_PI / 180.0f);
- float axis[] = {raxis[0], raxis[1], raxis[2]};
- float quat[4];
- float rot_copy[3][3];
- float mat[3][3];
- axis_angle_to_quat(quat, axis, angle);
-
- quat_to_mat4( cur,quat);
- }
+ dae_rotate_to_mat4(tm, cur);
break;
case COLLADAFW::Transformation::SCALE:
- {
- COLLADABU::Math::Vector3& s = ((COLLADAFW::Scale*)tm)->getScale();
- float size[3] = {(float)s[0], (float)s[1], (float)s[2]};
- size_to_mat4( cur,size);
- }
+ dae_scale_to_mat4(tm, cur);
break;
case COLLADAFW::Transformation::MATRIX:
- {
- unit_converter->mat4_from_dae(cur, ((COLLADAFW::Matrix*)tm)->getMatrix());
- }
+ dae_matrix_to_mat4(tm, cur);
break;
case COLLADAFW::Transformation::LOOKAT:
case COLLADAFW::Transformation::SKEW:
@@ -251,6 +231,42 @@ public:
}
}
}
+
+ void dae_rotate_to_mat4(COLLADAFW::Transformation *tm, float m[][4])
+ {
+ COLLADAFW::Rotate *ro = (COLLADAFW::Rotate*)tm;
+ COLLADABU::Math::Vector3& axis = ro->getRotationAxis();
+ float angle = (float)(ro->getRotationAngle() * M_PI / 180.0f);
+ float ax[] = {axis[0], axis[1], axis[2]};
+ // float quat[4];
+ // axis_angle_to_quat(quat, axis, angle);
+ // quat_to_mat4(m, quat);
+ axis_angle_to_mat4(m, ax, angle);
+ }
+
+ void dae_translate_to_mat4(COLLADAFW::Transformation *tm, float m[][4])
+ {
+ COLLADAFW::Translate *tra = (COLLADAFW::Translate*)tm;
+ COLLADABU::Math::Vector3& t = tra->getTranslation();
+
+ unit_m4(m);
+
+ m[3][0] = (float)t[0];
+ m[3][1] = (float)t[1];
+ m[3][2] = (float)t[2];
+ }
+
+ void dae_scale_to_mat4(COLLADAFW::Transformation *tm, float m[][4])
+ {
+ COLLADABU::Math::Vector3& s = ((COLLADAFW::Scale*)tm)->getScale();
+ float size[3] = {(float)s[0], (float)s[1], (float)s[2]};
+ size_to_mat4(m, size);
+ }
+
+ void dae_matrix_to_mat4(COLLADAFW::Transformation *tm, float m[][4])
+ {
+ unit_converter->dae_matrix_to_mat4(m, ((COLLADAFW::Matrix*)tm)->getMatrix());
+ }
};
// only for ArmatureImporter to "see" MeshImporter::get_object_by_geom_uid
@@ -264,7 +280,7 @@ public:
class AnimationImporterBase
{
public:
- virtual void change_eul_to_quat(Object *ob, bAction *act) = 0;
+ // virtual void change_eul_to_quat(Object *ob, bAction *act) = 0;
};
class ArmatureImporter : private TransformReader
@@ -390,7 +406,7 @@ private:
for (int i = 0; i < weight.getValuesCount(); i++)
weights.push_back(get_float_value(weight, i));
- unit_converter->mat4_from_dae(bind_shape_matrix, skin->getBindShapeMatrix());
+ unit_converter->dae_matrix_to_mat4(bind_shape_matrix, skin->getBindShapeMatrix());
}
void free()
@@ -407,7 +423,7 @@ private:
void add_joint(const COLLADABU::Math::Matrix4& matrix)
{
JointData jd;
- unit_converter->mat4_from_dae(jd.inv_bind_mat, matrix);
+ unit_converter->dae_matrix_to_mat4(jd.inv_bind_mat, matrix);
joint_data.push_back(jd);
}
@@ -481,7 +497,7 @@ private:
void link_armature(bContext *C, Object *ob, std::map<COLLADAFW::UniqueId, COLLADAFW::Node*>& joint_by_uid,
TransformReader *tm)
{
- tm->decompose(bind_shape_matrix, ob->loc, ob->rot, ob->size);
+ tm->decompose(bind_shape_matrix, ob->loc, ob->rot, NULL, ob->size);
ob->parent = ob_arm;
ob->partype = PARSKEL;
@@ -536,7 +552,7 @@ private:
}
DAG_scene_sort(CTX_data_scene(C));
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
}
@@ -592,7 +608,7 @@ private:
}
// TODO rename from Node "name" attrs later
- EditBone *bone = addEditBone(arm, (char*)get_joint_name(node));
+ EditBone *bone = ED_armature_edit_bone_add(arm, (char*)get_joint_name(node));
totbone++;
if (parent) bone->parent = parent;
@@ -708,6 +724,7 @@ private:
}
}
+#if 0
void set_euler_rotmode()
{
// just set rotmode = ROT_MODE_EUL on pose channel for each joint
@@ -738,6 +755,7 @@ private:
}
}
}
+#endif
Object *get_empty_for_leaves()
{
@@ -820,7 +838,7 @@ private:
set_leaf_bone_shapes(ob_arm);
- set_euler_rotmode();
+ // set_euler_rotmode();
}
@@ -992,6 +1010,7 @@ public:
BLI_snprintf(joint_path, count, "pose.bones[\"%s\"]", get_joint_name(node));
}
+#if 0
void fix_animation()
{
/* Change Euler rotation to Quaternion for bone animation */
@@ -1002,6 +1021,23 @@ public:
anim_importer->change_eul_to_quat(ob, ob->adt->action);
}
}
+#endif
+
+ // gives a world-space mat
+ bool get_joint_bind_mat(float m[][4], COLLADAFW::Node *joint)
+ {
+ std::map<COLLADAFW::UniqueId, SkinInfo>::iterator it;
+ bool found = false;
+ for (it = skin_by_data_uid.begin(); it != skin_by_data_uid.end(); it++) {
+ SkinInfo& skin = it->second;
+ if ((found = skin.get_joint_inv_bind_matrix(m, joint))) {
+ invert_m4(m);
+ break;
+ }
+ }
+
+ return found;
+ }
};
class MeshImporter : public MeshImporterBase
@@ -1080,6 +1116,9 @@ private:
}
break;
+ case COLLADAFW::MeshVertexData::DATA_TYPE_UNKNOWN:
+ default:
+ fprintf(stderr, "MeshImporter.getUV(): unknown data type\n");
}
}
};
@@ -1320,7 +1359,7 @@ private:
int count_new_tris(COLLADAFW::Mesh *mesh, Mesh *me)
{
COLLADAFW::MeshPrimitiveArray& prim_arr = mesh->getMeshPrimitives();
- int i, j, k;
+ int i, j;
int tottri = 0;
for (i = 0; i < prim_arr.getCount(); i++) {
@@ -1730,11 +1769,14 @@ private:
ArmatureImporter *armature_importer;
Scene *scene;
- std::map<COLLADAFW::UniqueId, std::vector<FCurve*> > uid_fcurve_map;
+ std::map<COLLADAFW::UniqueId, std::vector<FCurve*> > curve_map;
std::map<COLLADAFW::UniqueId, TransformReader::Animation> uid_animated_map;
- std::map<bActionGroup*, std::vector<FCurve*> > fcurves_actionGroup_map;
+ // std::map<bActionGroup*, std::vector<FCurve*> > fcurves_actionGroup_map;
+ std::map<COLLADAFW::UniqueId, const COLLADAFW::AnimationList*> animlist_map;
+ std::vector<FCurve*> unused_curves;
+ std::map<COLLADAFW::UniqueId, Object*> joint_objects;
- FCurve *create_fcurve(int array_index, char *rna_path)
+ FCurve *create_fcurve(int array_index, const char *rna_path)
{
FCurve *fcu = (FCurve*)MEM_callocN(sizeof(FCurve), "FCurve");
@@ -1757,6 +1799,105 @@ private:
calchandles_fcurve(fcu);
}
+ // create one or several fcurves depending on the number of parameters being animated
+ void animation_to_fcurves(COLLADAFW::AnimationCurve *curve)
+ {
+ COLLADAFW::FloatOrDoubleArray& input = curve->getInputValues();
+ COLLADAFW::FloatOrDoubleArray& output = curve->getOutputValues();
+ // COLLADAFW::FloatOrDoubleArray& intan = curve->getInTangentValues();
+ // COLLADAFW::FloatOrDoubleArray& outtan = curve->getOutTangentValues();
+ float fps = (float)FPS;
+ size_t dim = curve->getOutDimension();
+ int i;
+
+ std::vector<FCurve*>& fcurves = curve_map[curve->getUniqueId()];
+
+ if (dim == 1) {
+ FCurve *fcu = (FCurve*)MEM_callocN(sizeof(FCurve), "FCurve");
+
+ fcu->flag = (FCURVE_VISIBLE|FCURVE_AUTO_HANDLES|FCURVE_SELECTED);
+ // fcu->rna_path = BLI_strdupn(path, strlen(path));
+ fcu->array_index = 0;
+ //fcu->totvert = curve->getKeyCount();
+
+ // create beztriple for each key
+ for (i = 0; i < curve->getKeyCount(); i++) {
+ BezTriple bez;
+ memset(&bez, 0, sizeof(BezTriple));
+
+ // intangent
+ // bez.vec[0][0] = get_float_value(intan, i + i) * fps;
+ // bez.vec[0][1] = get_float_value(intan, i + i + 1);
+
+ // input, output
+ bez.vec[1][0] = get_float_value(input, i) * fps;
+ bez.vec[1][1] = get_float_value(output, i);
+
+ // outtangent
+ // bez.vec[2][0] = get_float_value(outtan, i + i) * fps;
+ // bez.vec[2][1] = get_float_value(outtan, i + i + 1);
+
+ bez.ipo = U.ipo_new; /* use default interpolation mode here... */
+ bez.f1 = bez.f2 = bez.f3 = SELECT;
+ bez.h1 = bez.h2 = HD_AUTO;
+ insert_bezt_fcurve(fcu, &bez, 0);
+ }
+
+ calchandles_fcurve(fcu);
+
+ fcurves.push_back(fcu);
+ }
+ else if(dim == 3) {
+ for (i = 0; i < dim; i++ ) {
+ FCurve *fcu = (FCurve*)MEM_callocN(sizeof(FCurve), "FCurve");
+
+ fcu->flag = (FCURVE_VISIBLE|FCURVE_AUTO_HANDLES|FCURVE_SELECTED);
+ // fcu->rna_path = BLI_strdupn(path, strlen(path));
+ fcu->array_index = 0;
+ //fcu->totvert = curve->getKeyCount();
+
+ // create beztriple for each key
+ for (int j = 0; j < curve->getKeyCount(); j++) {
+ BezTriple bez;
+ memset(&bez, 0, sizeof(BezTriple));
+
+ // intangent
+ // bez.vec[0][0] = get_float_value(intan, j * 6 + i + i) * fps;
+ // bez.vec[0][1] = get_float_value(intan, j * 6 + i + i + 1);
+
+ // input, output
+ bez.vec[1][0] = get_float_value(input, j) * fps;
+ bez.vec[1][1] = get_float_value(output, j * 3 + i);
+
+ // outtangent
+ // bez.vec[2][0] = get_float_value(outtan, j * 6 + i + i) * fps;
+ // bez.vec[2][1] = get_float_value(outtan, j * 6 + i + i + 1);
+
+ bez.ipo = U.ipo_new; /* use default interpolation mode here... */
+ bez.f1 = bez.f2 = bez.f3 = SELECT;
+ bez.h1 = bez.h2 = HD_AUTO;
+ insert_bezt_fcurve(fcu, &bez, 0);
+ }
+
+ calchandles_fcurve(fcu);
+
+ fcurves.push_back(fcu);
+ }
+ }
+
+ for (std::vector<FCurve*>::iterator it = fcurves.begin(); it != fcurves.end(); it++)
+ unused_curves.push_back(*it);
+ }
+
+ void fcurve_deg_to_rad(FCurve *cu)
+ {
+ for (int i = 0; i < cu->totvert; i++) {
+ // TODO convert handles too
+ cu->bezt[i].vec[1][1] *= M_PI / 180.0f;
+ }
+ }
+
+#if 0
void make_fcurves_from_animation(COLLADAFW::AnimationCurve *curve,
COLLADAFW::FloatOrDoubleArray& input,
COLLADAFW::FloatOrDoubleArray& output,
@@ -1765,7 +1906,7 @@ private:
{
int i;
// char *path = "location";
- std::vector<FCurve*>& fcurves = uid_fcurve_map[curve->getUniqueId()];
+ std::vector<FCurve*>& fcurves = curve_map[curve->getUniqueId()];
if (dim == 1) {
// create fcurve
@@ -1834,49 +1975,36 @@ private:
}
}
}
+#endif
void add_fcurves_to_object(Object *ob, std::vector<FCurve*>& curves, char *rna_path, int array_index, Animation *animated)
{
- ID *id = &ob->id;
bAction *act;
- bActionGroup *grp = NULL;
- if (!ob->adt || !ob->adt->action) act = verify_adt_action(id, 1);
- else act = verify_adt_action(id, 0);
-
- if (!ob->adt || !ob->adt->action) {
- fprintf(stderr, "Cannot create anim data or action for this object. \n");
- return;
- }
+ if (!ob->adt || !ob->adt->action) act = verify_adt_action((ID*)&ob->id, 1);
+ else act = ob->adt->action;
- FCurve *fcu;
std::vector<FCurve*>::iterator it;
- int i = 0;
+ int i;
+#if 0
char *p = strstr(rna_path, "rotation_euler");
bool is_rotation = p && *(p + strlen("rotation_euler")) == '\0';
+
+ // convert degrees to radians for rotation
+ if (is_rotation)
+ fcurve_deg_to_rad(fcu);
+#endif
- for (it = curves.begin(); it != curves.end(); it++) {
- fcu = *it;
+ for (it = curves.begin(), i = 0; it != curves.end(); it++, i++) {
+ FCurve *fcu = *it;
fcu->rna_path = BLI_strdupn(rna_path, strlen(rna_path));
if (array_index == -1) fcu->array_index = i;
else fcu->array_index = array_index;
-
- // convert degrees to radians for rotation
- if (is_rotation) {
- for(int j = 0; j < fcu->totvert; j++) {
- float rot_intan = fcu->bezt[j].vec[0][1];
- float rot_output = fcu->bezt[j].vec[1][1];
- float rot_outtan = fcu->bezt[j].vec[2][1];
- fcu->bezt[j].vec[0][1] = rot_intan * M_PI / 180.0f;
- fcu->bezt[j].vec[1][1] = rot_output * M_PI / 180.0f;
- fcu->bezt[j].vec[2][1] = rot_outtan * M_PI / 180.0f;
- }
- }
-
+
if (ob->type == OB_ARMATURE) {
- bAction *act = ob->adt->action;
+ bActionGroup *grp = NULL;
const char *bone_name = get_joint_name(animated->node);
if (bone_name) {
@@ -1889,7 +2017,7 @@ private:
grp = (bActionGroup*)MEM_callocN(sizeof(bActionGroup), "bActionGroup");
grp->flag = AGRP_SELECTED;
- BLI_snprintf(grp->name, sizeof(grp->name), bone_name);
+ BLI_strncpy(grp->name, bone_name, sizeof(grp->name));
BLI_addtail(&act->groups, grp);
BLI_uniquename(&act->groups, grp, "Group", '.', offsetof(bActionGroup, name), 64);
@@ -1899,15 +2027,18 @@ private:
action_groups_add_channel(act, grp, fcu);
}
+#if 0
if (is_rotation) {
fcurves_actionGroup_map[grp].push_back(fcu);
}
+#endif
}
else {
BLI_addtail(&act->curves, fcu);
}
- i++;
+ // curve is used, so remove it from unused_curves
+ unused_curves.erase(std::remove(unused_curves.begin(), unused_curves.end(), fcu), unused_curves.end());
}
}
public:
@@ -1915,13 +2046,20 @@ public:
AnimationImporter(UnitConverter *conv, ArmatureImporter *arm, Scene *scene) :
TransformReader(conv), armature_importer(arm), scene(scene) { }
- bool write_animation( const COLLADAFW::Animation* anim )
+ ~AnimationImporter()
{
- float fps = (float)FPS;
+ // free unused FCurves
+ for (std::vector<FCurve*>::iterator it = unused_curves.begin(); it != unused_curves.end(); it++)
+ free_fcurve(*it);
+
+ if (unused_curves.size())
+ fprintf(stderr, "removed %u unused curves\n", unused_curves.size());
+ }
+ bool write_animation(const COLLADAFW::Animation* anim)
+ {
if (anim->getAnimationType() == COLLADAFW::Animation::ANIMATION_CURVE) {
COLLADAFW::AnimationCurve *curve = (COLLADAFW::AnimationCurve*)anim;
- size_t dim = curve->getOutDimension();
// XXX Don't know if it's necessary
// Should we check outPhysicalDimension?
@@ -1930,11 +2068,6 @@ public:
return true;
}
- COLLADAFW::FloatOrDoubleArray& input = curve->getInputValues();
- COLLADAFW::FloatOrDoubleArray& output = curve->getOutputValues();
- COLLADAFW::FloatOrDoubleArray& intan = curve->getInTangentValues();
- COLLADAFW::FloatOrDoubleArray& outtan = curve->getOutTangentValues();
-
// a curve can have mixed interpolation type,
// in this case curve->getInterpolationTypes returns a list of interpolation types per key
COLLADAFW::AnimationCurve::InterpolationType interp = curve->getInterpolationType();
@@ -1942,17 +2075,11 @@ public:
if (interp != COLLADAFW::AnimationCurve::INTERPOLATION_MIXED) {
switch (interp) {
case COLLADAFW::AnimationCurve::INTERPOLATION_LINEAR:
- // support this
- make_fcurves_from_animation(curve, input, output, intan, outtan, dim, fps);
- break;
case COLLADAFW::AnimationCurve::INTERPOLATION_BEZIER:
- // and this
- make_fcurves_from_animation(curve, input, output, intan, outtan, dim, fps);
+ animation_to_fcurves(curve);
break;
- case COLLADAFW::AnimationCurve::INTERPOLATION_CARDINAL:
- case COLLADAFW::AnimationCurve::INTERPOLATION_HERMITE:
- case COLLADAFW::AnimationCurve::INTERPOLATION_BSPLINE:
- case COLLADAFW::AnimationCurve::INTERPOLATION_STEP:
+ default:
+ // TODO there're also CARDINAL, HERMITE, BSPLINE and STEP types
fprintf(stderr, "CARDINAL, HERMITE, BSPLINE and STEP anim interpolation types not supported yet.\n");
break;
}
@@ -1970,19 +2097,22 @@ public:
}
// called on post-process stage after writeVisualScenes
- bool write_animation_list( const COLLADAFW::AnimationList* animationList )
+ bool write_animation_list(const COLLADAFW::AnimationList* animlist)
{
- const COLLADAFW::UniqueId& anim_list_id = animationList->getUniqueId();
+ const COLLADAFW::UniqueId& animlist_id = animlist->getUniqueId();
- // possible in case we cannot interpret some transform
- if (uid_animated_map.find(anim_list_id) == uid_animated_map.end()) {
+ animlist_map[animlist_id] = animlist;
+
+#if 0
+ // should not happen
+ if (uid_animated_map.find(animlist_id) == uid_animated_map.end()) {
return true;
}
// for bones rna_path is like: pose.bones["bone-name"].rotation
// what does this AnimationList animate?
- Animation& animated = uid_animated_map[anim_list_id];
+ Animation& animated = uid_animated_map[animlist_id];
Object *ob = animated.ob;
char rna_path[100];
@@ -2003,26 +2133,28 @@ public:
is_joint = true;
}
- const COLLADAFW::AnimationList::AnimationBindings& bindings = animationList->getAnimationBindings();
+ const COLLADAFW::AnimationList::AnimationBindings& bindings = animlist->getAnimationBindings();
switch (animated.tm->getTransformationType()) {
case COLLADAFW::Transformation::TRANSLATE:
+ case COLLADAFW::Transformation::SCALE:
{
+ bool loc = animated.tm->getTransformationType() == COLLADAFW::Transformation::TRANSLATE;
if (is_joint)
- BLI_snprintf(rna_path, sizeof(rna_path), "%s.location", joint_path);
+ BLI_snprintf(rna_path, sizeof(rna_path), "%s.%s", joint_path, loc ? "location" : "scale");
else
- BLI_strncpy(rna_path, "location", sizeof(rna_path));
+ BLI_strncpy(rna_path, loc ? "location" : "scale", sizeof(rna_path));
for (int i = 0; i < bindings.getCount(); i++) {
const COLLADAFW::AnimationList::AnimationBinding& binding = bindings[i];
COLLADAFW::UniqueId anim_uid = binding.animation;
- if (uid_fcurve_map.find(anim_uid) == uid_fcurve_map.end()) {
+ if (curve_map.find(anim_uid) == curve_map.end()) {
fprintf(stderr, "Cannot find FCurve by animation UID.\n");
continue;
}
- std::vector<FCurve*>& fcurves = uid_fcurve_map[anim_uid];
+ std::vector<FCurve*>& fcurves = curve_map[anim_uid];
switch (binding.animationClass) {
case COLLADAFW::AnimationList::POSITION_X:
@@ -2038,8 +2170,8 @@ public:
add_fcurves_to_object(ob, fcurves, rna_path, -1, &animated);
break;
default:
- fprintf(stderr, "AnimationClass %d is not supported for TRANSLATE transformation.\n",
- binding.animationClass);
+ fprintf(stderr, "AnimationClass %d is not supported for %s.\n",
+ binding.animationClass, loc ? "TRANSLATE" : "SCALE");
}
}
}
@@ -2058,12 +2190,12 @@ public:
const COLLADAFW::AnimationList::AnimationBinding& binding = bindings[i];
COLLADAFW::UniqueId anim_uid = binding.animation;
- if (uid_fcurve_map.find(anim_uid) == uid_fcurve_map.end()) {
+ if (curve_map.find(anim_uid) == curve_map.end()) {
fprintf(stderr, "Cannot find FCurve by animation UID.\n");
continue;
}
- std::vector<FCurve*>& fcurves = uid_fcurve_map[anim_uid];
+ std::vector<FCurve*>& fcurves = curve_map[anim_uid];
switch (binding.animationClass) {
case COLLADAFW::AnimationList::ANGLE:
@@ -2086,51 +2218,13 @@ public:
}
}
break;
- case COLLADAFW::Transformation::SCALE:
- {
- if (is_joint)
- BLI_snprintf(rna_path, sizeof(rna_path), "%s.scale", joint_path);
- else
- BLI_strncpy(rna_path, "scale", sizeof(rna_path));
-
- // same as for TRANSLATE
- for (int i = 0; i < bindings.getCount(); i++) {
- const COLLADAFW::AnimationList::AnimationBinding& binding = bindings[i];
- COLLADAFW::UniqueId anim_uid = binding.animation;
-
- if (uid_fcurve_map.find(anim_uid) == uid_fcurve_map.end()) {
- fprintf(stderr, "Cannot find FCurve by animation UID.\n");
- continue;
- }
-
- std::vector<FCurve*>& fcurves = uid_fcurve_map[anim_uid];
-
- switch (binding.animationClass) {
- case COLLADAFW::AnimationList::POSITION_X:
- add_fcurves_to_object(ob, fcurves, rna_path, 0, &animated);
- break;
- case COLLADAFW::AnimationList::POSITION_Y:
- add_fcurves_to_object(ob, fcurves, rna_path, 1, &animated);
- break;
- case COLLADAFW::AnimationList::POSITION_Z:
- add_fcurves_to_object(ob, fcurves, rna_path, 2, &animated);
- break;
- case COLLADAFW::AnimationList::POSITION_XYZ:
- add_fcurves_to_object(ob, fcurves, rna_path, -1, &animated);
- break;
- default:
- fprintf(stderr, "AnimationClass %d is not supported for SCALE transformation.\n",
- binding.animationClass);
- }
- }
- }
- break;
case COLLADAFW::Transformation::MATRIX:
case COLLADAFW::Transformation::SKEW:
case COLLADAFW::Transformation::LOOKAT:
fprintf(stderr, "Animation of MATRIX, SKEW and LOOKAT transformations is not supported yet.\n");
break;
}
+#endif
return true;
}
@@ -2140,9 +2234,10 @@ public:
float mat[4][4];
TransformReader::get_node_mat(mat, node, &uid_animated_map, ob);
if (ob)
- TransformReader::decompose(mat, ob->loc, ob->rot, ob->size);
+ TransformReader::decompose(mat, ob->loc, ob->rot, NULL, ob->size);
}
+#if 0
virtual void change_eul_to_quat(Object *ob, bAction *act)
{
bActionGroup *grp;
@@ -2166,7 +2261,7 @@ public:
char rna_path[100];
BLI_snprintf(joint_path, sizeof(joint_path), "pose.bones[\"%s\"]", grp->name);
- BLI_snprintf(rna_path, sizeof(rna_path), "%s.rotation_euler", joint_path);
+ BLI_snprintf(rna_path, sizeof(rna_path), "%s.rotation_quaternion", joint_path);
FCurve *quatcu[4] = {
create_fcurve(0, rna_path),
@@ -2175,6 +2270,12 @@ public:
create_fcurve(3, rna_path)
};
+ bPoseChannel *chan = get_pose_channel(ob->pose, grp->name);
+
+ float m4[4][4], irest[3][3];
+ invert_m4_m4(m4, chan->bone->arm_mat);
+ copy_m3_m4(irest, m4);
+
for (i = 0; i < 3; i++) {
FCurve *cu = eulcu[i];
@@ -2190,9 +2291,17 @@ public:
eulcu[2] ? evaluate_fcurve(eulcu[2], frame) : 0.0f
};
- float quat[4];
+ // make eul relative to bone rest pose
+ float rot[3][3], rel[3][3], quat[4];
+
+ /*eul_to_mat3(rot, eul);
- eul_to_quat( quat,eul);
+ mul_m3_m3m3(rel, irest, rot);
+
+ mat3_to_quat(quat, rel);
+ */
+
+ eul_to_quat(quat, eul);
for (int k = 0; k < 4; k++)
create_bezt(quatcu[k], frame, quat[k]);
@@ -2208,7 +2317,7 @@ public:
free_fcurve(eulcu[i]);
}
- get_pose_channel(ob->pose, grp->name)->rotmode = ROT_MODE_QUAT;
+ chan->rotmode = ROT_MODE_QUAT;
for (i = 0; i < 4; i++)
action_groups_add_channel(act, grp, quatcu[i]);
@@ -2218,7 +2327,581 @@ public:
for (pchan = (bPoseChannel*)ob->pose->chanbase.first; pchan; pchan = pchan->next) {
pchan->rotmode = ROT_MODE_QUAT;
}
- }
+ }
+#endif
+
+ // prerequisites:
+ // animlist_map - map animlist id -> animlist
+ // curve_map - map anim id -> curve(s)
+#ifdef ARMATURE_TEST
+ Object *translate_animation(COLLADAFW::Node *node,
+ std::map<COLLADAFW::UniqueId, Object*>& object_map,
+ std::map<COLLADAFW::UniqueId, COLLADAFW::Node*>& root_map,
+ COLLADAFW::Transformation::TransformationType tm_type,
+ Object *par_job = NULL)
+#else
+ void translate_animation(COLLADAFW::Node *node,
+ std::map<COLLADAFW::UniqueId, Object*>& object_map,
+ std::map<COLLADAFW::UniqueId, COLLADAFW::Node*>& root_map,
+ COLLADAFW::Transformation::TransformationType tm_type)
+#endif
+ {
+ bool is_rotation = tm_type == COLLADAFW::Transformation::ROTATE;
+ bool is_joint = node->getType() == COLLADAFW::Node::JOINT;
+ COLLADAFW::Node *root = root_map.find(node->getUniqueId()) == root_map.end() ? node : root_map[node->getUniqueId()];
+ Object *ob = is_joint ? armature_importer->get_armature_for_joint(node) : object_map[node->getUniqueId()];
+ const char *bone_name = is_joint ? get_joint_name(node) : NULL;
+
+ if (!ob) {
+ fprintf(stderr, "cannot find Object for Node with id=\"%s\"\n", node->getOriginalId().c_str());
+#ifdef ARMATURE_TEST
+ return NULL;
+#else
+ return;
+#endif
+ }
+
+ // frames at which to sample
+ std::vector<float> frames;
+
+ // for each <rotate>, <translate>, etc. there is a separate Transformation
+ const COLLADAFW::TransformationPointerArray& tms = node->getTransformations();
+
+ std::vector<FCurve*> old_curves;
+
+ int i;
+
+ // find frames at which to sample plus convert all keys to radians
+ for (i = 0; i < tms.getCount(); i++) {
+ COLLADAFW::Transformation *tm = tms[i];
+ COLLADAFW::Transformation::TransformationType type = tm->getTransformationType();
+
+ if (type == tm_type) {
+ const COLLADAFW::UniqueId& listid = tm->getAnimationList();
+
+ if (animlist_map.find(listid) != animlist_map.end()) {
+ const COLLADAFW::AnimationList *animlist = animlist_map[listid];
+ const COLLADAFW::AnimationList::AnimationBindings& bindings = animlist->getAnimationBindings();
+
+ if (bindings.getCount()) {
+ for (int j = 0; j < bindings.getCount(); j++) {
+ std::vector<FCurve*>& curves = curve_map[bindings[j].animation];
+ bool xyz = ((type == COLLADAFW::Transformation::TRANSLATE || type == COLLADAFW::Transformation::SCALE) && bindings[j].animationClass == COLLADAFW::AnimationList::POSITION_XYZ);
+
+ if ((!xyz && curves.size() == 1) || (xyz && curves.size() == 3)) {
+ std::vector<FCurve*>::iterator iter;
+
+ for (iter = curves.begin(); iter != curves.end(); iter++) {
+ FCurve *fcu = *iter;
+
+ if (is_rotation)
+ fcurve_deg_to_rad(fcu);
+
+ for (int k = 0; k < fcu->totvert; k++) {
+ float fra = fcu->bezt[k].vec[1][0];
+ if (std::find(frames.begin(), frames.end(), fra) == frames.end())
+ frames.push_back(fra);
+ }
+ }
+ }
+ else {
+ fprintf(stderr, "expected 1 or 3 curves, got %u\n", curves.size());
+ }
+
+ for (std::vector<FCurve*>::iterator it = curves.begin(); it != curves.end(); it++)
+ old_curves.push_back(*it);
+ }
+ }
+ }
+ }
+ }
+
+ sort(frames.begin(), frames.end());
+
+ float irest_dae[4][4];
+ float rest[4][4], irest[4][4];
+
+ if (is_joint) {
+ if (is_joint)
+ get_joint_rest_mat(irest_dae, root, node);
+ else
+ evaluate_transform_at_frame(irest_dae, node, 0.0f);
+ invert_m4(irest_dae);
+
+ Bone *bone = get_named_bone((bArmature*)ob->data, bone_name);
+ if (!bone) {
+ fprintf(stderr, "cannot find bone \"%s\"", bone_name);
+#ifdef ARMATURE_TEST
+ return NULL;
+#else
+ return;
+#endif
+ }
+
+ unit_m4(rest);
+ copy_m4_m4(rest, bone->arm_mat);
+ invert_m4_m4(irest, rest);
+ }
+
+ char rna_path[200];
+
+#ifdef ARMATURE_TEST
+ Object *job = get_joint_object(root, node, par_job);
+ FCurve *job_curves[4];
+#endif
+
+ if (frames.size() == 0) {
+#ifdef ARMATURE_TEST
+ return job;
+#else
+ return;
+#endif
+ }
+
+ const char *tm_str = NULL;
+ switch (tm_type) {
+ case COLLADAFW::Transformation::ROTATE:
+ tm_str = "rotation_quaternion";
+ break;
+ case COLLADAFW::Transformation::SCALE:
+ tm_str = "scale";
+ break;
+ case COLLADAFW::Transformation::TRANSLATE:
+ tm_str = "location";
+ break;
+ default:
+#ifdef ARMATURE_TEST
+ return job;
+#else
+ return;
+#endif
+ }
+
+ if (is_joint) {
+ char joint_path[200];
+ armature_importer->get_rna_path_for_joint(node, joint_path, sizeof(joint_path));
+ BLI_snprintf(rna_path, sizeof(rna_path), "%s.%s", joint_path, tm_str);
+ }
+ else {
+ strcpy(rna_path, tm_str);
+ }
+
+ // new curves
+ FCurve *newcu[4];
+ int totcu = is_rotation ? 4 : 3;
+
+ for (i = 0; i < totcu; i++) {
+ newcu[i] = create_fcurve(i, rna_path);
+#ifdef ARMATURE_TEST
+ job_curves[i] = create_fcurve(i, tm_str);
+#endif
+ }
+
+ std::vector<float>::iterator it;
+
+ // sample values at each frame
+ for (it = frames.begin(); it != frames.end(); it++) {
+ float fra = *it;
+
+ float mat[4][4];
+
+ unit_m4(mat);
+
+ // calc object-space mat
+ evaluate_transform_at_frame(mat, node, fra);
+
+ // for joints, we need a special matrix
+ if (is_joint) {
+ // special matrix: iR * M * iR_dae * R
+ // where R, iR are bone rest and inverse rest mats in world space (Blender bones),
+ // iR_dae is joint inverse rest matrix (DAE) and M is an evaluated joint world-space matrix (DAE)
+ float temp[4][4], par[4][4];
+
+ // calc M
+ calc_joint_parent_mat_rest(par, NULL, root, node);
+ mul_m4_m4m4(temp, mat, par);
+
+ // evaluate_joint_world_transform_at_frame(temp, NULL, , node, fra);
+
+ // calc special matrix
+ mul_serie_m4(mat, irest, temp, irest_dae, rest, NULL, NULL, NULL, NULL);
+ }
+
+ float val[4];
+
+ switch (tm_type) {
+ case COLLADAFW::Transformation::ROTATE:
+ mat4_to_quat(val, mat);
+ break;
+ case COLLADAFW::Transformation::SCALE:
+ mat4_to_size(val, mat);
+ break;
+ case COLLADAFW::Transformation::TRANSLATE:
+ copy_v3_v3(val, mat[3]);
+ break;
+ default:
+ break;
+ }
+
+ // add 4 or 3 keys
+ for (i = 0; i < totcu; i++) {
+ add_bezt(newcu[i], fra, val[i]);
+ }
+
+#ifdef ARMATURE_TEST
+ if (is_joint) {
+ evaluate_transform_at_frame(mat, node, fra);
+
+ switch (tm_type) {
+ case COLLADAFW::Transformation::ROTATE:
+ mat4_to_quat(val, mat);
+ break;
+ case COLLADAFW::Transformation::SCALE:
+ mat4_to_size(val, mat);
+ break;
+ case COLLADAFW::Transformation::TRANSLATE:
+ copy_v3_v3(val, mat[3]);
+ break;
+ default:
+ break;
+ }
+
+ for (i = 0; i < totcu; i++)
+ add_bezt(job_curves[i], fra, val[i]);
+ }
+#endif
+ }
+
+ verify_adt_action((ID*)&ob->id, 1);
+
+ ListBase *curves = &ob->adt->action->curves;
+ // no longer needed
+#if 0
+ // remove old curves
+ for (std::vector<FCurve*>::iterator it = old_curves.begin(); it != old_curves.end(); it++) {
+ if (is_joint)
+ action_groups_remove_channel(ob->adt->action, *it);
+ else
+ BLI_remlink(curves, *it);
+
+ // std::remove(unused_curves.begin(), unused_curves.end(), *it);
+ // free_fcurve(*it);
+ }
+#endif
+
+ // add curves
+ for (i = 0; i < totcu; i++) {
+ if (is_joint)
+ add_bone_fcurve(ob, node, newcu[i]);
+ else
+ BLI_addtail(curves, newcu[i]);
+
+#ifdef ARMATURE_TEST
+ if (is_joint)
+ BLI_addtail(&job->adt->action->curves, job_curves[i]);
+#endif
+ }
+
+ if (is_rotation) {
+ if (is_joint) {
+ bPoseChannel *chan = get_pose_channel(ob->pose, bone_name);
+ chan->rotmode = ROT_MODE_QUAT;
+ }
+ else {
+ ob->rotmode = ROT_MODE_QUAT;
+ }
+ }
+
+#ifdef ARMATURE_TEST
+ return job;
+#endif
+ }
+
+ // internal, better make it private
+ // warning: evaluates only rotation
+ // prerequisites: animlist_map, curve_map
+ void evaluate_transform_at_frame(float mat[4][4], COLLADAFW::Node *node, float fra)
+ {
+ const COLLADAFW::TransformationPointerArray& tms = node->getTransformations();
+
+ unit_m4(mat);
+
+ for (int i = 0; i < tms.getCount(); i++) {
+ COLLADAFW::Transformation *tm = tms[i];
+ COLLADAFW::Transformation::TransformationType type = tm->getTransformationType();
+ float m[4][4];
+
+ unit_m4(m);
+
+ if (!evaluate_animation(tm, m, fra)) {
+ switch (type) {
+ case COLLADAFW::Transformation::ROTATE:
+ dae_rotate_to_mat4(tm, m);
+ break;
+ case COLLADAFW::Transformation::TRANSLATE:
+ dae_translate_to_mat4(tm, m);
+ break;
+ case COLLADAFW::Transformation::SCALE:
+ dae_scale_to_mat4(tm, m);
+ break;
+ case COLLADAFW::Transformation::MATRIX:
+ dae_matrix_to_mat4(tm, m);
+ break;
+ default:
+ fprintf(stderr, "unsupported transformation type %d\n", type);
+ }
+ }
+
+ float temp[4][4];
+ copy_m4_m4(temp, mat);
+
+ mul_m4_m4m4(mat, m, temp);
+ }
+ }
+
+ bool evaluate_animation(COLLADAFW::Transformation *tm, float mat[4][4], float fra)
+ {
+ const COLLADAFW::UniqueId& listid = tm->getAnimationList();
+
+ if (animlist_map.find(listid) != animlist_map.end()) {
+ const COLLADAFW::AnimationList *animlist = animlist_map[listid];
+ const COLLADAFW::AnimationList::AnimationBindings& bindings = animlist->getAnimationBindings();
+
+ if (bindings.getCount()) {
+ for (int j = 0; j < bindings.getCount(); j++) {
+ std::vector<FCurve*>& curves = curve_map[bindings[j].animation];
+ COLLADAFW::AnimationList::AnimationClass animclass = bindings[j].animationClass;
+ COLLADAFW::Transformation::TransformationType type = tm->getTransformationType();
+ bool xyz = ((type == COLLADAFW::Transformation::TRANSLATE || type == COLLADAFW::Transformation::SCALE) && bindings[j].animationClass == COLLADAFW::AnimationList::POSITION_XYZ);
+
+ if (type == COLLADAFW::Transformation::ROTATE) {
+ if (curves.size() != 1) {
+ fprintf(stderr, "expected 1 curve, got %u\n", curves.size());
+ }
+ else {
+ if (animclass == COLLADAFW::AnimationList::ANGLE) {
+ COLLADABU::Math::Vector3& axis = ((COLLADAFW::Rotate*)tm)->getRotationAxis();
+ float ax[3] = {axis[0], axis[1], axis[2]};
+ float angle = evaluate_fcurve(curves[0], fra);
+ axis_angle_to_mat4(mat, ax, angle);
+
+ return true;
+ }
+ else {
+ // TODO support other animclasses
+ fprintf(stderr, "<rotate> animclass %d is not supported yet\n", bindings[j].animationClass);
+ }
+ }
+ }
+ else if (type == COLLADAFW::Transformation::SCALE || type == COLLADAFW::Transformation::TRANSLATE) {
+ if ((!xyz && curves.size() == 1) || (xyz && curves.size() == 3)) {
+ bool animated = true;
+ bool scale = (type == COLLADAFW::Transformation::SCALE);
+
+ float vec[3] = {0.0f, 0.0f, 0.0f};
+ if (scale)
+ vec[0] = vec[1] = vec[2] = 1.0f;
+
+ switch (animclass) {
+ case COLLADAFW::AnimationList::POSITION_X:
+ vec[0] = evaluate_fcurve(curves[0], fra);
+ break;
+ case COLLADAFW::AnimationList::POSITION_Y:
+ vec[1] = evaluate_fcurve(curves[0], fra);
+ break;
+ case COLLADAFW::AnimationList::POSITION_Z:
+ vec[2] = evaluate_fcurve(curves[0], fra);
+ break;
+ case COLLADAFW::AnimationList::POSITION_XYZ:
+ vec[0] = evaluate_fcurve(curves[0], fra);
+ vec[1] = evaluate_fcurve(curves[1], fra);
+ vec[2] = evaluate_fcurve(curves[2], fra);
+ break;
+ default:
+ fprintf(stderr, "<%s> animclass %d is not supported yet\n", scale ? "scale" : "translate", animclass);
+ animated = false;
+ break;
+ }
+
+ if (animated) {
+ if (scale)
+ size_to_mat4(mat, vec);
+ else
+ copy_v3_v3(mat[3], vec);
+ }
+
+ return animated;
+ }
+ else {
+ fprintf(stderr, "expected 1 or 3 curves, got %u, animclass is %d\n", curves.size(), animclass);
+ }
+ }
+ else {
+ // not very useful for user
+ fprintf(stderr, "animation of transformation %d is not supported yet\n", type);
+ }
+ }
+ }
+ }
+
+ return false;
+ }
+
+ // gives a world-space mat of joint at rest position
+ void get_joint_rest_mat(float mat[4][4], COLLADAFW::Node *root, COLLADAFW::Node *node)
+ {
+ // if bind mat is not available,
+ // use "current" node transform, i.e. all those tms listed inside <node>
+ if (!armature_importer->get_joint_bind_mat(mat, node)) {
+ float par[4][4], m[4][4];
+
+ calc_joint_parent_mat_rest(par, NULL, root, node);
+ get_node_mat(m, node, NULL, NULL);
+ mul_m4_m4m4(mat, m, par);
+ }
+ }
+
+ // gives a world-space mat, end's mat not included
+ bool calc_joint_parent_mat_rest(float mat[4][4], float par[4][4], COLLADAFW::Node *node, COLLADAFW::Node *end)
+ {
+ float m[4][4];
+
+ if (node == end) {
+ par ? copy_m4_m4(mat, par) : unit_m4(mat);
+ return true;
+ }
+
+ // use bind matrix if available or calc "current" world mat
+ if (!armature_importer->get_joint_bind_mat(m, node)) {
+ float temp[4][4];
+ get_node_mat(temp, node, NULL, NULL);
+ mul_m4_m4m4(m, temp, par);
+ }
+
+ COLLADAFW::NodePointerArray& children = node->getChildNodes();
+ for (int i = 0; i < children.getCount(); i++) {
+ if (calc_joint_parent_mat_rest(mat, m, children[i], end))
+ return true;
+ }
+
+ return false;
+ }
+
+#ifdef ARMATURE_TEST
+ Object *get_joint_object(COLLADAFW::Node *root, COLLADAFW::Node *node, Object *par_job)
+ {
+ if (joint_objects.find(node->getUniqueId()) == joint_objects.end()) {
+ Object *job = add_object(scene, OB_EMPTY);
+
+ rename_id((ID*)&job->id, (char*)get_joint_name(node));
+
+ job->lay = object_in_scene(job, scene)->lay = 2;
+
+ mul_v3_fl(job->size, 0.5f);
+ job->recalc |= OB_RECALC_OB;
+
+ verify_adt_action((ID*)&job->id, 1);
+
+ job->rotmode = ROT_MODE_QUAT;
+
+ float mat[4][4];
+ get_joint_rest_mat(mat, root, node);
+
+ if (par_job) {
+ float temp[4][4], ipar[4][4];
+ invert_m4_m4(ipar, par_job->obmat);
+ copy_m4_m4(temp, mat);
+ mul_m4_m4m4(mat, temp, ipar);
+ }
+
+ TransformBase::decompose(mat, job->loc, NULL, job->quat, job->size);
+
+ if (par_job) {
+ job->parent = par_job;
+
+ par_job->recalc |= OB_RECALC_OB;
+ job->parsubstr[0] = 0;
+ }
+
+ where_is_object(scene, job);
+
+ // after parenting and layer change
+ DAG_scene_sort(scene);
+
+ joint_objects[node->getUniqueId()] = job;
+ }
+
+ return joint_objects[node->getUniqueId()];
+ }
+#endif
+
+#if 0
+ // recursively evaluates joint tree until end is found, mat then is world-space matrix of end
+ // mat must be identity on enter, node must be root
+ bool evaluate_joint_world_transform_at_frame(float mat[4][4], float par[4][4], COLLADAFW::Node *node, COLLADAFW::Node *end, float fra)
+ {
+ float m[4][4];
+ if (par) {
+ float temp[4][4];
+ evaluate_transform_at_frame(temp, node, node == end ? fra : 0.0f);
+ mul_m4_m4m4(m, temp, par);
+ }
+ else {
+ evaluate_transform_at_frame(m, node, node == end ? fra : 0.0f);
+ }
+
+ if (node == end) {
+ copy_m4_m4(mat, m);
+ return true;
+ }
+ else {
+ COLLADAFW::NodePointerArray& children = node->getChildNodes();
+ for (int i = 0; i < children.getCount(); i++) {
+ if (evaluate_joint_world_transform_at_frame(mat, m, children[i], end, fra))
+ return true;
+ }
+ }
+
+ return false;
+ }
+#endif
+
+ void add_bone_fcurve(Object *ob, COLLADAFW::Node *node, FCurve *fcu)
+ {
+ const char *bone_name = get_joint_name(node);
+ bAction *act = ob->adt->action;
+
+ /* try to find group */
+ bActionGroup *grp = action_groups_find_named(act, bone_name);
+
+ /* no matching groups, so add one */
+ if (grp == NULL) {
+ /* Add a new group, and make it active */
+ grp = (bActionGroup*)MEM_callocN(sizeof(bActionGroup), "bActionGroup");
+
+ grp->flag = AGRP_SELECTED;
+ BLI_strncpy(grp->name, bone_name, sizeof(grp->name));
+
+ BLI_addtail(&act->groups, grp);
+ BLI_uniquename(&act->groups, grp, "Group", '.', offsetof(bActionGroup, name), 64);
+ }
+
+ /* add F-Curve to group */
+ action_groups_add_channel(act, grp, fcu);
+ }
+
+ void add_bezt(FCurve *fcu, float fra, float value)
+ {
+ BezTriple bez;
+ memset(&bez, 0, sizeof(BezTriple));
+ bez.vec[1][0] = fra;
+ bez.vec[1][1] = value;
+ bez.ipo = U.ipo_new; /* use default interpolation mode here... */
+ bez.f1 = bez.f2 = bez.f3 = SELECT;
+ bez.h1 = bez.h2 = HD_AUTO;
+ insert_bezt_fcurve(fcu, &bez, 0);
+ calchandles_fcurve(fcu);
+ }
};
/*
@@ -2248,6 +2931,11 @@ private:
std::map<COLLADAFW::UniqueId, Camera*> uid_camera_map;
std::map<COLLADAFW::UniqueId, Lamp*> uid_lamp_map;
std::map<Material*, TexIndexTextureArrayMap> material_texture_mapping_map;
+ std::map<COLLADAFW::UniqueId, Object*> object_map;
+ std::vector<const COLLADAFW::VisualScene*> vscenes;
+
+ std::map<COLLADAFW::UniqueId, COLLADAFW::Node*> root_map; // find root joint by child joint uid, for bone tree evaluation during resampling
+
// animation
// std::map<COLLADAFW::UniqueId, std::vector<FCurve*> > uid_fcurve_map;
// Nodes don't share AnimationLists (Arystan)
@@ -2256,7 +2944,7 @@ private:
public:
/** Constructor. */
- Writer(bContext *C, const char *filename) : mContext(C), mFilename(filename),
+ Writer(bContext *C, const char *filename) : mFilename(filename), mContext(C),
armature_importer(&unit_converter, &mesh_importer, &anim_importer, CTX_data_scene(C)),
mesh_importer(&armature_importer, CTX_data_scene(C)),
anim_importer(&unit_converter, &armature_importer, CTX_data_scene(C)) {}
@@ -2298,8 +2986,51 @@ public:
/** This method is called after the last write* method. No other methods will be called after this.*/
virtual void finish()
{
+#if 0
armature_importer.fix_animation();
+#endif
+
+ for (std::vector<const COLLADAFW::VisualScene*>::iterator it = vscenes.begin(); it != vscenes.end(); it++) {
+ const COLLADAFW::NodePointerArray& roots = (*it)->getRootNodes();
+
+ for (int i = 0; i < roots.getCount(); i++)
+ translate_anim_recursive(roots[i]);
+ }
+
+ }
+
+
+#ifdef ARMATURE_TEST
+ void translate_anim_recursive(COLLADAFW::Node *node, COLLADAFW::Node *par = NULL, Object *parob = NULL)
+ {
+ if (par && par->getType() == COLLADAFW::Node::JOINT) {
+ // par is root if there's no corresp. key in root_map
+ if (root_map.find(par->getUniqueId()) == root_map.end())
+ root_map[node->getUniqueId()] = par;
+ else
+ root_map[node->getUniqueId()] = root_map[par->getUniqueId()];
+ }
+
+ COLLADAFW::Transformation::TransformationType types[] = {
+ COLLADAFW::Transformation::ROTATE,
+ COLLADAFW::Transformation::SCALE,
+ COLLADAFW::Transformation::TRANSLATE
+ };
+
+ int i;
+ Object *ob;
+
+ for (i = 0; i < 3; i++)
+ ob = anim_importer.translate_animation(node, object_map, root_map, types[i]);
+
+ COLLADAFW::NodePointerArray &children = node->getChildNodes();
+ for (int i = 0; i < children.getCount(); i++) {
+ translate_anim_recursive(children[i], node, ob);
+ }
}
+#else
+
+#endif
/** When this method is called, the writer must write the global document asset.
@return The writer should return true, if writing succeeded, false otherwise.*/
@@ -2399,11 +3130,11 @@ public:
// check if object is not NULL
if (!ob) return;
+
+ object_map[node->getUniqueId()] = ob;
// if par was given make this object child of the previous
if (par && ob) {
- Object workob;
-
ob->parent = par;
// doing what 'set parent' operator does
@@ -2427,7 +3158,7 @@ public:
@return The writer should return true, if writing succeeded, false otherwise.*/
virtual bool writeVisualScene ( const COLLADAFW::VisualScene* visualScene )
{
- // This method is guaranteed to be called _after_ writeGeometry, writeMaterial, etc.
+ // this method called on post process after writeGeometry, writeMaterial, etc.
// for each <node> in <visual_scene>:
// create an Object
@@ -2437,15 +3168,15 @@ public:
// writeGeometry because <geometry> does not reference <node>,
// we link Objects with Meshes here
+ vscenes.push_back(visualScene);
+
// TODO: create a new scene except the selected <visual_scene> - use current blender
// scene for it
Scene *sce = CTX_data_scene(mContext);
+ const COLLADAFW::NodePointerArray& roots = visualScene->getRootNodes();
- for (int i = 0; i < visualScene->getRootNodes().getCount(); i++) {
- COLLADAFW::Node *node = visualScene->getRootNodes()[i];
- const COLLADAFW::Node::NodeType& type = node->getType();
-
- write_node(node, NULL, sce, NULL);
+ for (int i = 0; i < roots.getCount(); i++) {
+ write_node(roots[i], NULL, sce, NULL);
}
armature_importer.make_armatures(mContext);
@@ -2497,7 +3228,7 @@ public:
ma->mtex[i] = add_mtex();
ma->mtex[i]->texco = TEXCO_UV;
- ma->mtex[i]->tex = add_texture("texture");
+ ma->mtex[i]->tex = add_texture("Texture");
ma->mtex[i]->tex->type = TEX_IMAGE;
ma->mtex[i]->tex->imaflag &= ~TEX_USEALPHA;
ma->mtex[i]->tex->ima = uid_image_map[ima_uid];
@@ -2802,12 +3533,14 @@ public:
// this function is called only for animations that pass COLLADAFW::validate
virtual bool writeAnimation( const COLLADAFW::Animation* anim )
{
+ // return true;
return anim_importer.write_animation(anim);
}
// called on post-process stage after writeVisualScenes
virtual bool writeAnimationList( const COLLADAFW::AnimationList* animationList )
{
+ // return true;
return anim_importer.write_animation_list(animationList);
}
diff --git a/source/blender/collada/collada_internal.h b/source/blender/collada/collada_internal.h
index 32c3e7af874..278cd37ac66 100644
--- a/source/blender/collada/collada_internal.h
+++ b/source/blender/collada/collada_internal.h
@@ -26,7 +26,7 @@ public:
// TODO need also for angle conversion, time conversion...
- void mat4_from_dae(float out[][4], const COLLADABU::Math::Matrix4& in)
+ void dae_matrix_to_mat4(float out[][4], const COLLADABU::Math::Matrix4& in)
{
// in DAE, matrices use columns vectors, (see comments in COLLADABUMathMatrix4.h)
// so here, to make a blender matrix, we swap columns and rows
@@ -58,10 +58,13 @@ public:
class TransformBase
{
public:
- void decompose(float mat[][4], float *loc, float *rot, float *size)
+ void decompose(float mat[][4], float *loc, float eul[3], float quat[4], float *size)
{
- mat4_to_size( size,mat);
- mat4_to_eul( rot,mat);
+ mat4_to_size(size, mat);
+ if (eul)
+ mat4_to_eul(eul, mat);
+ if (quat)
+ mat4_to_quat(quat, mat);
copy_v3_v3(loc, mat[3]);
}
};
diff --git a/source/blender/editors/CMakeLists.txt b/source/blender/editors/CMakeLists.txt
index eb427ad34d6..596b190307d 100644
--- a/source/blender/editors/CMakeLists.txt
+++ b/source/blender/editors/CMakeLists.txt
@@ -71,6 +71,10 @@ IF(WITH_FFMPEG)
ADD_DEFINITIONS(-DWITH_FFMPEG)
ENDIF(WITH_FFMPEG)
+IF(WITH_OPENMP)
+ ADD_DEFINITIONS(-DPARALLEL=1)
+ENDIF(WITH_OPENMP)
+
IF(NOT WITH_ELBEEM)
ADD_DEFINITIONS(-DDISABLE_ELBEEM)
ENDIF(NOT WITH_ELBEEM)
diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c
index 24a8fb445c7..0a71f79f132 100644
--- a/source/blender/editors/animation/anim_channels_defines.c
+++ b/source/blender/editors/animation/anim_channels_defines.c
@@ -2340,13 +2340,10 @@ static void achannel_setting_widget_cb(bContext *C, void *poin, void *poin2)
static void achannel_setting_visible_widget_cb(bContext *C, void *ale_npoin, void *dummy_poin)
{
bAnimListElem *ale_setting= (bAnimListElem *)ale_npoin;
- int prevLevel=0, matchLevel=0;
- short vizOn = 0;
-
bAnimContext ac;
ListBase anim_data = {NULL, NULL};
- bAnimListElem *ale, *match=NULL;
int filter;
+ short vizOn = 0;
/* send notifiers before doing anything else... */
WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
@@ -2374,91 +2371,8 @@ static void achannel_setting_visible_widget_cb(bContext *C, void *ale_npoin, voi
filter= ANIMFILTER_CHANNELS;
ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype);
- /* find the channel that got changed */
- for (ale= anim_data.first; ale; ale= ale->next) {
- /* compare data, and type as main way of identifying the channel */
- if ((ale->data == ale_setting->data) && (ale->type == ale_setting->type)) {
- /* we also have to check the ID, this is assigned to, since a block may have multiple users */
- // TODO: is the owner-data more revealing?
- if (ale->id == ale_setting->id) {
- match= ale;
- break;
- }
- }
- }
- if (match == NULL) {
- printf("ERROR: no channel matching the one changed was found \n");
- BLI_freelistN(&anim_data);
- return;
- }
- else {
- bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale_setting);
-
- /* get the level of the channel that was affected
- * - we define the level as simply being the offset for the start of the channel
- */
- matchLevel= (acf->get_offset)? acf->get_offset(&ac, ale_setting) : 0;
- }
-
- /* flush up?
- * - only flush up if the current state is now enabled
- * (otherwise, it's too much work to force the parents to be inactive too)
- */
- if (vizOn) {
- /* go backwards in the list, until the highest-ranking element (by indention has been covered) */
- for (ale= match->prev; ale; ale= ale->prev) {
- bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale);
- int level;
-
- /* get the level of the current channel traversed
- * - we define the level as simply being the offset for the start of the channel
- */
- level= (acf->get_offset)? acf->get_offset(&ac, ale) : 0;
-
- /* if the level is 'less than' (i.e. more important) the previous channel,
- * flush the new status...
- */
- if (level < matchLevel)
- ANIM_channel_setting_set(&ac, ale, ACHANNEL_SETTING_VISIBLE, vizOn);
- /* however, if the level is 'greater than' (i.e. less important than the previous channel,
- * stop searching, since we've already reached the bottom of another hierarchy
- */
- else if (level > matchLevel)
- break;
-
- /* store this level as the 'old' level now */
- prevLevel= level;
- }
- }
-
- /* flush down (always) */
- {
- /* go forwards in the list, until the lowest-ranking element (by indention has been covered) */
- for (ale= match->next; ale; ale= ale->next) {
- bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale);
- int level;
-
- /* get the level of the current channel traversed
- * - we define the level as simply being the offset for the start of the channel
- */
- level= (acf->get_offset)? acf->get_offset(&ac, ale) : 0;
-
- /* if the level is 'greater than' (i.e. less important) the channel that was changed,
- * flush the new status...
- */
- if (level > matchLevel)
- ANIM_channel_setting_set(&ac, ale, ACHANNEL_SETTING_VISIBLE, vizOn);
- /* however, if the level is 'less than or equal to' the channel that was changed,
- * (i.e. the current channel is as important if not more important than the changed channel)
- * then we should stop, since we've found the last one of the children we should flush
- */
- else
- break;
-
- /* store this level as the 'old' level now */
- prevLevel= level;
- }
- }
+ /* call API method to flush the setting */
+ ANIM_visibility_flush_anim_channels(&ac, &anim_data, ale_setting, vizOn);
/* free temp data */
BLI_freelistN(&anim_data);
@@ -2481,13 +2395,7 @@ static void achannel_setting_slider_cb(bContext *C, void *id_poin, void *fcu_poi
cfra= (float)CFRA;
/* get flags for keyframing */
- if (IS_AUTOKEY_FLAG(INSERTNEEDED))
- flag |= INSERTKEY_NEEDED;
- if (IS_AUTOKEY_FLAG(AUTOMATKEY))
- flag |= INSERTKEY_MATRIX;
- if (IS_AUTOKEY_MODE(scene, EDITKEYS))
- flag |= INSERTKEY_REPLACE;
-
+ flag = ANIM_get_keyframing_flags(scene, 1);
/* get RNA pointer, and resolve the path */
RNA_id_pointer_create(id, &id_ptr);
@@ -2524,13 +2432,7 @@ static void achannel_setting_slider_shapekey_cb(bContext *C, void *key_poin, voi
cfra= (float)CFRA;
/* get flags for keyframing */
- if (IS_AUTOKEY_FLAG(INSERTNEEDED))
- flag |= INSERTKEY_NEEDED;
- if (IS_AUTOKEY_FLAG(AUTOMATKEY))
- flag |= INSERTKEY_MATRIX;
- if (IS_AUTOKEY_MODE(scene, EDITKEYS))
- flag |= INSERTKEY_REPLACE;
-
+ flag = ANIM_get_keyframing_flags(scene, 1);
/* get RNA pointer, and resolve the path */
RNA_id_pointer_create((ID *)key, &id_ptr);
diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c
index 01ab7bd530c..0c77c2b0010 100644
--- a/source/blender/editors/animation/anim_channels_edit.c
+++ b/source/blender/editors/animation/anim_channels_edit.c
@@ -86,9 +86,9 @@
#include "WM_types.h"
/* ************************************************************************** */
-/* CHANNELS API */
+/* CHANNELS API - Exposed API */
-/* -------------------------- Exposed API ----------------------------------- */
+/* -------------------------- Selection ------------------------------------- */
/* Set the given animation-channel as the active one for the active context */
// TODO: extend for animdata types...
@@ -352,6 +352,137 @@ void ANIM_deselect_anim_channels (void *data, short datatype, short test, short
BLI_freelistN(&anim_data);
}
+/* ---------------------------- Graph Editor ------------------------------------- */
+
+/* Flush visibility (for Graph Editor) changes up/down hierarchy for changes in the given setting
+ * - anim_data: list of the all the anim channels that can be chosen
+ * -> filtered using ANIMFILTER_CHANNELS only, since if we took VISIBLE too,
+ * then the channels under closed expanders get ignored...
+ * - ale_setting: the anim channel (not in the anim_data list directly, though occuring there)
+ * with the new state of the setting that we want flushed up/down the hierarchy
+ * - vizOn: whether the visibility setting has been enabled or disabled
+ */
+void ANIM_visibility_flush_anim_channels (bAnimContext *ac, ListBase *anim_data, bAnimListElem *ale_setting, short vizOn)
+{
+ bAnimListElem *ale, *match=NULL;
+ int prevLevel=0, matchLevel=0;
+
+ /* find the channel that got changed */
+ for (ale= anim_data->first; ale; ale= ale->next) {
+ /* compare data, and type as main way of identifying the channel */
+ if ((ale->data == ale_setting->data) && (ale->type == ale_setting->type)) {
+ /* we also have to check the ID, this is assigned to, since a block may have multiple users */
+ // TODO: is the owner-data more revealing?
+ if (ale->id == ale_setting->id) {
+ match= ale;
+ break;
+ }
+ }
+ }
+ if (match == NULL) {
+ printf("ERROR: no channel matching the one changed was found \n");
+ return;
+ }
+ else {
+ bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale_setting);
+
+ /* get the level of the channel that was affected
+ * - we define the level as simply being the offset for the start of the channel
+ */
+ matchLevel= (acf->get_offset)? acf->get_offset(ac, ale_setting) : 0;
+ }
+
+ /* flush up?
+ * - only flush up if the current state is now enabled
+ * (otherwise, it's too much work to force the parents to be inactive too)
+ */
+ if (vizOn) {
+ /* go backwards in the list, until the highest-ranking element (by indention has been covered) */
+ for (ale= match->prev; ale; ale= ale->prev) {
+ bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale);
+ int level;
+
+ /* get the level of the current channel traversed
+ * - we define the level as simply being the offset for the start of the channel
+ */
+ level= (acf->get_offset)? acf->get_offset(ac, ale) : 0;
+
+ /* if the level is 'less than' (i.e. more important) the level we're matching
+ * but also 'less than' the level just tried (i.e. only the 1st group above grouped F-Curves,
+ * when toggling visibility of F-Curves, gets flushed), flush the new status...
+ */
+ if (level < prevLevel)
+ ANIM_channel_setting_set(ac, ale, ACHANNEL_SETTING_VISIBLE, vizOn);
+ /* however, if the level is 'greater than' (i.e. less important than the previous channel,
+ * stop searching, since we've already reached the bottom of another hierarchy
+ */
+ else if (level > matchLevel)
+ break;
+
+ /* store this level as the 'old' level now */
+ prevLevel= level;
+ }
+ }
+
+ /* flush down (always) */
+ {
+ /* go forwards in the list, until the lowest-ranking element (by indention has been covered) */
+ for (ale= match->next; ale; ale= ale->next) {
+ bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale);
+ int level;
+
+ /* get the level of the current channel traversed
+ * - we define the level as simply being the offset for the start of the channel
+ */
+ level= (acf->get_offset)? acf->get_offset(ac, ale) : 0;
+
+ /* if the level is 'greater than' (i.e. less important) the channel that was changed,
+ * flush the new status...
+ */
+ if (level > matchLevel)
+ ANIM_channel_setting_set(ac, ale, ACHANNEL_SETTING_VISIBLE, vizOn);
+ /* however, if the level is 'less than or equal to' the channel that was changed,
+ * (i.e. the current channel is as important if not more important than the changed channel)
+ * then we should stop, since we've found the last one of the children we should flush
+ */
+ else
+ break;
+
+ /* store this level as the 'old' level now */
+ prevLevel= level;
+ }
+ }
+}
+
+/* -------------------------- F-Curves ------------------------------------- */
+
+/* Delete the given F-Curve from its AnimData block */
+void ANIM_fcurve_delete_from_animdata (bAnimContext *ac, AnimData *adt, FCurve *fcu)
+{
+ /* - if no AnimData, we've got nowhere to remove the F-Curve from
+ * (this doesn't guarantee that the F-Curve is in there, but at least we tried
+ * - if no F-Curve, there is nothing to remove
+ */
+ if (ELEM(NULL, adt, fcu))
+ return;
+
+ /* remove from whatever list it came from
+ * - Action Group
+ * - Action
+ * - Drivers
+ * - TODO... some others?
+ */
+ if (fcu->grp)
+ action_groups_remove_channel(adt->action, fcu);
+ else if ((ac) && (ac->datatype == ANIMCONT_DRIVERS))
+ BLI_remlink(&adt->drivers, fcu);
+ else if (adt->action)
+ BLI_remlink(&adt->action->curves, fcu);
+
+ /* free the F-Curve itself */
+ free_fcurve(fcu);
+}
+
/* ************************************************************************** */
/* OPERATORS */
@@ -845,28 +976,8 @@ static int animchannels_delete_exec(bContext *C, wmOperator *op)
AnimData *adt= ale->adt;
FCurve *fcu= (FCurve *)ale->data;
- /* if no AnimData, we've got nowhere to remove the F-Curve from */
- if (adt == NULL)
- continue;
-
- /* remove from whatever list it came from
- * - Action Group
- * - Action
- * - Drivers
- * - TODO... some others?
- *
- * note: this isn't well tested, we could also try remove
- * from all lists just to be safe - campbell
- */
- if (fcu->grp)
- action_groups_remove_channel(adt->action, fcu);
- else if (ac.datatype == ANIMCONT_DRIVERS)
- BLI_remlink(&adt->drivers, fcu);
- else if (adt->action)
- BLI_remlink(&adt->action->curves, fcu);
-
- /* free the F-Curve itself */
- free_fcurve(fcu);
+ /* try to free F-Curve */
+ ANIM_fcurve_delete_from_animdata(&ac, adt, fcu);
}
}
@@ -895,12 +1006,87 @@ void ANIM_OT_channels_delete (wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
+/* ******************** Set Channel Visibility Operator *********************** */
+/* NOTE: this operator is only valid in the Graph Editor channels region */
+
+static int animchannels_visibility_set_exec(bContext *C, wmOperator *op)
+{
+ bAnimContext ac;
+ ListBase anim_data = {NULL, NULL};
+ ListBase all_data = {NULL, NULL};
+ bAnimListElem *ale;
+ int filter;
+
+ /* get editor data */
+ if (ANIM_animdata_get_context(C, &ac) == 0)
+ return OPERATOR_CANCELLED;
+
+
+ /* hide all channels not selected */
+ filter= (ANIMFILTER_VISIBLE | ANIMFILTER_UNSEL);
+ ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype);
+
+ for (ale= anim_data.first; ale; ale= ale->next)
+ ANIM_channel_setting_set(&ac, ale, ACHANNEL_SETTING_VISIBLE, ACHANNEL_SETFLAG_CLEAR);
+
+ BLI_freelistN(&anim_data);
+
+
+ /* get list of all channels that selection may need to be flushed to */
+ filter= ANIMFILTER_CHANNELS;
+ ANIM_animdata_filter(&ac, &all_data, filter, ac.data, ac.datatype);
+
+ /* make all the selected channels visible */
+ filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL);
+ ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype);
+
+ for (ale= anim_data.first; ale; ale= ale->next) {
+ /* hack: skip object channels for now, since flushing those will always flush everything, but they are always included */
+ // TODO: find out why this is the case, and fix that
+ if (ale->type == ANIMTYPE_OBJECT)
+ continue;
+
+ /* enable the setting */
+ ANIM_channel_setting_set(&ac, ale, ACHANNEL_SETTING_VISIBLE, ACHANNEL_SETFLAG_ADD);
+
+ /* now, also flush selection status up/down as appropriate */
+ ANIM_visibility_flush_anim_channels(&ac, &all_data, ale, 1);
+ }
+
+ BLI_freelistN(&anim_data);
+ BLI_freelistN(&all_data);
+
+
+ /* send notifier that things have changed */
+ WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
+
+ return OPERATOR_FINISHED;
+}
+
+void ANIM_OT_channels_visibility_set (wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Set Visibility";
+ ot->idname= "ANIM_OT_channels_visibility_set";
+ ot->description= "Make only the selected animation channels visible in the Graph Editor.";
+
+ /* api callbacks */
+ ot->exec= animchannels_visibility_set_exec;
+ ot->poll= ED_operator_ipo_active;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+
/* ******************** Toggle Channel Visibility Operator *********************** */
+/* NOTE: this operator is only valid in the Graph Editor channels region */
static int animchannels_visibility_toggle_exec(bContext *C, wmOperator *op)
{
bAnimContext ac;
ListBase anim_data = {NULL, NULL};
+ ListBase all_data = {NULL, NULL};
bAnimListElem *ale;
int filter;
short vis= ACHANNEL_SETFLAG_ADD;
@@ -909,6 +1095,10 @@ static int animchannels_visibility_toggle_exec(bContext *C, wmOperator *op)
if (ANIM_animdata_get_context(C, &ac) == 0)
return OPERATOR_CANCELLED;
+ /* get list of all channels that selection may need to be flushed to */
+ filter= ANIMFILTER_CHANNELS;
+ ANIM_animdata_filter(&ac, &all_data, filter, ac.data, ac.datatype);
+
/* filter data */
filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL);
ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype);
@@ -922,14 +1112,24 @@ static int animchannels_visibility_toggle_exec(bContext *C, wmOperator *op)
if (ANIM_channel_setting_get(&ac, ale, ACHANNEL_SETTING_VISIBLE))
vis= ACHANNEL_SETFLAG_CLEAR;
}
-
+
/* Now set the flags */
for (ale= anim_data.first; ale; ale= ale->next) {
+ /* hack: skip object channels for now, since flushing those will always flush everything, but they are always included */
+ // TODO: find out why this is the case, and fix that
+ if (ale->type == ANIMTYPE_OBJECT)
+ continue;
+
+ /* change the setting */
ANIM_channel_setting_set(&ac, ale, ACHANNEL_SETTING_VISIBLE, vis);
+
+ /* now, also flush selection status up/down as appropriate */
+ ANIM_visibility_flush_anim_channels(&ac, &all_data, ale, (vis == ACHANNEL_SETFLAG_ADD));
}
/* cleanup */
BLI_freelistN(&anim_data);
+ BLI_freelistN(&all_data);
/* send notifier that things have changed */
WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
@@ -1696,11 +1896,12 @@ void ED_operatortypes_animchannels(void)
WM_operatortype_append(ANIM_OT_channels_collapse);
WM_operatortype_append(ANIM_OT_channels_visibility_toggle);
+ WM_operatortype_append(ANIM_OT_channels_visibility_set);
}
void ED_keymap_animchannels(wmKeyConfig *keyconf)
{
- wmKeyMap *keymap = WM_keymap_find(keyconf, "Animation_Channels", 0, 0);
+ wmKeyMap *keymap = WM_keymap_find(keyconf, "Animation Channels", 0, 0);
/* selection */
/* click-select */
@@ -1715,6 +1916,7 @@ void ED_keymap_animchannels(wmKeyConfig *keyconf)
/* borderselect */
WM_keymap_add_item(keymap, "ANIM_OT_channels_select_border", BKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ANIM_OT_channels_select_border", EVT_TWEAK_L, KM_ANY, 0, 0);
/* delete */
WM_keymap_add_item(keymap, "ANIM_OT_channels_delete", XKEY, KM_PRESS, 0, 0);
@@ -1742,7 +1944,8 @@ void ED_keymap_animchannels(wmKeyConfig *keyconf)
//WM_keymap_add_item(keymap, "ANIM_OT_channels_move_to_bottom", PAGEDOWNKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
/* Graph Editor only */
- WM_keymap_add_item(keymap, "ANIM_OT_channels_visibility_toggle", VKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ANIM_OT_channels_visibility_set", VKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ANIM_OT_channels_visibility_toggle", VKEY, KM_PRESS, KM_SHIFT, 0);
}
/* ************************************************************************** */
diff --git a/source/blender/editors/animation/anim_deps.c b/source/blender/editors/animation/anim_deps.c
index 9d39911548b..1d7483d661f 100644
--- a/source/blender/editors/animation/anim_deps.c
+++ b/source/blender/editors/animation/anim_deps.c
@@ -27,22 +27,30 @@
*/
#include <stdlib.h>
+#include <string.h>
#include <math.h>
#include "MEM_guardedalloc.h"
+#include "DNA_anim_types.h"
#include "DNA_action_types.h"
#include "DNA_armature_types.h"
#include "DNA_object_types.h"
+#include "DNA_node_types.h"
#include "DNA_scene_types.h"
+#include "DNA_sequence_types.h"
#include "BLI_blenlib.h"
+#include "BKE_animsys.h"
#include "BKE_action.h"
#include "BKE_context.h"
#include "BKE_depsgraph.h"
+#include "BKE_global.h"
#include "BKE_main.h"
+#include "BKE_node.h"
#include "BKE_scene.h"
+#include "BKE_sequencer.h"
#include "BKE_screen.h"
#include "BKE_utildefines.h"
@@ -55,117 +63,220 @@
#include "WM_api.h"
#include "WM_types.h"
-/* ***************** depsgraph calls and anim updates ************* */
-/* ***************** only these can be called from editors ******** */
+/* **************************** depsgraph tagging ******************************** */
-void ED_anim_dag_flush_update(const bContext *C)
+/* tags the given anim list element for refreshes (if applicable)
+ * due to Animation Editor editing
+ */
+void ANIM_list_elem_update(Scene *scene, bAnimListElem *ale)
{
- DAG_ids_flush_update(0);
+ ID *id;
+ FCurve *fcu;
+ AnimData *adt;
+
+ id= ale->id;
+ if (!id)
+ return;
+
+ /* tag AnimData for refresh so that other views will update in realtime with these changes */
+ adt= BKE_animdata_from_id(id);
+ if (adt)
+ adt->recalc |= ADT_RECALC_ANIM;
+
+ /* update data */
+ fcu= (ale->datatype == ALE_FCURVE)? ale->key_data: NULL;
+
+ if (fcu && fcu->rna_path) {
+ /* if we have an fcurve, call the update for the property we
+ are editing, this is then expected to do the proper redraws
+ and depsgraph updates */
+ PointerRNA id_ptr, ptr;
+ PropertyRNA *prop;
+
+ RNA_id_pointer_create(id, &id_ptr);
+
+ if(RNA_path_resolve(&id_ptr, fcu->rna_path, &ptr, &prop))
+ RNA_property_update_main(G.main, scene, &ptr, prop);
+ }
+ else {
+ /* in other case we do standard depsgaph update, ideally
+ we'd be calling property update functions here too ... */
+ DAG_id_flush_update(id, OB_RECALC); // XXX or do we want something more restrictive?
+ }
}
-/* flushes changes from object to all relations in scene */
-void ED_anim_object_flush_update(const bContext *C, Object *ob)
+/* tags the given ID block for refreshes (if applicable) due to
+ * Animation Editor editing */
+void ANIM_id_update(Scene *scene, ID *id)
{
- DAG_id_update_flags(&ob->id);
+ if (id) {
+ AnimData *adt= BKE_animdata_from_id(id);
+
+ /* tag AnimData for refresh so that other views will update in realtime with these changes */
+ if (adt)
+ adt->recalc |= ADT_RECALC_ANIM;
+
+ /* set recalc flags */
+ DAG_id_flush_update(id, OB_RECALC); // XXX or do we want something more restrictive?
+ }
}
-/* **************************** pose <-> action syncing ******************************** */
-/* Summary of what needs to be synced between poses and actions:
- * 1) Flags
- * a) Visibility (only for pose to action)
- * b) Selection status (both ways)
- * 2) Group settings (only for pose to action) - do we also need to make sure same groups exist?
- * 3) Grouping (only for pose to action for now)
- */
-
-
-/* Notifier from Action/Dopesheet (this may be extended to include other things such as Python...)
- * Channels in action changed, so update pose channels/groups to reflect changes.
+/* **************************** animation data <-> data syncing ******************************** */
+/* This code here is used to synchronise the
+ * - selection (to find selected data easier)
+ * - ... (insert other relevant items here later)
+ * status in relevant Blender data with the status stored in animation channels.
*
- * An object (usually 'active' Object) needs to be supplied, so that its Pose-Channels can be synced with
- * the channels in its active Action.
+ * This should be called in the refresh() callbacks for various editors in
+ * response to appropriate notifiers.
*/
-void ANIM_action_to_pose_sync (Object *ob)
+
+/* perform syncing updates for Action Groups */
+static void animchan_sync_group (bAnimContext *ac, bAnimListElem *ale)
{
-#if 0
- AnimData *adt= ob->adt;
- bAction *act= adt->act;
- FCurve *fcu;
- bPoseChannel *pchan;
+ bActionGroup *agrp= (bActionGroup *)ale->data;
+ ID *owner_id= ale->id;
- /* error checking */
- if (ELEM3(NULL, ob, ob->adt, ob->pose) || (ob->type != OB_ARMATURE))
+ /* major priority is selection status
+ * so we need both a group and an owner
+ */
+ if (ELEM(NULL, agrp, owner_id))
return;
-
- /* 1b) loop through all Action-Channels (there should be fewer channels to search through here in general) */
- for (achan= act->chanbase.first; achan; achan= achan->next) {
- /* find matching pose-channel */
- pchan= get_pose_channel(ob->pose, achan->name);
- /* sync active and selected flags */
- if (pchan && pchan->bone) {
- /* selection */
- if (achan->flag & ACHAN_SELECTED)
- pchan->bone->flag |= BONE_SELECTED;
- else
- pchan->bone->flag &= ~BONE_SELECTED;
+ /* for standard Objects, check if group is the name of some bone */
+ if (GS(owner_id->name) == ID_OB) {
+ Object *ob= (Object *)owner_id;
+
+ /* check if there are bones, and whether the name matches any
+ * NOTE: this feature will only really work if groups by default contain the F-Curves for a single bone
+ */
+ if (ob->pose) {
+ bPoseChannel *pchan= get_pose_channel(ob->pose, agrp->name);
- /* active */
- if (achan->flag & ACHAN_HILIGHTED)
- pchan->bone->flag |= BONE_ACTIVE;
- else
- pchan->bone->flag &= ~BONE_ACTIVE;
+ /* if one matches, sync the selection status */
+ if (pchan) {
+ if (pchan->bone->flag & BONE_SELECTED)
+ agrp->flag |= AGRP_SELECTED;
+ else
+ agrp->flag &= ~AGRP_SELECTED;
+ }
}
}
-
- // TODO: add grouping changes too? For now, these tools aren't exposed to users in animation editors yet...
-#endif
-}
+}
-/* Notifier from 3D-View/Outliner (this is likely to include other sources too...)
- * Pose channels/groups changed, so update action channels
- *
- * An object (usually 'active' Object) needs to be supplied, so that its Pose-Channels can be synced with
- * the channels in its active Action.
- */
-void ANIM_pose_to_action_sync (Object *ob, ScrArea *sa)
+/* perform syncing updates for F-Curves */
+static void animchan_sync_fcurve (bAnimContext *ac, bAnimListElem *ale)
{
-#if 0 // XXX old animation system
- SpaceAction *saction= (SpaceAction *)sa->spacedata.first;
- bArmature *arm= (bArmature *)ob->data;
- bAction *act= (bAction *)ob->action;
- bActionChannel *achan;
- //bActionGroup *agrp, *bgrp;
- bPoseChannel *pchan;
+ FCurve *fcu= (FCurve *)ale->data;
+ ID *owner_id= ale->id;
- /* error checking */
- if ((ob == NULL) || (ob->type != OB_ARMATURE) || ELEM3(NULL, arm, act, ob->pose))
+ /* major priority is selection status, so refer to the checks done in anim_filter.c
+ * skip_fcurve_selected_data() for reference about what's going on here...
+ */
+ if (ELEM3(NULL, fcu, fcu->rna_path, owner_id))
return;
- /* 1) loop through all Action-Channels (there should be fewer channels to search through here in general) */
- for (achan= act->chanbase.first; achan; achan= achan->next) {
- /* find matching pose-channel */
- pchan= get_pose_channel(ob->pose, achan->name);
+ if (GS(owner_id->name) == ID_OB) {
+ Object *ob= (Object *)owner_id;
- /* sync selection and visibility settings */
- if (pchan && pchan->bone) {
- /* visibility - if layer is hidden, or if bone itself is hidden */
- if (!(saction->flag & SACTION_NOHIDE) && !(saction->pin)) {
- if (!(pchan->bone->layer & arm->layer) || (pchan->bone->flag & BONE_HIDDEN_P))
- achan->flag |= ACHAN_HIDDEN;
+ /* only affect if F-Curve involves pose.bones */
+ if ((fcu->rna_path) && strstr(fcu->rna_path, "pose.bones")) {
+ bPoseChannel *pchan;
+ char *bone_name;
+
+ /* get bone-name, and check if this bone is selected */
+ bone_name= BLI_getQuotedStr(fcu->rna_path, "pose.bones[");
+ pchan= get_pose_channel(ob->pose, bone_name);
+ if (bone_name) MEM_freeN(bone_name);
+
+ /* F-Curve selection depends on whether the bone is selected */
+ if ((pchan) && (pchan->bone)) {
+ if (pchan->bone->flag & BONE_SELECTED)
+ fcu->flag |= FCURVE_SELECTED;
+ else
+ fcu->flag &= ~FCURVE_SELECTED;
+ }
+ }
+ }
+ else if (GS(owner_id->name) == ID_SCE) {
+ Scene *scene = (Scene *)owner_id;
+
+ /* only affect if F-Curve involves sequence_editor.sequences */
+ if ((fcu->rna_path) && strstr(fcu->rna_path, "sequences_all")) {
+ Editing *ed= seq_give_editing(scene, FALSE);
+ Sequence *seq;
+ char *seq_name;
+
+ /* get strip name, and check if this strip is selected */
+ seq_name= BLI_getQuotedStr(fcu->rna_path, "sequences_all[");
+ seq = get_seq_by_name(ed->seqbasep, seq_name, FALSE);
+ if (seq_name) MEM_freeN(seq_name);
+
+ /* can only add this F-Curve if it is selected */
+ if (seq) {
+ if (seq->flag & SELECT)
+ fcu->flag |= FCURVE_SELECTED;
else
- achan->flag &= ~ACHAN_HIDDEN;
+ fcu->flag &= ~FCURVE_SELECTED;
}
-
- /* selection */
- if (pchan->bone->flag & BONE_SELECTED)
- achan->flag |= ACHAN_SELECTED;
- else
- achan->flag &= ~ACHAN_SELECTED;
+ }
+ }
+ else if (GS(owner_id->name) == ID_NT) {
+ bNodeTree *ntree = (bNodeTree *)owner_id;
+
+ /* check for selected nodes */
+ if ((fcu->rna_path) && strstr(fcu->rna_path, "nodes")) {
+ bNode *node;
+ char *node_name;
+
+ /* get strip name, and check if this strip is selected */
+ node_name= BLI_getQuotedStr(fcu->rna_path, "nodes[");
+ node = nodeFindNodebyName(ntree, node_name);
+ if (node_name) MEM_freeN(node_name);
+
+ /* can only add this F-Curve if it is selected */
+ if (node) {
+ if (node->flag & NODE_SELECT)
+ fcu->flag |= FCURVE_SELECTED;
+ else
+ fcu->flag &= ~FCURVE_SELECTED;
+ }
+ }
+ }
+}
+
+/* ---------------- */
+
+/* Main call to be exported to animation editors */
+void ANIM_sync_animchannels_to_data (const bContext *C)
+{
+ bAnimContext ac;
+ ListBase anim_data = {NULL, NULL};
+ bAnimListElem *ale;
+ int filter;
+
+ /* get animation context info for filtering the channels */
+ // TODO: check on whether we need to set the area specially instead, since active area might not be ok?
+ if (ANIM_animdata_get_context(C, &ac) == 0)
+ return;
+
+ /* filter data */
+ /* NOTE: we want all channels, since we want to be able to set selection status on some of them even when collapsed */
+ filter= ANIMFILTER_CHANNELS;
+ ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype);
+
+ /* flush settings as appropriate depending on the types of the channels */
+ for (ale= anim_data.first; ale; ale= ale->next) {
+ switch (ale->type) {
+ case ANIMTYPE_GROUP:
+ animchan_sync_group(&ac, ale);
+ break;
+
+ case ANIMTYPE_FCURVE:
+ animchan_sync_fcurve(&ac, ale);
+ break;
}
}
- // XXX step 2 needs to be coded still... currently missing action/bone group API to do any more work here...
- // XXX step 3 needs to be coded still... it's a messy case to deal with (we'll use the temp indices for this?)
-#endif // XXX old animation system
+ BLI_freelistN(&anim_data);
}
diff --git a/source/blender/editors/animation/anim_draw.c b/source/blender/editors/animation/anim_draw.c
index 3afe2bfad57..60242d3e837 100644
--- a/source/blender/editors/animation/anim_draw.c
+++ b/source/blender/editors/animation/anim_draw.c
@@ -315,64 +315,6 @@ void ANIM_nla_mapping_apply_fcurve (AnimData *adt, FCurve *fcu, short restore, s
/* apply to F-Curve */
ANIM_fcurve_keys_bezier_loop(&bed, fcu, NULL, map_cb, NULL);
-}
-
-/* *************************************************** */
-/* ANIMATION EDITOR UI-WIDGETS */
-
-/* ui button event */
-#define B_REDR 1
-
-/* standard header buttons for Animation Editors */
-short ANIM_headerUI_standard_buttons (const bContext *C, bDopeSheet *ads, uiBlock *block, short xco, short yco)
-{
- Main *mainptr= CTX_data_main(C);
- ScrArea *sa= CTX_wm_area(C);
- short nlaActive= ((sa) && (sa->spacetype==SPACE_NLA));
-
- /* check if the DopeSheet data exists, just in case... */
- if (ads) {
- /* more 'generic' filtering options */
- if (nlaActive) uiBlockBeginAlign(block);
- uiDefIconButBitI(block, TOG, ADS_FILTER_ONLYSEL, B_REDR, ICON_RESTRICT_SELECT_OFF, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Only display selected Objects");
- if (nlaActive) uiDefIconButBitI(block, TOGN, ADS_FILTER_NLA_NOACT, B_REDR, ICON_ACTION, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Include AnimData blocks with no NLA Data");
- if (nlaActive) uiBlockEndAlign(block);
- xco += 5;
-
- /* datatype based - only available datatypes are shown */
- uiBlockBeginAlign(block);
- uiDefIconButBitI(block, TOGN, ADS_FILTER_NOSCE, B_REDR, ICON_SCENE_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display Scene Animation");
- uiDefIconButBitI(block, TOGN, ADS_FILTER_NOWOR, B_REDR, ICON_WORLD_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display World Animation");
- uiDefIconButBitI(block, TOGN, ADS_FILTER_NONTREE, B_REDR, ICON_NODETREE, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display Node Tree Animation");
- if (mainptr && mainptr->key.first)
- uiDefIconButBitI(block, TOGN, ADS_FILTER_NOSHAPEKEYS, B_REDR, ICON_SHAPEKEY_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display ShapeKeys");
- if (mainptr && mainptr->mat.first)
- uiDefIconButBitI(block, TOGN, ADS_FILTER_NOMAT, B_REDR, ICON_MATERIAL_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display Material Data");
- if (mainptr && mainptr->lamp.first)
- uiDefIconButBitI(block, TOGN, ADS_FILTER_NOLAM, B_REDR, ICON_LAMP_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display Lamp Data");
- if (mainptr && mainptr->camera.first)
- uiDefIconButBitI(block, TOGN, ADS_FILTER_NOCAM, B_REDR, ICON_CAMERA_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display Camera Data");
- if (mainptr && mainptr->curve.first)
- uiDefIconButBitI(block, TOGN, ADS_FILTER_NOCUR, B_REDR, ICON_CURVE_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display Curve Data");
- if (mainptr && mainptr->mball.first)
- uiDefIconButBitI(block, TOGN, ADS_FILTER_NOMBA, B_REDR, ICON_META_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display MetaBall Data");
- if (mainptr && mainptr->armature.first)
- uiDefIconButBitI(block, TOGN, ADS_FILTER_NOARM, B_REDR, ICON_ARMATURE_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display Armature Data");
- if (mainptr && mainptr->particle.first)
- uiDefIconButBitI(block, TOGN, ADS_FILTER_NOPART, B_REDR, ICON_PARTICLE_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display Particle Data");
- uiBlockEndAlign(block);
- xco += 30;
- }
- else {
- // XXX this case shouldn't happen at all... for now, just pad out same amount of space
- printf("ERROR: dopesheet data not available when drawing Animation Editor header \n");
- xco += 11*XIC + 30;
- }
-
- // TODO: include auto-snapping menu here too...
-
- /* return the width of the buttons */
- return xco;
}
/* *************************************************** */
diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c
index eb3a0377711..89f9511688f 100644
--- a/source/blender/editors/animation/anim_filter.c
+++ b/source/blender/editors/animation/anim_filter.c
@@ -68,6 +68,7 @@
#include "DNA_object_types.h"
#include "DNA_particle_types.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"
@@ -85,6 +86,8 @@
#include "BKE_key.h"
#include "BKE_object.h"
#include "BKE_material.h"
+#include "BKE_node.h"
+#include "BKE_sequencer.h"
#include "BKE_screen.h"
#include "BKE_utildefines.h"
@@ -734,7 +737,6 @@ bAnimListElem *make_new_animlistelem (void *data, short datatype, void *owner, s
ale->flag= nlt->flag;
- // XXX or should this be done some other way?
ale->key_data= &nlt->strips;
ale->datatype= ALE_NLASTRIP;
}
@@ -755,12 +757,70 @@ bAnimListElem *make_new_animlistelem (void *data, short datatype, void *owner, s
/* ----------------------------------------- */
+static int skip_fcurve_selected_data(FCurve *fcu, ID *owner_id)
+{
+ if (GS(owner_id->name) == ID_OB) {
+ Object *ob= (Object *)owner_id;
+
+ /* only consider if F-Curve involves pose.bones */
+ if ((fcu->rna_path) && strstr(fcu->rna_path, "pose.bones")) {
+ bPoseChannel *pchan;
+ char *bone_name;
+
+ /* get bone-name, and check if this bone is selected */
+ bone_name= BLI_getQuotedStr(fcu->rna_path, "pose.bones[");
+ pchan= get_pose_channel(ob->pose, bone_name);
+ if (bone_name) MEM_freeN(bone_name);
+
+ /* can only add this F-Curve if it is selected */
+ if ((pchan) && (pchan->bone) && (pchan->bone->flag & BONE_SELECTED)==0)
+ return 1;
+ }
+ }
+ else if (GS(owner_id->name) == ID_SCE) {
+ Scene *scene = (Scene *)owner_id;
+
+ /* only consider if F-Curve involves sequence_editor.sequences */
+ if ((fcu->rna_path) && strstr(fcu->rna_path, "sequences_all")) {
+ Editing *ed= seq_give_editing(scene, FALSE);
+ Sequence *seq;
+ char *seq_name;
+
+ /* get strip name, and check if this strip is selected */
+ seq_name= BLI_getQuotedStr(fcu->rna_path, "sequences_all[");
+ seq = get_seq_by_name(ed->seqbasep, seq_name, FALSE);
+ if (seq_name) MEM_freeN(seq_name);
+
+ /* can only add this F-Curve if it is selected */
+ if (seq==NULL || (seq->flag & SELECT)==0)
+ return 1;
+ }
+ }
+ else if (GS(owner_id->name) == ID_NT) {
+ bNodeTree *ntree = (bNodeTree *)owner_id;
+
+ /* check for selected nodes */
+ if ((fcu->rna_path) && strstr(fcu->rna_path, "nodes")) {
+ bNode *node;
+ char *node_name;
+
+ /* get strip name, and check if this strip is selected */
+ node_name= BLI_getQuotedStr(fcu->rna_path, "nodes[");
+ node = nodeFindNodebyName(ntree, node_name);
+ if (node_name) MEM_freeN(node_name);
+
+ /* can only add this F-Curve if it is selected */
+ if ((node) && (node->flag & NODE_SELECT)==0)
+ return 1;
+ }
+ }
+ return 0;
+}
-static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve *first, bActionGroup *grp, void *owner, short ownertype, int filter_mode, ID *owner_id)
+/* find the next F-Curve that is usable for inclusion */
+static FCurve *animdata_filter_fcurve_next (bDopeSheet *ads, FCurve *first, bActionGroup *grp, int filter_mode, ID *owner_id)
{
- bAnimListElem *ale = NULL;
- FCurve *fcu;
- int items = 0;
+ FCurve *fcu = NULL;
/* loop over F-Curves - assume that the caller of this has already checked that these should be included
* NOTE: we need to check if the F-Curves belong to the same group, as this gets called for groups too...
@@ -774,27 +834,11 @@ static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve
* carefully checking the entire path
* - this will also affect things like Drivers, and also works for Bone Constraints
*/
- if ( ((ads) && (ads->filterflag & ADS_FILTER_ONLYSEL)) &&
- ((owner_id) && (GS(owner_id->name) == ID_OB)) )
- {
- Object *ob= (Object *)owner_id;
-
- /* only consider if F-Curve involves pose.bones */
- if ((fcu->rna_path) && strstr(fcu->rna_path, "bones")) {
- bPoseChannel *pchan;
- char *bone_name;
-
- /* get bone-name, and check if this bone is selected */
- bone_name= BLI_getQuotedStr(fcu->rna_path, "bones[");
- pchan= get_pose_channel(ob->pose, bone_name);
- if (bone_name) MEM_freeN(bone_name);
-
- /* can only add this F-Curve if it is selected */
- if ((pchan) && (pchan->bone) && (pchan->bone->flag & BONE_SELECTED)==0)
- continue;
- }
+ if ( ((ads) && (ads->filterflag & ADS_FILTER_ONLYSEL)) && (owner_id) ) {
+ if (skip_fcurve_selected_data(fcu, owner_id))
+ continue;
}
-
+
/* only include if visible (Graph Editor check, not channels check) */
if (!(filter_mode & ANIMFILTER_CURVEVISIBLE) || (fcu->flag & FCURVE_VISIBLE)) {
/* only work with this channel and its subchannels if it is editable */
@@ -803,18 +847,42 @@ static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve
if ( ANIMCHANNEL_SELOK(SEL_FCU(fcu)) && ANIMCHANNEL_SELEDITOK(SEL_FCU(fcu)) ) {
/* only include if this curve is active */
if (!(filter_mode & ANIMFILTER_ACTIVE) || (fcu->flag & FCURVE_ACTIVE)) {
- ale= make_new_animlistelem(fcu, ANIMTYPE_FCURVE, owner, ownertype, owner_id);
-
- if (ale) {
- BLI_addtail(anim_data, ale);
- items++;
- }
+ /* this F-Curve can be used, so return it */
+ return fcu;
}
}
}
}
}
+ /* no (more) F-Curves from the list are suitable... */
+ return NULL;
+}
+
+static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve *first, bActionGroup *grp, void *owner, short ownertype, int filter_mode, ID *owner_id)
+{
+ FCurve *fcu;
+ int items = 0;
+
+ /* loop over every F-Curve able to be included
+ * - this for-loop works like this:
+ * 1) the starting F-Curve is assigned to the fcu pointer so that we have a starting point to search from
+ * 2) the first valid F-Curve to start from (which may include the one given as 'first') in the remaining
+ * list of F-Curves is found, and verified to be non-null
+ * 3) the F-Curve referenced by fcu pointer is added to the list
+ * 4) the fcu pointer is set to the F-Curve after the one we just added, so that we can keep going through
+ * the rest of the F-Curve list without an eternal loop. Back to step 2 :)
+ */
+ for (fcu=first; ( (fcu = animdata_filter_fcurve_next(ads, fcu, grp, filter_mode, owner_id)) ); fcu=fcu->next)
+ {
+ bAnimListElem *ale = make_new_animlistelem(fcu, ANIMTYPE_FCURVE, owner, ownertype, owner_id);
+
+ if (ale) {
+ BLI_addtail(anim_data, ale);
+ items++;
+ }
+ }
+
/* return the number of items added to the list */
return items;
}
@@ -829,50 +897,63 @@ static int animdata_filter_action (ListBase *anim_data, bDopeSheet *ads, bAction
/* loop over groups */
// TODO: in future, should we expect to need nested groups?
for (agrp= act->groups.first; agrp; agrp= agrp->next) {
- /* add this group as a channel first */
- if ((filter_mode & ANIMFILTER_CHANNELS) || !(filter_mode & ANIMFILTER_CURVESONLY)) {
- /* check if filtering by selection */
- if ( ANIMCHANNEL_SELOK(SEL_AGRP(agrp)) ) {
- ale= make_new_animlistelem(agrp, ANIMTYPE_GROUP, NULL, ANIMTYPE_NONE, owner_id);
- if (ale) {
- BLI_addtail(anim_data, ale);
- items++;
- }
- }
- }
+ FCurve *first_fcu;
/* store reference to last channel of group */
if (agrp->channels.last)
lastchan= agrp->channels.last;
+ /* get the first F-Curve in this group we can start to use,
+ * and if there isn't any F-Curve to start from, then don't
+ * this group at all...
+ *
+ * exceptions for when we might not care whether there's anything inside this group or not
+ * - if we're interested in channels and their selections, in which case group channel should get considered too
+ * even if all its sub channels are hidden...
+ */
+ first_fcu = animdata_filter_fcurve_next(ads, agrp->channels.first, agrp, filter_mode, owner_id);
- /* there are some situations, where only the channels of the action group should get considered */
- if (!(filter_mode & ANIMFILTER_ACTGROUPED) || (agrp->flag & AGRP_ACTIVE)) {
- /* filters here are a bit convoulted...
- * - groups show a "summary" of keyframes beside their name which must accessable for tools which handle keyframes
- * - groups can be collapsed (and those tools which are only interested in channels rely on knowing that group is closed)
- *
- * cases when we should include F-Curves inside group:
- * - we don't care about visibility
- * - group is expanded
- * - we just need the F-Curves present
- */
- if ( (!(filter_mode & ANIMFILTER_VISIBLE) || EXPANDED_AGRP(agrp)) || (filter_mode & ANIMFILTER_CURVESONLY) )
- {
- /* for the Graph Editor, curves may be set to not be visible in the view to lessen clutter,
- * but to do this, we need to check that the group doesn't have it's not-visible flag set preventing
- * all its sub-curves to be shown
+ if ( (filter_mode & (ANIMFILTER_SEL|ANIMFILTER_UNSEL)) ||
+ (first_fcu) )
+ {
+ /* add this group as a channel first */
+ if ((filter_mode & ANIMFILTER_CHANNELS) || !(filter_mode & ANIMFILTER_CURVESONLY)) {
+ /* check if filtering by selection */
+ if ( ANIMCHANNEL_SELOK(SEL_AGRP(agrp)) ) {
+ ale= make_new_animlistelem(agrp, ANIMTYPE_GROUP, NULL, ANIMTYPE_NONE, owner_id);
+ if (ale) {
+ BLI_addtail(anim_data, ale);
+ items++;
+ }
+ }
+ }
+
+ /* there are some situations, where only the channels of the action group should get considered */
+ if (!(filter_mode & ANIMFILTER_ACTGROUPED) || (agrp->flag & AGRP_ACTIVE)) {
+ /* filters here are a bit convoulted...
+ * - groups show a "summary" of keyframes beside their name which must accessable for tools which handle keyframes
+ * - groups can be collapsed (and those tools which are only interested in channels rely on knowing that group is closed)
+ *
+ * cases when we should include F-Curves inside group:
+ * - we don't care about visibility
+ * - group is expanded
+ * - we just need the F-Curves present
*/
- if ( !(filter_mode & ANIMFILTER_CURVEVISIBLE) || !(agrp->flag & AGRP_NOTVISIBLE) )
+ if ( (!(filter_mode & ANIMFILTER_VISIBLE) || EXPANDED_AGRP(agrp)) || (filter_mode & ANIMFILTER_CURVESONLY) )
{
- if (!(filter_mode & ANIMFILTER_FOREDIT) || EDITABLE_AGRP(agrp)) {
- items += animdata_filter_fcurves(anim_data, ads, agrp->channels.first, agrp, owner, ownertype, filter_mode, owner_id);
+ /* for the Graph Editor, curves may be set to not be visible in the view to lessen clutter,
+ * but to do this, we need to check that the group doesn't have it's not-visible flag set preventing
+ * all its sub-curves to be shown
+ */
+ if ( !(filter_mode & ANIMFILTER_CURVEVISIBLE) || !(agrp->flag & AGRP_NOTVISIBLE) )
+ {
+ if (!(filter_mode & ANIMFILTER_FOREDIT) || EDITABLE_AGRP(agrp)) {
+ items += animdata_filter_fcurves(anim_data, ads, first_fcu, agrp, owner, ownertype, filter_mode, owner_id);
+ }
}
}
}
}
-
- // TODO: but we still need to deal with the case when the group may be closed, but it has no visible curves too
}
/* loop over un-grouped F-Curves (only if we're not only considering those channels in the animive group) */
@@ -1778,7 +1859,7 @@ static int animdata_filter_dopesheet (ListBase *anim_data, bAnimContext *ac, bDo
/* additionally, dopesheet filtering also affects what objects to consider */
if (ads->filterflag) {
/* check selection and object type filters */
- if ( (ads->filterflag & ADS_FILTER_ONLYSEL) && !((base->flag & SELECT) || (base == sce->basact)) ) {
+ if ( (ads->filterflag & ADS_FILTER_ONLYSEL) && !((base->flag & SELECT) /*|| (base == sce->basact)*/) ) {
/* only selected should be shown */
continue;
}
diff --git a/source/blender/editors/animation/anim_intern.h b/source/blender/editors/animation/anim_intern.h
index 0101e3d0ef7..2d363a52248 100644
--- a/source/blender/editors/animation/anim_intern.h
+++ b/source/blender/editors/animation/anim_intern.h
@@ -45,25 +45,25 @@ short modifykey_get_context_data (bContext *C, ListBase *dsources, KeyingSet *ks
* These handle keyframes management from various spaces. They only make use of
* Keying Sets.
*/
-void ANIM_OT_insert_keyframe(struct wmOperatorType *ot);
-void ANIM_OT_delete_keyframe(struct wmOperatorType *ot);
+void ANIM_OT_keyframe_insert(struct wmOperatorType *ot);
+void ANIM_OT_keyframe_delete(struct wmOperatorType *ot);
/* Main Keyframe Management operators:
* These handle keyframes management from various spaces. They will handle the menus
* required for each space.
*/
-void ANIM_OT_insert_keyframe_menu(struct wmOperatorType *ot);
-void ANIM_OT_delete_keyframe_v3d(struct wmOperatorType *ot);
+void ANIM_OT_keyframe_insert_menu(struct wmOperatorType *ot);
+void ANIM_OT_keyframe_delete_v3d(struct wmOperatorType *ot);
/* Keyframe managment operators for UI buttons (RMB menu). */
-void ANIM_OT_insert_keyframe_button(struct wmOperatorType *ot);
-void ANIM_OT_delete_keyframe_button(struct wmOperatorType *ot);
+void ANIM_OT_keyframe_insert_button(struct wmOperatorType *ot);
+void ANIM_OT_keyframe_delete_button(struct wmOperatorType *ot);
/* .......... */
/* KeyingSet managment operators for UI buttons (RMB menu) */
-void ANIM_OT_add_keyingset_button(struct wmOperatorType *ot);
-void ANIM_OT_remove_keyingset_button(struct wmOperatorType *ot);
+void ANIM_OT_keyingset_button_add(struct wmOperatorType *ot);
+void ANIM_OT_keyingset_button_remove(struct wmOperatorType *ot);
/* KeyingSet management operators for RNA collections/UI buttons */
void ANIM_OT_keying_set_add(struct wmOperatorType *ot);
@@ -74,11 +74,9 @@ void ANIM_OT_keying_set_path_remove(struct wmOperatorType *ot);
/* .......... */
/* Driver management operators for UI buttons (RMB menu) */
-void ANIM_OT_add_driver_button(struct wmOperatorType *ot);
-void ANIM_OT_remove_driver_button(struct wmOperatorType *ot);
+void ANIM_OT_driver_button_add(struct wmOperatorType *ot);
+void ANIM_OT_driver_button_remove(struct wmOperatorType *ot);
void ANIM_OT_copy_driver_button(struct wmOperatorType *ot);
void ANIM_OT_paste_driver_button(struct wmOperatorType *ot);
-void ANIM_OT_copy_clipboard_button(struct wmOperatorType *ot);
-
#endif // ANIM_INTERN_H
diff --git a/source/blender/editors/animation/anim_ipo_utils.c b/source/blender/editors/animation/anim_ipo_utils.c
index 200c4eb3590..9e698d18105 100644
--- a/source/blender/editors/animation/anim_ipo_utils.c
+++ b/source/blender/editors/animation/anim_ipo_utils.c
@@ -181,39 +181,12 @@ int getname_anim_fcurve(char *name, ID *id, FCurve *fcu)
/* ------------------------------- Color Codes for F-Curve Channels ---------------------------- */
-#if 0
-/* used for FCURVE_COLOR_AUTO_RAINBOW */
-// XXX this still doesn't work too great when there are more than 32 curves (which happens most of the time)
-void ipo_rainbow (int cur, int tot, float *out)
-{
- float dfac, fac, sat;
-
- dfac= (float)(1.0/( (float)tot+1.0));
-
- /* this calculation makes 2 or 4 different cycles of rainbow colors */
- // 2 different cycles - for hue
- if(cur< tot/2) fac= (float)(cur*2.0f*dfac);
- else fac= (float)((cur-tot/2)*2.0f*dfac +dfac);
-
- // third cycle with altered hue
- if(tot > 32) fac= fac*1.95f;
- // clamping for excessive ranges
- if(fac>1.0f) fac-= 1.0f;
-
- // saturation adjustments for more visible range
- if(fac>0.5f && fac<0.8f) sat= 0.5f;
- else sat= 0.6f;
-
- hsv_to_rgb(fac, sat, 1.0f, out, out+1, out+2);
-}
-#endif
-
/* step between the major distinguishable color bands of the primary colors */
#define HSV_BANDWIDTH 0.3f
-/* testbed for FCURVE_COLOR_AUTO_RAINBOW determination methods */
+/* used to determine the colour of F-Curves with FCURVE_COLOR_AUTO_RAINBOW set */
//void fcurve_rainbow (unsigned int cur, unsigned int tot, float *out)
-void ipo_rainbow (int cur, int tot, float *out)
+void getcolor_fcurve_rainbow (int cur, int tot, float *out)
{
float hue, val, sat, fac;
int grouping;
diff --git a/source/blender/editors/animation/anim_markers.c b/source/blender/editors/animation/anim_markers.c
index 463518a32ff..4cc3a8d343f 100644
--- a/source/blender/editors/animation/anim_markers.c
+++ b/source/blender/editors/animation/anim_markers.c
@@ -240,15 +240,19 @@ static void draw_marker(View2D *v2d, TimeMarker *marker, int cfra, int flag)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
/* vertical line - dotted */
- // NOTE: currently only used for sequencer
+ // NOTE: currently only used for sequencer
+#ifdef DURIAN_CAMERA_SWITCH
+ if (marker->camera || flag & DRAW_MARKERS_LINES) {
+#else
if (flag & DRAW_MARKERS_LINES) {
+#endif
setlinestyle(3);
if (marker->flag & SELECT)
glColor4ub(255, 255, 255, 96);
else
glColor4ub(0, 0, 0, 96);
-
+
glBegin(GL_LINES);
glVertex2f((xpos*xscale)+0.5f, 12.0f);
glVertex2f((xpos*xscale)+0.5f, 34.0f*yscale); /* a bit lazy but we know it cant be greater then 34 strips high */
@@ -672,6 +676,10 @@ static void ed_marker_duplicate_apply(bContext *C, wmOperator *op)
newmarker->frame= marker->frame;
BLI_strncpy(newmarker->name, marker->name, sizeof(marker->name));
+#ifdef DURIAN_CAMERA_SWITCH
+ newmarker->camera= marker->camera;
+#endif
+
/* new marker is added to the begining of list */
BLI_addhead(markers, newmarker);
}
@@ -878,27 +886,37 @@ static int ed_marker_select_all_exec(bContext *C, wmOperator *op)
{
ListBase *markers= context_get_markers(C);
TimeMarker *marker;
- int select= RNA_int_get(op->ptr, "select_type");
+ int action = RNA_enum_get(op->ptr, "action");
if(markers == NULL)
return OPERATOR_CANCELLED;
-
- if(RNA_boolean_get(op->ptr, "select_swap")) {
+
+ if (action == SEL_TOGGLE) {
+ action = SEL_SELECT;
for(marker= markers->first; marker; marker= marker->next) {
- if(marker->flag & SELECT)
+ if(marker->flag & SELECT) {
+ action = SEL_DESELECT;
break;
+ }
}
- if(marker)
- select= 0;
- else
- select= 1;
}
for(marker= markers->first; marker; marker= marker->next) {
- if(select)
+ switch (action) {
+ case SEL_SELECT:
marker->flag |= SELECT;
- else
+ break;
+ case SEL_DESELECT:
marker->flag &= ~SELECT;
+ break;
+ case SEL_INVERT:
+ if (marker->flag & SELECT) {
+ marker->flag &= ~SELECT;
+ } else {
+ marker->flag |= SELECT;
+ }
+ break;
+ }
}
WM_event_add_notifier(C, NC_SCENE|ND_MARKERS, NULL);
@@ -906,31 +924,22 @@ static int ed_marker_select_all_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-static int ed_marker_select_all_invoke(bContext *C, wmOperator *op, wmEvent *evt)
-{
- RNA_boolean_set(op->ptr, "select_swap", 1);
-
- return ed_marker_select_all_exec(C, op);
-}
-
-static void MARKER_OT_select_all_toggle(wmOperatorType *ot)
+static void MARKER_OT_select_all(wmOperatorType *ot)
{
/* identifiers */
ot->name= "(De)select all markers";
- ot->description= "(de)select all time markers.";
- ot->idname= "MARKER_OT_select_all_toggle";
+ ot->description= "Change selection of all time markers.";
+ ot->idname= "MARKER_OT_select_all";
/* api callbacks */
ot->exec= ed_marker_select_all_exec;
- ot->invoke= ed_marker_select_all_invoke;
ot->poll= ED_operator_areaactive;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* rna */
- RNA_def_boolean(ot->srna, "select_swap", 0, "Select Swap", "");
- RNA_def_int(ot->srna, "select_type", 0, INT_MIN, INT_MAX, "Select Type", "", INT_MIN, INT_MAX);
+ WM_operator_properties_select_all(ot);
}
/* ******************************* remove marker ***************** */
@@ -977,6 +986,48 @@ static void MARKER_OT_delete(wmOperatorType *ot)
}
+#ifdef DURIAN_CAMERA_SWITCH
+/* ******************************* camera bind marker ***************** */
+
+/* remove selected TimeMarkers */
+static int ed_marker_camera_bind_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ ListBase *markers= context_get_markers(C);
+ TimeMarker *marker;
+ short changed= 0;
+
+ if(markers == NULL)
+ return OPERATOR_CANCELLED;
+
+ for(marker= markers->first; marker; marker= marker->next) {
+ if(marker->flag & SELECT) {
+ marker->camera= scene->camera;
+ }
+ }
+
+ if (changed)
+ WM_event_add_notifier(C, NC_SCENE|ND_MARKERS, NULL);
+
+ return OPERATOR_FINISHED;
+}
+
+static void MARKER_OT_camera_bind(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Bind Camera to Markers";
+ ot->description= "Bind the active camera to selected markers(s).";
+ ot->idname= "MARKER_OT_camera_bind";
+
+ /* api callbacks */
+ ot->exec= ed_marker_camera_bind_exec;
+ ot->poll= ED_operator_areaactive;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+#endif
+
/* ************************** registration **********************************/
/* called in screen_ops.c:ED_operatortypes_screen() */
@@ -987,8 +1038,11 @@ void ED_operatortypes_marker(void)
WM_operatortype_append(MARKER_OT_duplicate);
WM_operatortype_append(MARKER_OT_select);
WM_operatortype_append(MARKER_OT_select_border);
- WM_operatortype_append(MARKER_OT_select_all_toggle);
+ WM_operatortype_append(MARKER_OT_select_all);
WM_operatortype_append(MARKER_OT_delete);
+#ifdef DURIAN_CAMERA_SWITCH
+ WM_operatortype_append(MARKER_OT_camera_bind);
+#endif
}
/* called in screen_ops.c:ED_keymap_screen() */
@@ -1002,10 +1056,12 @@ void ED_marker_keymap(wmKeyConfig *keyconf)
WM_keymap_verify_item(keymap, "MARKER_OT_select", SELECTMOUSE, KM_PRESS, 0, 0);
RNA_boolean_set(WM_keymap_add_item(keymap, "MARKER_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "extend", 1);
WM_keymap_verify_item(keymap, "MARKER_OT_select_border", BKEY, KM_PRESS, 0, 0);
- WM_keymap_verify_item(keymap, "MARKER_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "MARKER_OT_select_all", AKEY, KM_PRESS, 0, 0);
WM_keymap_verify_item(keymap, "MARKER_OT_delete", XKEY, KM_PRESS, 0, 0);
WM_keymap_verify_item(keymap, "MARKER_OT_delete", DELKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "MARKER_OT_move", GKEY, KM_PRESS, 0, 0);
-
+#ifdef DURIAN_CAMERA_SWITCH
+ WM_keymap_add_item(keymap, "MARKER_OT_camera_bind", BKEY, KM_PRESS, KM_CTRL, 0);
+#endif
}
diff --git a/source/blender/editors/animation/anim_ops.c b/source/blender/editors/animation/anim_ops.c
index 0f9b2939260..9544bb70855 100644
--- a/source/blender/editors/animation/anim_ops.c
+++ b/source/blender/editors/animation/anim_ops.c
@@ -74,25 +74,6 @@ static int change_frame_poll(bContext *C)
return ((curarea) && (curarea->spacetype != SPACE_IPO));
}
-/* Set any flags that are necessary to indicate modal time-changing operation */
-static int change_frame_init(bContext *C, wmOperator *op)
-{
- ScrArea *curarea= CTX_wm_area(C);
-
- if (curarea == NULL)
- return 0;
-
- if (curarea->spacetype == SPACE_TIME) {
- SpaceTime *stime= CTX_wm_space_time(C);
-
- /* timeline displays frame number only when dragging indicator */
- // XXX make this more in line with other anim editors?
- stime->flag |= TIME_CFRA_NUM;
- }
-
- return 1;
-}
-
/* Set the new frame number */
static void change_frame_apply(bContext *C, wmOperator *op)
{
@@ -106,33 +87,12 @@ static void change_frame_apply(bContext *C, wmOperator *op)
WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
}
-/* Clear any temp flags */
-static void change_frame_exit(bContext *C, wmOperator *op)
-{
- ScrArea *curarea= CTX_wm_area(C);
-
- if (curarea == NULL)
- return;
-
- if (curarea->spacetype == SPACE_TIME) {
- SpaceTime *stime= CTX_wm_space_time(C);
-
- /* timeline displays frame number only when dragging indicator */
- // XXX make this more in line with other anim editors?
- stime->flag &= ~TIME_CFRA_NUM;
- }
-}
-
/* ---- */
/* Non-modal callback for running operator without user input */
static int change_frame_exec(bContext *C, wmOperator *op)
{
- if (!change_frame_init(C, op))
- return OPERATOR_CANCELLED;
-
change_frame_apply(C, op);
- change_frame_exit(C, op);
return OPERATOR_FINISHED;
}
@@ -166,7 +126,6 @@ static int change_frame_invoke(bContext *C, wmOperator *op, wmEvent *event)
*/
RNA_int_set(op->ptr, "frame", frame_from_event(C, event));
- change_frame_init(C, op);
change_frame_apply(C, op);
/* add temp handler */
@@ -175,20 +134,12 @@ static int change_frame_invoke(bContext *C, wmOperator *op, wmEvent *event)
return OPERATOR_RUNNING_MODAL;
}
-/* In case modal operator is cancelled */
-static int change_frame_cancel(bContext *C, wmOperator *op)
-{
- change_frame_exit(C, op);
- return OPERATOR_CANCELLED;
-}
-
/* Modal event handling of frame changing */
static int change_frame_modal(bContext *C, wmOperator *op, wmEvent *event)
{
/* execute the events */
switch (event->type) {
case ESCKEY:
- change_frame_exit(C, op);
return OPERATOR_FINISHED;
case MOUSEMOVE:
@@ -201,10 +152,8 @@ static int change_frame_modal(bContext *C, wmOperator *op, wmEvent *event)
/* we check for either mouse-button to end, as checking for ACTIONMOUSE (which is used to init
* the modal op) doesn't work for some reason
*/
- if (event->val==KM_RELEASE) {
- change_frame_exit(C, op);
+ if (event->val==KM_RELEASE)
return OPERATOR_FINISHED;
- }
break;
}
@@ -221,7 +170,6 @@ void ANIM_OT_change_frame(wmOperatorType *ot)
/* api callbacks */
ot->exec= change_frame_exec;
ot->invoke= change_frame_invoke;
- ot->cancel= change_frame_cancel;
ot->modal= change_frame_modal;
ot->poll= change_frame_poll;
@@ -402,24 +350,22 @@ void ED_operatortypes_anim(void)
WM_operatortype_append(ANIM_OT_previewrange_clear);
/* Entire UI --------------------------------------- */
- WM_operatortype_append(ANIM_OT_insert_keyframe);
- WM_operatortype_append(ANIM_OT_delete_keyframe);
- WM_operatortype_append(ANIM_OT_insert_keyframe_menu);
- WM_operatortype_append(ANIM_OT_delete_keyframe_v3d);
- WM_operatortype_append(ANIM_OT_insert_keyframe_button);
- WM_operatortype_append(ANIM_OT_delete_keyframe_button);
+ WM_operatortype_append(ANIM_OT_keyframe_insert);
+ WM_operatortype_append(ANIM_OT_keyframe_delete);
+ WM_operatortype_append(ANIM_OT_keyframe_insert_menu);
+ WM_operatortype_append(ANIM_OT_keyframe_delete_v3d);
+ WM_operatortype_append(ANIM_OT_keyframe_insert_button);
+ WM_operatortype_append(ANIM_OT_keyframe_delete_button);
- WM_operatortype_append(ANIM_OT_add_driver_button);
- WM_operatortype_append(ANIM_OT_remove_driver_button);
+ WM_operatortype_append(ANIM_OT_driver_button_add);
+ WM_operatortype_append(ANIM_OT_driver_button_remove);
WM_operatortype_append(ANIM_OT_copy_driver_button);
WM_operatortype_append(ANIM_OT_paste_driver_button);
-
- WM_operatortype_append(ANIM_OT_copy_clipboard_button);
- WM_operatortype_append(ANIM_OT_add_keyingset_button);
- WM_operatortype_append(ANIM_OT_remove_keyingset_button);
+ WM_operatortype_append(ANIM_OT_keyingset_button_add);
+ WM_operatortype_append(ANIM_OT_keyingset_button_remove);
WM_operatortype_append(ANIM_OT_keying_set_add);
WM_operatortype_append(ANIM_OT_keying_set_remove);
diff --git a/source/blender/editors/animation/drivers.c b/source/blender/editors/animation/drivers.c
index 949fbdd44cc..59e52c0d489 100644
--- a/source/blender/editors/animation/drivers.c
+++ b/source/blender/editors/animation/drivers.c
@@ -53,6 +53,7 @@
#include "BKE_animsys.h"
#include "BKE_action.h"
#include "BKE_constraint.h"
+#include "BKE_depsgraph.h"
#include "BKE_fcurve.h"
#include "BKE_utildefines.h"
#include "BKE_context.h"
@@ -171,44 +172,47 @@ short ANIM_add_driver (ID *id, const char rna_path[], int array_index, short fla
/* will only loop once unless the array index was -1 */
for (; array_index < array_index_max; array_index++) {
- /* create F-Curve with Driver */
- fcu= verify_driver_fcurve(id, rna_path, array_index, 1);
+ /* create F-Curve with Driver */
+ fcu= verify_driver_fcurve(id, rna_path, array_index, 1);
- if (fcu && fcu->driver) {
- fcu->driver->type= type;
-
- /* fill in current value for python */
- if (type == DRIVER_TYPE_PYTHON) {
- PropertyType proptype= RNA_property_type(prop);
- int array= RNA_property_array_length(&ptr, prop);
- char *expression= fcu->driver->expression;
- int val, maxlen= sizeof(fcu->driver->expression);
- float fval;
+ if (fcu && fcu->driver) {
+ ChannelDriver *driver= fcu->driver;
- if (proptype == PROP_BOOLEAN) {
- if (!array) val= RNA_property_boolean_get(&ptr, prop);
- else val= RNA_property_boolean_get_index(&ptr, prop, array_index);
-
- BLI_strncpy(expression, (val)? "True": "False", maxlen);
- }
- else if (proptype == PROP_INT) {
- if (!array) val= RNA_property_int_get(&ptr, prop);
- else val= RNA_property_int_get_index(&ptr, prop, array_index);
-
- BLI_snprintf(expression, maxlen, "%d", val);
- }
- else if (proptype == PROP_FLOAT) {
- if (!array) fval= RNA_property_float_get(&ptr, prop);
- else fval= RNA_property_float_get_index(&ptr, prop, array_index);
+ /* set the type of the driver */
+ driver->type= type;
+
+ /* fill in current value for python */
+ if (type == DRIVER_TYPE_PYTHON) {
+ PropertyType proptype= RNA_property_type(prop);
+ int array= RNA_property_array_length(&ptr, prop);
+ char *expression= driver->expression;
+ int val, maxlen= sizeof(driver->expression);
+ float fval;
- BLI_snprintf(expression, maxlen, "%.3f", fval);
+ if (proptype == PROP_BOOLEAN) {
+ if (!array) val= RNA_property_boolean_get(&ptr, prop);
+ else val= RNA_property_boolean_get_index(&ptr, prop, array_index);
+
+ BLI_strncpy(expression, (val)? "True": "False", maxlen);
+ }
+ else if (proptype == PROP_INT) {
+ if (!array) val= RNA_property_int_get(&ptr, prop);
+ else val= RNA_property_int_get_index(&ptr, prop, array_index);
+
+ BLI_snprintf(expression, maxlen, "%d", val);
+ }
+ else if (proptype == PROP_FLOAT) {
+ if (!array) fval= RNA_property_float_get(&ptr, prop);
+ else fval= RNA_property_float_get_index(&ptr, prop, array_index);
+
+ BLI_snprintf(expression, maxlen, "%.3f", fval);
+ }
}
}
/* set the done status */
done += (fcu != NULL);
}
- }
/* done */
return done;
@@ -391,14 +395,14 @@ static int add_driver_button_exec (bContext *C, wmOperator *op)
if (path) {
success+= ANIM_add_driver(ptr.id.data, path, index, 0, DRIVER_TYPE_PYTHON);
-
+
MEM_freeN(path);
}
}
if (success) {
/* send updates */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
/* for now, only send ND_KEYS for KeyingSets */
WM_event_add_notifier(C, ND_KEYS, NULL); // XXX
@@ -407,11 +411,11 @@ static int add_driver_button_exec (bContext *C, wmOperator *op)
return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED;
}
-void ANIM_OT_add_driver_button (wmOperatorType *ot)
+void ANIM_OT_driver_button_add (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Add Driver";
- ot->idname= "ANIM_OT_add_driver_button";
+ ot->idname= "ANIM_OT_driver_button_add";
ot->description= "Add driver(s) for the property(s) connected represented by the highlighted button.";
/* callbacks */
@@ -462,7 +466,7 @@ static int remove_driver_button_exec (bContext *C, wmOperator *op)
if (success) {
/* send updates */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
/* for now, only send ND_KEYS for KeyingSets */
WM_event_add_notifier(C, ND_KEYS, NULL); // XXX
@@ -471,11 +475,11 @@ static int remove_driver_button_exec (bContext *C, wmOperator *op)
return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED;
}
-void ANIM_OT_remove_driver_button (wmOperatorType *ot)
+void ANIM_OT_driver_button_remove (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Remove Driver";
- ot->idname= "ANIM_OT_remove_driver_button";
+ ot->idname= "ANIM_OT_driver_button_remove";
ot->description= "Remove the driver(s) for the property(s) connected represented by the highlighted button.";
/* callbacks */
@@ -577,47 +581,4 @@ void ANIM_OT_paste_driver_button (wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
-
-/* Copy to Clipboard Button Operator ------------------------ */
-
-static int copy_clipboard_button_exec(bContext *C, wmOperator *op)
-{
- PointerRNA ptr;
- PropertyRNA *prop= NULL;
- char *path;
- short success= 0;
- int index;
-
- /* try to create driver using property retrieved from UI */
- memset(&ptr, 0, sizeof(PointerRNA));
- uiAnimContextProperty(C, &ptr, &prop, &index);
-
- if (ptr.data && prop) {
- path= RNA_path_from_ID_to_property(&ptr, prop);
-
- if (path) {
- WM_clipboard_text_set(path, FALSE);
- MEM_freeN(path);
- }
- }
-
- /* since we're just copying, we don't really need to do anything else...*/
- return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED;
-}
-
-void ANIM_OT_copy_clipboard_button(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Copy Data Path";
- ot->idname= "ANIM_OT_copy_clipboard_button";
- ot->description= "Copy the RNA data path for this property to the clipboard.";
-
- /* callbacks */
- ot->exec= copy_clipboard_button_exec;
- //op->poll= ??? // TODO: need to have some valid property before this can be done
-
- /* flags */
- ot->flag= OPTYPE_REGISTER;
-}
-
/* ************************************************** */
diff --git a/source/blender/editors/animation/fmodifier_ui.c b/source/blender/editors/animation/fmodifier_ui.c
index b1241bd274c..3ba20ca3e88 100644
--- a/source/blender/editors/animation/fmodifier_ui.c
+++ b/source/blender/editors/animation/fmodifier_ui.c
@@ -111,16 +111,6 @@ static void validate_fmodifier_cb (bContext *C, void *fcm_v, void *dummy)
fmi->verify_data(fcm);
}
-/* callback to set the active modifier */
-static void activate_fmodifier_cb (bContext *C, void *fmods_v, void *fcm_v)
-{
- ListBase *modifiers = (ListBase *)fmods_v;
- FModifier *fcm= (FModifier *)fcm_v;
-
- /* call API function to set the active modifier for active modifier-stack */
- set_active_fmodifier(modifiers, fcm);
-}
-
/* callback to remove the given modifier */
static void delete_fmodifier_cb (bContext *C, void *fmods_v, void *fcm_v)
{
@@ -129,6 +119,10 @@ static void delete_fmodifier_cb (bContext *C, void *fmods_v, void *fcm_v)
/* remove the given F-Modifier from the active modifier-stack */
remove_fmodifier(modifiers, fcm);
+
+ /* send notifiers */
+ // XXX for now, this is the only way to get updates in all the right places... but would be nice to have a special one in this case
+ WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL);
}
/* --------------- */
@@ -282,7 +276,7 @@ static void draw_modifier__cycles(uiLayout *layout, ID *id, FModifier *fcm, shor
/* split into 2 columns
* NOTE: the mode comboboxes shouldn't get labels, otherwise there isn't enough room
*/
- split= uiLayoutSplit(layout, 0.5f);
+ split= uiLayoutSplit(layout, 0.5f, 0);
/* before range */
col= uiLayoutColumn(split, 1);
@@ -312,7 +306,7 @@ static void draw_modifier__noise(uiLayout *layout, ID *id, FModifier *fcm, short
uiItemR(layout, NULL, 0, &ptr, "modification", 0);
/* split into 2 columns */
- split= uiLayoutSplit(layout, 0.5f);
+ split= uiLayoutSplit(layout, 0.5f, 0);
/* col 1 */
col= uiLayoutColumn(split, 0);
@@ -327,45 +321,6 @@ static void draw_modifier__noise(uiLayout *layout, ID *id, FModifier *fcm, short
/* --------------- */
-/* draw settings for sound modifier */
-static void draw_modifier__sound(const bContext *C, uiLayout *layout, ID *id, FModifier *fcm, short width)
-{
- FMod_Sound *data= (FMod_Sound *)fcm->data;
- PointerRNA ptr;
-
- /* init the RNA-pointer */
- RNA_pointer_create(id, &RNA_FModifierSound, fcm, &ptr);
-
- /* sound */
- uiTemplateID(layout, (bContext*)C, &ptr, "sound", NULL, "sound.open", NULL);
-
- if (data->sound)
- {
- /* only sounds that are cached can be used, so display error if not cached */
- if (data->sound->cache)
- {
- /* blending mode */
- uiItemR(layout, NULL, 0, &ptr, "modification", 0);
-
- /* settings */
- uiItemR(layout, NULL, 0, &ptr, "strength", 0);
- uiItemR(layout, NULL, 0, &ptr, "delay", 0);
- }
- else
- {
- PointerRNA id_ptr;
-
- RNA_id_pointer_create((ID *)data->sound, &id_ptr);
-
- /* error message with a button underneath allowing users to rectify the issue */
- uiItemL(layout, "Sound must be cached.", ICON_ERROR);
- uiItemR(layout, NULL, 0, &id_ptr, "caching", UI_ITEM_R_TOGGLE);
- }
- }
-}
-
-/* --------------- */
-
#define BINARYSEARCH_FRAMEEQ_THRESH 0.0001
/* Binary search algorithm for finding where to insert Envelope Data Point.
@@ -566,7 +521,7 @@ static void draw_modifier__envelope(uiLayout *layout, ID *id, FModifier *fcm, sh
block= uiLayoutGetBlock(row);
uiBlockBeginAlign(block);
- but=uiDefButF(block, NUM, B_FMODIFIER_REDRAW, "Fra:", 0, 0, 90, 20, &fed->time, -UI_FLT_MAX, UI_FLT_MAX, 10, 1, "Frame that envelope point occurs");
+ but=uiDefButF(block, NUM, B_FMODIFIER_REDRAW, "Fra:", 0, 0, 90, 20, &fed->time, -MAXFRAMEF, MAXFRAMEF, 10, 1, "Frame that envelope point occurs");
uiButSetFunc(but, validate_fmodifier_cb, fcm, NULL);
uiDefButF(block, NUM, B_FMODIFIER_REDRAW, "Min:", 0, 0, 100, 20, &fed->min, -UI_FLT_MAX, UI_FLT_MAX, 10, 2, "Minimum bound of envelope at this point");
@@ -594,7 +549,7 @@ static void draw_modifier__limits(uiLayout *layout, ID *id, FModifier *fcm, shor
row= uiLayoutRow(layout, 0);
/* split into 2 columns */
- split= uiLayoutSplit(layout, 0.5f);
+ split= uiLayoutSplit(layout, 0.5f, 0);
/* x-minimum */
col= uiLayoutColumn(split, 1);
@@ -612,7 +567,7 @@ static void draw_modifier__limits(uiLayout *layout, ID *id, FModifier *fcm, shor
row= uiLayoutRow(layout, 0);
/* split into 2 columns */
- split= uiLayoutSplit(layout, 0.5f);
+ split= uiLayoutSplit(layout, 0.5f, 0);
/* x-minimum */
col= uiLayoutColumn(split, 1);
@@ -629,13 +584,17 @@ static void draw_modifier__limits(uiLayout *layout, ID *id, FModifier *fcm, shor
/* --------------- */
-void ANIM_uiTemplate_fmodifier_draw (const bContext *C, uiLayout *layout, ID *id, ListBase *modifiers, FModifier *fcm)
+void ANIM_uiTemplate_fmodifier_draw (uiLayout *layout, ID *id, ListBase *modifiers, FModifier *fcm)
{
FModifierTypeInfo *fmi= fmodifier_get_typeinfo(fcm);
uiLayout *box, *row, *subrow;
uiBlock *block;
uiBut *but;
short width= 314;
+ PointerRNA ptr;
+
+ /* init the RNA-pointer */
+ RNA_pointer_create(id, &RNA_FModifierFunctionGenerator, fcm, &ptr);
/* draw header */
{
@@ -645,31 +604,33 @@ void ANIM_uiTemplate_fmodifier_draw (const bContext *C, uiLayout *layout, ID *id
row= uiLayoutRow(box, 0);
block= uiLayoutGetBlock(row); // err...
- uiBlockSetEmboss(block, UI_EMBOSSN);
-
/* left-align -------------------------------------------- */
subrow= uiLayoutRow(row, 0);
uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_LEFT);
+ uiBlockSetEmboss(block, UI_EMBOSSN);
+
/* expand */
- uiDefIconButBitS(block, ICONTOG, FMODIFIER_FLAG_EXPANDED, B_REDR, ICON_TRIA_RIGHT, 0, -1, UI_UNIT_X, UI_UNIT_Y, &fcm->flag, 0.0, 0.0, 0, 0, "Modifier is expanded.");
+ uiItemR(subrow, "", 0, &ptr, "expanded", UI_ITEM_R_ICON_ONLY);
/* checkbox for 'active' status (for now) */
- but= uiDefIconButBitS(block, ICONTOG, FMODIFIER_FLAG_ACTIVE, B_REDR, ICON_RADIOBUT_OFF, 0, -1, UI_UNIT_X, UI_UNIT_Y, &fcm->flag, 0.0, 0.0, 0, 0, "Modifier is active one.");
- uiButSetFunc(but, activate_fmodifier_cb, modifiers, fcm);
+ uiItemR(subrow, "", 0, &ptr, "active", UI_ITEM_R_ICON_ONLY);
/* name */
if (fmi)
- uiDefBut(block, LABEL, 1, fmi->name, 0, 0, 150, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "F-Curve Modifier Type. Click to make modifier active one.");
+ uiItemL(subrow, fmi->name, 0);
else
- uiDefBut(block, LABEL, 1, "<Unknown Modifier>", 0, 0, 150, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "F-Curve Modifier Type. Click to make modifier active one.");
+ uiItemL(subrow, "<Unknown Modifier>", 0);
/* right-align ------------------------------------------- */
subrow= uiLayoutRow(row, 0);
uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_RIGHT);
+
/* 'mute' button */
- uiDefIconButBitS(block, ICONTOG, FMODIFIER_FLAG_MUTED, B_REDR, ICON_MUTE_IPO_OFF, 0, 0, UI_UNIT_X, UI_UNIT_Y, &fcm->flag, 0.0, 0.0, 0, 0, "Modifier is temporarily muted (not evaluated).");
+ uiItemR(subrow, "", 0, &ptr, "muted", UI_ITEM_R_ICON_ONLY);
+
+ uiBlockSetEmboss(block, UI_EMBOSSN);
/* delete button */
but= uiDefIconBut(block, BUT, B_REDR, ICON_X, 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Delete F-Curve Modifier.");
@@ -704,15 +665,11 @@ void ANIM_uiTemplate_fmodifier_draw (const bContext *C, uiLayout *layout, ID *id
case FMODIFIER_TYPE_LIMITS: /* Limits */
draw_modifier__limits(box, id, fcm, width);
break;
-
+
case FMODIFIER_TYPE_NOISE: /* Noise */
draw_modifier__noise(box, id, fcm, width);
break;
-
- case FMODIFIER_TYPE_SOUND: /* Sound */
- draw_modifier__sound(C, box, id, fcm, width);
- break;
-
+
default: /* unknown type */
break;
}
diff --git a/source/blender/editors/animation/keyframes_draw.c b/source/blender/editors/animation/keyframes_draw.c
index 512dc92de1d..b19ee5d1dab 100644
--- a/source/blender/editors/animation/keyframes_draw.c
+++ b/source/blender/editors/animation/keyframes_draw.c
@@ -170,6 +170,9 @@ static void add_bezt_to_keycolumns_list(DLRBT_Tree *keys, BezTriple *bezt)
/* ActBeztColumns (Helpers for Long Keyframes) ------------------------------ */
+/* maximum size of default buffer for BezTriple columns */
+#define MAX_ABK_BUFSIZE 4
+
/* BezTriple Container Node */
// NOTE: only used internally while building Long Keyframes for now, but may be useful externally?
typedef struct ActBeztColumn {
@@ -187,7 +190,7 @@ typedef struct ActBeztColumn {
short numBezts; /* number of BezTriples on this frame */
float cfra; /* frame that the BezTriples occur on */
- BezTriple *bezts[4]; /* buffer of pointers to BezTriples on the same frame */
+ BezTriple *bezts[MAX_ABK_BUFSIZE]; /* buffer of pointers to BezTriples on the same frame */
//BezTriple **bezts_extra; /* secondary buffer of pointers if need be */
} ActBeztColumn;
@@ -227,10 +230,11 @@ static void nupdate_abk_bezt (void *node, void *data)
BezTriple *bezt= (BezTriple *)data;
/* just add the BezTriple to the buffer if there's space, or allocate a new one */
- if (abk->numBezts >= sizeof(abk->bezts)/sizeof(BezTriple)) {
+ if (abk->numBezts >= MAX_ABK_BUFSIZE) {
// TODO: need to allocate new array to cater...
//bezts_extra= MEM_callocN(...);
- printf("FIXME: nupdate_abk_bezt() missing case for too many overlapping BezTriples \n");
+ if(G.f & G_DEBUG)
+ printf("FIXME: nupdate_abk_bezt() missing case for too many overlapping BezTriples \n");
}
else {
/* just store an extra one */
diff --git a/source/blender/editors/animation/keyframes_edit.c b/source/blender/editors/animation/keyframes_edit.c
index 23daa4a9034..413f01590ed 100644
--- a/source/blender/editors/animation/keyframes_edit.c
+++ b/source/blender/editors/animation/keyframes_edit.c
@@ -382,7 +382,7 @@ short ANIM_animchannel_keys_bezier_loop(BeztEditData *bed, bAnimListElem *ale, B
case ALE_GROUP: /* action group */
return agrp_keys_bezier_loop(bed, (bActionGroup *)ale->data, bezt_ok, bezt_cb, fcu_cb);
case ALE_ACT: /* action */
- return act_keys_bezier_loop(bed, (bAction *)ale->data, bezt_ok, bezt_cb, fcu_cb);
+ return act_keys_bezier_loop(bed, (bAction *)ale->key_data, bezt_ok, bezt_cb, fcu_cb);
case ALE_OB: /* object */
return ob_keys_bezier_loop(bed, (Object *)ale->key_data, bezt_ok, bezt_cb, fcu_cb, filterflag);
@@ -559,6 +559,22 @@ short bezt_to_cfraelem(BeztEditData *bed, BezTriple *bezt)
return 0;
}
+/* used to remap times from one range to another
+ * requires: bed->data = BeztEditCD_Remap
+ */
+void bezt_remap_times(BeztEditData *bed, BezTriple *bezt)
+{
+ BeztEditCD_Remap *rmap= (BeztEditCD_Remap*)bed->data;
+ const float scale = (rmap->newMax - rmap->newMin) / (rmap->oldMax - rmap->oldMin);
+
+ /* perform transform on all three handles unless indicated otherwise */
+ // TODO: need to include some checks for that
+
+ bezt->vec[0][0]= scale*(bezt->vec[0][0] - rmap->oldMin) + rmap->newMin;
+ bezt->vec[1][0]= scale*(bezt->vec[1][0] - rmap->oldMin) + rmap->newMin;
+ bezt->vec[2][0]= scale*(bezt->vec[2][0] - rmap->oldMin) + rmap->newMin;
+}
+
/* ******************************************* */
/* Transform */
diff --git a/source/blender/editors/animation/keyframes_general.c b/source/blender/editors/animation/keyframes_general.c
index 9d3fc7a0fc4..fb9d4d53b0f 100644
--- a/source/blender/editors/animation/keyframes_general.c
+++ b/source/blender/editors/animation/keyframes_general.c
@@ -60,7 +60,7 @@
* fine to have these calls here.
*
* There are also a few tools here which cannot be easily coded for in the other system (yet).
- * These may also be moved around at some point, but for now, they
+ * These may also be moved around at some point, but for now, they are best added here.
*
* - Joshua Leung, Dec 2008
*/
@@ -110,14 +110,6 @@ void delete_fcurve_keys(FCurve *fcu)
MEM_freeN(fcu->bezt);
fcu->bezt= NULL;
}
-
-#if 0 // XXX for now, we don't get rid of empty curves...
- /* Only delete if there isn't an ipo-driver still hanging around on an empty curve */
- if ((icu->totvert==0) && (icu->driver==NULL)) {
- BLI_remlink(&ipo->curve, icu);
- free_ipo_curve(icu);
- }
-#endif
}
/* ---------------- */
diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c
index d2079e05c4a..6d8938d9545 100644
--- a/source/blender/editors/animation/keyframing.c
+++ b/source/blender/editors/animation/keyframing.c
@@ -53,6 +53,7 @@
#include "BKE_animsys.h"
#include "BKE_action.h"
#include "BKE_constraint.h"
+#include "BKE_depsgraph.h"
#include "BKE_fcurve.h"
#include "BKE_nla.h"
#include "BKE_global.h"
@@ -79,6 +80,40 @@
#include "anim_intern.h"
+/* ************************************************** */
+/* Keyframing Setting Wrangling */
+
+/* Get the active settings for keyframing settings from context (specifically the given scene) */
+short ANIM_get_keyframing_flags (Scene *scene, short incl_mode)
+{
+ short flag = 0;
+
+ /* standard flags */
+ {
+ /* visual keying */
+ if (IS_AUTOKEY_FLAG(AUTOMATKEY))
+ flag |= INSERTKEY_MATRIX;
+
+ /* only needed */
+ if (IS_AUTOKEY_FLAG(INSERTNEEDED))
+ flag |= INSERTKEY_NEEDED;
+
+ /* default F-Curve color mode - RGB from XYZ indicies */
+ if (IS_AUTOKEY_FLAG(XYZ2RGB))
+ flag |= INSERTKEY_XYZ2RGB;
+ }
+
+ /* only if including settings from the autokeying mode... */
+ if (incl_mode)
+ {
+ /* keyframing mode - only replace existing keyframes */
+ if (IS_AUTOKEY_MODE(scene, EDITKEYS))
+ flag |= INSERTKEY_REPLACE;
+ }
+
+ return flag;
+}
+
/* ******************************************* */
/* Animation Data Validation */
@@ -273,6 +308,7 @@ int insert_vert_fcurve (FCurve *fcu, float x, float y, short flag)
beztr.ipo= U.ipo_new; /* use default interpolation mode here... */
beztr.f1= beztr.f2= beztr.f3= SELECT;
beztr.h1= beztr.h2= HD_AUTO; // XXX what about when we replace an old one?
+ //BEZKEYTYPE(&beztr)= scene->keytype; /* default keyframe type */
/* add temp beztriple to keyframes */
a= insert_bezt_fcurve(fcu, &beztr, flag);
@@ -501,7 +537,7 @@ static short visualkey_can_use (PointerRNA *ptr, PropertyRNA *prop)
/* get first constraint and determine type of keyframe constraints to check for
* - constraints can be on either Objects or PoseChannels, so we only check if the
- * ptr->type is RNA_Object or RNA_PoseChannel, which are the RNA wrapping-info for
+ * ptr->type is RNA_Object or RNA_PoseBone, which are the RNA wrapping-info for
* those structs, allowing us to identify the owner of the data
*/
if (ptr->type == &RNA_Object) {
@@ -599,7 +635,7 @@ static float visualkey_get_value (PointerRNA *ptr, PropertyRNA *prop, int array_
/* handle for Objects or PoseChannels only
* - constraints can be on either Objects or PoseChannels, so we only check if the
- * ptr->type is RNA_Object or RNA_PoseChannel, which are the RNA wrapping-info for
+ * ptr->type is RNA_Object or RNA_PoseBone, which are the RNA wrapping-info for
* those structs, allowing us to identify the owner of the data
* - assume that array_index will be sane
*/
@@ -808,13 +844,18 @@ short insert_keyframe (ID *id, bAction *act, const char group[], const char rna_
return 0;
}
- /* get F-Curve - if no action is provided, keyframe to the default one attached to this ID-block */
+ /* if no action is provided, keyframe to the default one attached to this ID-block */
if (act == NULL) {
AnimData *adt= BKE_animdata_from_id(id);
/* get action to add F-Curve+keyframe to */
act= verify_adt_action(id, 1);
+ if(act==NULL) {
+ printf("Insert Key: Could not insert keyframe, as this type does not support animation data (ID = %s, Path = %s)\n", id->name, rna_path);
+ return 0;
+ }
+
/* apply NLA-mapping to frame to use (if applicable) */
cfra= BKE_nla_tweakedit_remap(adt, cfra, NLATIME_CONVERT_UNMAP);
}
@@ -836,14 +877,25 @@ short insert_keyframe (ID *id, bAction *act, const char group[], const char rna_
/* key entire array convenience method */
if (array_index == -1) {
array_index= 0;
- array_index_max= RNA_property_array_length(&ptr, prop) + 1;
+ array_index_max= RNA_property_array_length(&ptr, prop);
}
/* will only loop once unless the array index was -1 */
for (; array_index < array_index_max; array_index++) {
+ /* make sure the F-Curve exists */
fcu= verify_fcurve(act, group, rna_path, array_index, 1);
- /* insert keyframe */
+ /* set color mode if the F-Curve is new (i.e. without any keyframes) */
+ if ((fcu->totvert == 0) && (flag & INSERTKEY_XYZ2RGB)) {
+ /* for Loc/Rot/Scale and also Color F-Curves, the color of the F-Curve in the Graph Editor,
+ * is determined by the array index for the F-Curve
+ */
+ if (ELEM4(RNA_property_subtype(prop), PROP_TRANSLATION, PROP_XYZ, PROP_EULER, PROP_COLOR)) {
+ fcu->color_mode= FCURVE_COLOR_AUTO_RGB;
+ }
+ }
+
+ /* insert keyframe */
ret += insert_keyframe_direct(ptr, prop, fcu, cfra, flag);
}
@@ -862,6 +914,7 @@ short insert_keyframe (ID *id, bAction *act, const char group[], const char rna_
*/
short delete_keyframe (ID *id, bAction *act, const char group[], const char rna_path[], int array_index, float cfra, short flag)
{
+ AnimData *adt= BKE_animdata_from_id(id);
FCurve *fcu = NULL;
/* get F-Curve
@@ -870,7 +923,6 @@ short delete_keyframe (ID *id, bAction *act, const char group[], const char rna_
*/
if (act == NULL) {
/* if no action is provided, use the default one attached to this ID-block */
- AnimData *adt= BKE_animdata_from_id(id);
act= adt->action;
/* apply NLA-mapping to frame to use (if applicable) */
@@ -912,11 +964,9 @@ short delete_keyframe (ID *id, bAction *act, const char group[], const char rna_
/* delete the key at the index (will sanity check + do recalc afterwards) */
delete_fcurve_key(fcu, i, 1);
- /* Only delete curve too if there are no points (we don't need to check for drivers, as they're kept separate) */
- if (fcu->totvert == 0) {
- BLI_remlink(&act->curves, fcu);
- free_fcurve(fcu);
- }
+ /* Only delete curve too if it won't be doing anything anymore */
+ if ((fcu->totvert == 0) && (list_has_suitable_fmodifier(&fcu->modifiers, 0, FMI_TYPE_GENERATE_CURVE) == 0))
+ ANIM_fcurve_delete_from_animdata(NULL, adt, fcu);
/* return success */
return 1;
@@ -1003,11 +1053,18 @@ static int insert_key_exec (bContext *C, wmOperator *op)
if (G.f & G_DEBUG)
printf("KeyingSet '%s' - Successfully added %d Keyframes \n", ks->name, success);
- /* report failure? */
- if (success == 0)
- BKE_report(op->reports, RPT_WARNING, "Keying Set failed to insert any keyframes");
- else
+ /* report failure or do updates? */
+ if (success) {
+ /* if the appropriate properties have been set, make a note that we've inserted something */
+ if (RNA_boolean_get(op->ptr, "confirm_success"))
+ BKE_reportf(op->reports, RPT_INFO, "Successfully added %d Keyframes for KeyingSet '%s'", success, ks->name);
+
+ /* send notifiers that keyframes have been changed */
WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL);
+ }
+ else
+ BKE_report(op->reports, RPT_WARNING, "Keying Set failed to insert any keyframes");
+
/* free temp context-data if available */
if (dsources.first) {
@@ -1016,16 +1073,17 @@ static int insert_key_exec (bContext *C, wmOperator *op)
}
/* send updates */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
return OPERATOR_FINISHED;
}
-void ANIM_OT_insert_keyframe (wmOperatorType *ot)
+void ANIM_OT_keyframe_insert (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Insert Keyframe";
- ot->idname= "ANIM_OT_insert_keyframe";
+ ot->idname= "ANIM_OT_keyframe_insert";
+ ot->description= "Insert keyframes on the current frame for all properties in the specified Keying Set.";
/* callbacks */
ot->exec= insert_key_exec;
@@ -1034,19 +1092,22 @@ void ANIM_OT_insert_keyframe (wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
- /* settings */
+ /* keyingset to use
+ * - here the type is int not enum, since many of the indicies here are determined dynamically
+ */
RNA_def_int(ot->srna, "type", 0, INT_MIN, INT_MAX, "Keying Set Number", "Index (determined internally) of the Keying Set to use", 0, 1);
+ /* confirm whether a keyframe was added by showing a popup
+ * - by default, this is enabled, since this operator is assumed to be called independently
+ */
+ RNA_def_boolean(ot->srna, "confirm_success", 1, "Confirm Successful Insert", "Show a popup when the keyframes get successfully added");
}
/* Insert Key Operator (With Menu) ------------------------ */
-
-/* XXX
- * This operator pops up a menu which sets gets the index of the keyingset to use,
- * setting the global settings, and calling the insert-keyframe operator using these
- * settings
+/* This operator checks if a menu should be shown for choosing the KeyingSet to use,
+ * then calls the
*/
-static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event)
+static void insert_key_menu_prompt (bContext *C)
{
Scene *scene= CTX_data_scene(C);
KeyingSet *ks;
@@ -1061,7 +1122,7 @@ static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event)
* - only include entry if it exists
*/
if (scene->active_keyingset) {
- uiItemIntO(layout, "Active Keying Set", 0, "ANIM_OT_insert_keyframe_menu", "type", i++);
+ uiItemIntO(layout, "Active Keying Set", 0, "ANIM_OT_keyframe_insert_menu", "type", i++);
uiItemS(layout);
}
else
@@ -1072,30 +1133,46 @@ static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event)
*/
if (scene->keyingsets.first) {
for (ks= scene->keyingsets.first; ks; ks= ks->next)
- uiItemIntO(layout, ks->name, 0, "ANIM_OT_insert_keyframe_menu", "type", i++);
+ uiItemIntO(layout, ks->name, 0, "ANIM_OT_keyframe_insert_menu", "type", i++);
uiItemS(layout);
}
/* builtin Keying Sets */
- // XXX polling the entire list may lag
i= -1;
for (ks= builtin_keyingsets.first; ks; ks= ks->next) {
/* only show KeyingSet if context is suitable */
if (keyingset_context_ok_poll(C, ks)) {
- uiItemIntO(layout, ks->name, 0, "ANIM_OT_insert_keyframe_menu", "type", i--);
+ uiItemIntO(layout, ks->name, 0, "ANIM_OT_keyframe_insert_menu", "type", i--);
}
}
uiPupMenuEnd(C, pup);
+}
+
+static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event)
+{
+ Scene *scene= CTX_data_scene(C);
- return OPERATOR_CANCELLED;
+ /* if prompting or no active Keying Set, show the menu */
+ if ((scene->active_keyingset == 0) || RNA_boolean_get(op->ptr, "always_prompt")) {
+ /* call the menu, which will call this operator again, hence the cancelled */
+ insert_key_menu_prompt(C);
+ return OPERATOR_CANCELLED;
+ }
+ else {
+ /* just call the exec() on the active keyingset */
+ RNA_int_set(op->ptr, "type", 0);
+ RNA_boolean_set(op->ptr, "confirm_success", 1);
+
+ return op->type->exec(C, op);
+ }
}
-void ANIM_OT_insert_keyframe_menu (wmOperatorType *ot)
+void ANIM_OT_keyframe_insert_menu (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Insert Keyframe Menu";
- ot->idname= "ANIM_OT_insert_keyframe_menu";
+ ot->idname= "ANIM_OT_keyframe_insert_menu";
/* callbacks */
ot->invoke= insert_key_menu_invoke;
@@ -1105,10 +1182,20 @@ void ANIM_OT_insert_keyframe_menu (wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
- /* properties
- * - NOTE: here the type is int not enum, since many of the indicies here are determined dynamically
+ /* keyingset to use
+ * - here the type is int not enum, since many of the indicies here are determined dynamically
*/
RNA_def_int(ot->srna, "type", 0, INT_MIN, INT_MAX, "Keying Set Number", "Index (determined internally) of the Keying Set to use", 0, 1);
+ /* confirm whether a keyframe was added by showing a popup
+ * - by default, this is disabled so that if a menu is shown, this doesn't come up too
+ */
+ // XXX should this just be always on?
+ RNA_def_boolean(ot->srna, "confirm_success", 0, "Confirm Successful Insert", "Show a popup when the keyframes get successfully added");
+ /* whether the menu should always be shown
+ * - by default, the menu should only be shown when there is no active Keying Set (2.5 behaviour),
+ * although in some cases it might be useful to always shown (pre 2.5 behaviour)
+ */
+ RNA_def_boolean(ot->srna, "always_prompt", 0, "Always Show Menu", "");
}
/* Delete Key Operator ------------------------ */
@@ -1154,11 +1241,17 @@ static int delete_key_exec (bContext *C, wmOperator *op)
if (G.f & G_DEBUG)
printf("KeyingSet '%s' - Successfully removed %d Keyframes \n", ks->name, success);
- /* report failure? */
- if (success == 0)
- BKE_report(op->reports, RPT_WARNING, "Keying Set failed to remove any keyframes");
- else
+ /* report failure or do updates? */
+ if (success) {
+ /* if the appropriate properties have been set, make a note that we've inserted something */
+ if (RNA_boolean_get(op->ptr, "confirm_success"))
+ BKE_reportf(op->reports, RPT_INFO, "Successfully removed %d Keyframes for KeyingSet '%s'", success, ks->name);
+
+ /* send notifiers that keyframes have been changed */
WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL);
+ }
+ else
+ BKE_report(op->reports, RPT_WARNING, "Keying Set failed to remove any keyframes");
/* free temp context-data if available */
if (dsources.first) {
@@ -1167,16 +1260,17 @@ static int delete_key_exec (bContext *C, wmOperator *op)
}
/* send updates */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
return OPERATOR_FINISHED;
}
-void ANIM_OT_delete_keyframe (wmOperatorType *ot)
+void ANIM_OT_keyframe_delete (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Delete Keyframe";
- ot->idname= "ANIM_OT_delete_keyframe";
+ ot->idname= "ANIM_OT_keyframe_delete";
+ ot->description= "Delete keyframes on the current frame for all properties in the specified Keying Set.";
/* callbacks */
ot->exec= delete_key_exec;
@@ -1185,10 +1279,14 @@ void ANIM_OT_delete_keyframe (wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
- /* properties
- * - NOTE: here the type is int not enum, since many of the indicies here are determined dynamically
+ /* keyingset to use
+ * - here the type is int not enum, since many of the indicies here are determined dynamically
*/
RNA_def_int(ot->srna, "type", 0, INT_MIN, INT_MAX, "Keying Set Number", "Index (determined internally) of the Keying Set to use", 0, 1);
+ /* confirm whether a keyframe was added by showing a popup
+ * - by default, this is enabled, since this operator is assumed to be called independently
+ */
+ RNA_def_boolean(ot->srna, "confirm_success", 1, "Confirm Successful Insert", "Show a popup when the keyframes get successfully added");
}
/* Delete Key Operator ------------------------ */
@@ -1229,18 +1327,18 @@ static int delete_key_v3d_exec (bContext *C, wmOperator *op)
CTX_DATA_END;
/* send updates */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_OBJECT|ND_KEYS, NULL);
return OPERATOR_FINISHED;
}
-void ANIM_OT_delete_keyframe_v3d (wmOperatorType *ot)
+void ANIM_OT_keyframe_delete_v3d (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Delete Keyframe";
- ot->idname= "ANIM_OT_delete_keyframe_v3d";
+ ot->idname= "ANIM_OT_keyframe_delete_v3d";
/* callbacks */
ot->invoke= WM_operator_confirm;
@@ -1267,12 +1365,7 @@ static int insert_key_button_exec (bContext *C, wmOperator *op)
short flag = 0;
/* flags for inserting keyframes */
- if (IS_AUTOKEY_FLAG(AUTOMATKEY))
- flag |= INSERTKEY_MATRIX;
- if (IS_AUTOKEY_FLAG(INSERTNEEDED))
- flag |= INSERTKEY_NEEDED;
- if (IS_AUTOKEY_MODE(scene, EDITKEYS))
- flag |= INSERTKEY_REPLACE;
+ flag = ANIM_get_keyframing_flags(scene, 1);
/* try to insert keyframe using property retrieved from UI */
memset(&ptr, 0, sizeof(PointerRNA));
@@ -1319,7 +1412,7 @@ static int insert_key_button_exec (bContext *C, wmOperator *op)
if (success) {
/* send updates */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
/* for now, only send ND_KEYS for KeyingSets */
WM_event_add_notifier(C, ND_KEYS, NULL);
@@ -1328,11 +1421,11 @@ static int insert_key_button_exec (bContext *C, wmOperator *op)
return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED;
}
-void ANIM_OT_insert_keyframe_button (wmOperatorType *ot)
+void ANIM_OT_keyframe_insert_button (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Insert Keyframe (Buttons)";
- ot->idname= "ANIM_OT_insert_keyframe_button";
+ ot->idname= "ANIM_OT_keyframe_insert_button";
/* callbacks */
ot->exec= insert_key_button_exec;
@@ -1389,7 +1482,7 @@ static int delete_key_button_exec (bContext *C, wmOperator *op)
if(success) {
/* send updates */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
/* for now, only send ND_KEYS for KeyingSets */
WM_event_add_notifier(C, ND_KEYS, NULL);
@@ -1398,11 +1491,11 @@ static int delete_key_button_exec (bContext *C, wmOperator *op)
return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED;
}
-void ANIM_OT_delete_keyframe_button (wmOperatorType *ot)
+void ANIM_OT_keyframe_delete_button (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Delete Keyframe (Buttons)";
- ot->idname= "ANIM_OT_delete_keyframe_button";
+ ot->idname= "ANIM_OT_keyframe_delete_button";
/* callbacks */
ot->exec= delete_key_button_exec;
diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c
index d7406a7bcfd..d5624b8bc5b 100644
--- a/source/blender/editors/animation/keyingsets.c
+++ b/source/blender/editors/animation/keyingsets.c
@@ -53,6 +53,7 @@
#include "BKE_animsys.h"
#include "BKE_action.h"
#include "BKE_constraint.h"
+#include "BKE_depsgraph.h"
#include "BKE_fcurve.h"
#include "BKE_utildefines.h"
#include "BKE_context.h"
@@ -132,11 +133,9 @@ static int add_default_keyingset_exec (bContext *C, wmOperator *op)
*/
flag |= KEYINGSET_ABSOLUTE;
- if (IS_AUTOKEY_FLAG(AUTOMATKEY))
- keyingflag |= INSERTKEY_MATRIX;
- if (IS_AUTOKEY_FLAG(INSERTNEEDED))
- keyingflag |= INSERTKEY_NEEDED;
-
+ /* 2nd arg is 0 to indicate that we don't want to include autokeying mode related settings */
+ keyingflag = ANIM_get_keyframing_flags(scene, 0);
+
/* call the API func, and set the active keyingset index */
BKE_keyingset_add(&scene->keyingsets, NULL, flag, keyingflag);
@@ -325,6 +324,8 @@ static int add_keyingset_button_exec (bContext *C, wmOperator *op)
keyingflag |= INSERTKEY_MATRIX;
if (IS_AUTOKEY_FLAG(INSERTNEEDED))
keyingflag |= INSERTKEY_NEEDED;
+ if (IS_AUTOKEY_FLAG(XYZ2RGB))
+ keyingflag |= INSERTKEY_XYZ2RGB;
/* call the API func, and set the active keyingset index */
ks= BKE_keyingset_add(&scene->keyingsets, "ButtonKeyingSet", flag, keyingflag);
@@ -366,7 +367,7 @@ static int add_keyingset_button_exec (bContext *C, wmOperator *op)
if (success) {
/* send updates */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
/* for now, only send ND_KEYS for KeyingSets */
WM_event_add_notifier(C, NC_SCENE|ND_KEYINGSET, NULL);
@@ -375,11 +376,11 @@ static int add_keyingset_button_exec (bContext *C, wmOperator *op)
return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED;
}
-void ANIM_OT_add_keyingset_button (wmOperatorType *ot)
+void ANIM_OT_keyingset_button_add (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Add to Keying Set";
- ot->idname= "ANIM_OT_add_keyingset_button";
+ ot->idname= "ANIM_OT_keyingset_button_add";
/* callbacks */
ot->exec= add_keyingset_button_exec;
@@ -444,7 +445,7 @@ static int remove_keyingset_button_exec (bContext *C, wmOperator *op)
if (success) {
/* send updates */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
/* for now, only send ND_KEYS for KeyingSets */
WM_event_add_notifier(C, NC_SCENE|ND_KEYINGSET, NULL);
@@ -453,11 +454,11 @@ static int remove_keyingset_button_exec (bContext *C, wmOperator *op)
return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED;
}
-void ANIM_OT_remove_keyingset_button (wmOperatorType *ot)
+void ANIM_OT_keyingset_button_remove (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Remove from Keying Set";
- ot->idname= "ANIM_OT_remove_keyingset_button";
+ ot->idname= "ANIM_OT_keyingset_button_remove";
/* callbacks */
ot->exec= remove_keyingset_button_exec;
@@ -1219,7 +1220,7 @@ static short modifykey_get_context_v3d_data (bContext *C, ListBase *dsources, Ke
//}
#endif
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones)
{
/* add a new keying-source */
cks= MEM_callocN(sizeof(bCommonKeySrc), "bCommonKeySrc");
@@ -1304,9 +1305,7 @@ int modify_keyframes (Scene *scene, ListBase *dsources, bAction *act, KeyingSet
kflag= ks->keyingflag;
/* suppliment with info from the context */
- if (IS_AUTOKEY_FLAG(AUTOMATKEY)) kflag |= INSERTKEY_MATRIX;
- if (IS_AUTOKEY_FLAG(INSERTNEEDED)) kflag |= INSERTKEY_NEEDED;
- if (IS_AUTOKEY_MODE(scene, EDITKEYS)) kflag |= INSERTKEY_REPLACE;
+ kflag |= ANIM_get_keyframing_flags(scene, 1);
}
else if (mode == MODIFYKEY_MODE_DELETE)
kflag= 0;
@@ -1353,9 +1352,9 @@ int modify_keyframes (Scene *scene, ListBase *dsources, bAction *act, KeyingSet
for (; i < arraylen; i++) {
/* action to take depends on mode */
if (mode == MODIFYKEY_MODE_INSERT)
- success+= insert_keyframe(ksp->id, act, groupname, ksp->rna_path, i, cfra, kflag);
+ success += insert_keyframe(ksp->id, act, groupname, ksp->rna_path, i, cfra, kflag);
else if (mode == MODIFYKEY_MODE_DELETE)
- success+= delete_keyframe(ksp->id, act, groupname, ksp->rna_path, i, cfra, kflag);
+ success += delete_keyframe(ksp->id, act, groupname, ksp->rna_path, i, cfra, kflag);
}
/* set recalc-flags */
diff --git a/source/blender/editors/armature/armature_intern.h b/source/blender/editors/armature/armature_intern.h
index 012610bfd25..c65d4637dcf 100644
--- a/source/blender/editors/armature/armature_intern.h
+++ b/source/blender/editors/armature/armature_intern.h
@@ -45,7 +45,7 @@ void ARMATURE_OT_subdivide_multi(struct wmOperatorType *ot);
void ARMATURE_OT_parent_set(struct wmOperatorType *ot);
void ARMATURE_OT_parent_clear(struct wmOperatorType *ot);
-void ARMATURE_OT_select_all_toggle(struct wmOperatorType *ot);
+void ARMATURE_OT_select_all(struct wmOperatorType *ot);
void ARMATURE_OT_select_inverse(struct wmOperatorType *ot);
void ARMATURE_OT_select_hierarchy(struct wmOperatorType *ot);
void ARMATURE_OT_select_linked(struct wmOperatorType *ot);
@@ -80,7 +80,7 @@ void POSE_OT_scale_clear(struct wmOperatorType *ot);
void POSE_OT_copy(struct wmOperatorType *ot);
void POSE_OT_paste(struct wmOperatorType *ot);
-void POSE_OT_select_all_toggle(struct wmOperatorType *ot);
+void POSE_OT_select_all(struct wmOperatorType *ot);
void POSE_OT_select_inverse(struct wmOperatorType *ot);
void POSE_OT_select_parent(struct wmOperatorType *ot);
void POSE_OT_select_hierarchy(struct wmOperatorType *ot);
@@ -137,7 +137,6 @@ struct EditBone;
struct ListBase;
EditBone *make_boneList(struct ListBase *edbo, struct ListBase *bones, struct EditBone *parent, struct Bone *actBone);
-struct EditBone *addEditBone(struct bArmature *arm, char *name);
void BIF_sk_selectStroke(struct bContext *C, short mval[2], short extend);
/* duplicate method */
diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c
index be6f7d536f8..a3c35413680 100644
--- a/source/blender/editors/armature/armature_ops.c
+++ b/source/blender/editors/armature/armature_ops.c
@@ -77,7 +77,7 @@ void ED_operatortypes_armature(void)
WM_operatortype_append(ARMATURE_OT_parent_set);
WM_operatortype_append(ARMATURE_OT_parent_clear);
- WM_operatortype_append(ARMATURE_OT_select_all_toggle);
+ WM_operatortype_append(ARMATURE_OT_select_all);
WM_operatortype_append(ARMATURE_OT_select_inverse);
WM_operatortype_append(ARMATURE_OT_select_hierarchy);
WM_operatortype_append(ARMATURE_OT_select_linked);
@@ -120,7 +120,7 @@ void ED_operatortypes_armature(void)
WM_operatortype_append(POSE_OT_copy);
WM_operatortype_append(POSE_OT_paste);
- WM_operatortype_append(POSE_OT_select_all_toggle);
+ WM_operatortype_append(POSE_OT_select_all);
WM_operatortype_append(POSE_OT_select_inverse);
WM_operatortype_append(POSE_OT_select_parent);
@@ -162,15 +162,15 @@ void ED_operatormacros_armature(void)
wmOperatorType *ot;
wmOperatorTypeMacro *otmacro;
- ot= WM_operatortype_append_macro("ARMATURE_OT_duplicate_move", "Add Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER);
+ ot= WM_operatortype_append_macro("ARMATURE_OT_duplicate_move", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER);
WM_operatortype_macro_define(ot, "ARMATURE_OT_duplicate");
- otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate");
+ otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
RNA_enum_set(otmacro->ptr, "proportional", 0);
ot= WM_operatortype_append_macro("ARMATURE_OT_extrude_move", "Extrude", OPTYPE_UNDO|OPTYPE_REGISTER);
otmacro=WM_operatortype_macro_define(ot, "ARMATURE_OT_extrude");
RNA_enum_set(otmacro->ptr, "forked", 0);
- otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate");
+ otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
RNA_enum_set(otmacro->ptr, "proportional", 0);
// XXX would it be nicer to just be able to have standard extrude_move, but set the forked property separate?
@@ -178,7 +178,7 @@ void ED_operatormacros_armature(void)
ot= WM_operatortype_append_macro("ARMATURE_OT_extrude_forked", "Extrude Forked", OPTYPE_UNDO|OPTYPE_REGISTER);
otmacro=WM_operatortype_macro_define(ot, "ARMATURE_OT_extrude");
RNA_enum_set(otmacro->ptr, "forked", 1);
- otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate");
+ otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
RNA_enum_set(otmacro->ptr, "proportional", 0);
}
@@ -219,7 +219,7 @@ void ED_keymap_armature(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "ARMATURE_OT_parent_set", PKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "ARMATURE_OT_parent_clear", PKEY, KM_PRESS, KM_ALT, 0);
- WM_keymap_add_item(keymap, "ARMATURE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ARMATURE_OT_select_all", AKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "ARMATURE_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0);
kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, 0, 0);
@@ -241,7 +241,7 @@ void ED_keymap_armature(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "ARMATURE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_move", EKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_forked", EKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "ARMATURE_OT_click_extrude", LEFTMOUSE, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "ARMATURE_OT_click_extrude", LEFTMOUSE, KM_CLICK, KM_CTRL, 0);
WM_keymap_add_item(keymap, "ARMATURE_OT_fill", FKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "ARMATURE_OT_merge", MKEY, KM_PRESS, KM_ALT, 0);
@@ -261,10 +261,10 @@ void ED_keymap_armature(wmKeyConfig *keyconf)
/* special transforms: */
/* 1) envelope/b-bone size */
- kmi= WM_keymap_add_item(keymap, "TFM_OT_transform", SKEY, KM_PRESS, KM_ALT, 0);
+ kmi= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, KM_ALT, 0);
RNA_enum_set(kmi->ptr, "mode", TFM_BONESIZE);
/* 2) set roll */
- kmi= WM_keymap_add_item(keymap, "TFM_OT_transform", RKEY, KM_PRESS, KM_CTRL, 0);
+ kmi= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", RKEY, KM_PRESS, KM_CTRL, 0);
RNA_enum_set(kmi->ptr, "mode", TFM_BONE_ROLL);
/* menus */
@@ -295,7 +295,7 @@ void ED_keymap_armature(wmKeyConfig *keyconf)
kmi= WM_keymap_add_item(keymap, "POSE_OT_paste", VKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
RNA_boolean_set(kmi->ptr, "flipped", 1);
- WM_keymap_add_item(keymap, "POSE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "POSE_OT_select_all", AKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "POSE_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "POSE_OT_select_parent", PKEY, KM_PRESS, KM_SHIFT, 0);
@@ -335,12 +335,12 @@ void ED_keymap_armature(wmKeyConfig *keyconf)
/* special transforms: */
/* 1) envelope/b-bone size */
- kmi= WM_keymap_add_item(keymap, "TFM_OT_transform", SKEY, KM_PRESS, KM_ALT, 0);
+ kmi= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, KM_ALT, 0);
RNA_enum_set(kmi->ptr, "mode", TFM_BONESIZE);
// XXX this should probably be in screen instead... here for testing purposes in the meantime... - Aligorith
- WM_keymap_verify_item(keymap, "ANIM_OT_insert_keyframe_menu", IKEY, KM_PRESS, 0, 0);
- WM_keymap_verify_item(keymap, "ANIM_OT_delete_keyframe_v3d", IKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_insert_menu", IKEY, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_delete_v3d", IKEY, KM_PRESS, KM_ALT, 0);
/* Pose -> PoseLib ------------- */
/* only set in posemode, by space_view3d listener */
diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c
index 96ef3fc4999..1ae5889ea32 100644
--- a/source/blender/editors/armature/editarmature.c
+++ b/source/blender/editors/armature/editarmature.c
@@ -141,7 +141,7 @@ void ED_armature_validate_active(struct bArmature *arm)
}
}
-void free_edit_bone(bArmature *arm, EditBone *bone)
+static void bone_free(bArmature *arm, EditBone *bone)
{
if(arm->act_edbone==bone)
arm->act_edbone= NULL;
@@ -154,6 +154,22 @@ void free_edit_bone(bArmature *arm, EditBone *bone)
BLI_freelinkN(arm->edbo, bone);
}
+void ED_armature_edit_bone_remove(bArmature *arm, EditBone* exBone)
+{
+ EditBone *curBone;
+
+ /* Find any bones that refer to this bone */
+ for (curBone=arm->edbo->first; curBone; curBone=curBone->next) {
+ if (curBone->parent==exBone) {
+ curBone->parent=exBone->parent;
+ curBone->flag &= ~BONE_CONNECTED;
+ }
+ }
+
+ bone_free(arm, exBone);
+}
+
+
/* converts Bones to EditBone list, used for tools as well */
EditBone *make_boneList(ListBase *edbo, ListBase *bones, EditBone *parent, Bone *actBone)
{
@@ -305,7 +321,7 @@ void ED_armature_from_edit(Object *obedit)
fBone->parent= eBone->parent;
}
printf("Warning: removed zero sized bone: %s\n", eBone->name);
- free_edit_bone(arm, eBone);
+ bone_free(arm, eBone);
}
}
@@ -318,7 +334,7 @@ void ED_armature_from_edit(Object *obedit)
memcpy(newBone->head, eBone->head, sizeof(float)*3);
memcpy(newBone->tail, eBone->tail, sizeof(float)*3);
newBone->flag= eBone->flag;
-
+
if (eBone == arm->act_edbone) {
newBone->flag |= BONE_SELECTED; /* important, editbones can be active with only 1 point selected */
arm->act_edbone= NULL;
@@ -337,7 +353,7 @@ void ED_armature_from_edit(Object *obedit)
newBone->rad_tail= eBone->rad_tail;
newBone->segments= eBone->segments;
newBone->layer = eBone->layer;
-
+
if(eBone->prop)
newBone->prop= IDP_CopyProperty(eBone->prop);
}
@@ -604,8 +620,9 @@ static int apply_armature_pose2bones_exec (bContext *C, wmOperator *op)
curbone->flag |= BONE_UNKEYED;
}
- /* convert editbones back to bones */
+ /* convert editbones back to bones, and then free the edit-data */
ED_armature_from_edit(ob);
+ ED_armature_edit_free(ob);
/* flush positions of posebones */
where_is_pose(scene, ob);
@@ -1035,7 +1052,7 @@ static void separate_armature_bones (Scene *scene, Object *ob, short sel)
free_pose_channel(pchan);
/* get rid of unneeded bone */
- free_edit_bone(arm, curbone);
+ bone_free(arm, curbone);
BLI_freelinkN(&ob->pose->chanbase, pchan);
}
}
@@ -1122,7 +1139,7 @@ static int separate_armature_exec (bContext *C, wmOperator *op)
void ARMATURE_OT_separate (wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Separate Armature";
+ ot->name= "Separate Bones";
ot->idname= "ARMATURE_OT_separate";
ot->description= "Isolate selected bones into a separate armature.";
@@ -1300,7 +1317,7 @@ static int pose_setflag_exec (bContext *C, wmOperator *op)
int mode= RNA_enum_get(op->ptr, "mode");
/* loop over all selected pchans */
- CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pose_bones)
{
bone_setflag(&pchan->bone->flag, flag, mode);
}
@@ -1671,22 +1688,6 @@ static EditBone *get_nearest_editbonepoint (ViewContext *vc, short mval[2], List
return NULL;
}
-/* warning, wont clear the active bone */
-static void delete_bone(bArmature *arm, EditBone* exBone)
-{
- EditBone *curBone;
-
- /* Find any bones that refer to this bone */
- for (curBone=arm->edbo->first; curBone; curBone=curBone->next) {
- if (curBone->parent==exBone) {
- curBone->parent=exBone->parent;
- curBone->flag &= ~BONE_CONNECTED;
- }
- }
-
- free_edit_bone(arm, exBone);
-}
-
/* context: editmode armature */
EditBone *ED_armature_bone_get_mirrored(ListBase *edbo, EditBone *ebo)
{
@@ -1783,7 +1784,7 @@ static int armature_delete_selected_exec(bContext *C, wmOperator *op)
if (arm->layer & curBone->layer) {
if (curBone->flag & BONE_SELECTED) {
if(curBone==arm->act_edbone) arm->act_edbone= NULL;
- delete_bone(arm, curBone);
+ ED_armature_edit_bone_remove(arm, curBone);
}
}
}
@@ -1875,7 +1876,7 @@ void ED_armature_deselectall(Object *obedit, int toggle, int doundo)
/* context: editmode armature in view3d */
-void mouse_armature(bContext *C, short mval[2], int extend)
+int mouse_armature(bContext *C, short mval[2], int extend)
{
Object *obedit= CTX_data_edit_object(C);
bArmature *arm= obedit->data;
@@ -1946,7 +1947,10 @@ void mouse_armature(bContext *C, short mval[2], int extend)
}
WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, vc.obedit);
+ return 1;
}
+
+ return 0;
}
void ED_armature_edit_free(struct Object *ob)
@@ -2022,7 +2026,7 @@ float ED_rollBoneToVector(EditBone *bone, float new_up_axis[3])
/* Set roll value for given bone -> Z-Axis Point up (original method) */
-void auto_align_ebone_zaxisup(Scene *scene, View3D *v3d, EditBone *ebone)
+static void auto_align_ebone_zaxisup(Scene *scene, View3D *v3d, EditBone *ebone)
{
float delta[3], curmat[3][3];
float xaxis[3]={1.0f, 0.0f, 0.0f}, yaxis[3], zaxis[3]={0.0f, 0.0f, 1.0f};
@@ -2050,16 +2054,13 @@ void auto_align_ebone_zaxisup(Scene *scene, View3D *v3d, EditBone *ebone)
mat3_to_vec_roll(diffmat, delta, &ebone->roll);
}
-/* Set roll value for given bone -> Z-Axis point towards cursor */
-void auto_align_ebone_tocursor(Scene *scene, View3D *v3d, EditBone *ebone)
+void auto_align_ebone_topoint(EditBone *ebone, float *cursor)
{
- Object *obedit= scene->obedit; // XXX get from context
- float *cursor= give_cursor(scene, v3d);
float delta[3], curmat[3][3];
float mat[4][4], tmat[4][4], imat[4][4];
float rmat[4][4], rot[3];
float vec[3];
-
+
/* find the current bone matrix as a 4x4 matrix (in Armature Space) */
sub_v3_v3v3(delta, ebone->tail, ebone->head);
vec_roll_to_mat3(delta, ebone->roll, curmat);
@@ -2067,8 +2068,7 @@ void auto_align_ebone_tocursor(Scene *scene, View3D *v3d, EditBone *ebone)
VECCOPY(mat[3], ebone->head);
/* multiply bone-matrix by object matrix (so that bone-matrix is in WorldSpace) */
- mul_m4_m4m4(tmat, mat, obedit->obmat);
- invert_m4_m4(imat, tmat);
+ invert_m4_m4(imat, mat);
/* find position of cursor relative to bone */
mul_v3_m4v3(vec, imat, cursor);
@@ -2089,6 +2089,18 @@ void auto_align_ebone_tocursor(Scene *scene, View3D *v3d, EditBone *ebone)
}
}
+static void auto_align_ebone_tocursor(Scene *scene, View3D *v3d, EditBone *ebone)
+{
+ float cursor_local[3];
+ float *cursor= give_cursor(scene, v3d);
+ float imat[3][3];
+
+ copy_m3_m4(imat, scene->obedit->obmat);
+ invert_m3(imat);
+ copy_v3_v3(cursor_local, cursor);
+ mul_m3_v3(imat, cursor_local);
+ auto_align_ebone_topoint(ebone, cursor_local);
+}
static EnumPropertyItem prop_calc_roll_types[] = {
{0, "GLOBALUP", 0, "Z-Axis Up", ""},
@@ -2242,7 +2254,7 @@ void undo_push_armature(bContext *C, char *name)
/* *************** Adding stuff in editmode *************** */
/* default bone add, returns it selected, but without tail set */
-EditBone *addEditBone(bArmature *arm, char *name)
+EditBone *ED_armature_edit_bone_add(bArmature *arm, char *name)
{
EditBone *bone= MEM_callocN(sizeof(EditBone), "eBone");
@@ -2266,14 +2278,6 @@ EditBone *addEditBone(bArmature *arm, char *name)
return bone;
}
-/* default bone add, returns it selected, but without tail set */
-static EditBone *add_editbone(Object *obedit, char *name)
-{
- bArmature *arm= obedit->data;
-
- return addEditBone(arm, name);
-}
-
/* v3d and rv3d are allowed to be NULL */
void add_primitive_bone(Scene *scene, View3D *v3d, RegionView3D *rv3d)
{
@@ -2298,7 +2302,7 @@ void add_primitive_bone(Scene *scene, View3D *v3d, RegionView3D *rv3d)
ED_armature_deselectall(obedit, 0, 0);
/* Create a bone */
- bone= add_editbone(obedit, "Bone");
+ bone= ED_armature_edit_bone_add(obedit->data, "Bone");
VECCOPY(bone->head, curs);
@@ -2364,7 +2368,7 @@ static int armature_click_extrude_exec(bContext *C, wmOperator *op)
}
}
- newbone= add_editbone(obedit, ebone->name);
+ newbone= ED_armature_edit_bone_add(arm, ebone->name);
arm->act_edbone= newbone;
if (to_root) {
@@ -2481,7 +2485,7 @@ static EditBone *add_points_bone (Object *obedit, float head[], float tail[])
{
EditBone *ebo;
- ebo= add_editbone(obedit, "Bone");
+ ebo= ED_armature_edit_bone_add(obedit->data, "Bone");
VECCOPY(ebo->head, head);
VECCOPY(ebo->tail, tail);
@@ -2578,7 +2582,7 @@ void updateDuplicateSubtarget(EditBone *dupBone, ListBase *editbones, Object *ob
EditBone *duplicateEditBoneObjects(EditBone *curBone, char *name, ListBase *editbones, Object *src_ob, Object *dst_ob)
{
- EditBone *eBone = MEM_callocN(sizeof(EditBone), "addup_editbone");
+ EditBone *eBone = MEM_mallocN(sizeof(EditBone), "addup_editbone");
/* Copy data from old bone to new bone */
memcpy(eBone, curBone, sizeof(EditBone));
@@ -2594,45 +2598,25 @@ EditBone *duplicateEditBoneObjects(EditBone *curBone, char *name, ListBase *edit
unique_editbone_name(editbones, eBone->name, NULL);
BLI_addtail(editbones, eBone);
+ /* copy the ID property */
+ if(curBone->prop)
+ eBone->prop= IDP_CopyProperty(curBone->prop);
+
/* Lets duplicate the list of constraints that the
* current bone has.
*/
if (src_ob->pose) {
bPoseChannel *chanold, *channew;
- ListBase *listold, *listnew;
chanold = verify_pose_channel(src_ob->pose, curBone->name);
if (chanold) {
- listold = &chanold->constraints;
- if (listold) {
- /* WARNING: this creates a new posechannel, but there will not be an attached bone
- * yet as the new bones created here are still 'EditBones' not 'Bones'.
- */
- channew =
- verify_pose_channel(dst_ob->pose, eBone->name);
- if (channew) {
- /* copy transform locks */
- channew->protectflag = chanold->protectflag;
-
- /* copy bone group */
- channew->agrp_index= chanold->agrp_index;
-
- /* ik (dof) settings */
- channew->ikflag = chanold->ikflag;
- VECCOPY(channew->limitmin, chanold->limitmin);
- VECCOPY(channew->limitmax, chanold->limitmax);
- VECCOPY(channew->stiffness, chanold->stiffness);
- channew->ikstretch= chanold->ikstretch;
- channew->ikrotweight= chanold->ikrotweight;
- channew->iklinweight= chanold->iklinweight;
-
- /* constraints */
- listnew = &channew->constraints;
- copy_constraints(listnew, listold);
-
- /* custom shape */
- channew->custom= chanold->custom;
- }
+ /* WARNING: this creates a new posechannel, but there will not be an attached bone
+ * yet as the new bones created here are still 'EditBones' not 'Bones'.
+ */
+ channew= verify_pose_channel(dst_ob->pose, eBone->name);
+
+ if(channew) {
+ duplicate_pose_channel_data(channew, chanold);
}
}
}
@@ -2682,65 +2666,12 @@ static int armature_duplicate_selected_exec(bContext *C, wmOperator *op)
for (curBone=arm->edbo->first; curBone && curBone!=firstDup; curBone=curBone->next) {
if (EBONE_VISIBLE(arm, curBone)) {
if (curBone->flag & BONE_SELECTED) {
- eBone=MEM_callocN(sizeof(EditBone), "addup_editbone");
- eBone->flag |= BONE_SELECTED;
- /* Copy data from old bone to new bone */
- memcpy(eBone, curBone, sizeof(EditBone));
+ eBone= duplicateEditBone(curBone, curBone->name, arm->edbo, obedit);
- curBone->temp = eBone;
- eBone->temp = curBone;
-
- unique_editbone_name(arm->edbo, eBone->name, NULL);
- BLI_addtail(arm->edbo, eBone);
if (!firstDup)
firstDup=eBone;
- /* Lets duplicate the list of constraints that the
- * current bone has.
- */
- if (obedit->pose) {
- bPoseChannel *chanold, *channew;
- ListBase *listold, *listnew;
-
- chanold = verify_pose_channel(obedit->pose, curBone->name);
- if (chanold) {
- listold = &chanold->constraints;
- if (listold) {
- /* WARNING: this creates a new posechannel, but there will not be an attached bone
- * yet as the new bones created here are still 'EditBones' not 'Bones'.
- */
- channew =
- verify_pose_channel(obedit->pose, eBone->name);
- if (channew) {
- /* copy transform locks */
- channew->protectflag = chanold->protectflag;
-
- /* copy rotation mode */
- channew->rotmode = chanold->rotmode;
-
- /* copy bone group */
- channew->agrp_index= chanold->agrp_index;
-
- /* ik (dof) settings */
- channew->ikflag = chanold->ikflag;
- VECCOPY(channew->limitmin, chanold->limitmin);
- VECCOPY(channew->limitmax, chanold->limitmax);
- VECCOPY(channew->stiffness, chanold->stiffness);
- channew->ikstretch= chanold->ikstretch;
- channew->ikrotweight= chanold->ikrotweight;
- channew->iklinweight= chanold->iklinweight;
-
- /* constraints */
- listnew = &channew->constraints;
- copy_constraints(listnew, listold);
-
- /* custom shape */
- channew->custom= chanold->custom;
- }
- }
- }
- }
}
}
}
@@ -3159,7 +3090,7 @@ static void bones_merge(Object *obedit, EditBone *start, EditBone *end, EditBone
/* step 3: delete all bones between and including start and end */
for (ebo= end; ebo; ebo= ebone) {
ebone= (ebo == start) ? (NULL) : (ebo->parent);
- free_edit_bone(arm, ebo);
+ bone_free(arm, ebo);
}
}
@@ -3514,7 +3445,7 @@ static int armature_bone_primitive_add_exec(bContext *C, wmOperator *op)
ED_armature_deselectall(obedit, 0, 0);
/* Create a bone */
- bone= add_editbone(obedit, name);
+ bone= ED_armature_edit_bone_add(obedit->data, name);
VECCOPY(bone->head, curs);
@@ -3650,7 +3581,7 @@ void ARMATURE_OT_subdivide_multi(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* Properties */
- RNA_def_int(ot->srna, "number_cuts", 2, 1, 10, "Number of Cuts", "", 1, INT_MAX);
+ RNA_def_int(ot->srna, "number_cuts", 2, 1, INT_MAX, "Number of Cuts", "", 1, 10);
}
@@ -3708,7 +3639,7 @@ void ARMATURE_OT_subdivs(wmOperatorType *ot)
RNA_def_enum(ot->srna, "type", type_items, 0, "Type", "");
/* this is temp, the ops are different, but they are called from subdivs, so all the possible props should be here as well*/
- RNA_def_int(ot->srna, "number_cuts", 2, 1, 10, "Number of Cuts", "", 1, INT_MAX);
+ RNA_def_int(ot->srna, "number_cuts", 2, 1, INT_MAX, "Number of Cuts", "", 1, 10);
}
/* ----------- */
@@ -4070,25 +4001,38 @@ void ARMATURE_OT_select_inverse(wmOperatorType *ot)
}
static int armature_de_select_all_exec(bContext *C, wmOperator *op)
{
- int sel=1;
+ int action = RNA_enum_get(op->ptr, "action");
- /* Determine if there are any selected bones
- And therefore whether we are selecting or deselecting */
- if (CTX_DATA_COUNT(C, selected_bones) > 0) sel=0;
+ if (action == SEL_TOGGLE) {
+ action = SEL_SELECT;
+ /* Determine if there are any selected bones
+ And therefore whether we are selecting or deselecting */
+ if (CTX_DATA_COUNT(C, selected_bones) > 0)
+ action = SEL_DESELECT;
+ }
/* Set the flags */
CTX_DATA_BEGIN(C, EditBone *, ebone, visible_bones) {
/* ignore bone if selection can't change */
if ((ebone->flag & BONE_UNSELECTABLE) == 0) {
- if (sel==1) {
- /* select bone */
+ switch (action) {
+ case SEL_SELECT:
ebone->flag |= (BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL);
if(ebone->parent)
ebone->parent->flag |= (BONE_TIPSEL);
- }
- else {
- /* deselect bone */
+ break;
+ case SEL_DESELECT:
ebone->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL);
+ break;
+ case SEL_INVERT:
+ if (ebone->flag & BONE_SELECTED) {
+ ebone->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL);
+ } else {
+ ebone->flag |= (BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL);
+ if(ebone->parent)
+ ebone->parent->flag |= (BONE_TIPSEL);
+ }
+ break;
}
}
}
@@ -4099,12 +4043,12 @@ static int armature_de_select_all_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ARMATURE_OT_select_all_toggle(wmOperatorType *ot)
+void ARMATURE_OT_select_all(wmOperatorType *ot)
{
/* identifiers */
ot->name= "deselect all editbone";
- ot->idname= "ARMATURE_OT_select_all_toggle";
+ ot->idname= "ARMATURE_OT_select_all";
/* api callbacks */
ot->exec= armature_de_select_all_exec;
@@ -4113,6 +4057,7 @@ void ARMATURE_OT_select_all_toggle(wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+ WM_operator_properties_select_all(ot);
}
/* ********************* select hierarchy operator ************** */
@@ -4857,7 +4802,7 @@ static int pose_clear_scale_exec(bContext *C, wmOperator *op)
cks.id= &ob->id;
/* only clear those channels that are not locked */
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) {
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) {
if ((pchan->protectflag & OB_LOCK_SCALEX)==0)
pchan->size[0]= 1.0f;
if ((pchan->protectflag & OB_LOCK_SCALEY)==0)
@@ -4920,7 +4865,7 @@ static int pose_clear_loc_exec(bContext *C, wmOperator *op)
cks.id= &ob->id;
/* only clear those channels that are not locked */
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) {
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) {
/* clear location */
if ((pchan->protectflag & OB_LOCK_LOCX)==0)
pchan->loc[0]= 0.0f;
@@ -4984,7 +4929,7 @@ static int pose_clear_rot_exec(bContext *C, wmOperator *op)
cks.id= &ob->id;
/* only clear those channels that are not locked */
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) {
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) {
if (pchan->protectflag & (OB_LOCK_ROTX|OB_LOCK_ROTY|OB_LOCK_ROTZ|OB_LOCK_ROTW)) {
/* check if convert to eulers for locking... */
if (pchan->protectflag & OB_LOCK_ROT4D) {
@@ -5125,7 +5070,7 @@ static int pose_select_inverse_exec(bContext *C, wmOperator *op)
{
/* Set the flags */
- CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pchans) {
+ CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) {
if ((pchan->bone->flag & BONE_UNSELECTABLE) == 0) {
pchan->bone->flag ^= (BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL);
}
@@ -5154,20 +5099,35 @@ void POSE_OT_select_inverse(wmOperatorType *ot)
}
static int pose_de_select_all_exec(bContext *C, wmOperator *op)
{
- int sel=1;
+ int action = RNA_enum_get(op->ptr, "action");
- /* Determine if there are any selected bones and therefore whether we are selecting or deselecting */
- // NOTE: we have to check for > 1 not > 0, since there is almost always an active bone that can't be cleared...
- if (CTX_DATA_COUNT(C, selected_pchans) > 1) sel=0;
+ if (action == SEL_TOGGLE) {
+ action = SEL_SELECT;
+ /* Determine if there are any selected bones and therefore whether we are selecting or deselecting */
+ // NOTE: we have to check for > 1 not > 0, since there is almost always an active bone that can't be cleared...
+ if (CTX_DATA_COUNT(C, selected_pose_bones) > 1)
+ action = SEL_DESELECT;
+ }
/* Set the flags */
- CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pchans) {
+ CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) {
/* select pchan only if selectable, but deselect works always */
- if (sel==0) {
+ switch (action) {
+ case SEL_SELECT:
+ if ((pchan->bone->flag & BONE_UNSELECTABLE)==0)
+ pchan->bone->flag |= BONE_SELECTED;
+ break;
+ case SEL_DESELECT:
pchan->bone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL);
+ break;
+ case SEL_INVERT:
+ if (pchan->bone->flag & BONE_SELECTED) {
+ pchan->bone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL);
+ } else if ((pchan->bone->flag & BONE_UNSELECTABLE)==0) {
+ pchan->bone->flag |= BONE_SELECTED;
+ }
+ break;
}
- else if ((pchan->bone->flag & BONE_UNSELECTABLE)==0)
- pchan->bone->flag |= BONE_SELECTED;
}
CTX_DATA_END;
@@ -5176,12 +5136,12 @@ static int pose_de_select_all_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void POSE_OT_select_all_toggle(wmOperatorType *ot)
+void POSE_OT_select_all(wmOperatorType *ot)
{
/* identifiers */
ot->name= "deselect all bones";
- ot->idname= "POSE_OT_select_all_toggle";
+ ot->idname= "POSE_OT_select_all";
/* api callbacks */
ot->exec= pose_de_select_all_exec;
@@ -5190,6 +5150,7 @@ void POSE_OT_select_all_toggle(wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+ WM_operator_properties_select_all(ot);
}
static int pose_select_parent_exec(bContext *C, wmOperator *op)
@@ -5198,7 +5159,7 @@ static int pose_select_parent_exec(bContext *C, wmOperator *op)
bPoseChannel *pchan,*parent;
/* Determine if there is an active bone */
- pchan=CTX_data_active_pchan(C);
+ pchan=CTX_data_active_pose_bone(C);
if (pchan) {
bArmature *arm= ob->data;
parent=pchan->parent;
@@ -5672,7 +5633,7 @@ EditBone * subdivideByAngle(Scene *scene, Object *obedit, ReebArc *arc, ReebNode
EditBone *root = NULL;
float angleLimit = (float)cos(scene->toolsettings->skgen_angle_limit * M_PI / 180.0f);
- parent = add_editbone(obedit, "Bone");
+ parent = ED_armature_edit_bone_add(arm, "Bone");
parent->flag |= BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL;
VECCOPY(parent->head, head->p);
@@ -5701,7 +5662,7 @@ EditBone * subdivideByAngle(Scene *scene, Object *obedit, ReebArc *arc, ReebNode
{
VECCOPY(parent->tail, previous);
- child = add_editbone(obedit, "Bone");
+ child = ED_armature_edit_bone_add(arm, "Bone");
VECCOPY(child->head, parent->tail);
child->parent = parent;
child->flag |= BONE_CONNECTED|BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL;
@@ -5717,7 +5678,7 @@ EditBone * subdivideByAngle(Scene *scene, Object *obedit, ReebArc *arc, ReebNode
if (parent == root)
{
if(parent==arm->act_edbone) arm->act_edbone= NULL;
- delete_bone(arm, parent);
+ ED_armature_edit_bone_remove(arm, parent);
parent = NULL;
}
@@ -5907,7 +5868,7 @@ void generateSkeletonFromReebGraph(Scene *scene, ReebGraph *rg)
if (lastBone == NULL)
{
EditBone *bone;
- bone = add_editbone(obedit, "Bone");
+ bone = ED_armature_edit_bone_add(obedit->data, "Bone");
bone->flag |= BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL;
VECCOPY(bone->head, head->p);
diff --git a/source/blender/editors/armature/editarmature_generate.c b/source/blender/editors/armature/editarmature_generate.c
index 124528811c7..41907cf06a3 100644
--- a/source/blender/editors/armature/editarmature_generate.c
+++ b/source/blender/editors/armature/editarmature_generate.c
@@ -294,7 +294,7 @@ EditBone * subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase *
IT_head(iter);
- parent = addEditBone(arm, "Bone");
+ parent = ED_armature_edit_bone_add(arm, "Bone");
VECCOPY(parent->head, iter->p);
if (iter->size > 0)
@@ -309,7 +309,7 @@ EditBone * subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase *
{
IT_peek(iter, index);
- child = addEditBone(arm, "Bone");
+ child = ED_armature_edit_bone_add(arm, "Bone");
VECCOPY(child->head, parent->tail);
child->parent = parent;
child->flag |= BONE_CONNECTED;
diff --git a/source/blender/editors/armature/editarmature_sketch.c b/source/blender/editors/armature/editarmature_sketch.c
index 7bb2fa9009d..eee56070e91 100644
--- a/source/blender/editors/armature/editarmature_sketch.c
+++ b/source/blender/editors/armature/editarmature_sketch.c
@@ -1538,7 +1538,7 @@ void sk_convertStroke(bContext *C, SK_Stroke *stk)
if (bone == NULL)
{
- bone = addEditBone(arm, "Bone");
+ bone = ED_armature_edit_bone_add(arm, "Bone");
VECCOPY(bone->head, head->p);
VECCOPY(bone->tail, pt->p);
diff --git a/source/blender/editors/armature/meshlaplacian.c b/source/blender/editors/armature/meshlaplacian.c
index 2e666ab8b49..776f5b26a9d 100644
--- a/source/blender/editors/armature/meshlaplacian.c
+++ b/source/blender/editors/armature/meshlaplacian.c
@@ -93,13 +93,16 @@ struct LaplacianSystem {
EdgeHash *edgehash; /* edge hash for construction */
struct HeatWeighting {
- Mesh *mesh;
+ MFace *mface;
+ int totvert;
+ int totface;
float (*verts)[3]; /* vertex coordinates */
float (*vnors)[3]; /* vertex normals */
float (*root)[3]; /* bone root */
float (*tip)[3]; /* bone tip */
- int numbones;
+ float (*source)[3]; /* vertex source */
+ int numsource;
float *H; /* diagonal H matrix */
float *p; /* values from all p vectors */
@@ -394,38 +397,40 @@ float laplacian_system_get_solution(int v)
#define WEIGHT_LIMIT_END 0.025f
#define DISTANCE_EPSILON 1e-4f
-/* Raytracing for vertex to bone visibility */
+/* Raytracing for vertex to bone/vertex visibility */
static void heat_ray_tree_create(LaplacianSystem *sys)
{
- Mesh *me = sys->heat.mesh;
+ MFace *mface = sys->heat.mface;
+ int totface = sys->heat.totface;
+ int totvert = sys->heat.totvert;
int a;
- sys->heat.raytree = RE_rayobject_vbvh_create(me->totface);
- sys->heat.faces = MEM_callocN(sizeof(RayFace)*me->totface, "Heat RayFaces");
- sys->heat.vface = MEM_callocN(sizeof(MFace*)*me->totvert, "HeatVFaces");
+ sys->heat.raytree = RE_rayobject_vbvh_create(totface);
+ sys->heat.faces = MEM_callocN(sizeof(RayFace)*totface, "Heat RayFaces");
+ sys->heat.vface = MEM_callocN(sizeof(MFace*)*totvert, "HeatVFaces");
- for(a=0; a<me->totface; a++) {
+ for(a=0; a<totface; a++) {
- MFace *mface = me->mface+a;
+ MFace *mf = mface+a;
RayFace *rayface = sys->heat.faces+a;
RayObject *obj = RE_rayface_from_coords(
- rayface, me, mface,
- sys->heat.verts[mface->v1], sys->heat.verts[mface->v2],
- sys->heat.verts[mface->v3], mface->v4 ? sys->heat.verts[mface->v4] : 0
+ rayface, &sys->heat, mf,
+ sys->heat.verts[mf->v1], sys->heat.verts[mf->v2],
+ sys->heat.verts[mf->v3], mf->v4 ? sys->heat.verts[mf->v4] : 0
);
RE_rayobject_add(sys->heat.raytree, obj);
//Setup inverse pointers to use on isect.orig
- sys->heat.vface[mface->v1]= mface;
- sys->heat.vface[mface->v2]= mface;
- sys->heat.vface[mface->v3]= mface;
- if(mface->v4) sys->heat.vface[mface->v4]= mface;
+ sys->heat.vface[mf->v1]= mf;
+ sys->heat.vface[mf->v2]= mf;
+ sys->heat.vface[mf->v3]= mf;
+ if(mf->v4) sys->heat.vface[mf->v4]= mf;
}
RE_rayobject_done(sys->heat.raytree);
}
-static int heat_ray_bone_visible(LaplacianSystem *sys, int vertex, int bone)
+static int heat_ray_source_visible(LaplacianSystem *sys, int vertex, int source)
{
Isect isec;
MFace *mface;
@@ -440,30 +445,37 @@ static int heat_ray_bone_visible(LaplacianSystem *sys, int vertex, int bone)
memset(&isec, 0, sizeof(isec));
isec.mode= RE_RAY_SHADOW;
isec.lay= -1;
- isec.orig.ob = sys->heat.mesh;
+ isec.orig.ob = &sys->heat;
isec.orig.face = mface;
isec.skip = RE_SKIP_CULLFACE;
+ copy_v3_v3(isec.start, sys->heat.verts[vertex]);
- VECCOPY(isec.start, sys->heat.verts[vertex]);
- closest_to_line_segment_v3(end, isec.start, sys->heat.root[bone], sys->heat.tip[bone]);
+ if(sys->heat.root) /* bone */
+ closest_to_line_segment_v3(end, isec.start,
+ sys->heat.root[source], sys->heat.tip[source]);
+ else /* vertex */
+ copy_v3_v3(end, sys->heat.source[source]);
- VECSUB(isec.vec, end, isec.start);
+ sub_v3_v3v3(isec.vec, end, isec.start);
isec.labda = 1.0f - 1e-5;
- VECADDFAC( isec.start, isec.start, isec.vec, 1e-5);
+ madd_v3_v3v3fl(isec.start, isec.start, isec.vec, 1e-5);
visible= !RE_rayobject_raycast(sys->heat.raytree, &isec);
return visible;
}
-static float heat_bone_distance(LaplacianSystem *sys, int vertex, int bone)
+static float heat_source_distance(LaplacianSystem *sys, int vertex, int source)
{
float closest[3], d[3], dist, cosine;
/* compute euclidian distance */
- closest_to_line_segment_v3(closest, sys->heat.verts[vertex],
- sys->heat.root[bone], sys->heat.tip[bone]);
+ if(sys->heat.root) /* bone */
+ closest_to_line_segment_v3(closest, sys->heat.verts[vertex],
+ sys->heat.root[source], sys->heat.tip[source]);
+ else /* vertex */
+ copy_v3_v3(closest, sys->heat.source[source]);
sub_v3_v3v3(d, sys->heat.verts[vertex], closest);
dist= normalize_v3(d);
@@ -474,16 +486,16 @@ static float heat_bone_distance(LaplacianSystem *sys, int vertex, int bone)
return dist/(0.5f*(cosine + 1.001f));
}
-static int heat_bone_closest(LaplacianSystem *sys, int vertex, int bone)
+static int heat_source_closest(LaplacianSystem *sys, int vertex, int source)
{
float dist;
-
- dist= heat_bone_distance(sys, vertex, bone);
+
+ dist= heat_source_distance(sys, vertex, source);
if(dist <= sys->heat.mindist[vertex]*(1.0f + DISTANCE_EPSILON))
- if(heat_ray_bone_visible(sys, vertex, bone))
+ if(heat_ray_source_visible(sys, vertex, source))
return 1;
-
+
return 0;
}
@@ -495,8 +507,8 @@ static void heat_set_H(LaplacianSystem *sys, int vertex)
mindist= 1e10;
/* compute minimum distance */
- for(j=0; j<sys->heat.numbones; j++) {
- dist= heat_bone_distance(sys, vertex, j);
+ for(j=0; j<sys->heat.numsource; j++) {
+ dist= heat_source_distance(sys, vertex, j);
if(dist < mindist)
mindist= dist;
@@ -504,9 +516,9 @@ static void heat_set_H(LaplacianSystem *sys, int vertex)
sys->heat.mindist[vertex]= mindist;
- /* count number of bones with approximately this minimum distance */
- for(j=0; j<sys->heat.numbones; j++)
- if(heat_bone_closest(sys, vertex, j))
+ /* count number of sources with approximately this minimum distance */
+ for(j=0; j<sys->heat.numsource; j++)
+ if(heat_source_closest(sys, vertex, j))
numclosest++;
sys->heat.p[vertex]= (numclosest > 0)? 1.0f/numclosest: 0.0f;
@@ -549,32 +561,45 @@ void heat_calc_vnormals(LaplacianSystem *sys)
static void heat_laplacian_create(LaplacianSystem *sys)
{
- Mesh *me = sys->heat.mesh;
- MFace *mface;
+ MFace *mface = sys->heat.mface, *mf;
+ int totface= sys->heat.totface;
+ int totvert= sys->heat.totvert;
int a;
/* heat specific definitions */
- sys->heat.mindist= MEM_callocN(sizeof(float)*me->totvert, "HeatMinDist");
- sys->heat.H= MEM_callocN(sizeof(float)*me->totvert, "HeatH");
- sys->heat.p= MEM_callocN(sizeof(float)*me->totvert, "HeatP");
+ sys->heat.mindist= MEM_callocN(sizeof(float)*totvert, "HeatMinDist");
+ sys->heat.H= MEM_callocN(sizeof(float)*totvert, "HeatH");
+ sys->heat.p= MEM_callocN(sizeof(float)*totvert, "HeatP");
/* add verts and faces to laplacian */
- for(a=0; a<me->totvert; a++)
+ for(a=0; a<totvert; a++)
laplacian_add_vertex(sys, sys->heat.verts[a], 0);
- for(a=0, mface=me->mface; a<me->totface; a++, mface++) {
- laplacian_add_triangle(sys, mface->v1, mface->v2, mface->v3);
- if(mface->v4)
- laplacian_add_triangle(sys, mface->v1, mface->v3, mface->v4);
+ for(a=0, mf=mface; a<totface; a++, mf++) {
+ laplacian_add_triangle(sys, mf->v1, mf->v2, mf->v3);
+ if(mf->v4)
+ laplacian_add_triangle(sys, mf->v1, mf->v3, mf->v4);
}
/* for distance computation in set_H */
heat_calc_vnormals(sys);
- for(a=0; a<me->totvert; a++)
+ for(a=0; a<totvert; a++)
heat_set_H(sys, a);
}
+static void heat_system_free(LaplacianSystem *sys)
+{
+ RE_rayobject_free(sys->heat.raytree);
+ MEM_freeN(sys->heat.vface);
+ MEM_freeN(sys->heat.faces);
+
+ MEM_freeN(sys->heat.mindist);
+ MEM_freeN(sys->heat.H);
+ MEM_freeN(sys->heat.p);
+ MEM_freeN(sys->heat.vnors);
+}
+
static float heat_limit_weight(float weight)
{
float t;
@@ -590,7 +615,7 @@ static float heat_limit_weight(float weight)
return weight;
}
-void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones, bDeformGroup **dgrouplist, bDeformGroup **dgroupflip, float (*root)[3], float (*tip)[3], int *selected)
+void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numsource, bDeformGroup **dgrouplist, bDeformGroup **dgroupflip, float (*root)[3], float (*tip)[3], int *selected)
{
LaplacianSystem *sys;
MFace *mface;
@@ -607,11 +632,13 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones,
/* create laplacian */
sys = laplacian_system_construct_begin(me->totvert, totface, 1);
- sys->heat.mesh= me;
+ sys->heat.mface= me->mface;
+ sys->heat.totface= me->totface;
+ sys->heat.totvert= me->totvert;
sys->heat.verts= verts;
sys->heat.root= root;
sys->heat.tip= tip;
- sys->heat.numbones= numbones;
+ sys->heat.numsource= numsource;
heat_ray_tree_create(sys);
heat_laplacian_create(sys);
@@ -625,12 +652,12 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones,
}
/* compute weights per bone */
- for(j=0; j<numbones; j++) {
+ for(j=0; j<numsource; j++) {
if(!selected[j])
continue;
firstsegment= (j == 0 || dgrouplist[j-1] != dgrouplist[j]);
- lastsegment= (j == numbones-1 || dgrouplist[j] != dgrouplist[j+1]);
+ lastsegment= (j == numsource-1 || dgrouplist[j] != dgrouplist[j+1]);
bbone= !(firstsegment && lastsegment);
/* clear weights */
@@ -646,7 +673,7 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones,
laplacian_begin_solve(sys, -1);
for(a=0; a<me->totvert; a++)
- if(heat_bone_closest(sys, a, j))
+ if(heat_source_closest(sys, a, j))
laplacian_add_right_hand_side(sys, a,
sys->heat.H[a]*sys->heat.p[a]);
@@ -716,14 +743,7 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones,
/* free */
if(vertsflipped) MEM_freeN(vertsflipped);
- RE_rayobject_free(sys->heat.raytree);
- MEM_freeN(sys->heat.vface);
- MEM_freeN(sys->heat.faces);
-
- MEM_freeN(sys->heat.mindist);
- MEM_freeN(sys->heat.H);
- MEM_freeN(sys->heat.p);
- MEM_freeN(sys->heat.vnors);
+ heat_system_free(sys);
laplacian_system_delete(sys);
}
@@ -1027,11 +1047,11 @@ static int meshdeform_tri_intersect(float orig[3], float end[3], float vert0[3],
float edge1[3], edge2[3], tvec[3], pvec[3], qvec[3];
float det,inv_det, u, v, dir[3], isectdir[3];
- VECSUB(dir, end, orig);
+ sub_v3_v3v3(dir, end, orig);
/* find vectors for two edges sharing vert0 */
- VECSUB(edge1, vert1, vert0);
- VECSUB(edge2, vert2, vert0);
+ sub_v3_v3v3(edge1, vert1, vert0);
+ sub_v3_v3v3(edge2, vert2, vert0);
/* begin calculating determinant - also used to calculate U parameter */
cross_v3_v3v3(pvec, dir, edge2);
@@ -1044,7 +1064,7 @@ static int meshdeform_tri_intersect(float orig[3], float end[3], float vert0[3],
inv_det = 1.0f / det;
/* calculate distance from vert0 to ray origin */
- VECSUB(tvec, orig, vert0);
+ sub_v3_v3v3(tvec, orig, vert0);
/* calculate U parameter and test bounds */
u = INPR(tvec, pvec) * inv_det;
@@ -1068,7 +1088,7 @@ static int meshdeform_tri_intersect(float orig[3], float end[3], float vert0[3],
uvw[2]= v;
/* check if it is within the length of the line segment */
- VECSUB(isectdir, isectco, orig);
+ sub_v3_v3v3(isectdir, isectco, orig);
if(INPR(dir, isectdir) < -EPSILON)
return 0;
@@ -1149,12 +1169,12 @@ static int meshdeform_intersect(MeshDeformBind *mdb, Isect *isec)
VECADDFAC( end, isec->start, isec->vec, isec->labda );
for(f=0; f<totface; f++, mface++) {
- VECCOPY(face[0], mdb->cagecos[mface->v1]);
- VECCOPY(face[1], mdb->cagecos[mface->v2]);
- VECCOPY(face[2], mdb->cagecos[mface->v3]);
+ copy_v3_v3(face[0], mdb->cagecos[mface->v1]);
+ copy_v3_v3(face[1], mdb->cagecos[mface->v2]);
+ copy_v3_v3(face[2], mdb->cagecos[mface->v3]);
if(mface->v4) {
- VECCOPY(face[3], mdb->cagecos[mface->v4]);
+ copy_v3_v3(face[3], mdb->cagecos[mface->v4]);
hit = meshdeform_tri_intersect(isec->start, end, face[0], face[1], face[2], co, uvw);
if(hit) {
@@ -1201,7 +1221,7 @@ static MDefBoundIsect *meshdeform_ray_tree_intersect(MeshDeformBind *mdb, float
VECADD(isec.start, co1, epsilon);
VECADD(end, co2, epsilon);
- VECSUB(isec.vec, end, isec.start);
+ sub_v3_v3v3(isec.vec, end, isec.start);
#if 0
/*if(RE_ray_tree_intersect(mdb->raytree, &isec)) {*/
@@ -1233,10 +1253,10 @@ static MDefBoundIsect *meshdeform_ray_tree_intersect(MeshDeformBind *mdb, float
/* compute mean value coordinates for interpolation */
cagecos= mdb->cagecos;
- VECCOPY(vert[0], cagecos[mface->v1]);
- VECCOPY(vert[1], cagecos[mface->v2]);
- VECCOPY(vert[2], cagecos[mface->v3]);
- if(mface->v4) VECCOPY(vert[3], cagecos[mface->v4]);
+ copy_v3_v3(vert[0], cagecos[mface->v1]);
+ copy_v3_v3(vert[1], cagecos[mface->v2]);
+ copy_v3_v3(vert[2], cagecos[mface->v3]);
+ if(mface->v4) copy_v3_v3(vert[3], cagecos[mface->v4]);
interp_weights_poly_v3( isect->uvw,vert, isect->nvert, isect->co);
return isect;
@@ -1258,8 +1278,8 @@ static int meshdeform_inside_cage(MeshDeformBind *mdb, float *co)
outside[1] = co[1] + (mdb->max[1] - mdb->min[1] + 1.0f)*MESHDEFORM_OFFSET[i][1];
outside[2] = co[2] + (mdb->max[2] - mdb->min[2] + 1.0f)*MESHDEFORM_OFFSET[i][2];
- VECCOPY(start, co);
- VECSUB(dir, outside, start);
+ copy_v3_v3(start, co);
+ sub_v3_v3v3(dir, outside, start);
normalize_v3(dir);
isect = meshdeform_ray_tree_intersect(mdb, start, outside);
@@ -1649,7 +1669,7 @@ static void meshdeform_matrix_solve(MeshDeformBind *mdb)
/* static bind : compute weights for each vertex */
for(b=0; b<mdb->totvert; b++) {
if(mdb->inside[b]) {
- VECCOPY(vec, mdb->vertexcos[b]);
+ copy_v3_v3(vec, mdb->vertexcos[b]);
mul_m4_v3(mdb->cagemat, vec);
gridvec[0]= (vec[0] - mdb->min[0] - mdb->halfwidth[0])/mdb->width[0];
gridvec[1]= (vec[1] - mdb->min[1] - mdb->halfwidth[1])/mdb->width[1];
@@ -1698,148 +1718,123 @@ static void meshdeform_matrix_solve(MeshDeformBind *mdb)
nlDeleteContext(context);
}
-void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4])
+static void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, MeshDeformBind *mdb)
{
- MeshDeformBind mdb;
MDefBindInfluence *inf;
MDefInfluence *mdinf;
MDefCell *cell;
- MVert *mvert;
float center[3], vec[3], maxwidth, totweight;
int a, b, x, y, z, totinside, offset;
- waitcursor(1);
- start_progress_bar();
-
- memset(&mdb, 0, sizeof(MeshDeformBind));
-
- /* get mesh and cage mesh */
- mdb.vertexcos= (float(*)[3])vertexcos;
- mdb.totvert= totvert;
-
- mdb.cagedm= mesh_create_derived_no_deform(scene, mmd->object, NULL, CD_MASK_BAREMESH);
- mdb.totcagevert= mdb.cagedm->getNumVerts(mdb.cagedm);
- mdb.cagecos= MEM_callocN(sizeof(*mdb.cagecos)*mdb.totcagevert, "MeshDeformBindCos");
- copy_m4_m4(mdb.cagemat, cagemat);
-
- mvert= mdb.cagedm->getVertArray(mdb.cagedm);
- for(a=0; a<mdb.totcagevert; a++)
- VECCOPY(mdb.cagecos[a], mvert[a].co)
-
/* compute bounding box of the cage mesh */
- INIT_MINMAX(mdb.min, mdb.max);
+ INIT_MINMAX(mdb->min, mdb->max);
- for(a=0; a<mdb.totcagevert; a++)
- DO_MINMAX(mdb.cagecos[a], mdb.min, mdb.max);
+ for(a=0; a<mdb->totcagevert; a++)
+ DO_MINMAX(mdb->cagecos[a], mdb->min, mdb->max);
/* allocate memory */
- mdb.size= (2<<(mmd->gridsize-1)) + 2;
- mdb.size3= mdb.size*mdb.size*mdb.size;
- mdb.tag= MEM_callocN(sizeof(int)*mdb.size3, "MeshDeformBindTag");
- mdb.phi= MEM_callocN(sizeof(float)*mdb.size3, "MeshDeformBindPhi");
- mdb.totalphi= MEM_callocN(sizeof(float)*mdb.size3, "MeshDeformBindTotalPhi");
- mdb.boundisect= MEM_callocN(sizeof(*mdb.boundisect)*mdb.size3, "MDefBoundIsect");
- mdb.semibound= MEM_callocN(sizeof(int)*mdb.size3, "MDefSemiBound");
+ mdb->size= (2<<(mmd->gridsize-1)) + 2;
+ mdb->size3= mdb->size*mdb->size*mdb->size;
+ mdb->tag= MEM_callocN(sizeof(int)*mdb->size3, "MeshDeformBindTag");
+ mdb->phi= MEM_callocN(sizeof(float)*mdb->size3, "MeshDeformBindPhi");
+ mdb->totalphi= MEM_callocN(sizeof(float)*mdb->size3, "MeshDeformBindTotalPhi");
+ mdb->boundisect= MEM_callocN(sizeof(*mdb->boundisect)*mdb->size3, "MDefBoundIsect");
+ mdb->semibound= MEM_callocN(sizeof(int)*mdb->size3, "MDefSemiBound");
- mdb.inside= MEM_callocN(sizeof(int)*mdb.totvert, "MDefInside");
+ mdb->inside= MEM_callocN(sizeof(int)*mdb->totvert, "MDefInside");
if(mmd->flag & MOD_MDEF_DYNAMIC_BIND)
- mdb.dyngrid= MEM_callocN(sizeof(MDefBindInfluence*)*mdb.size3, "MDefDynGrid");
+ mdb->dyngrid= MEM_callocN(sizeof(MDefBindInfluence*)*mdb->size3, "MDefDynGrid");
else
- mdb.weights= MEM_callocN(sizeof(float)*mdb.totvert*mdb.totcagevert, "MDefWeights");
+ mdb->weights= MEM_callocN(sizeof(float)*mdb->totvert*mdb->totcagevert, "MDefWeights");
- mdb.memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE);
- BLI_memarena_use_calloc(mdb.memarena);
+ mdb->memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE);
+ BLI_memarena_use_calloc(mdb->memarena);
/* make bounding box equal size in all directions, add padding, and compute
* width of the cells */
maxwidth = -1.0f;
for(a=0; a<3; a++)
- if(mdb.max[a]-mdb.min[a] > maxwidth)
- maxwidth= mdb.max[a]-mdb.min[a];
+ if(mdb->max[a]-mdb->min[a] > maxwidth)
+ maxwidth= mdb->max[a]-mdb->min[a];
for(a=0; a<3; a++) {
- center[a]= (mdb.min[a]+mdb.max[a])*0.5f;
- mdb.min[a]= center[a] - maxwidth*0.5f;
- mdb.max[a]= center[a] + maxwidth*0.5f;
+ center[a]= (mdb->min[a]+mdb->max[a])*0.5f;
+ mdb->min[a]= center[a] - maxwidth*0.5f;
+ mdb->max[a]= center[a] + maxwidth*0.5f;
- mdb.width[a]= (mdb.max[a]-mdb.min[a])/(mdb.size-4);
- mdb.min[a] -= 2.1f*mdb.width[a];
- mdb.max[a] += 2.1f*mdb.width[a];
+ mdb->width[a]= (mdb->max[a]-mdb->min[a])/(mdb->size-4);
+ mdb->min[a] -= 2.1f*mdb->width[a];
+ mdb->max[a] += 2.1f*mdb->width[a];
- mdb.width[a]= (mdb.max[a]-mdb.min[a])/mdb.size;
- mdb.halfwidth[a]= mdb.width[a]*0.5f;
+ mdb->width[a]= (mdb->max[a]-mdb->min[a])/mdb->size;
+ mdb->halfwidth[a]= mdb->width[a]*0.5f;
}
progress_bar(0, "Setting up mesh deform system");
#if 0
/* create ray tree */
- meshdeform_ray_tree_create(&mdb);
+ meshdeform_ray_tree_create(mdb);
#endif
totinside= 0;
- for(a=0; a<mdb.totvert; a++) {
- VECCOPY(vec, mdb.vertexcos[a]);
- mul_m4_v3(mdb.cagemat, vec);
- mdb.inside[a]= meshdeform_inside_cage(&mdb, vec);
- if(mdb.inside[a])
+ for(a=0; a<mdb->totvert; a++) {
+ copy_v3_v3(vec, mdb->vertexcos[a]);
+ mul_m4_v3(mdb->cagemat, vec);
+ mdb->inside[a]= meshdeform_inside_cage(mdb, vec);
+ if(mdb->inside[a])
totinside++;
}
/* free temporary MDefBoundIsects */
- BLI_memarena_free(mdb.memarena);
- mdb.memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE);
+ BLI_memarena_free(mdb->memarena);
+ mdb->memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE);
/* start with all cells untyped */
- for(a=0; a<mdb.size3; a++)
- mdb.tag[a]= MESHDEFORM_TAG_UNTYPED;
+ for(a=0; a<mdb->size3; a++)
+ mdb->tag[a]= MESHDEFORM_TAG_UNTYPED;
/* detect intersections and tag boundary cells */
- for(z=0; z<mdb.size; z++)
- for(y=0; y<mdb.size; y++)
- for(x=0; x<mdb.size; x++)
- meshdeform_add_intersections(&mdb, x, y, z);
+ for(z=0; z<mdb->size; z++)
+ for(y=0; y<mdb->size; y++)
+ for(x=0; x<mdb->size; x++)
+ meshdeform_add_intersections(mdb, x, y, z);
#if 0
/* free ray tree */
- meshdeform_ray_tree_free(&mdb);
+ meshdeform_ray_tree_free(mdb);
#endif
/* compute exterior and interior tags */
- meshdeform_bind_floodfill(&mdb);
+ meshdeform_bind_floodfill(mdb);
- for(z=0; z<mdb.size; z++)
- for(y=0; y<mdb.size; y++)
- for(x=0; x<mdb.size; x++)
- meshdeform_check_semibound(&mdb, x, y, z);
+ for(z=0; z<mdb->size; z++)
+ for(y=0; y<mdb->size; y++)
+ for(x=0; x<mdb->size; x++)
+ meshdeform_check_semibound(mdb, x, y, z);
/* solve */
- meshdeform_matrix_solve(&mdb);
+ meshdeform_matrix_solve(mdb);
/* assign results */
- mmd->bindcos= (float*)mdb.cagecos;
- mmd->totvert= mdb.totvert;
- mmd->totcagevert= mdb.totcagevert;
- copy_m4_m4(mmd->bindmat, mmd->object->obmat);
-
if(mmd->flag & MOD_MDEF_DYNAMIC_BIND) {
mmd->totinfluence= 0;
- for(a=0; a<mdb.size3; a++)
- for(inf=mdb.dyngrid[a]; inf; inf=inf->next)
+ for(a=0; a<mdb->size3; a++)
+ for(inf=mdb->dyngrid[a]; inf; inf=inf->next)
mmd->totinfluence++;
/* convert MDefBindInfluences to smaller MDefInfluences */
- mmd->dyngrid= MEM_callocN(sizeof(MDefCell)*mdb.size3, "MDefDynGrid");
+ mmd->dyngrid= MEM_callocN(sizeof(MDefCell)*mdb->size3, "MDefDynGrid");
mmd->dyninfluences= MEM_callocN(sizeof(MDefInfluence)*mmd->totinfluence, "MDefInfluence");
offset= 0;
- for(a=0; a<mdb.size3; a++) {
+ for(a=0; a<mdb->size3; a++) {
cell= &mmd->dyngrid[a];
cell->offset= offset;
totweight= 0.0f;
mdinf= mmd->dyninfluences + cell->offset;
- for(inf=mdb.dyngrid[a]; inf; inf=inf->next, mdinf++) {
+ for(inf=mdb->dyngrid[a]; inf; inf=inf->next, mdinf++) {
mdinf->weight= inf->weight;
mdinf->vertex= inf->vertex;
totweight += mdinf->weight;
@@ -1855,29 +1850,138 @@ void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, float
offset += cell->totinfluence;
}
- mmd->dynverts= mdb.inside;
- mmd->dyngridsize= mdb.size;
- VECCOPY(mmd->dyncellmin, mdb.min);
- mmd->dyncellwidth= mdb.width[0];
- MEM_freeN(mdb.dyngrid);
+ mmd->dynverts= mdb->inside;
+ mmd->dyngridsize= mdb->size;
+ copy_v3_v3(mmd->dyncellmin, mdb->min);
+ mmd->dyncellwidth= mdb->width[0];
+ MEM_freeN(mdb->dyngrid);
}
else {
- mmd->bindweights= mdb.weights;
- MEM_freeN(mdb.inside);
+ mmd->bindweights= mdb->weights;
+ MEM_freeN(mdb->inside);
}
+ MEM_freeN(mdb->tag);
+ MEM_freeN(mdb->phi);
+ MEM_freeN(mdb->totalphi);
+ MEM_freeN(mdb->boundisect);
+ MEM_freeN(mdb->semibound);
+ BLI_memarena_free(mdb->memarena);
+}
+
+static void heat_weighting_bind(Scene *scene, DerivedMesh *dm, MeshDeformModifierData *mmd, MeshDeformBind *mdb)
+{
+ LaplacianSystem *sys;
+ MFace *mface= dm->getTessFaceArray(dm), *mf;
+ int totvert= dm->getNumVerts(dm);
+ int totface= dm->getNumFaces(dm);
+ float solution, weight;
+ int a, tottri, j, thrownerror = 0;
+
+ mdb->weights= MEM_callocN(sizeof(float)*mdb->totvert*mdb->totcagevert, "MDefWeights");
+
+ /* count triangles */
+ for(tottri=0, a=0, mf=mface; a<totface; a++, mf++) {
+ tottri++;
+ if(mf->v4) tottri++;
+ }
+
+ /* create laplacian */
+ sys = laplacian_system_construct_begin(totvert, tottri, 1);
+
+ sys->heat.mface= mface;
+ sys->heat.totface= totface;
+ sys->heat.totvert= totvert;
+ sys->heat.verts= mdb->vertexcos;
+ sys->heat.source = mdb->cagecos;
+ sys->heat.numsource= mdb->totcagevert;
+
+ heat_ray_tree_create(sys);
+ heat_laplacian_create(sys);
+
+ laplacian_system_construct_end(sys);
+
+ /* compute weights per bone */
+ for(j=0; j<mdb->totcagevert; j++) {
+ /* fill right hand side */
+ laplacian_begin_solve(sys, -1);
+
+ for(a=0; a<totvert; a++)
+ if(heat_source_closest(sys, a, j))
+ laplacian_add_right_hand_side(sys, a,
+ sys->heat.H[a]*sys->heat.p[a]);
+
+ /* solve */
+ if(laplacian_system_solve(sys)) {
+ /* load solution into vertex groups */
+ for(a=0; a<totvert; a++) {
+ solution= laplacian_system_get_solution(a);
+
+ weight= heat_limit_weight(solution);
+ if(weight > 0.0f)
+ mdb->weights[a*mdb->totcagevert + j] = weight;
+ }
+ }
+ else if(!thrownerror) {
+ error("Mesh Deform Heat Weighting:"
+ " failed to find solution for one or more vertices");
+ thrownerror= 1;
+ break;
+ }
+ }
+
+ /* free */
+ heat_system_free(sys);
+ laplacian_system_delete(sys);
+
+ mmd->bindweights= mdb->weights;
+}
+
+void mesh_deform_bind(Scene *scene, DerivedMesh *dm, MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4])
+{
+ MeshDeformBind mdb;
+ MVert *mvert;
+ int a;
+
+ waitcursor(1);
+ start_progress_bar();
+
+ memset(&mdb, 0, sizeof(MeshDeformBind));
+
+ /* get mesh and cage mesh */
+ mdb.vertexcos= MEM_callocN(sizeof(float)*3*totvert, "MeshDeformCos");
+ mdb.totvert= totvert;
+
+ mdb.cagedm= mesh_create_derived_no_deform(scene, mmd->object, NULL, CD_MASK_BAREMESH);
+ mdb.totcagevert= mdb.cagedm->getNumVerts(mdb.cagedm);
+ mdb.cagecos= MEM_callocN(sizeof(*mdb.cagecos)*mdb.totcagevert, "MeshDeformBindCos");
+ copy_m4_m4(mdb.cagemat, cagemat);
+
+ mvert= mdb.cagedm->getVertArray(mdb.cagedm);
+ for(a=0; a<mdb.totcagevert; a++)
+ copy_v3_v3(mdb.cagecos[a], mvert[a].co);
+ for(a=0; a<mdb.totvert; a++)
+ mul_v3_m4v3(mdb.vertexcos[a], mdb.cagemat, vertexcos + a*3);
+
+ /* solve */
+ if(mmd->mode == MOD_MDEF_VOLUME)
+ harmonic_coordinates_bind(scene, mmd, &mdb);
+ else
+ heat_weighting_bind(scene, dm, mmd, &mdb);
+
+ /* assign bind variables */
+ mmd->bindcos= (float*)mdb.cagecos;
+ mmd->totvert= mdb.totvert;
+ mmd->totcagevert= mdb.totcagevert;
+ copy_m4_m4(mmd->bindmat, mmd->object->obmat);
+
/* transform bindcos to world space */
for(a=0; a<mdb.totcagevert; a++)
mul_m4_v3(mmd->object->obmat, mmd->bindcos+a*3);
/* free */
mdb.cagedm->release(mdb.cagedm);
- MEM_freeN(mdb.tag);
- MEM_freeN(mdb.phi);
- MEM_freeN(mdb.totalphi);
- MEM_freeN(mdb.boundisect);
- MEM_freeN(mdb.semibound);
- BLI_memarena_free(mdb.memarena);
+ MEM_freeN(mdb.vertexcos);
end_progress_bar();
waitcursor(0);
diff --git a/source/blender/editors/armature/meshlaplacian.h b/source/blender/editors/armature/meshlaplacian.h
index 1ee01561cd4..215a3579cab 100644
--- a/source/blender/editors/armature/meshlaplacian.h
+++ b/source/blender/editors/armature/meshlaplacian.h
@@ -78,7 +78,8 @@ void rigid_deform_end(int cancel);
/* Harmonic Coordinates */
-void harmonic_coordinates_bind(struct Scene *scene, struct MeshDeformModifierData *mmd,
+void mesh_deform_bind(struct Scene *scene, struct DerivedMesh *dm,
+ struct MeshDeformModifierData *mmd,
float *vertexcos, int totvert, float cagemat[][4]);
#endif
diff --git a/source/blender/editors/armature/poseSlide.c b/source/blender/editors/armature/poseSlide.c
index ac4cfd2c3e3..7ceb50057ce 100644
--- a/source/blender/editors/armature/poseSlide.c
+++ b/source/blender/editors/armature/poseSlide.c
@@ -178,7 +178,7 @@ static int pose_slide_init (bContext *C, wmOperator *op, short mode)
/* for each Pose-Channel which gets affected, get the F-Curves for that channel
* and set the relevant transform flags...
*/
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones)
{
ListBase curves = {NULL, NULL};
int transFlags = action_get_item_transforms(act, pso->ob, pchan, &curves);
diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c
index ff8fe4d50ce..05d2373a585 100644
--- a/source/blender/editors/armature/poseobject.c
+++ b/source/blender/editors/armature/poseobject.c
@@ -241,10 +241,10 @@ void ED_pose_recalculate_paths(bContext *C, Scene *scene, Object *ob)
/* hack: for unsaved files, set OB_RECALC so that paths can get calculated */
if ((ob->recalc & OB_RECALC)==0) {
ob->recalc |= OB_RECALC;
- ED_anim_object_flush_update(C, ob);
+ DAG_id_update_flags(&ob->id);
}
else
- ED_anim_object_flush_update(C, ob);
+ DAG_id_update_flags(&ob->id);
/* calculate path over requested range */
for (CFRA=sfra; CFRA<=efra; CFRA++) {
@@ -355,10 +355,10 @@ static int pose_calculate_paths_exec (bContext *C, wmOperator *op)
/* hack: for unsaved files, set OB_RECALC so that paths can get calculated */
if ((ob->recalc & OB_RECALC)==0) {
ob->recalc |= OB_RECALC;
- ED_anim_object_flush_update(C, ob);
+ DAG_id_update_flags(&ob->id);
}
else
- ED_anim_object_flush_update(C, ob);
+ DAG_id_update_flags(&ob->id);
/* alloc the path cache arrays */
for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
@@ -1329,7 +1329,7 @@ static int pose_group_assign_exec (bContext *C, wmOperator *op)
/* add selected bones to group then */
// NOTE: unfortunately, we cannot use the context-iterators here, since they might not be defined...
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) {
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) {
pchan->agrp_index= pose->active_group;
done= 1;
}
@@ -1388,7 +1388,7 @@ static int pose_group_unassign_exec (bContext *C, wmOperator *op)
/* add selected bones to ungroup then */
// NOTE: unfortunately, we cannot use the context-iterators here, since they might not be defined...
- // CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans)
+ // CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones)
for (pchan= pose->chanbase.first; pchan; pchan= pchan->next) {
/* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */
// NOTE: sync this view3d_context() in space_view3d.c
@@ -1464,7 +1464,7 @@ static short pose_select_same_layer (Object *ob)
bPose *pose= (ob)? ob->pose : NULL;
bArmature *arm= (ob)? ob->data : NULL;
bPoseChannel *pchan;
- short layers= 0, changed= 0;
+ int layers= 0, changed= 0;
if (ELEM3(NULL, ob, pose, arm))
return 0;
@@ -1530,7 +1530,7 @@ static int pose_flip_names_exec (bContext *C, wmOperator *op)
arm= ob->data;
/* loop through selected bones, auto-naming them */
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones)
{
BLI_strncpy(newname, pchan->name, sizeof(newname));
bone_flip_name(newname, 1); // 1 = do strip off number extensions
@@ -1577,7 +1577,7 @@ static int pose_autoside_names_exec (bContext *C, wmOperator *op)
arm= ob->data;
/* loop through selected bones, auto-naming them */
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones)
{
BLI_strncpy(newname, pchan->name, sizeof(newname));
bone_autoside_name(newname, 1, axis, pchan->bone->head[axis], pchan->bone->tail[axis]);
@@ -1670,7 +1670,7 @@ static int pose_armature_layers_invoke (bContext *C, wmOperator *op, wmEvent *ev
Object *ob= CTX_data_active_object(C);
bArmature *arm= (ob)? ob->data : NULL;
PointerRNA ptr;
- int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */
+ int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */
/* sanity checking */
if (arm == NULL)
@@ -1691,7 +1691,7 @@ static int pose_armature_layers_exec (bContext *C, wmOperator *op)
Object *ob= CTX_data_active_object(C);
bArmature *arm= (ob)? ob->data : NULL;
PointerRNA ptr;
- int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */
+ int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */
/* get the values set in the operator properties */
RNA_boolean_get_array(op->ptr, "layers", layers);
@@ -1723,7 +1723,7 @@ void POSE_OT_armature_layers (wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
- RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers to make visible");
+ RNA_def_boolean_layer_member(ot->srna, "layers", 32, NULL, "Layer", "Armature layers to make visible");
}
void ARMATURE_OT_armature_layers (wmOperatorType *ot)
@@ -1742,7 +1742,7 @@ void ARMATURE_OT_armature_layers (wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
- RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers to make visible");
+ RNA_def_boolean_layer_member(ot->srna, "layers", 32, NULL, "Layer", "Armature layers to make visible");
}
/* ------------------- */
@@ -1750,17 +1750,17 @@ void ARMATURE_OT_armature_layers (wmOperatorType *ot)
/* Present a popup to get the layers that should be used */
static int pose_bone_layers_invoke (bContext *C, wmOperator *op, wmEvent *evt)
{
- int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */
+ int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */
/* get layers that are active already */
memset(&layers, 0, sizeof(layers)); /* set all layers to be off by default */
- CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pose_bones)
{
short bit;
/* loop over the bits for this pchan's layers, adding layers where they're needed */
- for (bit= 0; bit < 16; bit++) {
+ for (bit= 0; bit < 32; bit++) {
if (pchan->bone->layer & (1<<bit))
layers[bit]= 1;
}
@@ -1780,13 +1780,13 @@ static int pose_bone_layers_exec (bContext *C, wmOperator *op)
Object *ob= CTX_data_active_object(C);
bArmature *arm= (ob)? ob->data : NULL;
PointerRNA ptr;
- int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */
+ int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */
/* get the values set in the operator properties */
RNA_boolean_get_array(op->ptr, "layers", layers);
/* set layers of pchans based on the values set in the operator props */
- CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pose_bones)
{
/* get pointer for pchan, and write flags this way */
RNA_pointer_create((ID *)arm, &RNA_Bone, pchan->bone, &ptr);
@@ -1816,7 +1816,7 @@ void POSE_OT_bone_layers (wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
- RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers that bone belongs to");
+ RNA_def_boolean_layer_member(ot->srna, "layers", 32, NULL, "Layer", "Armature layers that bone belongs to");
}
/* ------------------- */
@@ -1824,7 +1824,7 @@ void POSE_OT_bone_layers (wmOperatorType *ot)
/* Present a popup to get the layers that should be used */
static int armature_bone_layers_invoke (bContext *C, wmOperator *op, wmEvent *evt)
{
- int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */
+ int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */
/* get layers that are active already */
memset(&layers, 0, sizeof(layers)); /* set all layers to be off by default */
@@ -1834,7 +1834,7 @@ static int armature_bone_layers_invoke (bContext *C, wmOperator *op, wmEvent *ev
short bit;
/* loop over the bits for this pchan's layers, adding layers where they're needed */
- for (bit= 0; bit < 16; bit++) {
+ for (bit= 0; bit < 32; bit++) {
if (ebone->layer & (1<<bit))
layers[bit]= 1;
}
@@ -1854,7 +1854,7 @@ static int armature_bone_layers_exec (bContext *C, wmOperator *op)
Object *ob= CTX_data_edit_object(C);
bArmature *arm= (ob)? ob->data : NULL;
PointerRNA ptr;
- int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */
+ int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */
/* get the values set in the operator properties */
RNA_boolean_get_array(op->ptr, "layers", layers);
@@ -1890,7 +1890,7 @@ void ARMATURE_OT_bone_layers (wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
- RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers that bone belongs to");
+ RNA_def_boolean_layer_member(ot->srna, "layers", 32, NULL, "Layer", "Armature layers that bone belongs to");
}
/* ********************************************** */
diff --git a/source/blender/editors/curve/curve_intern.h b/source/blender/editors/curve/curve_intern.h
index ad3e9427861..6c477bd011a 100644
--- a/source/blender/editors/curve/curve_intern.h
+++ b/source/blender/editors/curve/curve_intern.h
@@ -84,7 +84,7 @@ void CURVE_OT_smooth_radius(struct wmOperatorType *ot);
void CURVE_OT_de_select_first(struct wmOperatorType *ot);
void CURVE_OT_de_select_last(struct wmOperatorType *ot);
-void CURVE_OT_select_all_toggle(struct wmOperatorType *ot);
+void CURVE_OT_select_all(struct wmOperatorType *ot);
void CURVE_OT_select_inverse(struct wmOperatorType *ot);
void CURVE_OT_select_linked(struct wmOperatorType *ot);
void CURVE_OT_select_row(struct wmOperatorType *ot);
diff --git a/source/blender/editors/curve/curve_ops.c b/source/blender/editors/curve/curve_ops.c
index ac0d4c21e27..660db2f0951 100644
--- a/source/blender/editors/curve/curve_ops.c
+++ b/source/blender/editors/curve/curve_ops.c
@@ -62,37 +62,6 @@
#include "curve_intern.h"
-/**************************** menus *****************************/
-
-static int specials_menu_invoke(bContext *C, wmOperator *op, wmEvent *event)
-{
- uiPopupMenu *pup;
- uiLayout *layout;
-
- pup= uiPupMenuBegin(C, "Specials", 0);
- layout= uiPupMenuLayout(pup);
- uiItemO(layout, NULL, 0, "CURVE_OT_subdivide");
- uiItemO(layout, NULL, 0, "CURVE_OT_switch_direction");
- uiItemO(layout, NULL, 0, "CURVE_OT_spline_weight_set");
- uiItemO(layout, NULL, 0, "CURVE_OT_radius_set");
- uiItemO(layout, NULL, 0, "CURVE_OT_smooth");
- uiItemO(layout, NULL, 0, "CURVE_OT_smooth_radius");
- uiPupMenuEnd(C, pup);
-
- return OPERATOR_CANCELLED;
-}
-
-void CURVE_OT_specials_menu(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Specials Menu";
- ot->idname= "CURVE_OT_specials_menu";
-
- /* api clastbacks */
- ot->invoke= specials_menu_invoke;
- ot->poll= ED_operator_editsurfcurve;
-}
-
/************************* registration ****************************/
void ED_operatortypes_curve(void)
@@ -139,7 +108,7 @@ void ED_operatortypes_curve(void)
WM_operatortype_append(CURVE_OT_de_select_first);
WM_operatortype_append(CURVE_OT_de_select_last);
- WM_operatortype_append(CURVE_OT_select_all_toggle);
+ WM_operatortype_append(CURVE_OT_select_all);
WM_operatortype_append(CURVE_OT_select_inverse);
WM_operatortype_append(CURVE_OT_select_linked);
WM_operatortype_append(CURVE_OT_select_row);
@@ -157,8 +126,6 @@ void ED_operatortypes_curve(void)
WM_operatortype_append(CURVE_OT_vertex_add);
WM_operatortype_append(CURVE_OT_extrude);
WM_operatortype_append(CURVE_OT_cyclic_toggle);
-
- WM_operatortype_append(CURVE_OT_specials_menu);
}
void ED_keymap_curve(wmKeyConfig *keyconf)
@@ -220,9 +187,9 @@ void ED_keymap_curve(wmKeyConfig *keyconf)
keymap->poll= ED_operator_editsurfcurve;
WM_keymap_add_item(keymap, "OBJECT_OT_curve_add", AKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "CURVE_OT_vertex_add", ACTIONMOUSE, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "CURVE_OT_vertex_add", LEFTMOUSE, KM_CLICK, KM_CTRL, 0);
- WM_keymap_add_item(keymap, "CURVE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "CURVE_OT_select_all", AKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "CURVE_OT_select_row", RKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "CURVE_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "CURVE_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0);
@@ -238,8 +205,8 @@ void ED_keymap_curve(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "CURVE_OT_delete", DELKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "CURVE_OT_tilt_clear", TKEY, KM_PRESS, KM_ALT, 0);
- RNA_enum_set(WM_keymap_add_item(keymap, "TFM_OT_transform", TKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", TFM_TILT);
- RNA_enum_set(WM_keymap_add_item(keymap, "TFM_OT_transform", SKEY, KM_PRESS, KM_ALT, 0)->ptr, "mode", TFM_CURVE_SHRINKFATTEN);
+ WM_keymap_add_item(keymap, "TRANSFORM_OT_tilt", TKEY, KM_PRESS, KM_CTRL, 0);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, KM_ALT, 0)->ptr, "mode", TFM_CURVE_SHRINKFATTEN);
RNA_enum_set(WM_keymap_add_item(keymap, "CURVE_OT_handle_type_set", HKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", 1);
RNA_enum_set(WM_keymap_add_item(keymap, "CURVE_OT_handle_type_set", HKEY, KM_PRESS, 0, 0)->ptr, "type", 3);
RNA_enum_set(WM_keymap_add_item(keymap, "CURVE_OT_handle_type_set", VKEY, KM_PRESS, 0, 0)->ptr, "type", 2);
@@ -248,7 +215,7 @@ void ED_keymap_curve(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "CURVE_OT_hide", HKEY, KM_PRESS, KM_ALT|KM_CTRL, 0);
RNA_enum_set(WM_keymap_add_item(keymap, "CURVE_OT_hide", HKEY, KM_PRESS, KM_ALT|KM_SHIFT, 0)->ptr, "unselected", 1);
- WM_keymap_add_item(keymap, "CURVE_OT_specials_menu", WKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_curve_specials", WKEY, KM_PRESS, 0, 0);
/* menus */
WM_keymap_add_menu(keymap, "VIEW3D_MT_hook", HKEY, KM_PRESS, KM_CTRL, 0);
diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c
index 82a626c453d..151c993b3a4 100644
--- a/source/blender/editors/curve/editcurve.c
+++ b/source/blender/editors/curve/editcurve.c
@@ -83,6 +83,9 @@
#include "RNA_access.h"
#include "RNA_define.h"
+void selectend_nurb(Object *obedit, short selfirst, short doswap, short selstatus);
+static void select_adjacent_cp(ListBase *editnurb, short next, short cont, short selstatus);
+
/* still need to eradicate a few :( */
#define callocstructN(x,y,name) (x*)MEM_callocN((y)* sizeof(x),name)
@@ -363,6 +366,64 @@ void free_editNurb(Object *obedit)
}
}
+void CU_deselect_all(Object *obedit)
+{
+ ListBase *editnurb= curve_get_editcurve(obedit);
+
+ if (editnurb) {
+ selectend_nurb(obedit, FIRST, 0, DESELECT); /* set first control points as unselected */
+ select_adjacent_cp(editnurb, 1, 1, DESELECT); /* cascade selection */
+ }
+}
+
+void CU_select_all(Object *obedit)
+{
+ ListBase *editnurb= curve_get_editcurve(obedit);
+
+ if (editnurb) {
+ selectend_nurb(obedit, FIRST, 0, SELECT); /* set first control points as unselected */
+ select_adjacent_cp(editnurb, 1, 1, SELECT); /* cascade selection */
+ }
+}
+
+void CU_select_swap(Object *obedit)
+{
+ ListBase *editnurb= curve_get_editcurve(obedit);
+
+ if (editnurb) {
+ Curve *cu= obedit->data;
+ Nurb *nu;
+ BPoint *bp;
+ BezTriple *bezt;
+ int a;
+
+ for(nu= editnurb->first; nu; nu= nu->next) {
+ if(nu->type == CU_BEZIER) {
+ bezt= nu->bezt;
+ a= nu->pntsu;
+ while(a--) {
+ if(bezt->hide==0) {
+ bezt->f2 ^= SELECT; /* always do the center point */
+ if((cu->drawflag & CU_HIDE_HANDLES)==0) {
+ bezt->f1 ^= SELECT;
+ bezt->f3 ^= SELECT;
+ }
+ }
+ bezt++;
+ }
+ }
+ else {
+ bp= nu->bp;
+ a= nu->pntsu*nu->pntsv;
+ while(a--) {
+ swap_selection_bpoint(bp);
+ bp++;
+ }
+ }
+ }
+ }
+}
+
/******************** separate operator ***********************/
static int separate_exec(bContext *C, wmOperator *op)
@@ -1580,26 +1641,36 @@ static int de_select_all_exec(bContext *C, wmOperator *op)
{
Object *obedit= CTX_data_edit_object(C);
ListBase *editnurb= curve_get_editcurve(obedit);
-
- if(nurb_has_selected_cps(editnurb)) { /* deselect all */
- selectend_nurb(obedit, FIRST, 0, DESELECT); /* set first control points as unselected */
- select_adjacent_cp(editnurb, 1, 1, DESELECT); /* cascade selection */
+ int action = RNA_enum_get(op->ptr, "action");
+
+ if (action == SEL_TOGGLE) {
+ action = SEL_SELECT;
+ if(nurb_has_selected_cps(editnurb))
+ action = SEL_DESELECT;
+ }
+
+ switch (action) {
+ case SEL_SELECT:
+ CU_select_all(obedit);
+ break;
+ case SEL_DESELECT:
+ CU_deselect_all(obedit);
+ break;
+ case SEL_INVERT:
+ CU_select_swap(obedit);
+ break;
}
- else { /* select all */
- selectend_nurb(obedit, FIRST, 0, SELECT); /* set first control points as selected */
- select_adjacent_cp(editnurb, 1, 1, SELECT); /* cascade selection */
- }
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data);
return OPERATOR_FINISHED;
}
-void CURVE_OT_select_all_toggle(wmOperatorType *ot)
+void CURVE_OT_select_all(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Select or Deselect All";
- ot->idname= "CURVE_OT_select_all_toggle";
+ ot->idname= "CURVE_OT_select_all";
/* api callbacks */
ot->exec= de_select_all_exec;
@@ -1607,6 +1678,9 @@ void CURVE_OT_select_all_toggle(wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* properties */
+ WM_operator_properties_select_all(ot);
}
/********************** hide operator *********************/
@@ -3055,7 +3129,7 @@ void CURVE_OT_make_segment(wmOperatorType *ot)
/***************** pick select from 3d view **********************/
-void mouse_nurb(bContext *C, short mval[2], int extend)
+int mouse_nurb(bContext *C, short mval[2], int extend)
{
Object *obedit= CTX_data_edit_object(C);
Curve *cu= obedit->data;
@@ -3111,12 +3185,15 @@ void mouse_nurb(bContext *C, short mval[2], int extend)
}
- }
+ if(nu!=get_actNurb(obedit))
+ set_actNurb(obedit, nu);
- WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data);
+ WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data);
+
+ return 1;
+ }
- if(nu!=get_actNurb(obedit))
- set_actNurb(obedit, nu);
+ return 0;
}
/******************** spin operator ***********************/
@@ -3462,7 +3539,7 @@ static int extrude_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
if(extrude_exec(C, op) == OPERATOR_FINISHED) {
RNA_int_set(op->ptr, "mode", TFM_TRANSLATION);
- WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
+ WM_operator_name_call(C, "TRANSFORM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
return OPERATOR_FINISHED;
}
@@ -4217,7 +4294,7 @@ static int duplicate_invoke(bContext *C, wmOperator *op, wmEvent *event)
duplicate_exec(C, op);
RNA_int_set(op->ptr, "mode", TFM_TRANSLATION);
- WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
+ WM_operator_name_call(C, "TRANSFORM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
return OPERATOR_FINISHED;
}
@@ -5208,42 +5285,3 @@ void undo_push_curve(bContext *C, char *name)
{
undo_editmode_push(C, name, get_data, free_undoCurve, undoCurve_to_editCurve, editCurve_to_undoCurve, NULL);
}
-
-/***************** XXX old cruft ********************/
-
-void default_curve_ipo(Scene *scene, Curve *cu)
-{
-#if 0 // XXX old animation system
- IpoCurve *icu;
- BezTriple *bezt;
-
- if(cu->ipo) return;
-
- cu->ipo= add_ipo(scene, "CurveIpo", ID_CU);
-
- icu= MEM_callocN(sizeof(IpoCurve), "ipocurve");
-
- icu->blocktype= ID_CU;
- icu->adrcode= CU_SPEED;
- icu->flag= IPO_VISIBLE|IPO_SELECT|IPO_AUTO_HORIZ;
- set_icu_vars(icu);
-
- BLI_addtail( &(cu->ipo->curve), icu);
-
- icu->bezt= bezt= MEM_callocN(2*sizeof(BezTriple), "defaultipo");
- icu->totvert= 2;
-
- bezt->hide= IPO_BEZ;
- bezt->f1=bezt->f2= bezt->f3= SELECT;
- bezt->h1= bezt->h2= HD_AUTO;
- bezt++;
- bezt->vec[1][0]= 100.0;
- bezt->vec[1][1]= 1.0;
- bezt->hide= IPO_BEZ;
- bezt->f1=bezt->f2= bezt->f3= SELECT;
- bezt->h1= bezt->h2= HD_AUTO;
-
- calchandles_ipocurve(icu);
-#endif // XXX old animation system
-}
-
diff --git a/source/blender/editors/datafiles/B.blend.c b/source/blender/editors/datafiles/B.blend.c
index d6cdfa31539..a3b4798fd5e 100644
--- a/source/blender/editors/datafiles/B.blend.c
+++ b/source/blender/editors/datafiles/B.blend.c
@@ -1,198 +1,198 @@
/* DataToC output of file <B_blend> */
-int datatoc_B_blend_size= 316960;
+int datatoc_B_blend_size= 320520;
char datatoc_B_blend[]= {
-
- 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 53, 48, 82, 69, 78, 68, 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 0, 0, 0, 0,
+ 66, 76, 69, 78, 68, 69, 82, 45,
+118, 50, 53, 48, 82, 69, 78, 68, 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 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, 0, 71, 76, 79, 66,
+ 24, 1, 0, 0,240,236,191, 95,255,127, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 56, 8, 0, 0, 0,250, 0, 0, 0,
+ 1, 0, 0, 1, 32,158,131, 29, 1, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 16, 0, 0,128, 32, 4, 0, 60,109,101,109,
+111,114,121, 50, 62, 0, 0, 0, 0, 0, 0, 0,178, 38, 29, 1, 1, 0, 0, 0, 40, 0, 0, 0, 48, 0, 0, 0, 32,238,191, 95,
+255,127, 0, 0, 80,237,191, 95,255,127, 0, 0,208,230, 29, 29, 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0,208, 78,111, 27,
+ 1, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0,192,237,191, 95,255,127, 0, 0, 13,241, 93, 0,
+ 1, 0, 0, 0,160,237,191, 95,255,127, 0, 0,224,237,191, 95,255,127, 0, 0, 32, 0, 0, 0, 82, 69, 78, 68,208, 78,111, 27,
+ 1, 0, 0, 0, 82, 69, 78, 68, 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 16,238,191, 95,
+255,127, 0, 0, 16,238,191, 95,255,127, 0, 0,211,247, 93, 0, 1, 0, 0, 0, 48, 88,131, 27, 1, 0, 0, 0,208, 78,111, 27,
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, 0, 71, 76, 79, 66, 24, 1, 0, 0,224,236,191, 95,255,127, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 55,
- 7, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1, 96, 4,155, 26, 1, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 16, 0, 0,
-128, 32, 4, 0, 60,109,101,109,111,114,121, 50, 62, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,224,237,191, 95,
-255,127, 0, 0, 84,192, 21, 4, 1, 0, 0, 0,112,237,191, 95,255,127, 0, 0,178,153,120, 0, 1, 0, 0, 0, 80,237,191, 95,
-255,127, 0, 0,208, 70, 23, 4, 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0,144,213,158, 26, 1, 0, 0, 0,144,237,191, 95,
-255,127, 0, 0, 48,192, 21, 4, 1, 0, 0, 0,192,237,191, 95,255,127, 0, 0, 41,156,120, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 32, 0, 0, 0, 82, 69, 78, 68,144,213,158, 26, 1, 0, 0, 0, 82, 69, 78, 68,
- 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,232,237,191, 95,255,127, 0, 0, 16,238,191, 95,
-255,127, 0, 0, 38,163,120, 0, 1, 0, 0, 0, 16,173,153, 26, 1, 0, 0, 0,144,213,158, 26, 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, 87, 77, 0, 0, 8, 1, 0, 0, 48,176,153, 26,
- 1, 0, 0, 0, 97, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,177,153, 26, 1, 0, 0, 0,128,177,153, 26,
- 1, 0, 0, 0,128,177,153, 26, 1, 0, 0, 0,128,177,153, 26, 1, 0, 0, 0, 3, 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, 2, 0, 0, 0, 2, 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,230, 94, 3,
- 1, 0, 0, 0, 0,230, 94, 3, 1, 0, 0, 0, 0,230, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 23,158, 26,
- 1, 0, 0, 0, 32, 23,158, 26, 1, 0, 0, 0, 32, 23,158, 26, 1, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,128,177,153, 26,
- 1, 0, 0, 0, 98, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,110, 86, 23,
- 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96, 4,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,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, 0, 0, 0,
-128, 7, 66, 4, 0, 0, 0, 0, 1, 0,238, 3, 0, 0, 1, 0, 0, 0, 0, 0,240,100, 90, 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,208,161,150, 26, 1, 0, 0, 0,176,213,149, 26,
- 1, 0, 0, 0,176,213,149, 26, 1, 0, 0, 0,192, 23,158, 26, 1, 0, 0, 0,128, 24,158, 26, 1, 0, 0, 0, 64, 25,158, 26,
- 1, 0, 0, 0, 64, 25,158, 26, 1, 0, 0, 0,192,218, 93, 3, 1, 0, 0, 0, 32, 25,159, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,160,178,153, 26, 1, 0, 0, 0,190, 0, 0, 0,
- 1, 0, 0, 0,192,105,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32,158,131, 29, 1, 0, 0, 0, 87, 77, 0, 0, 8, 1, 0, 0,208, 87,128, 29, 1, 0, 0, 0, 98, 1, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 89,128, 29, 1, 0, 0, 0, 16, 89,128, 29, 1, 0, 0, 0, 16, 89,128, 29,
+ 1, 0, 0, 0, 16, 89,128, 29, 1, 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, 2, 0, 0, 0, 2, 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,192,200,129, 29, 1, 0, 0, 0,192,200,129, 29,
+ 1, 0, 0, 0,192,200,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 85,107, 27, 1, 0, 0, 0, 48, 85,107, 27,
+ 1, 0, 0, 0, 48, 85,107, 27, 1, 0, 0, 0, 68, 65, 84, 65,232, 0, 0, 0, 16, 89,128, 29, 1, 0, 0, 0, 99, 1, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,254,195, 20, 1, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 32,158,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,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, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0,
+ 1, 0,238, 3, 0, 0, 1, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,181,176, 21, 1, 0, 0, 0, 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,178,178, 21, 1, 0, 0, 0, 64,117,129, 29,
+ 1, 0, 0, 0, 64,117,129, 29, 1, 0, 0, 0,208, 85,107, 27, 1, 0, 0, 0,144, 86,107, 27, 1, 0, 0, 0, 80, 87,107, 27,
+ 1, 0, 0, 0, 80, 87,107, 27, 1, 0, 0, 0,128, 2,128, 29, 1, 0, 0, 0,240, 54,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 48, 90,128, 29, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0,240,200,110, 27, 1, 0, 0, 0, 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, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,174,150, 26, 1, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0,240, 70, 95, 3,
- 1, 0, 0, 0,112,189,153, 26, 1, 0, 0, 0,208,189,153, 26, 1, 0, 0, 0,224, 87,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66, 25, 4, 1, 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,109, 60, 48, 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, 32, 0, 0, 0,224,174,150, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,192, 96, 94, 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, 32, 0, 0, 0,192, 96, 94, 3, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0,144,170,150, 26, 1, 0, 0, 0,224,174,150, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4,
- 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,170,150, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16, 12, 94, 3,
- 1, 0, 0, 0,192, 96, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0, 16, 12, 94, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0,144,170,150, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112, 35, 95, 3,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0, 16, 12, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 39, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 39, 4,
- 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176, 73,224, 25,
- 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 96, 28,224, 25, 1, 0, 0, 0, 64,225,149, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 39, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96, 28,224, 25,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48, 6,200, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0, 96, 28,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,200, 1,
- 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64,192,149, 26,
- 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0,176,181,150, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,120, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32,112, 90, 3,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,156, 2,120, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0,176,166,224, 25, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2, 39, 4,
- 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,166,224, 25, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 46, 95, 3,
- 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 1, 1, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0,176,166,224, 25,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2,124, 1, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,202,224, 25,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48, 6, 68, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 68, 3,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 70, 95, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,216,224, 25,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 96, 94, 3, 1, 0, 0, 0,144,170,150, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,216,224, 25, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,179,153, 26,
- 1, 0, 0, 0,240, 70, 95, 3, 1, 0, 0, 0,192, 96, 94, 3, 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,179,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,180,153, 26,
- 1, 0, 0, 0,192,216,224, 25, 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0,144,170,150, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,180,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,180,153, 26,
- 1, 0, 0, 0,176,179,153, 26, 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,180,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,180,153, 26,
- 1, 0, 0, 0, 16,180,153, 26, 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0,224,174,150, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,180,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,181,153, 26,
- 1, 0, 0, 0,112,180,153, 26, 1, 0, 0, 0, 16, 12, 94, 3, 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,181,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,181,153, 26,
- 1, 0, 0, 0,208,180,153, 26, 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,181,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,181,153, 26,
- 1, 0, 0, 0, 48,181,153, 26, 1, 0, 0, 0, 96, 28,224, 25, 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,181,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,182,153, 26,
- 1, 0, 0, 0,144,181,153, 26, 1, 0, 0, 0, 16, 12, 94, 3, 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,182,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,182,153, 26,
- 1, 0, 0, 0,240,181,153, 26, 1, 0, 0, 0, 96, 28,224, 25, 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,182,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,183,153, 26,
- 1, 0, 0, 0, 80,182,153, 26, 1, 0, 0, 0,224,174,150, 26, 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,183,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,183,153, 26,
- 1, 0, 0, 0,176,182,153, 26, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,183,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,183,153, 26,
- 1, 0, 0, 0, 16,183,153, 26, 1, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,183,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,184,153, 26,
- 1, 0, 0, 0,112,183,153, 26, 1, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,184,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,184,153, 26,
- 1, 0, 0, 0,208,183,153, 26, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,184,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,184,153, 26,
- 1, 0, 0, 0, 48,184,153, 26, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,184,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,185,153, 26,
- 1, 0, 0, 0,144,184,153, 26, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,185,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,185,153, 26,
- 1, 0, 0, 0,240,184,153, 26, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,185,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,186,153, 26,
- 1, 0, 0, 0, 80,185,153, 26, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,186,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,186,153, 26,
- 1, 0, 0, 0,176,185,153, 26, 1, 0, 0, 0,176,166,224, 25, 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,186,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,186,153, 26,
- 1, 0, 0, 0, 16,186,153, 26, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,186,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,187,153, 26,
- 1, 0, 0, 0,112,186,153, 26, 1, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0,176,166,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,187,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,187,153, 26,
- 1, 0, 0, 0,208,186,153, 26, 1, 0, 0, 0, 96, 28,224, 25, 1, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,187,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,187,153, 26,
- 1, 0, 0, 0, 48,187,153, 26, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,187,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,188,153, 26,
- 1, 0, 0, 0,144,187,153, 26, 1, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,188,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,188,153, 26,
- 1, 0, 0, 0,240,187,153, 26, 1, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,188,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,189,153, 26,
- 1, 0, 0, 0, 80,188,153, 26, 1, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,189,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,189,153, 26,
- 1, 0, 0, 0,176,188,153, 26, 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0,176,166,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,189,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 16,189,153, 26, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,208,189,153, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,193,153, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0,192, 96, 94, 3, 1, 0, 0, 0,144,170,150, 26,
- 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0,
- 66, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16, 15, 82, 3, 1, 0, 0, 0, 64,105,154, 26,
- 1, 0, 0, 0, 64,105,154, 26, 1, 0, 0, 0,176,190,153, 26, 1, 0, 0, 0, 16,192,153, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,125, 88, 23, 1, 0, 0, 0, 0, 98,159, 25, 1, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0,176,190,153, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,192,153, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,242,129, 29, 1, 0, 0, 0, 0,160,129, 29, 1, 0, 0, 0, 0, 9,130, 29,
+ 1, 0, 0, 0,192, 92,128, 29, 1, 0, 0, 0, 32, 93,128, 29, 1, 0, 0, 0, 32,189,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 0, 0, 0, 96,242,129, 29,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,240,107, 27, 1, 0, 0, 0, 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, 32, 0, 0, 0, 48,240,107, 27, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,160, 55,130, 29, 1, 0, 0, 0, 96,242,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 55,130, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,244,129, 29,
+ 1, 0, 0, 0, 48,240,107, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 16,244,129, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,176,129, 29, 1, 0, 0, 0,160, 55,130, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,176,129, 29,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 61,131, 29, 1, 0, 0, 0, 16,244,129, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,100, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0, 61,131, 29, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,240, 39,245, 26, 1, 0, 0, 0,112,176,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240, 39,245, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160, 56,130, 29,
+ 1, 0, 0, 0, 0, 61,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,160, 56,130, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,252,130, 29, 1, 0, 0, 0,240, 39,245, 26,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,100, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0,252,130, 29,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,201,129, 29, 1, 0, 0, 0,160, 56,130, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 6,228, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160,201,129, 29, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,144,239,129, 29, 1, 0, 0, 0, 0,252,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,228, 1,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,239,129, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,227,179, 21,
+ 1, 0, 0, 0,160,201,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,192,227,179, 21, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144, 35,245, 26, 1, 0, 0, 0,144,239,129, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,128, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 35,245, 26,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160, 78,129, 29, 1, 0, 0, 0,192,227,179, 21, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,156, 2,128, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 78,129, 29, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,128, 65,129, 29, 1, 0, 0, 0,144, 35,245, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2,100, 4,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128, 65,129, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208, 40,108, 27,
+ 1, 0, 0, 0,160, 78,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148, 1, 1, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,208, 40,108, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,106,130, 29, 1, 0, 0, 0,128, 65,129, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2,148, 1, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32,106,130, 29,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,160,129, 29, 1, 0, 0, 0,208, 40,108, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 6,116, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0,160,129, 29, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,106,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,116, 3,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 9,130, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208, 50,130, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,240,107, 27, 1, 0, 0, 0,160, 55,130, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208, 50,130, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 42,131, 29,
+ 1, 0, 0, 0, 0, 9,130, 29, 1, 0, 0, 0, 48,240,107, 27, 1, 0, 0, 0,112,176,129, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 42,131, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 89,244, 26,
+ 1, 0, 0, 0,208, 50,130, 29, 1, 0, 0, 0,160, 55,130, 29, 1, 0, 0, 0, 0, 61,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 89,244, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,110,129, 29,
+ 1, 0, 0, 0,240, 42,131, 29, 1, 0, 0, 0,112,176,129, 29, 1, 0, 0, 0, 0, 61,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,110,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,184,130, 29,
+ 1, 0, 0, 0,224, 89,244, 26, 1, 0, 0, 0,240, 39,245, 26, 1, 0, 0, 0, 96,242,129, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,184,130, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,243,130, 29,
+ 1, 0, 0, 0, 16,110,129, 29, 1, 0, 0, 0,240, 39,245, 26, 1, 0, 0, 0, 16,244,129, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,243,130, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,223,129, 29,
+ 1, 0, 0, 0,160,184,130, 29, 1, 0, 0, 0,160, 56,130, 29, 1, 0, 0, 0, 0, 61,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,223,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 45,244, 26,
+ 1, 0, 0, 0,160,243,130, 29, 1, 0, 0, 0,240, 39,245, 26, 1, 0, 0, 0, 0,252,130, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 45,244, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,171,129, 29,
+ 1, 0, 0, 0, 32,223,129, 29, 1, 0, 0, 0,160,201,129, 29, 1, 0, 0, 0, 16,244,129, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,171,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,199,129, 29,
+ 1, 0, 0, 0, 64, 45,244, 26, 1, 0, 0, 0,160,201,129, 29, 1, 0, 0, 0, 0,252,130, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,199,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 79,129, 29,
+ 1, 0, 0, 0,128,171,129, 29, 1, 0, 0, 0,144,239,129, 29, 1, 0, 0, 0, 96,242,129, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 79,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 66,129, 29,
+ 1, 0, 0, 0,160,199,129, 29, 1, 0, 0, 0,192,227,179, 21, 1, 0, 0, 0,160, 56,130, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 66,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 47,130, 29,
+ 1, 0, 0, 0, 80, 79,129, 29, 1, 0, 0, 0,192,227,179, 21, 1, 0, 0, 0,240, 39,245, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16, 47,130, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,184,109, 27,
+ 1, 0, 0, 0, 32, 66,129, 29, 1, 0, 0, 0,192,227,179, 21, 1, 0, 0, 0,144,239,129, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,184,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 56,131, 29,
+ 1, 0, 0, 0, 16, 47,130, 29, 1, 0, 0, 0,144, 35,245, 26, 1, 0, 0, 0,144,239,129, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 56,131, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,108,129, 29,
+ 1, 0, 0, 0,192,184,109, 27, 1, 0, 0, 0,192,227,179, 21, 1, 0, 0, 0,144, 35,245, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,108,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,150,129, 29,
+ 1, 0, 0, 0,144, 56,131, 29, 1, 0, 0, 0,160, 78,129, 29, 1, 0, 0, 0,112,176,129, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,150,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 41,108, 27,
+ 1, 0, 0, 0, 96,108,129, 29, 1, 0, 0, 0,160, 78,129, 29, 1, 0, 0, 0,160, 56,130, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 41,108, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,195,129, 29,
+ 1, 0, 0, 0, 32,150,129, 29, 1, 0, 0, 0,144, 35,245, 26, 1, 0, 0, 0,160, 78,129, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,195,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,242,108, 27,
+ 1, 0, 0, 0,128, 41,108, 27, 1, 0, 0, 0,128, 65,129, 29, 1, 0, 0, 0,144,239,129, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,242,108, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 20,130, 29,
+ 1, 0, 0, 0, 16,195,129, 29, 1, 0, 0, 0,144, 35,245, 26, 1, 0, 0, 0,208, 40,108, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 20,130, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,185,129, 29,
+ 1, 0, 0, 0,160,242,108, 27, 1, 0, 0, 0,208, 40,108, 27, 1, 0, 0, 0,128, 65,129, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,185,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,177,176, 21,
+ 1, 0, 0, 0, 64, 20,130, 29, 1, 0, 0, 0, 32,106,130, 29, 1, 0, 0, 0, 0,252,130, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,177,176, 21, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 91,128, 29,
+ 1, 0, 0, 0, 96,185,129, 29, 1, 0, 0, 0,160, 56,130, 29, 1, 0, 0, 0, 32,106,130, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 91,128, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 91,128, 29,
+ 1, 0, 0, 0, 48,177,176, 21, 1, 0, 0, 0, 0,160,129, 29, 1, 0, 0, 0, 0, 61,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 91,128, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 92,128, 29,
+ 1, 0, 0, 0, 64, 91,128, 29, 1, 0, 0, 0, 0,160,129, 29, 1, 0, 0, 0,160,201,129, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 92,128, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96, 92,128, 29,
+ 1, 0, 0, 0,160, 91,128, 29, 1, 0, 0, 0, 0,160,129, 29, 1, 0, 0, 0, 32,106,130, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 92,128, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 92,128, 29,
+ 1, 0, 0, 0, 0, 92,128, 29, 1, 0, 0, 0,128, 65,129, 29, 1, 0, 0, 0,112,176,129, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 92,128, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96, 92,128, 29, 1, 0, 0, 0,208, 40,108, 27, 1, 0, 0, 0,160, 78,129, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 32, 93,128, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192, 96,128, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,176,129, 29, 1, 0, 0, 0, 48,240,107, 27, 1, 0, 0, 0,160, 55,130, 29,
+ 1, 0, 0, 0, 0, 61,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,
+128, 4, 0, 0, 7, 7,129, 7, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,200,110, 27,
+ 1, 0, 0, 0,112,200,110, 27, 1, 0, 0, 0, 0, 94,128, 29, 1, 0, 0, 0, 96, 95,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 0, 94,128, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96, 95,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0,
0, 0,208, 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,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7,
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,
-128, 7, 0, 0, 40, 4, 0, 0, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0,
- 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 16, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+128, 7, 0, 0,101, 4, 0, 0,126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 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, 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, 16,192,153, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,190,153, 26,
+ 40, 1, 0, 0, 96, 95,128, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94,128, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192,
- 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0,
- 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 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, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 3, 0,112, 7,
+ 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 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, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 4, 0, 0, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240, 15, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+128, 7, 0, 0,127, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 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, 68, 65, 84, 65,
-160, 0, 0, 0,112,193,153, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,128,227,153, 26, 1, 0, 0, 0,208,189,153, 26,
- 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0, 96, 28,224, 25, 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0, 16, 12, 94, 3,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,199, 1, 0, 0, 4, 4, 80, 1,
-200, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 11, 82, 3, 1, 0, 0, 0,240,218,153, 26, 1, 0, 0, 0, 32,226,153, 26,
- 1, 0, 0, 0, 80,194,153, 26, 1, 0, 0, 0,176,195,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,208,157,193, 25, 1, 0, 0, 0,192,212,193, 25, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,194,153, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,195,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+160, 0, 0, 0,192, 96,128, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,127,128, 29, 1, 0, 0, 0, 32, 93,128, 29,
+ 1, 0, 0, 0,240, 39,245, 26, 1, 0, 0, 0, 0,252,130, 29, 1, 0, 0, 0,160,201,129, 29, 1, 0, 0, 0, 16,244,129, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, 4, 4, 80, 1,
+228, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,122,128, 29, 1, 0, 0, 0, 64,126,128, 29,
+ 1, 0, 0, 0,160, 97,128, 29, 1, 0, 0, 0, 0, 99,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 97,128, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 99,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,168, 67, 0, 0, 0, 0, 0, 0,248, 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,
79, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63,
0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 80, 1, 31, 0, 80, 1, 31, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,169, 1, 0, 0,
-199, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 14, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,195,153, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,194,153, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0,128,159, 67, 0, 0, 62,196, 0, 0, 0, 0, 0, 0, 0, 0, 1,128,159, 67, 2,128,203,195, 0, 0, 0, 0, 63, 1, 0, 0,
- 80, 1, 0, 0, 18, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
- 62, 1, 0, 0, 18, 0, 0, 0,168, 1, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 80, 1,169, 1, 63, 1,151, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 32, 70, 94, 3, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
-168, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,169, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 12, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 16,197,153, 26, 1, 0, 0, 0, 96,217,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16,197,153, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,198,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 13, 82, 3,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,197, 1, 0, 0,
+227, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 99,128, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 97,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0,128,159, 67, 0, 64, 68,196, 0, 0, 0, 0, 0, 0, 0, 0, 1,128,159, 67, 1,128,217,195, 0, 0, 0, 0, 63, 1, 0, 0,
+ 80, 1, 0, 0, 18, 0, 0, 0,196, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+ 62, 1, 0, 0, 18, 0, 0, 0,196, 1, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 80, 1,197, 1, 63, 1,179, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
+196, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,197, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,100,128, 29, 1, 0, 0, 0,176,120,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 96,100,128, 29,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,101,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,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, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,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, 67,111,110,116,101,120,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,220,255, 63, 1, 36, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255, 63, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,160,198,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,200,153, 26,
- 1, 0, 0, 0, 16,197,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240,101,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,128,103,128, 29,
+ 1, 0, 0, 0, 96,100,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78,
69, 95, 80, 84, 95,115, 99,101,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, 0, 0, 0, 0, 83, 67, 69, 78,
69, 95, 80, 84, 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -202,8 +202,8 @@ char datatoc_B_blend[]= {
63, 1, 61, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48,200,153, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,201,153, 26, 1, 0, 0, 0,160,198,153, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128,103,128, 29,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16,105,128, 29, 1, 0, 0, 0,240,101,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,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, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0,
@@ -214,8 +214,8 @@ char datatoc_B_blend[]= {
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, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192,201,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,203,153, 26,
- 1, 0, 0, 0, 48,200,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16,105,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160,106,128, 29,
+ 1, 0, 0, 0,128,103,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78,
69, 95, 80, 84, 95,107,101,121,105,110,103, 95,115,101,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, 83, 67, 69, 78,
69, 95, 80, 84, 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -225,8 +225,8 @@ char datatoc_B_blend[]= {
63, 1, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80,203,153, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,204,153, 26, 1, 0, 0, 0,192,201,153, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160,106,128, 29,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,108,128, 29, 1, 0, 0, 0, 16,105,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,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, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0,
@@ -237,120 +237,120 @@ char datatoc_B_blend[]= {
13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,224,204,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,206,153, 26,
- 1, 0, 0, 0, 80,203,153, 26, 1, 0, 0, 0,176,121,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48,108,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192,109,128, 29,
+ 1, 0, 0, 0,160,106,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,114,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, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,114,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, 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,135,255,
- 63, 1, 61, 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,
+ 63, 1, 61, 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, 68, 65, 84, 65, 88, 1, 0, 0,112,206,153, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,208,153, 26, 1, 0, 0, 0,224,204,153, 26, 1, 0, 0, 0,176,131,159, 25,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 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, 68, 65, 84, 65, 88, 1, 0, 0,192,109,128, 29,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,111,128, 29, 1, 0, 0, 0, 48,108,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 63, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 63, 1, 0, 0, 0, 0, 0, 0, 4, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0,208,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,209,153, 26,
- 1, 0, 0, 0,112,206,153, 26, 1, 0, 0, 0,144,133,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 80,111,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,112,128, 29,
+ 1, 0, 0, 0,192,109,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,100,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, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,100,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, 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,165,254,
- 63, 1,178, 0, 0, 0, 0, 0, 0, 0, 2, 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,140,254,
+ 63, 1,203, 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, 68, 65, 84, 65, 88, 1, 0, 0,144,209,153, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,211,153, 26, 1, 0, 0, 0, 0,208,153, 26, 1, 0, 0, 0,112,138,159, 25,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,
+ 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, 1, 0, 0,224,112,128, 29,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,114,128, 29, 1, 0, 0, 0, 80,111,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,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, 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, 83,254, 63, 1, 58, 0, 20, 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, 58,254, 63, 1, 58, 0, 20, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 32,211,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,212,153, 26,
- 1, 0, 0, 0,144,209,153, 26, 1, 0, 0, 0, 80,140,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112,114,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0,116,128, 29,
+ 1, 0, 0, 0,224,112,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,115,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, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,115,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, 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,213,253,
- 63, 1,102, 0, 0, 0, 0, 0, 0, 0, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,253,
+ 63, 1,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,176,212,153, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,214,153, 26, 1, 0, 0, 0, 32,211,153, 26, 1, 0, 0, 0, 48,145,159, 25,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,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, 68, 65, 84, 65, 88, 1, 0, 0, 0,116,128, 29,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,117,128, 29, 1, 0, 0, 0,112,114,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,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, 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, 84,253, 63, 1,105, 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, 59,253, 63, 1,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 64,214,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,215,153, 26,
- 1, 0, 0, 0,176,212,153, 26, 1, 0, 0, 0, 0,151,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144,117,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 32,119,128, 29,
+ 1, 0, 0, 0, 0,116,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 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, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 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, 80,101,114,102,
111,114,109, 97,110, 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, 60,253,
- 63, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35,253,
+ 63, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,208,215,153, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,217,153, 26, 1, 0, 0, 0, 64,214,153, 26, 1, 0, 0, 0,224,152,159, 25,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,
+ 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, 1, 0, 0, 32,119,128, 29,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,120,128, 29, 1, 0, 0, 0,144,117,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,
115,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,
115,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, 80,111,115,116, 32, 80,114,111, 99,101,115,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, 36,253, 63, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,253, 63, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 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, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 96,217,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,208,215,153, 26, 1, 0, 0, 0,192,154,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176,120,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32,119,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,115,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, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,115,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, 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, 12,253,
- 63, 1, 0, 0, 20, 0, 0, 0, 4, 0, 3, 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,243,252,
+ 63, 1, 0, 0, 20, 0, 0, 0, 4, 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, 68, 65, 84, 65, 0, 1, 0, 0,240,218,153, 26,
- 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 32,226,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 64,122,128, 29,
+ 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 64,126,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,112,190, 95, 3, 1, 0, 0, 0,255, 21, 0, 0,
-160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,220,153, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,144,221,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,
+160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,123,128, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,224,124,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 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, 19, 1, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -359,8 +359,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 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, 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,144,221,153, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,220,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,124,128, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,123,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -369,7 +369,7 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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,240,222,153, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,240,222,153, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 0, 0, 0, 0, 48, 92,131, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 92,131, 27, 1, 0, 0, 0,157, 0, 0, 0,
1, 0, 0, 0,103,212,136, 64, 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,128, 0, 0, 0,128,226,215,163,188,
0, 0, 0,128, 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,
@@ -393,51 +393,54 @@ 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,
- 32, 1, 0, 0, 32,226,153, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,218,153, 26,
- 1, 0, 0, 0, 48,220,153, 26, 1, 0, 0, 0,144,221,153, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 32, 1, 0, 0, 64,126,128, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,122,128, 29,
+ 1, 0, 0, 0,128,123,128, 29, 1, 0, 0, 0,224,124,128, 29, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 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, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0,
0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 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, 0, 0, 7, 0, 10, 0,159, 0, 0, 0,
1, 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, 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,128,227,153, 26,
- 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,239,153, 26, 1, 0, 0, 0,112,193,153, 26, 1, 0, 0, 0,224,174,150, 26,
- 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 15, 15, 48, 6,120, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 16,236, 81, 3, 1, 0, 0, 0, 32,231,153, 26, 1, 0, 0, 0, 16,238,153, 26, 1, 0, 0, 0, 96,228,153, 26,
- 1, 0, 0, 0,192,229,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 38,231, 28,
- 1, 0, 0, 0,240, 91, 87, 23, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,228,153, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,192,229,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 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, 68, 65, 84, 65,160, 0, 0, 0,160,127,128, 29,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,136,128, 29, 1, 0, 0, 0,192, 96,128, 29, 1, 0, 0, 0, 96,242,129, 29,
+ 1, 0, 0, 0,144,239,129, 29, 1, 0, 0, 0,192,227,179, 21, 1, 0, 0, 0,240, 39,245, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0,127, 0, 0, 0, 15, 15, 48, 6,128, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,131,128, 29, 1, 0, 0, 0, 0,135,128, 29, 1, 0, 0, 0,128,128,128, 29,
+ 1, 0, 0, 0,224,129,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,128,128, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,224,129,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,136, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 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, 47, 6, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 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, 47, 6, 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, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,208,237, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,229,153, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,228,153, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 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, 68, 65, 84, 65, 40, 1, 0, 0,224,129,128, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, 29, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0,
0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 18, 0, 0, 0,
- 93, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0,
- 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 48, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 26, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,240,236, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 32,231,153, 26, 1, 0, 0, 0,172, 0, 0, 0,
- 1, 0, 0, 0, 16,238,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+101, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0,
+ 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 48, 6,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, 47, 6, 0, 0, 26, 0, 0, 0,127, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,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, 68, 65, 84, 65,200, 0, 0, 0, 64,131,128, 29, 1, 0, 0, 0,173, 0, 0, 0,
+ 1, 0, 0, 0, 0,135,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,232,153, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,128,233,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,132,128, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,160,133,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 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, 87, 6, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -446,8 +449,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 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, 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,128,233,153, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,232,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,133,128, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,132,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -456,7 +459,7 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,234,153, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,224,234,153, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 0, 0, 0, 0, 48,192, 7, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,192, 7, 3, 1, 0, 0, 0,157, 0, 0, 0,
1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 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,128, 0, 0, 0,128,226,215,163,188,
0, 0, 0,128, 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,
@@ -480,62 +483,65 @@ 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,
- 32, 1, 0, 0, 16,238,153, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,231,153, 26,
- 1, 0, 0, 0, 32,232,153, 26, 1, 0, 0, 0,128,233,153, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 32, 1, 0, 0, 0,135,128, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,131,128, 29,
+ 1, 0, 0, 0, 64,132,128, 29, 1, 0, 0, 0,160,133,128, 29, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 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, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0,
0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 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, 0, 0, 7, 0, 10, 0,159, 0, 0, 0,
1, 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, 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,112,239,153, 26,
- 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208, 0,154, 26, 1, 0, 0, 0,128,227,153, 26, 1, 0, 0, 0, 96, 28,224, 25,
- 1, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,201, 1, 0, 0, 67, 3, 0, 0, 3, 3, 80, 1,123, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,112,233, 81, 3, 1, 0, 0, 0, 16,243,153, 26, 1, 0, 0, 0,112,255,153, 26, 1, 0, 0, 0, 80,240,153, 26,
- 1, 0, 0, 0,176,241,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,244,137, 26,
- 1, 0, 0, 0,176, 35,137, 26, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,240,153, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,176,241,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 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, 68, 65, 84, 65,160, 0, 0, 0, 96,136,128, 29,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,150,128, 29, 1, 0, 0, 0,160,127,128, 29, 1, 0, 0, 0, 0,252,130, 29,
+ 1, 0, 0, 0, 32,106,130, 29, 1, 0, 0, 0, 0,160,129, 29, 1, 0, 0, 0,160,201,129, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,229, 1, 0, 0,115, 3, 0, 0, 3, 3, 80, 1,143, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,128, 29, 1, 0, 0, 0, 48,149,128, 29, 1, 0, 0, 0, 64,137,128, 29,
+ 1, 0, 0, 0,160,138,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,137,128, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,160,138,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,168, 67, 0, 0, 0, 0, 0, 0,208, 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, 79, 1, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 80, 1, 26, 0, 80, 1, 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, 49, 6, 0, 0,128, 7, 0, 0, 42, 3, 0, 0, 67, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 90, 3, 0, 0,115, 3, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48,235, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,241,153, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,240,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,128,159, 67, 0,128,167,195, 0, 0, 0, 0, 63, 1, 0, 0, 80, 1, 0, 0, 18, 0, 0, 0,
- 96, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 18, 0, 0, 0,
- 96, 1, 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, 18, 0, 0, 0,
- 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 80, 1, 97, 1, 63, 1, 79, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,201, 1, 0, 0, 41, 3, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1, 97, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 80,234, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,243,153, 26, 1, 0, 0, 0,166, 0, 0, 0,
- 1, 0, 0, 0, 64,248,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,138,128, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,137,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,128,159, 67, 0,128,177,195, 0, 0, 0, 0, 63, 1, 0, 0, 80, 1, 0, 0, 18, 0, 0, 0,
+116, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 18, 0, 0, 0,
+116, 1, 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, 18, 0, 0, 0,
+ 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 80, 1,117, 1, 63, 1, 99, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,229, 1, 0, 0, 89, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,117, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,140,128, 29, 1, 0, 0, 0,167, 0, 0, 0,
+ 1, 0, 0, 0, 48,145,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 59,152, 26, 1, 0, 0, 0, 96, 59,152, 26,
- 1, 0, 0, 0,112, 43,152, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 16, 0, 0, 0,112, 43,152, 26, 1, 0, 0, 0,218, 0, 0, 0,
- 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,112,244,153, 26, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,112,244,153, 26,
- 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 19, 0, 0, 0,
- 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 21, 0, 1, 0,
- 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,137,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,148,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0,240,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,146,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 48,160, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,133,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,132,157, 26, 1, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0,128,245,153, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,246,153, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,176,238,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 16, 0, 0, 0,176,238,109, 27, 1, 0, 0, 0,219, 0, 0, 0,
+ 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 96,141,128, 29, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 96,141,128, 29,
+ 1, 0, 0, 0,218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 19, 0, 0, 0,
+ 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 21, 0, 1, 0,
+ 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 58,132, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 48, 74,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,171,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 48, 86,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,198,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 48, 80,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 54,132, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 32,163,176, 21, 1, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,112,142,128, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,143,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 67, 67, 0, 0, 0, 0,
0, 0,208, 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,194, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67,
@@ -545,7 +551,7 @@ char datatoc_B_blend[]= {
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, 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,224,246,153, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,245,153, 26,
+ 40, 1, 0, 0,208,143,128, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,142,128, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0,192,116,196, 0, 0, 0, 0, 0, 0, 0, 0,205, 85,150, 67,223,204, 35,196,
26, 85,207,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
@@ -555,16 +561,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, 68, 65, 84, 65,
- 0, 1, 0, 0, 64,248,153, 26, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,112,255,153, 26, 1, 0, 0, 0, 16,243,153, 26,
- 1, 0, 0, 0,128,245,153, 26, 1, 0, 0, 0,224,246,153, 26, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 48,145,128, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 48,149,128, 29, 1, 0, 0, 0, 0,140,128, 29,
+ 1, 0, 0, 0,112,142,128, 29, 1, 0, 0, 0,208,143,128, 29, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,249,153, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,250,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,146,128, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,147,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 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,
19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63,
@@ -573,8 +579,8 @@ char datatoc_B_blend[]= {
25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 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, 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,224,250,153, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,249,153, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,147,128, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,146,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -583,8 +589,8 @@ char datatoc_B_blend[]= {
80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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, 64,252,153, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 64,252,153, 26,
- 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 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, 48,196, 7, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,196, 7, 3,
+ 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 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,128,
0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 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,
@@ -608,188 +614,194 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0,112,255,153, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 64,248,153, 26, 1, 0, 0, 0,128,249,153, 26, 1, 0, 0, 0,224,250,153, 26, 1, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 48,149,128, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48,145,128, 29, 1, 0, 0, 0,112,146,128, 29, 1, 0, 0, 0,208,147,128, 29, 1, 0, 0, 0, 1, 0, 0, 0,
51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0,
1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 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, 0, 0,
7, 0, 10, 0,159, 0, 0, 0, 1, 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, 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,208, 0,154, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 64, 26,154, 26, 1, 0, 0, 0,112,239,153, 26,
- 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0, 64,192,149, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,121, 0, 0, 0, 38, 4, 0, 0, 1, 1,147, 3,
-174, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,238, 81, 3, 1, 0, 0, 0, 32, 21,154, 26, 1, 0, 0, 0, 64, 25,154, 26,
- 1, 0, 0, 0,176, 1,154, 26, 1, 0, 0, 0,144, 16,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48,200,197, 25, 1, 0, 0, 0, 80,186,229, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 1,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 3,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0,192,104, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192,100, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+160, 0, 0, 0,144,150,128, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,174,128, 29, 1, 0, 0, 0, 96,136,128, 29,
+ 1, 0, 0, 0,144, 35,245, 26, 1, 0, 0, 0,160, 78,129, 29, 1, 0, 0, 0,160, 56,130, 29, 1, 0, 0, 0,192,227,179, 21,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,129, 0, 0, 0, 99, 4, 0, 0, 1, 1,147, 3,
+227, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,169,128, 29, 1, 0, 0, 0, 96,173,128, 29,
+ 1, 0, 0, 0,112,151,128, 29, 1, 0, 0, 0,224,167,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,151,128, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,152,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192,100, 68, 0, 0, 0, 0, 0, 0,208, 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,
146, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63,
0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,147, 3, 26, 0,147, 3, 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,157, 2, 0, 0, 47, 6, 0, 0,121, 0, 0, 0,
-146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,147, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,246, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,129, 0, 0, 0,
+154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,147, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16, 3,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 4,154, 26, 1, 0, 0, 0,176, 1,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,152,128, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48,154,128, 29, 1, 0, 0, 0,112,151,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,
160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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,157, 2, 0, 0,157, 2, 0, 0,147, 0, 0, 0,
- 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,148, 3, 0, 0, 5, 0, 3, 0, 1, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,243, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0,157, 2, 0, 0,155, 0, 0, 0,
+ 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,201, 3, 0, 0, 5, 0, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,112, 4,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208, 5,154, 26, 1, 0, 0, 0, 16, 3,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,154,128, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144,155,128, 29, 1, 0, 0, 0,208,152,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,
160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
142, 0, 0, 0, 18, 0, 0, 0,119, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,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,157, 2, 0, 0, 47, 6, 0, 0,147, 0, 0, 0,
-147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,245, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,155, 0, 0, 0,
+155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 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, 68, 65, 84, 65, 40, 1, 0, 0,208, 5,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 16,154, 26, 1, 0, 0, 0,112, 4,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144,155,128, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,167,128, 29, 1, 0, 0, 0, 48,154,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,
180, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
162, 0, 0, 0, 18, 0, 0, 0,147, 3, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,148, 3,163, 0,130, 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, 47, 6, 0, 0, 47, 6, 0, 0,147, 0, 0, 0,
- 38, 4, 0, 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,112,240, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48, 7,154, 26, 1, 0, 0, 0,208,163,129, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48, 7,154, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 8,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,241, 81, 3,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 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, 47, 6, 0, 0, 47, 6, 0, 0,155, 0, 0, 0,
+ 99, 4, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240,156,128, 29, 1, 0, 0, 0, 80,166,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240,156,128, 29,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,128,158,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 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, 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, 62,254,163, 0,110, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,254,163, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,192, 8,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 10,154, 26,
- 1, 0, 0, 0, 48, 7,154, 26, 1, 0, 0, 0, 64,242, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128,158,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16,160,128, 29,
+ 1, 0, 0, 0,240,156,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,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, 86, 73, 69, 87,
51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,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, 71,114,101, 97,
115,101, 32, 80,101,110, 99,105,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, 81,252,
-163, 0, 58, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+163, 0, 58, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 80, 10,154, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 11,154, 26, 1, 0, 0, 0,192, 8,154, 26, 1, 0, 0, 0,176,203,199, 25,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,
+ 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, 1, 0, 0, 16,160,128, 29,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160,161,128, 29, 1, 0, 0, 0,128,158,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,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, 86,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,235,252,163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,235,252,163, 0, 59, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0,224, 11,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 13,154, 26,
- 1, 0, 0, 0, 80, 10,154, 26, 1, 0, 0, 0, 16,206,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160,161,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,163,128, 29,
+ 1, 0, 0, 0, 16,160,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,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, 86, 73, 69, 87,
51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,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, 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, 0, 0, 0, 0, 0, 0,211,252,
-163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+163, 0, 0, 0, 0, 0, 0, 0, 4, 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, 68, 65, 84, 65, 88, 1, 0, 0,112, 13,154, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 15,154, 26, 1, 0, 0, 0,224, 11,154, 26, 1, 0, 0, 0,144,215,199, 25,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100,
+ 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, 1, 0, 0, 48,163,128, 29,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192,164,128, 29, 1, 0, 0, 0,160,161,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100,
95,105,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100,
95,105,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, 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,187,252,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187,252,163, 0, 0, 0, 20, 0, 0, 0, 4, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, 15,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,163,129, 26,
- 1, 0, 0, 0,112, 13,154, 26, 1, 0, 0, 0,240,217,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192,164,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,166,128, 29,
+ 1, 0, 0, 0, 48,163,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 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, 86, 73, 69, 87,
51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 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, 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,163,252,
-163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,208,163,129, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,154, 26, 1, 0, 0, 0,112,208,199, 25,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,
+ 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, 1, 0, 0, 80,166,128, 29,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,164,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,
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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,
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, 73,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, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,163, 0, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,163, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 16,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,208, 5,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,167,128, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,144,155,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,147, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,147, 3,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,239, 81, 3,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 17,154, 26,
- 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,240, 17,154, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 43, 39,140, 63,
+ 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,155, 0, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,147, 3,201, 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, 48,120,131, 27,
+ 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,120,131, 27, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 38, 67,148, 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, 28, 13,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, 74,215, 76,190, 0, 0, 0,128, 68,239,209, 62,
51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,
166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62,
70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63,
- 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,240,221,229, 62,
-208,249,224,190, 48,180, 81,191,184,158, 81,191,229,161,127, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 18,247,109,188,
-206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, 40,187,191, 62,
-177, 56, 85, 63,144,122, 70,188, 0, 0,132, 51,191, 15,188,190,128, 75, 53, 62,217,125, 81, 63, 0, 0, 96,178, 67,108,117,194,
+ 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,200, 42,243, 62,
+208,249,224,190, 48,180, 81,191,184,158, 81,191, 49, 54,135, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62,222,187,123,188,
+206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, 88, 62,181, 62,
+ 47,143, 73, 63,144,162, 59,188, 0, 0, 96,179,191, 15,188,190,128, 75, 53, 62,217,125, 81, 63, 0, 0, 96,178, 67,108,117,194,
185,204,216, 65,104,156, 5,194,212,247,159,192,235, 62,114, 66, 61,254,213,193,157,225, 3, 66, 55, 8,160, 64, 68,239,209, 62,
51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,
-166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,240,221,229, 62,
-208,249,224,190, 48,180, 81,191,184,158, 81,191,229,161,127, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 18,247,109,188,
-206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65,144,160, 15, 64,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,160, 15, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,144,160, 15, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63,
- 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,163,211, 2, 59,
+166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,200, 42,243, 62,
+208,249,224,190, 48,180, 81,191,184,158, 81,191, 49, 54,135, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62,222,187,123,188,
+206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65,124,197, 7, 64,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,197, 7, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,124,197, 7, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63,
+ 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,149, 87,247, 58,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 1, 0, 0, 32, 21,154, 26,
- 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 64, 25,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 1, 0, 0, 64,169,128, 29,
+ 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 96,173,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0,
- 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 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, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255,
- 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 9, 1, 28,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 22,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,224, 23,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 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, 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,160,170,128, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0,172,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 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,151, 4, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -798,8 +810,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 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, 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,224, 23,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 22,154, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 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,172,128, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,170,128, 29, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0,
0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,
121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0,
@@ -808,71 +820,71 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, 64, 25,154, 26, 1, 0, 0, 0,172, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 21,154, 26, 1, 0, 0, 0,128, 22,154, 26, 1, 0, 0, 0,224, 23,154, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 96,173,128, 29, 1, 0, 0, 0,173, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,169,128, 29, 1, 0, 0, 0,160,170,128, 29, 1, 0, 0, 0, 0,172,128, 29,
1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 64, 26,154, 26, 1, 0, 0, 0,194, 0, 0, 0,
- 1, 0, 0, 0, 96, 54,154, 26, 1, 0, 0, 0,208, 0,154, 26, 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0,176,166,224, 25,
- 1, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-155, 2, 0, 0,121, 0, 0, 0,123, 1, 0, 0, 2, 2,156, 2, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,247, 81, 3,
- 1, 0, 0, 0,160, 32,154, 26, 1, 0, 0, 0, 96, 53,154, 26, 1, 0, 0, 0, 32, 27,154, 26, 1, 0, 0, 0, 64, 31,154, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,130,138, 26, 1, 0, 0, 0,208, 79,229, 28,
- 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 27,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 28,154, 26,
+ 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96,174,128, 29, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 48,159,111, 27, 1, 0, 0, 0,144,150,128, 29, 1, 0, 0, 0,144,239,129, 29, 1, 0, 0, 0,128, 65,129, 29,
+ 1, 0, 0, 0,208, 40,108, 27, 1, 0, 0, 0,144, 35,245, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+155, 2, 0, 0,129, 0, 0, 0,147, 1, 0, 0, 2, 2,156, 2, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,183,110, 27, 1, 0, 0, 0, 48,158,111, 27, 1, 0, 0, 0, 64,175,128, 29, 1, 0, 0, 0, 96,179,128, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,175,128, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160,176,128, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 83, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0, 39, 68, 0, 0, 0, 0, 0, 0,208, 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,155, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68,
0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
10, 0,156, 2, 26, 0,156, 2, 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,155, 2, 0, 0,121, 0, 0, 0,146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,156, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,249, 81, 3,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0,129, 0, 0, 0,154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,156, 2, 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, 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,128, 28,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 29,154, 26,
- 1, 0, 0, 0, 32, 27,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 72, 67, 0, 0, 87,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,232, 0, 0, 0, 0, 0, 0, 0,
-199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,232, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,176,128, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,178,128, 29,
+ 1, 0, 0, 0, 64,175,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 72, 67, 0, 0,103,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,
+199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,248, 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, 10, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4,
- 6, 0,217, 0,233, 0,200, 0,215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,147, 0, 0, 0,123, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,217, 0,233, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,250, 81, 3,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 6, 0,217, 0,249, 0,200, 0,231, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0,155, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,217, 0,249, 0, 0, 0, 2, 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, 68, 65, 84, 65, 40, 1, 0, 0,224, 29,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 31,154, 26,
- 1, 0, 0, 0,128, 28,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,178,128, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96,179,128, 29,
+ 1, 0, 0, 0,160,176,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0,155, 2, 0, 0,147, 0, 0, 0,123, 1, 0, 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, 48,251, 81, 3,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 31,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,224, 29,154, 26, 1, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0,
- 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,232, 0, 0, 0, 18, 0, 0, 0,
-194, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,194, 1, 0, 0, 18, 0, 0, 0,232, 0, 0, 0,111, 18,131, 58,
+ 0, 0, 0, 0,155, 2, 0, 0,155, 2, 0, 0,155, 0, 0, 0,147, 1, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,179,128, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,178,128, 29, 1, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0,
+ 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,
+194, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,194, 1, 0, 0, 18, 0, 0, 0,248, 0, 0, 0,111, 18,131, 58,
111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
- 0, 0,195, 1,233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,217, 0, 0, 0,155, 2, 0, 0,147, 0, 0, 0,123, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,195, 1,233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,248, 81, 3,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,195, 1,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,217, 0, 0, 0,155, 2, 0, 0,155, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,195, 1,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,248, 0, 0, 0,160, 32,154, 26, 1, 0, 0, 0,161, 0, 0, 0, 1, 0, 0, 0, 80, 38,154, 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, 68, 65, 84, 65,248, 0, 0, 0, 0,183,110, 27, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,128, 24,131, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 33,154, 26, 1, 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, 68, 65, 84, 65, 32, 0, 0, 0,208, 33,154, 26,
- 1, 0, 0, 0, 20, 1, 0, 0, 1, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 34,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,144, 35,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,184,110, 27, 1, 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, 68, 65, 84, 65, 32, 0, 0, 0, 48,184,110, 27,
+ 1, 0, 0, 0, 21, 1, 0, 0, 1, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 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,144,184,110, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 32, 23,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 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,159, 3, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -881,8 +893,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 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, 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,144, 35,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,240, 36,154, 26, 1, 0, 0, 0, 48, 34,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 23,131, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,208,145,111, 27, 1, 0, 0, 0,144,184,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0,172, 0, 0, 0,189, 0, 0, 0, 18, 0, 0, 0,
163, 3, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 18, 0, 0, 0,
163, 3, 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, 64, 10, 0, 0, 0,
@@ -891,8 +903,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,240, 36,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 35,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,145,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 23,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0,
0, 0,128, 67, 0, 0,168,191, 0, 0, 20, 64, 0, 0,169,191, 0,128, 20, 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,160, 3, 0, 0, 0, 0, 0, 0,
164, 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,
@@ -901,14 +913,14 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3,164, 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, 68, 65, 84, 65,168, 0, 0, 0, 80, 38,154, 26, 1, 0, 0, 0,167, 0, 0, 0,
- 1, 0, 0, 0, 64, 49,154, 26, 1, 0, 0, 0,160, 32,154, 26, 1, 0, 0, 0, 48, 34,154, 26, 1, 0, 0, 0,240, 36,154, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0,128, 24,131, 29, 1, 0, 0, 0,168, 0, 0, 0,
+ 1, 0, 0, 0, 16,154,111, 27, 1, 0, 0, 0, 0,183,110, 27, 1, 0, 0, 0,144,184,110, 27, 1, 0, 0, 0,208,145,111, 27,
1, 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,100, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 39,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,144, 40,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,147,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,144,148,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 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,167, 2, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -917,8 +929,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 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, 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,144, 40,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,240, 41,154, 26, 1, 0, 0, 0, 48, 39,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,148,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,240,149,111, 27, 1, 0, 0, 0, 48,147,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
43, 3, 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, 64, 10, 0, 0, 0,
@@ -927,8 +939,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,240, 41,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 80, 43,154, 26, 1, 0, 0, 0,144, 40,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,149,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 80,151,111, 27, 1, 0, 0, 0,144,148,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
119, 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, 64, 10, 0, 0, 0,
@@ -937,8 +949,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80, 43,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,176, 44,154, 26, 1, 0, 0, 0,240, 41,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,151,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,176,152,111, 27, 1, 0, 0, 0,240,149,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,
121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,
121, 2, 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, 64, 10, 0, 0, 0,
@@ -947,8 +959,8 @@ char datatoc_B_blend[]= {
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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176, 44,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 43,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,152,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,151,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -957,7 +969,7 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 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, 16, 46,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 16, 46,154, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 0, 0, 0, 0, 48,124,131, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,124,131, 27, 1, 0, 0, 0,157, 0, 0, 0,
1, 0, 0, 0,226,225,191, 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,128, 0, 0, 0,128,226,215,163,188,
0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
@@ -981,18 +993,21 @@ 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,
- 32, 1, 0, 0, 64, 49,154, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 96, 53,154, 26, 1, 0, 0, 0, 80, 38,154, 26,
- 1, 0, 0, 0, 48, 39,154, 26, 1, 0, 0, 0,176, 44,154, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 32, 1, 0, 0, 16,154,111, 27, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 48,158,111, 27, 1, 0, 0, 0,128, 24,131, 29,
+ 1, 0, 0, 0, 48,147,111, 27, 1, 0, 0, 0,176,152,111, 27, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 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, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8,
0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 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, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0,
1, 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, 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,160, 50,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 52,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,155,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,156,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 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,
151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63,
@@ -1001,8 +1016,8 @@ char datatoc_B_blend[]= {
126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 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, 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, 52,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 50,154, 26, 1, 0, 0, 0, 0, 0, 64,192,
+ 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,208,156,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,155,111, 27, 1, 0, 0, 0, 0, 0, 64,192,
0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61,
@@ -1011,60 +1026,60 @@ char datatoc_B_blend[]= {
248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, 96, 53,154, 26,
- 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 49,154, 26, 1, 0, 0, 0,160, 50,154, 26,
- 1, 0, 0, 0, 0, 52,154, 26, 1, 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, 68, 65, 84, 65,200, 0, 0, 0, 48,158,111, 27,
+ 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,154,111, 27, 1, 0, 0, 0,112,155,111, 27,
+ 1, 0, 0, 0,208,156,111, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96, 54,154, 26,
- 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224, 87,154, 26, 1, 0, 0, 0, 64, 26,154, 26, 1, 0, 0, 0,176,166,224, 25,
- 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0,125, 1, 0, 0, 38, 4, 0, 0, 12, 12,156, 2,170, 2, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 80, 29, 82, 3, 1, 0, 0, 0, 96, 59,154, 26, 1, 0, 0, 0,224, 86,154, 26, 1, 0, 0, 0, 64, 55,154, 26,
- 1, 0, 0, 0, 0, 58,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 64,230, 28,
- 1, 0, 0, 0,240, 36, 38, 26, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 55,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,160, 56,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 68, 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, 48,159,111, 27,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,189,111, 27, 1, 0, 0, 0, 96,174,128, 29, 1, 0, 0, 0,128, 65,129, 29,
+ 1, 0, 0, 0,112,176,129, 29, 1, 0, 0, 0,160, 78,129, 29, 1, 0, 0, 0,208, 40,108, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0,149, 1, 0, 0, 99, 4, 0, 0, 12, 12,156, 2,207, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,164,111, 27, 1, 0, 0, 0, 32,188,111, 27, 1, 0, 0, 0, 16,160,111, 27,
+ 1, 0, 0, 0,208,162,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,160,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,112,161,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0, 39, 68, 0, 0, 0, 0, 0, 0,208, 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,155, 2, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
2, 0, 3, 3, 4, 0, 12, 4, 10, 0,156, 2, 26, 0,156, 2, 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,155, 2, 0, 0,125, 1, 0, 0,150, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0,149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 16, 31, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 56,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 58,154, 26, 1, 0, 0, 0, 64, 55,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0,128, 31,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,161,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,208,162,111, 27, 1, 0, 0, 0, 16,160,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0,192, 40,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,
-143, 2, 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, 8, 0, 0, 0,
- 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0,144, 2,200, 0,126, 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,199, 0, 0, 0,151, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,144, 2, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,240, 31, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 58,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 56,154, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194,
- 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0,128, 31,196, 0, 0, 0, 0,195, 1, 0, 0,212, 1, 0, 0, 18, 0, 0, 0,
-143, 2, 0, 0, 0, 0, 0, 0,194, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 1, 0, 0, 18, 0, 0, 0,
-143, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0,
- 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,212, 1,144, 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,200, 0, 0, 0,155, 2, 0, 0,151, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 1,144, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48, 30, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 96, 59,154, 26, 1, 0, 0, 0, 21, 1, 0, 0,
- 1, 0, 0, 0, 32, 66,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+180, 2, 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, 8, 0, 0, 0,
+ 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0,181, 2,200, 0,163, 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,199, 0, 0, 0,175, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,181, 2, 0, 0, 2, 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, 68, 65, 84, 65, 40, 1, 0, 0,208,162,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,161,111, 27, 1, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194,
+ 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0,192, 40,196, 0, 0, 0, 0,195, 1, 0, 0,212, 1, 0, 0, 18, 0, 0, 0,
+180, 2, 0, 0, 0, 0, 0, 0,194, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 1, 0, 0, 18, 0, 0, 0,
+180, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0,
+ 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,212, 1,181, 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,200, 0, 0, 0,155, 2, 0, 0,175, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 1,181, 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, 68, 65, 84, 65, 8, 1, 0, 0, 48,164,111, 27, 1, 0, 0, 0, 22, 1, 0, 0,
+ 1, 0, 0, 0,240,170,111, 27, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 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, 66, 25, 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, 48, 66,136, 27,
1, 0, 0, 0, 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, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 60,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 62,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 78, 68, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,165,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,208,166,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 78, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 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,159, 3, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -1073,8 +1088,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 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, 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, 62,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 96, 63,154, 26, 1, 0, 0, 0,160, 60,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,166,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 48,168,111, 27, 1, 0, 0, 0,112,165,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,219,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,
199, 1, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,
199, 1, 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, 10, 0, 0, 0,
@@ -1083,8 +1098,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0,200, 1, 0, 0, 2, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96, 63,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,192, 64,154, 26, 1, 0, 0, 0, 0, 62,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,168,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,144,169,111, 27, 1, 0, 0, 0,208,166,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1093,8 +1108,8 @@ char datatoc_B_blend[]= {
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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192, 64,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 63,154, 26, 1, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,169,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,168,111, 27, 1, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192,
0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
199, 1, 0, 0, 18, 0, 0, 0,198, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,198, 2, 0, 0, 18, 0, 0, 0,
199, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0,
@@ -1103,18 +1118,18 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 2,200, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,248, 0, 0, 0, 32, 66,154, 26, 1, 0, 0, 0,161, 0, 0, 0,
- 1, 0, 0, 0,208, 71,154, 26, 1, 0, 0, 0, 96, 59,154, 26, 1, 0, 0, 0,160, 60,154, 26, 1, 0, 0, 0,192, 64,154, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,170,111, 27, 1, 0, 0, 0,162, 0, 0, 0,
+ 1, 0, 0, 0, 64,176,111, 27, 1, 0, 0, 0, 48,164,111, 27, 1, 0, 0, 0,112,165,111, 27, 1, 0, 0, 0,144,169,111, 27,
1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 67,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,185,110, 27, 1, 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, 68, 65, 84, 65,
- 32, 0, 0, 0, 80, 67,154, 26, 1, 0, 0, 0, 20, 1, 0, 0, 1, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 67,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 69,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 32, 0, 0, 0,240,185,110, 27, 1, 0, 0, 0, 21, 1, 0, 0, 1, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 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, 32,172,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,173,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 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,
159, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63,
@@ -1123,8 +1138,8 @@ char datatoc_B_blend[]= {
110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 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, 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, 16, 69,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 70,154, 26, 1, 0, 0, 0,176, 67,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,173,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,174,111, 27, 1, 0, 0, 0, 32,172,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0,172, 0, 0, 0,
189, 0, 0, 0, 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
171, 0, 0, 0, 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
@@ -1133,8 +1148,8 @@ char datatoc_B_blend[]= {
18, 4, 0, 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, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,112, 70,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 69,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,174,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,173,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0,168,191, 0, 0, 20, 64, 0, 0,169,191, 0,128, 20, 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,
160, 3, 0, 0, 0, 0, 0, 0,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1143,14 +1158,14 @@ char datatoc_B_blend[]= {
18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3,164, 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, 68, 65, 84, 65,168, 0, 0, 0,208, 71,154, 26,
- 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0,192, 82,154, 26, 1, 0, 0, 0, 32, 66,154, 26, 1, 0, 0, 0,176, 67,154, 26,
- 1, 0, 0, 0,112, 70,154, 26, 1, 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, 68, 65, 84, 65,168, 0, 0, 0, 64,176,111, 27,
+ 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 0,184,111, 27, 1, 0, 0, 0,240,170,111, 27, 1, 0, 0, 0, 32,172,111, 27,
+ 1, 0, 0, 0,224,174,111, 27, 1, 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,100, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 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,176, 72,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 74,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,177,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,178,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 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,
167, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63,
@@ -1159,8 +1174,8 @@ char datatoc_B_blend[]= {
110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 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, 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, 16, 74,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 75,154, 26, 1, 0, 0, 0,176, 72,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,178,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,179,111, 27, 1, 0, 0, 0, 32,177,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,
160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
@@ -1169,8 +1184,8 @@ char datatoc_B_blend[]= {
18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,112, 75,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208, 76,154, 26, 1, 0, 0, 0, 16, 74,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,179,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64,181,111, 27, 1, 0, 0, 0,128,178,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,
160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
@@ -1179,8 +1194,8 @@ char datatoc_B_blend[]= {
111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 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, 68, 65, 84, 65, 40, 1, 0, 0,208, 76,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 78,154, 26, 1, 0, 0, 0,112, 75,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,181,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160,182,111, 27, 1, 0, 0, 0,224,179,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,
180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
@@ -1189,8 +1204,8 @@ char datatoc_B_blend[]= {
18, 4, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 78,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 76,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,182,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,181,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1199,8 +1214,8 @@ char datatoc_B_blend[]= {
18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 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,144, 79,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,144, 79,154, 26,
- 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,226,225,191, 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, 48,128,131, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,128,131, 27,
+ 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,226,225,191, 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,128,
0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,
143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1224,17 +1239,20 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0,192, 82,154, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,224, 86,154, 26,
- 1, 0, 0, 0,208, 71,154, 26, 1, 0, 0, 0,176, 72,154, 26, 1, 0, 0, 0, 48, 78,154, 26, 1, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 0,184,111, 27, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 32,188,111, 27,
+ 1, 0, 0, 0, 64,176,111, 27, 1, 0, 0, 0, 32,177,111, 27, 1, 0, 0, 0,160,182,111, 27, 1, 0, 0, 0, 1, 0, 0, 0,
51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0,
1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 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, 0, 0,
7, 0, 10, 0, 0, 0, 0, 0, 1, 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, 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, 32, 84,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 85,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0, 96,185,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,186,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0,
0, 0,208, 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,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68,
@@ -1244,7 +1262,7 @@ char datatoc_B_blend[]= {
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, 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,128, 85,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 84,154, 26,
+ 40, 1, 0, 0,192,186,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,185,111, 27,
1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0,
0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72,
@@ -1254,54 +1272,54 @@ 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, 68, 65, 84, 65,
-200, 0, 0, 0,224, 86,154, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 82,154, 26,
- 1, 0, 0, 0, 32, 84,154, 26, 1, 0, 0, 0,128, 85,154, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+200, 0, 0, 0, 32,188,111, 27, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,111, 27,
+ 1, 0, 0, 0, 96,185,111, 27, 1, 0, 0, 0,192,186,111, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 68, 65, 84, 65,
-160, 0, 0, 0,224, 87,154, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 54,154, 26,
- 1, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0, 0, 45, 91, 3,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 69, 3, 0, 0, 38, 4, 0, 0, 1, 1, 80, 1,
-226, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,238, 81, 3, 1, 0, 0, 0,176, 94,154, 26, 1, 0, 0, 0, 0,104,154, 26,
- 1, 0, 0, 0,192, 88,154, 26, 1, 0, 0, 0, 32, 90,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48,187,199, 25, 1, 0, 0, 0, 80, 42,229, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 88,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 90,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+160, 0, 0, 0, 32,189,111, 27, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,159,111, 27,
+ 1, 0, 0, 0, 32,106,130, 29, 1, 0, 0, 0,160, 56,130, 29, 1, 0, 0, 0, 0, 61,131, 29, 1, 0, 0, 0, 0,160,129, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0, 99, 4, 0, 0, 1, 1, 80, 1,
+239, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,192,110, 27, 1, 0, 0, 0, 96,191,111, 27,
+ 1, 0, 0, 0, 0,190,111, 27, 1, 0, 0, 0,176, 18,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,190,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 18,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, 0, 0,208, 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,
131, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63,
0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,132, 1, 24, 0,132, 1, 24, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 69, 3, 0, 0,
- 69, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,246, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0,
+117, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 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, 32, 90,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 88,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 18,131, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 69, 3, 0, 0,
- 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,226, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,239, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0,
+ 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,239, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 91,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,128, 91,154, 26,
- 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 24,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 27, 28, 83, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,133, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,240,133, 27,
+ 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 24,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+120,160, 71, 64, 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,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, 3,201,194, 63,247,255,133,191,244,250, 39,191, 8,165, 39,191,143,164,206, 63,
- 43,238,131, 63,180,164, 28, 63,149, 84, 28, 63,179,153,196,188, 6, 4, 61, 64, 8,108,228,190, 50,247,227,190, 82, 21, 64,191,
- 37, 12,159,191,216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 23,234,167, 62,160,206,159,187, 0, 0,168,180,117, 11,197,189,
-112, 0,194, 61, 52,249,138, 62, 0, 0,174, 51,211,120, 21,194,145, 5, 2, 66, 6,136,213,193,193,214,159,192,219, 38, 19, 66,
-197,173,255,193,154,101,210, 65,173, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,
+151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 3,201,194, 63, 30,108,125,191,244,250, 39,191, 8,165, 39,191,143,164,206, 63,
+ 41,130,121, 63,180,164, 28, 63,149, 84, 28, 63,179,153,196,188, 10,188, 50, 64, 8,108,228,190, 50,247,227,190, 82, 21, 64,191,
+118,101,150,191,216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 23,234,167, 62,160,206,159,187, 0, 0,168,180, 27, 97,208,189,
+ 70, 41,205, 61,173,247,146, 62, 0, 0,166, 51,211,120, 21,194,145, 5, 2, 66, 9,136,213,193,193,214,159,192,219, 38, 19, 66,
+197,173,255,193,157,101,210, 65,173, 40,160, 64,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, 3,201,194, 63,247,255,133,191,244,250, 39,191, 8,165, 39,191,143,164,206, 63,
- 43,238,131, 63,180,164, 28, 63,149, 84, 28, 63,179,153,196,188, 6, 4, 61, 64, 8,108,228,190, 50,247,227,190, 82, 21, 64,191,
- 37, 12,159,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+254,221,192,190,152, 9, 52,193, 0, 0,128, 63, 3,201,194, 63, 30,108,125,191,244,250, 39,191, 8,165, 39,191,143,164,206, 63,
+ 41,130,121, 63,180,164, 28, 63,149, 84, 28, 63,179,153,196,188, 10,188, 50, 64, 8,108,228,190, 50,247,227,190, 82, 21, 64,191,
+118,101,150,191,216, 49, 49, 65,152, 9, 52, 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,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 3, 35,171,190, 0, 0, 32, 65,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,210, 47, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0,
@@ -1310,18 +1328,21 @@ 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 7, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,176, 94,154, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,208, 98,154, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 48,192,110, 27, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 80,196,110, 27,
1, 0, 0, 0, 0, 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,
51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0,
1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 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, 0, 0,
7, 0, 10, 0, 0, 0, 0, 0, 1, 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, 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, 16, 96,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 97,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0,144,193,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240,194,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 0,
0, 0,208, 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,131, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67,
@@ -1331,7 +1352,7 @@ char datatoc_B_blend[]= {
0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0,112, 97,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 96,154, 26,
+ 40, 1, 0, 0,240,194,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,193,110, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,185, 67, 0, 0, 62,195,
0, 0, 0, 0,115, 1, 0, 0,132, 1, 0, 0, 18, 0, 0, 0,207, 0, 0, 0, 0, 0, 0, 0,114, 1, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 0,114, 1, 0, 0, 18, 0, 0, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1341,26 +1362,26 @@ 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, 68, 65, 84, 65,
- 40, 1, 0, 0,208, 98,154, 26, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 0,104,154, 26, 1, 0, 0, 0,176, 94,154, 26,
- 1, 0, 0, 0, 16, 96,154, 26, 1, 0, 0, 0,112, 97,154, 26, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0, 80,196,110, 27, 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, 96,191,111, 27, 1, 0, 0, 0, 48,192,110, 27,
+ 1, 0, 0, 0,144,193,110, 27, 1, 0, 0, 0,240,194,110, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 6, 94, 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, 80,186,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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, 68, 65, 84, 65,
- 16, 0, 0, 0,192, 6, 94, 3, 1, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 48,100,154, 26,
- 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 48,100,154, 26, 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 20, 0, 0, 0,
- 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0,144,137,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 0,148,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,240,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 0,146,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,160, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 64,133,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0,112,132,157, 26, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,101,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,160,102,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67, 0, 0, 0, 0,
+ 16, 0, 0, 0, 80,186,110, 27, 1, 0, 0, 0,219, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 16, 20,131, 29,
+ 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 16, 20,131, 29, 1, 0, 0, 0,218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 20, 0, 0, 0,
+ 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 48, 58,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 74,132, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 48,171,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86,132, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 64,198,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80,132, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 48, 54,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 32,163,176, 21, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,197,110, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 16,199,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 55, 0, 0, 67, 67, 0, 0, 0, 0, 0, 0,208, 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,194, 0, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -1369,8 +1390,8 @@ char datatoc_B_blend[]= {
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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,102,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,101,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0,192,116,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,199,110, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,197,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0,192,116,196,
0, 0, 0, 0, 0, 0, 0, 0,205, 85,150, 67,223,204, 35,196, 26, 85,207,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
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, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0,
@@ -1379,8 +1400,8 @@ char datatoc_B_blend[]= {
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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0,104,154, 26, 1, 0, 0, 0,162, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 98,154, 26, 1, 0, 0, 0, 64,101,154, 26, 1, 0, 0, 0,160,102,154, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 96,191,111, 27, 1, 0, 0, 0,163, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,196,110, 27, 1, 0, 0, 0,176,197,110, 27, 1, 0, 0, 0, 16,199,110, 27,
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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1388,142 +1409,142 @@ 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, 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, 83, 78, 0, 0,208, 0, 0, 0,192,105,154, 26, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, 96, 4,155, 26,
- 1, 0, 0, 0,160,178,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,
+ 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,240,200,110, 27, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32,158,131, 29,
+ 1, 0, 0, 0, 48, 90,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,
109,112,111,115,105,116,105,110,103, 0,103, 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,208,106,154, 26, 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0, 16,112,154, 26, 1, 0, 0, 0,240,119,154, 26,
- 1, 0, 0, 0, 80,120,154, 26, 1, 0, 0, 0, 96,229,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48, 66, 25, 4, 1, 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,109, 60, 48, 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, 32, 0, 0, 0,208,106,154, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0, 48,107,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,107,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,107,154, 26,
- 1, 0, 0, 0,208,106,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0,144,107,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240,107,154, 26, 1, 0, 0, 0, 48,107,154, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,107,154, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0,144,107,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0,240,107,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 4,
- 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16,109,154, 26,
- 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0, 16,109,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0,176,108,154, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,109,154, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0, 16,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,128, 7, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 39, 4,
- 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,110,154, 26,
- 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 1, 0, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240,110,154, 26, 1, 0, 0, 0, 48,110,154, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,156, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,110,154, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3,156, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0,240,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0, 16,112,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,112,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48,107,154, 26, 1, 0, 0, 0,144,107,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0,112,112,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,112,154, 26, 1, 0, 0, 0, 16,112,154, 26,
- 1, 0, 0, 0, 48,107,154, 26, 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0,208,112,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,113,154, 26, 1, 0, 0, 0,112,112,154, 26,
- 1, 0, 0, 0,144,107,154, 26, 1, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0, 48,113,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,113,154, 26, 1, 0, 0, 0,208,112,154, 26,
- 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0,144,113,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,113,154, 26, 1, 0, 0, 0, 48,113,154, 26,
- 1, 0, 0, 0,240,107,154, 26, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0,240,113,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,114,154, 26, 1, 0, 0, 0,144,113,154, 26,
- 1, 0, 0, 0, 16,109,154, 26, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0, 80,114,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,114,154, 26, 1, 0, 0, 0,240,113,154, 26,
- 1, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0,176,114,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,115,154, 26, 1, 0, 0, 0, 80,114,154, 26,
- 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0, 16,115,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,115,154, 26, 1, 0, 0, 0,176,114,154, 26,
- 1, 0, 0, 0, 16,109,154, 26, 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0,112,115,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,115,154, 26, 1, 0, 0, 0, 16,115,154, 26,
- 1, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0,208,115,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,116,154, 26, 1, 0, 0, 0,112,115,154, 26,
- 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0, 48,116,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,116,154, 26, 1, 0, 0, 0,208,115,154, 26,
- 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0,144,116,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,116,154, 26, 1, 0, 0, 0, 48,116,154, 26,
- 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0,240,116,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,117,154, 26, 1, 0, 0, 0,144,116,154, 26,
- 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0,240,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0, 80,117,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,117,154, 26, 1, 0, 0, 0,240,116,154, 26,
- 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0,240,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0,176,117,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,118,154, 26, 1, 0, 0, 0, 80,117,154, 26,
- 1, 0, 0, 0,208,106,154, 26, 1, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0, 16,118,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,118,154, 26, 1, 0, 0, 0,176,117,154, 26,
- 1, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0,112,118,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,118,154, 26, 1, 0, 0, 0, 16,118,154, 26,
- 1, 0, 0, 0,240,107,154, 26, 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0,208,118,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,119,154, 26, 1, 0, 0, 0,112,118,154, 26,
- 1, 0, 0, 0, 16,109,154, 26, 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0, 48,119,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,119,154, 26, 1, 0, 0, 0,208,118,154, 26,
- 1, 0, 0, 0,240,110,154, 26, 1, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0,144,119,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,119,154, 26, 1, 0, 0, 0, 48,119,154, 26,
- 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 0, 0, 0,240,119,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,119,154, 26,
- 1, 0, 0, 0,208,106,154, 26, 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
-160, 0, 0, 0, 80,120,154, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,123,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0, 48,107,154, 26, 1, 0, 0, 0,144,107,154, 26, 1, 0, 0, 0,176,108,154, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0, 66, 4, 0, 0, 7, 7,129, 7,
- 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16, 15, 82, 3, 1, 0, 0, 0,224, 3,155, 26, 1, 0, 0, 0,224, 3,155, 26,
- 1, 0, 0, 0, 48,121,154, 26, 1, 0, 0, 0,144,122,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 80, 67,229, 28, 1, 0, 0, 0, 32,178,228, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,121,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,122,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,202,110, 27, 1, 0, 0, 0,224,206,110, 27, 1, 0, 0, 0, 64,207,110, 27, 1, 0, 0, 0, 32,215,110, 27,
+ 1, 0, 0, 0,128,215,110, 27, 1, 0, 0, 0, 96, 57,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 0, 0, 0, 0,202,110, 27, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 96,202,110, 27, 1, 0, 0, 0, 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, 32, 0, 0, 0, 96,202,110, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,202,110, 27,
+ 1, 0, 0, 0, 0,202,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,192,202,110, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,203,110, 27, 1, 0, 0, 0, 96,202,110, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32,203,110, 27,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,203,110, 27, 1, 0, 0, 0,192,202,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128,203,110, 27, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,224,203,110, 27, 1, 0, 0, 0, 32,203,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 4,
+ 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,203,110, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64,204,110, 27,
+ 1, 0, 0, 0,128,203,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, 1, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 64,204,110, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,204,110, 27, 1, 0, 0, 0,224,203,110, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,100, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160,204,110, 27,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,205,110, 27, 1, 0, 0, 0, 64,204,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 7,100, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0,205,110, 27, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 96,205,110, 27, 1, 0, 0, 0,160,204,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,100, 4,
+ 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96,205,110, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,205,110, 27,
+ 1, 0, 0, 0, 0,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180, 1, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,192,205,110, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,206,110, 27, 1, 0, 0, 0, 96,205,110, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32,206,110, 27,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,206,110, 27, 1, 0, 0, 0,192,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128,206,110, 27, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,224,206,110, 27, 1, 0, 0, 0, 32,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,206,110, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 64,207,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,207,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,202,110, 27, 1, 0, 0, 0,192,202,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,160,207,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,208,110, 27, 1, 0, 0, 0, 64,207,110, 27,
+ 1, 0, 0, 0, 96,202,110, 27, 1, 0, 0, 0,128,203,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 0,208,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,208,110, 27, 1, 0, 0, 0,160,207,110, 27,
+ 1, 0, 0, 0,192,202,110, 27, 1, 0, 0, 0,224,203,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 96,208,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,208,110, 27, 1, 0, 0, 0, 0,208,110, 27,
+ 1, 0, 0, 0,128,203,110, 27, 1, 0, 0, 0,224,203,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,192,208,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,209,110, 27, 1, 0, 0, 0, 96,208,110, 27,
+ 1, 0, 0, 0, 32,203,110, 27, 1, 0, 0, 0,160,204,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 32,209,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,209,110, 27, 1, 0, 0, 0,192,208,110, 27,
+ 1, 0, 0, 0, 64,204,110, 27, 1, 0, 0, 0,160,204,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,128,209,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,209,110, 27, 1, 0, 0, 0, 32,209,110, 27,
+ 1, 0, 0, 0,224,203,110, 27, 1, 0, 0, 0, 0,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,224,209,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,210,110, 27, 1, 0, 0, 0,128,209,110, 27,
+ 1, 0, 0, 0,128,203,110, 27, 1, 0, 0, 0, 0,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 64,210,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,210,110, 27, 1, 0, 0, 0,224,209,110, 27,
+ 1, 0, 0, 0, 64,204,110, 27, 1, 0, 0, 0, 0,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,160,210,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,211,110, 27, 1, 0, 0, 0, 64,210,110, 27,
+ 1, 0, 0, 0,224,203,110, 27, 1, 0, 0, 0,160,204,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 0,211,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,211,110, 27, 1, 0, 0, 0,160,210,110, 27,
+ 1, 0, 0, 0,128,203,110, 27, 1, 0, 0, 0, 96,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 96,211,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,211,110, 27, 1, 0, 0, 0, 0,211,110, 27,
+ 1, 0, 0, 0, 0,205,110, 27, 1, 0, 0, 0,192,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,192,211,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,212,110, 27, 1, 0, 0, 0, 96,211,110, 27,
+ 1, 0, 0, 0, 96,205,110, 27, 1, 0, 0, 0,192,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 32,212,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,212,110, 27, 1, 0, 0, 0,192,211,110, 27,
+ 1, 0, 0, 0, 96,205,110, 27, 1, 0, 0, 0, 32,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,128,212,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,212,110, 27, 1, 0, 0, 0, 32,212,110, 27,
+ 1, 0, 0, 0,192,205,110, 27, 1, 0, 0, 0, 32,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,224,212,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,213,110, 27, 1, 0, 0, 0,128,212,110, 27,
+ 1, 0, 0, 0, 0,202,110, 27, 1, 0, 0, 0,128,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 64,213,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,213,110, 27, 1, 0, 0, 0,224,212,110, 27,
+ 1, 0, 0, 0,128,206,110, 27, 1, 0, 0, 0,224,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,160,213,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,214,110, 27, 1, 0, 0, 0, 64,213,110, 27,
+ 1, 0, 0, 0, 32,203,110, 27, 1, 0, 0, 0,224,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 0,214,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,214,110, 27, 1, 0, 0, 0,160,213,110, 27,
+ 1, 0, 0, 0, 64,204,110, 27, 1, 0, 0, 0,224,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 96,214,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,214,110, 27, 1, 0, 0, 0, 0,214,110, 27,
+ 1, 0, 0, 0, 32,206,110, 27, 1, 0, 0, 0,128,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,192,214,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,215,110, 27, 1, 0, 0, 0, 96,214,110, 27,
+ 1, 0, 0, 0,192,205,110, 27, 1, 0, 0, 0,224,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 32,215,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,214,110, 27,
+ 1, 0, 0, 0, 0,202,110, 27, 1, 0, 0, 0, 96,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+160, 0, 0, 0,128,215,110, 27, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,219,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128,203,110, 27, 1, 0, 0, 0, 96,202,110, 27, 1, 0, 0, 0,192,202,110, 27, 1, 0, 0, 0,224,203,110, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, 7, 7,129, 7,
+ 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,142,111, 27, 1, 0, 0, 0, 80,142,111, 27,
+ 1, 0, 0, 0, 96,216,110, 27, 1, 0, 0, 0,192,217,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,216,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,217,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 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,
128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63,
0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 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,128, 7, 0, 0, 40, 4, 0, 0,
- 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 16, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,
+126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,122,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,121,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192,217,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,216,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,
-129, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
-111, 7, 0, 0, 18, 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, 63,
- 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 3, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 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, 4, 0, 0,
- 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240, 15, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,240,123,154, 26,
- 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,135,154, 26, 1, 0, 0, 0, 80,120,154, 26, 1, 0, 0, 0,176,111,154, 26,
- 1, 0, 0, 0, 16,109,154, 26, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0,240,107,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 15, 15,100, 1, 92, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 16,236, 81, 3, 1, 0, 0, 0,144,127,154, 26, 1, 0, 0, 0,128,134,154, 26, 1, 0, 0, 0,208,124,154, 26,
- 1, 0, 0, 0, 48,126,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217,199, 25,
- 1, 0, 0, 0,208, 96,228, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,124,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 48,126,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 94, 68, 0, 0, 0, 0,
+129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+111, 7, 0, 0, 18, 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,
+ 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0,
+ 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, 7, 0, 0,127, 4, 0, 0,
+128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 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, 68, 65, 84, 65,160, 0, 0, 0, 32,219,110, 27,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,227,110, 27, 1, 0, 0, 0,128,215,110, 27, 1, 0, 0, 0,224,206,110, 27,
+ 1, 0, 0, 0, 64,204,110, 27, 1, 0, 0, 0,160,204,110, 27, 1, 0, 0, 0, 32,203,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 15, 15,100, 1,100, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,222,110, 27, 1, 0, 0, 0,128,226,110, 27, 1, 0, 0, 0, 0,220,110, 27,
+ 1, 0, 0, 0, 96,221,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,220,110, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 96,221,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,108, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0,221, 67, 0,128, 71, 68, 0, 0, 0, 0, 0, 0,208, 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, 99, 1, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
2, 0, 3, 3, 4, 0, 12, 4, 10, 0,100, 1, 26, 0,100, 1, 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, 29, 6, 0, 0,128, 7, 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,100, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,208,237, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,126,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,124,154, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,221,110, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,110, 27, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0,
0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 99, 1, 0, 0, 18, 0, 0, 0,
- 65, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0,
- 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,100, 1, 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, 29, 6, 0, 0,128, 7, 0, 0, 26, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,240,236, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,144,127,154, 26, 1, 0, 0, 0,172, 0, 0, 0,
- 1, 0, 0, 0,128,134,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 73, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0,
+ 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,100, 1, 74, 0, 0, 0, 0, 0, 0, 0, 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, 6, 0, 0,128, 7, 0, 0, 26, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,200, 0, 0, 0,192,222,110, 27, 1, 0, 0, 0,173, 0, 0, 0,
+ 1, 0, 0, 0,128,226,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,128,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,240,129,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,223,110, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 32,225,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 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, 87, 6, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -1532,8 +1553,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 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, 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,240,129,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,128,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,225,110, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,223,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1542,7 +1563,7 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,131,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 80,131,154, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 0, 0, 0, 0, 48,244,133, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,244,133, 27, 1, 0, 0, 0,157, 0, 0, 0,
1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 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,128, 0, 0, 0,128,226,215,163,188,
0, 0, 0,128, 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,
@@ -1566,167 +1587,170 @@ 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,
- 32, 1, 0, 0,128,134,154, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,127,154, 26,
- 1, 0, 0, 0,144,128,154, 26, 1, 0, 0, 0,240,129,154, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 32, 1, 0, 0,128,226,110, 27, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,222,110, 27,
+ 1, 0, 0, 0,192,223,110, 27, 1, 0, 0, 0, 32,225,110, 27, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 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, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0,
0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 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, 0, 0, 7, 0, 10, 0,159, 0, 0, 0,
1, 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, 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,224,135,154, 26,
- 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0,169,154, 26, 1, 0, 0, 0,240,123,154, 26, 1, 0, 0, 0, 16,109,154, 26,
- 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 93, 0, 0, 0, 38, 4, 0, 0, 4, 4,100, 1,202, 3, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,128, 11, 82, 3, 1, 0, 0, 0, 32,155,154, 26, 1, 0, 0, 0,160,167,154, 26, 1, 0, 0, 0,192,136,154, 26,
- 1, 0, 0, 0, 32,138,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,104,155, 25,
- 1, 0, 0, 0, 32,153,228, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,136,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 32,138,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 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, 68, 65, 84, 65,160, 0, 0, 0,224,227,110, 27,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208, 1,111, 27, 1, 0, 0, 0, 32,219,110, 27, 1, 0, 0, 0, 64,204,110, 27,
+ 1, 0, 0, 0, 0,205,110, 27, 1, 0, 0, 0,224,203,110, 27, 1, 0, 0, 0,160,204,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0,101, 0, 0, 0, 99, 4, 0, 0, 4, 4,100, 1,255, 3, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,247,110, 27, 1, 0, 0, 0,112, 0,111, 27, 1, 0, 0, 0,192,228,110, 27,
+ 1, 0, 0, 0, 32,230,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192,228,110, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 32,230,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,178, 67, 0, 0, 0, 0, 0, 0,248, 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, 99, 1, 0, 0, 0, 0, 0, 0,
30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
2, 0, 3, 3, 4, 0, 12, 4, 10, 0,100, 1, 31, 0,100, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 8, 4, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 69, 4, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48, 14, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,138,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,136,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,169, 67, 0, 0,102,196,
- 0, 0, 0, 0, 0, 0, 0, 0,255,127,169, 67,254, 63,102,196, 0, 0, 0, 0, 83, 1, 0, 0,100, 1, 0, 0, 18, 0, 0, 0,
-170, 3, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 18, 0, 0, 0,
-170, 3, 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, 64, 10, 0, 0, 0,
- 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,100, 1,171, 3, 83, 1,153, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,180,157, 25,
- 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 93, 0, 0, 0, 7, 4, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1,171, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 96, 12, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,139,154, 26,
- 1, 0, 0, 0,144,153,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128,139,154, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 16,141,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 13, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,230,110, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,228,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,169, 67, 0, 64,115,196,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,127,169, 67,254,127,115,196, 0, 0, 0, 0, 83, 1, 0, 0,100, 1, 0, 0, 18, 0, 0, 0,
+223, 3, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 18, 0, 0, 0,
+223, 3, 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, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,100, 1,224, 3, 83, 1,206, 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, 29, 6, 0, 0,128, 7, 0, 0,101, 0, 0, 0, 68, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1,224, 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,128,231,110, 27,
+ 1, 0, 0, 0,144,245,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,128,231,110, 27, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 16,233,110, 27, 1, 0, 0, 0, 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, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,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, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,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, 67,111,110,116,101,120,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,220,255, 82, 1, 36, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,220,255, 82, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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, 1, 0, 0, 16,141,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,142,154, 26, 1, 0, 0, 0,128,139,154, 26,
- 1, 0, 0, 0,176,121,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,
+ 88, 1, 0, 0, 16,233,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160,234,110, 27, 1, 0, 0, 0,128,231,110, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,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, 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,135,255, 82, 1, 61, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0,160,142,154, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 48,144,154, 26, 1, 0, 0, 0, 16,141,154, 26, 1, 0, 0, 0,176,131,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160,234,110, 27, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 48,236,110, 27, 1, 0, 0, 0, 16,233,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 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, 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, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,111,255, 82, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,111,255, 82, 1, 0, 0, 0, 0, 0, 0, 4, 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, 68, 65, 84, 65,
- 88, 1, 0, 0, 48,144,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,145,154, 26, 1, 0, 0, 0,160,142,154, 26,
- 1, 0, 0, 0,144,133,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,
+ 88, 1, 0, 0, 48,236,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192,237,110, 27, 1, 0, 0, 0,160,234,110, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,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, 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,165,254, 82, 1,178, 0, 0, 0, 0, 0,
- 0, 0, 2, 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,140,254, 82, 1,203, 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, 68, 65, 84, 65, 88, 1, 0, 0,192,145,154, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 80,147,154, 26, 1, 0, 0, 0, 48,144,154, 26, 1, 0, 0, 0,112,138,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192,237,110, 27, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 80,239,110, 27, 1, 0, 0, 0, 48,236,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,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, 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, 83,254, 82, 1, 58, 0, 20, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 58,254, 82, 1, 58, 0, 20, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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, 1, 0, 0, 80,147,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,148,154, 26, 1, 0, 0, 0,192,145,154, 26,
- 1, 0, 0, 0, 80,140,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104,
+ 88, 1, 0, 0, 80,239,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,240,110, 27, 1, 0, 0, 0,192,237,110, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,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, 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,213,253, 82, 1,102, 0, 0, 0, 0, 0,
- 0, 0, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,253, 82, 1,102, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,224,148,154, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0,112,150,154, 26, 1, 0, 0, 0, 80,147,154, 26, 1, 0, 0, 0, 48,145,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224,240,110, 27, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0,112,242,110, 27, 1, 0, 0, 0, 80,239,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,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, 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, 84,253, 82, 1,105, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 59,253, 82, 1,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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, 1, 0, 0,112,150,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,152,154, 26, 1, 0, 0, 0,224,148,154, 26,
- 1, 0, 0, 0, 0,151,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,
+ 88, 1, 0, 0,112,242,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0,244,110, 27, 1, 0, 0, 0,224,240,110, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,
114,102,111,114,109, 97,110, 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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,
114,102,111,114,109, 97,110, 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, 80,101,114,102,111,114,109, 97,110, 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, 60,253, 82, 1, 0, 0, 0, 0, 0, 0,
- 4, 0, 2, 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, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35,253, 82, 1, 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0,152,154, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0,144,153,154, 26, 1, 0, 0, 0,112,150,154, 26, 1, 0, 0, 0,224,152,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0,244,110, 27, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0,144,245,110, 27, 1, 0, 0, 0,112,242,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,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, 80,111,115,116, 32, 80,114,111, 99,101,115,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, 36,253, 82, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 11,253, 82, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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, 1, 0, 0,144,153,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,154, 26,
- 1, 0, 0, 0,192,154,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116,
+ 88, 1, 0, 0,144,245,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244,110, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,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, 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, 12,253, 82, 1, 0, 0, 20, 0, 0, 0,
- 4, 0, 3, 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,243,252, 82, 1, 0, 0, 20, 0, 0, 0,
+ 4, 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, 68, 65, 84, 65, 0, 1, 0, 0, 32,155,154, 26, 1, 0, 0, 0,162, 0, 0, 0,
- 1, 0, 0, 0,128,160,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 32,247,110, 27, 1, 0, 0, 0,163, 0, 0, 0,
+ 1, 0, 0, 0,128,252,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,176, 12,158, 25, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,156,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,157,154, 26,
+ 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,248,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,249,110, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0,
0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 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,227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67,
@@ -1736,8 +1760,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,228, 1, 27, 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, 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,192,157,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,159,154, 26,
- 1, 0, 0, 0, 96,156,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,249,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,251,110, 27,
+ 1, 0, 0, 0, 96,248,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1746,8 +1770,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,159,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,192,157,154, 26, 1, 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, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,251,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,192,249,110, 27, 1, 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, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,
227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65,
0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
@@ -1756,16 +1780,16 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 0, 0, 0,128,160,154, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,160,167,154, 26,
- 1, 0, 0, 0, 32,155,154, 26, 1, 0, 0, 0, 96,156,154, 26, 1, 0, 0, 0, 32,159,154, 26, 1, 0, 0, 0, 8, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,128,252,110, 27, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,112, 0,111, 27,
+ 1, 0, 0, 0, 32,247,110, 27, 1, 0, 0, 0, 96,248,110, 27, 1, 0, 0, 0, 32,251,110, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,161,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 16,163,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0,
+ 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,253,110, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 16,255,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 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, 19, 1, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -1774,8 +1798,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 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, 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, 16,163,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,161,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,255,110, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,253,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1784,7 +1808,7 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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,112,164,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,112,164,154, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 0, 0, 0, 0, 48,248,133, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,248,133, 27, 1, 0, 0, 0,157, 0, 0, 0,
1, 0, 0, 0,103,212,136, 64, 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,128, 0, 0, 0,128,226,215,163,188,
0, 0, 0,128, 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,
@@ -1808,168 +1832,171 @@ 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,
- 32, 1, 0, 0,160,167,154, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,160,154, 26,
- 1, 0, 0, 0,176,161,154, 26, 1, 0, 0, 0, 16,163,154, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 32, 1, 0, 0,112, 0,111, 27, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,252,110, 27,
+ 1, 0, 0, 0,176,253,110, 27, 1, 0, 0, 0, 16,255,110, 27, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 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, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0,
0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 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, 0, 0, 7, 0, 10, 0,159, 0, 0, 0,
1, 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, 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, 0,169,154, 26,
- 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,203,154, 26, 1, 0, 0, 0,224,135,154, 26, 1, 0, 0, 0, 80,111,154, 26,
- 1, 0, 0, 0,240,110,154, 26, 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 3, 0, 0, 27, 6, 0, 0, 0, 0, 0, 0,155, 1, 0, 0, 1, 1, 27, 3,156, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,176,238, 81, 3, 1, 0, 0, 0, 80,189,154, 26, 1, 0, 0, 0,224,202,154, 26, 1, 0, 0, 0,224,169,154, 26,
- 1, 0, 0, 0,192,184,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,101,199, 25,
- 1, 0, 0, 0, 96,109,199, 25, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,169,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 64,171,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 89, 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, 68, 65, 84, 65,160, 0, 0, 0,208, 1,111, 27,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 35,111, 27, 1, 0, 0, 0,224,227,110, 27, 1, 0, 0, 0,128,206,110, 27,
+ 1, 0, 0, 0, 32,206,110, 27, 1, 0, 0, 0,192,205,110, 27, 1, 0, 0, 0,224,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 3, 0, 0, 27, 6, 0, 0, 0, 0, 0, 0,179, 1, 0, 0, 1, 1, 27, 3,180, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 20,111, 27, 1, 0, 0, 0, 16, 34,111, 27, 1, 0, 0, 0,176, 2,111, 27,
+ 1, 0, 0, 0, 32, 19,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176, 2,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 16, 4,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0,192, 70, 68, 0, 0, 0, 0, 0, 0,208, 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, 26, 3, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 27, 3, 26, 0, 27, 3, 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, 1, 3, 0, 0, 27, 6, 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, 27, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,208,246, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,171,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,160,172,154, 26, 1, 0, 0, 0,224,169,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 4,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,112, 5,111, 27, 1, 0, 0, 0,176, 2,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
43, 3, 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, 64, 10, 0, 0, 0,
1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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, 1, 3, 0, 0, 1, 3, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,130, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 48,243, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 1, 3, 0, 0, 26, 0, 0, 0,179, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,154, 1, 0, 0, 5, 0, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,160,172,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0,174,154, 26, 1, 0, 0, 0, 64,171,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 5,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,208, 6,111, 27, 1, 0, 0, 0, 16, 4,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
119, 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, 64, 10, 0, 0, 0,
1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,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, 1, 3, 0, 0, 27, 6, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0,245, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,174,154, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,192,184,154, 26, 1, 0, 0, 0,160,172,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 6,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 32, 19,111, 27, 1, 0, 0, 0,112, 5,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,
129, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,
129, 1, 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, 64, 10, 0, 0, 0,
1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,130, 1,163, 0,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0, 27, 6, 0, 0, 26, 0, 0, 0,155, 1, 0, 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,112,240, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,175,154, 26,
- 1, 0, 0, 0,144,191,158, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 96,175,154, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0,240,176,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,241, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0, 27, 6, 0, 0, 26, 0, 0, 0,179, 1, 0, 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, 0, 0, 0, 0,
+ 0, 0, 0, 0, 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, 8,111, 27,
+ 1, 0, 0, 0,144, 17,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 48, 8,111, 27, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0,192, 9,111, 27, 1, 0, 0, 0, 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, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 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, 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, 62,254,163, 0,110, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 62,254,163, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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, 1, 0, 0,240,176,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,178,154, 26, 1, 0, 0, 0, 96,175,154, 26,
- 1, 0, 0, 0, 64,242, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,
+ 88, 1, 0, 0,192, 9,111, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80, 11,111, 27, 1, 0, 0, 0, 48, 8,111, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,
101,110, 99,105,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,
101,110, 99,105,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, 71,114,101, 97,115,101, 32, 80,101,110, 99,105,
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,236,253,163, 0, 58, 0, 0, 0, 0, 0,
- 0, 0, 6, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0,128,178,154, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 16,180,154, 26, 1, 0, 0, 0,240,176,154, 26, 1, 0, 0, 0,176,203,199, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 80, 11,111, 27, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0,224, 12,111, 27, 1, 0, 0, 0,192, 9,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,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, 86,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,153,252,163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,153,252,163, 0, 59, 1, 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, 68, 65, 84, 65,
- 88, 1, 0, 0, 16,180,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,181,154, 26, 1, 0, 0, 0,128,178,154, 26,
- 1, 0, 0, 0, 16,206,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
+ 88, 1, 0, 0,224, 12,111, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112, 14,111, 27, 1, 0, 0, 0, 80, 11,111, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
118,105,101,119, 95,100,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
118,105,101,119, 95,100,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, 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, 0, 0, 0, 0, 0, 0,129,252,163, 0, 0, 0, 0, 0, 0, 0,
- 4, 0, 6, 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,
+ 4, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,160,181,154, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 48,183,154, 26, 1, 0, 0, 0, 16,180,154, 26, 1, 0, 0, 0,144,215,199, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112, 14,111, 27, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 0, 16,111, 27, 1, 0, 0, 0,224, 12,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,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, 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,105,252,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,105,252,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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, 1, 0, 0, 48,183,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,191,158, 26, 1, 0, 0, 0,160,181,154, 26,
- 1, 0, 0, 0,240,217,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114,
+ 88, 1, 0, 0, 0, 16,111, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144, 17,111, 27, 1, 0, 0, 0,112, 14,111, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114,
97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114,
97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 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, 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, 81,252,163, 0, 0, 0, 0, 0, 0, 0,
- 4, 0, 7, 0, 0, 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,
+ 4, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,144,191,158, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,183,154, 26, 1, 0, 0, 0,112,208,199, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144, 17,111, 27, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,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, 73,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, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,196,255,163, 0, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,196,255,163, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,192,184,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,174,154, 26,
+ 40, 1, 0, 0, 32, 19,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 6,111, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0,
- 27, 6, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 3,130, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,239, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 27, 6, 0, 0, 26, 0, 0, 0,179, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 3,154, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,186,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,
-248, 2, 0, 0, 32,186,154, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 90, 66,109, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,252,133, 27, 1, 0, 0, 0, 68, 65, 84, 65,
+ 88, 3, 0, 0, 48,252,133, 27, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,240, 94, 95, 64, 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,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, 4, 6,158, 63, 18,153,150,191,244,250, 39,191,
- 8,165, 39,191,170,164,167, 63,166, 69,148, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,171,109, 84, 64, 8,108,228,190,
- 50,247,227,190,222,212, 27,191,129,191,178,191,216, 49, 49, 65,152, 9, 52, 65, 80, 25,195, 62,218,249,206, 62, 64,237,196,187,
- 0, 0, 96,179, 19, 84,175,189,227,158,172, 61, 24, 80,119, 62, 0, 0,144, 50,254,120, 21,194,182, 5, 2, 66, 69,136,213,193,
-239,214,159,192, 5, 39, 19, 66, 15,174,255,193,216,101,210, 65,219, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63,
+ 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 4, 6,158, 63, 79,200,141,191,244,250, 39,191,
+ 8,165, 39,191,170,164,167, 63,189,151,139, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188, 90,254, 71, 64, 8,108,228,190,
+ 50,247,227,190,222,212, 27,191,231, 72,168,191,216, 49, 49, 65,152, 9, 52, 65, 80, 25,195, 62,218,249,206, 62, 0,237,196,187,
+ 0, 0, 96,179,204, 58,186,189,131, 90,183, 61, 76, 88,131, 62, 0, 0,152, 50,254,120, 21,194,182, 5, 2, 66, 70,136,213,193,
+239,214,159,192, 5, 39, 19, 66, 15,174,255,193,217,101,210, 65,219, 40,160, 64,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, 4, 6,158, 63, 18,153,150,191,244,250, 39,191,
- 8,165, 39,191,170,164,167, 63,166, 69,148, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,171,109, 84, 64, 8,108,228,190,
- 50,247,227,190,222,212, 27,191,129,191,178,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, 4, 6,158, 63, 79,200,141,191,244,250, 39,191,
+ 8,165, 39,191,170,164,167, 63,189,151,139, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188, 90,254, 71, 64, 8,108,228,190,
+ 50,247,227,190,222,212, 27,191,231, 72,168,191,216, 49, 49, 65,152, 9, 52, 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,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190,
3, 35,171,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,123, 49,183, 58, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1978,18 +2005,21 @@ 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 62, 55, 63, 56,186,224,190,237,203,148,190,
- 3,236,234,190, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 80,189,154, 26, 1, 0, 0, 0,157, 0, 0, 0,
- 1, 0, 0, 0,112,193,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3,236,234,190, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,128, 20,111, 27, 1, 0, 0, 0,158, 0, 0, 0,
+ 1, 0, 0, 0,160, 24,111, 27, 1, 0, 0, 0, 0, 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, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 68,132, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 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, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 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, 0, 80, 5,159, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,190,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,192,154, 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, 68, 65, 84, 65, 40, 1, 0, 0,224, 21,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64, 23,111, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0,192, 59, 68, 0, 0, 0, 0, 0, 0,208, 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,238, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68,
@@ -1999,8 +2029,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,239, 2, 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, 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, 16,192,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,176,190,154, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 40, 57, 61,194,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 23,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,224, 21,111, 27, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 40, 57, 61,194,
146,211, 11, 68,174,122,214, 66, 82, 97,202, 67,222, 2, 0, 0,239, 2, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0,
221, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,221, 2, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0,128, 63,
0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4,
@@ -2009,17 +2039,17 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,239, 2,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 1, 0, 0,112,193,154, 26, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,240,198,154, 26,
- 1, 0, 0, 0, 80,189,154, 26, 1, 0, 0, 0,176,190,154, 26, 1, 0, 0, 0, 16,192,154, 26, 1, 0, 0, 0, 16, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,160, 24,111, 27, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 32, 30,111, 27,
+ 1, 0, 0, 0,128, 20,111, 27, 1, 0, 0, 0,224, 21,111, 27, 1, 0, 0, 0, 64, 23,111, 27, 1, 0, 0, 0, 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, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
242,199, 78, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0,208,194,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,196,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0, 0, 26,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96, 27,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0,
0, 0,216, 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,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68,
@@ -2029,7 +2059,7 @@ char datatoc_B_blend[]= {
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, 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, 48,196,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,197,154, 26, 1, 0, 0, 0,208,194,154, 26,
+ 40, 1, 0, 0, 96, 27,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192, 28,111, 27, 1, 0, 0, 0, 0, 26,111, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2039,7 +2069,7 @@ char datatoc_B_blend[]= {
0, 0, 4, 0, 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,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,144,197,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,196,154, 26,
+ 40, 1, 0, 0,192, 28,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 27,111, 27,
1, 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, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72,
@@ -2049,15 +2079,15 @@ 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, 68, 65, 84, 65,
-240, 0, 0, 0,240,198,154, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,224,202,154, 26, 1, 0, 0, 0,112,193,154, 26,
- 1, 0, 0, 0,208,194,154, 26, 1, 0, 0, 0,144,197,154, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+240, 0, 0, 0, 32, 30,111, 27, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 16, 34,111, 27, 1, 0, 0, 0,160, 24,111, 27,
+ 1, 0, 0, 0, 0, 26,111, 27, 1, 0, 0, 0,192, 28,111, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,200,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,201,154, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 31,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 32,111, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 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,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68,
@@ -2067,8 +2097,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,152, 4, 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, 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,128,201,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 32,200,154, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 32,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80, 31,111, 27, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,
246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63,
0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4,
@@ -2077,50 +2107,50 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0,224,202,154, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,240,198,154, 26, 1, 0, 0, 0, 32,200,154, 26, 1, 0, 0, 0,128,201,154, 26, 1, 0, 0, 0, 15, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 16, 34,111, 27, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32, 30,111, 27, 1, 0, 0, 0, 80, 31,111, 27, 1, 0, 0, 0,176, 32,111, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 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, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,224,203,154, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96,229,154, 26,
- 1, 0, 0, 0, 0,169,154, 26, 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0,208,109,154, 26,
- 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0,157, 1, 0, 0,
- 38, 4, 0, 0, 16, 16, 28, 6,138, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 82, 3, 1, 0, 0, 0,128,207,154, 26,
- 1, 0, 0, 0, 96,228,154, 26, 1, 0, 0, 0,192,204,154, 26, 1, 0, 0, 0, 32,206,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 34,228, 28, 1, 0, 0, 0,128,207,199, 25, 1, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0,192,204,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,206,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 16, 35,111, 27, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 57,111, 27,
+ 1, 0, 0, 0,208, 1,111, 27, 1, 0, 0, 0, 96,205,110, 27, 1, 0, 0, 0,128,203,110, 27, 1, 0, 0, 0, 0,205,110, 27,
+ 1, 0, 0, 0,192,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0,181, 1, 0, 0,
+ 99, 4, 0, 0, 16, 16, 28, 6,175, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 38,111, 27,
+ 1, 0, 0, 0, 96, 56,111, 27, 1, 0, 0, 0,240, 35,111, 27, 1, 0, 0, 0, 80, 37,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 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,240, 35,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80, 37,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,195, 68, 0, 0, 0, 0,
0, 0,208, 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, 27, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68,
0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 28, 6, 26, 0, 28, 6,
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,
- 27, 6, 0, 0,157, 1, 0, 0,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 26, 0,
- 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 7, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 27, 6, 0, 0,181, 1, 0, 0,206, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 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, 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, 32,206,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,204,154, 26,
- 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 84, 64,199,195, 42,160, 99, 68, 0,108,197,190,
-174, 24, 0, 68, 11, 6, 0, 0, 28, 6, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0,
- 17, 0, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70,
- 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 28, 6,112, 2, 11, 6,
- 94, 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,
- 27, 6, 0, 0,183, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,112, 2,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0, 80, 37,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 35,111, 27,
+ 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 84, 64,199,195, 42,160, 99, 68,240, 80,128,193,
+136, 2, 4, 68, 11, 6, 0, 0, 28, 6, 0, 0, 18, 0, 0, 0,148, 2, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 18, 0, 0, 0,148, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70,
+ 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 28, 6,149, 2, 11, 6,
+131, 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,
+ 27, 6, 0, 0,207, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,149, 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, 68, 65, 84, 65,
- 32, 1, 0, 0,128,207,154, 26, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0,213,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 32, 1, 0, 0,176, 38,111, 27, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 48, 44,111, 27, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 66, 86, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 66, 86, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,208,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,210,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 40,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112, 41,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 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,
239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63,
@@ -2129,8 +2159,8 @@ char datatoc_B_blend[]= {
111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 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, 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, 64,210,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,211,154, 26, 1, 0, 0, 0,224,208,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 41,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 42,111, 27, 1, 0, 0, 0, 16, 40,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2139,8 +2169,8 @@ char datatoc_B_blend[]= {
18, 4, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,211,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,210,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 42,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 41,111, 27, 1, 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,
17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60,
@@ -2149,16 +2179,16 @@ char datatoc_B_blend[]= {
18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0, 0,213,154, 26,
- 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 64,224,154, 26, 1, 0, 0, 0,128,207,154, 26, 1, 0, 0, 0,224,208,154, 26,
- 1, 0, 0, 0,160,211,154, 26, 1, 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, 68, 65, 84, 65,240, 0, 0, 0, 48, 44,111, 27,
+ 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 64, 52,111, 27, 1, 0, 0, 0,176, 38,111, 27, 1, 0, 0, 0, 16, 40,111, 27,
+ 1, 0, 0, 0,208, 42,111, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0, 48,214,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,215,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0, 96, 45,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192, 46,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0,
0, 0,208, 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,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
@@ -2168,7 +2198,7 @@ char datatoc_B_blend[]= {
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, 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,144,215,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,216,154, 26, 1, 0, 0, 0, 48,214,154, 26,
+ 40, 1, 0, 0,192, 46,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32, 48,111, 27, 1, 0, 0, 0, 96, 45,111, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196,
0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2178,7 +2208,7 @@ char datatoc_B_blend[]= {
0, 0, 5, 0, 3, 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, 68, 65, 84, 65,
- 40, 1, 0, 0,240,216,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80,218,154, 26, 1, 0, 0, 0,144,215,154, 26,
+ 40, 1, 0, 0, 32, 48,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128, 49,111, 27, 1, 0, 0, 0,192, 46,111, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194,
0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2188,7 +2218,7 @@ char datatoc_B_blend[]= {
0, 0, 6, 0, 34, 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, 68, 65, 84, 65,
- 40, 1, 0, 0, 80,218,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,219,154, 26, 1, 0, 0, 0,240,216,154, 26,
+ 40, 1, 0, 0,128, 49,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224, 50,111, 27, 1, 0, 0, 0, 32, 48,111, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196,
0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2198,7 +2228,7 @@ char datatoc_B_blend[]= {
0, 0, 4, 0, 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,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,176,219,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,218,154, 26,
+ 40, 1, 0, 0,224, 50,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 49,111, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2207,8 +2237,8 @@ char datatoc_B_blend[]= {
128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 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, 16,221,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,
-248, 2, 0, 0, 16,221,154, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 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, 48, 0,134, 27, 1, 0, 0, 0, 68, 65, 84, 65,
+ 88, 3, 0, 0, 48, 0,134, 27, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 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,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63,
0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62,
@@ -2232,17 +2262,20 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0, 64,224,154, 26, 1, 0, 0, 0,157, 0, 0, 0,
- 1, 0, 0, 0, 96,228,154, 26, 1, 0, 0, 0, 0,213,154, 26, 1, 0, 0, 0, 48,214,154, 26, 1, 0, 0, 0,176,219,154, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 1, 0, 0, 64, 52,111, 27, 1, 0, 0, 0,158, 0, 0, 0,
+ 1, 0, 0, 0, 96, 56,111, 27, 1, 0, 0, 0, 48, 44,111, 27, 1, 0, 0, 0, 96, 45,111, 27, 1, 0, 0, 0,224, 50,111, 27,
1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 68,132, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63,
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, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 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, 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,160,225,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,227,154, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 53,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 55,111, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 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,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68,
@@ -2252,8 +2285,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,152, 4, 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, 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,227,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,160,225,154, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 55,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,160, 53,111, 27, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,
246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63,
0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4,
@@ -2262,56 +2295,56 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, 96,228,154, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 64,224,154, 26, 1, 0, 0, 0,160,225,154, 26, 1, 0, 0, 0, 0,227,154, 26, 1, 0, 0, 0, 15, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 96, 56,111, 27, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 52,111, 27, 1, 0, 0, 0,160, 53,111, 27, 1, 0, 0, 0, 0, 55,111, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 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, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96,229,154, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,224,203,154, 26, 1, 0, 0, 0,208,106,154, 26, 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0,240,110,154, 26,
- 1, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0,
-155, 1, 0, 0, 6, 6, 0, 3,156, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,255, 81, 3, 1, 0, 0, 0, 96,234,154, 26,
- 1, 0, 0, 0,224, 2,155, 26, 1, 0, 0, 0, 64,230,154, 26, 1, 0, 0, 0, 0,233,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,190,228, 28, 1, 0, 0, 0, 32,210,229, 28, 1, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0, 64,230,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,231,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96, 57,111, 27, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 35,111, 27, 1, 0, 0, 0, 0,202,110, 27, 1, 0, 0, 0, 96,205,110, 27, 1, 0, 0, 0, 32,206,110, 27,
+ 1, 0, 0, 0,128,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0,
+179, 1, 0, 0, 6, 6, 0, 3,180, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 62,111, 27,
+ 1, 0, 0, 0, 96,134,110, 27, 1, 0, 0, 0, 64, 58,111, 27, 1, 0, 0, 0, 0, 61,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 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, 64, 58,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 59,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0,
0, 0,208, 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,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68,
0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 3, 26, 0, 0, 3,
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,
255, 2, 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, 3, 26, 0,
- 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 5, 82, 3, 1, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,160,231,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,233,154, 26, 1, 0, 0, 0, 64,230,154, 26,
+ 40, 1, 0, 0,160, 59,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 61,111, 27, 1, 0, 0, 0, 64, 58,111, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 26, 0, 0, 0,155, 1, 0, 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, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144, 1, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 26, 0, 0, 0,179, 1, 0, 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, 3, 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, 68, 65, 84, 65,
- 40, 1, 0, 0, 0,233,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,231,154, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0,128,191, 0, 0, 0, 64, 0, 0,130,190,
- 0,128,160, 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, 3, 0, 0, 0, 0, 0, 0,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0, 0, 61,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 59,111, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0,128,191, 0, 0, 0, 64, 0, 0,154,190,
+ 0,128,166, 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, 3, 0, 0, 0, 0, 0, 0,154, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 26, 0, 0, 0,179, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,154, 1,
0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,130, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 0, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
-168, 0, 0, 0, 96,234,154, 26, 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, 0,238,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+168, 0, 0, 0, 96, 62,111, 27, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 0, 66,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 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, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 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, 1, 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, 64,235,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,236,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0, 64, 63,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 64,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0,
0, 0,208, 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,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68,
@@ -2321,7 +2354,7 @@ char datatoc_B_blend[]= {
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, 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,160,236,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,235,154, 26,
+ 40, 1, 0, 0,160, 64,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 63,111, 27,
1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,144, 82, 89,194, 41,149, 13, 68,176,122,214, 66,
82, 97,202, 67,239, 2, 0, 0, 0, 3, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70,
@@ -2331,17 +2364,17 @@ 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, 68, 65, 84, 65,
- 32, 1, 0, 0, 0,238,154, 26, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,128,243,154, 26, 1, 0, 0, 0, 96,234,154, 26,
- 1, 0, 0, 0, 64,235,154, 26, 1, 0, 0, 0,160,236,154, 26, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 32, 1, 0, 0, 0, 66,111, 27, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 16,129,110, 27, 1, 0, 0, 0, 96, 62,111, 27,
+ 1, 0, 0, 0, 64, 63,111, 27, 1, 0, 0, 0,160, 64,111, 27, 1, 0, 0, 0, 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, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,227, 78, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,227, 78, 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, 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,239,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,240,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 67,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192, 68,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 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,
239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63,
@@ -2350,8 +2383,8 @@ char datatoc_B_blend[]= {
111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 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, 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,192,240,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,242,154, 26, 1, 0, 0, 0, 96,239,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 68,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,127,110, 27, 1, 0, 0, 0, 96, 67,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2360,8 +2393,8 @@ char datatoc_B_blend[]= {
18, 4, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,242,154, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,240,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,127,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 68,111, 27, 1, 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,
17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60,
@@ -2370,16 +2403,16 @@ char datatoc_B_blend[]= {
18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0,128,243,154, 26,
- 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,192,254,154, 26, 1, 0, 0, 0, 0,238,154, 26, 1, 0, 0, 0, 96,239,154, 26,
- 1, 0, 0, 0, 32,242,154, 26, 1, 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, 68, 65, 84, 65,240, 0, 0, 0, 16,129,110, 27,
+ 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 0,154,131, 29, 1, 0, 0, 0, 0, 66,111, 27, 1, 0, 0, 0, 96, 67,111, 27,
+ 1, 0, 0, 0,176,127,110, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0,176,244,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,246,154, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0, 64,130,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160,131,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0,
0, 0,208, 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,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
@@ -2389,7 +2422,7 @@ char datatoc_B_blend[]= {
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, 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, 16,246,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,247,154, 26, 1, 0, 0, 0,176,244,154, 26,
+ 40, 1, 0, 0,160,131,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,133,110, 27, 1, 0, 0, 0, 64,130,110, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196,
0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2399,7 +2432,7 @@ char datatoc_B_blend[]= {
0, 0, 5, 0, 3, 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, 68, 65, 84, 65,
- 40, 1, 0, 0,112,247,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,248,154, 26, 1, 0, 0, 0, 16,246,154, 26,
+ 40, 1, 0, 0, 0,133,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240,140,111, 27, 1, 0, 0, 0,160,131,110, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194,
0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2409,7 +2442,7 @@ char datatoc_B_blend[]= {
0, 0, 6, 0, 34, 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, 68, 65, 84, 65,
- 40, 1, 0, 0,208,248,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,250,154, 26, 1, 0, 0, 0,112,247,154, 26,
+ 40, 1, 0, 0,240,140,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160,152,131, 29, 1, 0, 0, 0, 0,133,110, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196,
0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2419,7 +2452,7 @@ char datatoc_B_blend[]= {
0, 0, 4, 0, 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,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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, 48,250,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,248,154, 26,
+ 40, 1, 0, 0,160,152,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,140,111, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2428,8 +2461,8 @@ char datatoc_B_blend[]= {
128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 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,144,251,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,
-248, 2, 0, 0,144,251,154, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 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, 48, 4,134, 27, 1, 0, 0, 0, 68, 65, 84, 65,
+ 88, 3, 0, 0, 48, 4,134, 27, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 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,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63,
0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62,
@@ -2453,17 +2486,20 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0,192,254,154, 26, 1, 0, 0, 0,157, 0, 0, 0,
- 1, 0, 0, 0,224, 2,155, 26, 1, 0, 0, 0,128,243,154, 26, 1, 0, 0, 0,176,244,154, 26, 1, 0, 0, 0, 48,250,154, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 1, 0, 0, 0,154,131, 29, 1, 0, 0, 0,158, 0, 0, 0,
+ 1, 0, 0, 0, 96,134,110, 27, 1, 0, 0, 0, 16,129,110, 27, 1, 0, 0, 0, 64,130,110, 27, 1, 0, 0, 0,160,152,131, 29,
1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 68,132, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63,
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, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 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, 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, 32, 0,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 1,155, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,155,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,156,131, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 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,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68,
@@ -2473,8 +2509,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,152, 4, 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, 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,128, 1,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 32, 0,155, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,156,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,155,131, 29, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,
246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63,
0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4,
@@ -2483,131 +2519,131 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0,224, 2,155, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,192,254,154, 26, 1, 0, 0, 0, 32, 0,155, 26, 1, 0, 0, 0,128, 1,155, 26, 1, 0, 0, 0, 15, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 96,134,110, 27, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,154,131, 29, 1, 0, 0, 0, 96,155,131, 29, 1, 0, 0, 0,192,156,131, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 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, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 96, 4,155, 26, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0,192,112,155, 26,
- 1, 0, 0, 0,192,105,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,
+ 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 32,158,131, 29, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240,254,131, 29,
+ 1, 0, 0, 0,240,200,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,
102, 97,117,108,116, 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,112, 5,155, 26, 1, 0, 0, 0,144, 9,155, 26, 1, 0, 0, 0,240, 9,155, 26, 1, 0, 0, 0, 80, 16,155, 26,
- 1, 0, 0, 0,176, 16,155, 26, 1, 0, 0, 0,112, 77,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 60, 48, 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, 32, 0, 0, 0,112, 5,155, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0,208, 5,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208, 5,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48, 6,155, 26,
- 1, 0, 0, 0,112, 5,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0, 48, 6,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144, 6,155, 26, 1, 0, 0, 0,208, 5,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 6,155, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0, 48, 6,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0, 80, 7,155, 26, 1, 0, 0, 0,144, 6,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 4,
- 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80, 7,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176, 7,155, 26,
- 1, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 39, 4, 0, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0,176, 7,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16, 8,155, 26, 1, 0, 0, 0, 80, 7,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16, 8,155, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112, 8,155, 26, 1, 0, 0, 0,176, 7,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 36, 6, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112, 8,155, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0,208, 8,155, 26, 1, 0, 0, 0, 16, 8,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 68, 3,
- 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208, 8,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48, 9,155, 26,
- 1, 0, 0, 0,112, 8,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 68, 3, 0, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0, 48, 9,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144, 9,155, 26, 1, 0, 0, 0,208, 8,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 9,155, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 9,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 36, 6, 96, 0, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 9,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 80, 10,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 5,155, 26, 1, 0, 0, 0, 48, 6,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 10,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,176, 10,155, 26, 1, 0, 0, 0,240, 9,155, 26, 1, 0, 0, 0,208, 5,155, 26, 1, 0, 0, 0,240, 6,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176, 10,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 16, 11,155, 26, 1, 0, 0, 0, 80, 10,155, 26, 1, 0, 0, 0, 48, 6,155, 26, 1, 0, 0, 0, 80, 7,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16, 11,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,112, 11,155, 26, 1, 0, 0, 0,176, 10,155, 26, 1, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0, 80, 7,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112, 11,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,208, 11,155, 26, 1, 0, 0, 0, 16, 11,155, 26, 1, 0, 0, 0,112, 5,155, 26, 1, 0, 0, 0,176, 7,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208, 11,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 48, 12,155, 26, 1, 0, 0, 0,112, 11,155, 26, 1, 0, 0, 0,144, 6,155, 26, 1, 0, 0, 0,176, 7,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48, 12,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,144, 12,155, 26, 1, 0, 0, 0,208, 11,155, 26, 1, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0, 16, 8,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 12,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,240, 12,155, 26, 1, 0, 0, 0, 48, 12,155, 26, 1, 0, 0, 0, 80, 7,155, 26, 1, 0, 0, 0, 16, 8,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 12,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 80, 13,155, 26, 1, 0, 0, 0,144, 12,155, 26, 1, 0, 0, 0,176, 7,155, 26, 1, 0, 0, 0,112, 8,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 13,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,176, 13,155, 26, 1, 0, 0, 0,240, 12,155, 26, 1, 0, 0, 0, 16, 8,155, 26, 1, 0, 0, 0,112, 8,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176, 13,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 16, 14,155, 26, 1, 0, 0, 0, 80, 13,155, 26, 1, 0, 0, 0, 80, 7,155, 26, 1, 0, 0, 0,208, 8,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16, 14,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,112, 14,155, 26, 1, 0, 0, 0,176, 13,155, 26, 1, 0, 0, 0,144, 6,155, 26, 1, 0, 0, 0,208, 8,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112, 14,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,208, 14,155, 26, 1, 0, 0, 0, 16, 14,155, 26, 1, 0, 0, 0,112, 8,155, 26, 1, 0, 0, 0,208, 8,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208, 14,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 48, 15,155, 26, 1, 0, 0, 0,112, 14,155, 26, 1, 0, 0, 0,112, 5,155, 26, 1, 0, 0, 0, 48, 9,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48, 15,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,144, 15,155, 26, 1, 0, 0, 0,208, 14,155, 26, 1, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0, 48, 9,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 15,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,240, 15,155, 26, 1, 0, 0, 0, 48, 15,155, 26, 1, 0, 0, 0, 16, 8,155, 26, 1, 0, 0, 0,144, 9,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 15,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 80, 16,155, 26, 1, 0, 0, 0,144, 15,155, 26, 1, 0, 0, 0,176, 7,155, 26, 1, 0, 0, 0,144, 9,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 16,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 15,155, 26, 1, 0, 0, 0, 48, 9,155, 26, 1, 0, 0, 0,144, 9,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,176, 16,155, 26, 1, 0, 0, 0,194, 0, 0, 0,
- 1, 0, 0, 0, 80, 20,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0,208, 5,155, 26,
- 1, 0, 0, 0, 48, 6,155, 26, 1, 0, 0, 0, 80, 7,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 7, 0, 0, 40, 4, 0, 0, 66, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16, 15, 82, 3,
- 1, 0, 0, 0, 64,112,155, 26, 1, 0, 0, 0, 64,112,155, 26, 1, 0, 0, 0,144, 17,155, 26, 1, 0, 0, 0,240, 18,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 89,158, 26, 1, 0, 0, 0,240, 94,158, 26,
- 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 17,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 18,155, 26,
+ 0, 0, 0, 0,208,142,111, 27, 1, 0, 0, 0,240,162,131, 29, 1, 0, 0, 0, 80,163,131, 29, 1, 0, 0, 0,176,169,131, 29,
+ 1, 0, 0, 0, 16,170,131, 29, 1, 0, 0, 0, 64,221,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,113, 46, 21, 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, 32, 0, 0, 0,208,142,111, 27, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 48,159,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,159,131, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,159,131, 29,
+ 1, 0, 0, 0,208,142,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,144,159,131, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,159,131, 29, 1, 0, 0, 0, 48,159,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,159,131, 29,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,160,131, 29, 1, 0, 0, 0,144,159,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,160,131, 29, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,176,160,131, 29, 1, 0, 0, 0,240,159,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,101, 4,
+ 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,160,131, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,161,131, 29,
+ 1, 0, 0, 0, 80,160,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,101, 4, 1, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 16,161,131, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,161,131, 29, 1, 0, 0, 0,176,160,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,161,131, 29,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,161,131, 29, 1, 0, 0, 0, 16,161,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 36, 6,101, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,161,131, 29, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 48,162,131, 29, 1, 0, 0, 0,112,161,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6,116, 3,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,162,131, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,162,131, 29,
+ 1, 0, 0, 0,208,161,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,116, 3, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,144,162,131, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,162,131, 29, 1, 0, 0, 0, 48,162,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,162,131, 29,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,162,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 36, 6,100, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,163,131, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,176,163,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,159,131, 29, 1, 0, 0, 0,144,159,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,163,131, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 16,164,131, 29, 1, 0, 0, 0, 80,163,131, 29, 1, 0, 0, 0, 48,159,131, 29, 1, 0, 0, 0, 80,160,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,164,131, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,112,164,131, 29, 1, 0, 0, 0,176,163,131, 29, 1, 0, 0, 0,144,159,131, 29, 1, 0, 0, 0,176,160,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,164,131, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,208,164,131, 29, 1, 0, 0, 0, 16,164,131, 29, 1, 0, 0, 0, 80,160,131, 29, 1, 0, 0, 0,176,160,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,164,131, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 48,165,131, 29, 1, 0, 0, 0,112,164,131, 29, 1, 0, 0, 0,208,142,111, 27, 1, 0, 0, 0, 16,161,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,165,131, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,144,165,131, 29, 1, 0, 0, 0,208,164,131, 29, 1, 0, 0, 0,240,159,131, 29, 1, 0, 0, 0, 16,161,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,165,131, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,240,165,131, 29, 1, 0, 0, 0, 48,165,131, 29, 1, 0, 0, 0, 80,160,131, 29, 1, 0, 0, 0,112,161,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,165,131, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 80,166,131, 29, 1, 0, 0, 0,144,165,131, 29, 1, 0, 0, 0,176,160,131, 29, 1, 0, 0, 0,112,161,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,166,131, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,176,166,131, 29, 1, 0, 0, 0,240,165,131, 29, 1, 0, 0, 0, 16,161,131, 29, 1, 0, 0, 0,208,161,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,166,131, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 16,167,131, 29, 1, 0, 0, 0, 80,166,131, 29, 1, 0, 0, 0,112,161,131, 29, 1, 0, 0, 0,208,161,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,167,131, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,112,167,131, 29, 1, 0, 0, 0,176,166,131, 29, 1, 0, 0, 0,176,160,131, 29, 1, 0, 0, 0, 48,162,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,167,131, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,208,167,131, 29, 1, 0, 0, 0, 16,167,131, 29, 1, 0, 0, 0,240,159,131, 29, 1, 0, 0, 0, 48,162,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,167,131, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 48,168,131, 29, 1, 0, 0, 0,112,167,131, 29, 1, 0, 0, 0,208,161,131, 29, 1, 0, 0, 0, 48,162,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,168,131, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,144,168,131, 29, 1, 0, 0, 0,208,167,131, 29, 1, 0, 0, 0,208,142,111, 27, 1, 0, 0, 0,144,162,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,168,131, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,240,168,131, 29, 1, 0, 0, 0, 48,168,131, 29, 1, 0, 0, 0, 80,160,131, 29, 1, 0, 0, 0,144,162,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,168,131, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 80,169,131, 29, 1, 0, 0, 0,144,168,131, 29, 1, 0, 0, 0,112,161,131, 29, 1, 0, 0, 0,240,162,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,169,131, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,176,169,131, 29, 1, 0, 0, 0,240,168,131, 29, 1, 0, 0, 0, 16,161,131, 29, 1, 0, 0, 0,240,162,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,169,131, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,169,131, 29, 1, 0, 0, 0,144,162,131, 29, 1, 0, 0, 0,240,162,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 16,170,131, 29, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,176,173,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,160,131, 29, 1, 0, 0, 0, 48,159,131, 29,
+ 1, 0, 0, 0,144,159,131, 29, 1, 0, 0, 0,176,160,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+128, 7, 0, 0,102, 4, 0, 0,128, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16,162,217, 2,
+ 1, 0, 0, 0,112,254,131, 29, 1, 0, 0, 0,112,254,131, 29, 1, 0, 0, 0,240,170,131, 29, 1, 0, 0, 0, 80,172,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,205,129, 29, 1, 0, 0, 0,224,104,111, 27,
+ 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,170,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80,172,131, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 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,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68,
0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
10, 0,129, 7, 26, 0,129, 7, 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,128, 7, 0, 0, 40, 4, 0, 0, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,129, 7, 26, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 16, 82, 3,
- 1, 0, 0, 0, 16,248,158, 26, 1, 0, 0, 0, 16,248,158, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,160, 79,158, 26, 1, 0, 0, 0,240, 9,152, 26, 1, 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,240, 18,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,144, 17,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,102, 4, 0, 0,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,129, 7, 26, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,163,217, 2,
+ 1, 0, 0, 0, 48,202,139, 27, 1, 0, 0, 0, 48,202,139, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 5,128, 29, 1, 0, 0, 0,128, 7,128, 29, 1, 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, 80,172,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240,170,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,
255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 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, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4,
6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 4, 0, 0, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240, 15, 82, 3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,162,217, 2,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 80, 20,155, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 32, 48,155, 26,
- 1, 0, 0, 0,176, 16,155, 26, 1, 0, 0, 0,176, 7,155, 26, 1, 0, 0, 0,112, 8,155, 26, 1, 0, 0, 0,208, 8,155, 26,
- 1, 0, 0, 0,144, 6,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
- 67, 3, 0, 0, 4, 4, 92, 1, 68, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 11, 82, 3, 1, 0, 0, 0,144, 39,155, 26,
- 1, 0, 0, 0,192, 46,155, 26, 1, 0, 0, 0, 48, 21,155, 26, 1, 0, 0, 0,144, 22,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 95,158, 26, 1, 0, 0, 0, 48,221, 93, 3, 1, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0, 48, 21,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 22,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,176,173,131, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80,198,131, 29,
+ 1, 0, 0, 0, 16,170,131, 29, 1, 0, 0, 0, 16,161,131, 29, 1, 0, 0, 0,208,161,131, 29, 1, 0, 0, 0, 48,162,131, 29,
+ 1, 0, 0, 0,240,159,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
+115, 3, 0, 0, 4, 4, 92, 1,116, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,158,217, 2, 1, 0, 0, 0,240,192,131, 29,
+ 1, 0, 0, 0,240,196,131, 29, 1, 0, 0, 0,144,174,131, 29, 1, 0, 0, 0,240,175,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 9,128, 29, 1, 0, 0, 0,224,134,133, 29, 1, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,144,174,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240,175,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,174, 67, 0, 0, 0, 0,
0, 0,248, 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, 91, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67,
0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 92, 1, 31, 0, 92, 1,
31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,
-128, 7, 0, 0, 37, 3, 0, 0, 67, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1, 31, 0,
- 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 14, 82, 3, 1, 0, 0, 0,112,205, 0, 28,
- 1, 0, 0, 0,112,205, 0, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,158, 26,
- 1, 0, 0, 0,208, 84,158, 26, 1, 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,144, 22,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 21,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 67, 0,128, 68,196, 0, 0, 0, 0, 0, 0, 0, 0,252,127,165, 67,252,191, 68,196,
- 0, 0, 0, 0, 75, 1, 0, 0, 92, 1, 0, 0, 18, 0, 0, 0, 36, 3, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0,
- 17, 0, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 18, 0, 0, 0, 36, 3, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 92, 1, 37, 3, 75, 1,
- 19, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 70,224, 25, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,
-128, 7, 0, 0, 0, 0, 0, 0, 36, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1, 37, 3,
- 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 12, 82, 3, 1, 0, 0, 0,240,156,158, 26,
- 1, 0, 0, 0, 32, 1, 1, 28, 1, 0, 0, 0,240, 23,155, 26, 1, 0, 0, 0, 0, 38,155, 26, 1, 0, 0, 0,240, 86,158, 26,
- 1, 0, 0, 0,128,215,158, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 88, 1, 0, 0,240, 23,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 25,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 64, 13, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,
+128, 7, 0, 0, 85, 3, 0, 0,115, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1, 31, 0,
+ 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,161,217, 2, 1, 0, 0, 0, 48,182, 13, 3,
+ 1, 0, 0, 0, 48,182, 13, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 10,128, 29,
+ 1, 0, 0, 0, 48, 13,128, 29, 1, 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,240,175,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,174,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0,128,173, 67, 0, 0, 85,196, 0, 0, 0, 0, 0, 0, 0, 0,252,127,165, 67,251, 63, 85,196,
+ 0, 0, 0, 0, 75, 1, 0, 0, 92, 1, 0, 0, 0, 0, 0, 0, 84, 3, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 84, 3, 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, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 92, 1, 85, 3, 75, 1,
+ 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,183,129, 29, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,
+128, 7, 0, 0, 0, 0, 0, 0, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1, 85, 3,
+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,159,217, 2, 1, 0, 0, 0, 48, 40,138, 27,
+ 1, 0, 0, 0, 48,102,139, 27, 1, 0, 0, 0, 80,177,131, 29, 1, 0, 0, 0, 96,191,131, 29, 1, 0, 0, 0, 80, 15,128, 29,
+ 1, 0, 0, 0,144, 17,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 80,177,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,178,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64,160,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,
111,110,116,101,120,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, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,
111,110,116,101,120,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,
@@ -2617,8 +2653,8 @@ char datatoc_B_blend[]= {
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, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128, 25,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 16, 27,155, 26, 1, 0, 0, 0,240, 23,155, 26, 1, 0, 0, 0,176,121,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224,178,131, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0,112,180,131, 29, 1, 0, 0, 0, 80,177,131, 29, 1, 0, 0, 0,176, 12,241, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2629,108 +2665,108 @@ 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, 68, 65, 84, 65,
- 88, 1, 0, 0, 16, 27,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 28,155, 26, 1, 0, 0, 0,128, 25,155, 26,
- 1, 0, 0, 0,176,131,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,
+ 88, 1, 0, 0,112,180,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0,182,131, 29, 1, 0, 0, 0,224,178,131, 29,
+ 1, 0, 0, 0,144, 14,241, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 74, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,253, 74, 1,240, 1, 0, 0, 0, 0,
4, 0, 6, 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,
+ 2, 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, 68, 65, 84, 65, 88, 1, 0, 0,160, 28,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 48, 30,155, 26, 1, 0, 0, 0, 16, 27,155, 26, 1, 0, 0, 0,144,133,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0,182,131, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0,144,183,131, 29, 1, 0, 0, 0,112,180,131, 29, 1, 0, 0, 0,240, 16,241, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,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, 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,165,254, 74, 1,178, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,140,254, 74, 1,203, 0, 0, 0, 0, 0, 0, 0, 6, 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, 68, 65, 84, 65,
- 88, 1, 0, 0, 48, 30,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 31,155, 26, 1, 0, 0, 0,160, 28,155, 26,
- 1, 0, 0, 0,112,138,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,
+ 88, 1, 0, 0,144,183,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 32,185,131, 29, 1, 0, 0, 0, 0,182,131, 29,
+ 1, 0, 0, 0, 80, 19,241, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,
116,105, 97,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,
116,105, 97,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, 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, 83,254, 74, 1, 58, 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, 58,254, 74, 1, 58, 0, 20, 0, 0, 0,
0, 0, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,192, 31,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 80, 33,155, 26, 1, 0, 0, 0, 48, 30,155, 26, 1, 0, 0, 0, 80,140,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 32,185,131, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0,176,186,131, 29, 1, 0, 0, 0,144,183,131, 29, 1, 0, 0, 0,176, 21,241, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,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, 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,213,253, 74, 1,102, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,188,253, 74, 1,102, 0, 0, 0, 0, 0, 0, 0, 6, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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, 1, 0, 0, 80, 33,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 34,155, 26, 1, 0, 0, 0,192, 31,155, 26,
- 1, 0, 0, 0, 48,145,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,
+ 88, 1, 0, 0,176,186,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 64,188,131, 29, 1, 0, 0, 0, 32,185,131, 29,
+ 1, 0, 0, 0, 16, 24,241, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,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, 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, 84,253, 74, 1,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, 59,253, 74, 1,105, 0, 0, 0, 0, 0,
0, 0, 6, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,224, 34,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0,112, 36,155, 26, 1, 0, 0, 0, 80, 33,155, 26, 1, 0, 0, 0, 0,151,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 64,188,131, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0,208,189,131, 29, 1, 0, 0, 0,176,186,131, 29, 1, 0, 0, 0, 80,246,240, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 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, 80,101,114,102,111,114,109, 97,110, 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, 60,253, 74, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,123,252, 74, 1,168, 0, 0, 0, 0, 0, 4, 0, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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, 1, 0, 0,112, 36,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 38,155, 26, 1, 0, 0, 0,224, 34,155, 26,
- 1, 0, 0, 0,224,152,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,
+ 88, 1, 0, 0,208,189,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96,191,131, 29, 1, 0, 0, 0, 64,188,131, 29,
+ 1, 0, 0, 0,192, 29,241, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,
115,116, 95,112,114,111, 99,101,115,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,
115,116, 95,112,114,111, 99,101,115,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, 80,111,115,116, 32, 80,114,111, 99,101,115,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, 36,253, 74, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,253, 74, 1, 0, 0, 0, 0, 0, 0,
4, 0, 6, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, 38,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 36,155, 26, 1, 0, 0, 0,192,154,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 96,191,131, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,189,131, 29, 1, 0, 0, 0, 32, 32,241, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,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, 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, 12,253, 74, 1, 0, 0, 20, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,243,252, 74, 1, 0, 0, 20, 0, 0, 0, 4, 0, 7, 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, 68, 65, 84, 65,
- 0, 1, 0, 0,144, 39,155, 26, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,192, 46,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0,240,192,131, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,240,196,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,192, 88,158, 26,
- 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 40,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 42,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,160,149,176, 21,
+ 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,194,131, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144,195,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 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,
19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63,
@@ -2739,8 +2775,8 @@ char datatoc_B_blend[]= {
25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 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, 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, 48, 42,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 40,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,195,131, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,194,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2749,8 +2785,8 @@ char datatoc_B_blend[]= {
80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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,144, 43,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,144, 43,155, 26,
- 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 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, 48, 8,134, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 8,134, 27,
+ 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 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,128,
0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 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,
@@ -2774,50 +2810,53 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0,192, 46,155, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,144, 39,155, 26, 1, 0, 0, 0,208, 40,155, 26, 1, 0, 0, 0, 48, 42,155, 26, 1, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,240,196,131, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240,192,131, 29, 1, 0, 0, 0, 48,194,131, 29, 1, 0, 0, 0,144,195,131, 29, 1, 0, 0, 0, 1, 0, 0, 0,
51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0,
1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 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, 0, 0,
7, 0, 10, 0,159, 0, 0, 0, 1, 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, 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, 32, 48,155, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16, 60,155, 26, 1, 0, 0, 0, 80, 20,155, 26,
- 1, 0, 0, 0,112, 5,155, 26, 1, 0, 0, 0, 48, 9,155, 26, 1, 0, 0, 0,144, 9,155, 26, 1, 0, 0, 0,176, 7,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 15, 15, 36, 6,
- 96, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,236, 81, 3, 1, 0, 0, 0,192, 51,155, 26, 1, 0, 0, 0,176, 58,155, 26,
- 1, 0, 0, 0, 0, 49,155, 26, 1, 0, 0, 0, 96, 50,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 64, 93,158, 26, 1, 0, 0, 0, 0,210, 0, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 49,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 50,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,196, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+160, 0, 0, 0, 80,198,131, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,207,131, 29, 1, 0, 0, 0,176,173,131, 29,
+ 1, 0, 0, 0,208,142,111, 27, 1, 0, 0, 0,144,162,131, 29, 1, 0, 0, 0,240,162,131, 29, 1, 0, 0, 0, 16,161,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 15, 15, 36, 6,
+100, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,126,217, 2, 1, 0, 0, 0,240,201,131, 29, 1, 0, 0, 0,176,205,131, 29,
+ 1, 0, 0, 0, 48,199,131, 29, 1, 0, 0, 0,144,200,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 19,128, 29, 1, 0, 0, 0, 32,165,201, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,199,131, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144,200,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,128,136, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,196, 68, 0, 0, 0, 0, 0, 0,208, 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,
35, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63,
0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 36, 6, 26, 0, 36, 6, 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, 35, 6, 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, 36, 6, 26, 0, 5, 0, 1, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,237, 81, 3, 1, 0, 0, 0, 0,163,158, 26, 1, 0, 0, 0, 0,163,158, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,217,158, 26, 1, 0, 0, 0,144, 37,159, 26,
- 1, 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, 96, 50,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,155, 26, 1, 0, 0, 0, 0, 0, 64,192,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,128,217, 2, 1, 0, 0, 0, 48,244,136, 27, 1, 0, 0, 0, 48,244,136, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,128, 29, 1, 0, 0, 0, 64, 23,128, 29,
+ 1, 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,144,200,131, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,199,131, 29, 1, 0, 0, 0, 0, 0, 64,192,
0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
- 35, 6, 0, 0, 18, 0, 0, 0, 69, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61,
- 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 36, 6, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 35, 6, 0, 0, 18, 0, 0, 0, 73, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61,
+ 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 36, 6, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0, 26, 0, 0, 0,
- 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 70, 0, 6, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,236, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 39,159, 26, 1, 0, 0, 0,240, 94, 1, 28,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,192, 51,155, 26,
- 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0,176, 58,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 74, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,127,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 25,128, 29, 1, 0, 0, 0, 96, 28,128, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,240,201,131, 29,
+ 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,176,205,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 52,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 54,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,202,131, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80,204,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 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,
87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63,
@@ -2826,8 +2865,8 @@ char datatoc_B_blend[]= {
25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 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, 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, 32, 54,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 52,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,204,131, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,202,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2836,8 +2875,8 @@ char datatoc_B_blend[]= {
55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 55,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,128, 55,155, 26,
- 1, 0, 0, 0,156, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,230,135, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,230,135, 27,
+ 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
87,213,108, 66, 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,128,
0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 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,
@@ -2861,61 +2900,64 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0,176, 58,155, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,192, 51,155, 26, 1, 0, 0, 0,192, 52,155, 26, 1, 0, 0, 0, 32, 54,155, 26, 1, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,176,205,131, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240,201,131, 29, 1, 0, 0, 0,240,202,131, 29, 1, 0, 0, 0, 80,204,131, 29, 1, 0, 0, 0, 1, 0, 0, 0,
51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0,
1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 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, 0, 0,
7, 0, 10, 0,159, 0, 0, 0, 1, 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, 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, 16, 60,155, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112, 77,155, 26, 1, 0, 0, 0, 32, 48,155, 26,
- 1, 0, 0, 0,112, 8,155, 26, 1, 0, 0, 0, 16, 8,155, 26, 1, 0, 0, 0, 80, 7,155, 26, 1, 0, 0, 0,208, 8,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 7, 0, 0, 69, 3, 0, 0, 38, 4, 0, 0, 3, 3, 92, 1,
-226, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,233, 81, 3, 1, 0, 0, 0,176, 63,155, 26, 1, 0, 0, 0, 16, 76,155, 26,
- 1, 0, 0, 0,240, 60,155, 26, 1, 0, 0, 0, 80, 62,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,176, 95, 1, 28, 1, 0, 0, 0,144, 96, 1, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 60,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80, 62,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+160, 0, 0, 0, 16,207,131, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,221,131, 29, 1, 0, 0, 0, 80,198,131, 29,
+ 1, 0, 0, 0,208,161,131, 29, 1, 0, 0, 0,112,161,131, 29, 1, 0, 0, 0,176,160,131, 29, 1, 0, 0, 0, 48,162,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0,100, 4, 0, 0, 3, 3, 92, 1,
+240, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,123,217, 2, 1, 0, 0, 0,176,210,131, 29, 1, 0, 0, 0,224,219,131, 29,
+ 1, 0, 0, 0,240,207,131, 29, 1, 0, 0, 0, 80,209,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 30,128, 29, 1, 0, 0, 0, 48,121,129, 29, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,207,131, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80,209,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,174, 67, 0, 0, 0, 0, 0, 0,208, 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,
91, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63,
0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 92, 1, 26, 0, 92, 1, 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, 37, 6, 0, 0,128, 7, 0, 0, 13, 4, 0, 0,
- 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1, 26, 0, 7, 0, 1, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,235, 81, 3, 1, 0, 0, 0, 96,168,130, 26, 1, 0, 0, 0, 96,168,130, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 98, 1, 28, 1, 0, 0, 0, 32, 99, 1, 28,
- 1, 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, 80, 62,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 60,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,165, 67, 0, 0, 54,195, 0, 0, 0, 0, 75, 1, 0, 0,
- 92, 1, 0, 0, 18, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
- 74, 1, 0, 0, 18, 0, 0, 0,199, 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, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 92, 1,200, 0, 75, 1,182, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 7, 0, 0, 69, 3, 0, 0,
- 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1,200, 0, 8, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,234, 81, 3, 1, 0, 0, 0,160, 4,131, 26, 1, 0, 0, 0,160, 4,131, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,101, 1, 28, 1, 0, 0, 0,192,233,158, 26,
- 1, 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,176, 63,155, 26,
- 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,224, 68,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 7, 0, 0, 75, 4, 0, 0,
+100, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1, 26, 0, 7, 0, 1, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,125,217, 2, 1, 0, 0, 0, 48,236,138, 27, 1, 0, 0, 0, 48,236,138, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 31,128, 29, 1, 0, 0, 0, 16, 34,128, 29,
+ 1, 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, 80,209,131, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,207,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,165, 67, 0, 0, 68,195, 0, 0, 0, 0, 75, 1, 0, 0,
+ 92, 1, 0, 0, 18, 0, 0, 0,213, 0, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+ 74, 1, 0, 0, 18, 0, 0, 0,213, 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, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 92, 1,214, 0, 75, 1,196, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0,
+ 74, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1,214, 0, 8, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,124,217, 2, 1, 0, 0, 0, 48,150,132, 27, 1, 0, 0, 0, 48,150,132, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 36,128, 29, 1, 0, 0, 0,176, 37,128, 29,
+ 1, 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,176,210,131, 29,
+ 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0,224,215,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 51, 39, 26,
- 1, 0, 0, 0,192, 51, 39, 26, 1, 0, 0, 0, 80, 80, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1,128, 29,
+ 1, 0, 0, 0,144, 1,128, 29, 1, 0, 0, 0, 32, 18,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 16, 0, 0, 0, 80, 80, 94, 3,
- 1, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 16, 65,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,
-208, 0, 0, 0, 16, 65,155, 26, 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66, 25, 4,
- 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4,
- 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,137,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,148,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,240,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,146,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,160, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,133,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,132,157, 26,
- 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 66,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 67,155, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, 32, 18,130, 29,
+ 1, 0, 0, 0,219, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 16,212,131, 29, 1, 0, 0, 0, 68, 65, 84, 65,
+208, 0, 0, 0, 16,212,131, 29, 1, 0, 0, 0,218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66,136, 27,
+ 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66,136, 27,
+ 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 58,132, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 74,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,171,109, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,198,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 54,132, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 32,163,176, 21,
+ 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,213,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,214,131, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55,
0, 0, 67, 67, 0, 0, 0, 0, 0, 0,208, 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,194, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,137, 67,
@@ -2925,8 +2967,8 @@ char datatoc_B_blend[]= {
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, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 67,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 32, 66,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0,192,116,196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,214,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32,213,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0,192,116,196, 0, 0, 0, 0, 0, 0, 0, 0,
205, 85,150, 67,223,204, 35,196, 26, 85,207,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 3, 0, 2, 0, 0, 4,
@@ -2935,8 +2977,8 @@ char datatoc_B_blend[]= {
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, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,224, 68,155, 26, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 16, 76,155, 26,
- 1, 0, 0, 0,176, 63,155, 26, 1, 0, 0, 0, 32, 66,155, 26, 1, 0, 0, 0,128, 67,155, 26, 1, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0,224,215,131, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,224,219,131, 29,
+ 1, 0, 0, 0,176,210,131, 29, 1, 0, 0, 0, 32,213,131, 29, 1, 0, 0, 0,128,214,131, 29, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2944,7 +2986,7 @@ 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, 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, 68, 65, 84, 65,
- 40, 1, 0, 0, 32, 70,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 71,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0, 32,217,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,218,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0,
0, 0,208, 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, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
@@ -2954,7 +2996,7 @@ char datatoc_B_blend[]= {
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, 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,128, 71,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 70,155, 26,
+ 40, 1, 0, 0,128,218,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,217,131, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2963,8 +3005,8 @@ char datatoc_B_blend[]= {
108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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,224, 72,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,
-248, 2, 0, 0,224, 72,155, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 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, 48,234,135, 27, 1, 0, 0, 0, 68, 65, 84, 65,
+ 88, 3, 0, 0, 48,234,135, 27, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 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,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 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,
@@ -2988,44 +3030,47 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0, 16, 76,155, 26, 1, 0, 0, 0,157, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 68,155, 26, 1, 0, 0, 0, 32, 70,155, 26, 1, 0, 0, 0,128, 71,155, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 1, 0, 0,224,219,131, 29, 1, 0, 0, 0,158, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,215,131, 29, 1, 0, 0, 0, 32,217,131, 29, 1, 0, 0, 0,128,218,131, 29,
1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 68,132, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 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, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63,
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, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 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, 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,112, 77,155, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 16, 60,155, 26, 1, 0, 0, 0, 48, 9,155, 26, 1, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0, 16, 8,155, 26,
- 1, 0, 0, 0,144, 9,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0, 97, 0, 0, 0,
- 38, 4, 0, 0, 1, 1, 36, 6,198, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,238, 81, 3, 1, 0, 0, 0, 32,107,155, 26,
- 1, 0, 0, 0, 64,111,155, 26, 1, 0, 0, 0, 80, 78,155, 26, 1, 0, 0, 0,144,102,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,137, 77, 3, 1, 0, 0, 0, 32,137, 77, 3, 1, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0, 80, 78,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 79,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 89, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,196, 68, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 64,221,131, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16,207,131, 29, 1, 0, 0, 0,144,162,131, 29, 1, 0, 0, 0, 80,160,131, 29, 1, 0, 0, 0,112,161,131, 29,
+ 1, 0, 0, 0,240,162,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0,101, 0, 0, 0,
+100, 4, 0, 0, 1, 1, 36, 6, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,128,217, 2, 1, 0, 0, 0, 80,249,131, 29,
+ 1, 0, 0, 0,112,253,131, 29, 1, 0, 0, 0, 32,222,131, 29, 1, 0, 0, 0,240,247,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 40,128, 29, 1, 0, 0, 0, 48, 92,135, 29, 1, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 32,222,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,223,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,196, 68, 0, 0, 0, 0,
0, 0,208, 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, 35, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 36, 6, 26, 0, 36, 6,
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,
- 35, 6, 0, 0, 97, 0, 0, 0,122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 26, 0,
- 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,246, 81, 3, 1, 0, 0, 0,128,177, 88, 23,
- 1, 0, 0, 0,128,177, 88, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,164,156, 25,
- 1, 0, 0, 0, 64, 11,159, 26, 1, 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,176, 79,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80, 87,155, 26, 1, 0, 0, 0, 80, 78,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,128, 72,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,128, 72,196,
- 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 51, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,
- 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 51, 3, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 52, 3,143, 0,
- 34, 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,
-159, 0, 0, 0,243, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 52, 3,
- 10, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,243, 81, 3, 1, 0, 0, 0,128,250, 88, 23,
- 1, 0, 0, 0, 32,117, 82, 23, 1, 0, 0, 0, 16, 81,155, 26, 1, 0, 0, 0,192, 85,155, 26, 1, 0, 0, 0, 96, 76, 78, 3,
- 1, 0, 0, 0,160, 15,159, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 88, 1, 0, 0, 16, 81,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 82,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 16,244, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,
+ 35, 6, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 26, 0,
+ 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,137,217, 2, 1, 0, 0, 0, 48,216,129, 27,
+ 1, 0, 0, 0, 48,216,129, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 42,128, 29,
+ 1, 0, 0, 0,112, 45,128, 29, 1, 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,128,223,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,231,131, 29, 1, 0, 0, 0, 32,222,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 67, 0,128, 91,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,128, 91,196,
+ 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,109, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,109, 3, 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, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,110, 3,143, 0,
+110, 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,
+159, 0, 0, 0,247, 0, 0, 0,100, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,110, 3,
+ 10, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,133,217, 2, 1, 0, 0, 0, 48, 6, 21, 3,
+ 1, 0, 0, 0, 48, 46, 21, 3, 1, 0, 0, 0,224,224,131, 29, 1, 0, 0, 0,144,229,131, 29, 1, 0, 0, 0,144, 47,128, 29,
+ 1, 0, 0, 0,208, 49,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0,224,224,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,226,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80,134,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,
111,108, 95,115,104,101,108,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,
111,108, 95,115,104,101,108,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,
@@ -3035,8 +3080,8 @@ char datatoc_B_blend[]= {
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, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160, 82,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 48, 84,155, 26, 1, 0, 0, 0, 16, 81,155, 26, 1, 0, 0, 0,176,118,200, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112,226,131, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 0,228,131, 29, 1, 0, 0, 0,224,224,131, 29, 1, 0, 0, 0, 16, 88,245, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0,
@@ -3047,7 +3092,7 @@ 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, 68, 65, 84, 65,
- 88, 1, 0, 0, 48, 84,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 85,155, 26, 1, 0, 0, 0,160, 82,155, 26,
+ 88, 1, 0, 0, 0,228,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,229,131, 29, 1, 0, 0, 0,112,226,131, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,
111,108,115, 95,109,101,115,104,101,100,105,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,
@@ -3058,8 +3103,8 @@ char datatoc_B_blend[]= {
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, 68, 65, 84, 65, 88, 1, 0, 0,192, 85,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 84,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144,229,131, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,109,101,115,104,101,100,105,116, 95,111,112,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,109,101,115,104,101,100,105,116, 95,111,112,116,
@@ -3070,18 +3115,18 @@ 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, 68, 65, 84, 65,
- 40, 1, 0, 0, 80, 87,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 90,155, 26, 1, 0, 0, 0,176, 79,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194,
- 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,
- 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,
-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,
-159, 0, 0, 0,123, 0, 0, 0,242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0,
- 11, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 81, 3, 1, 0, 0, 0, 16,212,130, 26,
- 1, 0, 0, 0, 16,212,130, 26, 1, 0, 0, 0,176, 88,155, 26, 1, 0, 0, 0,176, 88,155, 26, 1, 0, 0, 0,160,217,205, 25,
- 1, 0, 0, 0, 0, 20,159, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 88, 1, 0, 0,176, 88,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,224,245, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,
+ 40, 1, 0, 0, 32,231,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16,234,131, 29, 1, 0, 0, 0,128,223,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,242,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 91, 90,242,194,
+ 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,119, 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, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,
+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,
+159, 0, 0, 0,127, 0, 0, 0,246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0,
+ 11, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,135,217, 2, 1, 0, 0, 0, 48, 48,134, 27,
+ 1, 0, 0, 0, 48, 48,134, 27, 1, 0, 0, 0,128,232,131, 29, 1, 0, 0, 0,128,232,131, 29, 1, 0, 0, 0,240, 51,128, 29,
+ 1, 0, 0, 0, 48, 54,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0,128,232,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32,136,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,
115,116, 95,111,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,
115,116, 95,111,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,
@@ -3091,87 +3136,87 @@ char datatoc_B_blend[]= {
0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64, 90,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,144,102,155, 26, 1, 0, 0, 0, 80, 87,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,143,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,234,131, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,240,247,131, 29, 1, 0, 0, 0, 32,231,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,143,196,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,102,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,
171, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,
171, 3, 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, 64, 10, 0, 0, 0,
1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,172, 3,163, 0,154, 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, 35, 6, 0, 0, 35, 6, 0, 0,123, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0, 35, 6, 0, 0,127, 0, 0, 0,100, 4, 0, 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,112,240, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 91,155, 26,
- 1, 0, 0, 0,144, 56,136, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160, 91,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 48, 93,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,241, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,176,130,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,235,131, 29,
+ 1, 0, 0, 0, 96,246,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112,235,131, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 0,237,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 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, 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, 62,254,163, 0,110, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 62,254,163, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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, 1, 0, 0, 48, 93,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 94,155, 26, 1, 0, 0, 0,160, 91,155, 26,
- 1, 0, 0, 0, 64,242, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,
+ 88, 1, 0, 0, 0,237,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,238,131, 29, 1, 0, 0, 0,112,235,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,
101,110, 99,105,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,
101,110, 99,105,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, 71,114,101, 97,115,101, 32, 80,101,110, 99,105,
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, 78,251,163, 0, 58, 0, 0, 0, 0, 0,
- 4, 0, 6, 0, 0, 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,
+ 4, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,192, 94,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 80, 96,155, 26, 1, 0, 0, 0, 48, 93,155, 26, 1, 0, 0, 0,176,203,199, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144,238,131, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 32,240,131, 29, 1, 0, 0, 0, 0,237,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,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, 86,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,235,252,163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,235,252,163, 0, 59, 1, 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, 68, 65, 84, 65,
- 88, 1, 0, 0, 80, 96,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 97,155, 26, 1, 0, 0, 0,192, 94,155, 26,
- 1, 0, 0, 0, 16,206,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
+ 88, 1, 0, 0, 32,240,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,241,131, 29, 1, 0, 0, 0,144,238,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
118,105,101,119, 95,100,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
118,105,101,119, 95,100,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, 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, 0, 0, 0, 0, 0, 0,208,251,163, 0, 3, 1, 0, 0, 0, 0,
- 0, 0, 6, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0,224, 97,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0,112, 99,155, 26, 1, 0, 0, 0, 80, 96,155, 26, 1, 0, 0, 0,144,215,199, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176,241,131, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 64,243,131, 29, 1, 0, 0, 0, 32,240,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,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, 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,184,251,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,184,251,163, 0, 0, 0, 20, 0, 0, 0, 4, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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, 1, 0, 0,112, 99,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,101,155, 26, 1, 0, 0, 0,224, 97,155, 26,
- 1, 0, 0, 0,240,217,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114,
+ 88, 1, 0, 0, 64,243,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208,244,131, 29, 1, 0, 0, 0,176,241,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114,
97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114,
97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 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, 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,160,251,163, 0, 0, 0, 0, 0, 0, 0,
- 4, 0, 7, 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,
+ 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0,101,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0,144, 56,136, 26, 1, 0, 0, 0,112, 99,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208,244,131, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 96,246,131, 29, 1, 0, 0, 0, 64,243,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,109,101,115,104,100,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,109,101,115,104,100,105,115,112,108, 97,121,
@@ -3182,63 +3227,66 @@ 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, 68, 65, 84, 65,
- 88, 1, 0, 0,144, 56,136, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,101,155, 26,
- 1, 0, 0, 0,112,208,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
+ 88, 1, 0, 0, 96,246,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,244,131, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
118,105,101,119, 95,110, 97,109,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
118,105,101,119, 95,110, 97,109,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, 73,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, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,163, 0, 36, 0, 0, 0, 0, 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, 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,144,102,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 90,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,247,131, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,234,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 35, 6, 0, 0,123, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 5,172, 3, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,144,239, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 26,159, 26, 1, 0, 0, 0, 0,239,158, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,240,103,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,240,103,155, 26, 1, 0, 0, 0,156, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 76,210, 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,160, 0, 0, 0, 35, 6, 0, 0,127, 0, 0, 0,100, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 5,230, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,208,129,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 56,128, 29, 1, 0, 0, 0, 64, 71,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48,238,135, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,238,135, 27, 1, 0, 0, 0,157, 0, 0, 0,
+ 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, 19,198, 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, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193,
0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63,
0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64,
- 0, 0,128, 63,180,157,229, 62,161,248, 40,191, 48,180, 81,191,184,158, 81,191,118, 90,127, 63, 59,228,162, 62, 26, 63,185, 62,
- 35, 44,185, 62,147,180,109,188,219, 57,188, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,
-214,211,111, 65, 99,240,191, 62,110,116, 85, 63, 48,185, 70,188, 0, 0, 80,180,129,100,122,190, 36, 98,241, 61,159,118, 11, 63,
- 0, 0,140, 51, 67,108,117,194,185,204,216, 65,105,156, 5,194,212,247,159,192,235, 62,114, 66, 61,254,213,193,158,225, 3, 66,
- 55, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
+ 0, 0,128, 63,180,157,229, 62,184, 38, 31,191, 48,180, 81,191,184,158, 81,191,118, 90,127, 63,197,108,153, 62, 26, 63,185, 62,
+ 35, 44,185, 62,147,180,109,188,122, 73,177, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,
+214,211,111, 65, 99,240,191, 62,110,116, 85, 63, 48,185, 70,188, 0, 0, 78,180,246,235,132,190,156, 35, 0, 62,130, 17, 20, 63,
+ 0, 0,192,178, 67,108,117,194,185,204,216, 65,105,156, 5,194,213,247,159,192,235, 62,114, 66, 61,254,213,193,158,225, 3, 66,
+ 56, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193,
- 0, 0,128, 63,180,157,229, 62,161,248, 40,191, 48,180, 81,191,184,158, 81,191,118, 90,127, 63, 59,228,162, 62, 26, 63,185, 62,
- 35, 44,185, 62,147,180,109,188,219, 57,188, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,
-214,211,111, 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, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0,
+ 0, 0,128, 63,180,157,229, 62,184, 38, 31,191, 48,180, 81,191,184,158, 81,191,118, 90,127, 63,197,108,153, 62, 26, 63,185, 62,
+ 35, 44,185, 62,147,180,109,188,122, 73,177, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,
+214,211,111, 65, 97, 89,186, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 89,186, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 89,186, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0,
0, 0, 0, 0,188,189,169, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,
- 32, 1, 0, 0, 32,107,155, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 64,111,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 32, 1, 0, 0, 80,249,131, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0,112,253,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 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, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8,
0, 0, 0, 0, 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, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0,
- 1, 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, 0, 48, 17, 39, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,108,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,109,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,250,131, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16,252,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 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,
151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63,
@@ -3247,8 +3295,8 @@ char datatoc_B_blend[]= {
126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 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, 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,224,109,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,108,155, 26, 1, 0, 0, 0, 0, 0, 64,192,
+ 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, 16,252,131, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,250,131, 29, 1, 0, 0, 0, 0, 0, 64,192,
0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61,
@@ -3257,264 +3305,264 @@ char datatoc_B_blend[]= {
248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, 64,111,155, 26,
- 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,107,155, 26, 1, 0, 0, 0,128,108,155, 26,
- 1, 0, 0, 0,224,109,155, 26, 1, 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, 68, 65, 84, 65,200, 0, 0, 0,112,253,131, 29,
+ 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,249,131, 29, 1, 0, 0, 0,176,250,131, 29,
+ 1, 0, 0, 0, 16,252,131, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,192,112,155, 26,
- 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0,176, 38,156, 26, 1, 0, 0, 0, 96, 4,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,240,254,131, 29,
+ 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240, 38,110, 27, 1, 0, 0, 0, 32,158,131, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97,109,101, 32, 76,111,103,105, 99, 0, 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,208,113,155, 26, 1, 0, 0, 0,176,118,155, 26,
- 1, 0, 0, 0, 16,119,155, 26, 1, 0, 0, 0,144,126,155, 26, 1, 0, 0, 0,240,126,155, 26, 1, 0, 0, 0,128, 7,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66, 25, 4, 1, 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,109, 60, 48, 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,
- 32, 0, 0, 0,208,113,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48,114,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,114,155, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,114,155, 26, 1, 0, 0, 0,208,113,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,114,155, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0,240,114,155, 26, 1, 0, 0, 0, 48,114,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4,
- 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,114,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,115,155, 26,
- 1, 0, 0, 0,144,114,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176,115,155, 26, 1, 0, 0, 0,240,114,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,115,155, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,128, 7, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0,112,116,155, 26, 1, 0, 0, 0,176,115,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 1,
- 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,116,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,208,116,155, 26,
- 1, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6,156, 1, 0, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0,208,116,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48,117,155, 26, 1, 0, 0, 0,112,116,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,117,155, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,117,155, 26, 1, 0, 0, 0,208,116,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,128, 7,156, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,117,155, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0,240,117,155, 26, 1, 0, 0, 0, 48,117,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 5,156, 1,
- 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,117,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,118,155, 26,
- 1, 0, 0, 0,144,117,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 5, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0, 80,118,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176,118,155, 26, 1, 0, 0, 0,240,117,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1,156, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,118,155, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,118,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 60, 1, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,119,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,112,119,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,114,155, 26, 1, 0, 0, 0,144,114,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,119,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,208,119,155, 26, 1, 0, 0, 0, 16,119,155, 26, 1, 0, 0, 0, 48,114,155, 26, 1, 0, 0, 0, 80,115,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,119,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 48,120,155, 26, 1, 0, 0, 0,112,119,155, 26, 1, 0, 0, 0,144,114,155, 26, 1, 0, 0, 0,176,115,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,120,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,144,120,155, 26, 1, 0, 0, 0,208,119,155, 26, 1, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0,176,115,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,120,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,240,120,155, 26, 1, 0, 0, 0, 48,120,155, 26, 1, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0, 16,116,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,120,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 80,121,155, 26, 1, 0, 0, 0,144,120,155, 26, 1, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0,112,116,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,121,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,176,121,155, 26, 1, 0, 0, 0,240,120,155, 26, 1, 0, 0, 0,240,114,155, 26, 1, 0, 0, 0,208,116,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,121,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 16,122,155, 26, 1, 0, 0, 0, 80,121,155, 26, 1, 0, 0, 0,112,116,155, 26, 1, 0, 0, 0,208,116,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,122,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,112,122,155, 26, 1, 0, 0, 0,176,121,155, 26, 1, 0, 0, 0,208,113,155, 26, 1, 0, 0, 0, 16,116,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,122,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,208,122,155, 26, 1, 0, 0, 0, 16,122,155, 26, 1, 0, 0, 0,208,113,155, 26, 1, 0, 0, 0,208,116,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,122,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 48,123,155, 26, 1, 0, 0, 0,112,122,155, 26, 1, 0, 0, 0,176,115,155, 26, 1, 0, 0, 0, 48,117,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,123,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,144,123,155, 26, 1, 0, 0, 0,208,122,155, 26, 1, 0, 0, 0,240,114,155, 26, 1, 0, 0, 0, 48,117,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,123,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,240,123,155, 26, 1, 0, 0, 0, 48,123,155, 26, 1, 0, 0, 0,112,116,155, 26, 1, 0, 0, 0, 48,117,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,123,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 80,124,155, 26, 1, 0, 0, 0,144,123,155, 26, 1, 0, 0, 0,144,117,155, 26, 1, 0, 0, 0,240,117,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,124,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,176,124,155, 26, 1, 0, 0, 0,240,123,155, 26, 1, 0, 0, 0,176,115,155, 26, 1, 0, 0, 0,240,117,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,124,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 16,125,155, 26, 1, 0, 0, 0, 80,124,155, 26, 1, 0, 0, 0, 48,117,155, 26, 1, 0, 0, 0,144,117,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,125,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,112,125,155, 26, 1, 0, 0, 0,176,124,155, 26, 1, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0, 80,118,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,125,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,208,125,155, 26, 1, 0, 0, 0, 16,125,155, 26, 1, 0, 0, 0,144,117,155, 26, 1, 0, 0, 0, 80,118,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,125,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 48,126,155, 26, 1, 0, 0, 0,112,125,155, 26, 1, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0,176,118,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,126,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,144,126,155, 26, 1, 0, 0, 0,208,125,155, 26, 1, 0, 0, 0,240,117,155, 26, 1, 0, 0, 0,176,118,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,126,155, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,126,155, 26, 1, 0, 0, 0, 80,118,155, 26, 1, 0, 0, 0,176,118,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,240,126,155, 26, 1, 0, 0, 0,194, 0, 0, 0,
- 1, 0, 0, 0,144,130,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0, 48,114,155, 26,
- 1, 0, 0, 0,144,114,155, 26, 1, 0, 0, 0,176,115,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 7, 0, 0, 40, 4, 0, 0, 66, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16, 15, 82, 3,
- 1, 0, 0, 0, 48, 38,156, 26, 1, 0, 0, 0, 48, 38,156, 26, 1, 0, 0, 0,208,127,155, 26, 1, 0, 0, 0, 48,129,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,255,197, 25, 1, 0, 0, 0, 64,229,228, 28,
- 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,127,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,129,155, 26,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 29, 1, 0, 0, 0,224, 4,132, 29,
+ 1, 0, 0, 0, 64, 5,132, 29, 1, 0, 0, 0,192, 12,132, 29, 1, 0, 0, 0, 32, 13,132, 29, 1, 0, 0, 0, 48, 16,110, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 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,
+ 32, 0, 0, 0, 0, 0,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 0,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96, 0,132, 29,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192, 0,132, 29, 1, 0, 0, 0, 0, 0,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192, 0,132, 29, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 32, 1,132, 29, 1, 0, 0, 0, 96, 0,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32, 1,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 1,132, 29,
+ 1, 0, 0, 0,192, 0,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,128, 1,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 1,132, 29, 1, 0, 0, 0, 32, 1,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224, 1,132, 29,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64, 2,132, 29, 1, 0, 0, 0,128, 1,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 7,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64, 2,132, 29, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,160, 2,132, 29, 1, 0, 0, 0,224, 1,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180, 1,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 2,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 3,132, 29,
+ 1, 0, 0, 0, 64, 2,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6,180, 1, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 0, 3,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 3,132, 29, 1, 0, 0, 0,160, 2,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96, 3,132, 29,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192, 3,132, 29, 1, 0, 0, 0, 0, 3,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 7,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192, 3,132, 29, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 32, 4,132, 29, 1, 0, 0, 0, 96, 3,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 5,180, 1,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32, 4,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 4,132, 29,
+ 1, 0, 0, 0,192, 3,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 5,100, 4, 1, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,128, 4,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 4,132, 29, 1, 0, 0, 0, 32, 4,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224, 4,132, 29,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 60, 1,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 5,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,160, 5,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0,132, 29, 1, 0, 0, 0,192, 0,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 5,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 0, 6,132, 29, 1, 0, 0, 0, 64, 5,132, 29, 1, 0, 0, 0, 96, 0,132, 29, 1, 0, 0, 0,128, 1,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 6,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 96, 6,132, 29, 1, 0, 0, 0,160, 5,132, 29, 1, 0, 0, 0,192, 0,132, 29, 1, 0, 0, 0,224, 1,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 6,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,192, 6,132, 29, 1, 0, 0, 0, 0, 6,132, 29, 1, 0, 0, 0,128, 1,132, 29, 1, 0, 0, 0,224, 1,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 6,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 32, 7,132, 29, 1, 0, 0, 0, 96, 6,132, 29, 1, 0, 0, 0,128, 1,132, 29, 1, 0, 0, 0, 64, 2,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 7,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,128, 7,132, 29, 1, 0, 0, 0,192, 6,132, 29, 1, 0, 0, 0, 64, 2,132, 29, 1, 0, 0, 0,160, 2,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 7,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,224, 7,132, 29, 1, 0, 0, 0, 32, 7,132, 29, 1, 0, 0, 0, 32, 1,132, 29, 1, 0, 0, 0, 0, 3,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 7,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 64, 8,132, 29, 1, 0, 0, 0,128, 7,132, 29, 1, 0, 0, 0,160, 2,132, 29, 1, 0, 0, 0, 0, 3,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 8,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,160, 8,132, 29, 1, 0, 0, 0,224, 7,132, 29, 1, 0, 0, 0, 0, 0,132, 29, 1, 0, 0, 0, 64, 2,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 8,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 0, 9,132, 29, 1, 0, 0, 0, 64, 8,132, 29, 1, 0, 0, 0, 0, 0,132, 29, 1, 0, 0, 0, 0, 3,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 9,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 96, 9,132, 29, 1, 0, 0, 0,160, 8,132, 29, 1, 0, 0, 0,224, 1,132, 29, 1, 0, 0, 0, 96, 3,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 9,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,192, 9,132, 29, 1, 0, 0, 0, 0, 9,132, 29, 1, 0, 0, 0, 32, 1,132, 29, 1, 0, 0, 0, 96, 3,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 9,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 32, 10,132, 29, 1, 0, 0, 0, 96, 9,132, 29, 1, 0, 0, 0,160, 2,132, 29, 1, 0, 0, 0, 96, 3,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 10,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,128, 10,132, 29, 1, 0, 0, 0,192, 9,132, 29, 1, 0, 0, 0,192, 3,132, 29, 1, 0, 0, 0, 32, 4,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 10,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,224, 10,132, 29, 1, 0, 0, 0, 32, 10,132, 29, 1, 0, 0, 0,224, 1,132, 29, 1, 0, 0, 0, 32, 4,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 10,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 64, 11,132, 29, 1, 0, 0, 0,128, 10,132, 29, 1, 0, 0, 0, 96, 3,132, 29, 1, 0, 0, 0,192, 3,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 11,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,160, 11,132, 29, 1, 0, 0, 0,224, 10,132, 29, 1, 0, 0, 0, 64, 2,132, 29, 1, 0, 0, 0,128, 4,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 11,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 0, 12,132, 29, 1, 0, 0, 0, 64, 11,132, 29, 1, 0, 0, 0,192, 3,132, 29, 1, 0, 0, 0,128, 4,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 12,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 96, 12,132, 29, 1, 0, 0, 0,160, 11,132, 29, 1, 0, 0, 0,128, 1,132, 29, 1, 0, 0, 0,224, 4,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 12,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,192, 12,132, 29, 1, 0, 0, 0, 0, 12,132, 29, 1, 0, 0, 0, 32, 4,132, 29, 1, 0, 0, 0,224, 4,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 12,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 12,132, 29, 1, 0, 0, 0,128, 4,132, 29, 1, 0, 0, 0,224, 4,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 32, 13,132, 29, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,192, 16,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 1,132, 29, 1, 0, 0, 0, 96, 0,132, 29,
+ 1, 0, 0, 0,192, 0,132, 29, 1, 0, 0, 0,224, 1,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, 7, 7,129, 7, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128,122,132, 29, 1, 0, 0, 0,128,122,132, 29, 1, 0, 0, 0, 0, 14,132, 29, 1, 0, 0, 0, 96, 15,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 14,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96, 15,132, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 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,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68,
0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
10, 0,129, 7, 26, 0,129, 7, 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,128, 7, 0, 0, 40, 4, 0, 0, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 16, 82, 3,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,129, 7, 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, 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, 48,129,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,208,127,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,
-255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
-111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 15,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 14,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,
+255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 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, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4,
- 6, 0,129, 7, 3, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 4, 0, 0, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240, 15, 82, 3,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 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, 7, 0, 0,127, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,129, 7, 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, 68, 65, 84, 65,160, 0, 0, 0,144,130,155, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,163,155, 26,
- 1, 0, 0, 0,240,126,155, 26, 1, 0, 0, 0,208,116,155, 26, 1, 0, 0, 0,112,116,155, 26, 1, 0, 0, 0, 48,117,155, 26,
- 1, 0, 0, 0,240,114,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
-155, 1, 0, 0, 4, 4, 96, 1,156, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 11, 82, 3, 1, 0, 0, 0,208,149,155, 26,
- 1, 0, 0, 0, 80,162,155, 26, 1, 0, 0, 0,112,131,155, 26, 1, 0, 0, 0,208,132,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 46,228, 28, 1, 0, 0, 0, 48, 64,192, 25, 1, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0,112,131,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,132,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,192, 16,132, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 46,132, 29,
+ 1, 0, 0, 0, 32, 13,132, 29, 1, 0, 0, 0, 0, 3,132, 29, 1, 0, 0, 0,160, 2,132, 29, 1, 0, 0, 0, 96, 3,132, 29,
+ 1, 0, 0, 0, 32, 1,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
+179, 1, 0, 0, 4, 4, 96, 1,180, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,132, 29,
+ 1, 0, 0, 0, 80, 45,132, 29, 1, 0, 0, 0,160, 17,132, 29, 1, 0, 0, 0, 0, 19,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,160, 17,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 19,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,176, 67, 0, 0, 0, 0,
0, 0,248, 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, 95, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67,
0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 96, 1, 31, 0, 96, 1,
31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,
-128, 7, 0, 0,125, 1, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 1, 31, 0,
- 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 14, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0,208,132,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,131,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 67, 0, 0, 62,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,167, 67,254,127,181,195,
- 0, 0, 0, 0, 79, 1, 0, 0, 96, 1, 0, 0, 18, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0,
- 17, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 18, 0, 0, 0,124, 1, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 96, 1,125, 1, 79, 1,
-107, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,156, 25, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,
-128, 7, 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, 96, 1,125, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 12, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,134,155, 26, 1, 0, 0, 0, 64,148,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 88, 1, 0, 0, 48,134,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,135,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 64, 13, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,
+128, 7, 0, 0,149, 1, 0, 0,179, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 1, 31, 0,
+ 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 0, 19,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 17,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 67, 0, 64, 68,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,167, 67,254,127,193,195,
+ 0, 0, 0, 0, 79, 1, 0, 0, 96, 1, 0, 0, 18, 0, 0, 0,148, 1, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 18, 0, 0, 0,148, 1, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 96, 1,149, 1, 79, 1,
+131, 1, 0, 0, 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, 6, 0, 0,
+128, 7, 0, 0, 0, 0, 0, 0,148, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 1,149, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 20,132, 29, 1, 0, 0, 0,112, 34,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 88, 1, 0, 0, 96, 20,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240, 21,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,
111,110,116,101,120,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, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,
111,110,116,101,120,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, 67,111,110,116,101,120,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,220,255, 78, 1, 36, 0, 0, 0, 0, 0,
- 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,192,135,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 80,137,155, 26, 1, 0, 0, 0, 48,134,155, 26, 1, 0, 0, 0,176,121,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,240, 21,132, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0,128, 23,132, 29, 1, 0, 0, 0, 96, 20,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,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, 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,135,255, 78, 1, 61, 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,135,255, 78, 1, 61, 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, 68, 65, 84, 65,
- 88, 1, 0, 0, 80,137,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,138,155, 26, 1, 0, 0, 0,192,135,155, 26,
- 1, 0, 0, 0,176,131,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,
+ 88, 1, 0, 0,128, 23,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16, 25,132, 29, 1, 0, 0, 0,240, 21,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 78, 1, 0, 0, 0, 0, 0, 0,
- 4, 0, 2, 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,
+ 4, 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, 68, 65, 84, 65, 88, 1, 0, 0,224,138,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0,112,140,155, 26, 1, 0, 0, 0, 80,137,155, 26, 1, 0, 0, 0,144,133,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16, 25,132, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0,160, 26,132, 29, 1, 0, 0, 0,128, 23,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,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, 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,165,254, 78, 1,178, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,140,254, 78, 1,203, 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, 68, 65, 84, 65,
- 88, 1, 0, 0,112,140,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,142,155, 26, 1, 0, 0, 0,224,138,155, 26,
- 1, 0, 0, 0,112,138,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,
+ 88, 1, 0, 0,160, 26,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48, 28,132, 29, 1, 0, 0, 0, 16, 25,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,
116,105, 97,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,
116,105, 97,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, 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, 83,254, 78, 1, 58, 0, 20, 0, 0, 0,
- 0, 0, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254, 78, 1, 58, 0, 20, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0,142,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0,144,143,155, 26, 1, 0, 0, 0,112,140,155, 26, 1, 0, 0, 0, 80,140,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48, 28,132, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0,192, 29,132, 29, 1, 0, 0, 0,160, 26,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,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, 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,213,253, 78, 1,102, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,188,253, 78, 1,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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, 1, 0, 0,144,143,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,145,155, 26, 1, 0, 0, 0, 0,142,155, 26,
- 1, 0, 0, 0, 48,145,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,
+ 88, 1, 0, 0,192, 29,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80, 31,132, 29, 1, 0, 0, 0, 48, 28,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,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, 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, 84,253, 78, 1,105, 0, 0, 0, 0, 0,
- 0, 0, 2, 0, 0, 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, 0, 0, 0, 0, 0, 59,253, 78, 1,105, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 32,145,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0,176,146,155, 26, 1, 0, 0, 0,144,143,155, 26, 1, 0, 0, 0, 0,151,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 80, 31,132, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0,224, 32,132, 29, 1, 0, 0, 0,192, 29,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 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, 80,101,114,102,111,114,109, 97,110, 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, 60,253, 78, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 35,253, 78, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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, 1, 0, 0,176,146,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,148,155, 26, 1, 0, 0, 0, 32,145,155, 26,
- 1, 0, 0, 0,224,152,159, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,
+ 88, 1, 0, 0,224, 32,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112, 34,132, 29, 1, 0, 0, 0, 80, 31,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,
115,116, 95,112,114,111, 99,101,115,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,
115,116, 95,112,114,111, 99,101,115,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, 80,111,115,116, 32, 80,114,111, 99,101,115,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, 36,253, 78, 1, 0, 0, 0, 0, 0, 0,
- 4, 0, 2, 0, 0, 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, 11,253, 78, 1, 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 64,148,155, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,146,155, 26, 1, 0, 0, 0,192,154,159, 25, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112, 34,132, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 32,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,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, 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, 12,253, 78, 1, 0, 0, 20, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,243,252, 78, 1, 0, 0, 20, 0, 0, 0, 4, 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, 68, 65, 84, 65,
- 0, 1, 0, 0,208,149,155, 26, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 48,155,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 36,132, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 96, 41,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 8,155, 25,
- 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,151,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,152,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 37,132, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 38,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 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,
227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63,
@@ -3523,8 +3571,8 @@ char datatoc_B_blend[]= {
111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 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, 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,112,152,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,153,155, 26, 1, 0, 0, 0, 16,151,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 38,132, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 40,132, 29, 1, 0, 0, 0, 64, 37,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -3533,8 +3581,8 @@ char datatoc_B_blend[]= {
235, 1, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,153,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,152,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 40,132, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 38,132, 29, 1, 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,
17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60,
@@ -3543,16 +3591,16 @@ char datatoc_B_blend[]= {
235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 0, 0, 0, 48,155,155, 26,
- 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 80,162,155, 26, 1, 0, 0, 0,208,149,155, 26, 1, 0, 0, 0, 16,151,155, 26,
- 1, 0, 0, 0,208,153,155, 26, 1, 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, 68, 65, 84, 65,240, 0, 0, 0, 96, 41,132, 29,
+ 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 80, 45,132, 29, 1, 0, 0, 0, 0, 36,132, 29, 1, 0, 0, 0, 64, 37,132, 29,
+ 1, 0, 0, 0, 0, 40,132, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0, 96,156,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,157,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0,144, 42,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240, 43,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0,
0, 0,208, 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, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
@@ -3562,7 +3610,7 @@ char datatoc_B_blend[]= {
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, 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,192,157,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,156,155, 26,
+ 40, 1, 0, 0,240, 43,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 42,132, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -3571,8 +3619,8 @@ char datatoc_B_blend[]= {
108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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, 32,159,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,
-248, 2, 0, 0, 32,159,155, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 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, 48,242,135, 27, 1, 0, 0, 0, 68, 65, 84, 65,
+ 88, 3, 0, 0, 48,242,135, 27, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 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,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 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,
@@ -3596,68 +3644,71 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0, 80,162,155, 26, 1, 0, 0, 0,157, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,155,155, 26, 1, 0, 0, 0, 96,156,155, 26, 1, 0, 0, 0,192,157,155, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 1, 0, 0, 80, 45,132, 29, 1, 0, 0, 0,158, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 41,132, 29, 1, 0, 0, 0,144, 42,132, 29, 1, 0, 0, 0,240, 43,132, 29,
1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 68,132, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 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, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63,
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, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 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, 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,176,163,155, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96,200,155, 26,
- 1, 0, 0, 0,144,130,155, 26, 1, 0, 0, 0,208,113,155, 26, 1, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0,112,116,155, 26,
- 1, 0, 0, 0,208,116,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0,
-155, 1, 0, 0, 17, 17, 32, 6,156, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 52, 82, 3, 1, 0, 0, 0, 64,170,155, 26,
- 1, 0, 0, 0, 96,199,155, 26, 1, 0, 0, 0,144,164,155, 26, 1, 0, 0, 0,224,168,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,192,199, 25, 1, 0, 0, 0,160, 88,199, 25, 1, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0,144,164,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,165,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,176, 46,132, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 80,132, 29,
+ 1, 0, 0, 0,192, 16,132, 29, 1, 0, 0, 0, 0, 0,132, 29, 1, 0, 0, 0, 64, 2,132, 29, 1, 0, 0, 0,160, 2,132, 29,
+ 1, 0, 0, 0, 0, 3,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0,
+179, 1, 0, 0, 17, 17, 32, 6,180, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 53,132, 29,
+ 1, 0, 0, 0, 48, 79,132, 29, 1, 0, 0, 0,144, 47,132, 29, 1, 0, 0, 0,224, 51,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0,144, 47,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240, 48,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,196, 68, 0, 0, 0, 0,
0, 0,208, 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, 31, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68,
0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 32, 6, 26, 0, 32, 6,
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,
31, 6, 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, 32, 6, 26, 0,
- 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 55, 82, 3, 1, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,240,165,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,168,155, 26, 1, 0, 0, 0,144,164,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,184,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,184,195,
- 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,
- 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 18, 0, 0, 0,129, 1, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,130, 1,203, 0,
-112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-219, 0, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,130, 1,
- 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 54, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,167,155, 26, 1, 0, 0, 0, 80,167,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0,240, 48,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224, 51,132, 29, 1, 0, 0, 0,144, 47,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,196,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,196,195,
+ 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 18, 0, 0, 0,153, 1, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 18, 0, 0, 0,153, 1, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,154, 1,203, 0,
+136, 1, 0, 0, 0, 0, 0, 0, 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, 26, 0, 0, 0,179, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,154, 1,
+ 0, 0, 4, 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, 80, 50,132, 29, 1, 0, 0, 0, 80, 50,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 88, 1, 0, 0, 80,167,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 49,194, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 79, 71, 73, 67, 95, 80, 84, 95,112,114,111,
+ 88, 1, 0, 0, 80, 50,132, 29, 1, 0, 0, 0,194, 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, 76, 79, 71, 73, 67, 95, 80, 84, 95,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, 0, 0, 0, 76, 79, 71, 73, 67, 95, 80, 84, 95,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, 0, 0, 0, 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,196,255,203, 0, 36, 0, 0, 0, 0, 0,
- 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224,168,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,165,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0,
- 0, 0,112, 67,228, 46, 44,195,220,133,181, 68,107, 28,209,194, 26, 71,172, 67, 51, 5, 0, 0, 68, 5, 0, 0, 18, 0, 0, 0,
-129, 1, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, 18, 0, 0, 0,
-129, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, 10, 0, 0, 0,
- 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 68, 5,130, 1, 51, 5,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, 31, 6, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 80, 53, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 0, 0, 0, 64,170,155, 26, 1, 0, 0, 0,174, 0, 0, 0,
- 1, 0, 0, 0,224,174,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 51,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 48,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0,
+ 0, 0,112, 67,228, 46, 44,195,220,133,181, 68,162,102,238,194,168,153,179, 67, 51, 5, 0, 0, 68, 5, 0, 0, 18, 0, 0, 0,
+153, 1, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, 18, 0, 0, 0,
+153, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, 10, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 68, 5,154, 1, 51, 5,136, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, 31, 6, 0, 0, 26, 0, 0, 0,179, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 5,154, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 72, 0, 0, 0, 64, 53,132, 29, 1, 0, 0, 0,175, 0, 0, 0,
+ 1, 0, 0, 0,224, 57,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 7,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,170,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 32,172,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 53,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 32, 55,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0, 0, 0,208, 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,255, 2, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -3666,8 +3717,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 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, 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, 32,172,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,128,173,155, 26, 1, 0, 0, 0,192,170,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 55,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,128, 56,132, 29, 1, 0, 0, 0,192, 53,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -3676,8 +3727,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,173,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,172,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 56,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 55,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0,
0, 0,128, 67, 0, 0,128,191, 0, 0, 0, 64, 0, 0,116,190, 0,128,158, 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, 3, 0, 0, 0, 0, 0, 0,
122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -3686,14 +3737,14 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,168, 0, 0, 0,224,174,155, 26, 1, 0, 0, 0,167, 0, 0, 0,
- 1, 0, 0, 0,128,178,155, 26, 1, 0, 0, 0, 64,170,155, 26, 1, 0, 0, 0,192,170,155, 26, 1, 0, 0, 0,128,173,155, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0,224, 57,132, 29, 1, 0, 0, 0,168, 0, 0, 0,
+ 1, 0, 0, 0,128, 61,132, 29, 1, 0, 0, 0, 64, 53,132, 29, 1, 0, 0, 0,192, 53,132, 29, 1, 0, 0, 0,128, 56,132, 29,
1, 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,100, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192,175,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 32,177,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 58,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 32, 60,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0, 0, 0,208, 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,255, 2, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -3702,8 +3753,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 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, 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, 32,177,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,175,155, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 60,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 58,132, 29, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193,
0, 0, 0, 68,144, 82, 89,194, 41,149, 13, 68,176,122,214, 66, 82, 97,202, 67,239, 2, 0, 0, 0, 3, 0, 0, 18, 0, 0, 0,
121, 1, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 18, 0, 0, 0,
121, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0,
@@ -3712,17 +3763,17 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 1, 0, 0,128,178,155, 26, 1, 0, 0, 0,173, 0, 0, 0,
- 1, 0, 0, 0, 0,184,155, 26, 1, 0, 0, 0,224,174,155, 26, 1, 0, 0, 0,192,175,155, 26, 1, 0, 0, 0, 32,177,155, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,128, 61,132, 29, 1, 0, 0, 0,174, 0, 0, 0,
+ 1, 0, 0, 0, 0, 67,132, 29, 1, 0, 0, 0,224, 57,132, 29, 1, 0, 0, 0,192, 58,132, 29, 1, 0, 0, 0, 32, 60,132, 29,
1, 0, 0, 0, 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, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 24,227, 78, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,179,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,181,155, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 62,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64, 64,132, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0,
0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 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,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68,
@@ -3732,8 +3783,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,240, 5, 27, 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, 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, 64,181,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,182,155, 26,
- 1, 0, 0, 0,224,179,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 64,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 65,132, 29,
+ 1, 0, 0, 0,224, 62,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -3742,8 +3793,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,182,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 64,181,155, 26, 1, 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, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 65,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 64,132, 29, 1, 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, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,
239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65,
0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
@@ -3752,16 +3803,16 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0, 0,184,155, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 64,195,155, 26,
- 1, 0, 0, 0,128,178,155, 26, 1, 0, 0, 0,224,179,155, 26, 1, 0, 0, 0,160,182,155, 26, 1, 0, 0, 0, 8, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 0, 67,132, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 16, 75,132, 29,
+ 1, 0, 0, 0,128, 61,132, 29, 1, 0, 0, 0,224, 62,132, 29, 1, 0, 0, 0,160, 65,132, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,185,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,144,186,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0,
+ 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 68,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,144, 69,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 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,231, 4, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -3770,8 +3821,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 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, 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,144,186,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,240,187,155, 26, 1, 0, 0, 0, 48,185,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 69,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,240, 70,132, 29, 1, 0, 0, 0, 48, 68,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
43, 3, 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, 64, 10, 0, 0, 0,
@@ -3780,8 +3831,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,187,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 80,189,155, 26, 1, 0, 0, 0,144,186,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 70,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 80, 72,132, 29, 1, 0, 0, 0,144, 69,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
119, 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, 64, 10, 0, 0, 0,
@@ -3790,8 +3841,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,189,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,176,190,155, 26, 1, 0, 0, 0,240,187,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 72,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,176, 73,132, 29, 1, 0, 0, 0,240, 70,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,
121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,
121, 2, 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, 64, 10, 0, 0, 0,
@@ -3800,8 +3851,8 @@ char datatoc_B_blend[]= {
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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176,190,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,189,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 73,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 72,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -3810,7 +3861,7 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 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, 16,192,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 16,192,155, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 0, 0, 0, 0, 48,246,135, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,246,135, 27, 1, 0, 0, 0,157, 0, 0, 0,
1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 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,128, 0, 0, 0,128,226,215,163,188,
0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
@@ -3834,18 +3885,21 @@ 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,
- 32, 1, 0, 0, 64,195,155, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 96,199,155, 26, 1, 0, 0, 0, 0,184,155, 26,
- 1, 0, 0, 0, 48,185,155, 26, 1, 0, 0, 0,176,190,155, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 32, 1, 0, 0, 16, 75,132, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 48, 79,132, 29, 1, 0, 0, 0, 0, 67,132, 29,
+ 1, 0, 0, 0, 48, 68,132, 29, 1, 0, 0, 0,176, 73,132, 29, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 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, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8,
0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 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, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0,
1, 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, 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,160,196,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,198,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 76,132, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 77,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 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,
151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63,
@@ -3854,8 +3908,8 @@ char datatoc_B_blend[]= {
126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 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, 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,198,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,196,155, 26, 1, 0, 0, 0, 0, 0, 64,192,
+ 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,208, 77,132, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 76,132, 29, 1, 0, 0, 0, 0, 0, 64,192,
0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61,
@@ -3864,41 +3918,41 @@ char datatoc_B_blend[]= {
248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, 96,199,155, 26,
- 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,195,155, 26, 1, 0, 0, 0,160,196,155, 26,
- 1, 0, 0, 0, 0,198,155, 26, 1, 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, 68, 65, 84, 65,200, 0, 0, 0, 48, 79,132, 29,
+ 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 75,132, 29, 1, 0, 0, 0,112, 76,132, 29,
+ 1, 0, 0, 0,208, 77,132, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96,200,155, 26,
- 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160,228,155, 26, 1, 0, 0, 0,176,163,155, 26, 1, 0, 0, 0,144,117,155, 26,
- 1, 0, 0, 0,240,117,155, 26, 1, 0, 0, 0,176,115,155, 26, 1, 0, 0, 0, 48,117,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 57, 5, 0, 0,128, 7, 0, 0,157, 1, 0, 0, 38, 4, 0, 0, 9, 9, 72, 2,138, 2, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,112, 45, 82, 3, 1, 0, 0, 0, 0,204,155, 26, 1, 0, 0, 0, 64,227,155, 26, 1, 0, 0, 0, 64,201,155, 26,
- 1, 0, 0, 0,160,202,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,124,199, 25,
- 1, 0, 0, 0,128,140,199, 25, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,201,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,160,202,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 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, 48, 80,132, 29,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,102,132, 29, 1, 0, 0, 0,176, 46,132, 29, 1, 0, 0, 0,192, 3,132, 29,
+ 1, 0, 0, 0, 32, 4,132, 29, 1, 0, 0, 0,224, 1,132, 29, 1, 0, 0, 0, 96, 3,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 57, 5, 0, 0,128, 7, 0, 0,181, 1, 0, 0, 99, 4, 0, 0, 9, 9, 72, 2,175, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,250,135, 27, 1, 0, 0, 0, 16,101,132, 29, 1, 0, 0, 0, 16, 81,132, 29,
+ 1, 0, 0, 0,112, 82,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 81,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,112, 82,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0, 18, 68, 0, 0, 0, 0, 0, 0,208, 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, 71, 2, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,128,181, 67, 0, 0,200, 65, 0,128,181, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 72, 2, 26, 0, 72, 2, 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, 57, 5, 0, 0,128, 7, 0, 0,157, 1, 0, 0,182, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 5, 0, 0,128, 7, 0, 0,181, 1, 0, 0,206, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 16, 48, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,202,155, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,201,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0,
- 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0,116,223, 10, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 82,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 81,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0,
+ 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0,120, 27, 19, 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, 71, 2, 0, 0, 0, 0, 0, 0,
-111, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0,
- 1, 0, 3, 0, 0, 0, 0, 4, 10, 0, 72, 2,112, 2, 72, 2,112, 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, 57, 5, 0, 0,128, 7, 0, 0,183, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 2,112, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 80, 46, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, 0,204,155, 26, 1, 0, 0, 0,169, 0, 0, 0,
- 1, 0, 0, 0,144,209,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+148, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0,
+ 1, 0, 3, 0, 0, 0, 0, 4, 10, 0, 72, 2,149, 2, 72, 2,149, 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, 57, 5, 0, 0,128, 7, 0, 0,207, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 2,149, 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, 68, 65, 84, 65,144, 2, 0, 0, 48,250,135, 27, 1, 0, 0, 0,170, 0, 0, 0,
+ 1, 0, 0, 0,144, 86,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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, 12, 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, 0, 0, 0, 0, 0, 0,
@@ -3918,8 +3972,8 @@ 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, 68, 65, 84, 65, 40, 1, 0, 0,208,206,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,208,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 83,132, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48, 85,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,182, 67, 0, 0, 0, 0, 0, 0,208, 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,
107, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,161, 67, 0, 0,200, 65, 0,128,161, 67, 0, 0,200, 65, 0, 0,128, 63,
@@ -3928,8 +3982,8 @@ char datatoc_B_blend[]= {
66, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 1, 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, 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, 48,208,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,206,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 85,132, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 83,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,173, 67, 0, 0,210,195, 0, 0, 0, 0, 91, 1, 0, 0,
108, 1, 0, 0, 18, 0, 0, 0,181, 1, 0, 0, 0, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
90, 1, 0, 0, 18, 0, 0, 0,181, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
@@ -3938,26 +3992,26 @@ char datatoc_B_blend[]= {
248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 1,182, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144,209,155, 26,
- 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,192,214,155, 26, 1, 0, 0, 0, 0,204,155, 26, 1, 0, 0, 0,208,206,155, 26,
- 1, 0, 0, 0, 48,208,155, 26, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0,144, 86,132, 29,
+ 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0,192, 91,132, 29, 1, 0, 0, 0, 48,250,135, 27, 1, 0, 0, 0,208, 83,132, 29,
+ 1, 0, 0, 0, 48, 85,132, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,158,224, 25, 1, 0, 0, 0, 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,203,107, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 16, 0, 0, 0,192,158,224, 25,
- 1, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,240,210,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,
-208, 0, 0, 0,240,210,155, 26, 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66, 25, 4,
- 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4,
- 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,137,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,148,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,240,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,146,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,160, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,133,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,132,157, 26,
- 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,212,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,213,155, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, 80,203,107, 27,
+ 1, 0, 0, 0,219, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,240, 87,132, 29, 1, 0, 0, 0, 68, 65, 84, 65,
+208, 0, 0, 0,240, 87,132, 29, 1, 0, 0, 0,218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66,136, 27,
+ 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66,136, 27,
+ 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 58,132, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 74,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,171,109, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,198,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 54,132, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 32,163,176, 21,
+ 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 89,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96, 90,132, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0,162, 67, 0, 0, 0, 0, 0, 0,240, 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, 67, 1, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,128,137, 67,
@@ -3967,8 +4021,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 68, 1, 30, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,213,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,212,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 67, 0, 0,137,196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 90,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 89,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 67, 0, 0,137,196, 0, 0, 0, 0, 0, 0, 0, 0,
254,127,153, 67,253,127,198,195, 0, 0, 0, 0, 51, 1, 0, 0, 68, 1, 0, 0, 18, 0, 0, 0,158, 1, 0, 0, 0, 0, 0, 0,
50, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 50, 1, 0, 0, 18, 0, 0, 0,158, 1, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4,
@@ -3977,8 +4031,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 68, 1,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,192,214,155, 26, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 32,220,155, 26,
- 1, 0, 0, 0,144,209,155, 26, 1, 0, 0, 0, 0,212,155, 26, 1, 0, 0, 0, 96,213,155, 26, 1, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0,192, 91,132, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 32, 97,132, 29,
+ 1, 0, 0, 0,144, 86,132, 29, 1, 0, 0, 0, 0, 89,132, 29, 1, 0, 0, 0, 96, 90,132, 29, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -3986,7 +4040,7 @@ 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, 2, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0, 0,216,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,217,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0, 0, 93,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96, 94,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0,
0, 0,216, 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,227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67,
@@ -3996,7 +4050,7 @@ char datatoc_B_blend[]= {
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, 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, 96,217,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,218,155, 26, 1, 0, 0, 0, 0,216,155, 26,
+ 40, 1, 0, 0, 96, 94,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192, 95,132, 29, 1, 0, 0, 0, 0, 93,132, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4006,7 +4060,7 @@ char datatoc_B_blend[]= {
0, 0, 4, 0, 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,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,192,218,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,217,155, 26,
+ 40, 1, 0, 0,192, 95,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 94,132, 29,
1, 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, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72,
@@ -4016,15 +4070,15 @@ 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, 68, 65, 84, 65,
-240, 0, 0, 0, 32,220,155, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 64,227,155, 26, 1, 0, 0, 0,192,214,155, 26,
- 1, 0, 0, 0, 0,216,155, 26, 1, 0, 0, 0,192,218,155, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+240, 0, 0, 0, 32, 97,132, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 16,101,132, 29, 1, 0, 0, 0,192, 91,132, 29,
+ 1, 0, 0, 0, 0, 93,132, 29, 1, 0, 0, 0,192, 95,132, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,221,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,222,155, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 98,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 99,132, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 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, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68,
@@ -4034,8 +4088,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 20, 1, 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, 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,176,222,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 80,221,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 99,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80, 98,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4043,8 +4097,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 20, 1, 55, 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, 16,224,155, 26,
- 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 16,224,155, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 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, 48,254,135, 27,
+ 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,254,135, 27, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64,
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,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 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,
@@ -4068,167 +4122,170 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0, 64,227,155, 26,
- 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,220,155, 26, 1, 0, 0, 0, 80,221,155, 26,
- 1, 0, 0, 0,176,222,155, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 68, 65, 84, 65, 32, 1, 0, 0, 16,101,132, 29,
+ 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 97,132, 29, 1, 0, 0, 0, 80, 98,132, 29,
+ 1, 0, 0, 0,176, 99,132, 29, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0,
- 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66,
0, 0,128, 63, 0, 0,128, 63, 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, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 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, 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,160,228,155, 26, 1, 0, 0, 0,194, 0, 0, 0,
- 1, 0, 0, 0,128, 7,156, 26, 1, 0, 0, 0, 96,200,155, 26, 1, 0, 0, 0, 80,118,155, 26, 1, 0, 0, 0,176,118,155, 26,
- 1, 0, 0, 0,240,117,155, 26, 1, 0, 0, 0,144,117,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0,
- 55, 5, 0, 0,157, 1, 0, 0, 38, 4, 0, 0, 1, 1,251, 3,138, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,238, 81, 3,
- 1, 0, 0, 0,240,248,155, 26, 1, 0, 0, 0,128, 6,156, 26, 1, 0, 0, 0,128,229,155, 26, 1, 0, 0, 0, 96,244,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,140,228, 28, 1, 0, 0, 0,192,207,198, 25,
- 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,229,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,230,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 89, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,112,102,132, 29, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 48, 16,110, 27, 1, 0, 0, 0, 48, 80,132, 29, 1, 0, 0, 0,128, 4,132, 29, 1, 0, 0, 0,224, 4,132, 29,
+ 1, 0, 0, 0, 32, 4,132, 29, 1, 0, 0, 0,192, 3,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0,
+ 55, 5, 0, 0,181, 1, 0, 0, 99, 4, 0, 0, 1, 1,251, 3,175, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32,121,132, 29, 1, 0, 0, 0,160,138,110, 27, 1, 0, 0, 0, 80,103,132, 29, 1, 0, 0, 0,192,119,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,103,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,104,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0,192,126, 68, 0, 0, 0, 0, 0, 0,208, 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,250, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68,
0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
10, 0,251, 3, 26, 0,251, 3, 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, 61, 1, 0, 0, 55, 5, 0, 0,157, 1, 0, 0,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,251, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,246, 81, 3,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0,181, 1, 0, 0,206, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,251, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,224,230,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,232,155, 26,
- 1, 0, 0, 0,128,229,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,104,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16,106,132, 29,
+ 1, 0, 0, 0, 80,103,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,
142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0,
6, 0,160, 0, 44, 3,143, 0, 26, 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, 61, 1, 0, 0, 61, 1, 0, 0,183, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,112, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,243, 81, 3,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 61, 1, 0, 0, 61, 1, 0, 0,207, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0,149, 2, 0, 0, 5, 0, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64,232,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,233,155, 26,
- 1, 0, 0, 0,224,230,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,106,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112,107,132, 29,
+ 1, 0, 0, 0,176,104,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,
231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,
142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4,
6, 0,160, 0,120, 0,143, 0,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, 61, 1, 0, 0, 55, 5, 0, 0,183, 1, 0, 0,183, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,245, 81, 3,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0,207, 1, 0, 0,207, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 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, 68, 65, 84, 65, 40, 1, 0, 0,160,233,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,244,155, 26,
- 1, 0, 0, 0, 64,232,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,107,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,119,132, 29,
+ 1, 0, 0, 0, 16,106,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 35, 67, 0,128, 23,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0,
162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,111, 2, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0,
6, 0,180, 0,112, 2,163, 0, 94, 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, 55, 5, 0, 0, 55, 5, 0, 0,183, 1, 0, 0, 38, 4, 0, 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,112,240, 81, 3,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,235,155, 26, 1, 0, 0, 0, 0,190,158, 26,
+ 0, 0, 0, 0, 55, 5, 0, 0, 55, 5, 0, 0,207, 1, 0, 0, 99, 4, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,108,132, 29, 1, 0, 0, 0, 48,118,132, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0,235,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,236,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,241, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208,108,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96,110,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
51, 68, 95, 80, 84, 95,111, 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, 86, 73, 69, 87,
51, 68, 95, 80, 84, 95,111, 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, 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, 62,254,
-163, 0,110, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+163, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,144,236,155, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,238,155, 26, 1, 0, 0, 0, 0,235,155, 26, 1, 0, 0, 0, 64,242, 81, 3,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 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, 1, 0, 0, 96,110,132, 29,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,111,132, 29, 1, 0, 0, 0,208,108,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,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, 71,114,101, 97,115,101, 32, 80,101,110, 99,105,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,236,253,163, 0, 58, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,236,253,163, 0, 58, 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, 68, 65, 84, 65, 88, 1, 0, 0, 32,238,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,239,155, 26,
- 1, 0, 0, 0,144,236,155, 26, 1, 0, 0, 0,176,203,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240,111,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,128,113,132, 29,
+ 1, 0, 0, 0, 96,110,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,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, 86, 73, 69, 87,
51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,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, 86,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,153,252,
-163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+163, 0, 59, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0,176,239,155, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,241,155, 26, 1, 0, 0, 0, 32,238,155, 26, 1, 0, 0, 0, 16,206,199, 25,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,
+ 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, 1, 0, 0,128,113,132, 29,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16,115,132, 29, 1, 0, 0, 0,240,111,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,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, 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, 0, 0, 0, 0, 0, 0,129,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 64,241,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,242,155, 26,
- 1, 0, 0, 0,176,239,155, 26, 1, 0, 0, 0,144,215,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16,115,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160,116,132, 29,
+ 1, 0, 0, 0,128,113,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,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, 86, 73, 69, 87,
51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,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, 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,105,252,
-163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,208,242,155, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,190,158, 26, 1, 0, 0, 0, 64,241,155, 26, 1, 0, 0, 0,240,217,199, 25,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,
+ 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, 1, 0, 0,160,116,132, 29,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,118,132, 29, 1, 0, 0, 0, 16,115,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,
111,114,105,101,110,116, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,
111,114,105,101,110,116, 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, 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, 81,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0,190,158, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,208,242,155, 26, 1, 0, 0, 0,112,208,199, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48,118,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,160,116,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87,
51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,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, 86, 73, 69, 87,
51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,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, 73,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, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,
-163, 0, 36, 0, 0, 0, 0, 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,
+163, 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, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,244,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,233,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,119,132, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,107,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 55, 5, 0, 0,183, 1, 0, 0,
- 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 3,112, 2, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,239, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0,207, 1, 0, 0,
+ 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 3,149, 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,192,245,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,192,245,155, 26,
- 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 60, 31,129, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128,111, 18,131,187, 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, 0, 0, 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, 2,136, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 2,136, 27,
+ 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+226,201,115, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128,111, 18,131,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, 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,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 60, 31,129, 61, 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,
+226,201,115, 61, 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,149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-134,198,125, 65, 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,
+ 90,105,134, 65, 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, 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,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 60, 31,129, 61, 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,
+226,201,115, 61, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,149, 53,207, 65,
@@ -4238,18 +4295,21 @@ 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,240,248,155, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 16,253,155, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 32,121,132, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 32, 8,110, 27,
1, 0, 0, 0, 0, 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,
51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0,
1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 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, 16, 0, 0, 0,
7, 0, 10, 0, 0, 0, 0, 0, 1, 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, 0,240, 81,158, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0, 80,250,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,251,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 96, 5,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192, 6,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, 0, 0, 0, 0,
0, 0,208, 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, 23, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68,
@@ -4259,7 +4319,7 @@ char datatoc_B_blend[]= {
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, 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,176,251,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,250,155, 26,
+ 40, 1, 0, 0,192, 6,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 5,110, 27,
1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68,160,228,244, 64,
110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0, 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70,
@@ -4269,17 +4329,17 @@ 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, 68, 65, 84, 65,
- 32, 1, 0, 0, 16,253,155, 26, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,144, 2,156, 26, 1, 0, 0, 0,240,248,155, 26,
- 1, 0, 0, 0, 80,250,155, 26, 1, 0, 0, 0,176,251,155, 26, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 32, 1, 0, 0, 32, 8,110, 27, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0,160, 13,110, 27, 1, 0, 0, 0, 32,121,132, 29,
+ 1, 0, 0, 0, 96, 5,110, 27, 1, 0, 0, 0,192, 6,110, 27, 1, 0, 0, 0, 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, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,254,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,255,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 9,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224, 10,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 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,
239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63,
@@ -4288,8 +4348,8 @@ char datatoc_B_blend[]= {
111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 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, 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,208,255,155, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 1,156, 26, 1, 0, 0, 0,112,254,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 10,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64, 12,110, 27, 1, 0, 0, 0,128, 9,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4298,8 +4358,8 @@ char datatoc_B_blend[]= {
18, 4, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 1,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,255,155, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 12,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 10,110, 27, 1, 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,
17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60,
@@ -4308,16 +4368,16 @@ char datatoc_B_blend[]= {
18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0,144, 2,156, 26,
- 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,128, 6,156, 26, 1, 0, 0, 0, 16,253,155, 26, 1, 0, 0, 0,112,254,155, 26,
- 1, 0, 0, 0, 48, 1,156, 26, 1, 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, 68, 65, 84, 65,240, 0, 0, 0,160, 13,110, 27,
+ 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,160,138,110, 27, 1, 0, 0, 0, 32, 8,110, 27, 1, 0, 0, 0,128, 9,110, 27,
+ 1, 0, 0, 0, 64, 12,110, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0,192, 3,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 5,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0,208, 14,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64,137,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0,
0, 0,208, 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,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68,
@@ -4327,7 +4387,7 @@ char datatoc_B_blend[]= {
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, 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, 32, 5,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 3,156, 26,
+ 40, 1, 0, 0, 64,137,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 14,110, 27,
1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0,
0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72,
@@ -4337,58 +4397,58 @@ 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, 68, 65, 84, 65,
-200, 0, 0, 0,128, 6,156, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 2,156, 26,
- 1, 0, 0, 0,192, 3,156, 26, 1, 0, 0, 0, 32, 5,156, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+200, 0, 0, 0,160,138,110, 27, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 13,110, 27,
+ 1, 0, 0, 0,208, 14,110, 27, 1, 0, 0, 0, 64,137,110, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 68, 65, 84, 65,
-160, 0, 0, 0,128, 7,156, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,228,155, 26,
- 1, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0,176,118,155, 26, 1, 0, 0, 0, 80,118,155, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0,157, 1, 0, 0, 38, 4, 0, 0, 3, 3, 60, 1,
-138, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,233, 81, 3, 1, 0, 0, 0, 32, 11,156, 26, 1, 0, 0, 0, 48, 37,156, 26,
- 1, 0, 0, 0, 96, 8,156, 26, 1, 0, 0, 0,192, 9,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,208,173,199, 25, 1, 0, 0, 0,144,144,197, 25, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 8,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192, 9,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+160, 0, 0, 0, 48, 16,110, 27, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,102,132, 29,
+ 1, 0, 0, 0, 64, 2,132, 29, 1, 0, 0, 0,128, 1,132, 29, 1, 0, 0, 0,224, 4,132, 29, 1, 0, 0, 0,128, 4,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0,181, 1, 0, 0, 99, 4, 0, 0, 3, 3, 60, 1,
+175, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,142,110, 27, 1, 0, 0, 0,240, 37,110, 27,
+ 1, 0, 0, 0,160,139,110, 27, 1, 0, 0, 0, 0,141,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,139,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,141,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,158, 67, 0, 0, 0, 0, 0, 0,208, 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,
59, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, 0, 0,128, 63,
0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 60, 1, 26, 0, 60, 1, 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, 59, 1, 0, 0,157, 1, 0, 0,
-182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,235, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 9,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 8,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,149, 67, 0,128, 23,196, 0, 0, 0, 0, 43, 1, 0, 0,
- 60, 1, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
- 42, 1, 0, 0, 18, 0, 0, 0,111, 2, 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, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 60, 1,112, 2, 43, 1, 94, 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, 59, 1, 0, 0,183, 1, 0, 0,
- 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1,112, 2, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,234, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 11,156, 26,
- 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,160, 23,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0,181, 1, 0, 0,
+206, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1, 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, 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,141,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,139,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,149, 67, 0,192, 32,196, 0, 0, 0, 0, 43, 1, 0, 0,
+ 60, 1, 0, 0, 18, 0, 0, 0,148, 2, 0, 0, 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+ 42, 1, 0, 0, 18, 0, 0, 0,148, 2, 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, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 60, 1,149, 2, 43, 1,131, 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, 59, 1, 0, 0,207, 1, 0, 0,
+ 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1,149, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,142,110, 27,
+ 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, 96, 24,110, 27, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 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, 41,159, 26,
- 1, 0, 0, 0, 64, 41,159, 26, 1, 0, 0, 0,160,221, 89, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,160,221, 89, 3,
- 1, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,128, 12,156, 26, 1, 0, 0, 0, 68, 65, 84, 65,
-208, 0, 0, 0,128, 12,156, 26, 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66, 25, 4,
- 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4,
- 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,137,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,148,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,240,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,146,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,160, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,133,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,132,157, 26,
- 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 13,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 14,156, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 7,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 16, 0, 0, 0,160, 7,130, 29,
+ 1, 0, 0, 0,219, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,192,143,110, 27, 1, 0, 0, 0, 68, 65, 84, 65,
+208, 0, 0, 0,192,143,110, 27, 1, 0, 0, 0,218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66,136, 27,
+ 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66,136, 27,
+ 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 58,132, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 74,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,171,109, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,198,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 54,132, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 32,163,176, 21,
+ 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,144,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48,146,110, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 68, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 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,211, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68,
@@ -4398,8 +4458,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,212, 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, 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,240, 14,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80, 16,156, 26,
- 1, 0, 0, 0,144, 13,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,146,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144,147,110, 27,
+ 1, 0, 0, 0,208,144,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,
142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0,
@@ -4408,8 +4468,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 1, 0,182, 1, 0, 0, 5, 0, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80, 16,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 17,156, 26,
- 1, 0, 0, 0,240, 14,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,147,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240,148,110, 27,
+ 1, 0, 0, 0, 48,146,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,
231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,
142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4,
@@ -4418,8 +4478,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 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, 68, 65, 84, 65, 40, 1, 0, 0,176, 17,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 19,156, 26,
- 1, 0, 0, 0, 80, 16,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,148,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80,150,110, 27,
+ 1, 0, 0, 0,144,147,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,
162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0,
@@ -4428,8 +4488,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16, 19,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,176, 17,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,150,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240,148,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4437,8 +4497,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 67, 1, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0,212, 0,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 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, 20,156, 26,
- 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,112, 20,156, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,121, 92,163, 61,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,136, 27,
+ 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 6,136, 27, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,121, 92,163, 61,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,
0, 0, 0,128,111, 18,131,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,
@@ -4461,19 +4521,22 @@ 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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, 62, 55, 63,
- 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,160, 23,156, 26,
- 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,192, 27,156, 26, 1, 0, 0, 0, 32, 11,156, 26, 1, 0, 0, 0,144, 13,156, 26,
- 1, 0, 0, 0, 16, 19,156, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 96, 24,110, 27,
+ 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0,128, 28,110, 27, 1, 0, 0, 0, 96,142,110, 27, 1, 0, 0, 0,208,144,110, 27,
+ 1, 0, 0, 0, 80,150,110, 27, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0,
- 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66,
0, 0,128, 63, 0, 0,128, 63, 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, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 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, 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, 25,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 96, 26,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 25,110, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 32, 27,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, 0, 0, 0, 0, 0, 0,208, 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, 23, 6, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -4482,8 +4545,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 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, 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, 96, 26,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,156, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 27,110, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 25,110, 27, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193,
0, 0, 0, 68, 56,205,190,195,156,102, 95, 68,160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0, 18, 0, 0, 0,
106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 18, 0, 0, 0,
106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0,
@@ -4492,17 +4555,17 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6,107, 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, 68, 65, 84, 65, 32, 1, 0, 0,192, 27,156, 26, 1, 0, 0, 0,173, 0, 0, 0,
- 1, 0, 0, 0, 64, 33,156, 26, 1, 0, 0, 0,160, 23,156, 26, 1, 0, 0, 0, 0, 25,156, 26, 1, 0, 0, 0, 96, 26,156, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,128, 28,110, 27, 1, 0, 0, 0,174, 0, 0, 0,
+ 1, 0, 0, 0, 0, 34,110, 27, 1, 0, 0, 0, 96, 24,110, 27, 1, 0, 0, 0,192, 25,110, 27, 1, 0, 0, 0, 32, 27,110, 27,
1, 0, 0, 0, 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, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 29,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 30,156, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 29,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64, 31,110, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0,
0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 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,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68,
@@ -4512,8 +4575,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,240, 5, 27, 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, 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,128, 30,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 31,156, 26,
- 1, 0, 0, 0, 32, 29,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 31,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 32,110, 27,
+ 1, 0, 0, 0,224, 29,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4522,8 +4585,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224, 31,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,128, 30,156, 26, 1, 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, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 32,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 31,110, 27, 1, 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, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,
239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65,
0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
@@ -4532,16 +4595,16 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0, 64, 33,156, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 48, 37,156, 26,
- 1, 0, 0, 0,192, 27,156, 26, 1, 0, 0, 0, 32, 29,156, 26, 1, 0, 0, 0,224, 31,156, 26, 1, 0, 0, 0, 8, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 0, 34,110, 27, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,240, 37,110, 27,
+ 1, 0, 0, 0,128, 28,110, 27, 1, 0, 0, 0,224, 29,110, 27, 1, 0, 0, 0,160, 32,110, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 34,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,208, 35,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0,
+ 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 35,110, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,144, 36,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 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,151, 4, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -4550,8 +4613,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 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, 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,208, 35,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 34,156, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 36,110, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 35,110, 27, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0,
0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,
121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0,
@@ -4560,142 +4623,142 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, 48, 37,156, 26, 1, 0, 0, 0,172, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 33,156, 26, 1, 0, 0, 0,112, 34,156, 26, 1, 0, 0, 0,208, 35,156, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,240, 37,110, 27, 1, 0, 0, 0,173, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,110, 27, 1, 0, 0, 0, 48, 35,110, 27, 1, 0, 0, 0,144, 36,110, 27,
1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,176, 38,156, 26, 1, 0, 0, 0,190, 0, 0, 0,
- 1, 0, 0, 0, 96,215,156, 26, 1, 0, 0, 0,192,112,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,240, 38,110, 27, 1, 0, 0, 0,191, 0, 0, 0,
+ 1, 0, 0, 0,128, 74,111, 27, 1, 0, 0, 0,240,254,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116,105,110,103, 0,103, 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,192, 39,156, 26, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0, 0, 45,156, 26,
- 1, 0, 0, 0,224, 52,156, 26, 1, 0, 0, 0, 64, 53,156, 26, 1, 0, 0, 0, 48,192,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66, 25, 4, 1, 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, 68, 65, 84, 65, 32, 0, 0, 0,192, 39,156, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32, 40,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32, 40,156, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0,128, 40,156, 26, 1, 0, 0, 0,192, 39,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4,
- 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128, 40,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,224, 40,156, 26,
- 1, 0, 0, 0, 32, 40,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0,224, 40,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0,128, 40,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64, 41,156, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0,224, 40,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 39, 4,
- 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 96, 42,156, 26,
- 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0, 0, 42,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192, 42,156, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,168, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,168, 1,
- 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,224, 43,156, 26,
- 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64, 44,156, 26, 1, 0, 0, 0,128, 43,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 2,168, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64, 44,156, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,240, 5, 16, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 16, 3,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 45,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 45,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 40,156, 26, 1, 0, 0, 0,128, 40,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 45,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192, 45,156, 26,
- 1, 0, 0, 0, 0, 45,156, 26, 1, 0, 0, 0, 32, 40,156, 26, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 45,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32, 46,156, 26,
- 1, 0, 0, 0, 96, 45,156, 26, 1, 0, 0, 0,128, 40,156, 26, 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 46,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 46,156, 26,
- 1, 0, 0, 0,192, 45,156, 26, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 46,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 46,156, 26,
- 1, 0, 0, 0, 32, 46,156, 26, 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 46,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64, 47,156, 26,
- 1, 0, 0, 0,128, 46,156, 26, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 47,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160, 47,156, 26,
- 1, 0, 0, 0,224, 46,156, 26, 1, 0, 0, 0,224, 40,156, 26, 1, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 47,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 48,156, 26,
- 1, 0, 0, 0, 64, 47,156, 26, 1, 0, 0, 0,192, 39,156, 26, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 48,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 48,156, 26,
- 1, 0, 0, 0,160, 47,156, 26, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 48,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192, 48,156, 26,
- 1, 0, 0, 0, 0, 48,156, 26, 1, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 48,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32, 49,156, 26,
- 1, 0, 0, 0, 96, 48,156, 26, 1, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 49,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 49,156, 26,
- 1, 0, 0, 0,192, 48,156, 26, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 49,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 49,156, 26,
- 1, 0, 0, 0, 32, 49,156, 26, 1, 0, 0, 0,192, 39,156, 26, 1, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 49,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64, 50,156, 26,
- 1, 0, 0, 0,128, 49,156, 26, 1, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 50,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160, 50,156, 26,
- 1, 0, 0, 0,224, 49,156, 26, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 50,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 51,156, 26,
- 1, 0, 0, 0, 64, 50,156, 26, 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 51,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 51,156, 26,
- 1, 0, 0, 0,160, 50,156, 26, 1, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 51,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192, 51,156, 26,
- 1, 0, 0, 0, 0, 51,156, 26, 1, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0, 64, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 51,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32, 52,156, 26,
- 1, 0, 0, 0, 96, 51,156, 26, 1, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0, 64, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 52,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 52,156, 26,
- 1, 0, 0, 0,192, 51,156, 26, 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 52,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 52,156, 26,
- 1, 0, 0, 0, 32, 52,156, 26, 1, 0, 0, 0,224, 40,156, 26, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 52,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,128, 52,156, 26, 1, 0, 0, 0, 64, 44,156, 26, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 64, 53,156, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224, 56,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0, 32, 40,156, 26, 1, 0, 0, 0,128, 40,156, 26,
- 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0,
- 66, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,214,156, 26,
- 1, 0, 0, 0,224,214,156, 26, 1, 0, 0, 0, 32, 54,156, 26, 1, 0, 0, 0,128, 55,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0, 32, 54,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 55,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,151,110, 27, 1, 0, 0, 0,224,112,109, 27, 1, 0, 0, 0, 96, 45,109, 27,
+ 1, 0, 0, 0, 0, 42,110, 27, 1, 0, 0, 0, 96, 42,110, 27, 1, 0, 0, 0, 16,113,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 0, 0, 0,176,151,110, 27,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,152,110, 27, 1, 0, 0, 0, 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, 32, 0, 0, 0, 16,152,110, 27, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,192,108,109, 27, 1, 0, 0, 0,176,151,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192,108,109, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,109,109, 27,
+ 1, 0, 0, 0, 16,152,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 32,109,109, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,109,109, 27, 1, 0, 0, 0,192,108,109, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128,109,109, 27,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,109,109, 27, 1, 0, 0, 0, 32,109,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,109,109, 27, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 64,110,109, 27, 1, 0, 0, 0,128,109,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4,
+ 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,110,109, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,110,109, 27,
+ 1, 0, 0, 0,224,109,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,100, 4, 1, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,160,110,109, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,111,109, 27, 1, 0, 0, 0, 64,110,109, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0,111,109, 27,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96,111,109, 27, 1, 0, 0, 0,160,110,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,192, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96,111,109, 27, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,192,111,109, 27, 1, 0, 0, 0, 0,111,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,192, 1,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192,111,109, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,112,109, 27,
+ 1, 0, 0, 0, 96,111,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 32,112,109, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,112,109, 27, 1, 0, 0, 0,192,111,109, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 2,192, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128,112,109, 27,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,112,109, 27, 1, 0, 0, 0, 32,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240, 5, 64, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,112,109, 27, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 64, 3,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 45,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 45,109, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,108,109, 27, 1, 0, 0, 0, 16,152,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 45,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 46,109, 27,
+ 1, 0, 0, 0, 96, 45,109, 27, 1, 0, 0, 0,128,109,109, 27, 1, 0, 0, 0, 16,152,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 46,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 46,109, 27,
+ 1, 0, 0, 0,192, 45,109, 27, 1, 0, 0, 0,192,108,109, 27, 1, 0, 0, 0,224,109,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 46,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 46,109, 27,
+ 1, 0, 0, 0, 32, 46,109, 27, 1, 0, 0, 0,128,109,109, 27, 1, 0, 0, 0,224,109,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 46,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 47,109, 27,
+ 1, 0, 0, 0,128, 46,109, 27, 1, 0, 0, 0,224,109,109, 27, 1, 0, 0, 0, 64,110,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 47,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 47,109, 27,
+ 1, 0, 0, 0,224, 46,109, 27, 1, 0, 0, 0,128,109,109, 27, 1, 0, 0, 0, 64,110,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 47,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 48,109, 27,
+ 1, 0, 0, 0, 64, 47,109, 27, 1, 0, 0, 0, 32,109,109, 27, 1, 0, 0, 0,160,110,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 48,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96, 48,109, 27,
+ 1, 0, 0, 0,160, 47,109, 27, 1, 0, 0, 0, 0,111,109, 27, 1, 0, 0, 0,176,151,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 48,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 48,109, 27,
+ 1, 0, 0, 0, 0, 48,109, 27, 1, 0, 0, 0,128,109,109, 27, 1, 0, 0, 0, 0,111,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 48,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 49,109, 27,
+ 1, 0, 0, 0, 96, 48,109, 27, 1, 0, 0, 0, 64,110,109, 27, 1, 0, 0, 0, 96,111,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 49,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 49,109, 27,
+ 1, 0, 0, 0,192, 48,109, 27, 1, 0, 0, 0,160,110,109, 27, 1, 0, 0, 0, 96,111,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 49,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 49,109, 27,
+ 1, 0, 0, 0, 32, 49,109, 27, 1, 0, 0, 0, 0,111,109, 27, 1, 0, 0, 0, 96,111,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 49,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 50,109, 27,
+ 1, 0, 0, 0,128, 49,109, 27, 1, 0, 0, 0,192,111,109, 27, 1, 0, 0, 0,176,151,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 50,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 50,109, 27,
+ 1, 0, 0, 0,224, 49,109, 27, 1, 0, 0, 0,160,110,109, 27, 1, 0, 0, 0,192,111,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 50,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 51,109, 27,
+ 1, 0, 0, 0, 64, 50,109, 27, 1, 0, 0, 0, 0,111,109, 27, 1, 0, 0, 0, 32,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 51,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96, 51,109, 27,
+ 1, 0, 0, 0,160, 50,109, 27, 1, 0, 0, 0, 96,111,109, 27, 1, 0, 0, 0, 32,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 51,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 51,109, 27,
+ 1, 0, 0, 0, 0, 51,109, 27, 1, 0, 0, 0,192,111,109, 27, 1, 0, 0, 0, 32,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 51,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 52,109, 27,
+ 1, 0, 0, 0, 96, 51,109, 27, 1, 0, 0, 0,160,110,109, 27, 1, 0, 0, 0,128,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 52,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 41,110, 27,
+ 1, 0, 0, 0,192, 51,109, 27, 1, 0, 0, 0, 64,110,109, 27, 1, 0, 0, 0,128,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 41,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 41,110, 27,
+ 1, 0, 0, 0, 32, 52,109, 27, 1, 0, 0, 0,224,109,109, 27, 1, 0, 0, 0,224,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 41,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 42,110, 27,
+ 1, 0, 0, 0, 64, 41,110, 27, 1, 0, 0, 0, 32,109,109, 27, 1, 0, 0, 0,224,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 42,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,160, 41,110, 27, 1, 0, 0, 0,128,112,109, 27, 1, 0, 0, 0,224,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96, 42,110, 27, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 46,110, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,109,109, 27, 1, 0, 0, 0, 16,152,110, 27, 1, 0, 0, 0,192,108,109, 27,
+ 1, 0, 0, 0,224,109,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,
+128, 4, 0, 0, 7, 7,129, 7, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,132,111, 27,
+ 1, 0, 0, 0,144,132,111, 27, 1, 0, 0, 0, 64, 43,110, 27, 1, 0, 0, 0,160, 44,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 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, 64, 43,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 44,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0,
0, 0,208, 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,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7,
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,
-128, 7, 0, 0, 40, 4, 0, 0, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0,
+128, 7, 0, 0,101, 4, 0, 0,126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 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, 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,128, 55,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 54,156, 26,
+ 40, 1, 0, 0,160, 44,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 43,110, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192,
- 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0,
- 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 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, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 7, 0,112, 7,
+ 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 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, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 4, 0, 0, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 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,
+128, 7, 0, 0,127, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 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, 68, 65, 84, 65,
-160, 0, 0, 0,224, 56,156, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 90,156, 26, 1, 0, 0, 0, 64, 53,156, 26,
- 1, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0, 64, 44,156, 26, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0,224, 40,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 15, 3, 0, 0, 4, 4,144, 1,
- 16, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 76,156, 26, 1, 0, 0, 0,160, 88,156, 26,
- 1, 0, 0, 0,192, 57,156, 26, 1, 0, 0, 0, 32, 59,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 57,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 59,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+160, 0, 0, 0, 0, 46,110, 27, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 75,110, 27, 1, 0, 0, 0, 96, 42,110, 27,
+ 1, 0, 0, 0,160,110,109, 27, 1, 0, 0, 0,128,112,109, 27, 1, 0, 0, 0,224,112,109, 27, 1, 0, 0, 0, 32,109,109, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 63, 3, 0, 0, 4, 4,144, 1,
+ 64, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 65,110, 27, 1, 0, 0, 0,144, 74,110, 27,
+ 1, 0, 0, 0,224, 46,110, 27, 1, 0, 0, 0, 64, 48,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224, 46,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64, 48,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,200, 67, 0, 0, 0, 0, 0, 0,248, 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,
143, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63,
0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,144, 1, 31, 0,144, 1, 31, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0,241, 2, 0, 0,
- 15, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 31, 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,241, 5, 0, 0,128, 7, 0, 0, 33, 3, 0, 0,
+ 63, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 59,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 57,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,191, 67, 0, 0, 62,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,191, 67,255,191, 55,196, 0, 0, 0, 0,127, 1, 0, 0,
-144, 1, 0, 0, 18, 0, 0, 0,240, 2, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
-126, 1, 0, 0, 18, 0, 0, 0,240, 2, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,144, 1,241, 2,127, 1,223, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 48,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 46,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,191, 67, 0, 64, 68,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,191, 67,255,191, 67,196, 0, 0, 0, 0,127, 1, 0, 0,
+144, 1, 0, 0, 18, 0, 0, 0, 32, 3, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+126, 1, 0, 0, 18, 0, 0, 0, 32, 3, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,144, 1, 33, 3,127, 1, 15, 3, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
-240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1,241, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 32, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 33, 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,128, 60,156, 26, 1, 0, 0, 0,144, 74,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128, 60,156, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 62,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,160, 49,110, 27, 1, 0, 0, 0,176, 63,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,160, 49,110, 27,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48, 51,110, 27, 1, 0, 0, 0, 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, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,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, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0,
@@ -4706,8 +4769,8 @@ 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, 68, 65, 84, 65, 88, 1, 0, 0, 16, 62,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 63,156, 26,
- 1, 0, 0, 0,128, 60,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48, 51,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192, 52,110, 27,
+ 1, 0, 0, 0,160, 49,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,114,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, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,114,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,
@@ -4717,8 +4780,8 @@ char datatoc_B_blend[]= {
126, 1, 61, 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, 68, 65, 84, 65, 88, 1, 0, 0,160, 63,156, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 65,156, 26, 1, 0, 0, 0, 16, 62,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192, 52,110, 27,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80, 54,110, 27, 1, 0, 0, 0, 48, 51,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0,
@@ -4729,88 +4792,88 @@ char datatoc_B_blend[]= {
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, 68, 65, 84, 65, 88, 1, 0, 0, 48, 65,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 66,156, 26,
- 1, 0, 0, 0,160, 63,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 80, 54,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224, 55,110, 27,
+ 1, 0, 0, 0,192, 52,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,100,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, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,100,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, 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,165,254,
-126, 1,178, 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,140,254,
+126, 1,203, 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, 68, 65, 84, 65, 88, 1, 0, 0,192, 66,156, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 68,156, 26, 1, 0, 0, 0, 48, 65,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224, 55,110, 27,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112, 57,110, 27, 1, 0, 0, 0, 80, 54,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,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, 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, 83,254,126, 1, 58, 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, 58,254,126, 1, 58, 0, 20, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 80, 68,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 69,156, 26,
- 1, 0, 0, 0,192, 66,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112, 57,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 59,110, 27,
+ 1, 0, 0, 0,224, 55,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,115,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, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,115,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, 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,213,253,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,253,
126, 1,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,224, 69,156, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 71,156, 26, 1, 0, 0, 0, 80, 68,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0, 59,110, 27,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144, 60,110, 27, 1, 0, 0, 0,112, 57,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,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, 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, 84,253,126, 1,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, 59,253,126, 1,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,112, 71,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 73,156, 26,
- 1, 0, 0, 0,224, 69,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144, 60,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 32, 62,110, 27,
+ 1, 0, 0, 0, 0, 59,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 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, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 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, 80,101,114,102,
111,114,109, 97,110, 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, 60,253,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35,253,
126, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, 73,156, 26,
- 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 74,156, 26, 1, 0, 0, 0,112, 71,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 32, 62,110, 27,
+ 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176, 63,110, 27, 1, 0, 0, 0,144, 60,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,
115,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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,
115,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, 80,111,115,116, 32, 80,114,111, 99,101,115,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, 36,253,126, 1, 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, 11,253,126, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 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, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,144, 74,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 73,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
+ 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176, 63,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32, 62,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,115,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, 82, 69, 78, 68,
69, 82, 95, 80, 84, 95,115,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, 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, 12,253,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243,252,
126, 1, 0, 0, 20, 0, 0, 0, 4, 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, 68, 65, 84, 65, 0, 1, 0, 0, 32, 76,156, 26,
- 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,128, 81,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 64, 65,110, 27,
+ 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,160, 70,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4818,8 +4881,8 @@ 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, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,
-160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 77,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,192, 78,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0,
+160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 66,110, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,224, 67,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0,
0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 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,227, 1, 0, 0, 0, 0, 0, 0,
26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -4828,8 +4891,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 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, 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,192, 78,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 32, 80,156, 26, 1, 0, 0, 0, 96, 77,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 67,110, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 64, 69,110, 27, 1, 0, 0, 0,128, 66,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4838,8 +4901,8 @@ char datatoc_B_blend[]= {
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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 80,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 78,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 69,110, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 67,110, 27, 1, 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, 17, 0, 0, 0, 18, 0, 0, 0,
123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,
123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0,
@@ -4848,16 +4911,16 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 0, 0, 0,128, 81,156, 26, 1, 0, 0, 0,163, 0, 0, 0,
- 1, 0, 0, 0,160, 88,156, 26, 1, 0, 0, 0, 32, 76,156, 26, 1, 0, 0, 0, 96, 77,156, 26, 1, 0, 0, 0, 32, 80,156, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,160, 70,110, 27, 1, 0, 0, 0,164, 0, 0, 0,
+ 1, 0, 0, 0,144, 74,110, 27, 1, 0, 0, 0, 64, 65,110, 27, 1, 0, 0, 0,128, 66,110, 27, 1, 0, 0, 0, 64, 69,110, 27,
1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 82,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 84,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 71,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48, 73,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 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,
19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63,
@@ -4866,8 +4929,8 @@ char datatoc_B_blend[]= {
25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 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, 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, 16, 84,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 82,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 73,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 71,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4876,8 +4939,8 @@ char datatoc_B_blend[]= {
80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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,112, 85,156, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,112, 85,156, 26,
- 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 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, 48, 10,136, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 10,136, 27,
+ 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 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,128,
0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 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,
@@ -4901,23 +4964,26 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0,160, 88,156, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,128, 81,156, 26, 1, 0, 0, 0,176, 82,156, 26, 1, 0, 0, 0, 16, 84,156, 26, 1, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,144, 74,110, 27, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,160, 70,110, 27, 1, 0, 0, 0,208, 71,110, 27, 1, 0, 0, 0, 48, 73,110, 27, 1, 0, 0, 0, 1, 0, 0, 0,
51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0,
1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 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, 0, 0,
7, 0, 10, 0,159, 0, 0, 0, 1, 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, 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, 0, 90,156, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,125,156, 26, 1, 0, 0, 0,224, 56,156, 26,
- 1, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 96, 42,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 2, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,167, 1, 0, 0, 18, 18,255, 2,
-168, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 93,156, 26, 1, 0, 0, 0,144,124,156, 26,
- 1, 0, 0, 0,224, 90,156, 26, 1, 0, 0, 0, 64, 92,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 90,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 92,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+160, 0, 0, 0,240, 75,110, 27, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,105,110, 27, 1, 0, 0, 0, 0, 46,110, 27,
+ 1, 0, 0, 0,192,111,109, 27, 1, 0, 0, 0, 32,112,109, 27, 1, 0, 0, 0, 96,111,109, 27, 1, 0, 0, 0,160,110,109, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 2, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 18, 18,255, 2,
+192, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 79,110, 27, 1, 0, 0, 0,128,104,110, 27,
+ 1, 0, 0, 0,208, 76,110, 27, 1, 0, 0, 0, 48, 78,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208, 76,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48, 78,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 63, 68, 0, 0, 0, 0, 0, 0,208, 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,
254, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63,
@@ -4926,18 +4992,18 @@ char datatoc_B_blend[]= {
25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 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, 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, 64, 92,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 90,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0,128, 63, 68, 0, 0, 0, 0, 0, 0, 65, 67, 0, 0, 0, 0, 0,128, 59, 68, 0, 0, 0, 0, 0, 0,199, 67,238, 2, 0, 0,
-255, 2, 0, 0, 0, 0, 0, 0,141, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-237, 2, 0, 0, 0, 0, 0, 0,141, 1, 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, 2, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,255, 2,142, 1,238, 2,142, 1, 0, 0, 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, 48, 78,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 76,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0,128, 63, 68, 0, 0, 0, 0, 0, 0, 51, 67, 0, 0, 0, 0, 0,128, 59, 68, 0, 0, 0, 0, 0, 0,211, 67,238, 2, 0, 0,
+255, 2, 0, 0, 0, 0, 0, 0,165, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+237, 2, 0, 0, 0, 0, 0, 0,165, 1, 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, 2, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,255, 2,166, 1,238, 2,166, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 2, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,
-167, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2,142, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+191, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2,166, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,136, 1, 0, 0,160, 93,156, 26,
- 1, 0, 0, 0,177, 0, 0, 0, 1, 0, 0, 0, 32, 98,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,136, 1, 0, 0,144, 79,110, 27,
+ 1, 0, 0, 0,178, 0, 0, 0, 1, 0, 0, 0, 48, 14,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 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, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4949,8 +5015,8 @@ 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, 68, 65, 84, 65, 40, 1, 0, 0, 96, 95,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192, 96,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 81,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 82,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 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,
239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63,
@@ -4959,8 +5025,8 @@ char datatoc_B_blend[]= {
25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 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, 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,192, 96,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 95,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 82,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0,224,189, 68, 0, 0, 0, 0, 0,128,192, 67, 0, 6,188, 63,254,176,189, 68, 0, 0, 0, 0, 0,128,192, 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,
239, 5, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60,
@@ -4969,9 +5035,9 @@ char datatoc_B_blend[]= {
155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 2, 0, 0, 32, 98,156, 26,
- 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,176,103,156, 26, 1, 0, 0, 0,160, 93,156, 26, 1, 0, 0, 0, 96, 95,156, 26,
- 1, 0, 0, 0,192, 96,156, 26, 1, 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, 68, 65, 84, 65,144, 2, 0, 0, 48, 14,136, 27,
+ 1, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0,208, 86,110, 27, 1, 0, 0, 0,144, 79,110, 27, 1, 0, 0, 0, 80, 81,110, 27,
+ 1, 0, 0, 0,176, 82,110, 27, 1, 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, 12, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4991,7 +5057,7 @@ 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, 68, 65, 84, 65,
- 40, 1, 0, 0,240,100,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80,102,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0, 16, 84,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112, 85,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0,
0, 0,208, 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,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68,
@@ -5001,7 +5067,7 @@ char datatoc_B_blend[]= {
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, 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, 80,102,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,100,156, 26,
+ 40, 1, 0, 0,112, 85,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 84,110, 27,
1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,134,137,182,195,195, 68, 91, 68, 30,222,207, 66,
116, 8,204, 67,223, 5, 0, 0,240, 5, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70,
@@ -5011,17 +5077,17 @@ 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, 68, 65, 84, 65,
- 32, 1, 0, 0,176,103,156, 26, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 48,109,156, 26, 1, 0, 0, 0, 32, 98,156, 26,
- 1, 0, 0, 0,240,100,156, 26, 1, 0, 0, 0, 80,102,156, 26, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 32, 1, 0, 0,208, 86,110, 27, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 80, 92,110, 27, 1, 0, 0, 0, 48, 14,136, 27,
+ 1, 0, 0, 0, 16, 84,110, 27, 1, 0, 0, 0,112, 85,110, 27, 1, 0, 0, 0, 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, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 52, 81, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 52, 81, 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, 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,105,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,106,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 88,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144, 89,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 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,
239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63,
@@ -5030,8 +5096,8 @@ char datatoc_B_blend[]= {
111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 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, 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,112,106,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,107,156, 26, 1, 0, 0, 0, 16,105,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 89,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240, 90,110, 27, 1, 0, 0, 0, 48, 88,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5040,8 +5106,8 @@ char datatoc_B_blend[]= {
18, 4, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,107,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,106,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 90,110, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 89,110, 27, 1, 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,
17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60,
@@ -5050,16 +5116,16 @@ char datatoc_B_blend[]= {
18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0, 48,109,156, 26,
- 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,112,120,156, 26, 1, 0, 0, 0,176,103,156, 26, 1, 0, 0, 0, 16,105,156, 26,
- 1, 0, 0, 0,208,107,156, 26, 1, 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, 68, 65, 84, 65,240, 0, 0, 0, 80, 92,110, 27,
+ 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 96,100,110, 27, 1, 0, 0, 0,208, 86,110, 27, 1, 0, 0, 0, 48, 88,110, 27,
+ 1, 0, 0, 0,240, 90,110, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0, 96,110,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,111,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0,128, 93,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224, 94,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0,
0, 0,208, 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,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
@@ -5069,7 +5135,7 @@ char datatoc_B_blend[]= {
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, 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,192,111,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,113,156, 26, 1, 0, 0, 0, 96,110,156, 26,
+ 40, 1, 0, 0,224, 94,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64, 96,110, 27, 1, 0, 0, 0,128, 93,110, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196,
0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5079,7 +5145,7 @@ char datatoc_B_blend[]= {
0, 0, 5, 0, 3, 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, 68, 65, 84, 65,
- 40, 1, 0, 0, 32,113,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,114,156, 26, 1, 0, 0, 0,192,111,156, 26,
+ 40, 1, 0, 0, 64, 96,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 97,110, 27, 1, 0, 0, 0,224, 94,110, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194,
0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5089,7 +5155,7 @@ char datatoc_B_blend[]= {
0, 0, 6, 0, 34, 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, 68, 65, 84, 65,
- 40, 1, 0, 0,128,114,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,115,156, 26, 1, 0, 0, 0, 32,113,156, 26,
+ 40, 1, 0, 0,160, 97,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 99,110, 27, 1, 0, 0, 0, 64, 96,110, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196,
0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5099,7 +5165,7 @@ char datatoc_B_blend[]= {
0, 0, 4, 0, 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,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,224,115,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,114,156, 26,
+ 40, 1, 0, 0, 0, 99,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 97,110, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5108,8 +5174,8 @@ char datatoc_B_blend[]= {
128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 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, 64,117,156, 26, 1, 0, 0, 0, 68, 65, 84, 65,
-248, 2, 0, 0, 64,117,156, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 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, 48, 18,136, 27, 1, 0, 0, 0, 68, 65, 84, 65,
+ 88, 3, 0, 0, 48, 18,136, 27, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 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,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63,
0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62,
@@ -5133,17 +5199,20 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0,112,120,156, 26, 1, 0, 0, 0,157, 0, 0, 0,
- 1, 0, 0, 0,144,124,156, 26, 1, 0, 0, 0, 48,109,156, 26, 1, 0, 0, 0, 96,110,156, 26, 1, 0, 0, 0,224,115,156, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 1, 0, 0, 96,100,110, 27, 1, 0, 0, 0,158, 0, 0, 0,
+ 1, 0, 0, 0,128,104,110, 27, 1, 0, 0, 0, 80, 92,110, 27, 1, 0, 0, 0,128, 93,110, 27, 1, 0, 0, 0, 0, 99,110, 27,
1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 68,132, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63,
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, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 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, 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,208,121,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,123,156, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,101,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,103,110, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 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,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68,
@@ -5153,8 +5222,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,152, 4, 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, 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, 48,123,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,208,121,156, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,103,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,192,101,110, 27, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,
246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63,
0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4,
@@ -5163,40 +5232,40 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0,144,124,156, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,112,120,156, 26, 1, 0, 0, 0,208,121,156, 26, 1, 0, 0, 0, 48,123,156, 26, 1, 0, 0, 0, 15, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,128,104,110, 27, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,100,110, 27, 1, 0, 0, 0,192,101,110, 27, 1, 0, 0, 0, 32,103,110, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 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, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,144,125,156, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160,156,156, 26,
- 1, 0, 0, 0, 0, 90,156, 26, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0, 0, 42,156, 26,
- 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,169, 1, 0, 0,
- 38, 4, 0, 0, 9, 9,240, 5,126, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,129,156, 26,
- 1, 0, 0, 0,160,155,156, 26, 1, 0, 0, 0,112,126,156, 26, 1, 0, 0, 0,208,127,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0,112,126,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,127,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0,
+ 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,128,105,110, 27, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,116,110, 27,
+ 1, 0, 0, 0,240, 75,110, 27, 1, 0, 0, 0, 0,111,109, 27, 1, 0, 0, 0,128,109,109, 27, 1, 0, 0, 0, 64,110,109, 27,
+ 1, 0, 0, 0, 96,111,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,193, 1, 0, 0,
+ 99, 4, 0, 0, 9, 9,240, 5,163, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 22,136, 27,
+ 1, 0, 0, 0, 64,234,132, 29, 1, 0, 0, 0, 96,106,110, 27, 1, 0, 0, 0,192,107,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 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, 96,106,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,107,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0,
0, 0,208, 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,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68,
0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5,
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,
-239, 5, 0, 0,169, 1, 0, 0,194, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0,
+239, 5, 0, 0,193, 1, 0, 0,218, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 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, 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,208,127,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,126,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,170, 86,234, 67, 86, 74,131, 68,206,103, 56, 67,
- 25, 76,209, 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,239, 5, 0, 0, 0, 0, 0, 0, 99, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,240, 5,100, 2,240, 5,
-100, 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,
-239, 5, 0, 0,195, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,100, 2,
+ 40, 1, 0, 0,192,107,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,106,110, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,168, 86,234, 67, 86, 74,131, 68,133, 83, 49, 67,
+ 62,214,212, 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,239, 5, 0, 0, 0, 0, 0, 0,136, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,240, 5,137, 2,240, 5,
+137, 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,
+239, 5, 0, 0,219, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,137, 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, 68, 65, 84, 65,
-144, 2, 0, 0, 48,129,156, 26, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,192,134,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+144, 2, 0, 0, 48, 22,136, 27, 1, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0,224,111,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 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, 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,
@@ -5217,7 +5286,7 @@ 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,132,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,133,156, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,109,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,110,110, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 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,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68,
@@ -5227,8 +5296,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,240, 5, 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, 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, 96,133,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,132,156, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,132,137,182,195,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,110,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32,109,110, 27, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,132,137,182,195,
194, 68, 91, 68,112,158, 93, 65, 8, 19,249, 67,223, 5, 0, 0,240, 5, 0, 0, 18, 0, 0, 0, 91, 2, 0, 0, 0, 0, 0, 0,
222, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 18, 0, 0, 0, 91, 2, 0, 0, 0, 0,128, 63,
0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4,
@@ -5237,17 +5306,17 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,240, 5, 92, 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, 68, 65, 84, 65, 32, 1, 0, 0,192,134,156, 26, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 64,140,156, 26,
- 1, 0, 0, 0, 48,129,156, 26, 1, 0, 0, 0, 0,132,156, 26, 1, 0, 0, 0, 96,133,156, 26, 1, 0, 0, 0, 16, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,224,111,110, 27, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0,144, 2,133, 29,
+ 1, 0, 0, 0, 48, 22,136, 27, 1, 0, 0, 0, 32,109,110, 27, 1, 0, 0, 0,128,110,110, 27, 1, 0, 0, 0, 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, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
57, 52, 81, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0, 32,136,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,137,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0, 64,113,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160,114,110, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0,
0, 0,216, 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,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68,
@@ -5257,7 +5326,7 @@ char datatoc_B_blend[]= {
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, 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,128,137,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,138,156, 26, 1, 0, 0, 0, 32,136,156, 26,
+ 40, 1, 0, 0,160,114,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48, 1,133, 29, 1, 0, 0, 0, 64,113,110, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5267,7 +5336,7 @@ char datatoc_B_blend[]= {
0, 0, 4, 0, 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,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,224,138,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,137,156, 26,
+ 40, 1, 0, 0, 48, 1,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,114,110, 27,
1, 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, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72,
@@ -5277,15 +5346,15 @@ 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, 68, 65, 84, 65,
-240, 0, 0, 0, 64,140,156, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,128,151,156, 26, 1, 0, 0, 0,192,134,156, 26,
- 1, 0, 0, 0, 32,136,156, 26, 1, 0, 0, 0,224,138,156, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+240, 0, 0, 0,144, 2,133, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,224,238,132, 29, 1, 0, 0, 0,224,111,110, 27,
+ 1, 0, 0, 0, 64,113,110, 27, 1, 0, 0, 0, 48, 1,133, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,141,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,142,156, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 3,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,231,132, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 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,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68,
@@ -5295,8 +5364,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,232, 4, 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, 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,208,142,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,144,156, 26,
- 1, 0, 0, 0,112,141,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,231,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,232,132, 29,
+ 1, 0, 0, 0,192, 3,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,
142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0,
@@ -5305,8 +5374,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48,144,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,145,156, 26,
- 1, 0, 0, 0,208,142,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,232,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,236,132, 29,
+ 1, 0, 0, 0,128,231,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,
231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,
142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4,
@@ -5315,8 +5384,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,145,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,146,156, 26,
- 1, 0, 0, 0, 48,144,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,236,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,237,132, 29,
+ 1, 0, 0, 0,224,232,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,
162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0,
@@ -5325,8 +5394,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,146,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,144,145,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,237,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32,236,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5334,8 +5403,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0,232, 4, 24, 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, 80,148,156, 26,
- 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 80,148,156, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 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, 48, 26,136, 27,
+ 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 26,136, 27, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 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,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62,
51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,
@@ -5359,18 +5428,21 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0,128,151,156, 26,
- 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,160,155,156, 26, 1, 0, 0, 0, 64,140,156, 26, 1, 0, 0, 0,112,141,156, 26,
- 1, 0, 0, 0,240,146,156, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 68, 65, 84, 65, 32, 1, 0, 0,224,238,132, 29,
+ 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 64,234,132, 29, 1, 0, 0, 0,144, 2,133, 29, 1, 0, 0, 0,192, 3,133, 29,
+ 1, 0, 0, 0,128,237,132, 29, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0,
- 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66,
0, 0,128, 63, 0, 0,128, 63, 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, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 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, 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,224,152,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 64,154,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,240,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,160,241,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 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,151, 4, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -5379,8 +5451,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 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, 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, 64,154,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,152,156, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,241,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,240,132, 29, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0,
0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,
121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0,
@@ -5389,20 +5461,20 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0,160,155,156, 26, 1, 0, 0, 0,172, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,151,156, 26, 1, 0, 0, 0,224,152,156, 26, 1, 0, 0, 0, 64,154,156, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 64,234,132, 29, 1, 0, 0, 0,173, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,238,132, 29, 1, 0, 0, 0, 64,240,132, 29, 1, 0, 0, 0,160,241,132, 29,
1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,160,156,156, 26, 1, 0, 0, 0,194, 0, 0, 0,
- 1, 0, 0, 0, 48,192,156, 26, 1, 0, 0, 0,144,125,156, 26, 1, 0, 0, 0,192, 39,156, 26, 1, 0, 0, 0,192, 42,156, 26,
- 1, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-239, 2, 0, 0, 0, 0, 0, 0,167, 1, 0, 0, 18, 18,240, 2,168, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 64,160,156, 26, 1, 0, 0, 0, 48,191,156, 26, 1, 0, 0, 0,128,157,156, 26, 1, 0, 0, 0,224,158,156, 26,
+ 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 0,116,110, 27, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 16,113,111, 27, 1, 0, 0, 0,128,105,110, 27, 1, 0, 0, 0,176,151,110, 27, 1, 0, 0, 0, 0,111,109, 27,
+ 1, 0, 0, 0, 32,112,109, 27, 1, 0, 0, 0,192,111,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+239, 2, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 18, 18,240, 2,192, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,192,245,132, 29, 1, 0, 0, 0, 16,112,111, 27, 1, 0, 0, 0, 0,243,132, 29, 1, 0, 0, 0, 96,244,132, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,157,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,158,156, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,243,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96,244,132, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0, 60, 68, 0, 0, 0, 0, 0, 0,208, 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,239, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68,
@@ -5412,17 +5484,17 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,240, 2, 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, 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,224,158,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,128,157,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 59, 68, 0, 0, 0, 0, 0, 0, 51, 67, 0, 0, 0, 0,
- 1,192, 55, 68, 0, 0, 0, 0, 0, 0,199, 67,223, 2, 0, 0,240, 2, 0, 0, 0, 0, 0, 0,141, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 2, 0, 0, 0, 0, 0, 0,141, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,244,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,243,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 59, 68, 0, 0, 0, 0, 0, 0, 51, 67, 0, 0, 0, 0,
+ 0,192, 55, 68, 0, 0, 0, 0, 0, 0,211, 67,223, 2, 0, 0,240, 2, 0, 0, 0, 0, 0, 0,165, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 2, 0, 0, 0, 0, 0, 0,165, 1, 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, 2, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4,
- 10, 0,240, 2,142, 1,223, 2,142, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,239, 2, 0, 0, 26, 0, 0, 0,167, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,240, 2,142, 1, 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,240, 2,166, 1,223, 2,166, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,239, 2, 0, 0, 26, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240, 2,166, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,136, 1, 0, 0, 64,160,156, 26, 1, 0, 0, 0,177, 0, 0, 0, 1, 0, 0, 0,192,164,156, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65,136, 1, 0, 0,192,245,132, 29, 1, 0, 0, 0,178, 0, 0, 0, 1, 0, 0, 0, 48, 30,136, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5435,7 +5507,7 @@ 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,112,121,116,104,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, 68, 65, 84, 65, 40, 1, 0, 0, 0,162,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,163,156, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,247,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,248,132, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 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,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68,
@@ -5445,8 +5517,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,240, 5, 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, 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, 96,163,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,162,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,128,192, 67, 0, 6,188, 63,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,248,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128,247,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,128,192, 67, 0, 6,188, 63,
254,176,189, 68, 0, 0, 0, 0, 0,128,192, 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,239, 5, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4,
@@ -5455,8 +5527,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 2, 0, 0,192,164,156, 26, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 80,170,156, 26,
- 1, 0, 0, 0, 64,160,156, 26, 1, 0, 0, 0, 0,162,156, 26, 1, 0, 0, 0, 96,163,156, 26, 1, 0, 0, 0, 9, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, 48, 30,136, 27, 1, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0,160,228,109, 27,
+ 1, 0, 0, 0,192,245,132, 29, 1, 0, 0, 0,128,247,132, 29, 1, 0, 0, 0,224,248,132, 29, 1, 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, 12, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5476,8 +5548,8 @@ 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, 68, 65, 84, 65, 40, 1, 0, 0,144,167,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,240,168,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,250,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,160,251,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 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,239, 5, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -5486,8 +5558,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 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, 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,240,168,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,167,156, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,251,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,250,132, 29, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193,
0, 0, 0, 68,134,137,182,195,195, 68, 91, 68, 30,222,207, 66,116, 8,204, 67,223, 5, 0, 0,240, 5, 0, 0, 18, 0, 0, 0,
129, 1, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 18, 0, 0, 0,
129, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0,
@@ -5496,17 +5568,17 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 1, 0, 0, 80,170,156, 26, 1, 0, 0, 0,173, 0, 0, 0,
- 1, 0, 0, 0,208,175,156, 26, 1, 0, 0, 0,192,164,156, 26, 1, 0, 0, 0,144,167,156, 26, 1, 0, 0, 0,240,168,156, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,160,228,109, 27, 1, 0, 0, 0,174, 0, 0, 0,
+ 1, 0, 0, 0, 0,230,109, 27, 1, 0, 0, 0, 48, 30,136, 27, 1, 0, 0, 0, 64,250,132, 29, 1, 0, 0, 0,160,251,132, 29,
1, 0, 0, 0, 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, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 58, 52, 81, 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, 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,171,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,173,156, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,136,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160,137,132, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0,
0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 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,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68,
@@ -5516,8 +5588,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,240, 5, 27, 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, 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, 16,173,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,174,156, 26,
- 1, 0, 0, 0,176,171,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,137,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,139,132, 29,
+ 1, 0, 0, 0, 64,136,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5526,8 +5598,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,174,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 16,173,156, 26, 1, 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, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,139,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,160,137,132, 29, 1, 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, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,
239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65,
0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
@@ -5536,16 +5608,16 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0,208,175,156, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 16,187,156, 26,
- 1, 0, 0, 0, 80,170,156, 26, 1, 0, 0, 0,176,171,156, 26, 1, 0, 0, 0,112,174,156, 26, 1, 0, 0, 0, 8, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 0,230,109, 27, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,240,107,111, 27,
+ 1, 0, 0, 0,160,228,109, 27, 1, 0, 0, 0, 64,136,132, 29, 1, 0, 0, 0, 0,139,132, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,177,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 96,178,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0,
+ 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,140,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,192,141,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 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,231, 4, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -5554,8 +5626,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 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, 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, 96,178,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,192,179,156, 26, 1, 0, 0, 0, 0,177,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,141,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 32,143,132, 29, 1, 0, 0, 0, 96,140,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
43, 3, 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, 64, 10, 0, 0, 0,
@@ -5564,8 +5636,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,192,179,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 32,181,156, 26, 1, 0, 0, 0, 96,178,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,143,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,128,144,132, 29, 1, 0, 0, 0,192,141,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
119, 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, 64, 10, 0, 0, 0,
@@ -5574,8 +5646,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32,181,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,128,182,156, 26, 1, 0, 0, 0,192,179,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,144,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,224,145,132, 29, 1, 0, 0, 0, 32,143,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,
121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,
121, 2, 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, 64, 10, 0, 0, 0,
@@ -5584,8 +5656,8 @@ char datatoc_B_blend[]= {
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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,182,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,181,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,145,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,144,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5594,7 +5666,7 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 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,224,183,156, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,224,183,156, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 0, 0, 0, 0, 48, 34,136, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 34,136, 27, 1, 0, 0, 0,157, 0, 0, 0,
1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 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,128, 0, 0, 0,128,226,215,163,188,
0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
@@ -5618,18 +5690,21 @@ 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,
- 32, 1, 0, 0, 16,187,156, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 48,191,156, 26, 1, 0, 0, 0,208,175,156, 26,
- 1, 0, 0, 0, 0,177,156, 26, 1, 0, 0, 0,128,182,156, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 32, 1, 0, 0,240,107,111, 27, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 16,112,111, 27, 1, 0, 0, 0, 0,230,109, 27,
+ 1, 0, 0, 0, 96,140,132, 29, 1, 0, 0, 0,224,145,132, 29, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 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, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8,
0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 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, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0,
1, 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, 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,112,188,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,189,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,109,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,110,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 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,
151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63,
@@ -5638,8 +5713,8 @@ char datatoc_B_blend[]= {
126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 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, 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,208,189,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,188,156, 26, 1, 0, 0, 0, 0, 0, 64,192,
+ 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,176,110,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,109,111, 27, 1, 0, 0, 0, 0, 0, 64,192,
0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61,
@@ -5648,59 +5723,59 @@ char datatoc_B_blend[]= {
248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, 48,191,156, 26,
- 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,187,156, 26, 1, 0, 0, 0,112,188,156, 26,
- 1, 0, 0, 0,208,189,156, 26, 1, 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, 68, 65, 84, 65,200, 0, 0, 0, 16,112,111, 27,
+ 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,107,111, 27, 1, 0, 0, 0, 80,109,111, 27,
+ 1, 0, 0, 0,176,110,111, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 48,192,156, 26,
- 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,156,156, 26, 1, 0, 0, 0, 64, 44,156, 26,
- 1, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 17, 3, 0, 0, 38, 4, 0, 0, 3, 3,144, 1, 22, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,195,156, 26, 1, 0, 0, 0,128,213,156, 26, 1, 0, 0, 0, 16,193,156, 26,
- 1, 0, 0, 0,112,194,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,193,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,112,194,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 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, 16,113,111, 27,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116,110, 27, 1, 0, 0, 0,128,112,109, 27,
+ 1, 0, 0, 0, 64,110,109, 27, 1, 0, 0, 0,224,109,109, 27, 1, 0, 0, 0,224,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 65, 3, 0, 0, 99, 4, 0, 0, 3, 3,144, 1, 35, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,116,111, 27, 1, 0, 0, 0, 48,131,111, 27, 1, 0, 0, 0,240,113,111, 27,
+ 1, 0, 0, 0, 80,115,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,113,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 80,115,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,200, 67, 0, 0, 0, 0, 0, 0,208, 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,143, 1, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,128,149, 67, 0, 0,200, 65, 0,128,149, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
2, 0, 3, 3, 4, 0, 12, 4, 10, 0,144, 1, 26, 0,144, 1, 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,241, 5, 0, 0,128, 7, 0, 0, 17, 3, 0, 0, 42, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 65, 3, 0, 0, 90, 3, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 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, 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,112,194,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,193,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,128,191, 67, 0, 0,106,195, 0, 0, 0, 0,127, 1, 0, 0,144, 1, 0, 0, 18, 0, 0, 0,
-251, 0, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 18, 0, 0, 0,
-251, 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, 18, 0, 0, 0,
- 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,144, 1,252, 0,127, 1,234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 43, 3, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1,252, 0, 0, 0, 0, 0, 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, 80,115,111, 27, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,113,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,128,191, 67, 0, 0,119,195, 0, 0, 0, 0,127, 1, 0, 0,144, 1, 0, 0, 18, 0, 0, 0,
+ 8, 1, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 18, 0, 0, 0,
+ 8, 1, 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, 18, 0, 0, 0,
+ 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,144, 1, 9, 1,127, 1,247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 91, 3, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,195,156, 26, 1, 0, 0, 0,166, 0, 0, 0,
- 1, 0, 0, 0, 0,201,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,116,111, 27, 1, 0, 0, 0,167, 0, 0, 0,
+ 1, 0, 0, 0,224,121,111, 27, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,183,149, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64,113,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 16, 0, 0, 0, 80,183,149, 26, 1, 0, 0, 0,218, 0, 0, 0,
- 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 48,197,156, 26, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 48,197,156, 26,
- 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 19, 0, 0, 0,
- 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 21, 0, 1, 0,
- 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,137,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,148,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0,240,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,146,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 48,160, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,133,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,132,157, 26, 1, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0, 64,198,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,199,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, 64,113,109, 27, 1, 0, 0, 0,219, 0, 0, 0,
+ 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 16,118,111, 27, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 16,118,111, 27,
+ 1, 0, 0, 0,218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 19, 0, 0, 0,
+ 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 21, 0, 1, 0,
+ 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 58,132, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 48, 74,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,171,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 48, 86,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,198,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 48, 80,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 54,132, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 32,163,176, 21, 1, 0, 0, 0, 68, 65, 84, 65,
+ 40, 1, 0, 0, 32,119,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,120,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0,
0, 0,248, 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, 43, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67,
@@ -5710,7 +5785,7 @@ char datatoc_B_blend[]= {
0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0,160,199,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,198,156, 26,
+ 40, 1, 0, 0,128,120,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,119,111, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0,128,141, 67, 0, 0, 62,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,141, 67, 0, 0,246,194,
0, 0, 0, 0, 27, 1, 0, 0, 44, 1, 0, 0, 18, 0, 0, 0,140, 0, 0, 0, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 0, 26, 1, 0, 0, 18, 0, 0, 0,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5720,16 +5795,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, 68, 65, 84, 65,
- 0, 1, 0, 0, 0,201,156, 26, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 96,206,156, 26, 1, 0, 0, 0,208,195,156, 26,
- 1, 0, 0, 0, 64,198,156, 26, 1, 0, 0, 0,160,199,156, 26, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0,224,121,111, 27, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 64,127,111, 27, 1, 0, 0, 0,176,116,111, 27,
+ 1, 0, 0, 0, 32,119,111, 27, 1, 0, 0, 0,128,120,111, 27, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,202,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,203,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,123,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,124,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 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,
227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63,
@@ -5738,8 +5813,8 @@ char datatoc_B_blend[]= {
111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 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, 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,160,203,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,205,156, 26, 1, 0, 0, 0, 64,202,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,124,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,125,111, 27, 1, 0, 0, 0, 32,123,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5748,8 +5823,8 @@ char datatoc_B_blend[]= {
235, 1, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,205,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,203,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,125,111, 27,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,124,111, 27, 1, 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,
17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60,
@@ -5758,16 +5833,16 @@ char datatoc_B_blend[]= {
235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 0, 0, 0, 96,206,156, 26,
- 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,128,213,156, 26, 1, 0, 0, 0, 0,201,156, 26, 1, 0, 0, 0, 64,202,156, 26,
- 1, 0, 0, 0, 0,205,156, 26, 1, 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, 68, 65, 84, 65,240, 0, 0, 0, 64,127,111, 27,
+ 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 48,131,111, 27, 1, 0, 0, 0,224,121,111, 27, 1, 0, 0, 0, 32,123,111, 27,
+ 1, 0, 0, 0,224,125,111, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0,144,207,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,208,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0,112,128,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,129,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0,
0, 0,208, 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, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
@@ -5777,7 +5852,7 @@ char datatoc_B_blend[]= {
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, 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,240,208,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,207,156, 26,
+ 40, 1, 0, 0,208,129,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,128,111, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5786,8 +5861,8 @@ char datatoc_B_blend[]= {
108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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, 80,210,156, 26, 1, 0, 0, 0, 68, 65, 84, 65,
-248, 2, 0, 0, 80,210,156, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 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, 48, 38,136, 27, 1, 0, 0, 0, 68, 65, 84, 65,
+ 88, 3, 0, 0, 48, 38,136, 27, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 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,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 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,
@@ -5811,92 +5886,95 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0,128,213,156, 26, 1, 0, 0, 0,157, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,206,156, 26, 1, 0, 0, 0,144,207,156, 26, 1, 0, 0, 0,240,208,156, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 1, 0, 0, 48,131,111, 27, 1, 0, 0, 0,158, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,127,111, 27, 1, 0, 0, 0,112,128,111, 27, 1, 0, 0, 0,208,129,111, 27,
1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 68,132, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 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, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63,
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, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 96,215,156, 26, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0,112, 24,157, 26,
- 1, 0, 0, 0,176, 38,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86,
+ 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,128, 74,111, 27, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,192,159,176, 21,
+ 1, 0, 0, 0,240, 38,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86,
32, 69,100,105,116,105,110,103, 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,112,216,156, 26, 1, 0, 0, 0, 16,219,156, 26, 1, 0, 0, 0,112,219,156, 26, 1, 0, 0, 0, 48,223,156, 26,
- 1, 0, 0, 0,144,223,156, 26, 1, 0, 0, 0,208,249,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48, 66, 25, 4, 1, 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, 68, 65, 84, 65, 32, 0, 0, 0,112,216,156, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0,208,216,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,216,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48,217,156, 26,
- 1, 0, 0, 0,112,216,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0, 48,217,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,217,156, 26, 1, 0, 0, 0,208,216,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,217,156, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0, 48,217,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0, 80,218,156, 26, 1, 0, 0, 0,144,217,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 4,
- 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,218,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176,218,156, 26,
- 1, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 39, 4, 0, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0,176,218,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16,219,156, 26, 1, 0, 0, 0, 80,218,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196, 3, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16,219,156, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,218,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,196, 3, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,219,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,208,219,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,216,156, 26, 1, 0, 0, 0, 48,217,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,219,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 48,220,156, 26, 1, 0, 0, 0,112,219,156, 26, 1, 0, 0, 0,208,216,156, 26, 1, 0, 0, 0,240,217,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,220,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,144,220,156, 26, 1, 0, 0, 0,208,219,156, 26, 1, 0, 0, 0, 48,217,156, 26, 1, 0, 0, 0, 80,218,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,220,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,240,220,156, 26, 1, 0, 0, 0, 48,220,156, 26, 1, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0, 80,218,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,220,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 80,221,156, 26, 1, 0, 0, 0,144,220,156, 26, 1, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0,176,218,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,221,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,176,221,156, 26, 1, 0, 0, 0,240,220,156, 26, 1, 0, 0, 0,112,216,156, 26, 1, 0, 0, 0, 16,219,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,221,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 16,222,156, 26, 1, 0, 0, 0, 80,221,156, 26, 1, 0, 0, 0,112,216,156, 26, 1, 0, 0, 0,240,217,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,222,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,112,222,156, 26, 1, 0, 0, 0,176,221,156, 26, 1, 0, 0, 0,176,218,156, 26, 1, 0, 0, 0, 16,219,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,222,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,208,222,156, 26, 1, 0, 0, 0, 16,222,156, 26, 1, 0, 0, 0, 80,218,156, 26, 1, 0, 0, 0,176,218,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,222,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 48,223,156, 26, 1, 0, 0, 0,112,222,156, 26, 1, 0, 0, 0,144,217,156, 26, 1, 0, 0, 0, 16,219,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,223,156, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,222,156, 26, 1, 0, 0, 0,144,217,156, 26, 1, 0, 0, 0, 80,218,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,144,223,156, 26, 1, 0, 0, 0,194, 0, 0, 0,
- 1, 0, 0, 0, 48,227,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0,208,216,156, 26,
- 1, 0, 0, 0, 48,217,156, 26, 1, 0, 0, 0, 80,218,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 7, 0, 0, 40, 4, 0, 0, 66, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,240, 23,157, 26, 1, 0, 0, 0,240, 23,157, 26, 1, 0, 0, 0,112,224,156, 26, 1, 0, 0, 0,208,225,156, 26,
+ 0, 0, 0, 0, 64,147,132, 29, 1, 0, 0, 0, 16, 77,111, 27, 1, 0, 0, 0,112, 71,111, 27, 1, 0, 0, 0,208,203,132, 29,
+ 1, 0, 0, 0, 48,204,132, 29, 1, 0, 0, 0,224, 75,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 0, 0, 0, 64,147,132, 29, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 16,133,111, 27, 1, 0, 0, 0, 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, 32, 0, 0, 0, 16,133,111, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,133,111, 27,
+ 1, 0, 0, 0, 64,147,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,112,133,111, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144, 75,111, 27, 1, 0, 0, 0, 16,133,111, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 75,111, 27,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240, 75,111, 27, 1, 0, 0, 0,112,133,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240, 75,111, 27, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 80, 76,111, 27, 1, 0, 0, 0,144, 75,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 4,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80, 76,111, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176, 76,111, 27,
+ 1, 0, 0, 0,240, 75,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,176, 76,111, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16, 77,111, 27, 1, 0, 0, 0, 80, 76,111, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196, 3,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16, 77,111, 27,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 76,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,196, 3, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112, 71,111, 27, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,208, 71,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,133,111, 27, 1, 0, 0, 0,112,133,111, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208, 71,111, 27, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 48, 72,111, 27, 1, 0, 0, 0,112, 71,111, 27, 1, 0, 0, 0,240, 75,111, 27, 1, 0, 0, 0, 16,133,111, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48, 72,111, 27, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,144, 72,111, 27, 1, 0, 0, 0,208, 71,111, 27, 1, 0, 0, 0, 80, 76,111, 27, 1, 0, 0, 0,112,133,111, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 72,111, 27, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,240, 72,111, 27, 1, 0, 0, 0, 48, 72,111, 27, 1, 0, 0, 0,240, 75,111, 27, 1, 0, 0, 0, 80, 76,111, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 72,111, 27, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 80, 73,111, 27, 1, 0, 0, 0,144, 72,111, 27, 1, 0, 0, 0,240, 75,111, 27, 1, 0, 0, 0,176, 76,111, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 73,111, 27, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,176, 73,111, 27, 1, 0, 0, 0,240, 72,111, 27, 1, 0, 0, 0, 16, 77,111, 27, 1, 0, 0, 0, 64,147,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176, 73,111, 27, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,176,202,132, 29, 1, 0, 0, 0, 80, 73,111, 27, 1, 0, 0, 0,240, 75,111, 27, 1, 0, 0, 0, 64,147,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,202,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 16,203,132, 29, 1, 0, 0, 0,176, 73,111, 27, 1, 0, 0, 0,176, 76,111, 27, 1, 0, 0, 0, 16, 77,111, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,203,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,112,203,132, 29, 1, 0, 0, 0,176,202,132, 29, 1, 0, 0, 0, 80, 76,111, 27, 1, 0, 0, 0,176, 76,111, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,203,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,208,203,132, 29, 1, 0, 0, 0, 16,203,132, 29, 1, 0, 0, 0,144, 75,111, 27, 1, 0, 0, 0, 16, 77,111, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,203,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,203,132, 29, 1, 0, 0, 0,144, 75,111, 27, 1, 0, 0, 0, 80, 76,111, 27,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 48,204,132, 29, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 16,205,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 75,111, 27, 1, 0, 0, 0, 16,133,111, 27,
+ 1, 0, 0, 0,112,133,111, 27, 1, 0, 0, 0, 80, 76,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, 7, 7,129, 7, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,125,132, 29, 1, 0, 0, 0, 0,125,132, 29, 1, 0, 0, 0, 80, 6,133, 29, 1, 0, 0, 0,176, 7,133, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,224,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,225,156, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 6,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 7,133, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 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,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68,
0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
10, 0,129, 7, 26, 0,129, 7, 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,128, 7, 0, 0, 40, 4, 0, 0, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0,129, 7, 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, 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,208,225,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,112,224,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,
-255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
-111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 7,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80, 6,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,
+255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 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, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4,
- 6, 0,129, 7, 7, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 4, 0, 0, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 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, 7, 0, 0,127, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,129, 7, 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, 68, 65, 84, 65,160, 0, 0, 0, 48,227,156, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208,249,156, 26,
- 1, 0, 0, 0,144,223,156, 26, 1, 0, 0, 0,112,216,156, 26, 1, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0,176,218,156, 26,
- 1, 0, 0, 0, 16,219,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 3, 0, 0, 0, 0, 0, 0,
- 38, 4, 0, 0, 6, 6,196, 3, 39, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,233,156, 26,
- 1, 0, 0, 0,208,248,156, 26, 1, 0, 0, 0, 16,228,156, 26, 1, 0, 0, 0, 96,232,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 16,205,132, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 75,133, 29,
+ 1, 0, 0, 0, 48,204,132, 29, 1, 0, 0, 0, 64,147,132, 29, 1, 0, 0, 0,240, 75,111, 27, 1, 0, 0, 0,176, 76,111, 27,
+ 1, 0, 0, 0, 16, 77,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 3, 0, 0, 0, 0, 0, 0,
+ 99, 4, 0, 0, 6, 6,196, 3,100, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,222,132, 29,
+ 1, 0, 0, 0,224, 74,133, 29, 1, 0, 0, 0, 16, 9,133, 29, 1, 0, 0, 0,208, 11,133, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0, 16,228,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,229,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0, 16, 9,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112, 10,133, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,113, 68, 0, 0, 0, 0,
0, 0,208, 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,195, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68,
@@ -5906,45 +5984,45 @@ char datatoc_B_blend[]= {
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, 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,112,229,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,232,156, 26, 1, 0, 0, 0, 16,228,156, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 4, 67,254,191,126,196,
- 0, 0, 0, 0,133, 0, 0, 0,150, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,132, 0, 0, 0, 0, 0, 0, 0,
- 17, 0, 0, 0, 0, 0, 0, 0,132, 0, 0, 0, 18, 0, 0, 0, 12, 4, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,150, 0, 13, 4,133, 0,
-251, 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,
-149, 0, 0, 0, 26, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 0, 13, 4,
+ 40, 1, 0, 0,112, 10,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 11,133, 29, 1, 0, 0, 0, 16, 9,133, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 67, 0,224,134,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 74, 67,255,255,134,196,
+ 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 18, 0, 0, 0, 73, 4, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 18, 0, 0, 0, 73, 4, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0, 74, 4,203, 0,
+ 56, 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,
+219, 0, 0, 0, 26, 0, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 74, 4,
0, 0, 4, 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,208,230,156, 26, 1, 0, 0, 0,208,230,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,221,132, 29, 1, 0, 0, 0, 96,221,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 88, 1, 0, 0,208,230,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 88, 1, 0, 0, 96,221,132, 29, 1, 0, 0, 0,194, 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, 73, 77, 65, 71, 69, 95, 80, 84, 95,103,112,101,
110, 99,105,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, 73, 77, 65, 71, 69, 95, 80, 84, 95,103,112,101,
110, 99,105,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, 71,114,101, 97,115,101, 32, 80,101,110, 99,105,
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,196,255,132, 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, 0, 0, 0,196,255,202, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,232,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,229,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0,
- 0, 0,128, 67,154,153, 69,191,205,204,226, 63,102,102,143,191, 51,179, 7, 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, 46, 3, 0, 0, 0, 0, 0, 0,
- 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 11,133, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 10,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0,
+ 0, 0,128, 67,154,153, 41,191,205,204,212, 63,154,153,155,191,205,204, 13, 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,232, 2, 0, 0, 0, 0, 0, 0,
+ 74, 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,150, 0, 0, 0,195, 3, 0, 0, 26, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 3, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0,195, 3, 0, 0, 26, 0, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 2, 74, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0,192,233,156, 26, 1, 0, 0, 0,167, 0, 0, 0,
- 1, 0, 0, 0,176,244,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0,240,222,132, 29, 1, 0, 0, 0,168, 0, 0, 0,
+ 1, 0, 0, 0,192, 70,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,100, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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,160,234,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0,236,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 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,160, 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,208,223,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 48,225,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 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,167, 2, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -5953,8 +6031,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 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, 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,236,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 96,237,156, 26, 1, 0, 0, 0,160,234,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,225,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,144,226,132, 29, 1, 0, 0, 0,208,223,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
43, 3, 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, 64, 10, 0, 0, 0,
@@ -5963,8 +6041,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,237,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,192,238,156, 26, 1, 0, 0, 0, 0,236,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,226,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,240,227,132, 29, 1, 0, 0, 0, 48,225,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
119, 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, 64, 10, 0, 0, 0,
@@ -5973,8 +6051,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 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, 68, 65, 84, 65, 40, 1, 0, 0,192,238,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 32,240,156, 26, 1, 0, 0, 0, 96,237,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,227,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 80,229,132, 29, 1, 0, 0, 0,144,226,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,
121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,
121, 2, 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, 64, 10, 0, 0, 0,
@@ -5983,8 +6061,8 @@ char datatoc_B_blend[]= {
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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,240,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,238,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,229,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,227,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5993,7 +6071,7 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 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,128,241,156, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,128,241,156, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 0, 0, 0, 0, 48, 42,136, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 42,136, 27, 1, 0, 0, 0,157, 0, 0, 0,
1, 0, 0, 0,226,225,191, 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,128, 0, 0, 0,128,226,215,163,188,
0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
@@ -6017,18 +6095,21 @@ 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,
- 32, 1, 0, 0,176,244,156, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,208,248,156, 26, 1, 0, 0, 0,192,233,156, 26,
- 1, 0, 0, 0,160,234,156, 26, 1, 0, 0, 0, 32,240,156, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 32, 1, 0, 0,192, 70,133, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0,224, 74,133, 29, 1, 0, 0, 0,240,222,132, 29,
+ 1, 0, 0, 0,208,223,132, 29, 1, 0, 0, 0, 80,229,132, 29, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 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, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8,
0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 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, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0,
1, 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, 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, 16,246,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,247,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 72,133, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128, 73,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 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,
151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63,
@@ -6037,8 +6118,8 @@ char datatoc_B_blend[]= {
126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 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, 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,112,247,156, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,246,156, 26, 1, 0, 0, 0, 0, 0, 64,192,
+ 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,128, 73,133, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 72,133, 29, 1, 0, 0, 0, 0, 0, 64,192,
0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61,
@@ -6047,21 +6128,21 @@ char datatoc_B_blend[]= {
248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0,208,248,156, 26,
- 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,244,156, 26, 1, 0, 0, 0, 16,246,156, 26,
- 1, 0, 0, 0,112,247,156, 26, 1, 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, 68, 65, 84, 65,200, 0, 0, 0,224, 74,133, 29,
+ 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 70,133, 29, 1, 0, 0, 0, 32, 72,133, 29,
+ 1, 0, 0, 0,128, 73,133, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,208,249,156, 26,
- 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,227,156, 26, 1, 0, 0, 0, 16,219,156, 26,
- 1, 0, 0, 0,176,218,156, 26, 1, 0, 0, 0, 80,218,156, 26, 1, 0, 0, 0,144,217,156, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,197, 3, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 38, 4, 0, 0, 1, 1,188, 3, 39, 4, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 18,157, 26, 1, 0, 0, 0,240, 22,157, 26, 1, 0, 0, 0,176,250,156, 26,
- 1, 0, 0, 0, 64, 14,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,250,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 16,252,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 89, 68, 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,224, 75,133, 29,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,205,132, 29, 1, 0, 0, 0, 16, 77,111, 27,
+ 1, 0, 0, 0,176, 76,111, 27, 1, 0, 0, 0, 80, 76,111, 27, 1, 0, 0, 0,144, 75,111, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,197, 3, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 99, 4, 0, 0, 1, 1,188, 3,100, 4, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,218,132, 29, 1, 0, 0, 0, 0,220,132, 29, 1, 0, 0, 0,192, 76,133, 29,
+ 1, 0, 0, 0, 64,217,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 76,133, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 32, 78,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,111, 68, 0, 0, 0, 0, 0, 0,208, 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,187, 3, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -6070,18 +6151,18 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188, 3, 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, 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, 16,252,156, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,144, 0,157, 26, 1, 0, 0, 0,176,250,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,192, 96,196,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,192, 96,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
-148, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
-148, 3, 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, 64, 10, 0, 0, 0,
- 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,149, 3,143, 0,131, 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,197, 3, 0, 0,100, 4, 0, 0,146, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,149, 3, 0, 0, 5, 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,112,253,156, 26,
- 1, 0, 0, 0, 0,255,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112,253,156, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 0,255,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 78,133, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,160, 82,133, 29, 1, 0, 0, 0,192, 76,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 0,112,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 0,112,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
+209, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
+209, 3, 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, 64, 10, 0, 0, 0,
+ 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,210, 3,143, 0,192, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,197, 3, 0, 0,100, 4, 0, 0,146, 0, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,210, 3, 0, 0, 5, 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,128, 79,133, 29,
+ 1, 0, 0, 0, 16, 81,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128, 79,133, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 16, 81,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108, 95,115,104,101,108,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108, 95,115,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -6092,7 +6173,7 @@ 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, 68, 65, 84, 65,
- 88, 1, 0, 0, 0,255,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,253,156, 26,
+ 88, 1, 0, 0, 16, 81,133, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 79,133, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,
111,108,115, 95,111, 98,106,101, 99,116,109,111,100,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,
@@ -6103,39 +6184,39 @@ char datatoc_B_blend[]= {
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, 68, 65, 84, 65, 40, 1, 0, 0,144, 0,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,128, 3,157, 26, 1, 0, 0, 0, 16,252,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 82,133, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 84,133, 29, 1, 0, 0, 0, 32, 78,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
119, 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, 64, 10, 0, 0, 0,
1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,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,197, 3, 0, 0,100, 4, 0, 0, 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 0, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 1,157, 26,
- 1, 0, 0, 0,240, 1,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240, 1,157, 26, 1, 0, 0, 0,193, 0, 0, 0,
+ 0, 0, 0, 0, 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,156,176, 21,
+ 1, 0, 0, 0,160,156,176, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,160,156,176, 21, 1, 0, 0, 0,194, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,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, 77,111,118,101, 32,116,111, 32, 76, 97,121,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 79,112,101,114, 97,116,111,114, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,166,255,144, 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,216,255,144, 0, 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, 68, 65, 84, 65,
- 40, 1, 0, 0,128, 3,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 14,157, 26, 1, 0, 0, 0,144, 0,157, 26,
+ 40, 1, 0, 0, 0, 84,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64,217,132, 29, 1, 0, 0, 0,160, 82,133, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,255,191,126,196,
0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, 12, 4, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, 13, 4,163, 0,
251, 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,128, 7, 0, 0,
-128, 7, 0, 0, 26, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+128, 7, 0, 0, 26, 0, 0, 0, 99, 4, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 4,157, 26, 1, 0, 0, 0,176, 12,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,158,176, 21, 1, 0, 0, 0,112,123,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 88, 1, 0, 0,224, 4,157, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 6,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 88, 1, 0, 0, 48,158,176, 21, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192,229,130, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,
@@ -6146,8 +6227,8 @@ 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, 68, 65, 84, 65, 88, 1, 0, 0,112, 6,157, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 0, 8,157, 26, 1, 0, 0, 0,224, 4,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192,229,130, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0,160,128,132, 29, 1, 0, 0, 0, 48,158,176, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -6158,7 +6239,7 @@ 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, 68, 65, 84, 65,
- 88, 1, 0, 0, 0, 8,157, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 9,157, 26, 1, 0, 0, 0,112, 6,157, 26,
+ 88, 1, 0, 0,160,128,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,130,132, 29, 1, 0, 0, 0,192,229,130, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
118,105,101,119, 95,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,
@@ -6169,8 +6250,8 @@ char datatoc_B_blend[]= {
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, 68, 65, 84, 65, 88, 1, 0, 0,144, 9,157, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 32, 11,157, 26, 1, 0, 0, 0, 0, 8,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48,130,132, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0,192,131,132, 29, 1, 0, 0, 0,160,128,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0,
@@ -6181,7 +6262,7 @@ 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, 68, 65, 84, 65,
- 88, 1, 0, 0, 32, 11,157, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 12,157, 26, 1, 0, 0, 0,144, 9,157, 26,
+ 88, 1, 0, 0,192,131,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,123,132, 29, 1, 0, 0, 0, 48,130,132, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97,
99,107,103,114,111,117,110,100, 95,105,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97,
@@ -6192,8 +6273,8 @@ char datatoc_B_blend[]= {
4, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,176, 12,157, 26, 1, 0, 0, 0,193, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 11,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112,123,132, 29, 1, 0, 0, 0,194, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,131,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,
@@ -6204,51 +6285,54 @@ 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, 68, 65, 84, 65,
- 40, 1, 0, 0, 64, 14,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 3,157, 26,
+ 40, 1, 0, 0, 64,217,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,133, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,101, 4, 0, 0,
-128, 7, 0, 0, 26, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 3, 13, 4,
+128, 7, 0, 0, 26, 0, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 3, 74, 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,160, 15,157, 26, 1, 0, 0, 0, 68, 65, 84, 65,
-248, 2, 0, 0,160, 15,157, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 14, 99,182, 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, 48, 46,136, 27, 1, 0, 0, 0, 68, 65, 84, 65,
+ 88, 3, 0, 0, 48, 46,136, 27, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,151, 29,193, 63, 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, 68,239,209, 62, 51,177,205,190,184,158, 81, 63,
0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,160, 84, 89,188,
0, 0, 0, 0, 52,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62,
- 0, 0, 0, 0,188,173, 54, 64,136, 95,161,191,147,231,198, 63, 0, 0,128, 63, 85,145, 21, 63,206,249,224,190, 48,180, 81,191,
-184,158, 81,191, 34, 85,166, 63,139,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 67,214,154,188,204,156,122, 63,138, 84,228,190,
- 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,100, 98, 82, 64, 0, 25, 95, 64, 80, 85,147, 62,241,216, 35, 63, 96,133, 24,188,
- 0, 0,224, 51,195, 15,188,190,130, 75, 53, 62,218,125, 81, 63, 0, 0,160,179,115, 77,100,193, 15,173,201, 64,182,148,248,192,
-203,247,159,192,233, 74, 87, 65,245, 46,190,192, 89,106,234, 64, 45, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63,
+ 0, 0, 0, 0,188,173, 54, 64,136, 95,161,191,147,231,198, 63, 0, 0,128, 63,166, 93, 30, 63,206,249,224,190, 48,180, 81,191,
+184,158, 81,191,232, 29,176, 63,139,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62,237,241,163,188,204,156,122, 63,138, 84,228,190,
+ 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,100, 98, 82, 64, 0, 25, 95, 64,227, 37,139, 62,171,190, 26, 63,112, 12, 16,188,
+ 0, 0, 64, 51,195, 15,188,190,131, 75, 53, 62,218,125, 81, 63, 0, 0,160,179,115, 77,100,193, 16,173,201, 64,182,148,248,192,
+203,247,159,192,233, 74, 87, 65,246, 46,190,192, 89,106,234, 64, 45, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63,
0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 85,145, 21, 63,206,249,224,190, 48,180, 81,191,
-184,158, 81,191, 34, 85,166, 63,139,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 67,214,154,188,204,156,122, 63,138, 84,228,190,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63,166, 93, 30, 63,206,249,224,190, 48,180, 81,191,
+184,158, 81,191,232, 29,176, 63,139,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62,237,241,163,188,204,156,122, 63,138, 84,228,190,
42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,100, 98, 82, 64, 0, 25, 95, 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, 92, 62, 55, 63, 56,186,224,190,237,203,148,190,
- 3,236,234,190, 0, 25, 95, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0,126, 31,231, 58, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3,236,234,190, 0, 25, 95, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0,104, 72,218, 58, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 1, 0, 0,208, 18,157, 26, 1, 0, 0, 0,157, 0, 0, 0,
- 1, 0, 0, 0,240, 22,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 1, 0, 0,160,218,132, 29, 1, 0, 0, 0,158, 0, 0, 0,
+ 1, 0, 0, 0, 0,220,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 68,132, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 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, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 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, 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, 48, 20,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 21,157, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,165,196, 20, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,164,132, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 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,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68,
@@ -6258,8 +6342,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,152, 4, 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, 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,144, 21,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48, 20,157, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,164,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128,165,196, 20, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,
246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63,
0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4,
@@ -6268,111 +6352,111 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0,240, 22,157, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,208, 18,157, 26, 1, 0, 0, 0, 48, 20,157, 26, 1, 0, 0, 0,144, 21,157, 26, 1, 0, 0, 0, 15, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 0,220,132, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,160,218,132, 29, 1, 0, 0, 0,128,165,196, 20, 1, 0, 0, 0,192,164,132, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 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, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,112, 24,157, 26, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 96,215,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105,
+ 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,192,159,176, 21, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 74,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105,
100,101,111, 32, 69,100,105,116,105,110,103, 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, 25,157, 26, 1, 0, 0, 0,160, 29,157, 26, 1, 0, 0, 0, 0, 30,157, 26, 1, 0, 0, 0, 96, 36,157, 26,
- 1, 0, 0, 0,192, 36,157, 26, 1, 0, 0, 0, 48,107,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48, 66, 25, 4, 1, 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, 68, 65, 84, 65, 32, 0, 0, 0,128, 25,157, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0,224, 25,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224, 25,157, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64, 26,157, 26,
- 1, 0, 0, 0,128, 25,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0, 64, 26,157, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,160, 26,157, 26, 1, 0, 0, 0,224, 25,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 26,157, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0, 64, 26,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0, 96, 27,157, 26, 1, 0, 0, 0,160, 26,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 4,
- 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96, 27,157, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,192, 27,157, 26,
- 1, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0,192, 27,157, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32, 28,157, 26, 1, 0, 0, 0, 96, 27,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,248, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32, 28,157, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,128, 28,157, 26, 1, 0, 0, 0,192, 27,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128, 28,157, 26, 1, 0, 0, 0,191, 0, 0, 0,
- 1, 0, 0, 0,224, 28,157, 26, 1, 0, 0, 0, 32, 28,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3, 39, 4,
- 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224, 28,157, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64, 29,157, 26,
- 1, 0, 0, 0,128, 28,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 68, 65, 84, 65,
- 32, 0, 0, 0, 64, 29,157, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,160, 29,157, 26, 1, 0, 0, 0,224, 28,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3,248, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 29,157, 26,
- 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 29,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,128, 7, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 30,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 96, 30,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 25,157, 26, 1, 0, 0, 0, 64, 26,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 30,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,192, 30,157, 26, 1, 0, 0, 0, 0, 30,157, 26, 1, 0, 0, 0,224, 25,157, 26, 1, 0, 0, 0, 0, 27,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 30,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 32, 31,157, 26, 1, 0, 0, 0, 96, 30,157, 26, 1, 0, 0, 0, 64, 26,157, 26, 1, 0, 0, 0, 96, 27,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 31,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,128, 31,157, 26, 1, 0, 0, 0,192, 30,157, 26, 1, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0, 96, 27,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 31,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,224, 31,157, 26, 1, 0, 0, 0, 32, 31,157, 26, 1, 0, 0, 0, 96, 27,157, 26, 1, 0, 0, 0,192, 27,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 31,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 64, 32,157, 26, 1, 0, 0, 0,128, 31,157, 26, 1, 0, 0, 0,128, 25,157, 26, 1, 0, 0, 0, 32, 28,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 32,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,160, 32,157, 26, 1, 0, 0, 0,224, 31,157, 26, 1, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0,128, 28,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 32,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 0, 33,157, 26, 1, 0, 0, 0, 64, 32,157, 26, 1, 0, 0, 0, 32, 28,157, 26, 1, 0, 0, 0,224, 28,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 33,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 96, 33,157, 26, 1, 0, 0, 0,160, 32,157, 26, 1, 0, 0, 0,224, 28,157, 26, 1, 0, 0, 0, 64, 29,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 33,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,192, 33,157, 26, 1, 0, 0, 0, 0, 33,157, 26, 1, 0, 0, 0,128, 28,157, 26, 1, 0, 0, 0, 64, 29,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 33,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 32, 34,157, 26, 1, 0, 0, 0, 96, 33,157, 26, 1, 0, 0, 0,192, 27,157, 26, 1, 0, 0, 0,160, 29,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 34,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,128, 34,157, 26, 1, 0, 0, 0,192, 33,157, 26, 1, 0, 0, 0,160, 26,157, 26, 1, 0, 0, 0,160, 29,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 34,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,224, 34,157, 26, 1, 0, 0, 0, 32, 34,157, 26, 1, 0, 0, 0, 32, 28,157, 26, 1, 0, 0, 0,160, 29,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 34,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 64, 35,157, 26, 1, 0, 0, 0,128, 34,157, 26, 1, 0, 0, 0,128, 25,157, 26, 1, 0, 0, 0,160, 26,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 35,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0,160, 35,157, 26, 1, 0, 0, 0,224, 34,157, 26, 1, 0, 0, 0, 96, 27,157, 26, 1, 0, 0, 0,128, 28,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 35,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 0, 36,157, 26, 1, 0, 0, 0, 64, 35,157, 26, 1, 0, 0, 0,192, 27,157, 26, 1, 0, 0, 0, 64, 29,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 36,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 96, 36,157, 26, 1, 0, 0, 0,160, 35,157, 26, 1, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0,224, 28,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 36,157, 26, 1, 0, 0, 0,192, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,157, 26, 1, 0, 0, 0,192, 27,157, 26, 1, 0, 0, 0,224, 28,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,192, 36,157, 26, 1, 0, 0, 0,194, 0, 0, 0,
- 1, 0, 0, 0, 96, 40,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0,224, 25,157, 26,
- 1, 0, 0, 0, 64, 26,157, 26, 1, 0, 0, 0, 96, 27,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-128, 7, 0, 0, 40, 4, 0, 0, 66, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,144,128,157, 26, 1, 0, 0, 0,144,128,157, 26, 1, 0, 0, 0,160, 37,157, 26, 1, 0, 0, 0, 0, 39,157, 26,
+ 0, 0, 0, 0, 80,133,132, 29, 1, 0, 0, 0, 0,168,132, 29, 1, 0, 0, 0, 96,168,132, 29, 1, 0, 0, 0,192,174,132, 29,
+ 1, 0, 0, 0, 32,175,132, 29, 1, 0, 0, 0,224, 50,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 0, 0, 0, 80,133,132, 29, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0,176,133,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,133,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,231,130, 29,
+ 1, 0, 0, 0, 80,133,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 80,231,130, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,231,130, 29, 1, 0, 0, 0,176,133,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,231,130, 29,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,166,196, 20, 1, 0, 0, 0, 80,231,130, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,166,196, 20, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 64,167,196, 20, 1, 0, 0, 0,176,231,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 4,
+ 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,167,196, 20, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,166,132, 29,
+ 1, 0, 0, 0,224,166,196, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, 1, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0, 32,166,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,166,132, 29, 1, 0, 0, 0, 64,167,196, 20,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 24, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128,166,132, 29,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,166,132, 29, 1, 0, 0, 0, 32,166,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,166,132, 29, 1, 0, 0, 0,192, 0, 0, 0,
+ 1, 0, 0, 0, 64,167,132, 29, 1, 0, 0, 0,128,166,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3,100, 4,
+ 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,167,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,167,132, 29,
+ 1, 0, 0, 0,224,166,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 2, 0, 0, 0, 0, 68, 65, 84, 65,
+ 32, 0, 0, 0,160,167,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,168,132, 29, 1, 0, 0, 0, 64,167,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3, 24, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0,168,132, 29,
+ 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,167,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 7,100, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,168,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,192,168,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,231,130, 29, 1, 0, 0, 0,176,133,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,168,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 32,169,132, 29, 1, 0, 0, 0, 96,168,132, 29, 1, 0, 0, 0,224,166,196, 20, 1, 0, 0, 0,176,133,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,169,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,128,169,132, 29, 1, 0, 0, 0,192,168,132, 29, 1, 0, 0, 0, 64,167,196, 20, 1, 0, 0, 0, 80,231,130, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,169,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,224,169,132, 29, 1, 0, 0, 0, 32,169,132, 29, 1, 0, 0, 0,224,166,196, 20, 1, 0, 0, 0, 64,167,196, 20,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,169,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 64,170,132, 29, 1, 0, 0, 0,128,169,132, 29, 1, 0, 0, 0, 64,167,196, 20, 1, 0, 0, 0, 32,166,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,170,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,160,170,132, 29, 1, 0, 0, 0,224,169,132, 29, 1, 0, 0, 0, 80,133,132, 29, 1, 0, 0, 0,128,166,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,170,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 0,171,132, 29, 1, 0, 0, 0, 64,170,132, 29, 1, 0, 0, 0,224,166,196, 20, 1, 0, 0, 0,224,166,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0,171,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 96,171,132, 29, 1, 0, 0, 0,160,170,132, 29, 1, 0, 0, 0,128,166,132, 29, 1, 0, 0, 0, 64,167,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,171,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,192,171,132, 29, 1, 0, 0, 0, 0,171,132, 29, 1, 0, 0, 0, 64,167,132, 29, 1, 0, 0, 0,160,167,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,171,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 32,172,132, 29, 1, 0, 0, 0, 96,171,132, 29, 1, 0, 0, 0,224,166,132, 29, 1, 0, 0, 0,160,167,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,172,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,128,172,132, 29, 1, 0, 0, 0,192,171,132, 29, 1, 0, 0, 0, 32,166,132, 29, 1, 0, 0, 0, 0,168,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,172,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,224,172,132, 29, 1, 0, 0, 0, 32,172,132, 29, 1, 0, 0, 0,176,231,130, 29, 1, 0, 0, 0, 0,168,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,172,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 64,173,132, 29, 1, 0, 0, 0,128,172,132, 29, 1, 0, 0, 0,128,166,132, 29, 1, 0, 0, 0, 0,168,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,173,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,160,173,132, 29, 1, 0, 0, 0,224,172,132, 29, 1, 0, 0, 0,176,231,130, 29, 1, 0, 0, 0, 80,133,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,173,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 0,174,132, 29, 1, 0, 0, 0, 64,173,132, 29, 1, 0, 0, 0, 64,167,196, 20, 1, 0, 0, 0,224,166,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0,174,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 96,174,132, 29, 1, 0, 0, 0,160,173,132, 29, 1, 0, 0, 0, 32,166,132, 29, 1, 0, 0, 0,160,167,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,174,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0,192,174,132, 29, 1, 0, 0, 0, 0,174,132, 29, 1, 0, 0, 0,224,166,196, 20, 1, 0, 0, 0, 64,167,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,174,132, 29, 1, 0, 0, 0,193, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,174,132, 29, 1, 0, 0, 0, 32,166,132, 29, 1, 0, 0, 0, 64,167,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 32,175,132, 29, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0, 32,148,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,166,196, 20, 1, 0, 0, 0,176,133,132, 29,
+ 1, 0, 0, 0, 80,231,130, 29, 1, 0, 0, 0, 64,167,196, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, 7, 7,129, 7, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96,177,132, 29, 1, 0, 0, 0, 96,177,132, 29, 1, 0, 0, 0, 0,176,132, 29, 1, 0, 0, 0, 32, 16,133, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 37,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 39,157, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,176,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32, 16,133, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 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,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68,
0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
10, 0,129, 7, 26, 0,129, 7, 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,128, 7, 0, 0, 40, 4, 0, 0, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0,129, 7, 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, 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, 39,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,160, 37,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,
-255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
-111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 16,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,176,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,
+255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 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, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4,
- 6, 0,129, 7, 7, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 4, 0, 0, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 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, 7, 0, 0,127, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,129, 7, 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, 68, 65, 84, 65,160, 0, 0, 0, 96, 40,157, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80, 52,157, 26,
- 1, 0, 0, 0,192, 36,157, 26, 1, 0, 0, 0,128, 25,157, 26, 1, 0, 0, 0, 32, 28,157, 26, 1, 0, 0, 0,160, 29,157, 26,
- 1, 0, 0, 0,160, 26,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
- 91, 0, 0, 0, 15, 15,129, 7, 92, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44,157, 26,
- 1, 0, 0, 0,240, 50,157, 26, 1, 0, 0, 0, 64, 41,157, 26, 1, 0, 0, 0,160, 42,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 32,148,132, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,156,132, 29,
+ 1, 0, 0, 0, 32,175,132, 29, 1, 0, 0, 0, 80,133,132, 29, 1, 0, 0, 0,128,166,132, 29, 1, 0, 0, 0, 0,168,132, 29,
+ 1, 0, 0, 0,176,231,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
+ 99, 0, 0, 0, 15, 15,129, 7,100, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,151,132, 29,
+ 1, 0, 0, 0,128,155,132, 29, 1, 0, 0, 0, 0,149,132, 29, 1, 0, 0, 0, 96,150,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0, 64, 41,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 42,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0,
+ 40, 1, 0, 0, 0,149,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96,150,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,128,136, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0,
0, 0,208, 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,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68,
0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7,
@@ -6381,24 +6465,24 @@ char datatoc_B_blend[]= {
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, 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,160, 42,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 41,157, 26,
+ 40, 1, 0, 0, 96,150,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149,132, 29,
1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0,
0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
- 17, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 18, 0, 0, 0, 65, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72,
- 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,129, 7, 66, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 18, 0, 0, 0, 73, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72,
+ 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,129, 7, 74, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 0, 0, 26, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 66, 0,
+128, 7, 0, 0, 26, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 74, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,
-200, 0, 0, 0, 0, 44,157, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0,240, 50,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+200, 0, 0, 0,192,151,132, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,128,155,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0, 0, 45,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 46,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0,192,152,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,154,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0,
0, 0,208, 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, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68,
@@ -6408,7 +6492,7 @@ char datatoc_B_blend[]= {
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, 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, 96, 46,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,157, 26,
+ 40, 1, 0, 0, 32,154,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,152,132, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -6417,8 +6501,8 @@ char datatoc_B_blend[]= {
87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 47,157, 26, 1, 0, 0, 0, 68, 65, 84, 65,
-248, 2, 0, 0,192, 47,157, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 50,136, 27, 1, 0, 0, 0, 68, 65, 84, 65,
+ 88, 3, 0, 0, 48, 50,136, 27, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 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,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 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,
@@ -6442,53 +6526,56 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0,240, 50,157, 26, 1, 0, 0, 0,157, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44,157, 26, 1, 0, 0, 0, 0, 45,157, 26, 1, 0, 0, 0, 96, 46,157, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 1, 0, 0,128,155,132, 29, 1, 0, 0, 0,158, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,151,132, 29, 1, 0, 0, 0,192,152,132, 29, 1, 0, 0, 0, 32,154,132, 29,
1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 68,132, 27,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 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, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63,
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, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 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, 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, 80, 52,157, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176, 73,157, 26,
- 1, 0, 0, 0, 96, 40,157, 26, 1, 0, 0, 0, 32, 28,157, 26, 1, 0, 0, 0,224, 28,157, 26, 1, 0, 0, 0,192, 27,157, 26,
- 1, 0, 0, 0,160, 29,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 93, 0, 0, 0,
-247, 1, 0, 0, 8, 8,129, 7,155, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 57,157, 26,
- 1, 0, 0, 0,176, 72,157, 26, 1, 0, 0, 0, 48, 53,157, 26, 1, 0, 0, 0,240, 55,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,224,156,132, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,169,176, 21,
+ 1, 0, 0, 0, 32,148,132, 29, 1, 0, 0, 0,128,166,132, 29, 1, 0, 0, 0, 64,167,132, 29, 1, 0, 0, 0, 32,166,132, 29,
+ 1, 0, 0, 0, 0,168,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 0, 0, 0,
+ 23, 2, 0, 0, 8, 8,129, 7,179, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,161,132, 29,
+ 1, 0, 0, 0, 16,215,132, 29, 1, 0, 0, 0,192,157,132, 29, 1, 0, 0, 0,128,160,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0, 48, 53,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 54,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 31, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0,
+ 40, 1, 0, 0,192,157,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,159,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 38, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0,
0, 0,208, 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,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 96,191, 68, 0, 0,200, 65, 0, 96,191, 68,
0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7,
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,
-128, 7, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0,
+128, 7, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 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, 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,144, 54,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 55,157, 26, 1, 0, 0, 0, 48, 53,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0,128,183,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0,128,183,195,
- 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 18, 0, 0, 0,128, 1, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,
- 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 18, 0, 0, 0,128, 1, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,129, 1,203, 0,
-111, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 6, 0, 0,
-128, 7, 0, 0,119, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,129, 1,
+ 40, 1, 0, 0, 32,159,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,160,132, 29, 1, 0, 0, 0,192,157,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0,128,195,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0,128,195,195,
+ 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 18, 0, 0, 0,152, 1, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 18, 0, 0, 0,152, 1, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,153, 1,203, 0,
+135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 6, 0, 0,
+128, 7, 0, 0,127, 0, 0, 0, 23, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,153, 1,
0, 0, 4, 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, 68, 65, 84, 65,
- 40, 1, 0, 0,240, 55,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 54,157, 26,
+ 40, 1, 0, 0,128,160,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,159,132, 29,
1, 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, 17, 0, 0, 0, 18, 0, 0, 0,128, 1, 0, 0, 18, 0, 0, 0,164, 6, 0, 0, 0, 0, 0, 0,
- 17, 0, 0, 0, 18, 0, 0, 0,164, 6, 0, 0, 18, 0, 0, 0,128, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72,
- 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,165, 6,129, 1, 0, 0,
+ 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,152, 1, 0, 0, 18, 0, 0, 0,164, 6, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0,164, 6, 0, 0, 18, 0, 0, 0,152, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72,
+ 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,165, 6,153, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-164, 6, 0, 0,119, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 6,129, 1,
+164, 6, 0, 0,127, 0, 0, 0, 23, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 6,153, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,
-240, 0, 0, 0, 80, 57,157, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,144, 68,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+240, 0, 0, 0,224,161,132, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 96,168,176, 21, 1, 0, 0, 0, 0, 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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -6496,7 +6583,7 @@ 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,128, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 58,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 59,157, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,163,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240, 85,133, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0,128,191, 68, 0, 0, 0, 0, 0, 0,208, 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,251, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68,
@@ -6506,8 +6593,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0,252, 5, 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, 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,224, 59,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 61,157, 26,
- 1, 0, 0, 0,128, 58,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 85,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80, 87,133, 29,
+ 1, 0, 0, 0, 16,163,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,
142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0,
@@ -6516,8 +6603,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 1, 0,113, 1, 0, 0, 5, 0, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 61,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 62,157, 26,
- 1, 0, 0, 0,224, 59,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 87,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 88,133, 29,
+ 1, 0, 0, 0,240, 85,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,
231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,
142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4,
@@ -6526,8 +6613,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 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, 68, 65, 84, 65, 40, 1, 0, 0,160, 62,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 64,157, 26,
- 1, 0, 0, 0, 64, 61,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 88,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,167,176, 21,
+ 1, 0, 0, 0, 80, 87,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,
162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 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, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0,
@@ -6536,8 +6623,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,160, 62,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,167,176, 21, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,176, 88,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -6545,8 +6632,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0,251, 5, 0, 0,111, 0, 0, 0,223, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0,252, 5,113, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 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, 65,157, 26,
- 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 96, 65,157, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 54,136, 27,
+ 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 54,136, 27, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 79,145, 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,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62,
51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,
@@ -6570,18 +6657,21 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0,144, 68,157, 26,
- 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,176, 72,157, 26, 1, 0, 0, 0, 80, 57,157, 26, 1, 0, 0, 0,128, 58,157, 26,
- 1, 0, 0, 0, 0, 64,157, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 68, 65, 84, 65, 32, 1, 0, 0, 96,168,176, 21,
+ 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 16,215,132, 29, 1, 0, 0, 0,224,161,132, 29, 1, 0, 0, 0, 16,163,132, 29,
+ 1, 0, 0, 0, 0,167,176, 21, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0,
- 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66,
0, 0,128, 63, 0, 0,128, 63, 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, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 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, 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,240, 69,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 80, 71,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,212,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,176,213,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 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,151, 4, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -6590,8 +6680,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 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, 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, 80, 71,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 69,157, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,213,132, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,212,132, 29, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0,
0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,
121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0,
@@ -6600,71 +6690,71 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0,176, 72,157, 26, 1, 0, 0, 0,172, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 68,157, 26, 1, 0, 0, 0,240, 69,157, 26, 1, 0, 0, 0, 80, 71,157, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 16,215,132, 29, 1, 0, 0, 0,173, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,168,176, 21, 1, 0, 0, 0, 80,212,132, 29, 1, 0, 0, 0,176,213,132, 29,
1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,176, 73,157, 26, 1, 0, 0, 0,194, 0, 0, 0,
- 1, 0, 0, 0, 48,107,157, 26, 1, 0, 0, 0, 80, 52,157, 26, 1, 0, 0, 0,224, 28,157, 26, 1, 0, 0, 0, 0, 27,157, 26,
- 1, 0, 0, 0,128, 28,157, 26, 1, 0, 0, 0, 64, 29,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 79, 3, 0, 0,249, 1, 0, 0, 38, 4, 0, 0, 2, 2, 80, 3, 46, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 16, 80,157, 26, 1, 0, 0, 0, 48,106,157, 26, 1, 0, 0, 0,144, 74,157, 26, 1, 0, 0, 0,176, 78,157, 26,
+ 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,192,169,176, 21, 1, 0, 0, 0,195, 0, 0, 0,
+ 1, 0, 0, 0,224, 50,133, 29, 1, 0, 0, 0,224,156,132, 29, 1, 0, 0, 0, 64,167,132, 29, 1, 0, 0, 0,224,166,196, 20,
+ 1, 0, 0, 0,224,166,132, 29, 1, 0, 0, 0,160,167,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 79, 3, 0, 0, 25, 2, 0, 0, 99, 4, 0, 0, 2, 2, 80, 3, 75, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 28,133, 29, 1, 0, 0, 0,224, 49,133, 29, 1, 0, 0, 0,176, 22,133, 29, 1, 0, 0, 0,208, 26,133, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 74,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 75,157, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 22,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16, 24,133, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 83, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0,
0, 0, 84, 68, 0, 0, 0, 0, 0, 0,208, 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, 79, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68,
0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4,
10, 0, 80, 3, 26, 0, 80, 3, 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, 79, 3, 0, 0,249, 1, 0, 0, 18, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 79, 3, 0, 0, 25, 2, 0, 0, 50, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 80, 3, 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, 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,240, 75,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80, 77,157, 26,
- 1, 0, 0, 0,144, 74,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 72, 67, 0,128, 0,196, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 19, 2, 0, 0, 0, 0, 0, 0,
-199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 19, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 24,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112, 25,133, 29,
+ 1, 0, 0, 0,176, 22,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 72, 67, 0,192, 7,196, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 48, 2, 0, 0, 0, 0, 0, 0,
+199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 48, 2, 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, 10, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4,
- 6, 0,217, 0, 20, 2,200, 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,216, 0, 0, 0, 19, 2, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,217, 0, 20, 2, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 6, 0,217, 0, 49, 2,200, 0, 31, 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,216, 0, 0, 0, 51, 2, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,217, 0, 49, 2, 0, 0, 2, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80, 77,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 78,157, 26,
- 1, 0, 0, 0,240, 75,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 25,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 26,133, 29,
+ 1, 0, 0, 0, 16, 24,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 79, 3, 0, 0, 19, 2, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 79, 3, 0, 0, 79, 3, 0, 0, 51, 2, 0, 0, 99, 4, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176, 78,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 80, 77,157, 26, 1, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0,
- 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 2, 0, 0, 18, 0, 0, 0,
-118, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,118, 2, 0, 0, 18, 0, 0, 0, 19, 2, 0, 0,111, 18,131, 58,
+ 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 26,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,112, 25,133, 29, 1, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0,
+ 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 48, 2, 0, 0, 18, 0, 0, 0,
+118, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,118, 2, 0, 0, 18, 0, 0, 0, 48, 2, 0, 0,111, 18,131, 58,
111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
- 0, 0,119, 2, 20, 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,217, 0, 0, 0, 79, 3, 0, 0, 19, 2, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,119, 2, 20, 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,119, 2, 49, 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,217, 0, 0, 0, 79, 3, 0, 0, 51, 2, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,119, 2, 49, 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, 68, 65, 84, 65,248, 0, 0, 0, 16, 80,157, 26, 1, 0, 0, 0,161, 0, 0, 0, 1, 0, 0, 0,192, 85,157, 26,
+ 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48, 28,133, 29, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,128, 33,133, 29,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 81,157, 26, 1, 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, 68, 65, 84, 65, 32, 0, 0, 0, 64, 81,157, 26,
- 1, 0, 0, 0, 20, 1, 0, 0, 1, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 81,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 83,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 68, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 17,133, 29, 1, 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, 68, 65, 84, 65, 32, 0, 0, 0,128, 17,133, 29,
+ 1, 0, 0, 0, 21, 1, 0, 0, 1, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 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, 96, 29,133, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,192, 30,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0, 38, 68, 0, 0, 0, 0, 0, 0,208, 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,151, 2, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -6673,8 +6763,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 2, 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, 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, 83,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 96, 84,157, 26, 1, 0, 0, 0,160, 81,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 30,133, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 32, 32,133, 29, 1, 0, 0, 0, 96, 29,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 67, 0,128, 4,196, 0, 0, 64,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,
23, 2, 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, 8, 0, 0, 0,
@@ -6683,8 +6773,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,181, 0, 24, 2, 0, 0, 2, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96, 84,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,157, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 32,133, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 30,133, 29, 1, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194,
0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0,128, 4,196, 0, 0, 64,193,210, 1, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,
23, 2, 0, 0, 0, 0, 0, 0,209, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,209, 1, 0, 0, 18, 0, 0, 0,
23, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0,
@@ -6693,17 +6783,17 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 24, 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, 68, 65, 84, 65, 8, 1, 0, 0,192, 85,157, 26, 1, 0, 0, 0, 21, 1, 0, 0,
- 1, 0, 0, 0, 32, 91,157, 26, 1, 0, 0, 0, 16, 80,157, 26, 1, 0, 0, 0,160, 81,157, 26, 1, 0, 0, 0, 96, 84,157, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,128, 33,133, 29, 1, 0, 0, 0, 22, 1, 0, 0,
+ 1, 0, 0, 0, 16,216,132, 29, 1, 0, 0, 0, 48, 28,133, 29, 1, 0, 0, 0, 96, 29,133, 29, 1, 0, 0, 0, 32, 32,133, 29,
1, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 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, 66, 25, 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, 48, 66,136, 27,
1, 0, 0, 0, 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, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 87,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 96, 88,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 34,133, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 32, 36,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 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,159, 3, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -6712,8 +6802,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 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, 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, 96, 88,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,192, 89,157, 26, 1, 0, 0, 0, 0, 87,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 36,133, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,128, 37,133, 29, 1, 0, 0, 0,192, 34,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0,172, 0, 0, 0,189, 0, 0, 0, 18, 0, 0, 0,
163, 3, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 18, 0, 0, 0,
163, 3, 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, 64, 10, 0, 0, 0,
@@ -6722,8 +6812,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,192, 89,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 88,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 37,133, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 36,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0,
0, 0,128, 67, 0, 0,168,191, 0, 0, 20, 64, 0, 0,169,191, 0,128, 20, 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,160, 3, 0, 0, 0, 0, 0, 0,
164, 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,
@@ -6732,14 +6822,14 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3,164, 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, 68, 65, 84, 65,168, 0, 0, 0, 32, 91,157, 26, 1, 0, 0, 0,167, 0, 0, 0,
- 1, 0, 0, 0, 16,102,157, 26, 1, 0, 0, 0,192, 85,157, 26, 1, 0, 0, 0, 0, 87,157, 26, 1, 0, 0, 0,192, 89,157, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0, 16,216,132, 29, 1, 0, 0, 0,168, 0, 0, 0,
+ 1, 0, 0, 0,192, 45,133, 29, 1, 0, 0, 0,128, 33,133, 29, 1, 0, 0, 0,192, 34,133, 29, 1, 0, 0, 0,128, 37,133, 29,
1, 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,100, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 92,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 96, 93,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 38,133, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 64, 40,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 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,167, 2, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
@@ -6748,8 +6838,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 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, 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, 96, 93,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,192, 94,157, 26, 1, 0, 0, 0, 0, 92,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 40,133, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,160, 41,133, 29, 1, 0, 0, 0,224, 38,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
43, 3, 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, 64, 10, 0, 0, 0,
@@ -6758,8 +6848,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,192, 94,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 32, 96,157, 26, 1, 0, 0, 0, 96, 93,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 41,133, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 43,133, 29, 1, 0, 0, 0, 64, 40,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194,
0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,
119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,
119, 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, 64, 10, 0, 0, 0,
@@ -6768,8 +6858,8 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32, 96,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,128, 97,157, 26, 1, 0, 0, 0,192, 94,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 43,133, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 96, 44,133, 29, 1, 0, 0, 0,160, 41,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,
121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,
121, 2, 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, 64, 10, 0, 0, 0,
@@ -6778,8 +6868,8 @@ char datatoc_B_blend[]= {
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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 97,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 96,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 44,133, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -6788,7 +6878,7 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 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,224, 98,157, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,224, 98,157, 26, 1, 0, 0, 0,156, 0, 0, 0,
+ 0, 0, 0, 0, 48, 58,136, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 58,136, 27, 1, 0, 0, 0,157, 0, 0, 0,
1, 0, 0, 0,226,225,191, 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,128, 0, 0, 0,128,226,215,163,188,
0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190,
@@ -6812,18 +6902,21 @@ 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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,
- 32, 1, 0, 0, 16,102,157, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 48,106,157, 26, 1, 0, 0, 0, 32, 91,157, 26,
- 1, 0, 0, 0, 0, 92,157, 26, 1, 0, 0, 0,128, 97,157, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0,
+ 32, 1, 0, 0,192, 45,133, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0,224, 49,133, 29, 1, 0, 0, 0, 16,216,132, 29,
+ 1, 0, 0, 0,224, 38,133, 29, 1, 0, 0, 0, 96, 44,133, 29, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 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, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8,
0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 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, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0,
1, 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, 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,112,103,157, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,104,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 47,133, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128, 48,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 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,
151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63,
@@ -6832,8 +6925,8 @@ char datatoc_B_blend[]= {
126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 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, 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,208,104,157, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,103,157, 26, 1, 0, 0, 0, 0, 0, 64,192,
+ 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,128, 48,133, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 47,133, 29, 1, 0, 0, 0, 0, 0, 64,192,
0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61,
@@ -6842,59 +6935,59 @@ char datatoc_B_blend[]= {
248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, 48,106,157, 26,
- 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,102,157, 26, 1, 0, 0, 0,112,103,157, 26,
- 1, 0, 0, 0,208,104,157, 26, 1, 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, 68, 65, 84, 65,200, 0, 0, 0,224, 49,133, 29,
+ 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 45,133, 29, 1, 0, 0, 0, 32, 47,133, 29,
+ 1, 0, 0, 0,128, 48,133, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 48,107,157, 26,
- 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 73,157, 26, 1, 0, 0, 0, 64, 29,157, 26,
- 1, 0, 0, 0,128, 28,157, 26, 1, 0, 0, 0, 96, 27,157, 26, 1, 0, 0, 0,192, 27,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 81, 3, 0, 0,128, 7, 0, 0,249, 1, 0, 0, 38, 4, 0, 0, 8, 8, 48, 4, 46, 2, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,112,157, 26, 1, 0, 0, 0,144,127,157, 26, 1, 0, 0, 0, 16,108,157, 26,
- 1, 0, 0, 0,208,110,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,108,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,112,109,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 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,224, 50,133, 29,
+ 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,169,176, 21, 1, 0, 0, 0,160,167,132, 29,
+ 1, 0, 0, 0,224,166,132, 29, 1, 0, 0, 0, 64,167,196, 20, 1, 0, 0, 0, 32,166,132, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 81, 3, 0, 0,128, 7, 0, 0, 25, 2, 0, 0, 99, 4, 0, 0, 8, 8, 48, 4, 75, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 55,133, 29, 1, 0, 0, 0, 16, 68,133, 29, 1, 0, 0, 0,192, 51,133, 29,
+ 1, 0, 0, 0,128, 54,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 51,133, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 32, 53,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0,
0, 0,208, 65, 0, 0, 0, 0, 0, 0,135, 68, 0, 0, 0, 64, 0, 0,208, 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, 55, 4, 0, 0, 0, 0, 0, 0,
23, 0, 0, 0, 0,224,156, 68, 0, 0,200, 65, 0,224,156, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 56, 4, 24, 0, 56, 4, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 3, 0, 0,128, 7, 0, 0,249, 1, 0, 0,249, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 3, 0, 0,128, 7, 0, 0, 25, 2, 0, 0, 25, 2, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,109,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0,208,110,157, 26, 1, 0, 0, 0, 16,108,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 53,133, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0,128, 54,133, 29, 1, 0, 0, 0,192, 51,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 0, 0,128, 7, 0, 0,249, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0, 25, 2, 0, 0, 99, 4, 0, 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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,110,157, 26, 1, 0, 0, 0,195, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,109,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 54,133, 29, 1, 0, 0, 0,196, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 53,133, 29, 1, 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, 17, 0, 0, 0, 18, 0, 0, 0,
- 45, 2, 0, 0, 18, 0, 0, 0, 47, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 47, 4, 0, 0, 18, 0, 0, 0,
- 45, 2, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 4, 8, 0, 48, 4, 46, 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, 81, 3, 0, 0,128, 7, 0, 0,249, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 4, 46, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 74, 2, 0, 0, 18, 0, 0, 0, 47, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 47, 4, 0, 0, 18, 0, 0, 0,
+ 74, 2, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4, 8, 0, 48, 4, 75, 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, 81, 3, 0, 0,128, 7, 0, 0, 25, 2, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 4, 75, 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, 68, 65, 84, 65,240, 0, 0, 0, 48,112,157, 26, 1, 0, 0, 0,163, 0, 0, 0,
- 1, 0, 0, 0,112,123,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,224, 55,133, 29, 1, 0, 0, 0,164, 0, 0, 0,
+ 1, 0, 0, 0,240, 63,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,113,157, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,114,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 57,133, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112, 58,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 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,
231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63,
@@ -6903,8 +6996,8 @@ char datatoc_B_blend[]= {
250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 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, 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,192,114,157, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,116,157, 26, 1, 0, 0, 0, 96,113,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 58,133, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 59,133, 29, 1, 0, 0, 0, 16, 57,133, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,
160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
@@ -6913,8 +7006,8 @@ char datatoc_B_blend[]= {
18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32,116,157, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,117,157, 26, 1, 0, 0, 0,192,114,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 59,133, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48, 61,133, 29, 1, 0, 0, 0,112, 58,133, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,
160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
@@ -6923,8 +7016,8 @@ char datatoc_B_blend[]= {
251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,117,157, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,118,157, 26, 1, 0, 0, 0, 32,116,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 61,133, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144, 62,133, 29, 1, 0, 0, 0,208, 59,133, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,
180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
@@ -6933,8 +7026,8 @@ char datatoc_B_blend[]= {
18, 4, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224,118,157, 26,
- 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 62,133, 29,
+ 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 61,133, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -6943,8 +7036,8 @@ char datatoc_B_blend[]= {
18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 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, 64,120,157, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 64,120,157, 26,
- 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 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, 48, 62,136, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 62,136, 27,
+ 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
165, 7, 36, 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,128,
0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,
143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -6968,17 +7061,20 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0,112,123,157, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,144,127,157, 26,
- 1, 0, 0, 0, 48,112,157, 26, 1, 0, 0, 0, 96,113,157, 26, 1, 0, 0, 0,224,118,157, 26, 1, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,240, 63,133, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 16, 68,133, 29,
+ 1, 0, 0, 0,224, 55,133, 29, 1, 0, 0, 0, 16, 57,133, 29, 1, 0, 0, 0,144, 62,133, 29, 1, 0, 0, 0, 1, 0, 0, 0,
51, 51, 51, 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, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0,
1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 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, 0, 0,
7, 0, 10, 0, 0, 0, 0, 0, 1, 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, 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,208,124,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,126,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 40, 1, 0, 0, 80, 65,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 66,133, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0,
0, 0,208, 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,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68,
@@ -6988,7 +7084,7 @@ char datatoc_B_blend[]= {
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, 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, 48,126,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,124,157, 26,
+ 40, 1, 0, 0,176, 66,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 65,133, 29,
1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0,
0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72,
@@ -6998,440 +7094,441 @@ 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, 68, 65, 84, 65,
-200, 0, 0, 0,144,127,157, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,123,157, 26,
- 1, 0, 0, 0,208,124,157, 26, 1, 0, 0, 0, 48,126,157, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+200, 0, 0, 0, 16, 68,133, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 63,133, 29,
+ 1, 0, 0, 0, 80, 65,133, 29, 1, 0, 0, 0,176, 66,133, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 83, 67, 0, 0,
- 0, 6, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0,154, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 40, 6, 0, 0, 48, 66,136, 27, 1, 0, 0, 0,155, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48, 80, 25, 4, 1, 0, 0, 0,144,137,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 16,129,157, 26, 1, 0, 0, 0,208,129,157, 26, 1, 0, 0, 0, 16,129,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 68,132, 27, 1, 0, 0, 0, 48, 58,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,224, 17,133, 29, 1, 0, 0, 0,112, 69,133, 29, 1, 0, 0, 0,224, 17,133, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 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, 48,130,157, 26, 1, 0, 0, 0, 80,104,158, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68,172, 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, 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, 0, 0, 1, 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, 1, 0, 1, 0, 0, 0, 6, 0, 25, 0,141, 0,128, 7,
- 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,224,131,157, 26, 1, 0, 0, 0,224,131,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, 0, 0,200, 66,
- 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 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,112,161,176, 21, 1, 0, 0, 0, 48, 26,139, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68,172, 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, 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, 0, 0, 1, 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, 1, 0, 1, 0, 0, 0,
+ 6, 0, 25, 0,141, 0,128, 7, 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0,
+ 81, 0, 0, 0, 23, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 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, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 69,133, 29, 1, 0, 0, 0,208, 69,133, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,200, 66, 0, 0,200, 66, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,
+ 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, 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, 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, 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, 31, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 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,204, 76, 63,
-205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 6, 0, 0, 0,
- 16, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,
-180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, 82, 69, 78, 68,
- 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63,102,166,171, 67,
- 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 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, 94, 3,
- 1, 0, 0, 0, 1, 0, 0, 0, 1, 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,205,204, 28, 65, 0, 0, 0, 0, 32, 0, 32, 0,
- 1, 0, 0, 0, 0, 0, 0, 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,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,129,157, 26,
- 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0,112,129,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0,194, 2,214, 1, 48, 86, 25, 4, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,129,157, 26,
- 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0,208,129,157, 26, 1, 0, 0, 0, 16,129,157, 26, 1, 0, 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 0, 4, 0, 0,144, 3, 18, 3, 48,160, 26, 4, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,129,157, 26,
- 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,129,157, 26, 1, 0, 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 0, 4, 0, 0,156, 0, 54, 2, 48, 80, 25, 4, 1, 0, 0, 0, 68, 65, 84, 65,120, 1, 0, 0, 48,130,157, 26,
- 1, 0, 0, 0,150, 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,128, 63, 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63,111, 18,131, 58,
-205,204,204, 61, 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 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, 0, 0, 0, 0, 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, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0,
- 5, 0,255,255, 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, 0,
- 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 10,215, 35, 60,205,204,204, 61, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,250, 0,205,204,204, 61,205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, 72,225,122, 63,205,204,204, 61,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 67, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 88, 0, 0, 0,224,131,157, 26, 1, 0, 0, 0,136, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0,255,255, 15, 0,
- 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 67, 65, 0, 0,152, 0, 0, 0,112,132,157, 26,
- 1, 0, 0, 0, 29, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0,
- 0, 0, 0, 63,145,137, 68, 66,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,
- 0, 0, 0, 0, 76, 65, 0, 0,248, 1, 0, 0, 64,133,157, 26, 1, 0, 0, 0, 41, 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, 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, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 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, 0, 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,112,135,157, 26, 1, 0, 0, 0, 2, 0, 0, 0,
- 46, 26,128, 63, 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 64, 11, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0,128, 63,111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,128, 62, 6, 0, 0, 0, 16, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78,
+ 68, 69, 82, 95, 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0,
+ 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240,174,135, 29, 1, 0, 0, 0, 1, 0, 0, 0, 1, 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,205,204, 28, 65,
+ 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 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,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,
+180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, 1, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,224, 17,133, 29, 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0, 16, 69,133, 29, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,194, 2,243, 1, 48, 74,132, 27, 1, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0, 16, 69,133, 29, 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0,112, 69,133, 29, 1, 0, 0, 0,224, 17,133, 29,
+ 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0,144, 3, 47, 3, 48, 80,132, 27, 1, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,112, 69,133, 29, 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 69,133, 29,
+ 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,156, 0, 83, 2, 48, 68,132, 27, 1, 0, 0, 0, 68, 65, 84, 65,
+120, 1, 0, 0,112,161,176, 21, 1, 0, 0, 0,151, 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,128, 63, 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0,
+ 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63,
+ 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, 0, 0, 0, 0,
+ 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, 80, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, 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, 0, 0, 0, 0, 0, 0, 0,128, 62, 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,128, 63, 10,215, 35, 60,205,204,204, 61,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 0,205,204,204, 61,205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65,
+ 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 67, 2, 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, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 0, 0, 0,208, 69,133, 29, 1, 0, 0, 0,137, 0, 0, 0,
+ 1, 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, 76, 97,121,101,114, 0,
+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,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 67, 65, 0, 0,
+152, 0, 0, 0, 32,163,176, 21, 1, 0, 0, 0, 29, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63,145,137, 68, 66,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, 0, 0, 0, 0, 76, 65, 0, 0,248, 1, 0, 0, 48, 54,132, 27, 1, 0, 0, 0, 41, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0,
+ 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, 0,
+ 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,240,163,176, 21,
+ 1, 0, 0, 0, 2, 0, 0, 0, 46, 26,128, 63, 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 11, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 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,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, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,137,157, 26, 1, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,112,135,157, 26,
- 1, 0, 0, 0, 74, 1, 0, 0, 1, 0, 0, 0, 1, 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,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0,
- 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63,224,136,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,165,176, 21, 1, 0, 0, 0, 68, 65, 84, 65,
+ 56, 1, 0, 0,240,163,176, 21, 1, 0, 0, 0, 75, 1, 0, 0, 1, 0, 0, 0, 1, 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,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0,
+ 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63,224,177,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,136,157, 26, 1, 0, 0, 0, 72, 1, 0, 0, 2, 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, 68, 65, 84, 65, 40, 0, 0, 0, 48,137,157, 26,
- 1, 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, 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, 87, 79, 0, 0,216, 1, 0, 0,144,137,157, 26,
- 1, 0, 0, 0,130, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 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, 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, 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, 10,215,163, 59, 0, 0, 0, 0, 0, 0,128, 62,
- 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,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, 68, 65, 84, 65, 24, 0, 0, 0,224,177,132, 29, 1, 0, 0, 0, 73, 1, 0, 0,
+ 2, 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, 68, 65, 84, 65,
+ 40, 0, 0, 0, 96,165,176, 21, 1, 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, 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, 87, 79, 0, 0,
+224, 1, 0, 0, 48, 58,132, 27, 1, 0, 0, 0,130, 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, 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, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114, 99, 80, 61,114, 99, 80, 61,114, 99, 80, 61, 0, 0, 0, 0,199, 54, 36, 60,
+199, 54, 36, 60,199, 54, 36, 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,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, 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, 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, 10,215,163, 59,
+ 0, 0, 0, 0, 0, 0,128, 62, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 84, 88, 0, 0,176, 0, 0, 0,160,139,157, 26, 1, 0, 0, 0, 27, 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, 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,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0,144,140,157, 26, 1, 0, 0, 0,144,140,157, 26,
- 1, 0, 0, 0,144,140,157, 26, 1, 0, 0, 0,144,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 74, 25, 4, 1, 0, 0, 0,255,255,255,255, 0, 4, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,140,157, 26, 1, 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, 64,214,152, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 69, 69, 82, 70, 68, 65, 84, 65, 4, 0, 0, 0, 64,214,152, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 1, 0, 79, 66, 0, 0,152, 4, 0, 0, 48, 80, 25, 4, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0,
- 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 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, 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, 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, 84, 88, 0, 0,176, 0, 0, 0, 0,196,132, 29,
+ 1, 0, 0, 0, 27, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
+ 1, 0, 0, 0,192,165,176, 21, 1, 0, 0, 0,192,165,176, 21, 1, 0, 0, 0,192,165,176, 21, 1, 0, 0, 0,192,165,176, 21,
+ 1, 0, 0, 0, 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, 62,132, 27,
+ 1, 0, 0, 0,255,255,255,255, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,192,165,176, 21, 1, 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, 16, 90,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 69, 82, 70, 68, 65, 84, 65,
+ 4, 0, 0, 0, 16, 90,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 79, 66, 0, 0,152, 4, 0, 0,
+ 48, 68,132, 27, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, 48, 74,132, 27, 1, 0, 0, 0, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,163,176, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 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,132,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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,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,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, 1, 0,128, 63, 1, 0,128, 51, 1, 0, 0,179, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0,128, 63, 1, 0,128, 51,
+ 0, 0, 0, 0, 2, 0, 0,179, 2, 0, 0,167, 1, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 53, 1, 0, 0, 41, 1, 0,128,168,
+ 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, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,187,225, 16, 63,
+ 0, 0,128, 63,205,204,204, 62,237, 54, 32, 63, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 2, 0, 1, 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, 0, 0, 0, 0, 0, 0, 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,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,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,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, 1, 0,128, 63, 1, 0,128, 51, 1, 0, 0,179,
- 0, 0, 0, 0, 0, 0, 0, 51, 0, 0,128, 63, 1, 0,128, 51, 0, 0, 0, 0, 2, 0, 0,179, 2, 0, 0,167, 1, 0,128, 63,
- 0, 0, 0, 0, 1, 0, 0, 53, 1, 0, 0, 41, 1, 0,128,168, 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, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0,
- 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,187,225, 16, 63, 0, 0,128, 63,205,204,204, 62,237, 54, 32, 63, 0, 0, 0, 0,
-143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, 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, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,152, 4, 0, 0, 48, 74,132, 27, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0,
+ 48, 80,132, 27, 1, 0, 0, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 79, 66, 0, 0,152, 4, 0, 0,
- 48, 86, 25, 4, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, 48,160, 26, 4, 1, 0, 0, 0, 48, 80, 25, 4, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 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,118,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 48,171,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 12, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,208,160,176, 21, 1, 0, 0, 0,128,125,132, 29, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,150, 90, 3, 1, 0, 0, 0,
-208,161, 89, 3, 1, 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,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,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,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,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, 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, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 79, 66, 0, 0, 7, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60,
- 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 4, 0, 1, 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, 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,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,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,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, 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, 0, 0,
+ 1, 0, 2, 0, 0, 0, 68, 0, 79, 66, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0,
+ 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,
+143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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,128, 63,
+ 0, 64, 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, 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,
- 64, 33, 0, 28, 1, 0, 0, 0, 80, 40, 0, 28, 1, 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, 0, 0, 0, 0, 0, 0, 0, 48,244,138, 27, 1, 0, 0, 0, 48,248,138, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0,
+ 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, 8, 0, 0, 0,
+208,160,176, 21, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,
+128,125,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,152, 4, 0, 0, 48, 80,132, 27,
+ 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 74,132, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 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, 1, 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, 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, 68, 65, 84, 65, 8, 0, 0, 0, 80,150, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,208,161, 89, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 79, 66, 0, 0,152, 4, 0, 0, 48,160, 26, 4, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 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, 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, 48, 54,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 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,133,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 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,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,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, 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, 0, 0,128, 63, 1, 0,128, 50, 0, 0, 0,179, 0, 0, 0, 0,
- 1, 0,128, 50, 1, 0,128, 63, 1, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 1, 0, 0, 39, 1, 0, 0, 52, 1, 0,128, 39, 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, 0, 0, 5, 0, 1, 0,
- 0, 0, 68, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0,
- 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 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, 1, 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,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,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,
+ 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,
+ 0, 0,128, 63, 1, 0,128, 50, 0, 0, 0,179, 0, 0, 0, 0, 1, 0,128, 50, 1, 0,128, 63, 1, 0, 0, 51, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 39, 1, 0, 0, 52, 1, 0,128, 39, 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, 0, 0, 5, 0, 1, 0, 0, 0, 68, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,
+205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,
+ 1, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 3, 0, 0,240,140,157, 26,
- 1, 0, 0, 0, 44, 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, 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, 0, 0, 0, 0, 0, 0, 0, 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,128, 63,
- 0, 0, 0, 0, 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,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, 0, 0, 8, 0,
- 1, 0, 50, 0,205,204, 76, 62, 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, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63,
- 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 3, 67, 0, 0, 3,
- 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, 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,128, 63, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 3, 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, 0, 0, 0, 0, 0, 0, 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, 80,144,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 77, 65, 0, 0, 32, 3, 0, 0, 48, 86,132, 27, 1, 0, 0, 0, 44, 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, 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, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,111,148, 26, 63,111,148, 26, 63,111,148, 26, 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,128, 63, 0, 0, 0, 0, 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,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 50, 0,205,204, 76, 62, 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, 0, 0, 0, 0, 0, 0,128, 63,
+ 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 3, 67, 0, 0, 3, 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, 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,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 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,
+ 0, 0, 0, 0, 0, 0, 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,240,196,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 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,145,157, 26,
- 1, 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,128, 63,
- 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63,205,204, 76, 61,205,204,204, 61,102,102,166, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 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, 68, 65, 84, 65, 16, 1, 0, 0, 80,144,157, 26, 1, 0, 0, 0, 32, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,146,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0,144, 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,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,166,176, 21, 1, 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,128, 63, 0, 0,128, 63, 0, 0,128, 63,111,148, 26, 63,111,148, 26, 63,
+111,148, 26, 63,205,204, 76, 61,205,204,204, 61,102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
+ 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, 68, 65, 84, 65,
+ 16, 1, 0, 0,240,196,132, 29, 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64,198,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0,144, 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,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
+ 0, 0, 0, 63,205,204, 76, 62, 0, 0, 0, 0, 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,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,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,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,128, 63,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 40, 0, 0, 0,160,145,157, 26,
- 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 48,166, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 48,166, 26, 4,
- 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 51,
- 2, 2, 2, 51, 6, 6, 6,153, 6, 6, 6,153, 6, 6, 6,153, 4, 4, 4,102, 3, 3, 3,102, 2, 2, 2, 51, 0, 0, 0, 0,
+ 0, 0,128, 63, 68, 65, 84, 65, 40, 0, 0, 0, 32,166,176, 21, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0,
+ 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 48, 90,132, 27, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 48, 90,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 51, 2, 2, 2, 51, 6, 6, 6,153, 6, 6, 6,153, 6, 6, 6,153,
+ 4, 4, 4,102, 3, 3, 3,102, 2, 2, 2, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 51, 8, 8, 8,153, 11, 11, 11,204, 13, 13, 13,255,
- 12, 12, 12,255, 12, 12, 12,255, 11, 11, 11,255, 10, 10, 10,255, 10, 10, 10,255, 9, 9, 9,255, 9, 9, 9,255, 9, 9, 9,255,
- 4, 4, 4,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, 3, 3, 3, 51, 10, 10, 10,153, 18, 18, 18,255, 20, 20, 20,255, 22, 22, 22,255, 23, 23, 23,255,
- 22, 22, 22,255, 20, 20, 20,255, 19, 19, 19,255, 16, 16, 16,255, 14, 14, 14,255, 11, 11, 11,255, 10, 10, 10,255, 9, 9, 9,255,
- 9, 9, 9,255, 9, 9, 9,255, 8, 8, 8,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 7, 7, 7,102, 19, 19, 19,204, 27, 27, 27,255, 31, 31, 31,255, 32, 32, 32,255, 33, 33, 33,255, 33, 33, 33,255,
- 31, 31, 31,255, 30, 30, 30,255, 27, 27, 27,255, 25, 25, 25,255, 22, 22, 22,255, 19, 19, 19,255, 16, 16, 16,255, 12, 12, 12,255,
- 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255, 4, 4, 4,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,
- 13, 13, 13,153, 29, 29, 29,255, 37, 37, 37,255, 40, 40, 40,255, 42, 42, 42,255, 42, 42, 42,255, 43, 43, 43,255, 41, 41, 41,255,
- 40, 40, 40,255, 38, 38, 38,255, 36, 36, 36,255, 33, 33, 33,255, 30, 30, 30,255, 27, 27, 27,255, 24, 24, 24,255, 20, 20, 20,255,
- 16, 16, 16,255, 12, 12, 12,255, 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255, 7, 7, 7,153, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 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, 13, 13,102,
- 37, 37, 37,255, 44, 44, 44,255, 48, 48, 48,255, 50, 50, 50,255, 51, 51, 51,255, 51, 51, 51,255, 50, 50, 50,255, 49, 49, 49,255,
- 48, 48, 48,255, 45, 45, 45,255, 43, 43, 43,255, 41, 41, 41,255, 37, 37, 37,255, 34, 34, 34,255, 31, 31, 31,255, 28, 28, 28,255,
- 24, 24, 24,255, 20, 20, 20,255, 15, 15, 15,255, 11, 11, 11,255, 10, 10, 10,255, 11, 11, 11,255, 7, 7, 7,153, 0, 0, 0, 0,
- 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, 13, 13,102, 41, 41, 41,255,
- 50, 50, 50,255, 54, 54, 54,255, 57, 57, 57,255, 58, 58, 58,255, 59, 59, 59,255, 59, 59, 59,255, 58, 58, 58,255, 57, 57, 57,255,
- 55, 55, 55,255, 53, 53, 53,255, 51, 51, 51,255, 48, 48, 48,255, 45, 45, 45,255, 41, 41, 41,255, 38, 38, 38,255, 35, 35, 35,255,
- 31, 31, 31,255, 27, 27, 27,255, 23, 23, 23,255, 17, 17, 17,255, 12, 12, 12,255, 11, 11, 11,255, 11, 11, 11,255, 5, 5, 5,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, 36, 36, 36,204, 53, 53, 53,255,
- 59, 59, 59,255, 63, 63, 63,255, 65, 65, 65,255, 66, 66, 66,255, 66, 66, 66,255, 66, 66, 66,255, 65, 65, 65,255, 64, 64, 64,255,
- 62, 62, 62,255, 60, 60, 60,255, 57, 57, 57,255, 54, 54, 54,255, 51, 51, 51,255, 48, 48, 48,255, 44, 44, 44,255, 41, 41, 41,255,
- 37, 37, 37,255, 33, 33, 33,255, 29, 29, 29,255, 24, 24, 24,255, 19, 19, 19,255, 13, 13, 13,255, 11, 11, 11,255, 12, 12, 12,255,
- 3, 3, 3, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19,102, 56, 56, 56,255, 64, 64, 64,255,
- 68, 68, 68,255, 71, 71, 71,255, 73, 73, 73,255, 74, 74, 74,255, 74, 74, 74,255, 73, 73, 73,255, 72, 72, 72,255, 71, 71, 71,255,
- 69, 69, 69,255, 67, 67, 67,255, 64, 64, 64,255, 61, 61, 61,255, 58, 58, 58,255, 54, 54, 54,255, 50, 50, 50,255, 47, 47, 47,255,
- 43, 43, 43,255, 39, 39, 39,255, 34, 34, 34,255, 30, 30, 30,255, 25, 25, 25,255, 19, 19, 19,255, 13, 13, 13,255, 12, 12, 12,255,
- 10, 10, 10,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 54, 54,255, 66, 66, 66,255, 72, 72, 72,255,
- 77, 77, 77,255, 79, 79, 79,255, 81, 81, 81,255, 81, 81, 81,255, 81, 81, 81,255, 80, 80, 80,255, 79, 79, 79,255, 77, 77, 77,255,
- 75, 75, 75,255, 73, 73, 73,255, 70, 70, 70,255, 67, 67, 67,255, 63, 63, 63,255, 60, 60, 60,255, 56, 56, 56,255, 52, 52, 52,255,
- 49, 49, 49,255, 44, 44, 44,255, 40, 40, 40,255, 35, 35, 35,255, 30, 30, 30,255, 24, 24, 24,255, 18, 18, 18,255, 12, 12, 12,255,
- 12, 12, 12,255, 6, 6, 6,102, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 22,102, 67, 67, 67,255, 76, 76, 76,255, 81, 81, 81,255,
- 84, 84, 84,255, 87, 87, 87,255, 88, 88, 88,255, 88, 88, 88,255, 88, 88, 88,255, 87, 87, 87,255, 86, 86, 86,255, 84, 84, 84,255,
- 82, 82, 82,255, 79, 79, 79,255, 76, 76, 76,255, 73, 73, 73,255, 69, 69, 69,255, 65, 65, 65,255, 62, 62, 62,255, 58, 58, 58,255,
- 54, 54, 54,255, 49, 49, 49,255, 45, 45, 45,255, 40, 40, 40,255, 35, 35, 35,255, 29, 29, 29,255, 23, 23, 23,255, 16, 16, 16,255,
- 12, 12, 12,255, 12, 12, 12,204, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49,204, 76, 76, 76,255, 84, 84, 84,255, 89, 89, 89,255,
- 92, 92, 92,255, 94, 94, 94,255, 95, 95, 95,255, 95, 95, 95,255, 95, 95, 95,255, 94, 94, 94,255, 93, 93, 93,255, 91, 91, 91,255,
- 88, 88, 88,255, 85, 85, 85,255, 82, 82, 82,255, 79, 79, 79,255, 75, 75, 75,255, 71, 71, 71,255, 67, 67, 67,255, 63, 63, 63,255,
- 59, 59, 59,255, 55, 55, 55,255, 50, 50, 50,255, 45, 45, 45,255, 40, 40, 40,255, 34, 34, 34,255, 28, 28, 28,255, 21, 21, 21,255,
- 13, 13, 13,255, 14, 14, 14,255, 0, 0, 0, 0, 14, 14, 14,102, 70, 70, 70,255, 85, 85, 85,255, 92, 92, 92,255, 97, 97, 97,255,
-100,100,100,255,102,102,102,255,102,102,102,255,103,103,103,255,102,102,102,255,101,101,101,255, 99, 99, 99,255, 97, 97, 97,255,
- 94, 94, 94,255, 91, 91, 91,255, 88, 88, 88,255, 84, 84, 84,255, 81, 81, 81,255, 77, 77, 77,255, 72, 72, 72,255, 68, 68, 68,255,
- 64, 64, 64,255, 59, 59, 59,255, 55, 55, 55,255, 50, 50, 50,255, 44, 44, 44,255, 39, 39, 39,255, 32, 32, 32,255, 25, 25, 25,255,
- 17, 17, 17,255, 13, 13, 13,255, 7, 7, 7,102, 24, 24, 24,102, 80, 80, 80,255, 93, 93, 93,255,100,100,100,255,104,104,104,255,
-107,107,107,255,109,109,109,255,109,109,109,255,109,109,109,255,109,109,109,255,107,107,107,255,106,106,106,255,103,103,103,255,
-100,100,100,255, 97, 97, 97,255, 94, 94, 94,255, 90, 90, 90,255, 86, 86, 86,255, 82, 82, 82,255, 77, 77, 77,255, 73, 73, 73,255,
- 69, 69, 69,255, 64, 64, 64,255, 59, 59, 59,255, 54, 54, 54,255, 49, 49, 49,255, 43, 43, 43,255, 36, 36, 36,255, 29, 29, 29,255,
- 21, 21, 21,255, 14, 14, 14,255, 10, 10, 10,153, 29, 29, 29,102, 89, 89, 89,255,100,100,100,255,107,107,107,255,112,112,112,255,
-114,114,114,255,116,116,116,255,116,116,116,255,116,116,116,255,115,115,115,255,114,114,114,255,112,112,112,255,110,110,110,255,
-107,107,107,255,104,104,104,255,100,100,100,255, 96, 96, 96,255, 92, 92, 92,255, 87, 87, 87,255, 83, 83, 83,255, 78, 78, 78,255,
- 73, 73, 73,255, 68, 68, 68,255, 63, 63, 63,255, 58, 58, 58,255, 52, 52, 52,255, 46, 46, 46,255, 40, 40, 40,255, 33, 33, 33,255,
- 24, 24, 24,255, 17, 17, 17,255, 13, 13, 13,204, 46, 46, 46,153, 95, 95, 95,255,107,107,107,255,114,114,114,255,118,118,118,255,
-121,121,121,255,122,122,122,255,123,123,123,255,123,123,123,255,122,122,122,255,122,122,122,255,120,120,120,255,118,118,118,255,
-114,114,114,255,110,110,110,255,106,106,106,255,101,101,101,255, 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, 83, 83, 83,255,
- 78, 78, 78,255, 73, 73, 73,255, 68, 68, 68,255, 62, 62, 62,255, 56, 56, 56,255, 50, 50, 50,255, 44, 44, 44,255, 36, 36, 36,255,
- 28, 28, 28,255, 19, 19, 19,255, 12, 12, 12,204, 47, 47, 47,153,101,101,101,255,113,113,113,255,120,120,120,255,125,125,125,255,
-127,127,127,255,129,129,129,255,130,130,130,255,130,130,130,255,131,131,131,255,131,131,131,255,131,131,131,255,129,129,129,255,
-125,125,125,255,120,120,120,255,113,113,113,255,108,108,108,255,103,103,103,255, 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255,
- 82, 82, 82,255, 77, 77, 77,255, 72, 72, 72,255, 66, 66, 66,255, 60, 60, 60,255, 54, 54, 54,255, 47, 47, 47,255, 39, 39, 39,255,
- 31, 31, 31,255, 22, 22, 22,255, 12, 12, 12,204, 48, 48, 48,153,106,106,106,255,118,118,118,255,126,126,126,255,131,131,131,255,
-134,134,134,255,135,135,135,255,137,137,137,255,138,138,138,255,142,142,142,255,147,147,147,255,149,149,149,255,148,148,148,255,
-142,142,142,255,133,133,133,255,124,124,124,255,115,115,115,255,108,108,108,255,102,102,102,255, 97, 97, 97,255, 92, 92, 92,255,
- 87, 87, 87,255, 81, 81, 81,255, 75, 75, 75,255, 69, 69, 69,255, 63, 63, 63,255, 57, 57, 57,255, 49, 49, 49,255, 42, 42, 42,255,
- 33, 33, 33,255, 24, 24, 24,255, 9, 9, 9,153, 32, 32, 32,102,109,109,109,255,123,123,123,255,131,131,131,255,136,136,136,255,
-140,140,140,255,142,142,142,255,144,144,144,255,148,148,148,255,156,156,156,255,168,168,168,255,176,176,176,255,177,177,177,255,
-168,168,168,255,153,153,153,255,137,137,137,255,124,124,124,255,114,114,114,255,107,107,107,255,101,101,101,255, 96, 96, 96,255,
- 90, 90, 90,255, 85, 85, 85,255, 79, 79, 79,255, 72, 72, 72,255, 66, 66, 66,255, 59, 59, 59,255, 52, 52, 52,255, 44, 44, 44,255,
- 35, 35, 35,255, 26, 26, 26,255, 10, 10, 10,153, 17, 17, 17, 51,110,110,110,255,127,127,127,255,136,136,136,255,142,142,142,255,
-145,145,145,255,148,148,148,255,151,151,151,255,159,159,159,255,174,174,174,255,195,195,195,255,212,212,212,255,216,216,216,255,
-204,204,204,255,179,179,179,255,154,154,154,255,135,135,135,255,121,121,121,255,112,112,112,255,106,106,106,255, 99, 99, 99,255,
- 94, 94, 94,255, 88, 88, 88,255, 82, 82, 82,255, 76, 76, 76,255, 69, 69, 69,255, 62, 62, 62,255, 54, 54, 54,255, 46, 46, 46,255,
- 37, 37, 37,255, 26, 26, 26,255, 6, 6, 6,102, 0, 0, 0, 0,107,107,107,255,130,130,130,255,140,140,140,255,146,146,146,255,
-150,150,150,255,153,153,153,255,158,158,158,255,169,169,169,255,191,191,191,255,219,219,219,255,246,246,246,255,254,254,254,255,
-237,237,237,255,204,204,204,255,170,170,170,255,145,145,145,255,127,127,127,255,117,117,117,255,110,110,110,255,103,103,103,255,
- 97, 97, 97,255, 91, 91, 91,255, 85, 85, 85,255, 78, 78, 78,255, 71, 71, 71,255, 64, 64, 64,255, 55, 55, 55,255, 47, 47, 47,255,
- 37, 37, 37,255, 25, 25, 25,255, 3, 3, 3, 51, 0, 0, 0, 0, 65, 65, 65,153,129,129,129,255,142,142,142,255,149,149,149,255,
-154,154,154,255,157,157,157,255,163,163,163,255,176,176,176,255,199,199,199,255,232,232,232,255,255,255,255,255,255,255,255,255,
-255,255,255,255,220,220,220,255,181,181,181,255,151,151,151,255,132,132,132,255,121,121,121,255,113,113,113,255,106,106,106,255,
-100,100,100,255, 94, 94, 94,255, 87, 87, 87,255, 80, 80, 80,255, 73, 73, 73,255, 65, 65, 65,255, 57, 57, 57,255, 48, 48, 48,255,
- 38, 38, 38,255, 16, 16, 16,153, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 21, 51,127,127,127,255,143,143,143,255,152,152,152,255,
-157,157,157,255,161,161,161,255,165,165,165,255,177,177,177,255,198,198,198,255,227,227,227,255,253,253,253,255,255,255,255,255,
-250,250,250,255,217,217,217,255,181,181,181,255,153,153,153,255,135,135,135,255,124,124,124,255,117,117,117,255,110,110,110,255,
-103,103,103,255, 96, 96, 96,255, 89, 89, 89,255, 82, 82, 82,255, 74, 74, 74,255, 66, 66, 66,255, 57, 57, 57,255, 48, 48, 48,255,
- 35, 35, 35,255, 10, 10, 10,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 93, 93,204,141,141,141,255,153,153,153,255,
-159,159,159,255,163,163,163,255,167,167,167,255,174,174,174,255,188,188,188,255,209,209,209,255,228,228,228,255,234,234,234,255,
-224,224,224,255,200,200,200,255,173,173,173,255,151,151,151,255,136,136,136,255,127,127,127,255,119,119,119,255,112,112,112,255,
-105,105,105,255, 98, 98, 98,255, 91, 91, 91,255, 83, 83, 83,255, 75, 75, 75,255, 66, 66, 66,255, 57, 57, 57,255, 46, 46, 46,255,
- 24, 24, 24,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 20, 20, 51,134,134,134,255,151,151,151,255,
-160,160,160,255,164,164,164,255,167,167,167,255,171,171,171,255,178,178,178,255,189,189,189,255,200,200,200,255,202,202,202,255,
-195,195,195,255,180,180,180,255,163,163,163,255,148,148,148,255,137,137,137,255,129,129,129,255,121,121,121,255,114,114,114,255,
-107,107,107,255, 99, 99, 99,255, 91, 91, 91,255, 83, 83, 83,255, 74, 74, 74,255, 65, 65, 65,255, 55, 55, 55,255, 41, 41, 41,255,
- 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49,102,145,145,145,255,
-157,157,157,255,164,164,164,255,167,167,167,255,170,170,170,255,172,172,172,255,176,176,176,255,180,180,180,255,179,179,179,255,
-174,174,174,255,165,165,165,255,155,155,155,255,145,145,145,255,137,137,137,255,130,130,130,255,122,122,122,255,115,115,115,255,
-107,107,107,255, 99, 99, 99,255, 91, 91, 91,255, 82, 82, 82,255, 73, 73, 73,255, 63, 63, 63,255, 50, 50, 50,255, 22, 22, 22,153,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 78, 78,153,
-149,149,149,255,160,160,160,255,166,166,166,255,168,168,168,255,169,169,169,255,170,170,170,255,169,169,169,255,167,167,167,255,
-164,164,164,255,158,158,158,255,151,151,151,255,144,144,144,255,137,137,137,255,130,130,130,255,123,123,123,255,115,115,115,255,
-106,106,106,255, 98, 98, 98,255, 89, 89, 89,255, 80, 80, 80,255, 70, 70, 70,255, 58, 58, 58,255, 27, 27, 27,153, 3, 3, 3, 51,
- 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 80,153,150,150,150,255,160,160,160,255,165,165,165,255,167,167,167,255,167,167,167,255,166,166,166,255,163,163,163,255,
-160,160,160,255,155,155,155,255,149,149,149,255,143,143,143,255,137,137,137,255,129,129,129,255,121,121,121,255,113,113,113,255,
-105,105,105,255, 96, 96, 96,255, 86, 86, 86,255, 76, 76, 76,255, 63, 63, 63,255, 38, 38, 38,204, 7, 7, 7, 51, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 78, 78, 78,153,147,147,147,255,157,157,157,255,161,161,161,255,163,163,163,255,162,162,162,255,160,160,160,255,
-157,157,157,255,152,152,152,255,147,147,147,255,141,141,141,255,135,135,135,255,127,127,127,255,119,119,119,255,110,110,110,255,
-101,101,101,255, 91, 91, 91,255, 80, 80, 80,255, 66, 66, 66,255, 32, 32, 32,153, 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,134,134,134,255,148,148,148,255,154,154,154,255,155,155,155,255,154,154,154,255,
-152,152,152,255,147,147,147,255,142,142,142,255,136,136,136,255,130,130,130,255,122,122,122,255,114,114,114,255,104,104,104,255,
- 93, 93, 93,255, 81, 81, 81,255, 54, 54, 54,204, 22, 22, 22,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, 73, 73, 73,153,103,103,103,204,137,137,137,255,140,140,140,255,
-140,140,140,255,137,137,137,255,133,133,133,255,127,127,127,255,120,120,120,255,113,113,113,255,102,102,102,255, 91, 91, 91,255,
- 64, 64, 64,204, 28, 28, 28,102, 6, 6, 6, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 46, 46,102,
- 72, 72, 72,153, 72, 72, 72,153, 92, 92, 92,204, 88, 88, 88,204, 81, 81, 81,204, 54, 54, 54,153, 35, 35, 35,102, 16, 16, 16, 51,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,104, 1, 0, 0, 0,146,157, 26, 1, 0, 0, 0, 39, 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, 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, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 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, 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,147,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,147,157, 26, 1, 0, 0, 0, 19, 0, 0, 0,
- 1, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 48,184, 26, 4,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 48,184, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,
+ 3, 3, 3, 51, 8, 8, 8,153, 11, 11, 11,204, 13, 13, 13,255, 12, 12, 12,255, 12, 12, 12,255, 11, 11, 11,255, 10, 10, 10,255,
+ 10, 10, 10,255, 9, 9, 9,255, 9, 9, 9,255, 9, 9, 9,255, 4, 4, 4,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, 3, 3, 3, 51, 10, 10, 10,153,
+ 18, 18, 18,255, 20, 20, 20,255, 22, 22, 22,255, 23, 23, 23,255, 22, 22, 22,255, 20, 20, 20,255, 19, 19, 19,255, 16, 16, 16,255,
+ 14, 14, 14,255, 11, 11, 11,255, 10, 10, 10,255, 9, 9, 9,255, 9, 9, 9,255, 9, 9, 9,255, 8, 8, 8,204, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7,102, 19, 19, 19,204, 27, 27, 27,255,
+ 31, 31, 31,255, 32, 32, 32,255, 33, 33, 33,255, 33, 33, 33,255, 31, 31, 31,255, 30, 30, 30,255, 27, 27, 27,255, 25, 25, 25,255,
+ 22, 22, 22,255, 19, 19, 19,255, 16, 16, 16,255, 12, 12, 12,255, 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255,
+ 4, 4, 4,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, 13, 13, 13,153, 29, 29, 29,255, 37, 37, 37,255, 40, 40, 40,255,
+ 42, 42, 42,255, 42, 42, 42,255, 43, 43, 43,255, 41, 41, 41,255, 40, 40, 40,255, 38, 38, 38,255, 36, 36, 36,255, 33, 33, 33,255,
+ 30, 30, 30,255, 27, 27, 27,255, 24, 24, 24,255, 20, 20, 20,255, 16, 16, 16,255, 12, 12, 12,255, 10, 10, 10,255, 10, 10, 10,255,
+ 10, 10, 10,255, 7, 7, 7,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 13, 13,102, 37, 37, 37,255, 44, 44, 44,255, 48, 48, 48,255, 50, 50, 50,255,
+ 51, 51, 51,255, 51, 51, 51,255, 50, 50, 50,255, 49, 49, 49,255, 48, 48, 48,255, 45, 45, 45,255, 43, 43, 43,255, 41, 41, 41,255,
+ 37, 37, 37,255, 34, 34, 34,255, 31, 31, 31,255, 28, 28, 28,255, 24, 24, 24,255, 20, 20, 20,255, 15, 15, 15,255, 11, 11, 11,255,
+ 10, 10, 10,255, 11, 11, 11,255, 7, 7, 7,153, 0, 0, 0, 0, 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, 13, 13,102, 41, 41, 41,255, 50, 50, 50,255, 54, 54, 54,255, 57, 57, 57,255, 58, 58, 58,255,
+ 59, 59, 59,255, 59, 59, 59,255, 58, 58, 58,255, 57, 57, 57,255, 55, 55, 55,255, 53, 53, 53,255, 51, 51, 51,255, 48, 48, 48,255,
+ 45, 45, 45,255, 41, 41, 41,255, 38, 38, 38,255, 35, 35, 35,255, 31, 31, 31,255, 27, 27, 27,255, 23, 23, 23,255, 17, 17, 17,255,
+ 12, 12, 12,255, 11, 11, 11,255, 11, 11, 11,255, 5, 5, 5,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, 36, 36, 36,204, 53, 53, 53,255, 59, 59, 59,255, 63, 63, 63,255, 65, 65, 65,255, 66, 66, 66,255,
+ 66, 66, 66,255, 66, 66, 66,255, 65, 65, 65,255, 64, 64, 64,255, 62, 62, 62,255, 60, 60, 60,255, 57, 57, 57,255, 54, 54, 54,255,
+ 51, 51, 51,255, 48, 48, 48,255, 44, 44, 44,255, 41, 41, 41,255, 37, 37, 37,255, 33, 33, 33,255, 29, 29, 29,255, 24, 24, 24,255,
+ 19, 19, 19,255, 13, 13, 13,255, 11, 11, 11,255, 12, 12, 12,255, 3, 3, 3, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 19, 19, 19,102, 56, 56, 56,255, 64, 64, 64,255, 68, 68, 68,255, 71, 71, 71,255, 73, 73, 73,255, 74, 74, 74,255,
+ 74, 74, 74,255, 73, 73, 73,255, 72, 72, 72,255, 71, 71, 71,255, 69, 69, 69,255, 67, 67, 67,255, 64, 64, 64,255, 61, 61, 61,255,
+ 58, 58, 58,255, 54, 54, 54,255, 50, 50, 50,255, 47, 47, 47,255, 43, 43, 43,255, 39, 39, 39,255, 34, 34, 34,255, 30, 30, 30,255,
+ 25, 25, 25,255, 19, 19, 19,255, 13, 13, 13,255, 12, 12, 12,255, 10, 10, 10,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 54, 54, 54,255, 66, 66, 66,255, 72, 72, 72,255, 77, 77, 77,255, 79, 79, 79,255, 81, 81, 81,255, 81, 81, 81,255,
+ 81, 81, 81,255, 80, 80, 80,255, 79, 79, 79,255, 77, 77, 77,255, 75, 75, 75,255, 73, 73, 73,255, 70, 70, 70,255, 67, 67, 67,255,
+ 63, 63, 63,255, 60, 60, 60,255, 56, 56, 56,255, 52, 52, 52,255, 49, 49, 49,255, 44, 44, 44,255, 40, 40, 40,255, 35, 35, 35,255,
+ 30, 30, 30,255, 24, 24, 24,255, 18, 18, 18,255, 12, 12, 12,255, 12, 12, 12,255, 6, 6, 6,102, 0, 0, 0, 0, 0, 0, 0, 0,
+ 22, 22, 22,102, 67, 67, 67,255, 76, 76, 76,255, 81, 81, 81,255, 84, 84, 84,255, 87, 87, 87,255, 88, 88, 88,255, 88, 88, 88,255,
+ 88, 88, 88,255, 87, 87, 87,255, 86, 86, 86,255, 84, 84, 84,255, 82, 82, 82,255, 79, 79, 79,255, 76, 76, 76,255, 73, 73, 73,255,
+ 69, 69, 69,255, 65, 65, 65,255, 62, 62, 62,255, 58, 58, 58,255, 54, 54, 54,255, 49, 49, 49,255, 45, 45, 45,255, 40, 40, 40,255,
+ 35, 35, 35,255, 29, 29, 29,255, 23, 23, 23,255, 16, 16, 16,255, 12, 12, 12,255, 12, 12, 12,204, 0, 0, 0, 0, 0, 0, 0, 0,
+ 49, 49, 49,204, 76, 76, 76,255, 84, 84, 84,255, 89, 89, 89,255, 92, 92, 92,255, 94, 94, 94,255, 95, 95, 95,255, 95, 95, 95,255,
+ 95, 95, 95,255, 94, 94, 94,255, 93, 93, 93,255, 91, 91, 91,255, 88, 88, 88,255, 85, 85, 85,255, 82, 82, 82,255, 79, 79, 79,255,
+ 75, 75, 75,255, 71, 71, 71,255, 67, 67, 67,255, 63, 63, 63,255, 59, 59, 59,255, 55, 55, 55,255, 50, 50, 50,255, 45, 45, 45,255,
+ 40, 40, 40,255, 34, 34, 34,255, 28, 28, 28,255, 21, 21, 21,255, 13, 13, 13,255, 14, 14, 14,255, 0, 0, 0, 0, 14, 14, 14,102,
+ 70, 70, 70,255, 85, 85, 85,255, 92, 92, 92,255, 97, 97, 97,255,100,100,100,255,102,102,102,255,102,102,102,255,103,103,103,255,
+102,102,102,255,101,101,101,255, 99, 99, 99,255, 97, 97, 97,255, 94, 94, 94,255, 91, 91, 91,255, 88, 88, 88,255, 84, 84, 84,255,
+ 81, 81, 81,255, 77, 77, 77,255, 72, 72, 72,255, 68, 68, 68,255, 64, 64, 64,255, 59, 59, 59,255, 55, 55, 55,255, 50, 50, 50,255,
+ 44, 44, 44,255, 39, 39, 39,255, 32, 32, 32,255, 25, 25, 25,255, 17, 17, 17,255, 13, 13, 13,255, 7, 7, 7,102, 24, 24, 24,102,
+ 80, 80, 80,255, 93, 93, 93,255,100,100,100,255,104,104,104,255,107,107,107,255,109,109,109,255,109,109,109,255,109,109,109,255,
+109,109,109,255,107,107,107,255,106,106,106,255,103,103,103,255,100,100,100,255, 97, 97, 97,255, 94, 94, 94,255, 90, 90, 90,255,
+ 86, 86, 86,255, 82, 82, 82,255, 77, 77, 77,255, 73, 73, 73,255, 69, 69, 69,255, 64, 64, 64,255, 59, 59, 59,255, 54, 54, 54,255,
+ 49, 49, 49,255, 43, 43, 43,255, 36, 36, 36,255, 29, 29, 29,255, 21, 21, 21,255, 14, 14, 14,255, 10, 10, 10,153, 29, 29, 29,102,
+ 89, 89, 89,255,100,100,100,255,107,107,107,255,112,112,112,255,114,114,114,255,116,116,116,255,116,116,116,255,116,116,116,255,
+115,115,115,255,114,114,114,255,112,112,112,255,110,110,110,255,107,107,107,255,104,104,104,255,100,100,100,255, 96, 96, 96,255,
+ 92, 92, 92,255, 87, 87, 87,255, 83, 83, 83,255, 78, 78, 78,255, 73, 73, 73,255, 68, 68, 68,255, 63, 63, 63,255, 58, 58, 58,255,
+ 52, 52, 52,255, 46, 46, 46,255, 40, 40, 40,255, 33, 33, 33,255, 24, 24, 24,255, 17, 17, 17,255, 13, 13, 13,204, 46, 46, 46,153,
+ 95, 95, 95,255,107,107,107,255,114,114,114,255,118,118,118,255,121,121,121,255,122,122,122,255,123,123,123,255,123,123,123,255,
+122,122,122,255,122,122,122,255,120,120,120,255,118,118,118,255,114,114,114,255,110,110,110,255,106,106,106,255,101,101,101,255,
+ 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, 83, 83, 83,255, 78, 78, 78,255, 73, 73, 73,255, 68, 68, 68,255, 62, 62, 62,255,
+ 56, 56, 56,255, 50, 50, 50,255, 44, 44, 44,255, 36, 36, 36,255, 28, 28, 28,255, 19, 19, 19,255, 12, 12, 12,204, 47, 47, 47,153,
+101,101,101,255,113,113,113,255,120,120,120,255,125,125,125,255,127,127,127,255,129,129,129,255,130,130,130,255,130,130,130,255,
+131,131,131,255,131,131,131,255,131,131,131,255,129,129,129,255,125,125,125,255,120,120,120,255,113,113,113,255,108,108,108,255,
+103,103,103,255, 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, 82, 82, 82,255, 77, 77, 77,255, 72, 72, 72,255, 66, 66, 66,255,
+ 60, 60, 60,255, 54, 54, 54,255, 47, 47, 47,255, 39, 39, 39,255, 31, 31, 31,255, 22, 22, 22,255, 12, 12, 12,204, 48, 48, 48,153,
+106,106,106,255,118,118,118,255,126,126,126,255,131,131,131,255,134,134,134,255,135,135,135,255,137,137,137,255,138,138,138,255,
+142,142,142,255,147,147,147,255,149,149,149,255,148,148,148,255,142,142,142,255,133,133,133,255,124,124,124,255,115,115,115,255,
+108,108,108,255,102,102,102,255, 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, 81, 81, 81,255, 75, 75, 75,255, 69, 69, 69,255,
+ 63, 63, 63,255, 57, 57, 57,255, 49, 49, 49,255, 42, 42, 42,255, 33, 33, 33,255, 24, 24, 24,255, 9, 9, 9,153, 32, 32, 32,102,
+109,109,109,255,123,123,123,255,131,131,131,255,136,136,136,255,140,140,140,255,142,142,142,255,144,144,144,255,148,148,148,255,
+156,156,156,255,168,168,168,255,176,176,176,255,177,177,177,255,168,168,168,255,153,153,153,255,137,137,137,255,124,124,124,255,
+114,114,114,255,107,107,107,255,101,101,101,255, 96, 96, 96,255, 90, 90, 90,255, 85, 85, 85,255, 79, 79, 79,255, 72, 72, 72,255,
+ 66, 66, 66,255, 59, 59, 59,255, 52, 52, 52,255, 44, 44, 44,255, 35, 35, 35,255, 26, 26, 26,255, 10, 10, 10,153, 17, 17, 17, 51,
+110,110,110,255,127,127,127,255,136,136,136,255,142,142,142,255,145,145,145,255,148,148,148,255,151,151,151,255,159,159,159,255,
+174,174,174,255,195,195,195,255,212,212,212,255,216,216,216,255,204,204,204,255,179,179,179,255,154,154,154,255,135,135,135,255,
+121,121,121,255,112,112,112,255,106,106,106,255, 99, 99, 99,255, 94, 94, 94,255, 88, 88, 88,255, 82, 82, 82,255, 76, 76, 76,255,
+ 69, 69, 69,255, 62, 62, 62,255, 54, 54, 54,255, 46, 46, 46,255, 37, 37, 37,255, 26, 26, 26,255, 6, 6, 6,102, 0, 0, 0, 0,
+107,107,107,255,130,130,130,255,140,140,140,255,146,146,146,255,150,150,150,255,153,153,153,255,158,158,158,255,169,169,169,255,
+191,191,191,255,219,219,219,255,246,246,246,255,254,254,254,255,237,237,237,255,204,204,204,255,170,170,170,255,145,145,145,255,
+127,127,127,255,117,117,117,255,110,110,110,255,103,103,103,255, 97, 97, 97,255, 91, 91, 91,255, 85, 85, 85,255, 78, 78, 78,255,
+ 71, 71, 71,255, 64, 64, 64,255, 55, 55, 55,255, 47, 47, 47,255, 37, 37, 37,255, 25, 25, 25,255, 3, 3, 3, 51, 0, 0, 0, 0,
+ 65, 65, 65,153,129,129,129,255,142,142,142,255,149,149,149,255,154,154,154,255,157,157,157,255,163,163,163,255,176,176,176,255,
+199,199,199,255,232,232,232,255,255,255,255,255,255,255,255,255,255,255,255,255,220,220,220,255,181,181,181,255,151,151,151,255,
+132,132,132,255,121,121,121,255,113,113,113,255,106,106,106,255,100,100,100,255, 94, 94, 94,255, 87, 87, 87,255, 80, 80, 80,255,
+ 73, 73, 73,255, 65, 65, 65,255, 57, 57, 57,255, 48, 48, 48,255, 38, 38, 38,255, 16, 16, 16,153, 0, 0, 0, 0, 0, 0, 0, 0,
+ 21, 21, 21, 51,127,127,127,255,143,143,143,255,152,152,152,255,157,157,157,255,161,161,161,255,165,165,165,255,177,177,177,255,
+198,198,198,255,227,227,227,255,253,253,253,255,255,255,255,255,250,250,250,255,217,217,217,255,181,181,181,255,153,153,153,255,
+135,135,135,255,124,124,124,255,117,117,117,255,110,110,110,255,103,103,103,255, 96, 96, 96,255, 89, 89, 89,255, 82, 82, 82,255,
+ 74, 74, 74,255, 66, 66, 66,255, 57, 57, 57,255, 48, 48, 48,255, 35, 35, 35,255, 10, 10, 10,153, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 93, 93, 93,204,141,141,141,255,153,153,153,255,159,159,159,255,163,163,163,255,167,167,167,255,174,174,174,255,
+188,188,188,255,209,209,209,255,228,228,228,255,234,234,234,255,224,224,224,255,200,200,200,255,173,173,173,255,151,151,151,255,
+136,136,136,255,127,127,127,255,119,119,119,255,112,112,112,255,105,105,105,255, 98, 98, 98,255, 91, 91, 91,255, 83, 83, 83,255,
+ 75, 75, 75,255, 66, 66, 66,255, 57, 57, 57,255, 46, 46, 46,255, 24, 24, 24,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 20, 20, 20, 51,134,134,134,255,151,151,151,255,160,160,160,255,164,164,164,255,167,167,167,255,171,171,171,255,
+178,178,178,255,189,189,189,255,200,200,200,255,202,202,202,255,195,195,195,255,180,180,180,255,163,163,163,255,148,148,148,255,
+137,137,137,255,129,129,129,255,121,121,121,255,114,114,114,255,107,107,107,255, 99, 99, 99,255, 91, 91, 91,255, 83, 83, 83,255,
+ 74, 74, 74,255, 65, 65, 65,255, 55, 55, 55,255, 41, 41, 41,255, 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49,102,145,145,145,255,157,157,157,255,164,164,164,255,167,167,167,255,170,170,170,255,
+172,172,172,255,176,176,176,255,180,180,180,255,179,179,179,255,174,174,174,255,165,165,165,255,155,155,155,255,145,145,145,255,
+137,137,137,255,130,130,130,255,122,122,122,255,115,115,115,255,107,107,107,255, 99, 99, 99,255, 91, 91, 91,255, 82, 82, 82,255,
+ 73, 73, 73,255, 63, 63, 63,255, 50, 50, 50,255, 22, 22, 22,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 78, 78,153,149,149,149,255,160,160,160,255,166,166,166,255,168,168,168,255,
+169,169,169,255,170,170,170,255,169,169,169,255,167,167,167,255,164,164,164,255,158,158,158,255,151,151,151,255,144,144,144,255,
+137,137,137,255,130,130,130,255,123,123,123,255,115,115,115,255,106,106,106,255, 98, 98, 98,255, 89, 89, 89,255, 80, 80, 80,255,
+ 70, 70, 70,255, 58, 58, 58,255, 27, 27, 27,153, 3, 3, 3, 51, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 80,153,150,150,150,255,160,160,160,255,165,165,165,255,
+167,167,167,255,167,167,167,255,166,166,166,255,163,163,163,255,160,160,160,255,155,155,155,255,149,149,149,255,143,143,143,255,
+137,137,137,255,129,129,129,255,121,121,121,255,113,113,113,255,105,105,105,255, 96, 96, 96,255, 86, 86, 86,255, 76, 76, 76,255,
+ 63, 63, 63,255, 38, 38, 38,204, 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 78, 78,153,147,147,147,255,157,157,157,255,
+161,161,161,255,163,163,163,255,162,162,162,255,160,160,160,255,157,157,157,255,152,152,152,255,147,147,147,255,141,141,141,255,
+135,135,135,255,127,127,127,255,119,119,119,255,110,110,110,255,101,101,101,255, 91, 91, 91,255, 80, 80, 80,255, 66, 66, 66,255,
+ 32, 32, 32,153, 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,134,134,134,255,
+148,148,148,255,154,154,154,255,155,155,155,255,154,154,154,255,152,152,152,255,147,147,147,255,142,142,142,255,136,136,136,255,
+130,130,130,255,122,122,122,255,114,114,114,255,104,104,104,255, 93, 93, 93,255, 81, 81, 81,255, 54, 54, 54,204, 22, 22, 22,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,
+ 73, 73, 73,153,103,103,103,204,137,137,137,255,140,140,140,255,140,140,140,255,137,137,137,255,133,133,133,255,127,127,127,255,
+120,120,120,255,113,113,113,255,102,102,102,255, 91, 91, 91,255, 64, 64, 64,204, 28, 28, 28,102, 6, 6, 6, 51, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 46, 46,102, 72, 72, 72,153, 72, 72, 72,153, 92, 92, 92,204, 88, 88, 88,204,
+ 81, 81, 81,204, 54, 54, 54,153, 35, 35, 35,102, 16, 16, 16, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 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,
+104, 1, 0, 0, 64,198,132, 29, 1, 0, 0, 0, 39, 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, 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, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 8, 0, 0, 0,
+ 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60,
+ 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, 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,224,199,132, 29,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 40, 0, 0, 0,224,199,132, 29, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 48,108,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 16, 0, 0, 48,108,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,
0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,
0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,
0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,
@@ -7559,24 +7656,24 @@ char datatoc_B_blend[]= {
0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,
0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,
0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,
- 0, 0, 0,255, 77, 69, 0, 0,144, 1, 0, 0, 0,148,157, 26, 1, 0, 0, 0, 54, 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, 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, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,163, 89, 3, 1, 0, 0, 0,128,156,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,151,157, 26, 1, 0, 0, 0, 16,154,157, 26, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,149,157, 26, 1, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,152,157, 26, 1, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,154,157, 26, 1, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 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, 0, 0, 0, 0, 0, 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, 67, 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, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0, 64,163, 89, 3, 1, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0,240,140,157, 26, 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0,208,149,157, 26, 1, 0, 0, 0, 77, 1, 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,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0,144, 1, 0, 0, 48,171,109, 27,
+ 1, 0, 0, 0, 54, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 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,116,110, 27,
+ 1, 0, 0, 0,224,184,135, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,174,109, 27,
+ 1, 0, 0, 0, 64,177,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,173,109, 27,
+ 1, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,175,109, 27,
+ 1, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,178,109, 27,
+ 1, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 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, 0, 0, 0, 0, 0, 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, 67, 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, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 8, 0, 0, 0,224,116,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 48, 86,132, 27, 1, 0, 0, 0, 68, 65, 84, 65,
+104, 1, 0, 0, 0,173,109, 27, 1, 0, 0, 0, 78, 1, 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,112,151,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,174,109, 27, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -7585,17 +7682,17 @@ 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, 68, 65, 84, 65,192, 0, 0, 0,112,151,157, 26, 1, 0, 0, 0, 60, 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,255,127, 1, 0, 0, 0, 0, 0,128, 63,
- 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191,253,255,127,191, 0, 0,128,191,
- 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, 26,182,255,127,
- 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0,245,255,127, 63,
- 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191,250,255,127,191, 0, 0,128, 63,
- 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73,230, 73,255,127,
- 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0,112,152,157, 26, 1, 0, 0, 0, 77, 1, 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, 68, 65, 84, 65,
+192, 0, 0, 0,160,174,109, 27, 1, 0, 0, 0, 60, 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,255,127, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, 26,182,255,127,
+ 1, 0, 0, 0, 1, 0,128,191,253,255,127,191, 0, 0,128,191, 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,250,255,127,191,
+ 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,
+230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0,245,255,127, 63, 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73,255,127,
+ 1, 0, 0, 0, 3, 0,128,191,250,255,127,191, 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,255,255,127,191,
+ 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73,230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0,160,175,109, 27,
+ 1, 0, 0, 0, 78, 1, 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, 16,154,157, 26,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,177,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -7604,15 +7701,15 @@ 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, 68, 65, 84, 65,144, 0, 0, 0, 16,154,157, 26, 1, 0, 0, 0, 57, 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,104, 1, 0, 0,224,154,157, 26, 1, 0, 0, 0, 77, 1, 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, 68, 65, 84, 65,144, 0, 0, 0, 64,177,109, 27,
+ 1, 0, 0, 0, 57, 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,
+104, 1, 0, 0, 16,178,109, 27, 1, 0, 0, 0, 78, 1, 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,128,156,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,184,135, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -7621,28 +7718,29 @@ 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, 68, 65, 84, 65,120, 0, 0, 0,128,156,157, 26, 1, 0, 0, 0, 56, 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, 85, 83, 69, 82,
-160, 11, 0, 0,160,150,242, 1, 1, 0, 0, 0,189, 0, 0, 0, 1, 0, 0, 0, 33,152, 1, 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, 68, 65, 84, 65,
+120, 0, 0, 0,224,184,135, 29, 1, 0, 0, 0, 56, 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, 85, 83, 69, 82,160, 11, 0, 0,224,252,251, 1, 1, 0, 0, 0,190, 0, 0, 0,
+ 1, 0, 0, 0, 33,152, 1, 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,
- 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, 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,
- 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, 0, 0, 0, 0, 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,
- 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -7661,8 +7759,8 @@ 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, 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,
- 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -7671,21 +7769,20 @@ 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, 2, 0, 94, 1, 8, 0, 0, 0, 3, 0, 0, 0, 48, 52, 6, 1,
+ 0, 0, 0, 0, 1, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, 68,172, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0,128, 0, 0, 0,
+ 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0, 48, 98, 21, 3, 1, 0, 0, 0, 48,122, 21, 3, 1, 0, 0, 0, 0, 72,128, 29,
+ 1, 0, 0, 0, 0, 72,128, 29, 1, 0, 0, 0, 80, 73,128, 29, 1, 0, 0, 0, 80, 73,128, 29, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 8, 0, 0, 0, 3, 0, 0, 0, 48, 52, 6, 1, 0, 0, 0, 0, 5, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0,
- 68,172, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0,128, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0, 48,214, 26, 4,
- 1, 0, 0, 0, 48,238, 26, 4, 1, 0, 0, 0,192, 20, 78, 3, 1, 0, 0, 0,192, 20, 78, 3, 1, 0, 0, 0,128, 43,138, 26,
- 1, 0, 0, 0,128, 43,138, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 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, 0, 0,
- 1, 0, 2, 0, 25, 0, 0, 0, 20, 0, 20, 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, 60, 0,
- 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0,144, 31, 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, 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 0, 0, 20, 0, 20, 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, 60, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0,144, 31, 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, 0, 0, 0, 0, 0,
@@ -7695,10 +7792,9 @@ 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,
- 2, 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,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 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, 63,
- 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,
- 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63,
+ 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, 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,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, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63,
0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63,
0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,
0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63,
@@ -7719,37 +7815,63 @@ char datatoc_B_blend[]= {
0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63,
0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63,
0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,
- 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 21, 0, 0, 48,214, 26, 4,
- 1, 0, 0, 0,187, 0, 0, 0, 1, 0, 0, 0, 48,238, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 15, 0,241,255, 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, 1, 0, 0, 0, 25, 0, 0, 0, 25, 25, 25,255,
-140,140,140,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, 0, 0, 0,255,
- 70, 70, 70,255, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 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, 1, 0, 15, 0,241,255, 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,
-180,180,180,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 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, 1, 0,236,255, 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, 1, 0, 15, 0,241,255, 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, 25, 0,236,255, 0, 0, 0, 0, 0,255,
- 25, 25, 25,230, 45, 45, 45,230,100,100,100,255,160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 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, 38, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 50, 50, 50,180,
- 80, 80, 80,180,100,100,100,180,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255,
- 0, 0, 0, 0, 86,128,194,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,115,190, 76,255,
- 90,166, 51,255,240,235,100,255,215,211, 75,255,180, 0,255,255,153, 0,230,255, 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, 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,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63,
+ 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65,216, 21, 0, 0, 48, 98, 21, 3, 1, 0, 0, 0,188, 0, 0, 0, 1, 0, 0, 0, 48,122, 21, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 15, 0,241,255, 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, 1, 0, 0, 0, 25, 0, 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, 1, 0, 15, 0,241,255, 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, 1, 0, 15, 0,241,255, 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,180,180,180,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,
+255,255,255,255, 1, 0,236,255, 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, 1, 0,236,255, 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, 1, 0, 15, 0,241,255, 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, 25, 0,236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, 45, 45, 45,230,100,100,100,255,160,160,160,255,
+255,255,255,255, 0, 0, 25, 0,236,255, 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, 38, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 50, 50, 50,180, 80, 80, 80,180,100,100,100,180,128,128,128,255, 0, 0, 0,255,
+255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255, 0, 0, 0,255, 0, 0, 0,255,
+ 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,115,190, 76,255, 90,166, 51,255,240,235,100,255,215,211, 75,255,180, 0,255,255,
+153, 0,230,255, 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, 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,114,114,114,255,
+ 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, 8, 48, 8,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,114,114,114,255, 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,
+ 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, 8, 48, 8,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, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, 76,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,114,114,114,255,
+ 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,145,145,145,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, 8, 48, 8,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,114,114,114,255, 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,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,114,114,114,255,
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,
@@ -7758,41 +7880,24 @@ char datatoc_B_blend[]= {
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, 76, 76, 76,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,114,114,114,255, 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,145,145,145,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, 8, 48, 8,255,
+ 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,114,114,114,255, 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, 8, 48, 8,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, 0, 0, 0, 0, 0, 0, 0, 0, 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,114,114,114,255,
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,
+ 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,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,114,114,114,255, 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, 8, 48, 8,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,114,114,114,255,
- 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, 8, 48, 8,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,
+255,133, 0,255, 3, 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,114,114,114,255, 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,
@@ -7800,75 +7905,75 @@ char datatoc_B_blend[]= {
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,107,107,107,255,
+ 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,114,114,114,255,
- 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, 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, 8, 48, 8,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, 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,
+ 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,114,114,114,255, 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, 8, 48, 8,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,
+ 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,114,114,114,255,
- 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, 8, 48, 8,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,
+ 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, 8, 48, 8,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, 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,
+ 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,110,110,110,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255,
+ 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,114,114,114,255, 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, 8, 48, 8,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, 8, 48, 8,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, 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,114,114,114,255,
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,
+ 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, 8, 48, 8,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,
+ 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,114,114,114,255, 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, 8, 48, 8,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, 8, 48, 8,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, 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,114,114,114,255,
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,
+ 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, 8, 48, 8,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,
+ 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 4, 0, 0,155,155,155,160,100,100,100,255,108,105,111,255,104,106,117,255,105,117,110,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, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100,100,100,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,114,114,114,255, 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, 8, 48, 8,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,
+ 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,155,155,155,160,100,100,100,255,108,105,111,255,
-104,106,117,255,105,117,110,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,100,100,100,255,
+ 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,114,114,114,255,
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,
@@ -7877,648 +7982,646 @@ char datatoc_B_blend[]= {
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,114,114,114,255, 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, 8, 48, 8,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,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,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, 68, 65, 84, 65,216, 21, 0, 0, 48,122, 21, 3,
+ 1, 0, 0, 0,188, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 98, 21, 3, 1, 0, 0, 0, 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, 1, 0, 25, 0,231,255, 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, 1, 0, 0, 0, 25, 0, 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, 1, 0, 15, 0,241,255, 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, 1, 0, 15, 0,241,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, 25, 25, 25,255,
+180,180,180,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 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, 1, 0,236,255, 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, 1, 0, 15, 0,241,255, 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, 25, 0,236,255, 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, 25, 0,236,255, 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, 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, 68, 65, 84, 65,248, 21, 0, 0, 48,238, 26, 4, 1, 0, 0, 0,187, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48,214, 26, 4, 1, 0, 0, 0, 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, 1, 0, 25, 0,231,255, 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, 1, 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, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 15, 0,241,255, 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, 1, 0, 15, 0,241,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, 25, 25, 25,255,180,180,180,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,
-255,255,255,255, 1, 0,236,255, 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, 1, 0,236,255, 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, 1, 0, 15, 0,241,255, 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, 25, 0,236,255, 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, 25, 0,236,255, 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, 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, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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,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, 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,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,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, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 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,114,114,114,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,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, 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, 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,114,114,114,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, 0, 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,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,
+ 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,158,158,158,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,158,158,158,255,
+ 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,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,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,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245,
+ 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, 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,
+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,143,143,143,255,
+ 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, 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,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,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,
+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,160,160,160,100,
+ 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,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, 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,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, 0, 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,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,
+ 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, 0, 0, 0, 0, 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,
- 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, 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,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,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,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, 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, 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,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,
+ 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,158,158,158,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,158,158,158,255,
+ 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,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,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,100,100,100,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,100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,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,114,114,114,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
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,114,114,114,255,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,
- 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, 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, 60,229, 0, 0, 48,174, 15, 4,
- 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69, 44, 11, 0, 0, 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,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, 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, 42,114,101,110,100,101,114, 95,116,101,120,116, 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,114,111,116, 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, 98,114,117,115,104, 95,109, 97,112, 95,109,111,100,101,
- 0,112, 97,100, 91, 55, 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,118,
- 97,114,102, 97, 99, 0,110,111,114,102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0, 99,111,108,
-115,112,101, 99,102, 97, 99, 0,109,105,114,114,102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100,105,102,102,102, 97, 99,
- 0,115,112,101, 99,102, 97, 99, 0,101,109,105,116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, 97,121,109,105,114,114,
-102, 97, 99, 0,116,114, 97,110,115,108,102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109,105,116,102, 97, 99, 0,
- 99,111,108,114,101,102,108,102, 97, 99, 0, 99,111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110,115,102, 97, 99, 0,115,
- 99, 97,116,116,101,114,102, 97, 99, 0,114,101,102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0,108,101,110,103,116,104,
-102, 97, 99, 0, 99,108,117,109,112,102, 97, 99, 0,107,105,110,107,102, 97, 99, 0,114,111,117,103,104,102, 97, 99, 0,112, 97,
-100,101,110,115,102, 97, 99, 0,108,105,102,101,102, 97, 99, 0,115,105,122,101,102, 97, 99, 0,105,118,101,108,102, 97, 99, 0,
-112,118,101,108,102, 97, 99, 0,115,104, 97,100,111,119,102, 97, 99, 0,122,101,110,117,112,102, 97, 99, 0,122,101,110,100,111,
-119,110,102, 97, 99, 0, 98,108,101,110,100,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,102, 97,108,108,111,102,102, 95,116,121,112,101,
- 0,102, 97,108,108,111,102,102, 95,115,111,102,116,110,101,115,115, 0,114, 97,100,105,117,115, 0, 99,111,108,111,114, 95,115,
-111,117,114, 99,101, 0,116,111,116,112,111,105,110,116,115, 0,112,100,112, 97,100, 0,112,115,121,115, 0,112,115,121,115, 95,
- 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0, 42,112,111,105,110,
-116, 95,116,114,101,101, 0, 42,112,111,105,110,116, 95,100, 97,116, 97, 0,110,111,105,115,101, 95,115,105,122,101, 0,110,111,
-105,115,101, 95,100,101,112,116,104, 0,110,111,105,115,101, 95,105,110,102,108,117,101,110, 99,101, 0,110,111,105,115,101, 95,
- 98, 97,115,105,115, 0,112,100,112, 97,100, 51, 91, 51, 93, 0,110,111,105,115,101, 95,102, 97, 99, 0,115,112,101,101,100, 95,
-115, 99, 97,108,101, 0, 42, 99,111, 98, 97, 0,114,101,115,111,108, 91, 51, 93, 0,105,110,116,101,114,112, 95,116,121,112,101,
- 0,102,105,108,101, 95,102,111,114,109, 97,116, 0,101,120,116,101,110,100, 0,105,110,116, 95,109,117,108,116,105,112,108,105,
-101,114, 0,115,116,105,108,108, 95,102,114, 97,109,101, 0,115,111,117,114, 99,101, 95,112, 97,116,104, 91, 50, 52, 48, 93, 0,
- 42,100, 97,116, 97,115,101,116, 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,116,101,120,102,105,108,116,101,
-114, 0, 97,102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101,112,101, 97,116, 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,101,110,118, 0, 42,112,100, 0, 42,118,100, 0,117,115,101, 95,110,111,100,101,115, 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,115,
-104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0, 99,111,109,112,114,101,115,115,116,104,
-114,101,115,104, 0,112, 97,100, 53, 91, 51, 93, 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,112,114, 95,116,101,120,116,117,114,101, 0,112, 97,100, 91, 51, 93, 0,100,101,110,115,105,116,121, 0,101,109,105,
-115,115,105,111,110, 0,115, 99, 97,116,116,101,114,105,110,103, 0,114,101,102,108,101, 99,116,105,111,110, 0,101,109,105,115,
-115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,116,114, 97,110,115,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,
-114,101,102,108,101, 99,116,105,111,110, 95, 99,111,108, 91, 51, 93, 0,100,101,110,115,105,116,121, 95,115, 99, 97,108,101, 0,
-100,101,112,116,104, 95, 99,117,116,111,102,102, 0, 97,115,121,109,109,101,116,114,121, 0,115,116,101,112,115,105,122,101, 95,
-116,121,112,101, 0,115,104, 97,100,101,102,108, 97,103, 0,115,104, 97,100,101, 95,116,121,112,101, 0,112,114,101, 99, 97, 99,
-104,101, 95,114,101,115,111,108,117,116,105,111,110, 0,115,116,101,112,115,105,122,101, 0,109,115, 95,100,105,102,102, 0,109,
-115, 95,105,110,116,101,110,115,105,116,121, 0,109,115, 95,115,116,101,112,115, 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,118,111,108, 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,109, 97,112,116,111, 95,116,101,120,116,117,114,
-101,100, 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,101,100,105,116,101,108,101,109,
-115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, 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, 42,108, 97,115,116,101,108,101,109, 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,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,100,114, 97,119,
-102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0,112, 97,100, 91, 50, 93, 0,116,119,105,115,116, 95,115,109,111,
-111,116,104, 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, 99,116,105,109,101, 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,101,100,105,116,102,108, 97,103,
- 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,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,100,111,109,
- 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 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,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 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,112,116, 99, 97, 99,104,101,
-115, 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, 42, 98,118,104,116,114,101,101, 0, 42,118, 0, 42,100,109, 0, 99,
-102,114, 97, 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, 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, 40, 42, 98,105,110,100,102,117,110, 99, 41, 40, 41, 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,111,115,105,
-116,105,111,110, 0,114, 97,110,100,111,109, 95,112,111,115,105,116,105,111,110, 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, 42,115, 99,117,108,112,116, 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, 42,103,112,100, 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,114,101,115,116,111,114,101, 95,109,111,100,101, 0, 42,109, 97,116, 98,105,
-116,115, 0, 97, 99,116, 99,111,108, 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,114,111,116, 65,120,105,115, 91, 51, 93, 0,100,
-114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110,103,108,101, 0,100,114,111,116, 65,110,103,108,101, 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,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,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,114,111,116,109,111,
-100,101, 0,100,116, 0,100,116,120, 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,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,112, 99, 95,105,100,115, 0, 42,
-100,117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100,101,120, 0, 97, 99,116,105,118,101, 0,111,114,105,103,108, 97,
-121, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116,101,100, 0,111,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114,
- 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102,105,101,108,100, 0,115,104, 97,112,101, 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,122,100,105,114, 0,102, 95,115,116,
-114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95,102,108,111,119, 0,102, 95,115,105,122,101, 0,102, 95,112,111,
-119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100,105,115,116, 0,102, 95,112,111,119,101,114, 95,114, 0,109, 97,
-120,114, 97,100, 0,109,105,110,114, 97,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, 97, 98,115,111,114,112,116,105,111,110, 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, 42,114,110,103, 0,102, 95,110,111,105,115,101,
- 0,119,101,105,103,104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93,
- 0,102,114, 97,109,101, 0,116,111,116,112,111,105,110,116, 0,100, 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,
-120, 95, 97,114,114, 97,121, 0, 42,100, 97,116, 97, 91, 56, 93, 0, 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 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, 97,115,116, 95,101,120, 97, 99,116, 0,110, 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,
-109,101, 91, 54, 52, 93, 0,105,110,102,111, 91, 54, 52, 93, 0,112, 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97,
- 99,104,101, 0, 42,101,100,105,116, 0, 40, 42,102,114,101,101, 95,101,100,105,116, 41, 40, 41, 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,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,109,115,103,
- 95,108,111, 99,107, 0,109,115,103, 95,118, 97,108,117,101, 0,110,111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71,
- 95, 77, 97,115,115, 91, 51, 50, 93, 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,110, 97,109,101,100, 86, 71, 95, 83,111,102,116,103,111, 97,108, 91, 51, 50, 93, 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,110, 97,109,101,100, 86, 71, 95, 83,
-112,114,105,110,103, 95, 75, 91, 51, 50, 93, 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, 42,101,102,102,101, 99,116,111,
-114, 95,119,101,105,103,104,116,115, 0, 42,102,109,100, 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,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, 97,
-117,100,105,111, 95,109,105,120,114, 97,116,101, 0, 97,117,100,105,111, 95,118,111,108,117,109,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,115,112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,
-111,112,112,108,101,114, 95,102, 97, 99,116,111,114, 0,100,105,115,116, 97,110, 99,101, 95,109,111,100,101,108, 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,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, 50, 0,102,114, 97,109,101, 95,115,116,
-101,112, 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,100,105,115,112,108, 97,121,109,111,100,101, 0,114,112, 97,100, 49, 0,114,112, 97,100, 50, 0,
-115, 99,101,109,111,100,101, 0,114, 97,121,116,114, 97, 99,101, 95,111,112,116,105,111,110,115, 0,114, 97,121,116,114, 97, 99,
-101, 95,115,116,114,117, 99,116,117,114,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, 99,111,108,111,114,
- 95,109,103,116, 95,102,108, 97,103, 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,101,110,103,105,110,101, 91, 51, 50, 93, 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,116,105,108,116, 0,114,101,115, 98,117,102, 0, 42,119, 97,114,112,116,101,120,116, 0, 99,111,108, 91, 51, 93, 0,109,
- 97,116,109,111,100,101, 0,102,114, 97,109,105,110,103, 0,114,116, 49, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108,
- 97,103, 0, 42, 42, 98,114,117,115,104,101,115, 0, 97, 99,116,105,118,101, 95, 98,114,117,115,104, 95,105,110,100,101,120, 0,
- 98,114,117,115,104, 95, 99,111,117,110,116, 0, 42,112, 97,105,110,116, 95, 99,117,114,115,111,114, 0,112, 97,105,110,116, 95,
- 99,117,114,115,111,114, 95, 99,111,108, 91, 52, 93, 0,112, 97,105,110,116, 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,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,115,101,108,101, 99,116,109,111,100,
-101, 0,101,100,105,116,116,121,112,101, 0,100,114, 97,119, 95,115,116,101,112, 0,102, 97,100,101, 95,102,114, 97,109,101,115,
- 0,110, 97,109,101, 91, 51, 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0,112,105,118,111,116, 91, 51, 93, 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,103, 97,109,109, 97, 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,118,103,114,111,117,112, 95,119,101,105,103,104,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,110,111,114,
-109, 97,108,115,105,122,101, 0, 97,117,116,111,109,101,114,103,101, 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, 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,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,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,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, 95,110,111,114,109, 97,108,105,122,101, 0,105,110,116,112, 97,100, 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,115, 99, 97,108,101, 95,108,101,110,103,116,104, 0,
-115,121,115,116,101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93, 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, 42,101,100, 0, 42,116,111,111,108,115,101,116,116,105,110,103,115, 0, 42,115,116, 97,116,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,115,111,117,110,100, 95,104, 97,110,100,108,101,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,106,117,109,112,102,
-114, 97,109,101, 0,112, 97,100, 53, 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,103,109, 0,117,110,105,116, 0,112,104,121,115,105, 99,115, 95,115,101,116,116,105,110,103,115, 0, 98,
-108,101,110,100, 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,116,119,109, 97,116, 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,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,108,111, 99, 97,108,118,100,
+ 0, 0, 0, 0, 68, 78, 65, 49, 44,231, 0, 0, 48,112, 27, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65,
+ 78, 65, 77, 69, 68, 11, 0, 0, 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,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, 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, 42,114,101,110,100,101,114, 95,116,
+101,120,116, 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,114,111,116, 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, 98,114,117,115,104, 95,109, 97,112, 95,109,111,100,101, 0,112, 97,100, 91, 55, 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,118, 97,114,102, 97, 99, 0,110,111,114,102, 97, 99, 0,100,105,115,
+112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0, 99,111,108,115,112,101, 99,102, 97, 99, 0,109,105,114,114,102, 97, 99, 0,
+ 97,108,112,104, 97,102, 97, 99, 0,100,105,102,102,102, 97, 99, 0,115,112,101, 99,102, 97, 99, 0,101,109,105,116,102, 97, 99,
+ 0,104, 97,114,100,102, 97, 99, 0,114, 97,121,109,105,114,114,102, 97, 99, 0,116,114, 97,110,115,108,102, 97, 99, 0, 97,109,
+ 98,102, 97, 99, 0, 99,111,108,101,109,105,116,102, 97, 99, 0, 99,111,108,114,101,102,108,102, 97, 99, 0, 99,111,108,116,114,
+ 97,110,115,102, 97, 99, 0,100,101,110,115,102, 97, 99, 0,115, 99, 97,116,116,101,114,102, 97, 99, 0,114,101,102,108,102, 97,
+ 99, 0,116,105,109,101,102, 97, 99, 0,108,101,110,103,116,104,102, 97, 99, 0, 99,108,117,109,112,102, 97, 99, 0,107,105,110,
+107,102, 97, 99, 0,114,111,117,103,104,102, 97, 99, 0,112, 97,100,101,110,115,102, 97, 99, 0,108,105,102,101,102, 97, 99, 0,
+115,105,122,101,102, 97, 99, 0,105,118,101,108,102, 97, 99, 0,112,118,101,108,102, 97, 99, 0,115,104, 97,100,111,119,102, 97,
+ 99, 0,122,101,110,117,112,102, 97, 99, 0,122,101,110,100,111,119,110,102, 97, 99, 0, 98,108,101,110,100,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,102, 97,108,108,111,102,102, 95,116,121,112,101, 0,102, 97,108,108,111,102,102, 95,115,111,102,116,110,101,115,
+115, 0,114, 97,100,105,117,115, 0, 99,111,108,111,114, 95,115,111,117,114, 99,101, 0,116,111,116,112,111,105,110,116,115, 0,
+112,100,112, 97,100, 0,112,115,121,115, 0,112,115,121,115, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0,111, 98, 95, 99,
+ 97, 99,104,101, 95,115,112, 97, 99,101, 0, 42,112,111,105,110,116, 95,116,114,101,101, 0, 42,112,111,105,110,116, 95,100, 97,
+116, 97, 0,110,111,105,115,101, 95,115,105,122,101, 0,110,111,105,115,101, 95,100,101,112,116,104, 0,110,111,105,115,101, 95,
+105,110,102,108,117,101,110, 99,101, 0,110,111,105,115,101, 95, 98, 97,115,105,115, 0,112,100,112, 97,100, 51, 91, 51, 93, 0,
+110,111,105,115,101, 95,102, 97, 99, 0,115,112,101,101,100, 95,115, 99, 97,108,101, 0, 42, 99,111, 98, 97, 0,114,101,115,111,
+108, 91, 51, 93, 0,105,110,116,101,114,112, 95,116,121,112,101, 0,102,105,108,101, 95,102,111,114,109, 97,116, 0,101,120,116,
+101,110,100, 0,105,110,116, 95,109,117,108,116,105,112,108,105,101,114, 0,115,116,105,108,108, 95,102,114, 97,109,101, 0,115,
+111,117,114, 99,101, 95,112, 97,116,104, 91, 50, 52, 48, 93, 0, 42,100, 97,116, 97,115,101,116, 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,116,101,120,102,105,108,116,101,114, 0, 97,102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,
+121,114,101,112,101, 97,116, 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,101,110,118, 0, 42,112,100, 0, 42,118,100, 0,117,
+115,101, 95,110,111,100,101,115, 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,115,104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,115,
+ 0,115,111,102,116, 0, 99,111,109,112,114,101,115,115,116,104,114,101,115,104, 0,112, 97,100, 53, 91, 51, 93, 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,112,114, 95,116,101,120,116,117,114,101, 0,112, 97,
+100, 91, 51, 93, 0,100,101,110,115,105,116,121, 0,101,109,105,115,115,105,111,110, 0,115, 99, 97,116,116,101,114,105,110,103,
+ 0,114,101,102,108,101, 99,116,105,111,110, 0,101,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,116,114, 97,110,
+115,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,114,101,102,108,101, 99,116,105,111,110, 95, 99,111,108, 91, 51,
+ 93, 0,100,101,110,115,105,116,121, 95,115, 99, 97,108,101, 0,100,101,112,116,104, 95, 99,117,116,111,102,102, 0, 97,115,121,
+109,109,101,116,114,121, 0,115,116,101,112,115,105,122,101, 95,116,121,112,101, 0,115,104, 97,100,101,102,108, 97,103, 0,115,
+104, 97,100,101, 95,116,121,112,101, 0,112,114,101, 99, 97, 99,104,101, 95,114,101,115,111,108,117,116,105,111,110, 0,115,116,
+101,112,115,105,122,101, 0,109,115, 95,100,105,102,102, 0,109,115, 95,105,110,116,101,110,115,105,116,121, 0,109,115, 95,115,
+116,101,112,115, 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,118,111,108, 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,109, 97,112,116,111, 95,116,101,120,116,117,114,101,100, 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,101,100,105,116,101,108,101,109,115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, 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,
+ 42,108, 97,115,116,101,108,101,109, 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,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,100,114, 97,119,102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0,
+112, 97,100, 91, 50, 93, 0,116,119,105,115,116, 95,115,109,111,111,116,104, 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, 99,116,105,109,101, 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,101,100,105,116,102,108, 97,103, 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,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,100,111,109, 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,
+116,105,109,101, 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,115,117, 98,116, 97,114,
+103,101,116, 91, 51, 50, 93, 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,112,116, 99, 97, 99,104,101,115, 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, 42,
+ 98,118,104,116,114,101,101, 0, 42,118, 0, 42,100,109, 0, 99,102,114, 97, 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, 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, 40, 42, 98,105,110,100,
+102,117,110, 99, 41, 40, 41, 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,111,115,105,116,105,111,110, 0,114, 97,110,100,111,109, 95,112,111,115,105,
+116,105,111,110, 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, 42,115, 99,117,108,112,116, 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, 42,103,112,100, 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,114,101,115,
+116,111,114,101, 95,109,111,100,101, 0, 42,109, 97,116, 98,105,116,115, 0, 97, 99,116, 99,111,108, 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,114,111,116, 65,120,105,115, 91, 51, 93, 0,100,114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110,
+103,108,101, 0,100,114,111,116, 65,110,103,108,101, 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,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,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,114,111,116,109,111,100,101, 0,100,116, 0,100,116,120, 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,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,112, 99, 95,105,100,115, 0, 42,100,117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100,
+101,120, 0, 97, 99,116,105,118,101, 0,111,114,105,103,108, 97,121, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116,
+101,100, 0,111,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114, 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111,
+114, 99,101,102,105,101,108,100, 0,115,104, 97,112,101, 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,122,100,105,114, 0,102, 95,115,116,114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95,
+102,108,111,119, 0,102, 95,115,105,122,101, 0,102, 95,112,111,119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100,
+105,115,116, 0,102, 95,112,111,119,101,114, 95,114, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,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, 97, 98,115,111,114,112,116,105,111,110, 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, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0,119,101,105,103,104,116, 91, 49, 51, 93, 0,103,108,111, 98,
+ 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0,102,114, 97,109,101, 0,116,111,116,112,111,105,110,116, 0,
+100, 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,120, 95, 97,114,114, 97,121, 0, 42,100, 97,116, 97, 91, 56, 93,
+ 0, 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 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, 97,115,116, 95,101,120, 97, 99,116, 0,
+110, 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,109,101, 91, 54, 52, 93, 0,105,110,102,111, 91, 54, 52, 93, 0,
+112, 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97, 99,104,101, 0, 42,101,100,105,116, 0, 40, 42,102,114,101,101,
+ 95,101,100,105,116, 41, 40, 41, 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,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,109,115,103, 95,108,111, 99,107, 0,109,115,103, 95,118, 97,108,117,101, 0,
+110,111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, 77, 97,115,115, 91, 51, 50, 93, 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,110, 97,109,101,100, 86, 71, 95, 83,
+111,102,116,103,111, 97,108, 91, 51, 50, 93, 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,110, 97,109,101,100, 86, 71, 95, 83,112,114,105,110,103, 95, 75, 91, 51, 50, 93, 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, 42,101,102,102,101, 99,116,111,114, 95,119,101,105,103,104,116,115, 0,108, 99,111,109, 91, 51,
+ 93, 0,108,114,111,116, 91, 51, 93, 91, 51, 93, 0,108,115, 99, 97,108,101, 91, 51, 93, 91, 51, 93, 0,112, 97,100, 52, 91, 52,
+ 93, 0, 42,102,109,100, 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,105,110,100,105,114,101, 99,116, 95,101,110,101,114,103,121, 0, 97,111, 95,105,110,100,105,114,101, 99,
+116, 95, 98,111,117,110, 99,101,115, 0, 97,111, 95,112, 97,100, 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,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, 84,121,112,101,
+ 0, 99,111,100,101, 99, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0, 99,111,100,101, 99, 0, 99,111,100,101, 99,
+ 70,108, 97,103,115, 0, 99,111,108,111,114, 68,101,112,116,104, 0, 99,111,100,101, 99, 84,101,109,112,111,114, 97,108, 81,117,
+ 97,108,105,116,121, 0,109,105,110, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 84,101,109,112,111,
+114, 97,108, 81,117, 97,108,105,116,121, 0,107,101,121, 70,114, 97,109,101, 82, 97,116,101, 0, 98,105,116, 82, 97,116,101, 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, 97,117,100,105,111, 95,109,105,120,114, 97,116,101, 0, 97,117,100,105,111, 95,118,111,108,117,
+109,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,115,112,101,101,100, 95,111,
+102, 95,115,111,117,110,100, 0,100,111,112,112,108,101,114, 95,102, 97, 99,116,111,114, 0,100,105,115,116, 97,110, 99,101, 95,
+109,111,100,101,108, 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,113,116, 99,111,100,101, 99,115,101,116,116,105,110,103,115, 0,102,102, 99,111,100,101, 99,100, 97,116, 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, 50, 0,102,114, 97,109,101, 95,115,116,101,112, 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,100,105,115,112,108, 97,121,109,111,100,101, 0,114,112, 97,100, 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101,
+ 0,114, 97,121,116,114, 97, 99,101, 95,111,112,116,105,111,110,115, 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,
+116,117,114,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, 99,111,108,111,114, 95,109,103,116, 95,102,108,
+ 97,103, 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,101,110,103,105,110,
+101, 91, 51, 50, 93, 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,116,105,108,116, 0,
+114,101,115, 98,117,102, 0, 42,119, 97,114,112,116,101,120,116, 0, 99,111,108, 91, 51, 93, 0,109, 97,116,109,111,100,101, 0,
+102,114, 97,109,105,110,103, 0,114,116, 49, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108, 97,103, 0, 42, 42, 98,114,
+117,115,104,101,115, 0, 97, 99,116,105,118,101, 95, 98,114,117,115,104, 95,105,110,100,101,120, 0, 98,114,117,115,104, 95, 99,
+111,117,110,116, 0, 42,112, 97,105,110,116, 95, 99,117,114,115,111,114, 0,112, 97,105,110,116, 95, 99,117,114,115,111,114, 95,
+ 99,111,108, 91, 52, 93, 0,112, 97,105,110,116, 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,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,115,101,108,101, 99,116,109,111,100,101, 0,101,100,105,116,116,
+121,112,101, 0,100,114, 97,119, 95,115,116,101,112, 0,102, 97,100,101, 95,102,114, 97,109,101,115, 0,110, 97,109,101, 91, 51,
+ 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0,112,105,118,111,116, 91, 51, 93, 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, 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,118,103,114,111,
+117,112, 95,119,101,105,103,104,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,110,111,114,109, 97,108,115,105,122,101, 0, 97,117,116,111,109,101,114,103,101,
+ 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, 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,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,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,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, 95,110,111,114,109, 97,
+108,105,122,101, 0,105,110,116,112, 97,100, 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,115, 99, 97,108,101, 95,108,101,110,103,116,104, 0,115,121,115,116,101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93,
+ 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, 42,101,100, 0, 42,116,111,111,108,115,101,116,116,105,110,103,
+115, 0, 42,115,116, 97,116,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,
+115,111,117,110,100, 95,104, 97,110,100,108,101,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,106,117,109,112,102,114, 97,109,101, 0,112, 97,100, 53, 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,103,109, 0,117,110,105,116, 0,112,104,121,
+115,105, 99,115, 95,115,101,116,116,105,110,103,115, 0, 98,108,101,110,100, 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,116,119,109, 97,116, 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,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, 99,
+108,105,112, 95,108,111, 99, 97,108, 91, 54, 93, 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, 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,
@@ -8587,316 +8690,319 @@ char datatoc_B_blend[]= {
105,110,110,101,114, 95, 97,110,105,109, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 91, 52, 93, 0,105,
110,110,101,114, 95,107,101,121, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 91, 52, 93, 0,
105,110,110,101,114, 95,100,114,105,118,101,110, 95,115,101,108, 91, 52, 93, 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,116,101,120,116, 0,119, 99,111,108, 95,116,111,111,108, 98, 97,
-114, 0,119, 99,111,108, 95,114, 97,100,105,111, 0,119, 99,111,108, 95,111,112,116,105,111,110, 0,119, 99,111,108, 95,116,111,
-103,103,108,101, 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,119, 99,111,108, 95, 98,111,120, 0,119, 99,111,108,
- 95,115, 99,114,111,108,108, 0,119, 99,111,108, 95,108,105,115,116, 95,105,116,101,109, 0,119, 99,111,108, 95,115,116, 97,116,
-101, 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,108,111,103,105, 99, 0,116,117,115,101,114,112,114,101,102, 0,116, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105,118,101,
- 95,116,104,101,109,101, 95,103,114,111,117,112, 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, 97,117,100,105,111,
-100,101,118,105, 99,101, 0, 97,117,100,105,111,114, 97,116,101, 0, 97,117,100,105,111,102,111,114,109, 97,116, 0, 97,117,100,
-105,111, 99,104, 97,110,110,101,108,115, 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,107,101,121,109, 97,112,115, 0,
-107,101,121, 99,111,110,102,105,103,115,116,114, 91, 54, 52, 93, 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, 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,110,101,119,115, 99,101,110,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,108,105,115,116, 95,115, 99,114,111,108,108, 0,108,105,115,116, 95,115,
-105,122,101, 0,108,105,115,116, 95,108, 97,115,116, 95,108,101,110, 0,108,105,115,116, 95,103,114,105,112, 95,115,105,122,101,
- 0,108,105,115,116, 95,115,101, 97,114, 99,104, 91, 54, 52, 93, 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,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, 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,115,
-111,117,110,100, 95,104, 97,110,100,108,101, 0,108,101,118,101,108, 0,112, 97,110, 0,115, 99,101,110,101,110,114, 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, 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, 42,
-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,112,111,115,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0, 99,111,110,115,116,
-114, 97,105,110,116, 91, 51, 50, 93, 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,111,116,121,112,101, 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,112,
-105,116, 99,104, 0,115,111,117,110,100, 51, 68, 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, 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, 42,115,117, 98,116, 97,114,103,101,116, 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,
-111,117,114, 99,101, 0,102,114, 97,109,101,115,107,105,112, 0,109,117,116,101, 0, 99,104, 97,110,103,101,100, 0,109,105,110,
- 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101,110, 99,101, 95,100,105,115,116, 97,110, 99,
-101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102,102, 95,102, 97, 99,116,111,114, 0, 99,111,
-110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95, 97,110,103,108,101, 0,
- 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42,110,101,119,112, 97, 99,107,101,100,102,105,108,101, 0, 97,
-116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, 97, 99,104,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, 42,
-112,114,111,112, 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, 42, 97,
- 99,116, 95, 98,111,110,101, 0, 42, 97, 99,116, 95,101,100, 98,111,110,101, 0, 42,115,107,101,116, 99,104, 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,111,
-105,110,116,115, 0,115,116, 97,114,116, 95,102,114, 97,109,101, 0,101,110,100, 95,102,114, 97,109,101, 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, 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,105,107,114,111,116,119,101,105,103,104,116, 0,105,107,108,105,110,
-119,101,105,103,104,116, 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,105,107,115,111,108,
-118,101,114, 0, 42,105,107,100, 97,116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,110,117,109,105,116,101,114, 0,110,117,109,
-115,116,101,112, 0,109,105,110,115,116,101,112, 0,109, 97,120,115,116,101,112, 0,115,111,108,118,101,114, 0,102,101,101,100,
- 98, 97, 99,107, 0,109, 97,120,118,101,108, 0,100, 97,109,112,109, 97,120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,
-110,101,108,115, 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,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,108,105,110, 95,101,114,114,111,114, 0,114,111,116, 95,101,114,114,111,114, 0,
- 42,116, 97,114, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,114,
- 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,110,117,109,112,111,105,110,116,115, 0, 99,104, 97,105,110,
-108,101,110, 0,120,122, 83, 99, 97,108,101, 77,111,100,101, 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,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, 98,108,111, 99,107, 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,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,106,105,116,116,101,114, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,114, 97,100,105,117,115, 0,115,109,
-111,111,116,104, 95,115,116,114,111,107,101, 95,102, 97, 99,116,111,114, 0,114, 97,116,101, 0,114,103, 98, 91, 51, 93, 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,118,101,108, 91, 51, 93, 0,114,111,
-116, 91, 52, 93, 0, 97,118,101, 91, 51, 93, 0, 42,103,114,111,117,110,100, 0,119, 97,110,100,101,114, 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,116, 91, 50, 93, 0,112,114,101,118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, 98,111,105,100, 0,
-100,105,101,116,105,109,101, 0,110,117,109, 95,100,109, 99, 97, 99,104,101, 0, 97,108,105,118,101, 0,108,111,111,112, 0,104,
- 97,105,114, 95,105,110,100,101,120, 0, 42, 98,111,105,100,115, 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,114,101,110, 95, 97,115, 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, 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,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,111, 98, 95,118,101,108, 91, 51, 93, 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,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,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, 99,108,101,110,103,116,104,
- 0, 99,108,101,110,103,116,104, 95,116,104,114,101,115, 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,112, 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116,104, 95,101,110,100, 0,116,114, 97,
-105,108, 95, 99,111,117,110,116, 0,107,101,121,101,100, 95,108,111,111,112,115, 0,100,117,112,108,105,119,101,105,103,104,116,
-115, 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,112, 97,114,116,105, 99,108,101,115, 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, 99,108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95,100,109, 0, 42,104, 97,105,114, 95,
-111,117,116, 95,100,109, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116,105, 99,101, 0,116,114,101,101, 95,
-102,114, 97,109,101, 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,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,101,102,102,101, 99,116,
-111,114,115, 0, 42,116,114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 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,118,101,108,111, 99,105,116,
-121, 95,115,109,111,111,116,104, 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,114,101,115,101,116, 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,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,116,121,112,101,
-115,116,114, 0, 42,109,101,115,115, 97,103,101, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101,108, 0,115,116,111,
-114,101,108,101,118,101,108, 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, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97,117,108,116, 99,111,110,102,
- 0,100,101,102, 97,117,108,116, 97, 99,116,109, 97,112, 0,116,105,109,101,114,115, 0, 42, 97,117,116,111,115, 97,118,101,116,
-105,109,101,114, 0, 42,103,104,111,115,116,119,105,110, 0, 42,110,101,119,115, 99,114,101,101,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, 97,100,100,109,111,117,115,101,109,111,118,101, 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,109,111,100, 97,108,104, 97,
-110,100,108,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,112,114,111,112,118, 97,108,117,101, 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,109, 97,112,116,121,112,101, 0, 42,112,116,114, 0,105,116,101,
-109,115, 0,115,112, 97, 99,101,105,100, 0,114,101,103,105,111,110,105,100, 0, 40, 42,112,111,108,108, 41, 40, 41, 0, 42,109,
-111,100, 97,108, 95,105,116,101,109,115, 0, 98, 97,115,101,110, 97,109,101, 91, 54, 52, 93, 0, 97, 99,116,107,101,121,109, 97,
-112, 0, 42, 99,117,115,116,111,109,100, 97,116, 97, 0, 42,114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112,
-109, 0,109,118, 97,108, 91, 50, 93, 0,112,114,101,118,120, 0,112,114,101,118,121, 0,117,110,105, 99,111,100,101, 0, 97,115,
- 99,105,105, 0, 42,107,101,121,109, 97,112, 95,105,100,110, 97,109,101, 0, 99,117,115,116,111,109, 0, 99,117,115,116,111,109,
-100, 97,116, 97,102,114,101,101, 0, 42,101,100, 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 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, 97,109,112,
-108,105,116,117,100,101, 0,112,104, 97,115,101, 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115,101, 95,111,102,
-102,115,101,116, 0,118, 97,108,117,101, 95,111,102,102,115,101,116, 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,105,100,116,121,112,101, 0,
-101,120,112,114,101,115,115,105,111,110, 91, 50, 53, 54, 93, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 0, 99,111,108,111,
+ 0,119, 99,111,108, 95,116,111,111,108, 0,119, 99,111,108, 95,116,101,120,116, 0,119, 99,111,108, 95,114, 97,100,105,111, 0,
+119, 99,111,108, 95,111,112,116,105,111,110, 0,119, 99,111,108, 95,116,111,103,103,108,101, 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,119, 99,111,108, 95, 98,111,120, 0,119, 99,111,108, 95,115, 99,114,111,108,108, 0,119, 99,111,108, 95,
+108,105,115,116, 95,105,116,101,109, 0,119, 99,111,108, 95,115,116, 97,116,101, 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,108,111,103,105, 99, 0,116,117,115,101,114,112,
+114,101,102, 0,116, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105,118,101, 95,116,104,101,109,101, 95,103,114,111,117,112, 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,100, 98,108, 95, 99,108,105, 99,107, 95,116,105,109,101, 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, 97,117,100,
+105,111,100,101,118,105, 99,101, 0, 97,117,100,105,111,114, 97,116,101, 0, 97,117,100,105,111,102,111,114,109, 97,116, 0, 97,
+117,100,105,111, 99,104, 97,110,110,101,108,115, 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,107,101,121,109, 97,112,
+115, 0,107,101,121, 99,111,110,102,105,103,115,116,114, 91, 54, 52, 93, 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, 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,110,101,119,115, 99,101,110,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,108,105,115,116, 95,115, 99,114,111,108,108, 0,108,105,115,116,
+ 95,115,105,122,101, 0,108,105,115,116, 95,108, 97,115,116, 95,108,101,110, 0,108,105,115,116, 95,103,114,105,112, 95,115,105,
+122,101, 0,108,105,115,116, 95,115,101, 97,114, 99,104, 91, 54, 52, 93, 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,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, 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,101,102,102,101, 99,116, 95,102, 97,
+100,101,114, 0,115,112,101,101,100, 95,102, 97,100,101,114, 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,115,111,117,110,100, 95,104, 97,110,100,108,101, 0,108,
+101,118,101,108, 0,112, 97,110, 0,115, 99,101,110,101,110,114, 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, 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,117,110,105,102,111,114,109, 95,115, 99, 97,108,101, 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,
+ 42,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,112,111,115,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0, 99,111,110,115,
+116,114, 97,105,110,116, 91, 51, 50, 93, 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,111,116,121,112,101, 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,
+112,105,116, 99,104, 0,115,111,117,110,100, 51, 68, 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, 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, 42,115,117, 98,116, 97,114,103,101,116, 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,111,117,114, 99,101, 0,102,114, 97,109,101,115,107,105,112, 0,109,117,116,101, 0, 99,104, 97,110,103,101,100, 0,109,105,
+110, 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101,110, 99,101, 95,100,105,115,116, 97,110,
+ 99,101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102,102, 95,102, 97, 99,116,111,114, 0, 99,
+111,110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95, 97,110,103,108,101,
+ 0, 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42,110,101,119,112, 97, 99,107,101,100,102,105,108,101, 0,
+ 97,116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, 97, 99,104,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,
+ 42,112,114,111,112, 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, 42,
+ 97, 99,116, 95, 98,111,110,101, 0, 42, 97, 99,116, 95,101,100, 98,111,110,101, 0, 42,115,107,101,116, 99,104, 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,
+111,105,110,116,115, 0,115,116, 97,114,116, 95,102,114, 97,109,101, 0,101,110,100, 95,102,114, 97,109,101, 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, 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,105,107,114,111,116,119,101,105,103,104,116, 0,105,107,108,105,
+110,119,101,105,103,104,116, 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,105,107,115,111,
+108,118,101,114, 0, 42,105,107,100, 97,116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,110,117,109,105,116,101,114, 0,110,117,
+109,115,116,101,112, 0,109,105,110,115,116,101,112, 0,109, 97,120,115,116,101,112, 0,115,111,108,118,101,114, 0,102,101,101,
+100, 98, 97, 99,107, 0,109, 97,120,118,101,108, 0,100, 97,109,112,109, 97,120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,
+110,110,101,108,115, 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,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,108,105,110, 95,101,114,114,111,114, 0,114,111,116, 95,101,114,114,111,114,
+ 0, 42,116, 97,114, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,
+114, 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,110,117,109,112,111,105,110,116,115, 0, 99,104, 97,105,
+110,108,101,110, 0,120,122, 83, 99, 97,108,101, 77,111,100,101, 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,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, 98,108,111, 99,107, 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,103,
+ 97,109,109, 97, 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,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,106,105,116,116,101,114, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,114, 97,
+100,105,117,115, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,102, 97, 99,116,111,114, 0,114, 97,116,101, 0,114,
+103, 98, 91, 51, 93, 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,118,101,
+108, 91, 51, 93, 0,114,111,116, 91, 52, 93, 0, 97,118,101, 91, 51, 93, 0, 42,103,114,111,117,110,100, 0,119, 97,110,100,101,
+114, 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,116, 91, 50, 93, 0,112,114,101,118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114,
+ 0, 42, 98,111,105,100, 0,100,105,101,116,105,109,101, 0,110,117,109, 95,100,109, 99, 97, 99,104,101, 0, 97,108,105,118,101,
+ 0,108,111,111,112, 0,104, 97,105,114, 95,105,110,100,101,120, 0, 42, 98,111,105,100,115, 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,114,101,110, 95, 97,
+115, 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, 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,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,111, 98, 95,118,101,108, 91, 51, 93, 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,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,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,
+ 99,108,101,110,103,116,104, 0, 99,108,101,110,103,116,104, 95,116,104,114,101,115, 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,112, 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116,104, 95,
+101,110,100, 0,116,114, 97,105,108, 95, 99,111,117,110,116, 0,107,101,121,101,100, 95,108,111,111,112,115, 0,100,117,112,108,
+105,119,101,105,103,104,116,115, 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,112, 97,114,116,105, 99,108,101,115, 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, 99,108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95,100,109,
+ 0, 42,104, 97,105,114, 95,111,117,116, 95,100,109, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116,105, 99,
+101, 0,116,114,101,101, 95,102,114, 97,109,101, 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,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,101,102,102,101, 99,116,111,114,115, 0, 42,116,114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 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,
+118,101,108,111, 99,105,116,121, 95,115,109,111,111,116,104, 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,114,101,115,101,116, 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,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,116,121,112,101,115,116,114, 0, 42,109,101,115,115, 97,103,101, 0,108,105,115,116, 0,112,114,105,110,116,108,101,
+118,101,108, 0,115,116,111,114,101,108,101,118,101,108, 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, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97,
+117,108,116, 99,111,110,102, 0,100,101,102, 97,117,108,116, 97, 99,116,109, 97,112, 0,116,105,109,101,114,115, 0, 42, 97,117,
+116,111,115, 97,118,101,116,105,109,101,114, 0, 42,103,104,111,115,116,119,105,110, 0,103,114, 97, 98, 99,117,114,115,111,114,
+ 0, 42,110,101,119,115, 99,114,101,101,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, 97,100,100,109,111,117,115,101,109,111,118,101, 0,108, 97,115,116, 95,116,121,112,101, 0,108, 97,115,116, 95,
+118, 97,108, 0,108, 97,115,116, 95, 99,108,105, 99,107, 95,116,105,109,101, 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,109,111,100, 97,108,104, 97,110,100,108,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,112,114,111,112,118, 97,
+108,117,101, 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,109, 97,112,116,121,112,101, 0, 42,112,116,114, 0,105,116,101,109,115, 0,115,112, 97, 99,101,105,100, 0,
+114,101,103,105,111,110,105,100, 0, 40, 42,112,111,108,108, 41, 40, 41, 0, 42,109,111,100, 97,108, 95,105,116,101,109,115, 0,
+ 98, 97,115,101,110, 97,109,101, 91, 54, 52, 93, 0, 97, 99,116,107,101,121,109, 97,112, 0, 42, 99,117,115,116,111,109,100, 97,
+116, 97, 0, 42,114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112,109, 0,109,118, 97,108, 91, 50, 93, 0,112,
+114,101,118,120, 0,112,114,101,118,121, 0,117,110,105, 99,111,100,101, 0, 97,115, 99,105,105, 0, 42,107,101,121,109, 97,112,
+ 95,105,100,110, 97,109,101, 0, 99,117,115,116,111,109, 0, 99,117,115,116,111,109,100, 97,116, 97,102,114,101,101, 0, 42,101,
+100, 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 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, 97,109,112,108,105,116,117,100,101, 0,112,104, 97,115,
+101, 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115,101, 95,111,102,102,115,101,116, 0,118, 97,108,117,101, 95,
+111,102,102,115,101,116, 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,105,100,116,121,112,101, 0,101,120,112,114,101,115,115,105,111,110, 91,
+ 50, 53, 54, 93, 0, 42,101,120,112,114, 95, 99,111,109,112, 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,115,116,114,105,112,115, 0, 42,114,101,109, 97,112, 0,102, 99,117,114,118,101,115,
0,115,116,114,105,112, 95,116,105,109,101, 0, 98,108,101,110,100,109,111,100,101, 0,101,120,116,101,110,100,109,111,100,101,
@@ -8927,7 +9033,7 @@ char datatoc_B_blend[]= {
0,118,103,114,112, 95,104,101, 97,116, 95,115, 99, 97,108,101, 91, 50, 93, 0,118,103,114,111,117,112, 95,102,108,111,119, 0,
118,103,114,111,117,112, 95,100,101,110,115,105,116,121, 0,118,103,114,111,117,112, 95,104,101, 97,116, 0, 42,112,111,105,110,
116,115, 95,111,108,100, 0, 42,118,101,108, 0,109, 97,116, 95,111,108,100, 91, 52, 93, 91, 52, 93, 0, 0, 0, 84, 89, 80, 69,
-196, 1, 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,
+198, 1, 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,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,
@@ -9119,794 +9225,799 @@ char datatoc_B_blend[]= {
80, 84, 67, 97, 99,104,101, 77,101,109, 0, 80, 84, 67, 97, 99,104,101, 69,100,105,116, 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, 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, 68,111,109,101, 0, 71, 97,109,101, 70,114, 97,109,105,
-110,103, 0, 71, 97,109,101, 68, 97,116, 97, 0, 84,105,109,101, 77, 97,114,107,101,114, 0, 80, 97,105,110,116, 0, 66,114,117,
-115,104, 0, 73,109, 97,103,101, 80, 97,105,110,116, 83,101,116,116,105,110,103,115, 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, 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, 85,110,105,116, 83,101,116,116,105,110,103,115,
- 0, 80,104,121,115,105, 99,115, 83,101,116,116,105,110,103,115, 0, 69,100,105,116,105,110,103, 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, 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, 70,105,108,101, 83,101,108,101, 99,116, 80, 97,114, 97,109,115, 0,
- 83,112, 97, 99,101, 70,105,108,101, 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, 76,111,103,105, 99, 0, 83,112, 97, 99,101,
- 73,109, 97, 83,101,108, 0, 67,111,110,115,111,108,101, 76,105,110,101, 0, 83,112, 97, 99,101, 67,111,110,115,111,108,101, 0,
- 83,112, 97, 99,101, 85,115,101,114, 80,114,101,102, 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,117,105, 87,105,100,103,101,116,
- 83,116, 97,116,101, 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, 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, 83,111,117,110,100, 72, 97,110,100,108,101, 0, 77,101,116, 97, 83,116, 97,
- 99,107, 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, 65,114,109, 97,116,117,114,101, 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, 83,111,117,110,100, 51, 68, 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, 98, 65,114,109, 97,116,117,114,101, 65, 99,116,117, 97,116,111,114, 0,
- 70,114,101,101, 67, 97,109,101,114, 97, 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, 77,111,116,105,111,110, 80, 97,116,104, 86,101,114,116,
- 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116,105,110,103,115, 0, 98, 80,
-111,115,101, 67,104, 97,110,110,101,108, 0, 98, 73, 75, 80, 97,114, 97,109, 0, 98, 73,116, 97,115, 99, 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, 83,112,108,105,
-110,101, 73, 75, 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, 68, 97,109,112,
- 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,117,105, 66,108,111, 99,107, 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, 66,111,105,100, 80, 97,114,116,105, 99,108,101, 0, 66,111,105,100, 68, 97,116, 97, 0, 67,104,105,108,100, 80,
- 97,114,116,105, 99,108,101, 0, 80, 97,114,116,105, 99,108,101, 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108,101, 68,
-117,112,108,105, 87,101,105,103,104,116, 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, 66,111,105,100, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 67, 97,
- 99,104,101, 75,101,121, 0, 75, 68, 84,114,101,101, 0, 80, 97,114,116,105, 99,108,101, 68,114, 97,119, 68, 97,116, 97, 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, 82,101,112,111,114,116, 0, 82,101,112,111,114,116, 76,
-105,115,116, 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, 75,
-101,121, 67,111,110,102,105,103, 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, 77, 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, 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, 77,111,100, 95, 70,117,110, 99,116,105,111,110, 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, 66,111,105,100, 82,117,108,101, 0, 66,111,105,
-100, 82,117,108,101, 71,111, 97,108, 65,118,111,105,100, 0, 66,111,105,100, 82,117,108,101, 65,118,111,105,100, 67,111,108,108,
-105,115,105,111,110, 0, 66,111,105,100, 82,117,108,101, 70,111,108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105,100, 82,
-117,108,101, 65,118,101,114, 97,103,101, 83,112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0, 66,111,
-105,100, 83,116, 97,116,101, 0, 70, 76, 85, 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 0, 0, 0,
+ 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 83,101,116,116,105,110,103,115,
+ 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, 68,111,109,101, 0, 71, 97,109,101, 70,114, 97,109,105,110,103, 0, 71, 97,109,101, 68, 97,
+116, 97, 0, 84,105,109,101, 77, 97,114,107,101,114, 0, 80, 97,105,110,116, 0, 66,114,117,115,104, 0, 73,109, 97,103,101, 80,
+ 97,105,110,116, 83,101,116,116,105,110,103,115, 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, 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, 85,110,105,116, 83,101,116,116,105,110,103,115, 0, 80,104,121,115,105, 99,115, 83,
+101,116,116,105,110,103,115, 0, 69,100,105,116,105,110,103, 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, 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, 70,105,108,101, 83,101,108,101, 99,116, 80, 97,114, 97,109,115, 0, 83,112, 97, 99,101, 70,105,108,101,
+ 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, 76,111,103,105, 99, 0, 83,112, 97, 99,101, 73,109, 97, 83,101,108, 0, 67,111,
+110,115,111,108,101, 76,105,110,101, 0, 83,112, 97, 99,101, 67,111,110,115,111,108,101, 0, 83,112, 97, 99,101, 85,115,101,114,
+ 80,114,101,102, 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,117,105, 87,105,100,103,101,116, 83,116, 97,116,101, 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, 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, 83,111,117,110,100, 72, 97,110,100,108,101, 0, 77,101,116, 97, 83,116, 97, 99,107, 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, 65,114,109, 97,116,117,114,101, 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, 83,111,117,110,100, 51, 68, 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, 98, 65,114,109, 97,116,117,114,101, 65, 99,116,117, 97,116,111,114, 0, 70,114,101,101, 67, 97,109,101,114,
+ 97, 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, 77,111,116,105,111,110, 80, 97,116,104, 86,101,114,116, 0, 98, 77,111,116,105,111,110, 80,
+ 97,116,104, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116,105,110,103,115, 0, 98, 80,111,115,101, 67,104, 97,110,110,101,
+108, 0, 98, 73, 75, 80, 97,114, 97,109, 0, 98, 73,116, 97,115, 99, 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, 83,112,108,105,110,101, 73, 75, 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, 68, 97,109,112, 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,
+117,105, 66,108,111, 99,107, 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, 66,111,105,100, 80,
+ 97,114,116,105, 99,108,101, 0, 66,111,105,100, 68, 97,116, 97, 0, 67,104,105,108,100, 80, 97,114,116,105, 99,108,101, 0, 80,
+ 97,114,116,105, 99,108,101, 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108,101, 68,117,112,108,105, 87,101,105,103,104,
+116, 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,
+ 66,111,105,100, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 75, 68,
+ 84,114,101,101, 0, 80, 97,114,116,105, 99,108,101, 68,114, 97,119, 68, 97,116, 97, 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, 82,101,112,111,114,116, 0, 82,101,112,111,114,116, 76,105,115,116, 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, 75,101,121, 67,111,110,102,105,103, 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, 77, 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, 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, 77,111,100, 95, 70,117,110, 99,116,105,111,110, 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, 70, 77,111,100, 95, 83,111,117,110,100, 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, 66,111,105,100, 82,117,108,101, 0, 66,
+111,105,100, 82,117,108,101, 71,111, 97,108, 65,118,111,105,100, 0, 66,111,105,100, 82,117,108,101, 65,118,111,105,100, 67,111,
+108,108,105,115,105,111,110, 0, 66,111,105,100, 82,117,108,101, 70,111,108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105,
+100, 82,117,108,101, 65,118,101,114, 97,103,101, 83,112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0,
+ 66,111,105,100, 83,116, 97,116,101, 0, 70, 76, 85, 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 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, 16, 0, 24, 0, 16, 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, 32, 0, 96, 0, 72, 0, 72, 2, 0, 0,
40, 0,144, 0,152, 4,112, 0, 36, 0, 56, 0,112, 0,128, 0,168, 0, 96, 0, 40, 0, 48, 0,176, 0, 16, 0,152, 0, 40, 0,
- 0, 6,184, 1, 0, 0, 0, 0, 0, 0, 16, 1,104, 1,120, 1, 24, 0, 8, 3,200, 0, 0, 0, 88, 0, 32, 1,248, 0,136, 0,
+ 40, 6,184, 1, 0, 0, 0, 0, 0, 0, 16, 1,104, 1,120, 1, 24, 0, 8, 3,200, 0, 0, 0, 88, 0, 32, 1,248, 0,136, 0,
248, 1, 56, 1, 80, 0, 88, 0, 32, 3,104, 0, 88, 1, 0, 0,128, 0,104, 0,208, 0, 80, 0, 8, 0, 16, 0,216, 1, 0, 0,
0, 0, 0, 0,144, 1, 20, 0, 48, 0, 64, 0, 24, 0, 12, 0, 16, 0, 4, 0, 8, 0, 8, 0, 0, 0, 32, 0,112, 0, 48, 0,
8, 0, 16, 0, 8, 0, 8, 0, 4, 0, 4, 0, 0, 1, 32, 0, 16, 0, 0, 0, 16, 0, 64, 0, 24, 0, 12, 0, 64, 0, 72, 0,
96, 0,112, 0,120, 0, 88, 0,120, 0,152, 0, 88, 0, 80, 0,128, 0, 80, 0,104, 0,248, 0, 56, 0,192, 0,176, 0,216, 0,
80, 0,112, 0,128, 0,216, 0,128, 0,240, 0, 72, 0,128, 0, 0, 0,144, 0, 32, 0, 8, 2,152, 0, 0, 0,112, 0, 0, 0,
0, 0, 88, 0, 8, 0, 8, 0, 16, 1,104, 0,240, 1, 96, 0, 88, 0, 88, 0, 88, 0,192, 1,136, 0,128, 0, 72, 0,232, 0,
- 48, 0, 0, 0,144, 0, 88, 0,104, 0,120, 0,152, 0, 32, 1,224, 0,192, 0, 0, 0, 72, 0,168, 0, 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0,216, 1, 40, 0,184, 0,152, 0, 64, 0, 24, 0, 88, 0, 24, 4, 64, 0, 24, 0, 16, 0, 96, 0, 88, 0, 32, 0,
- 40, 1, 48, 0, 8, 0,112, 0, 88, 0, 56, 0, 72, 0,120, 1, 32, 0, 8, 0, 16, 0, 48, 2, 0, 0, 0, 0, 64, 0,248, 2,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 1, 56, 0,152, 0, 72, 0,208, 0,248, 0, 32, 0, 0, 1,240, 0,208, 1,104, 0,
- 0, 0,152, 0, 0, 0, 40, 1, 16, 0, 16, 0,168, 0,224, 0,144, 2,120, 2, 64, 0,200, 0, 32, 1, 72, 0,208, 2, 40, 0,
-136, 1, 40, 0, 24, 1, 32, 0,232, 0, 32, 0, 32, 0,112, 2, 16, 1, 16, 0,248, 21, 56, 0,160, 11, 32, 0, 40, 0, 88, 1,
- 0, 0, 0, 0,160, 0, 0, 0, 40, 1, 0, 0, 24, 1, 80, 0, 48, 0, 16, 0, 8, 0, 52, 0, 0, 1, 32, 1,200, 1, 8, 1,
- 48, 1, 64, 0, 32, 0, 12, 0, 24, 0, 48, 0, 16, 0, 24, 0, 24, 0, 32, 0, 72, 1, 0, 0, 64, 0, 64, 0, 48, 0, 8, 0,
- 48, 0, 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 72, 0, 72, 0, 96, 0,104, 0, 60, 0,128, 0, 80, 0,
- 80, 0, 16, 0, 96, 0, 72, 0, 32, 0, 88, 0, 24, 0, 80, 0,112, 0, 84, 0, 32, 0, 96, 0, 56, 0, 56, 0,112, 0,140, 0,
- 4, 0, 24, 0, 16, 0, 8, 0, 88, 0, 40, 0,224, 0, 40, 0, 32, 1,192, 0, 16, 0, 24, 0, 24, 0, 0, 2, 4, 0, 40, 0,
-120, 0, 8, 1, 88, 0, 56, 0, 88, 0,128, 0, 80, 0,120, 0, 24, 0, 56, 0, 48, 0, 48, 0, 72, 0, 48, 0, 72, 0, 48, 0,
- 48, 0, 24, 0, 56, 0,104, 0, 16, 0,112, 0, 96, 0, 28, 0, 28, 0, 28, 0, 56, 0, 24, 0, 72, 0,168, 0, 40, 0,144, 0,
- 56, 0,232, 0, 0, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, 40, 0, 8, 0, 8, 0, 64, 0, 32, 0,
- 24, 0, 16, 0, 24, 0, 32, 0, 8, 0, 32, 0, 12, 0, 56, 0, 24, 0, 72, 0, 24, 0, 56, 0, 56, 0, 20, 0, 64, 0, 40, 0,
- 32, 0,192, 0, 8, 2,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 32, 0, 40, 0,192, 0, 40, 0, 32, 0, 8, 1,224, 0,
-168, 0, 72, 0, 0, 0, 0, 0,120, 0, 0, 0,120, 0, 0, 0,104, 0, 24, 0, 24, 0, 16, 0, 24, 0, 8, 0, 16, 0, 24, 0,
- 20, 0,112, 0, 32, 1, 16, 0,104, 0, 0, 1, 40, 0,200, 0,104, 0,112, 0,104, 0, 32, 0, 80, 0, 56, 0, 80, 0, 64, 0,
-104, 0, 72, 0, 64, 0,128, 0, 0, 0, 0, 0, 83, 84, 82, 67,138, 1, 0, 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, 6, 0, 40, 0, 0, 0,
- 40, 0, 1, 0, 0, 0, 84, 0, 0, 0, 85, 0, 4, 0, 23, 0, 4, 0, 86, 0, 41, 0, 10, 0, 41, 0, 0, 0, 41, 0, 1, 0,
- 4, 0, 87, 0, 4, 0, 88, 0, 4, 0, 89, 0, 4, 0, 43, 0, 4, 0, 14, 0, 4, 0, 90, 0, 0, 0, 91, 0, 0, 0, 92, 0,
- 42, 0, 15, 0, 27, 0, 31, 0, 0, 0, 93, 0, 4, 0, 90, 0, 4, 0, 94, 0, 12, 0, 95, 0, 40, 0, 96, 0, 40, 0, 97, 0,
- 4, 0, 98, 0, 4, 0, 99, 0, 12, 0,100, 0, 0, 0,101, 0, 4, 0,102, 0, 4, 0,103, 0, 9, 0,104, 0, 8, 0,105, 0,
- 43, 0, 3, 0, 4, 0,106, 0, 4, 0,107, 0, 9, 0, 2, 0, 44, 0, 20, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0, 17, 0,
- 2, 0, 19, 0, 7, 0,108, 0, 7, 0,109, 0, 7, 0,110, 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, 2, 0,119, 0, 2, 0,120, 0, 7, 0,121, 0, 36, 0, 80, 0,
- 32, 0,122, 0, 45, 0, 13, 0, 4, 0,123, 0, 4, 0,124, 0, 4, 0,125, 0, 4, 0,126, 0, 2, 0,127, 0, 2, 0,128, 0,
- 2, 0, 19, 0, 2, 0,129, 0, 2, 0,130, 0, 2, 0,131, 0, 2, 0,132, 0, 2, 0,133, 0, 46, 0,134, 0, 47, 0, 32, 0,
- 27, 0, 31, 0, 0, 0, 34, 0, 12, 0,135, 0, 48, 0,136, 0, 49, 0,137, 0, 50, 0,138, 0, 2, 0,129, 0, 2, 0, 19, 0,
- 2, 0,139, 0, 2, 0, 17, 0, 2, 0, 37, 0, 2, 0, 43, 0, 4, 0,140, 0, 2, 0,141, 0, 2, 0,142, 0, 2, 0,143, 0,
- 2, 0,144, 0, 2, 0,145, 0, 2, 0,146, 0, 4, 0,147, 0, 4, 0,148, 0, 43, 0,149, 0, 30, 0,150, 0, 0, 0,151, 0,
- 7, 0,152, 0, 4, 0,153, 0, 2, 0,154, 0, 2, 0,155, 0, 2, 0,156, 0, 2, 0,157, 0, 7, 0,158, 0, 7, 0,159, 0,
- 51, 0, 63, 0, 2, 0,160, 0, 2, 0,161, 0, 2, 0,162, 0, 2, 0,163, 0, 32, 0,164, 0, 52, 0,165, 0, 0, 0,166, 0,
- 0, 0,167, 0, 0, 0,168, 0, 0, 0,169, 0, 0, 0,170, 0, 7, 0,171, 0, 7, 0,172, 0, 7, 0,173, 0, 2, 0,174, 0,
- 2, 0,175, 0, 2, 0,176, 0, 2, 0,177, 0, 2, 0,178, 0, 2, 0,179, 0, 0, 0,180, 0, 0, 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, 7, 0,192, 0, 7, 0,193, 0, 7, 0,194, 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, 7, 0,202, 0, 7, 0,203, 0, 7, 0,204, 0, 7, 0,205, 0,
- 7, 0,206, 0, 7, 0,207, 0, 7, 0,208, 0, 7, 0,209, 0, 7, 0,210, 0, 7, 0,211, 0, 7, 0,212, 0, 7, 0,213, 0,
- 7, 0,214, 0, 7, 0,215, 0, 7, 0,216, 0, 7, 0,217, 0, 7, 0,218, 0, 7, 0,219, 0, 7, 0,220, 0, 7, 0,221, 0,
- 53, 0, 15, 0, 0, 0,222, 0, 9, 0,223, 0, 0, 0,224, 0, 0, 0,225, 0, 4, 0,226, 0, 4, 0,227, 0, 9, 0,228, 0,
- 7, 0,229, 0, 7, 0,230, 0, 7, 0,231, 0, 4, 0,232, 0, 9, 0,233, 0, 9, 0,234, 0, 4, 0,235, 0, 4, 0, 37, 0,
- 54, 0, 6, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,236, 0, 7, 0, 67, 0, 4, 0, 64, 0, 55, 0, 5, 0,
- 2, 0, 19, 0, 2, 0, 36, 0, 2, 0, 64, 0, 2, 0,237, 0, 54, 0,231, 0, 56, 0, 17, 0, 32, 0,164, 0, 47, 0,238, 0,
- 57, 0,239, 0, 7, 0,240, 0, 7, 0,241, 0, 2, 0, 17, 0, 2, 0,242, 0, 7, 0,110, 0, 7, 0,111, 0, 7, 0,243, 0,
- 4, 0,244, 0, 2, 0,245, 0, 2, 0,246, 0, 4, 0,129, 0, 4, 0,140, 0, 2, 0,247, 0, 2, 0,248, 0, 58, 0, 22, 0,
- 2, 0, 19, 0, 2, 0,249, 0, 7, 0,250, 0, 7, 0,251, 0, 2, 0,139, 0, 2, 0,252, 0, 4, 0,253, 0, 4, 0,254, 0,
- 32, 0,164, 0, 4, 0,255, 0, 2, 0, 0, 1, 2, 0, 1, 1, 9, 0, 2, 1, 7, 0, 3, 1, 7, 0, 4, 1, 2, 0, 5, 1,
- 2, 0, 6, 1, 2, 0, 7, 1, 2, 0, 8, 1, 7, 0, 9, 1, 7, 0, 10, 1, 55, 0, 11, 1, 59, 0, 11, 0, 4, 0, 12, 1,
- 4, 0, 13, 1, 2, 0, 14, 1, 2, 0, 19, 0, 2, 0, 15, 1, 2, 0, 37, 0, 32, 0,164, 0, 7, 0, 16, 1, 4, 0, 17, 1,
- 0, 0, 18, 1, 7, 0, 19, 1, 52, 0, 61, 0, 27, 0, 31, 0, 39, 0, 75, 0, 7, 0, 20, 1, 7, 0, 21, 1, 7, 0, 22, 1,
- 7, 0, 23, 1, 7, 0, 24, 1, 7, 0, 25, 1, 7, 0, 26, 1, 7, 0, 27, 1, 7, 0, 28, 1, 7, 0, 29, 1, 7, 0, 30, 1,
- 7, 0, 31, 1, 7, 0, 32, 1, 7, 0, 33, 1, 7, 0, 34, 1, 7, 0, 35, 1, 7, 0, 36, 1, 7, 0, 37, 1, 7, 0, 38, 1,
- 7, 0, 39, 1, 2, 0, 40, 1, 2, 0, 41, 1, 2, 0, 42, 1, 2, 0, 43, 1, 2, 0, 44, 1, 2, 0, 45, 1, 2, 0, 46, 1,
- 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,242, 0, 7, 0, 47, 1, 7, 0, 48, 1, 7, 0, 49, 1, 7, 0, 50, 1, 4, 0, 51, 1,
- 4, 0, 52, 1, 2, 0, 53, 1, 2, 0, 54, 1, 2, 0, 15, 1, 2, 0,127, 0, 4, 0, 23, 0, 4, 0,124, 0, 4, 0,125, 0,
- 4, 0,126, 0, 7, 0, 55, 1, 7, 0, 56, 1, 7, 0,189, 0, 45, 0, 57, 1, 60, 0, 58, 1, 36, 0, 80, 0, 47, 0,238, 0,
- 53, 0, 59, 1, 55, 0, 11, 1, 56, 0, 60, 1, 30, 0,150, 0, 58, 0, 61, 1, 59, 0, 62, 1, 0, 0, 63, 1, 0, 0,181, 0,
- 61, 0, 8, 0, 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,172, 0, 4, 0, 19, 0, 7, 0, 66, 1, 7, 0, 67, 1, 7, 0, 68, 1,
- 32, 0, 45, 0, 62, 0, 84, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 69, 1, 2, 0,175, 0,
- 2, 0, 70, 1, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0, 71, 1, 7, 0, 72, 1, 7, 0, 73, 1,
- 7, 0, 74, 1, 7, 0, 75, 1, 7, 0, 76, 1, 7, 0, 77, 1, 7, 0, 78, 1, 7, 0, 79, 1, 7, 0, 80, 1, 7, 0, 81, 1,
- 63, 0, 82, 1, 2, 0,249, 0, 2, 0, 70, 0, 7, 0,110, 0, 7, 0,111, 0, 7, 0, 83, 1, 7, 0, 84, 1, 7, 0, 85, 1,
- 7, 0, 86, 1, 7, 0, 87, 1, 2, 0, 88, 1, 2, 0, 89, 1, 2, 0, 90, 1, 2, 0, 91, 1, 0, 0, 92, 1, 0, 0, 93, 1,
- 2, 0, 94, 1, 2, 0, 95, 1, 2, 0, 96, 1, 2, 0, 97, 1, 2, 0, 98, 1, 7, 0, 99, 1, 7, 0,100, 1, 7, 0,101, 1,
- 7, 0,102, 1, 2, 0,103, 1, 2, 0, 43, 0, 2, 0,104, 1, 2, 0,105, 1, 2, 0,106, 1, 2, 0,107, 1, 7, 0,108, 1,
- 7, 0,109, 1, 7, 0,110, 1, 7, 0,111, 1, 7, 0,112, 1, 7, 0,113, 1, 7, 0,114, 1, 7, 0,115, 1, 7, 0,116, 1,
- 7, 0,117, 1, 7, 0,118, 1, 7, 0,119, 1, 2, 0,120, 1, 2, 0,121, 1, 4, 0,122, 1, 4, 0,123, 1, 2, 0,124, 1,
- 2, 0,125, 1, 2, 0,126, 1, 2, 0,127, 1, 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, 7, 0,131, 1, 2, 0,132, 1,
- 2, 0,133, 1, 36, 0, 80, 0, 51, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 30, 0,150, 0, 64, 0, 2, 0, 27, 0, 31, 0,
- 36, 0, 80, 0, 65, 0, 18, 0, 7, 0,137, 1, 7, 0,138, 1, 7, 0,139, 1, 7, 0,140, 1, 7, 0,141, 1, 7, 0,142, 1,
- 7, 0,143, 1, 7, 0,144, 1, 7, 0,145, 1, 7, 0,146, 1, 2, 0,147, 1, 2, 0,148, 1, 2, 0,149, 1, 2, 0,150, 1,
- 7, 0,151, 1, 7, 0,152, 1, 7, 0,153, 1, 4, 0,154, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0,155, 1,
- 2, 0, 19, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,156, 1, 7, 0,157, 1, 7, 0,158, 1, 7, 0,159, 1,
- 7, 0,160, 1, 7, 0,161, 1, 7, 0,162, 1, 7, 0,163, 1, 7, 0,164, 1, 7, 0,165, 1, 7, 0,166, 1, 7, 0,167, 1,
- 7, 0,168, 1, 7, 0,169, 1, 7, 0,170, 1, 7, 0,171, 1, 7, 0,172, 1, 7, 0,173, 1, 7, 0,174, 1, 7, 0,175, 1,
- 65, 0,176, 1, 7, 0,177, 1, 7, 0,178, 1, 7, 0,179, 1, 7, 0,180, 1, 7, 0,181, 1, 7, 0,182, 1, 7, 0,183, 1,
- 2, 0,184, 1, 2, 0,185, 1, 2, 0,186, 1, 0, 0,187, 1, 0, 0,188, 1, 7, 0,189, 1, 7, 0,190, 1, 2, 0,191, 1,
- 2, 0,192, 1, 7, 0,193, 1, 7, 0,194, 1, 7, 0,195, 1, 7, 0,196, 1, 2, 0,197, 1, 2, 0,198, 1, 4, 0, 69, 1,
- 4, 0,199, 1, 2, 0,200, 1, 2, 0,201, 1, 2, 0,202, 1, 2, 0,203, 1, 7, 0,204, 1, 7, 0,205, 1, 7, 0,206, 1,
- 7, 0,207, 1, 7, 0,208, 1, 7, 0,209, 1, 7, 0,210, 1, 7, 0,211, 1, 7, 0,212, 1, 7, 0,213, 1, 0, 0,214, 1,
- 7, 0,215, 1, 7, 0,216, 1, 7, 0,217, 1, 4, 0,218, 1, 0, 0,219, 1, 0, 0,104, 1, 0, 0,220, 1, 0, 0, 63, 1,
- 2, 0,221, 1, 2, 0,222, 1, 2, 0,135, 1, 2, 0,223, 1, 2, 0,224, 1, 2, 0,225, 1, 7, 0,226, 1, 7, 0,227, 1,
- 7, 0,228, 1, 7, 0,229, 1, 7, 0,230, 1, 2, 0,160, 0, 2, 0,161, 0, 55, 0,231, 1, 55, 0,232, 1, 0, 0,233, 1,
- 0, 0,234, 1, 0, 0,235, 1, 0, 0,236, 1, 2, 0,237, 1, 2, 0,238, 1, 7, 0,239, 1, 7, 0,240, 1, 51, 0,134, 1,
- 60, 0, 58, 1, 36, 0, 80, 0, 67, 0,241, 1, 30, 0,150, 0, 7, 0,242, 1, 7, 0,243, 1, 7, 0,244, 1, 7, 0,245, 1,
- 7, 0,246, 1, 2, 0,247, 1, 2, 0, 70, 0, 7, 0,248, 1, 7, 0,249, 1, 7, 0,250, 1, 7, 0,251, 1, 7, 0,252, 1,
- 7, 0,253, 1, 7, 0,254, 1, 7, 0,255, 1, 7, 0, 0, 2, 2, 0, 1, 2, 2, 0, 2, 2, 4, 0, 3, 2, 4, 0,121, 1,
- 12, 0, 4, 2, 68, 0, 4, 0, 27, 0, 31, 0, 0, 0, 5, 2, 69, 0, 2, 0, 43, 0,149, 0, 70, 0, 26, 0, 70, 0, 0, 0,
- 70, 0, 1, 0, 71, 0, 6, 2, 4, 0, 7, 2, 4, 0, 8, 2, 4, 0, 9, 2, 4, 0, 10, 2, 4, 0, 11, 2, 4, 0, 12, 2,
- 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 13, 2, 2, 0, 14, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 15, 2,
- 7, 0, 16, 2, 7, 0, 17, 2, 7, 0, 18, 2, 7, 0, 19, 2, 7, 0, 20, 2, 7, 0, 21, 2, 7, 0, 23, 0, 7, 0, 22, 2,
- 7, 0, 23, 2, 72, 0, 20, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 6, 2, 12, 0, 24, 2, 12, 0, 25, 2, 12, 0, 26, 2,
- 36, 0, 80, 0, 66, 0, 27, 2, 0, 0, 19, 0, 0, 0, 28, 2, 2, 0, 29, 2, 2, 0,174, 0, 2, 0, 37, 0, 7, 0, 64, 1,
- 7, 0,172, 0, 7, 0, 65, 1, 7, 0, 30, 2, 7, 0, 31, 2, 7, 0, 32, 2, 70, 0, 33, 2, 35, 0, 11, 0, 7, 0, 34, 2,
- 7, 0, 35, 2, 7, 0, 36, 2, 7, 0,251, 0, 2, 0, 55, 0, 0, 0, 37, 2, 0, 0, 38, 2, 0, 0, 39, 2, 0, 0, 40, 2,
- 0, 0, 41, 2, 0, 0, 42, 2, 34, 0, 7, 0, 7, 0, 43, 2, 7, 0, 35, 2, 7, 0, 36, 2, 2, 0, 39, 2, 2, 0, 42, 2,
- 7, 0,251, 0, 7, 0, 37, 0, 73, 0, 21, 0, 73, 0, 0, 0, 73, 0, 1, 0, 2, 0, 17, 0, 2, 0, 44, 2, 2, 0, 42, 2,
- 2, 0, 19, 0, 2, 0, 45, 2, 2, 0, 46, 2, 2, 0, 47, 2, 2, 0, 48, 2, 2, 0, 49, 2, 2, 0, 50, 2, 2, 0, 51, 2,
- 2, 0, 52, 2, 7, 0, 53, 2, 7, 0, 54, 2, 34, 0, 49, 0, 35, 0, 50, 0, 2, 0, 55, 2, 2, 0, 56, 2, 4, 0, 57, 2,
- 74, 0, 5, 0, 2, 0, 58, 2, 2, 0, 44, 2, 0, 0, 19, 0, 0, 0, 37, 0, 2, 0, 70, 0, 75, 0, 4, 0, 7, 0, 5, 0,
- 7, 0, 6, 0, 7, 0, 8, 0, 7, 0, 59, 2, 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 6, 2, 12, 0, 60, 2,
- 12, 0, 25, 2, 12, 0, 61, 2, 32, 0, 62, 2, 32, 0, 63, 2, 32, 0, 64, 2, 36, 0, 80, 0, 77, 0, 65, 2, 38, 0, 66, 2,
- 66, 0, 27, 2, 12, 0, 67, 2, 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1, 2, 0,174, 0, 2, 0, 43, 0, 2, 0, 68, 2,
- 2, 0, 69, 2, 2, 0, 70, 2, 7, 0, 71, 2, 7, 0, 70, 0, 2, 0, 72, 2, 2, 0, 29, 2, 2, 0, 19, 0, 2, 0, 73, 2,
- 7, 0, 74, 2, 7, 0, 75, 2, 7, 0, 76, 2, 2, 0, 47, 2, 2, 0, 48, 2, 2, 0, 77, 2, 2, 0, 78, 2, 4, 0, 79, 2,
- 34, 0, 80, 2, 2, 0, 23, 0, 2, 0, 95, 0, 2, 0, 67, 0, 2, 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, 7, 0, 90, 2, 7, 0, 91, 2, 0, 0, 92, 2,
- 78, 0, 93, 2, 79, 0, 94, 2, 0, 0, 95, 2, 68, 0, 96, 2, 68, 0, 97, 2, 68, 0, 98, 2, 68, 0, 99, 2, 4, 0,100, 2,
- 7, 0,101, 2, 4, 0,102, 2, 4, 0,103, 2, 75, 0,104, 2, 4, 0,105, 2, 4, 0,106, 2, 74, 0,107, 2, 74, 0,108, 2,
- 80, 0, 40, 0, 27, 0, 31, 0, 71, 0, 6, 2, 12, 0,109, 2, 36, 0, 80, 0, 38, 0, 66, 2, 66, 0, 27, 2, 81, 0,110, 2,
- 82, 0,111, 2, 83, 0,112, 2, 84, 0,113, 2, 85, 0,114, 2, 86, 0,115, 2, 87, 0,116, 2, 88, 0,117, 2, 80, 0,118, 2,
- 89, 0,119, 2, 90, 0,120, 2, 91, 0,121, 2, 91, 0,122, 2, 91, 0,123, 2, 4, 0, 54, 0, 4, 0,124, 2, 4, 0,125, 2,
- 4, 0,126, 2, 4, 0,127, 2, 2, 0,174, 0, 2, 0,128, 2, 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1, 7, 0,129, 2,
- 4, 0, 68, 2, 2, 0,130, 2, 2, 0, 19, 0, 2, 0,131, 2, 2, 0,132, 2, 2, 0, 29, 2, 2, 0,133, 2, 92, 0,134, 2,
- 93, 0,135, 2, 83, 0, 8, 0, 9, 0,136, 2, 7, 0,137, 2, 4, 0,138, 2, 0, 0, 19, 0, 0, 0,139, 2, 2, 0, 69, 1,
- 2, 0,140, 2, 2, 0,141, 2, 81, 0, 7, 0, 4, 0,142, 2, 4, 0,143, 2, 4, 0,144, 2, 4, 0,145, 2, 2, 0, 44, 2,
- 0, 0,146, 2, 0, 0, 19, 0, 85, 0, 5, 0, 4, 0,142, 2, 4, 0,143, 2, 0, 0,147, 2, 0, 0,148, 2, 2, 0, 19, 0,
- 94, 0, 2, 0, 4, 0,149, 2, 7, 0, 36, 2, 86, 0, 3, 0, 94, 0,150, 2, 4, 0,151, 2, 4, 0, 19, 0, 84, 0, 6, 0,
- 7, 0,152, 2, 2, 0,153, 2, 2, 0, 44, 2, 0, 0, 19, 0, 0, 0,148, 2, 0, 0, 70, 2, 87, 0, 4, 0, 0, 0,236, 0,
- 0, 0,182, 0, 0, 0,183, 0, 0, 0,184, 0, 95, 0, 6, 0, 47, 0,136, 2, 0, 0, 19, 0, 0, 0,139, 2, 2, 0, 69, 1,
- 2, 0,140, 2, 2, 0,141, 2, 96, 0, 1, 0, 7, 0,154, 2, 97, 0, 5, 0, 0, 0,236, 0, 0, 0,182, 0, 0, 0,183, 0,
- 0, 0,184, 0, 4, 0, 37, 0, 88, 0, 1, 0, 7, 0,155, 2, 89, 0, 2, 0, 4, 0,156, 2, 4, 0, 17, 0, 82, 0, 7, 0,
- 7, 0,137, 2, 47, 0,136, 2, 0, 0, 19, 0, 0, 0,139, 2, 2, 0, 69, 1, 2, 0,140, 2, 2, 0,141, 2, 98, 0, 1, 0,
- 7, 0,157, 2, 99, 0, 1, 0, 4, 0,158, 2,100, 0, 1, 0, 0, 0,159, 2,101, 0, 1, 0, 7, 0,137, 2,102, 0, 3, 0,
- 4, 0,160, 2, 0, 0, 92, 0, 7, 0,161, 2,104, 0, 4, 0, 7, 0,236, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0,
-105, 0, 1, 0,104, 0,138, 2,106, 0, 5, 0, 4, 0,162, 2, 4, 0,163, 2, 0, 0, 19, 0, 0, 0, 44, 2, 0, 0, 70, 2,
-107, 0, 2, 0, 4, 0,164, 2, 4, 0,163, 2,108, 0, 10, 0,108, 0, 0, 0,108, 0, 1, 0,106, 0,165, 2,105, 0,166, 2,
-107, 0,167, 2, 4, 0, 54, 0, 4, 0,125, 2, 4, 0,124, 2, 4, 0, 37, 0, 84, 0,168, 2, 92, 0, 14, 0, 12, 0,169, 2,
- 84, 0,168, 2, 0, 0,170, 2, 0, 0,171, 2, 0, 0,172, 2, 0, 0,173, 2, 0, 0,174, 2, 0, 0,175, 2, 0, 0,176, 2,
- 0, 0, 19, 0, 91, 0,121, 2, 91, 0,123, 2, 2, 0,177, 2, 0, 0,178, 2, 93, 0, 8, 0, 4, 0,179, 2, 4, 0,180, 2,
- 81, 0,181, 2, 85, 0,182, 2, 4, 0,125, 2, 4, 0,124, 2, 4, 0, 54, 0, 4, 0, 37, 0,109, 0, 7, 0,109, 0, 0, 0,
-109, 0, 1, 0, 4, 0, 17, 0, 4, 0, 69, 1, 0, 0, 20, 0, 46, 0,134, 0, 0, 0,183, 2,110, 0, 7, 0,109, 0,184, 2,
- 2, 0,185, 2, 2, 0,169, 2, 2, 0,186, 2, 2, 0, 90, 0, 9, 0,187, 2, 9, 0,188, 2,111, 0, 3, 0,109, 0,184, 2,
- 32, 0,164, 0, 0, 0, 20, 0,112, 0, 5, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0, 20, 0, 2, 0,189, 2, 0, 0,190, 2,
-113, 0, 5, 0,109, 0,184, 2, 7, 0, 88, 0, 7, 0,191, 2, 4, 0,192, 2, 4, 0,193, 2,114, 0, 5, 0,109, 0,184, 2,
- 32, 0,194, 2, 0, 0, 72, 0, 4, 0, 69, 1, 4, 0, 19, 0,115, 0, 13, 0,109, 0,184, 2, 32, 0,195, 2, 32, 0,196, 2,
- 32, 0,197, 2, 32, 0,198, 2, 7, 0,199, 2, 7, 0,200, 2, 7, 0,191, 2, 7, 0,201, 2, 4, 0,202, 2, 4, 0,203, 2,
- 4, 0, 90, 0, 4, 0,204, 2,116, 0, 5, 0,109, 0,184, 2, 2, 0,205, 2, 2, 0, 19, 0, 7, 0,206, 2, 32, 0,207, 2,
-117, 0, 3, 0,109, 0,184, 2, 7, 0,208, 2, 4, 0, 90, 0,118, 0, 10, 0,109, 0,184, 2, 7, 0,209, 2, 4, 0,210, 2,
- 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,211, 2, 2, 0,212, 2, 2, 0,213, 2, 7, 0,214, 2, 0, 0,215, 2,119, 0, 3, 0,
-109, 0,184, 2, 7, 0, 37, 0, 4, 0, 17, 0,120, 0, 6, 0,109, 0,184, 2,121, 0,216, 2,122, 0,217, 2,123, 0,218, 2,
- 7, 0,219, 2, 4, 0, 17, 0,124, 0, 11, 0,109, 0,184, 2, 52, 0,220, 2, 7, 0,221, 2, 4, 0,222, 2, 0, 0,215, 2,
- 7, 0,223, 2, 4, 0,224, 2, 32, 0,225, 2, 0, 0,226, 2, 4, 0,227, 2, 4, 0, 37, 0,125, 0, 10, 0,109, 0,184, 2,
- 32, 0,228, 2, 47, 0,229, 2, 4, 0, 90, 0, 4, 0,230, 2, 7, 0,231, 2, 7, 0,232, 2, 0, 0,226, 2, 4, 0,227, 2,
- 4, 0, 37, 0,126, 0, 3, 0,109, 0,184, 2, 7, 0,233, 2, 4, 0,234, 2,127, 0, 5, 0,109, 0,184, 2, 7, 0,235, 2,
- 0, 0,215, 2, 2, 0, 19, 0, 2, 0,236, 2,128, 0, 8, 0,109, 0,184, 2, 32, 0,164, 0, 7, 0,235, 2, 7, 0,251, 0,
- 7, 0,106, 0, 0, 0,215, 2, 2, 0, 19, 0, 2, 0, 17, 0,129, 0, 21, 0,109, 0,184, 2, 32, 0,237, 2, 0, 0,215, 2,
- 52, 0,220, 2, 32, 0,225, 2, 2, 0, 19, 0, 2, 0, 37, 0, 7, 0,238, 2, 7, 0,239, 2, 7, 0,240, 2, 7, 0, 74, 2,
- 7, 0,241, 2, 7, 0,242, 2, 7, 0,243, 2, 7, 0,244, 2, 4, 0,224, 2, 4, 0,227, 2, 0, 0,226, 2, 7, 0,245, 2,
- 7, 0,246, 2, 7, 0, 43, 0,130, 0, 7, 0,109, 0,184, 2, 2, 0,247, 2, 2, 0,248, 2, 4, 0, 70, 0, 32, 0,164, 0,
- 7, 0,249, 2, 0, 0,215, 2,131, 0, 10, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0,250, 2, 7, 0,251, 2, 7, 0,252, 2,
- 7, 0,244, 2, 4, 0,253, 2, 4, 0,254, 2, 7, 0,255, 2, 0, 0, 20, 0,132, 0, 1, 0,109, 0,184, 2,133, 0, 7, 0,
-109, 0,184, 2, 46, 0,134, 0,134, 0, 0, 3,135, 0, 1, 3,136, 0, 2, 3,137, 0, 3, 3, 12, 0, 4, 3,138, 0, 13, 0,
-109, 0,184, 2, 84, 0, 5, 3, 84, 0, 6, 3, 84, 0, 7, 3, 84, 0, 8, 3, 84, 0, 9, 3, 84, 0, 10, 3, 81, 0, 11, 3,
- 4, 0, 12, 3, 4, 0, 13, 3, 7, 0,219, 2, 7, 0, 37, 0,139, 0, 14, 3,140, 0, 7, 0,109, 0,184, 2, 84, 0, 5, 3,
- 84, 0, 15, 3,141, 0, 16, 3,142, 0, 14, 3, 4, 0, 17, 3, 4, 0, 12, 3,143, 0, 4, 0,109, 0,184, 2, 32, 0,164, 0,
- 4, 0, 18, 3, 4, 0, 37, 0,144, 0, 2, 0, 4, 0, 19, 3, 7, 0, 36, 2,145, 0, 2, 0, 4, 0,125, 0, 4, 0, 20, 3,
-146, 0, 20, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0,215, 2, 2, 0, 21, 3, 2, 0, 19, 0, 2, 0, 70, 2, 7, 0, 22, 3,
- 7, 0, 23, 3, 4, 0, 54, 0, 4, 0, 24, 3,145, 0, 25, 3,144, 0, 26, 3, 4, 0, 27, 3, 4, 0, 28, 3, 4, 0, 29, 3,
- 4, 0, 20, 3, 7, 0, 30, 3, 7, 0, 31, 3, 7, 0, 32, 3, 9, 0, 33, 3,147, 0, 8, 0,109, 0,184, 2,148, 0, 34, 3,
-141, 0, 16, 3, 4, 0, 35, 3, 4, 0, 36, 3, 4, 0, 37, 3, 2, 0, 19, 0, 2, 0, 57, 0,149, 0, 8, 0,109, 0,184, 2,
- 32, 0, 45, 0, 2, 0,255, 0, 2, 0, 19, 0, 2, 0,205, 2, 2, 0, 57, 0, 7, 0, 38, 3, 7, 0, 39, 3,150, 0, 5, 0,
-109, 0,184, 2, 4, 0, 40, 3, 2, 0, 19, 0, 2, 0, 41, 3, 7, 0, 42, 3,151, 0, 7, 0,109, 0,184, 2, 84, 0, 43, 3,
- 4, 0, 44, 3, 0, 0, 45, 3, 0, 0, 46, 3, 0, 0, 47, 3, 0, 0, 48, 3,152, 0, 3, 0,109, 0,184, 2,153, 0, 49, 3,
-137, 0, 3, 3,154, 0, 10, 0,109, 0,184, 2, 32, 0, 50, 3, 32, 0, 51, 3, 0, 0, 52, 3, 7, 0, 53, 3, 2, 0, 54, 3,
- 2, 0, 55, 3, 0, 0, 56, 3, 0, 0, 57, 3, 0, 0,190, 2,155, 0, 9, 0,109, 0,184, 2, 32, 0, 58, 3, 0, 0, 52, 3,
- 7, 0, 59, 3, 7, 0, 60, 3, 0, 0, 69, 1, 0, 0,205, 2, 0, 0, 61, 3, 0, 0, 37, 0,156, 0, 1, 0,109, 0,184, 2,
-157, 0, 27, 0, 27, 0, 31, 0, 2, 0, 45, 2, 2, 0, 46, 2, 2, 0, 62, 3, 2, 0, 19, 0, 2, 0, 63, 3, 2, 0, 64, 3,
- 2, 0, 65, 3, 2, 0, 70, 0, 0, 0, 66, 3, 0, 0, 67, 3, 0, 0, 68, 3, 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 69, 3,
- 7, 0, 70, 3, 7, 0, 71, 3, 7, 0, 72, 3, 7, 0, 73, 3, 7, 0, 74, 3, 34, 0, 75, 3, 36, 0, 80, 0, 38, 0, 66, 2,
- 86, 0,115, 2, 7, 0, 76, 3, 7, 0, 77, 3,157, 0, 78, 3,158, 0, 3, 0,158, 0, 0, 0,158, 0, 1, 0, 0, 0, 20, 0,
- 71, 0, 3, 0, 7, 0, 79, 3, 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0,159, 0, 80, 3,
- 2, 0, 17, 0, 2, 0, 81, 3, 4, 0, 82, 3, 4, 0, 83, 3, 4, 0, 84, 3, 0, 0, 85, 3, 32, 0, 38, 0, 32, 0, 86, 3,
- 32, 0, 87, 3, 32, 0, 88, 3, 32, 0, 89, 3, 36, 0, 80, 0, 77, 0, 65, 2, 71, 0, 6, 2,160, 0, 90, 3,160, 0, 91, 3,
-161, 0, 92, 3, 9, 0, 2, 0,162, 0, 93, 3, 12, 0, 94, 3, 12, 0,109, 2, 12, 0, 25, 2, 12, 0, 95, 3, 12, 0, 96, 3,
- 4, 0, 69, 1, 4, 0, 97, 3, 66, 0, 27, 2, 0, 0, 98, 3, 4, 0, 29, 2, 4, 0, 99, 3, 7, 0, 64, 1, 7, 0,100, 3,
- 7, 0,101, 3, 7, 0,172, 0, 7, 0,102, 3, 7, 0, 65, 1, 7, 0,103, 3, 7, 0, 15, 2, 7, 0,104, 3, 7, 0,105, 3,
- 7, 0,106, 3, 7, 0,107, 3, 7, 0,108, 3, 7, 0,109, 3, 7, 0,251, 2, 7, 0,110, 3, 7, 0,240, 0, 4, 0,111, 3,
- 2, 0, 19, 0, 2, 0,112, 3, 2, 0,113, 3, 2, 0,114, 3, 2, 0,115, 3, 2, 0,116, 3, 2, 0,117, 3, 2, 0,118, 3,
- 2, 0,119, 3, 2, 0,120, 3, 2, 0,121, 3, 2, 0,122, 3, 4, 0,123, 3, 4, 0,124, 3, 4, 0,125, 3, 4, 0,126, 3,
- 7, 0,127, 3, 7, 0,101, 2, 7, 0,128, 3, 7, 0,129, 3, 7, 0,130, 3, 7, 0,131, 3, 7, 0,132, 3, 7, 0,215, 0,
- 7, 0,133, 3, 7, 0,134, 3, 7, 0,135, 3, 7, 0,136, 3, 2, 0,137, 3, 0, 0,138, 3, 0, 0,139, 3, 0, 0,140, 3,
- 0, 0,141, 3, 7, 0,142, 3, 7, 0,143, 3, 12, 0,144, 3, 12, 0,145, 3, 12, 0,146, 3, 12, 0,147, 3, 7, 0,148, 3,
- 2, 0,156, 2, 2, 0,149, 3, 7, 0,138, 2, 4, 0,150, 3, 4, 0,151, 3,163, 0,152, 3, 2, 0,153, 3, 2, 0,247, 0,
- 7, 0,154, 3, 12, 0,155, 3, 12, 0,156, 3, 12, 0,157, 3, 12, 0,158, 3,164, 0, 61, 1,165, 0,159, 3, 67, 0,160, 3,
- 2, 0,161, 3, 2, 0,162, 3, 2, 0,163, 3, 2, 0,164, 3, 7, 0,130, 2, 2, 0,165, 3, 2, 0,166, 3,153, 0,167, 3,
-141, 0,168, 3,141, 0,169, 3, 4, 0,170, 3, 4, 0,171, 3, 4, 0,172, 3, 4, 0, 70, 0, 12, 0,173, 3, 12, 0,174, 3,
- 12, 0,175, 3,166, 0, 14, 0,166, 0, 0, 0,166, 0, 1, 0, 32, 0, 38, 0, 7, 0,251, 2, 7, 0, 66, 1, 7, 0,252, 2,
- 7, 0,244, 2, 0, 0, 20, 0, 4, 0,253, 2, 4, 0,254, 2, 4, 0,176, 3, 2, 0, 17, 0, 2, 0,177, 3, 7, 0,255, 2,
-167, 0, 12, 0,167, 0, 0, 0,167, 0, 1, 0, 32, 0, 45, 0, 4, 0,178, 3, 4, 0,156, 2, 4, 0,179, 3, 4, 0, 17, 0,
- 4, 0,180, 3, 7, 0, 66, 1, 7, 0,181, 3, 7, 0,182, 3, 7, 0,154, 2,164, 0, 40, 0, 4, 0, 19, 0, 2, 0,183, 3,
- 2, 0,184, 3, 2, 0,244, 2, 2, 0,185, 3, 2, 0,186, 3, 2, 0,187, 3, 2, 0,188, 3, 2, 0,189, 3, 7, 0,190, 3,
- 7, 0,191, 3, 7, 0,192, 3, 7, 0,193, 3, 7, 0,194, 3, 7, 0,195, 3, 7, 0,196, 3, 7, 0,197, 3, 7, 0,198, 3,
- 7, 0,199, 3, 7, 0,200, 3, 7, 0,201, 3, 7, 0,202, 3, 7, 0,203, 3, 7, 0,204, 3, 7, 0,205, 3, 7, 0, 37, 0,
- 7, 0,206, 3, 7, 0,207, 3, 7, 0,208, 3, 7, 0,209, 3, 7, 0,210, 3, 7, 0,211, 3, 7, 0,212, 3, 7, 0,213, 3,
- 7, 0,214, 3, 7, 0,215, 3, 52, 0,165, 0,168, 0,216, 3, 7, 0,217, 3, 4, 0,193, 2,169, 0, 5, 0, 67, 0,241, 1,
- 7, 0,218, 3, 7, 0,219, 3, 2, 0, 19, 0, 2, 0,220, 3,170, 0, 9, 0,170, 0, 0, 0,170, 0, 1, 0, 4, 0,221, 3,
- 4, 0,222, 3, 4, 0,223, 3, 4, 0, 19, 0, 4, 0,224, 3, 9, 0,225, 3, 9, 0,226, 3,137, 0, 19, 0,137, 0, 0, 0,
-137, 0, 1, 0, 4, 0, 19, 0, 4, 0,227, 3, 4, 0,228, 3, 4, 0,229, 3, 4, 0,230, 3, 4, 0,231, 3, 4, 0,232, 3,
- 4, 0,222, 3, 4, 0,156, 2, 4, 0, 57, 0, 0, 0,233, 3, 0, 0,234, 3, 0, 0,235, 3, 0, 0,236, 3, 12, 0,237, 3,
-171, 0,238, 3, 9, 0,239, 3,172, 0, 1, 0, 7, 0, 43, 2,163, 0, 30, 0, 4, 0, 19, 0, 7, 0,240, 3, 7, 0,241, 3,
- 7, 0,242, 3, 4, 0,243, 3, 4, 0,244, 3, 4, 0,245, 3, 4, 0,246, 3, 7, 0,247, 3, 7, 0,248, 3, 7, 0,249, 3,
- 7, 0,250, 3, 7, 0,251, 3, 7, 0,252, 3, 7, 0,253, 3, 7, 0,254, 3, 7, 0,255, 3, 7, 0, 0, 4, 7, 0, 1, 4,
- 7, 0, 2, 4, 7, 0, 3, 4, 7, 0, 4, 4, 7, 0, 5, 4, 7, 0, 6, 4, 7, 0, 7, 4, 7, 0, 8, 4, 4, 0, 9, 4,
- 4, 0, 10, 4, 7, 0, 11, 4, 7, 0,133, 3,165, 0, 50, 0, 4, 0,222, 3, 4, 0, 12, 4,173, 0, 13, 4,174, 0, 14, 4,
- 0, 0, 37, 0, 0, 0, 15, 4, 2, 0, 16, 4, 7, 0, 17, 4, 0, 0, 18, 4, 7, 0, 19, 4, 7, 0, 20, 4, 7, 0, 21, 4,
- 7, 0, 22, 4, 7, 0, 23, 4, 7, 0, 24, 4, 7, 0, 25, 4, 7, 0, 26, 4, 7, 0, 27, 4, 2, 0, 28, 4, 0, 0, 29, 4,
- 2, 0, 30, 4, 7, 0, 31, 4, 7, 0, 32, 4, 0, 0, 33, 4, 4, 0,126, 0, 4, 0, 34, 4, 4, 0, 35, 4, 2, 0, 36, 4,
- 2, 0, 37, 4,172, 0, 38, 4, 4, 0, 39, 4, 4, 0, 82, 0, 7, 0, 40, 4, 7, 0, 41, 4, 7, 0, 42, 4, 7, 0, 43, 4,
- 2, 0, 44, 4, 2, 0, 45, 4, 2, 0, 46, 4, 2, 0, 47, 4, 2, 0, 48, 4, 2, 0, 49, 4, 2, 0, 50, 4, 2, 0, 51, 4,
-175, 0, 52, 4, 7, 0, 53, 4, 7, 0, 54, 4,137, 0, 55, 4, 12, 0, 4, 3,169, 0, 56, 4,153, 0, 49, 0,152, 0, 57, 4,
- 2, 0, 17, 0, 2, 0, 58, 4, 2, 0, 59, 4, 2, 0, 60, 4, 7, 0, 61, 4, 2, 0, 62, 4, 2, 0, 63, 4, 7, 0, 64, 4,
- 2, 0, 65, 4, 2, 0, 66, 4, 7, 0, 67, 4, 7, 0, 68, 4, 7, 0, 69, 4, 7, 0, 70, 4, 7, 0, 71, 4, 7, 0, 72, 4,
- 4, 0, 73, 4, 7, 0, 74, 4, 7, 0, 75, 4, 7, 0, 76, 4, 80, 0, 77, 4, 80, 0, 78, 4, 80, 0, 79, 4, 0, 0, 80, 4,
- 7, 0, 81, 4, 7, 0, 82, 4, 36, 0, 80, 0, 2, 0, 83, 4, 0, 0, 84, 4, 0, 0, 85, 4, 7, 0, 86, 4, 4, 0, 87, 4,
- 7, 0, 88, 4, 7, 0, 89, 4, 4, 0, 90, 4, 4, 0, 19, 0, 7, 0, 91, 4, 7, 0, 92, 4, 7, 0, 93, 4, 84, 0, 94, 4,
- 7, 0, 95, 4, 7, 0, 96, 4, 7, 0, 97, 4, 7, 0, 98, 4, 7, 0, 99, 4, 7, 0,100, 4, 7, 0,101, 4, 4, 0,102, 4,
-176, 0, 73, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0,175, 0, 2, 0, 70, 1, 2, 0,104, 1, 2, 0,103, 4, 7, 0,104, 4,
- 7, 0,105, 4, 7, 0,106, 4, 7, 0,107, 4, 7, 0,108, 4, 7, 0,109, 4, 7, 0,110, 4, 7, 0,111, 4, 7, 0,162, 1,
- 7, 0,164, 1, 7, 0,163, 1, 7, 0,112, 4, 4, 0,113, 4, 7, 0,114, 4, 7, 0,115, 4, 7, 0,116, 4, 7, 0,117, 4,
- 7, 0,118, 4, 7, 0,119, 4, 7, 0,120, 4, 2, 0,121, 4, 2, 0, 69, 1, 2, 0,122, 4, 2, 0,123, 4, 2, 0,124, 4,
- 2, 0,125, 4, 2, 0,126, 4, 2, 0,127, 4, 7, 0,128, 4, 7, 0,129, 4, 7, 0,130, 4, 7, 0,131, 4, 7, 0,132, 4,
- 7, 0,133, 4, 7, 0,134, 4, 7, 0,135, 4, 7, 0,136, 4, 7, 0,137, 4, 7, 0,138, 4, 7, 0,139, 4, 2, 0,140, 4,
- 2, 0,141, 4, 2, 0,142, 4, 2, 0,143, 4, 7, 0,144, 4, 7, 0,145, 4, 7, 0,146, 4, 7, 0,147, 4, 2, 0,148, 4,
- 2, 0,149, 4, 2, 0,150, 4, 2, 0,151, 4, 7, 0,152, 4, 7, 0,153, 4, 7, 0,154, 4, 7, 0,155, 4, 2, 0,156, 4,
- 2, 0,157, 4, 2, 0,158, 4, 2, 0, 19, 0, 7, 0,159, 4, 7, 0,160, 4, 36, 0, 80, 0, 51, 0,134, 1, 2, 0,135, 1,
- 2, 0,136, 1, 30, 0,150, 0,177, 0, 8, 0,177, 0, 0, 0,177, 0, 1, 0, 4, 0,111, 3, 4, 0,161, 4, 4, 0, 19, 0,
- 2, 0,162, 4, 2, 0,163, 4, 32, 0,164, 0,178, 0, 13, 0, 9, 0,164, 4, 9, 0,165, 4, 4, 0,166, 4, 4, 0,167, 4,
- 4, 0,168, 4, 4, 0,169, 4, 4, 0,170, 4, 4, 0,171, 4, 4, 0,172, 4, 4, 0,173, 4, 4, 0,174, 4, 4, 0, 37, 0,
- 0, 0,175, 4,179, 0, 5, 0, 9, 0,176, 4, 9, 0,177, 4, 4, 0,178, 4, 4, 0, 70, 0, 0, 0,179, 4,180, 0, 15, 0,
- 4, 0, 17, 0, 4, 0,180, 4, 4, 0,181, 4, 4, 0,182, 4, 4, 0,183, 4, 4, 0,184, 4, 7, 0,185, 4, 4, 0,186, 4,
- 4, 0, 90, 0, 4, 0,187, 4, 4, 0,188, 4, 4, 0,189, 4, 4, 0,190, 4, 4, 0,191, 4, 26, 0, 30, 0,181, 0, 7, 0,
- 4, 0,192, 4, 7, 0,193, 4, 7, 0,194, 4, 7, 0,195, 4, 4, 0,196, 4, 2, 0, 19, 0, 2, 0, 37, 0,182, 0, 11, 0,
-182, 0, 0, 0,182, 0, 1, 0, 0, 0, 20, 0, 66, 0,197, 4, 67, 0,198, 4, 4, 0,111, 3, 4, 0,199, 4, 4, 0,200, 4,
- 4, 0, 37, 0, 4, 0,201, 4, 4, 0,202, 4,183, 0,134, 0,178, 0,203, 4,179, 0,204, 4,180, 0,205, 4, 4, 0, 17, 3,
- 4, 0,126, 0, 4, 0, 34, 4, 4, 0,206, 4, 4, 0,207, 4, 4, 0,208, 4, 4, 0,209, 4, 2, 0, 19, 0, 2, 0,210, 4,
- 7, 0,101, 2, 7, 0,211, 4, 7, 0,212, 4, 7, 0,213, 4, 7, 0,214, 4, 7, 0,215, 4, 2, 0,216, 4, 2, 0,217, 4,
- 2, 0,218, 4, 2, 0,219, 4, 2, 0,246, 0, 2, 0,220, 4, 2, 0,221, 4, 2, 0,222, 4, 2, 0,223, 4, 2, 0,224, 4,
- 2, 0, 91, 1, 2, 0,106, 0, 2, 0,225, 4, 2, 0,226, 4, 2, 0,227, 4, 2, 0,228, 4, 2, 0,229, 4, 2, 0,230, 4,
- 2, 0,231, 4, 2, 0,232, 4, 2, 0,233, 4, 2, 0, 92, 1, 2, 0,234, 4, 2, 0,235, 4, 2, 0,236, 4, 2, 0,237, 4,
- 4, 0,238, 4, 4, 0, 69, 1, 4, 0,239, 4, 2, 0,240, 4, 2, 0,241, 4, 2, 0,242, 4, 2, 0,121, 1, 2, 0,243, 4,
- 2, 0,244, 4, 2, 0,245, 4, 2, 0,246, 4, 24, 0,247, 4, 24, 0,248, 4, 23, 0,249, 4, 12, 0,250, 4, 2, 0,251, 4,
- 2, 0, 37, 0, 7, 0,252, 4, 7, 0,253, 4, 7, 0,254, 4, 7, 0,255, 4, 4, 0, 0, 5, 7, 0, 1, 5, 7, 0, 2, 5,
- 7, 0, 3, 5, 7, 0, 4, 5, 2, 0, 5, 5, 2, 0, 6, 5, 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 9, 5, 2, 0, 10, 5,
- 7, 0, 11, 5, 7, 0, 12, 5, 7, 0, 13, 5, 2, 0, 14, 5, 2, 0, 15, 5, 2, 0, 16, 5, 2, 0, 17, 5, 2, 0, 18, 5,
- 2, 0, 19, 5, 2, 0, 20, 5, 2, 0, 21, 5, 2, 0, 22, 5, 2, 0, 23, 5, 4, 0, 24, 5, 4, 0, 25, 5, 4, 0, 26, 5,
- 4, 0, 27, 5, 4, 0, 28, 5, 7, 0, 29, 5, 4, 0, 30, 5, 4, 0, 31, 5, 4, 0, 32, 5, 4, 0, 33, 5, 7, 0, 34, 5,
- 7, 0, 35, 5, 7, 0, 36, 5, 7, 0, 37, 5, 7, 0, 38, 5, 7, 0, 39, 5, 7, 0, 40, 5, 7, 0, 41, 5, 7, 0, 42, 5,
- 0, 0, 43, 5, 0, 0, 44, 5, 4, 0, 45, 5, 2, 0, 46, 5, 2, 0,238, 1, 0, 0, 47, 5, 7, 0, 48, 5, 7, 0, 49, 5,
- 4, 0, 50, 5, 4, 0, 51, 5, 7, 0, 52, 5, 7, 0, 53, 5, 2, 0, 54, 5, 2, 0, 55, 5, 7, 0, 56, 5, 2, 0, 57, 5,
- 2, 0, 58, 5, 4, 0, 59, 5, 2, 0, 60, 5, 2, 0, 61, 5, 2, 0, 62, 5, 2, 0, 63, 5, 7, 0, 64, 5, 7, 0, 70, 0,
- 42, 0, 65, 5, 0, 0, 66, 5,184, 0, 9, 0,184, 0, 0, 0,184, 0, 1, 0, 0, 0, 20, 0, 2, 0, 67, 5, 2, 0, 68, 5,
- 2, 0, 69, 5, 2, 0, 43, 0, 7, 0, 70, 5, 7, 0, 70, 0,185, 0, 7, 0, 2, 0,210, 2, 2, 0, 69, 1, 2, 0,109, 0,
- 2, 0, 71, 5, 7, 0, 72, 5, 7, 0, 70, 0, 42, 0, 73, 5,186, 0, 5, 0, 7, 0, 74, 5, 0, 0, 17, 0, 0, 0, 43, 0,
- 0, 0, 70, 0, 0, 0,238, 1,187, 0, 26, 0, 7, 0,119, 4, 7, 0,120, 4, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0, 75, 5,
- 2, 0,136, 1, 2, 0,122, 4, 2, 0,123, 4, 2, 0,124, 4, 2, 0,125, 4, 2, 0,126, 4, 2, 0,127, 4,186, 0, 76, 5,
- 2, 0,216, 4, 2, 0,217, 4, 2, 0,218, 4, 2, 0,219, 4, 2, 0,246, 0, 2, 0,220, 4, 2, 0, 77, 5, 2, 0,221, 4,
-185, 0, 78, 5, 2, 0, 79, 5, 2, 0,223, 4, 2, 0,226, 4, 2, 0,227, 4,188, 0, 5, 0,188, 0, 0, 0,188, 0, 1, 0,
- 4, 0,221, 3, 0, 0,233, 3, 4, 0, 19, 0,189, 0, 6, 0,190, 0, 80, 5, 4, 0, 81, 5, 4, 0, 82, 5, 9, 0, 83, 5,
- 0, 0, 84, 5, 4, 0, 37, 0,191, 0, 6, 0,189, 0, 85, 5, 2, 0, 19, 0, 2, 0, 86, 5, 2, 0, 87, 5, 2, 0, 88, 5,
- 9, 0, 89, 5,192, 0, 4, 0, 2, 0,106, 0, 2, 0,221, 2, 2, 0,227, 3, 2, 0, 90, 5,193, 0, 14, 0, 2, 0, 19, 0,
- 2, 0, 91, 5, 2, 0, 92, 5, 2, 0, 93, 5,192, 0, 94, 5, 9, 0, 89, 5, 7, 0, 95, 5, 7, 0, 57, 0, 4, 0, 96, 5,
- 4, 0, 97, 5, 4, 0, 98, 5, 4, 0, 99, 5, 46, 0,134, 0, 32, 0,164, 0,194, 0, 4, 0,194, 0, 0, 0,194, 0, 1, 0,
- 0, 0,100, 5, 7, 0,101, 5,195, 0, 6, 0,189, 0, 85, 5, 7, 0,102, 5, 4, 0, 90, 0, 0, 0,103, 5, 0, 0,104, 5,
- 0, 0,190, 2,196, 0, 9, 0,189, 0, 85, 5, 7, 0,105, 5, 7, 0,106, 5, 2, 0, 69, 1, 2, 0, 19, 0, 4, 0, 36, 0,
- 4, 0,107, 5, 86, 0,108, 5, 9, 0, 89, 5,197, 0, 74, 0,196, 0,109, 5,196, 0,110, 5,195, 0, 80, 3, 7, 0,111, 5,
- 2, 0,112, 5, 2, 0,113, 5, 7, 0,114, 5, 7, 0,115, 5, 2, 0,227, 3, 2, 0,116, 5, 7, 0,117, 5, 7, 0,118, 5,
- 7, 0,119, 5, 2, 0,120, 5, 2, 0, 96, 5, 2, 0,121, 5, 2, 0,122, 5, 2, 0,123, 5, 2, 0,124, 5, 7, 0,125, 5,
- 7, 0,126, 5, 7, 0,127, 5, 2, 0,128, 5, 2, 0,129, 5, 2, 0,130, 5, 2, 0,131, 5, 2, 0,132, 5, 2, 0,133, 5,
- 2, 0,134, 5,191, 0,135, 5,193, 0,136, 5, 7, 0,137, 5, 7, 0,138, 5, 7, 0,139, 5, 2, 0,140, 5, 2, 0,141, 5,
- 0, 0,142, 5, 0, 0,143, 5, 0, 0,144, 5, 0, 0,145, 5, 0, 0,146, 5, 0, 0,147, 5, 2, 0,148, 5, 7, 0,149, 5,
- 7, 0,150, 5, 7, 0,151, 5, 7, 0,152, 5, 7, 0,153, 5, 7, 0,154, 5, 7, 0,155, 5, 7, 0,156, 5, 7, 0,157, 5,
- 7, 0,158, 5, 2, 0,159, 5, 0, 0,160, 5, 0, 0,161, 5, 0, 0,162, 5, 0, 0,163, 5, 32, 0,164, 5, 0, 0,165, 5,
- 0, 0,166, 5, 0, 0,167, 5, 0, 0,168, 5, 0, 0,169, 5, 0, 0,170, 5, 0, 0,171, 5, 0, 0,172, 5, 2, 0,173, 5,
- 2, 0,174, 5, 2, 0,175, 5, 2, 0,176, 5, 2, 0,177, 5, 4, 0,178, 5, 4, 0,179, 5,198, 0, 8, 0, 4, 0,180, 5,
- 4, 0,181, 5, 4, 0,182, 5, 4, 0,183, 5, 4, 0,184, 5, 4, 0,185, 5, 4, 0, 54, 0, 4, 0,125, 2,199, 0, 3, 0,
- 7, 0,186, 5, 2, 0,187, 5, 2, 0, 19, 0,200, 0, 2, 0, 7, 0,188, 5, 4, 0, 19, 0, 46, 0, 38, 0, 27, 0, 31, 0,
- 39, 0, 75, 0, 32, 0,189, 5,176, 0,190, 5, 46, 0,191, 5, 47, 0,238, 0, 12, 0,192, 5,177, 0,193, 5, 32, 0,194, 5,
- 7, 0,195, 5, 7, 0,196, 5, 7, 0,197, 5, 7, 0,198, 5, 4, 0,111, 3, 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1,
-201, 0,199, 5,197, 0,200, 5,202, 0,201, 5,183, 0,182, 0,181, 0,202, 5, 12, 0,100, 0, 12, 0,203, 5, 12, 0,204, 5,
-203, 0,205, 5, 2, 0,206, 5, 2, 0,207, 5, 2, 0,247, 0, 2, 0,208, 5, 4, 0,209, 5, 4, 0,210, 5, 12, 0,211, 5,
-186, 0, 76, 5,187, 0,212, 5,199, 0,213, 5,162, 0, 93, 3,200, 0,214, 5,204, 0, 6, 0, 47, 0,238, 0, 45, 0, 57, 1,
- 7, 0, 89, 2, 7, 0, 90, 2, 7, 0,106, 0, 7, 0,215, 5,205, 0, 35, 0, 7, 0,216, 5, 7, 0,217, 5, 7, 0,218, 5,
- 7, 0,219, 5, 7, 0,220, 5, 7, 0,221, 5, 7, 0,222, 5, 7, 0,223, 5, 7, 0,224, 5, 7, 0, 76, 1, 7, 0,225, 5,
- 7, 0,226, 5, 7, 0,227, 5, 7, 0,228, 5, 7, 0,171, 0, 2, 0,229, 5, 2, 0,230, 5, 2, 0, 70, 2, 2, 0,231, 5,
- 2, 0,232, 5, 2, 0,233, 5, 2, 0,234, 5, 7, 0,235, 5, 71, 0,236, 5,162, 0, 93, 3,205, 0,237, 5,206, 0,238, 5,
-207, 0,239, 5,208, 0,240, 5,209, 0,241, 5,210, 0,242, 5, 7, 0,243, 5, 2, 0,244, 5, 2, 0,245, 5, 4, 0,238, 1,
-211, 0, 54, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 7, 0,224, 5,
- 7, 0, 76, 1, 7, 0, 43, 0, 4, 0,250, 5, 2, 0,233, 5, 2, 0,234, 5, 32, 0,189, 5, 32, 0,251, 5,204, 0,252, 5,
-211, 0,237, 5, 0, 0,253, 5, 4, 0,111, 3, 4, 0,254, 5, 2, 0,255, 5, 2, 0, 70, 0, 2, 0, 0, 6, 2, 0, 1, 6,
- 2, 0,238, 1, 2, 0, 19, 0, 2, 0, 28, 2, 2, 0, 2, 6, 7, 0,112, 0, 7, 0, 3, 6, 7, 0, 4, 6, 7, 0, 5, 6,
- 7, 0, 6, 6, 7, 0, 7, 6, 7, 0,171, 0, 7, 0,195, 5, 2, 0, 8, 6, 2, 0,121, 1, 2, 0, 9, 6, 2, 0, 10, 6,
- 2, 0, 11, 6, 2, 0, 12, 6, 2, 0, 13, 6, 2, 0, 14, 6, 2, 0, 15, 6, 2, 0, 16, 6, 4, 0, 17, 6, 12, 0, 18, 6,
- 2, 0, 19, 6, 2, 0,139, 2, 2, 0, 20, 6, 0, 0, 21, 6, 0, 0, 22, 6, 9, 0, 23, 6,162, 0, 93, 3,213, 0, 25, 0,
- 24, 0, 36, 0, 24, 0, 64, 0, 23, 0, 24, 6, 23, 0, 25, 6, 23, 0, 26, 6, 7, 0, 27, 6, 7, 0, 28, 6, 7, 0, 29, 6,
- 7, 0, 30, 6, 2, 0, 31, 6, 2, 0, 32, 6, 2, 0, 33, 6, 2, 0, 34, 6, 2, 0, 35, 6, 2, 0, 19, 0, 2, 0, 36, 6,
- 2, 0, 37, 6, 2, 0, 38, 6, 2, 0, 39, 6, 2, 0, 40, 6, 2, 0, 1, 6, 7, 0, 41, 6, 7, 0, 42, 6, 4, 0, 43, 6,
- 4, 0, 44, 6,212, 0, 6, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,
-214, 0, 8, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,215, 0, 45, 6,
- 46, 0,134, 0,216, 0, 14, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,
-213, 0, 46, 6,217, 0, 47, 6, 12, 0, 48, 6, 2, 0, 69, 1, 2, 0, 49, 6, 4, 0, 19, 0, 7, 0, 50, 6, 4, 0, 1, 6,
-218, 0, 20, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,206, 0,238, 5,
-213, 0, 46, 6, 2, 0, 51, 6, 2, 0, 52, 6, 2, 0, 53, 6, 2, 0, 54, 6, 2, 0, 36, 6, 2, 0, 55, 6, 0, 0, 19, 0,
- 0, 0,136, 1, 9, 0, 65, 2, 4, 0, 56, 6, 4, 0, 57, 6, 27, 0, 58, 6,219, 0, 16, 0,212, 0, 0, 0,212, 0, 1, 0,
- 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,213, 0, 46, 6, 7, 0, 89, 2, 7, 0, 90, 2, 2, 0, 51, 6,
- 2, 0, 59, 6, 2, 0, 60, 6, 2, 0, 61, 6, 4, 0, 19, 0, 7, 0, 62, 6,162, 0, 93, 3,220, 0, 16, 0, 0, 0, 63, 6,
- 0, 0, 64, 6, 0, 0, 65, 6, 0, 0, 66, 6, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 67, 6, 2, 0, 68, 6, 2, 0,181, 1,
- 2, 0, 69, 6, 4, 0, 70, 6, 4, 0, 71, 6, 2, 0, 72, 6, 2, 0, 73, 6, 0, 0, 74, 6, 0, 0, 75, 6,221, 0, 16, 0,
-212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 4, 0, 37, 0,220, 0, 76, 6,222, 0, 77, 6, 12, 0, 78, 6,
- 12, 0, 79, 6,223, 0, 80, 6,210, 0, 81, 6,224, 0, 82, 6, 2, 0, 83, 6, 2, 0, 84, 6, 2, 0, 85, 6, 2, 0, 70, 0,
-225, 0, 17, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,213, 0, 46, 6,
- 12, 0, 86, 6,226, 0, 87, 6, 0, 0, 88, 6,227, 0, 89, 6, 4, 0, 90, 6, 4, 0, 91, 6, 2, 0, 19, 0, 2, 0, 92, 6,
- 2, 0, 93, 6, 2, 0, 37, 0,228, 0, 29, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5,
- 2, 0,249, 5, 47, 0,229, 2, 45, 0, 57, 1, 63, 0, 94, 6, 2, 0,133, 0, 2, 0, 95, 6, 2, 0, 70, 0, 2, 0, 96, 6,
- 4, 0, 19, 0, 2, 0, 97, 6, 2, 0, 98, 6, 2, 0, 99, 6, 2, 0,238, 1, 0, 0,100, 6, 0, 0,101, 6, 0, 0,102, 6,
- 0, 0, 1, 6, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0, 62, 6, 7, 0,121, 1, 7, 0,103, 6, 7, 0,104, 6,162, 0, 93, 3,
-229, 0, 11, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 2, 0, 49, 6,
- 2, 0, 19, 0, 4, 0, 37, 0,217, 0, 47, 6,213, 0, 46, 6,230, 0, 27, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5,
- 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 42, 0,105, 6, 4, 0,106, 6, 4, 0,107, 6, 2, 0, 90, 0, 2, 0,133, 0,
- 2, 0,108, 6, 0, 0,109, 6, 0, 0,110, 6, 4, 0,111, 6, 4, 0,112, 6, 4, 0,113, 6, 4, 0,114, 6, 2, 0,115, 6,
- 2, 0,116, 6, 7, 0,117, 6, 23, 0,118, 6, 23, 0,119, 6, 4, 0,120, 6, 4, 0,121, 6, 0, 0,122, 6, 0, 0,123, 6,
-231, 0, 10, 0, 27, 0, 31, 0, 9, 0,124, 6, 9, 0,125, 6, 9, 0,126, 6, 9, 0,127, 6, 9, 0,128, 6, 4, 0, 90, 0,
- 4, 0,129, 6, 0, 0,130, 6, 0, 0,131, 6,232, 0, 10, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5,
- 7, 0,248, 5,231, 0,132, 6, 2, 0, 90, 0, 2, 0,133, 0, 4, 0, 43, 0, 9, 0,133, 6,233, 0, 8, 0,212, 0, 0, 0,
-212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5,213, 0, 46, 6, 4, 0, 19, 0, 4, 0,134, 6,234, 0, 23, 0,
-212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,213, 0, 46, 6, 27, 0,135, 6,
- 27, 0, 81, 0, 2, 0, 19, 0, 2, 0,133, 0, 7, 0,136, 6, 9, 0,137, 6, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0,138, 6,
- 7, 0,139, 6, 60, 0, 58, 1, 60, 0,140, 6, 4, 0,141, 6, 2, 0,142, 6, 2, 0, 37, 0,162, 0, 93, 3,235, 0, 10, 0,
-212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 2, 0, 19, 0, 2, 0,120, 3,
- 4, 0, 37, 0,162, 0, 93, 3,236, 0, 42, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5,
- 2, 0,249, 5,213, 0, 46, 6,222, 0, 77, 6, 0, 0, 63, 6, 0, 0, 64, 6, 0, 0, 65, 6, 2, 0, 17, 0, 2, 0, 73, 6,
- 2, 0, 19, 0, 2, 0, 67, 6, 9, 0,137, 6, 4, 0, 70, 6, 4, 0,143, 6, 4, 0,144, 6, 4, 0, 71, 6, 23, 0,145, 6,
- 23, 0,146, 6, 7, 0,147, 6, 7, 0,148, 6, 7, 0,149, 6, 7, 0,136, 6, 2, 0,150, 6, 2, 0,237, 0, 2, 0,181, 1,
- 2, 0, 69, 6, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0,151, 6, 2, 0,152, 6, 9, 0,153, 6, 9, 0,154, 6, 9, 0,155, 6,
- 9, 0,156, 6, 9, 0,157, 6, 2, 0,158, 6, 0, 0, 75, 6, 57, 0,159, 6,237, 0, 7, 0,237, 0, 0, 0,237, 0, 1, 0,
- 4, 0,160, 6, 4, 0, 23, 0, 0, 0, 84, 0, 4, 0,161, 6, 4, 0, 17, 0,238, 0, 14, 0,212, 0, 0, 0,212, 0, 1, 0,
- 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 4, 0, 17, 0, 4, 0,162, 6, 4, 0, 19, 0, 4, 0,108, 6,
- 12, 0,163, 6, 12, 0,164, 6, 0, 0,165, 6, 0, 0,166, 6,239, 0, 5, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5,
- 4, 0,247, 5, 4, 0, 37, 0,240, 0, 7, 0,240, 0, 0, 0,240, 0, 1, 0, 0, 0,167, 6, 2, 0,168, 6, 2, 0,169, 6,
- 2, 0,170, 6, 2, 0, 37, 0,241, 0, 12, 0, 2, 0,169, 6, 2, 0,171, 6, 2, 0,172, 6, 0, 0,190, 2, 2, 0,173, 6,
- 2, 0,174, 6, 2, 0,175, 6, 2, 0,176, 6, 2, 0,177, 6, 2, 0, 36, 6, 7, 0,178, 6, 7, 0,179, 6,242, 0, 18, 0,
-242, 0, 0, 0,242, 0, 1, 0, 0, 0,233, 3,241, 0,180, 6,241, 0,181, 6,241, 0,182, 6,241, 0,183, 6, 7, 0,184, 6,
- 2, 0,185, 6, 2, 0,186, 6, 2, 0,187, 6, 2, 0,188, 6, 2, 0,189, 6, 2, 0,190, 6, 2, 0,191, 6, 2, 0,192, 6,
- 2, 0,193, 6, 2, 0,194, 6,243, 0, 10, 0, 0, 0,195, 6, 0, 0,196, 6, 0, 0,197, 6, 0, 0,198, 6, 0, 0,199, 6,
- 0, 0,200, 6, 2, 0,201, 6, 2, 0,202, 6, 2, 0,203, 6, 2, 0, 37, 0,244, 0, 8, 0, 0, 0,204, 6, 0, 0,205, 6,
- 0, 0,206, 6, 0, 0,207, 6, 0, 0,208, 6, 0, 0,209, 6, 7, 0,215, 5, 7, 0, 37, 0,245, 0, 18, 0,243, 0,210, 6,
-243, 0,211, 6,243, 0,212, 6,243, 0,213, 6,243, 0,214, 6,243, 0,215, 6,243, 0,216, 6,243, 0,217, 6,243, 0,218, 6,
-243, 0,219, 6,243, 0,220, 6,243, 0,221, 6,243, 0,222, 6,243, 0,223, 6,243, 0,224, 6,243, 0,225, 6,244, 0,226, 6,
- 0, 0,227, 6,246, 0, 71, 0, 0, 0,228, 6, 0, 0,229, 6, 0, 0,199, 6, 0, 0,230, 6, 0, 0,231, 6, 0, 0,232, 6,
- 0, 0,233, 6, 0, 0,234, 6, 0, 0,235, 6, 0, 0,236, 6, 0, 0,237, 6, 0, 0,238, 6, 0, 0,239, 6, 0, 0,240, 6,
- 0, 0,241, 6, 0, 0,242, 6, 0, 0,243, 6, 0, 0,244, 6, 0, 0,245, 6, 0, 0,246, 6, 0, 0,247, 6, 0, 0,248, 6,
- 0, 0,249, 6, 0, 0,250, 6, 0, 0,251, 6, 0, 0,252, 6, 0, 0,253, 6, 0, 0,254, 6, 0, 0,255, 6, 0, 0, 0, 7,
- 0, 0, 1, 7, 0, 0, 2, 7, 0, 0, 3, 7, 0, 0, 4, 7, 0, 0, 5, 7, 0, 0, 6, 7, 0, 0, 7, 7, 0, 0, 8, 7,
- 0, 0, 9, 7, 0, 0, 10, 7, 0, 0, 11, 7, 0, 0, 12, 7, 0, 0, 13, 7, 0, 0, 14, 7, 0, 0, 15, 7, 0, 0, 16, 7,
- 0, 0, 17, 7, 0, 0, 18, 7, 0, 0, 19, 7, 0, 0, 20, 7, 0, 0, 21, 7, 0, 0, 22, 7, 0, 0, 23, 7, 0, 0, 24, 7,
- 0, 0, 25, 7, 0, 0, 26, 7, 0, 0, 27, 7, 0, 0, 28, 7, 0, 0, 29, 7, 0, 0, 30, 7, 0, 0, 31, 7, 0, 0, 32, 7,
- 0, 0, 33, 7, 0, 0, 34, 7, 0, 0, 35, 7, 0, 0, 36, 7, 0, 0, 37, 7, 0, 0, 38, 7, 0, 0, 39, 7, 0, 0, 40, 7,
- 0, 0, 92, 0,247, 0, 5, 0, 0, 0, 41, 7, 0, 0,252, 6, 0, 0,254, 6, 2, 0, 19, 0, 2, 0, 37, 0,248, 0, 24, 0,
-248, 0, 0, 0,248, 0, 1, 0, 0, 0, 20, 0,245, 0, 42, 7,246, 0, 43, 7,246, 0, 44, 7,246, 0, 45, 7,246, 0, 46, 7,
-246, 0, 47, 7,246, 0, 48, 7,246, 0, 49, 7,246, 0, 50, 7,246, 0, 51, 7,246, 0, 52, 7,246, 0, 53, 7,246, 0, 54, 7,
-246, 0, 55, 7,246, 0, 56, 7,246, 0, 57, 7,246, 0, 58, 7,246, 0, 59, 7,247, 0, 60, 7, 4, 0, 61, 7, 4, 0, 37, 0,
-249, 0, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,138, 2, 7, 0, 62, 7, 7, 0, 43, 2,250, 0, 73, 0, 4, 0, 19, 0,
- 4, 0, 63, 7, 4, 0, 64, 7, 0, 0, 65, 7, 0, 0, 66, 7, 0, 0, 67, 7, 0, 0, 68, 7, 0, 0, 69, 7, 0, 0, 70, 7,
- 0, 0, 71, 7, 0, 0, 72, 7, 0, 0, 73, 7, 2, 0, 74, 7, 2, 0, 37, 0, 4, 0, 75, 7, 4, 0, 76, 7, 4, 0, 77, 7,
- 4, 0, 78, 7, 2, 0, 79, 7, 2, 0, 80, 7, 4, 0, 81, 7, 4, 0, 82, 7, 4, 0, 83, 7, 4, 0, 84, 7, 4, 0, 85, 7,
- 4, 0,163, 6, 4, 0, 86, 7, 2, 0, 87, 7, 2, 0, 88, 7, 2, 0, 89, 7, 2, 0, 90, 7, 12, 0, 91, 7, 12, 0, 92, 7,
- 12, 0, 93, 7, 12, 0, 94, 7, 0, 0, 95, 7, 2, 0, 96, 7, 2, 0, 97, 7, 2, 0, 98, 7, 2, 0, 99, 7, 2, 0,100, 7,
- 2, 0,101, 7, 2, 0,102, 7, 2, 0,103, 7,249, 0,104, 7, 2, 0,105, 7, 2, 0,106, 7, 2, 0,107, 7, 2, 0,108, 7,
- 2, 0,109, 7, 2, 0,110, 7, 2, 0,111, 7, 2, 0,112, 7, 4, 0,113, 7, 4, 0,114, 7, 2, 0,115, 7, 2, 0,116, 7,
- 2, 0,117, 7, 2, 0,118, 7, 2, 0,119, 7, 2, 0,120, 7, 2, 0,121, 7, 2, 0,122, 7, 2, 0,123, 7, 2, 0,124, 7,
- 2, 0,125, 7, 2, 0,126, 7, 0, 0,127, 7, 0, 0,128, 7, 7, 0,129, 7, 2, 0,140, 5, 2, 0,141, 5, 55, 0,130, 7,
-215, 0, 21, 0, 27, 0, 31, 0, 12, 0,131, 7, 12, 0,132, 7, 12, 0,133, 7, 12, 0,246, 5, 46, 0,134, 0, 46, 0,134, 7,
- 2, 0,135, 7, 2, 0,136, 7, 2, 0,137, 7, 2, 0,138, 7, 2, 0,139, 7, 2, 0,140, 7, 2, 0,141, 7, 2, 0, 37, 0,
- 2, 0,142, 7, 2, 0,143, 7, 4, 0, 70, 0,210, 0,144, 7, 9, 0,145, 7, 2, 0,146, 7,251, 0, 5, 0,251, 0, 0, 0,
-251, 0, 1, 0,251, 0,147, 7, 13, 0,148, 7, 4, 0, 19, 0,252, 0, 7, 0,252, 0, 0, 0,252, 0, 1, 0,251, 0,149, 7,
-251, 0,150, 7, 2, 0,248, 4, 2, 0, 19, 0, 4, 0, 37, 0,253, 0, 25, 0,253, 0, 0, 0,253, 0, 1, 0,254, 0,151, 7,
-255, 0, 82, 6, 0, 0,152, 7, 0, 0,153, 7, 0, 0,154, 7, 2, 0,155, 7, 2, 0,156, 7, 2, 0,157, 7, 2, 0,158, 7,
- 2, 0,159, 7, 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,160, 7, 2, 0,161, 7, 2, 0,162, 7, 4, 0,163, 7,253, 0,164, 7,
- 9, 0,165, 7, 4, 0,166, 7, 4, 0,167, 7, 4, 0,168, 7, 4, 0,169, 7, 0, 0,170, 7, 0, 1, 22, 0, 0, 1, 0, 0,
- 0, 1, 1, 0,251, 0,149, 7,251, 0,150, 7,251, 0,171, 7,251, 0,172, 7,215, 0,173, 7, 23, 0, 52, 0, 0, 0,247, 5,
- 0, 0,174, 7, 2, 0, 37, 6, 2, 0, 38, 6, 2, 0,175, 7, 2, 0, 37, 0, 2, 0,138, 7, 2, 0,161, 6, 2, 0, 19, 0,
- 1, 1,151, 7, 12, 0,176, 7, 12, 0,246, 5, 12, 0,177, 7, 12, 0,178, 7, 2, 1, 21, 0, 2, 1, 0, 0, 2, 1, 1, 0,
-213, 0, 46, 6, 23, 0,179, 7, 23, 0,180, 7, 2, 0, 37, 6, 2, 0, 38, 6, 2, 0,181, 7, 2, 0,182, 7, 2, 0,183, 7,
- 2, 0, 19, 0, 7, 0, 85, 2, 2, 0,137, 7, 2, 0,141, 7, 4, 0, 43, 0, 3, 1,151, 7, 12, 0,184, 7, 12, 0,185, 7,
- 12, 0,177, 7, 0, 0,186, 7, 9, 0,187, 7, 4, 1, 12, 0, 0, 0,188, 7, 2, 0,189, 7, 2, 0,190, 7, 2, 0,191, 7,
- 2, 0,192, 7, 2, 0,235, 4, 2, 0,230, 4,215, 0,193, 7, 46, 0,194, 7, 4, 0,195, 7, 4, 0,196, 7, 0, 0, 35, 0,
- 5, 1, 1, 0, 0, 0,197, 7, 6, 1, 8, 0, 57, 0,198, 7, 57, 0,199, 7, 6, 1,200, 7, 6, 1,201, 7, 6, 1,202, 7,
- 2, 0,129, 0, 2, 0, 19, 0, 4, 0,203, 7, 7, 1, 4, 0, 4, 0,106, 6, 4, 0,204, 7, 4, 0,111, 6, 4, 0,205, 7,
- 8, 1, 2, 0, 4, 0,206, 7, 4, 0,207, 7, 9, 1, 7, 0, 7, 0,208, 7, 7, 0,209, 7, 7, 0,210, 7, 4, 0, 19, 0,
- 4, 0, 37, 0, 7, 0,114, 4, 7, 0,211, 7, 10, 1, 6, 0, 0, 0,212, 7, 0, 0, 65, 6, 49, 0,137, 0, 2, 0,106, 0,
- 2, 0,234, 4, 4, 0, 37, 0, 11, 1, 21, 0, 11, 1, 0, 0, 11, 1, 1, 0, 4, 0, 57, 0, 4, 0, 23, 0, 4, 0, 28, 0,
- 4, 0,213, 7, 4, 0,214, 7, 4, 0,215, 7, 5, 1,216, 7, 0, 0,212, 7, 4, 0,217, 7, 4, 0,218, 7, 10, 1, 87, 3,
- 7, 1,219, 7, 8, 1,220, 7, 9, 1,221, 7, 6, 1,222, 7, 6, 1,223, 7, 6, 1,224, 7, 57, 0,225, 7, 57, 0,226, 7,
- 12, 1, 12, 0, 0, 0, 5, 2, 9, 0,223, 0, 0, 0,224, 0, 4, 0,227, 0, 4, 0,235, 0, 9, 0,228, 0, 7, 0,230, 0,
- 7, 0,231, 0, 9, 0,227, 7, 9, 0,228, 7, 9, 0,232, 0, 9, 0,234, 0, 13, 1, 43, 0, 13, 1, 0, 0, 13, 1, 1, 0,
- 9, 0,229, 7, 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 19, 0, 4, 0, 17, 0, 4, 0, 23, 0, 4, 0, 88, 0, 4, 0,230, 7,
- 4, 0,231, 7, 4, 0,214, 7, 4, 0,215, 7, 4, 0,232, 7, 4, 0,246, 0, 4, 0,233, 7, 4, 0,234, 7, 7, 0,106, 5,
- 7, 0,235, 7, 4, 0,126, 0, 4, 0,236, 7, 11, 1,237, 7, 36, 0, 80, 0, 46, 0,134, 0, 49, 0,137, 0, 7, 0,238, 7,
- 7, 0,239, 7, 12, 1, 59, 1, 13, 1,240, 7, 13, 1,241, 7, 13, 1,242, 7, 12, 0,243, 7, 14, 1,244, 7, 15, 1,245, 7,
- 7, 0,246, 7, 7, 0,247, 7, 4, 0,248, 7, 7, 0,249, 7, 9, 0,250, 7, 4, 0,251, 7, 4, 0,252, 7, 4, 0,253, 7,
- 7, 0,254, 7, 16, 1, 4, 0, 16, 1, 0, 0, 16, 1, 1, 0, 12, 0,255, 7, 13, 1, 0, 8,201, 0, 6, 0, 12, 0, 1, 8,
- 12, 0,243, 7, 12, 0, 2, 8, 13, 1, 3, 8, 0, 0, 4, 8, 0, 0, 5, 8, 17, 1, 4, 0, 7, 0, 6, 8, 7, 0,109, 0,
- 2, 0, 7, 8, 2, 0, 8, 8, 18, 1, 6, 0, 7, 0, 9, 8, 7, 0, 10, 8, 7, 0, 11, 8, 7, 0, 12, 8, 4, 0, 13, 8,
- 4, 0, 14, 8, 19, 1, 12, 0, 7, 0, 15, 8, 7, 0, 16, 8, 7, 0, 17, 8, 7, 0, 18, 8, 7, 0, 19, 8, 7, 0, 20, 8,
- 7, 0, 21, 8, 7, 0, 22, 8, 7, 0, 23, 8, 7, 0, 24, 8, 4, 0,233, 2, 4, 0, 25, 8, 20, 1, 2, 0, 7, 0, 74, 5,
- 7, 0, 37, 0, 21, 1, 5, 0, 7, 0, 26, 8, 7, 0, 27, 8, 4, 0, 90, 0, 4, 0,191, 2, 4, 0, 28, 8, 22, 1, 6, 0,
- 22, 1, 0, 0, 22, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 29, 8, 2, 0, 57, 0, 23, 1, 8, 0, 23, 1, 0, 0,
- 23, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 29, 8, 2, 0, 57, 0, 7, 0, 23, 0, 7, 0,126, 0, 24, 1, 45, 0,
- 24, 1, 0, 0, 24, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 29, 8, 2, 0,242, 0, 2, 0, 28, 4, 2, 0, 30, 8,
- 7, 0, 31, 8, 7, 0, 89, 0, 7, 0,246, 2, 4, 0, 32, 8, 4, 0, 82, 0, 4, 0,193, 2, 7, 0, 33, 8, 7, 0, 34, 8,
- 7, 0, 35, 8, 7, 0, 36, 8, 7, 0, 37, 8, 7, 0, 38, 8, 7, 0,243, 2, 7, 0, 56, 1, 7, 0, 39, 8, 7, 0, 40, 8,
- 7, 0, 37, 0, 7, 0, 41, 8, 7, 0, 42, 8, 7, 0, 43, 8, 2, 0, 44, 8, 2, 0, 45, 8, 2, 0, 46, 8, 2, 0, 47, 8,
- 2, 0, 48, 8, 2, 0, 49, 8, 2, 0, 50, 8, 2, 0, 51, 8, 2, 0, 28, 2, 2, 0, 52, 8, 2, 0, 25, 2, 2, 0, 53, 8,
- 0, 0, 54, 8, 0, 0, 55, 8, 7, 0,240, 0, 25, 1, 56, 8, 67, 0,241, 1, 26, 1, 16, 0, 26, 1, 0, 0, 26, 1, 1, 0,
- 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 29, 8, 2, 0,242, 0, 7, 0,238, 2, 7, 0,239, 2, 7, 0,240, 2, 7, 0, 74, 2,
- 7, 0,241, 2, 7, 0,242, 2, 7, 0, 57, 8, 7, 0,243, 2, 7, 0,245, 2, 7, 0,246, 2,227, 0, 5, 0, 2, 0, 17, 0,
- 2, 0,203, 7, 2, 0, 19, 0, 2, 0, 58, 8, 27, 0,135, 6,226, 0, 3, 0, 4, 0, 69, 0, 4, 0, 59, 8,227, 0, 2, 0,
- 27, 1, 7, 0, 27, 1, 0, 0, 27, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, 9, 0, 60, 8,
- 28, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0, 61, 8, 4, 0, 62, 8, 4, 0, 37, 0, 29, 1, 4, 0, 2, 0, 17, 0,
- 2, 0, 19, 0, 2, 0, 43, 0, 2, 0, 70, 0, 30, 1, 4, 0, 0, 0, 20, 0, 66, 0, 63, 8, 7, 0, 76, 1, 7, 0, 37, 0,
- 31, 1, 6, 0, 2, 0, 64, 8, 2, 0, 65, 8, 2, 0, 17, 0, 2, 0, 66, 8, 0, 0, 67, 8, 0, 0, 68, 8, 32, 1, 5, 0,
- 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0, 69, 8, 0, 0, 70, 8, 33, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0,
- 0, 0, 20, 0, 34, 1, 4, 0, 2, 0, 71, 8, 2, 0, 72, 8, 2, 0, 19, 0, 2, 0, 37, 0, 35, 1, 6, 0, 0, 0, 20, 0,
- 0, 0, 73, 8, 2, 0, 74, 8, 2, 0,243, 2, 2, 0, 69, 1, 2, 0, 70, 0, 36, 1, 5, 0, 0, 0, 20, 0, 7, 0,109, 0,
- 7, 0,116, 4, 2, 0, 19, 0, 2, 0,205, 2, 37, 1, 3, 0, 0, 0, 20, 0, 4, 0,193, 2, 4, 0, 71, 8, 38, 1, 7, 0,
- 0, 0, 20, 0, 7, 0,116, 4, 0, 0, 75, 8, 0, 0, 76, 8, 2, 0, 69, 1, 2, 0, 43, 0, 4, 0, 77, 8, 39, 1, 4, 0,
- 0, 0, 78, 8, 0, 0, 79, 8, 4, 0, 17, 0, 7, 0,209, 2, 40, 1, 3, 0, 32, 0, 80, 8, 0, 0, 81, 8, 0, 0, 82, 8,
- 41, 1, 18, 0, 41, 1, 0, 0, 41, 1, 1, 0, 2, 0, 17, 0, 2, 0, 83, 8, 2, 0, 19, 0, 2, 0, 84, 8, 2, 0, 85, 8,
- 2, 0, 86, 8, 2, 0, 43, 0, 2, 0, 70, 0, 0, 0, 20, 0, 9, 0, 2, 0, 42, 1, 87, 8, 32, 0, 45, 0, 2, 0, 90, 5,
- 2, 0,246, 7, 2, 0, 88, 8, 2, 0, 37, 0, 43, 1, 11, 0, 0, 0, 20, 0, 0, 0, 17, 0, 0, 0, 89, 8, 2, 0, 19, 0,
- 2, 0,205, 2, 2, 0, 90, 8, 4, 0, 91, 8, 4, 0, 92, 8, 4, 0, 93, 8, 4, 0, 94, 8, 4, 0, 95, 8, 44, 1, 1, 0,
- 0, 0, 96, 8, 45, 1, 4, 0, 42, 0,105, 6, 0, 0, 97, 8, 4, 0, 69, 1, 4, 0, 19, 0, 42, 1, 18, 0, 42, 1, 0, 0,
- 42, 1, 1, 0, 42, 1, 98, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 99, 8, 2, 0, 86, 8, 2, 0, 83, 8, 2, 0,100, 8,
- 2, 0, 70, 0, 2, 0,238, 1, 0, 0, 20, 0, 9, 0, 2, 0, 46, 1, 87, 8, 41, 1,101, 8, 2, 0, 15, 0, 2, 0,102, 8,
- 4, 0,103, 8, 47, 1, 3, 0, 4, 0,219, 2, 4, 0, 37, 0, 32, 0, 45, 0, 48, 1, 12, 0,160, 0,104, 8, 2, 0, 17, 0,
- 2, 0, 19, 0, 4, 0, 31, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,105, 8, 2, 0,106, 8, 2, 0,107, 8, 2, 0,108, 8,
- 2, 0,109, 8, 7, 0,110, 8, 49, 1, 13, 0, 2, 0, 19, 0, 2, 0,111, 8, 4, 0, 31, 8, 4, 0, 89, 0, 2, 0,112, 8,
- 7, 0,242, 3, 7, 0,113, 8, 14, 1,244, 7, 50, 1,114, 8, 2, 0, 17, 0, 2, 0,115, 8, 2, 0,116, 8, 2, 0,117, 8,
- 51, 1, 11, 0, 4, 0,219, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 45, 0, 80, 0,118, 8, 0, 0, 20, 0, 7, 0,119, 8,
- 7, 0,120, 8, 7, 0,128, 3, 2, 0,121, 8, 2, 0,122, 8, 52, 1, 5, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 37, 0,
- 46, 0,134, 0, 32, 0,189, 5, 53, 1, 5, 0, 4, 0, 19, 0, 4, 0, 17, 0, 0, 0, 20, 0, 0, 0, 69, 8, 32, 0, 45, 0,
- 54, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0, 83, 8, 2, 0,129, 3, 7, 0,123, 8, 7, 0,124, 8, 7, 0, 64, 1,
- 7, 0, 65, 1, 7, 0,100, 3, 7, 0,103, 3, 7, 0,125, 8, 7, 0,126, 8, 32, 0,127, 8, 55, 1, 10, 0, 2, 0, 19, 0,
- 2, 0, 17, 0, 4, 0, 31, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,105, 8, 2, 0, 43, 0, 2, 0, 64, 0, 2, 0,128, 8,
- 2, 0,129, 8, 56, 1, 8, 0, 32, 0, 45, 0, 7, 0,240, 2, 7, 0,130, 8, 7, 0,131, 8, 7, 0,235, 2, 2, 0, 19, 0,
- 2, 0,205, 2, 7, 0,132, 8, 57, 1, 12, 0, 2, 0, 17, 0, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0,243, 2, 2, 0,219, 2,
- 2, 0,133, 8, 4, 0, 37, 0, 7, 0,134, 8, 7, 0,135, 8, 7, 0,136, 8, 7, 0,137, 8, 0, 0,138, 8, 58, 1, 9, 0,
- 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 31, 8, 4, 0, 89, 0, 0, 0, 20, 0, 2, 0,136, 1, 2, 0, 64, 0, 2, 0,128, 8,
- 2, 0,129, 8, 59, 1, 7, 0, 4, 0,193, 2, 4, 0,139, 8, 4, 0,140, 8, 4, 0,141, 8, 7, 0,142, 8, 7, 0,143, 8,
- 0, 0, 75, 8, 60, 1, 7, 0, 0, 0,144, 8, 32, 0,145, 8, 0, 0, 81, 8, 2, 0,146, 8, 2, 0, 43, 0, 4, 0, 70, 0,
- 0, 0, 82, 8, 61, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 31, 8, 4, 0, 89, 0, 0, 0,147, 8, 0, 0,148, 8,
- 62, 1, 1, 0, 4, 0, 19, 0, 63, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,149, 8, 7, 0,150, 8,
- 42, 0,105, 6, 64, 1, 4, 0, 0, 0, 70, 2, 2, 0, 19, 0, 4, 0, 17, 0, 32, 0, 45, 0, 65, 1, 2, 0, 4, 0, 17, 0,
- 4, 0, 26, 6, 66, 1, 6, 0, 0, 0, 78, 8, 0, 0, 79, 8, 4, 0, 17, 0, 7, 0, 36, 2, 32, 0, 50, 3, 32, 0,151, 8,
- 46, 1, 10, 0, 46, 1, 0, 0, 46, 1, 1, 0, 46, 1, 98, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 83, 8, 2, 0,152, 8,
- 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 45, 0, 67, 1, 10, 0, 7, 0,128, 3, 7, 0,153, 8, 7, 0,154, 8, 7, 0,155, 8,
- 7, 0,156, 8, 4, 0, 19, 0, 7, 0,133, 8, 7, 0,157, 8, 7, 0,158, 8, 7, 0, 37, 0, 15, 1, 12, 0, 15, 1, 0, 0,
- 15, 1, 1, 0, 14, 1,159, 8, 9, 0,223, 0, 4, 0,171, 3, 4, 0,229, 3, 4, 0,230, 3, 4, 0,160, 8, 4, 0,161, 8,
- 4, 0,162, 8, 7, 0,242, 3, 7, 0, 37, 0, 50, 1, 8, 0, 7, 0,163, 8, 7, 0,164, 8, 7, 0,165, 8, 7, 0,166, 8,
- 7, 0,167, 8, 7, 0,168, 8, 7, 0,169, 8, 7, 0,170, 8, 14, 1, 15, 0, 27, 0, 31, 0, 0, 0,222, 0, 43, 0,149, 0,
- 9, 0,223, 0, 43, 0,171, 8, 36, 0, 80, 0, 7, 0,242, 3, 7, 0,172, 8, 7, 0,113, 8, 7, 0,163, 8, 7, 0,164, 8,
- 7, 0,173, 8, 4, 0, 90, 0, 4, 0,162, 8, 9, 0,174, 8, 68, 1, 15, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5,
- 4, 0,247, 5, 7, 0,248, 5, 0, 1,175, 8,213, 0, 46, 6, 14, 1,244, 7, 2, 0, 69, 1, 2, 0,111, 8, 2, 0, 89, 2,
- 2, 0, 90, 2, 2, 0, 19, 0, 2, 0, 98, 6, 4, 0, 70, 0, 69, 1, 6, 0, 69, 1, 0, 0, 69, 1, 1, 0, 32, 0, 45, 0,
- 9, 0,176, 8, 4, 0,247, 0, 4, 0, 37, 0, 67, 0, 4, 0, 27, 0, 31, 0, 12, 0,177, 8, 4, 0,131, 0, 7, 0,178, 8,
- 70, 1, 26, 0, 70, 1, 0, 0, 70, 1, 1, 0, 26, 0,179, 8, 70, 1, 38, 0, 12, 0,180, 8, 0, 0, 20, 0, 7, 0,181, 8,
- 7, 0,182, 8, 7, 0,183, 8, 7, 0,184, 8, 4, 0, 19, 0, 7, 0,185, 8, 7, 0,186, 8, 7, 0,187, 8, 7, 0, 76, 1,
- 7, 0, 36, 2, 7, 0,188, 8, 7, 0,191, 2, 7, 0,189, 8, 7, 0,190, 8, 7, 0,191, 8, 7, 0,192, 8, 7, 0,193, 8,
- 7, 0,172, 0, 2, 0,131, 0, 2, 0,121, 5, 71, 1, 24, 0, 27, 0, 31, 0, 39, 0, 75, 0, 12, 0,194, 8, 12, 0,195, 8,
- 12, 0,196, 8, 70, 1,197, 8, 9, 0,198, 8, 9, 0,199, 8, 4, 0, 19, 0, 4, 0,255, 5, 2, 0,247, 2, 2, 0, 56, 6,
- 2, 0,131, 0, 2, 0,200, 8, 2, 0,201, 8, 2, 0,202, 8, 2, 0,203, 8, 2, 0,204, 8, 4, 0,205, 8, 4, 0,206, 8,
- 4, 0,207, 8, 4, 0,208, 8, 4, 0,209, 8, 4, 0,210, 8, 72, 1, 2, 0, 7, 0,152, 2, 4, 0, 19, 0, 73, 1, 5, 0,
- 72, 1,211, 8, 4, 0,191, 2, 4, 0,212, 8, 4, 0,213, 8, 4, 0, 19, 0, 74, 1, 6, 0, 4, 0, 37, 0, 4, 0, 56, 6,
- 4, 0,207, 8, 4, 0,208, 8, 4, 0,209, 8, 4, 0,210, 8, 75, 1, 42, 0, 75, 1, 0, 0, 75, 1, 1, 0, 26, 0,179, 8,
- 12, 0,155, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0,214, 8, 2, 0,215, 8, 2, 0,216, 8, 2, 0,114, 3, 2, 0,217, 8,
- 4, 0, 72, 2, 4, 0,207, 8, 4, 0,208, 8, 70, 1,218, 8, 75, 1, 38, 0, 75, 1,219, 8, 12, 0,220, 8, 9, 0,221, 8,
- 9, 0,222, 8, 9, 0,223, 8, 7, 0, 64, 1, 7, 0,172, 0, 7, 0,224, 8, 7, 0, 15, 2, 7, 0,105, 3, 7, 0,107, 3,
- 2, 0,137, 3, 2, 0, 37, 0, 7, 0,225, 8, 7, 0,226, 8, 7, 0,110, 3, 7, 0,227, 8, 7, 0,228, 8, 7, 0,229, 8,
- 7, 0,230, 8, 7, 0,231, 8, 7, 0,232, 8, 7, 0,233, 8, 7, 0,234, 8, 7, 0, 65, 2, 32, 0,235, 8,161, 0, 11, 0,
- 12, 0,236, 8, 2, 0, 19, 0, 2, 0,237, 8, 7, 0,101, 2, 7, 0,238, 8, 7, 0,239, 8, 12, 0,240, 8, 4, 0,241, 8,
- 4, 0,242, 8, 9, 0,243, 8, 9, 0,244, 8, 76, 1, 1, 0, 4, 0,242, 8, 77, 1, 12, 0, 4, 0,242, 8, 7, 0, 95, 8,
- 2, 0,245, 8, 2, 0,246, 8, 7, 0,247, 8, 7, 0,248, 8, 2, 0,249, 8, 2, 0, 19, 0, 7, 0,250, 8, 7, 0,251, 8,
- 7, 0,252, 8, 7, 0,253, 8, 78, 1, 7, 0, 78, 1, 0, 0, 78, 1, 1, 0, 12, 0,254, 8, 4, 0, 19, 0, 4, 0,255, 8,
- 0, 0,233, 3,247, 0, 0, 9,160, 0, 7, 0, 27, 0, 31, 0, 12, 0, 1, 9, 12, 0,236, 8, 12, 0, 2, 9, 12, 0,100, 0,
- 4, 0, 19, 0, 4, 0, 3, 9,217, 0, 4, 0, 27, 0,159, 8, 12, 0,236, 8, 4, 0, 4, 9, 4, 0, 19, 0, 79, 1, 17, 0,
-212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,213, 0, 46, 6,160, 0, 90, 3,
-217, 0, 5, 9, 0, 0, 69, 1, 0, 0, 49, 6, 2, 0, 19, 0, 2, 0, 6, 9, 2, 0, 99, 6, 2, 0, 98, 6, 2, 0, 7, 9,
- 7, 0, 8, 9, 80, 1, 8, 0, 80, 1, 0, 0, 80, 1, 1, 0, 78, 1, 9, 9, 36, 0, 80, 0, 12, 0, 94, 3, 4, 0, 19, 0,
- 0, 0, 20, 0, 4, 0, 10, 9, 81, 1, 5, 0, 81, 1, 0, 0, 81, 1, 1, 0, 36, 0, 80, 0, 2, 0, 19, 0, 0, 0, 11, 9,
- 82, 1, 14, 0, 82, 1, 0, 0, 82, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 12, 9, 0, 0, 13, 9,
- 0, 0, 11, 9, 7, 0, 14, 9, 7, 0, 15, 9, 4, 0, 37, 0, 36, 0, 80, 0, 7, 0, 16, 9, 7, 0, 17, 9, 83, 1, 9, 0,
- 83, 1, 0, 0, 83, 1, 1, 0, 32, 0, 18, 9, 0, 0,250, 2, 7, 0, 19, 9, 2, 0, 20, 9, 2, 0, 19, 0, 2, 0, 17, 0,
- 2, 0, 21, 9, 84, 1, 7, 0, 42, 0,105, 6, 26, 0,179, 8, 4, 0, 19, 0, 4, 0, 22, 9, 12, 0, 23, 9, 32, 0, 18, 9,
- 0, 0,250, 2, 85, 1, 15, 0, 32, 0, 18, 9, 2, 0, 24, 9, 2, 0, 19, 0, 2, 0, 25, 9, 2, 0, 26, 9, 0, 0,250, 2,
- 32, 0, 27, 9, 0, 0, 28, 9, 7, 0, 29, 9, 7, 0, 36, 2, 7, 0, 30, 9, 7, 0, 31, 9, 2, 0, 17, 0, 2, 0, 69, 1,
- 7, 0, 76, 1, 86, 1, 6, 0, 32, 0, 18, 9, 7, 0,211, 8, 2, 0, 32, 9, 2, 0, 33, 9, 2, 0, 19, 0, 2, 0, 34, 9,
- 87, 1, 6, 0, 32, 0, 18, 9, 4, 0, 35, 9, 4, 0, 36, 9, 4, 0, 90, 0, 4, 0, 37, 0, 0, 0,250, 2, 88, 1, 4, 0,
- 32, 0, 18, 9, 4, 0, 19, 0, 4, 0, 35, 9, 0, 0,250, 2, 89, 1, 4, 0, 32, 0, 18, 9, 4, 0, 19, 0, 4, 0, 35, 9,
- 0, 0,250, 2, 90, 1, 10, 0, 32, 0, 18, 9, 4, 0, 37, 9, 7, 0,125, 0, 4, 0, 19, 0, 2, 0,101, 6, 2, 0, 38, 9,
- 2, 0, 43, 0, 2, 0, 70, 0, 7, 0, 39, 9, 0, 0,250, 2, 91, 1, 4, 0, 32, 0, 18, 9, 4, 0, 19, 0, 4, 0, 35, 9,
- 0, 0,250, 2, 92, 1, 10, 0, 32, 0, 18, 9, 2, 0, 17, 0, 2, 0, 36, 4, 4, 0, 88, 0, 4, 0, 89, 0, 7, 0,130, 8,
- 7, 0,131, 8, 4, 0, 37, 0,160, 0,104, 8, 0, 0,250, 2, 93, 1, 4, 0, 32, 0, 18, 9, 4, 0,115, 3, 4, 0, 40, 9,
- 0, 0,250, 2, 94, 1, 4, 0, 32, 0, 18, 9, 4, 0,115, 3, 4, 0, 37, 0, 0, 0,250, 2, 95, 1, 5, 0, 32, 0, 18, 9,
- 7, 0,125, 0, 4, 0, 41, 9, 4, 0,115, 3, 4, 0,116, 3, 96, 1, 6, 0, 32, 0, 18, 9, 4, 0, 42, 9, 4, 0, 43, 9,
- 7, 0, 44, 9, 7, 0, 45, 9, 0, 0,250, 2, 97, 1, 16, 0, 32, 0, 18, 9, 32, 0,219, 8, 4, 0, 17, 0, 7, 0, 46, 9,
- 7, 0, 47, 9, 7, 0, 48, 9, 7, 0, 49, 9, 7, 0, 50, 9, 7, 0, 51, 9, 7, 0, 52, 9, 7, 0, 53, 9, 7, 0, 54, 9,
- 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0, 70, 0, 98, 1, 3, 0, 32, 0, 18, 9, 4, 0, 19, 0, 4, 0, 28, 2,
- 99, 1, 5, 0, 32, 0, 18, 9, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0, 55, 9, 0, 0,250, 2,100, 1, 10, 0, 32, 0, 18, 9,
- 0, 0,250, 2, 2, 0, 56, 9, 2, 0, 57, 9, 0, 0, 58, 9, 0, 0, 59, 9, 7, 0, 60, 9, 7, 0, 61, 9, 7, 0, 62, 9,
- 7, 0, 63, 9,101, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0, 64, 9, 7, 0, 65, 9,
- 2, 0, 19, 0, 2, 0, 28, 2,102, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0, 64, 9,
- 7, 0, 65, 9, 2, 0, 19, 0, 2, 0, 28, 2,103, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0,
- 7, 0, 64, 9, 7, 0, 65, 9, 2, 0, 19, 0, 2, 0, 28, 2,104, 1, 7, 0, 32, 0, 18, 9, 0, 0,250, 2, 7, 0, 76, 1,
- 7, 0, 85, 1, 2, 0, 19, 0, 2, 0, 69, 1, 4, 0, 37, 0,105, 1, 5, 0, 32, 0, 50, 3, 7, 0, 76, 1, 2, 0, 54, 3,
- 0, 0, 56, 3, 0, 0, 66, 9,106, 1, 10, 0,106, 1, 0, 0,106, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 67, 9,
- 7, 0, 20, 1, 7, 0, 21, 1, 2, 0,254, 8, 2, 0, 68, 9, 32, 0, 45, 0,107, 1, 22, 0,107, 1, 0, 0,107, 1, 1, 0,
- 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 69, 9, 2, 0, 70, 9, 36, 0, 80, 0,160, 0,104, 8, 32, 0,164, 0, 7, 0, 88, 0,
- 7, 0, 89, 0, 7, 0, 71, 9, 7, 0, 72, 9, 7, 0, 73, 9, 7, 0, 74, 9, 7, 0,236, 2, 7, 0, 75, 9, 7, 0,106, 8,
- 7, 0, 76, 9, 0, 0, 77, 9, 0, 0, 78, 9, 12, 0, 96, 3,108, 1, 8, 0, 7, 0, 43, 2, 7, 0,130, 8, 7, 0,131, 8,
- 9, 0, 2, 0, 2, 0, 79, 9, 2, 0, 80, 9, 2, 0, 81, 9, 2, 0, 82, 9,109, 1, 18, 0,109, 1, 0, 0,109, 1, 1, 0,
-109, 1, 83, 9, 0, 0, 20, 0,108, 1, 84, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 85, 9, 2, 0, 86, 9, 2, 0, 87, 9,
- 2, 0, 88, 9, 4, 0, 43, 0, 7, 0, 89, 9, 7, 0, 90, 9, 4, 0, 91, 9, 4, 0, 92, 9,109, 1, 93, 9,110, 1, 94, 9,
-111, 1, 33, 0,111, 1, 0, 0,111, 1, 1, 0,111, 1, 95, 9, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,213, 7,
- 2, 0,246, 7, 2, 0, 96, 9, 2, 0,133, 0, 2, 0, 86, 9, 2, 0,203, 7, 12, 0, 99, 8, 12, 0, 97, 9, 27, 0,135, 6,
- 9, 0, 98, 9, 7, 0, 89, 9, 7, 0, 90, 9, 7, 0, 74, 2, 7, 0, 99, 9, 2, 0,100, 9, 2, 0,101, 9, 7, 0,102, 9,
- 7, 0,103, 9, 2, 0,104, 9, 2, 0,105, 9, 9, 0,106, 9, 24, 0,107, 9, 24, 0,108, 9, 24, 0,109, 9,112, 1,150, 0,
-113, 1,110, 9,114, 1,111, 9,110, 1, 8, 0,110, 1, 0, 0,110, 1, 1, 0,111, 1,112, 9,111, 1,113, 9,109, 1,114, 9,
-109, 1, 93, 9, 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 23, 0, 27, 0, 31, 0, 39, 0, 75, 0,162, 0, 93, 3, 12, 0,115, 9,
- 12, 0,116, 9,108, 1,117, 9, 12, 0,118, 9, 4, 0, 17, 0, 4, 0,119, 9, 4, 0,120, 9, 4, 0,121, 9, 4, 0, 19, 0,
- 4, 0, 37, 0, 12, 0,122, 9,114, 1,123, 9,109, 1,124, 9,109, 1,125, 9, 9, 0,126, 9, 9, 0,127, 9, 4, 0,128, 9,
- 9, 0,129, 9, 9, 0,130, 9, 9, 0,131, 9,115, 1, 6, 0, 4, 0,124, 0, 4, 0,126, 0, 4, 0,203, 7, 0, 0,132, 9,
- 0, 0,133, 9, 2, 0, 37, 0,116, 1, 16, 0, 2, 0,157, 7, 2, 0,158, 7, 2, 0,134, 9, 2, 0,154, 8, 2, 0,135, 9,
- 2, 0, 68, 0, 7, 0,235, 2, 7, 0,136, 9, 7, 0,137, 9, 2, 0, 91, 1, 0, 0,138, 9, 0, 0,105, 5, 2, 0,139, 9,
- 2, 0, 37, 0, 4, 0,140, 9, 4, 0,141, 9,117, 1, 9, 0, 7, 0,142, 9, 7, 0,143, 9, 7, 0,173, 8, 7, 0,109, 0,
- 7, 0,144, 9, 7, 0, 62, 6, 2, 0,145, 9, 0, 0,146, 9, 0, 0, 37, 0,118, 1, 4, 0, 7, 0,147, 9, 7, 0,148, 9,
- 2, 0,145, 9, 2, 0, 37, 0,119, 1, 3, 0, 7, 0,149, 9, 7, 0,150, 9, 7, 0, 15, 0,120, 1, 7, 0, 0, 0, 5, 2,
- 2, 0,232, 4, 2, 0,233, 4, 2, 0,234, 4, 2, 0,180, 4, 4, 0,126, 0, 4, 0, 34, 4,121, 1, 7, 0, 7, 0,151, 9,
- 7, 0,152, 9, 7, 0,153, 9, 7, 0, 85, 2, 7, 0,154, 9, 7, 0,155, 9, 7, 0,156, 9,122, 1, 4, 0, 2, 0,157, 9,
- 2, 0,158, 9, 2, 0,159, 9, 2, 0,160, 9,123, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,124, 1, 2, 0, 0, 0,166, 0,
- 0, 0,161, 9,125, 1, 1, 0, 0, 0, 20, 0,126, 1, 10, 0, 0, 0,162, 9, 0, 0,163, 9, 0, 0, 55, 6, 0, 0,164, 9,
- 2, 0,134, 9, 2, 0,165, 9, 7, 0,166, 9, 7, 0,167, 9, 7, 0,168, 9, 7, 0, 75, 9,127, 1, 2, 0, 9, 0,169, 9,
- 9, 0,170, 9,128, 1, 11, 0, 0, 0,234, 4, 0, 0, 17, 0, 0, 0,145, 9, 0, 0,109, 0, 0, 0,171, 9, 0, 0,106, 0,
- 0, 0, 70, 2, 7, 0,172, 9, 7, 0,173, 9, 7, 0,174, 9, 7, 0,175, 9,129, 1, 8, 0, 7, 0, 64, 8, 7, 0,125, 0,
- 7, 0,105, 5, 7, 0,157, 2, 7, 0,176, 9, 7, 0,236, 0, 7, 0,177, 9, 4, 0, 17, 0,130, 1, 4, 0, 2, 0,178, 9,
- 2, 0,179, 9, 2, 0,180, 9, 2, 0, 37, 0,131, 1, 1, 0, 0, 0, 20, 0,132, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0,
- 2, 0, 19, 0, 2, 0,181, 9,133, 1, 10, 0, 2, 0,222, 3, 2, 0, 19, 0, 7, 0,116, 4, 7, 0,182, 9, 7, 0,183, 9,
- 7, 0,184, 9, 7, 0,185, 9,132, 1,186, 9,132, 1,187, 9,132, 1,188, 9, 63, 0, 9, 0, 4, 0, 19, 0, 4, 0, 64, 0,
- 24, 0,189, 9, 24, 0,190, 9,133, 1,191, 9, 7, 0,192, 9, 7, 0,193, 9, 7, 0,194, 9, 7, 0,195, 9,134, 1, 4, 0,
- 47, 0,229, 2, 7, 0,196, 9, 7, 0,170, 1, 7, 0, 37, 0,190, 0, 17, 0, 27, 0, 31, 0,134, 1,197, 9, 63, 0,186, 9,
- 51, 0,134, 1, 2, 0, 19, 0, 2, 0,215, 5, 4, 0,106, 0, 7, 0,198, 9, 7, 0, 82, 2, 4, 0,199, 9, 7, 0,200, 9,
- 7, 0,201, 9, 7, 0,202, 9, 7, 0,170, 1, 2, 0,104, 1, 0, 0,203, 9, 0, 0,194, 6,135, 1, 10, 0, 4, 0, 17, 0,
- 4, 0,125, 0, 4, 0, 19, 0, 4, 0,177, 3, 4, 0,204, 9, 4, 0,205, 9, 4, 0,206, 9, 0, 0, 92, 0, 0, 0, 20, 0,
- 9, 0, 2, 0, 91, 0, 6, 0,135, 1,207, 9, 4, 0,208, 9, 4, 0,209, 9, 4, 0,210, 9, 4, 0, 37, 0, 9, 0,211, 9,
-136, 1, 5, 0, 7, 0,152, 2, 7, 0,219, 2, 7, 0, 36, 2, 2, 0,128, 2, 2, 0, 37, 0,137, 1, 5, 0, 7, 0,152, 2,
- 7, 0,212, 9, 7, 0,213, 9, 7, 0,214, 9, 7, 0,219, 2,138, 1, 5, 0, 32, 0,215, 9,139, 1, 22, 0, 7, 0,188, 5,
- 7, 0,216, 9, 7, 0, 57, 0,140, 1, 7, 0, 4, 0,217, 9, 4, 0,218, 9, 4, 0,219, 9, 7, 0,220, 9, 7, 0,221, 9,
- 7, 0,222, 9, 7, 0, 57, 0,141, 1, 8, 0,141, 1, 0, 0,141, 1, 1, 0, 32, 0, 45, 0, 4, 0,255, 0, 2, 0, 19, 0,
- 2, 0, 69, 1, 7, 0,219, 2, 7, 0, 72, 8,142, 1, 6, 0,142, 1, 0, 0,142, 1, 1, 0, 32, 0, 45, 0, 2, 0,204, 2,
- 2, 0, 19, 0, 2, 0,223, 9,143, 1, 18, 0,137, 1,171, 3,137, 1,224, 9,136, 1,225, 9,137, 1, 56, 8,138, 1,226, 9,
- 4, 0, 82, 0, 7, 0,219, 2, 7, 0,246, 2, 7, 0,227, 9, 4, 0,217, 9, 4, 0,228, 9, 7, 0,221, 9, 7, 0,222, 9,
- 7, 0,106, 0, 2, 0, 19, 0, 2, 0,229, 9, 2, 0,230, 9, 2, 0,231, 9,144, 1,110, 0, 27, 0, 31, 0, 39, 0, 75, 0,
-145, 1,232, 9,169, 0, 56, 4, 4, 0, 19, 0, 2, 0, 17, 0, 2, 0, 56, 9, 2, 0,233, 9, 2, 0,234, 9, 2, 0,137, 3,
- 2, 0,235, 9, 2, 0,236, 9, 2, 0,237, 9, 2, 0,238, 9, 2, 0,239, 9, 2, 0,240, 9, 2, 0,241, 9, 2, 0,221, 4,
- 2, 0, 98, 5, 2, 0,242, 9, 2, 0,243, 9, 2, 0,244, 9, 2, 0,245, 9, 2, 0,246, 9, 2, 0, 25, 2, 2, 0, 49, 8,
- 2, 0, 25, 8, 2, 0,247, 9, 2, 0,248, 9, 2, 0,187, 3, 2, 0,188, 3, 2, 0,249, 9, 2, 0,250, 9, 2, 0,251, 9,
- 2, 0,252, 9, 7, 0,253, 9, 7, 0,254, 9, 7, 0,255, 9, 2, 0, 0, 10, 2, 0, 1, 10, 7, 0, 2, 10, 7, 0, 3, 10,
- 7, 0, 4, 10, 7, 0, 31, 8, 7, 0, 89, 0, 7, 0,246, 2, 7, 0, 37, 8, 7, 0, 5, 10, 7, 0, 6, 10, 7, 0, 7, 10,
- 4, 0, 32, 8, 4, 0, 30, 8, 4, 0, 8, 10, 7, 0, 33, 8, 7, 0, 34, 8, 7, 0, 35, 8, 7, 0, 9, 10, 7, 0, 10, 10,
- 7, 0, 11, 10, 7, 0, 12, 10, 7, 0, 13, 10, 7, 0, 57, 0, 7, 0, 14, 10, 7, 0, 15, 10, 7, 0, 16, 10, 7, 0, 17, 10,
- 7, 0,128, 3, 7, 0,106, 0, 7, 0, 18, 10, 7, 0, 19, 10, 7, 0, 20, 10, 7, 0, 21, 10, 7, 0, 22, 10, 7, 0, 23, 10,
- 7, 0, 24, 10, 4, 0, 25, 10, 4, 0, 26, 10, 7, 0, 27, 10, 7, 0, 28, 10, 7, 0, 29, 10, 7, 0, 30, 10, 7, 0, 31, 10,
- 7, 0,210, 0, 7, 0, 32, 10, 7, 0,213, 3, 7, 0,211, 3, 7, 0,212, 3, 7, 0, 33, 10, 7, 0, 34, 10, 7, 0, 35, 10,
- 7, 0, 36, 10, 7, 0, 37, 10, 7, 0, 38, 10, 7, 0, 39, 10, 7, 0, 40, 10, 7, 0, 41, 10, 7, 0, 42, 10, 7, 0, 43, 10,
- 7, 0, 44, 10, 7, 0, 45, 10, 4, 0, 46, 10, 4, 0, 47, 10, 67, 0,160, 3, 12, 0, 48, 10, 67, 0, 49, 10, 32, 0, 50, 10,
- 32, 0, 51, 10, 36, 0, 80, 0,164, 0, 61, 1,164, 0, 52, 10,148, 0, 44, 0,148, 0, 0, 0,148, 0, 1, 0,144, 1, 53, 10,
-143, 1, 54, 10,140, 1,219, 8,171, 0,238, 3, 9, 0,239, 3,146, 1, 55, 10,146, 1, 56, 10, 12, 0, 57, 10, 12, 0, 58, 10,
-133, 0, 59, 10,141, 0, 60, 10,141, 0, 61, 10, 32, 0, 62, 10, 32, 0, 63, 10, 32, 0, 38, 0, 12, 0, 23, 9, 0, 0, 20, 0,
- 7, 0,240, 0, 7, 0, 17, 3, 7, 0, 64, 10, 4, 0,193, 2, 4, 0, 57, 0, 4, 0, 19, 0, 4, 0, 32, 8, 4, 0, 65, 10,
- 4, 0, 66, 10, 4, 0, 67, 10, 2, 0,247, 0, 2, 0, 68, 10, 2, 0, 69, 10, 2, 0, 70, 10, 0, 0, 71, 10, 2, 0, 72, 10,
- 2, 0, 73, 10, 2, 0, 74, 10, 9, 0, 75, 10,137, 0, 55, 4, 12, 0, 4, 3, 12, 0, 76, 10,147, 1, 77, 10,148, 1, 78, 10,
- 7, 0, 79, 10,135, 0, 35, 0,149, 1,174, 8, 7, 0, 25, 4, 7, 0, 80, 10, 7, 0, 81, 10, 7, 0,119, 4, 7, 0, 82, 10,
- 7, 0,138, 3, 7, 0,128, 3, 7, 0, 83, 10, 7, 0, 84, 2, 7, 0, 84, 10, 7, 0, 85, 10, 7, 0, 86, 10, 7, 0, 87, 10,
- 7, 0, 88, 10, 7, 0, 89, 10, 7, 0, 26, 4, 7, 0, 90, 10, 7, 0, 91, 10, 7, 0, 92, 10, 7, 0, 27, 4, 7, 0, 23, 4,
- 7, 0, 24, 4, 7, 0, 93, 10, 4, 0, 94, 10, 4, 0, 90, 0, 4, 0, 95, 10, 4, 0, 96, 10, 2, 0, 97, 10, 2, 0, 98, 10,
- 2, 0, 99, 10, 2, 0,100, 10, 2, 0,101, 10, 2, 0,102, 10,169, 0, 56, 4,136, 0, 8, 0,149, 1,103, 10, 7, 0,104, 10,
- 7, 0,105, 10, 7, 0,242, 1, 7, 0,106, 10, 4, 0, 90, 0, 2, 0,107, 10, 2, 0,108, 10,150, 1, 4, 0, 7, 0, 5, 0,
- 7, 0, 6, 0, 7, 0, 7, 0, 7, 0,109, 10,151, 1, 6, 0,151, 1, 0, 0,151, 1, 1, 0,150, 1,211, 8, 4, 0,253, 0,
- 2, 0,110, 10, 2, 0, 19, 0,152, 1, 5, 0,152, 1, 0, 0,152, 1, 1, 0, 12, 0,111, 10, 4, 0,112, 10, 4, 0, 19, 0,
-153, 1, 9, 0,153, 1, 0, 0,153, 1, 1, 0, 12, 0,124, 0,152, 1,113, 10, 4, 0, 19, 0, 2, 0,110, 10, 2, 0,114, 10,
- 7, 0, 91, 0, 0, 0,115, 10,162, 0, 6, 0, 27, 0, 31, 0, 12, 0,250, 4, 4, 0, 19, 0, 2, 0,116, 10, 2, 0,117, 10,
- 9, 0,118, 10,154, 1, 7, 0,154, 1, 0, 0,154, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, 0, 0,119, 10,
- 0, 0,120, 10,155, 1, 5, 0, 12, 0,121, 10, 4, 0,122, 10, 4, 0,123, 10, 4, 0, 19, 0, 4, 0, 37, 0,156, 1, 18, 0,
- 27, 0, 31, 0,157, 1,124, 10,157, 1,125, 10, 12, 0,126, 10, 4, 0,127, 10, 2, 0,128, 10, 2, 0, 37, 0, 12, 0,129, 10,
- 12, 0,130, 10,155, 1,131, 10, 12, 0,132, 10, 12, 0,133, 10, 12, 0,134, 10,158, 1,135, 10, 4, 0,136, 10, 4, 0, 70, 0,
- 12, 0,137, 10,210, 0,138, 10,157, 1, 30, 0,157, 1, 0, 0,157, 1, 1, 0, 9, 0,139, 10, 4, 0,136, 7, 4, 0, 37, 0,
-215, 0, 45, 6,215, 0,140, 10, 0, 0,141, 10, 2, 0,142, 10, 2, 0,143, 10, 2, 0,157, 7, 2, 0,158, 7, 2, 0,144, 10,
- 2, 0,145, 10, 2, 0,177, 3, 2, 0,161, 6, 2, 0,146, 10, 2, 0,147, 10, 4, 0,238, 1,159, 1,148, 10,160, 1,149, 10,
-161, 1,150, 10, 4, 0,151, 10, 4, 0,152, 10, 9, 0,153, 10, 12, 0,130, 10, 12, 0,177, 7, 12, 0,154, 10, 12, 0,155, 10,
- 12, 0,156, 10,162, 1, 16, 0,162, 1, 0, 0,162, 1, 1, 0, 0, 0,157, 10, 26, 0, 30, 0, 2, 0,158, 10, 2, 0, 17, 0,
- 2, 0, 15, 0, 2, 0,159, 10, 2, 0,160, 10, 2, 0,161, 10, 2, 0,162, 10, 2, 0,163, 10, 2, 0, 19, 0, 2, 0,164, 10,
- 2, 0, 70, 2,163, 1,165, 10,164, 1, 10, 0,164, 1, 0, 0,164, 1, 1, 0, 12, 0,166, 10, 0, 0,157, 10, 2, 0,167, 10,
- 2, 0,168, 10, 2, 0, 19, 0, 2, 0, 37, 0, 4, 0,169, 10, 9, 0,170, 10,158, 1, 7, 0,158, 1, 0, 0,158, 1, 1, 0,
- 0, 0,157, 10, 0, 0,171, 10, 12, 0, 94, 7, 4, 0,172, 10, 4, 0, 19, 0,223, 0, 12, 0,223, 0, 0, 0,223, 0, 1, 0,
- 0, 0,157, 10, 26, 0, 30, 0,165, 1,151, 7, 9, 0,173, 10,163, 1,165, 10,155, 1,174, 10, 12, 0,175, 10,223, 0,176, 10,
- 2, 0, 19, 0, 2, 0,136, 1,159, 1, 23, 0,159, 1, 0, 0,159, 1, 1, 0, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 5, 0,
- 2, 0, 6, 0, 2, 0,177, 10, 2, 0,178, 10, 2, 0,179, 10, 2, 0,180, 10, 0, 0,181, 10, 0, 0, 37, 0, 2, 0,159, 10,
- 2, 0,160, 10, 2, 0,161, 10, 2, 0,162, 10, 2, 0,163, 10, 2, 0, 43, 0, 0, 0,182, 10, 2, 0,183, 10, 2, 0,184, 10,
- 4, 0, 70, 0, 9, 0,173, 10,166, 1, 8, 0,166, 1, 0, 0,166, 1, 1, 0, 9, 0, 2, 0, 9, 0,185, 10, 0, 0,233, 3,
- 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,186, 10,167, 1, 5, 0, 7, 0,187, 10, 4, 0,188, 10, 4, 0,189, 10, 4, 0, 69, 1,
- 4, 0, 19, 0,168, 1, 6, 0, 7, 0,190, 10, 7, 0,191, 10, 7, 0,192, 10, 7, 0,193, 10, 4, 0, 17, 0, 4, 0, 19, 0,
-169, 1, 5, 0, 7, 0,130, 8, 7, 0,131, 8, 7, 0,219, 2, 2, 0, 39, 2, 2, 0, 40, 2,170, 1, 5, 0,169, 1, 2, 0,
- 4, 0, 54, 0, 7, 0,194, 10, 7, 0,130, 8, 7, 0,131, 8,171, 1, 4, 0, 2, 0,195, 10, 2, 0,196, 10, 2, 0,197, 10,
- 2, 0,198, 10,172, 1, 2, 0, 42, 0,132, 6, 26, 0,179, 8,173, 1, 3, 0, 24, 0,199, 10, 4, 0, 19, 0, 4, 0, 37, 0,
-174, 1, 6, 0, 7, 0,106, 0, 7, 0,221, 2, 7, 0,200, 10, 7, 0, 37, 0, 2, 0,246, 0, 2, 0,201, 10,175, 1, 9, 0,
-175, 1, 0, 0,175, 1, 1, 0, 27, 0,135, 6, 0, 0,202, 10, 4, 0,203, 10, 4, 0,204, 10, 4, 0, 90, 0, 4, 0, 37, 0,
- 0, 0,233, 3,176, 1, 6, 0, 12, 0, 23, 9, 0, 0,205, 10, 7, 0, 61, 0, 7, 0,186, 10, 4, 0, 17, 0, 4, 0, 19, 0,
-177, 1, 3, 0, 7, 0,206, 10, 4, 0, 19, 0, 4, 0, 37, 0,178, 1, 15, 0,178, 1, 0, 0,178, 1, 1, 0, 78, 1, 9, 9,
-176, 1, 62, 0, 12, 0, 96, 3, 35, 0, 50, 0,177, 1,207, 10, 4, 0, 54, 0, 7, 0, 61, 0, 2, 0, 19, 0, 2, 0, 15, 1,
- 4, 0,203, 10, 0, 0,202, 10, 4, 0,208, 10, 7, 0,209, 10,179, 1, 2, 0, 0, 0,210, 10, 0, 0,211, 10,180, 1, 4, 0,
-180, 1, 0, 0,180, 1, 1, 0,160, 0, 50, 3, 12, 0,212, 10,181, 1, 24, 0,181, 1, 0, 0,181, 1, 1, 0, 12, 0,213, 10,
-160, 0,104, 8,180, 1,214, 10, 12, 0,215, 10, 12, 0, 96, 3, 0, 0,233, 3, 7, 0,186, 10, 7, 0,216, 10, 7, 0, 88, 0,
- 7, 0, 89, 0, 7, 0, 71, 9, 7, 0, 72, 9, 7, 0,236, 2, 7, 0, 75, 9, 7, 0,106, 8, 7, 0, 76, 9, 2, 0,217, 10,
- 2, 0,218, 10, 2, 0, 43, 0, 2, 0, 17, 0, 4, 0, 19, 0, 4, 0, 70, 0,182, 1, 6, 0,182, 1, 0, 0,182, 1, 1, 0,
- 12, 0,213, 10, 4, 0, 19, 0, 4, 0,156, 2, 0, 0,233, 3,183, 1, 10, 0,183, 1, 0, 0,183, 1, 1, 0, 27, 0,135, 6,
- 0, 0,219, 10, 4, 0,204, 10, 4, 0,220, 10, 0, 0,202, 10, 4, 0,203, 10, 2, 0, 19, 0, 2, 0,221, 10,184, 1, 7, 0,
-184, 1, 0, 0,184, 1, 1, 0, 12, 0,222, 10, 0, 0,233, 3, 2, 0, 19, 0, 2, 0,223, 10, 4, 0,224, 10,185, 1, 5, 0,
-185, 1, 0, 0,185, 1, 1, 0, 0, 0,202, 10, 4, 0,203, 10, 7, 0,209, 2, 39, 0, 12, 0,160, 0, 90, 3,160, 0,225, 10,
-180, 1,214, 10, 12, 0,226, 10,181, 1,227, 10, 12, 0,228, 10, 12, 0,229, 10, 4, 0, 19, 0, 4, 0,247, 0, 2, 0,230, 10,
- 2, 0,231, 10, 7, 0,232, 10,186, 1, 2, 0, 27, 0, 31, 0, 39, 0, 75, 0,187, 1, 5, 0,187, 1, 0, 0,187, 1, 1, 0,
- 4, 0, 17, 0, 4, 0, 19, 0, 0, 0, 20, 0,188, 1, 6, 0,187, 1,233, 10, 32, 0, 45, 0, 4, 0,234, 10, 7, 0,235, 10,
- 4, 0,236, 10, 4, 0,254, 8,189, 1, 3, 0,187, 1,233, 10, 4, 0,234, 10, 7, 0,237, 10,190, 1, 8, 0,187, 1,233, 10,
- 32, 0, 45, 0, 7, 0, 64, 1, 7, 0,238, 10, 7, 0, 17, 3, 7, 0,173, 8, 4, 0,234, 10, 4, 0,239, 10,191, 1, 5, 0,
-187, 1,233, 10, 7, 0,240, 10, 7, 0,246, 7, 7, 0,242, 2, 7, 0, 57, 0,192, 1, 3, 0,187, 1,233, 10, 7, 0,173, 8,
- 7, 0,241, 10,139, 1, 4, 0, 7, 0,242, 10, 7, 0, 20, 10, 2, 0,243, 10, 2, 0, 69, 1,193, 1, 14, 0,193, 1, 0, 0,
-193, 1, 1, 0, 12, 0,244, 10, 12, 0,245, 10, 12, 0,246, 10, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,247, 10,
- 7, 0,248, 10, 4, 0,236, 10, 4, 0,254, 8, 7, 0,242, 3, 7, 0,244, 2,145, 1, 23, 0, 4, 0,234, 10, 4, 0,249, 10,
- 7, 0,250, 10, 7, 0, 57, 0, 7, 0,251, 10, 7, 0,240, 2, 7, 0,242, 10, 7, 0,252, 10, 7, 0,221, 2, 7, 0,253, 10,
- 7, 0,116, 4, 7, 0,254, 10, 7, 0,255, 10, 7, 0, 0, 11, 7, 0, 1, 11, 7, 0, 2, 11, 7, 0, 3, 11, 7, 0, 4, 11,
- 7, 0, 5, 11, 7, 0, 6, 11, 7, 0, 7, 11, 7, 0, 8, 11, 12, 0, 9, 11,121, 0, 34, 0,120, 0, 10, 11,194, 1, 11, 11,
- 67, 0, 12, 11, 67, 0, 49, 10, 67, 0, 13, 11,195, 1, 14, 11, 48, 0,165, 0, 48, 0, 15, 11, 48, 0, 16, 11, 7, 0, 17, 11,
- 7, 0, 18, 11, 7, 0, 19, 11, 7, 0, 20, 11, 7, 0, 21, 11, 7, 0, 10, 9, 7, 0, 22, 11, 7, 0,170, 1, 7, 0, 23, 11,
- 4, 0, 24, 11, 4, 0, 25, 11, 4, 0, 26, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0, 27, 11, 2, 0, 28, 11, 2, 0, 29, 11,
- 4, 0, 30, 11, 7, 0,221, 2, 4, 0, 31, 11, 7, 0, 32, 11, 4, 0, 33, 11,137, 0, 34, 11, 12, 0, 35, 11,169, 0, 56, 4,
-122, 0, 11, 0,120, 0, 10, 11,148, 0, 34, 3, 7, 0,137, 1, 7, 0, 10, 9, 7, 0, 36, 11, 7, 0, 37, 11, 2, 0, 38, 11,
- 2, 0, 39, 11, 2, 0, 40, 11, 2, 0, 17, 0, 4, 0, 37, 0,123, 0, 13, 0,120, 0, 10, 11,139, 0, 14, 3,141, 0, 16, 3,
- 7, 0,211, 8, 7, 0, 41, 11, 7, 0, 42, 11, 7, 0, 66, 1, 7, 0, 43, 11, 4, 0, 32, 9, 4, 0, 12, 3, 2, 0, 17, 0,
+ 48, 0, 0, 0,144, 0, 88, 0,104, 0,120, 0,152, 0,120, 1,224, 0,192, 0, 0, 0, 72, 0,168, 0, 0, 0, 16, 0, 0, 0,
+ 0, 0, 0, 0,224, 1, 40, 0,184, 0,152, 0, 40, 0, 64, 0, 24, 0, 88, 0, 64, 4, 64, 0, 24, 0, 16, 0, 96, 0, 88, 0,
+ 32, 0, 40, 1, 48, 0, 8, 0,112, 0, 88, 0, 56, 0, 64, 0,120, 1, 32, 0, 8, 0, 16, 0, 48, 2, 0, 0, 0, 0, 64, 0,
+ 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 1, 56, 0,152, 0, 72, 0,208, 0,248, 0, 32, 0, 0, 1,240, 0,208, 1,
+104, 0, 0, 0,152, 0, 0, 0, 40, 1, 16, 0, 16, 0,168, 0,224, 0,144, 2,120, 2, 64, 0,200, 0, 32, 1, 72, 0,208, 2,
+ 40, 0,136, 1, 40, 0, 24, 1, 32, 0,232, 0, 32, 0, 32, 0, 80, 2, 16, 1, 16, 0,216, 21, 56, 0,160, 11, 32, 0, 40, 0,
+ 88, 1, 0, 0, 0, 0,160, 0, 0, 0, 40, 1, 0, 0, 24, 1, 80, 0, 48, 0, 16, 0, 8, 0, 52, 0, 0, 1, 32, 1,200, 1,
+ 8, 1, 48, 1, 64, 0, 32, 0, 12, 0, 24, 0, 52, 0, 16, 0, 24, 0, 24, 0, 32, 0, 72, 1, 0, 0, 64, 0, 64, 0, 48, 0,
+ 8, 0, 48, 0, 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 72, 0, 72, 0, 96, 0,104, 0, 60, 0,128, 0,
+ 80, 0, 80, 0, 16, 0, 96, 0, 72, 0, 32, 0, 88, 0, 24, 0, 80, 0,112, 0, 84, 0, 32, 0, 96, 0, 56, 0, 56, 0,112, 0,
+140, 0, 4, 0, 24, 0, 16, 0, 8, 0, 88, 0, 40, 0,224, 0, 40, 0, 40, 1,200, 0, 16, 0, 24, 0, 24, 0, 0, 2, 4, 0,
+ 40, 0,120, 0, 8, 1, 88, 0, 56, 0, 88, 0,128, 0, 80, 0,120, 0, 24, 0, 56, 0, 48, 0, 48, 0, 72, 0, 48, 0, 72, 0,
+ 48, 0, 48, 0, 24, 0, 56, 0,104, 0, 16, 0,112, 0, 96, 0, 28, 0, 28, 0, 28, 0, 56, 0, 24, 0, 72, 0,168, 0, 40, 0,
+144, 0, 56, 0,232, 0, 0, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, 40, 0, 8, 0, 8, 0, 64, 0,
+ 32, 0, 24, 0, 16, 0, 24, 0, 32, 0, 8, 0, 32, 0, 12, 0, 56, 0, 24, 0, 72, 0, 24, 0, 56, 0, 56, 0, 20, 0, 64, 0,
+ 40, 0, 32, 0,192, 0, 8, 2,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 32, 0, 40, 0,192, 0, 40, 0, 32, 0, 8, 1,
+232, 0,168, 0, 72, 0, 0, 0, 0, 0,120, 0, 0, 0,120, 0, 0, 0,104, 0, 24, 0, 24, 0, 16, 0, 24, 0, 8, 0, 16, 0,
+ 24, 0, 20, 0, 24, 0,112, 0, 40, 1, 16, 0,104, 0, 0, 1, 40, 0,200, 0,104, 0,112, 0,104, 0, 32, 0, 80, 0, 56, 0,
+ 80, 0, 64, 0,104, 0, 72, 0, 64, 0,128, 0, 0, 0, 0, 0, 83, 84, 82, 67,140, 1, 0, 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, 6, 0,
+ 40, 0, 0, 0, 40, 0, 1, 0, 0, 0, 84, 0, 0, 0, 85, 0, 4, 0, 23, 0, 4, 0, 86, 0, 41, 0, 10, 0, 41, 0, 0, 0,
+ 41, 0, 1, 0, 4, 0, 87, 0, 4, 0, 88, 0, 4, 0, 89, 0, 4, 0, 43, 0, 4, 0, 14, 0, 4, 0, 90, 0, 0, 0, 91, 0,
+ 0, 0, 92, 0, 42, 0, 15, 0, 27, 0, 31, 0, 0, 0, 93, 0, 4, 0, 90, 0, 4, 0, 94, 0, 12, 0, 95, 0, 40, 0, 96, 0,
+ 40, 0, 97, 0, 4, 0, 98, 0, 4, 0, 99, 0, 12, 0,100, 0, 0, 0,101, 0, 4, 0,102, 0, 4, 0,103, 0, 9, 0,104, 0,
+ 8, 0,105, 0, 43, 0, 3, 0, 4, 0,106, 0, 4, 0,107, 0, 9, 0, 2, 0, 44, 0, 20, 0, 27, 0, 31, 0, 39, 0, 75, 0,
+ 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,108, 0, 7, 0,109, 0, 7, 0,110, 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, 2, 0,119, 0, 2, 0,120, 0, 7, 0,121, 0,
+ 36, 0, 80, 0, 32, 0,122, 0, 45, 0, 13, 0, 4, 0,123, 0, 4, 0,124, 0, 4, 0,125, 0, 4, 0,126, 0, 2, 0,127, 0,
+ 2, 0,128, 0, 2, 0, 19, 0, 2, 0,129, 0, 2, 0,130, 0, 2, 0,131, 0, 2, 0,132, 0, 2, 0,133, 0, 46, 0,134, 0,
+ 47, 0, 32, 0, 27, 0, 31, 0, 0, 0, 34, 0, 12, 0,135, 0, 48, 0,136, 0, 49, 0,137, 0, 50, 0,138, 0, 2, 0,129, 0,
+ 2, 0, 19, 0, 2, 0,139, 0, 2, 0, 17, 0, 2, 0, 37, 0, 2, 0, 43, 0, 4, 0,140, 0, 2, 0,141, 0, 2, 0,142, 0,
+ 2, 0,143, 0, 2, 0,144, 0, 2, 0,145, 0, 2, 0,146, 0, 4, 0,147, 0, 4, 0,148, 0, 43, 0,149, 0, 30, 0,150, 0,
+ 0, 0,151, 0, 7, 0,152, 0, 4, 0,153, 0, 2, 0,154, 0, 2, 0,155, 0, 2, 0,156, 0, 2, 0,157, 0, 7, 0,158, 0,
+ 7, 0,159, 0, 51, 0, 63, 0, 2, 0,160, 0, 2, 0,161, 0, 2, 0,162, 0, 2, 0,163, 0, 32, 0,164, 0, 52, 0,165, 0,
+ 0, 0,166, 0, 0, 0,167, 0, 0, 0,168, 0, 0, 0,169, 0, 0, 0,170, 0, 7, 0,171, 0, 7, 0,172, 0, 7, 0,173, 0,
+ 2, 0,174, 0, 2, 0,175, 0, 2, 0,176, 0, 2, 0,177, 0, 2, 0,178, 0, 2, 0,179, 0, 0, 0,180, 0, 0, 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, 7, 0,192, 0, 7, 0,193, 0, 7, 0,194, 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, 7, 0,202, 0, 7, 0,203, 0, 7, 0,204, 0,
+ 7, 0,205, 0, 7, 0,206, 0, 7, 0,207, 0, 7, 0,208, 0, 7, 0,209, 0, 7, 0,210, 0, 7, 0,211, 0, 7, 0,212, 0,
+ 7, 0,213, 0, 7, 0,214, 0, 7, 0,215, 0, 7, 0,216, 0, 7, 0,217, 0, 7, 0,218, 0, 7, 0,219, 0, 7, 0,220, 0,
+ 7, 0,221, 0, 53, 0, 15, 0, 0, 0,222, 0, 9, 0,223, 0, 0, 0,224, 0, 0, 0,225, 0, 4, 0,226, 0, 4, 0,227, 0,
+ 9, 0,228, 0, 7, 0,229, 0, 7, 0,230, 0, 7, 0,231, 0, 4, 0,232, 0, 9, 0,233, 0, 9, 0,234, 0, 4, 0,235, 0,
+ 4, 0, 37, 0, 54, 0, 6, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,236, 0, 7, 0, 67, 0, 4, 0, 64, 0,
+ 55, 0, 5, 0, 2, 0, 19, 0, 2, 0, 36, 0, 2, 0, 64, 0, 2, 0,237, 0, 54, 0,231, 0, 56, 0, 17, 0, 32, 0,164, 0,
+ 47, 0,238, 0, 57, 0,239, 0, 7, 0,240, 0, 7, 0,241, 0, 2, 0, 17, 0, 2, 0,242, 0, 7, 0,110, 0, 7, 0,111, 0,
+ 7, 0,243, 0, 4, 0,244, 0, 2, 0,245, 0, 2, 0,246, 0, 4, 0,129, 0, 4, 0,140, 0, 2, 0,247, 0, 2, 0,248, 0,
+ 58, 0, 22, 0, 2, 0, 19, 0, 2, 0,249, 0, 7, 0,250, 0, 7, 0,251, 0, 2, 0,139, 0, 2, 0,252, 0, 4, 0,253, 0,
+ 4, 0,254, 0, 32, 0,164, 0, 4, 0,255, 0, 2, 0, 0, 1, 2, 0, 1, 1, 9, 0, 2, 1, 7, 0, 3, 1, 7, 0, 4, 1,
+ 2, 0, 5, 1, 2, 0, 6, 1, 2, 0, 7, 1, 2, 0, 8, 1, 7, 0, 9, 1, 7, 0, 10, 1, 55, 0, 11, 1, 59, 0, 11, 0,
+ 4, 0, 12, 1, 4, 0, 13, 1, 2, 0, 14, 1, 2, 0, 19, 0, 2, 0, 15, 1, 2, 0, 37, 0, 32, 0,164, 0, 7, 0, 16, 1,
+ 4, 0, 17, 1, 0, 0, 18, 1, 7, 0, 19, 1, 52, 0, 61, 0, 27, 0, 31, 0, 39, 0, 75, 0, 7, 0, 20, 1, 7, 0, 21, 1,
+ 7, 0, 22, 1, 7, 0, 23, 1, 7, 0, 24, 1, 7, 0, 25, 1, 7, 0, 26, 1, 7, 0, 27, 1, 7, 0, 28, 1, 7, 0, 29, 1,
+ 7, 0, 30, 1, 7, 0, 31, 1, 7, 0, 32, 1, 7, 0, 33, 1, 7, 0, 34, 1, 7, 0, 35, 1, 7, 0, 36, 1, 7, 0, 37, 1,
+ 7, 0, 38, 1, 7, 0, 39, 1, 2, 0, 40, 1, 2, 0, 41, 1, 2, 0, 42, 1, 2, 0, 43, 1, 2, 0, 44, 1, 2, 0, 45, 1,
+ 2, 0, 46, 1, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,242, 0, 7, 0, 47, 1, 7, 0, 48, 1, 7, 0, 49, 1, 7, 0, 50, 1,
+ 4, 0, 51, 1, 4, 0, 52, 1, 2, 0, 53, 1, 2, 0, 54, 1, 2, 0, 15, 1, 2, 0,127, 0, 4, 0, 23, 0, 4, 0,124, 0,
+ 4, 0,125, 0, 4, 0,126, 0, 7, 0, 55, 1, 7, 0, 56, 1, 7, 0,189, 0, 45, 0, 57, 1, 60, 0, 58, 1, 36, 0, 80, 0,
+ 47, 0,238, 0, 53, 0, 59, 1, 55, 0, 11, 1, 56, 0, 60, 1, 30, 0,150, 0, 58, 0, 61, 1, 59, 0, 62, 1, 0, 0, 63, 1,
+ 0, 0,181, 0, 61, 0, 8, 0, 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,172, 0, 4, 0, 19, 0, 7, 0, 66, 1, 7, 0, 67, 1,
+ 7, 0, 68, 1, 32, 0, 45, 0, 62, 0, 84, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 69, 1,
+ 2, 0,175, 0, 2, 0, 70, 1, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0, 71, 1, 7, 0, 72, 1,
+ 7, 0, 73, 1, 7, 0, 74, 1, 7, 0, 75, 1, 7, 0, 76, 1, 7, 0, 77, 1, 7, 0, 78, 1, 7, 0, 79, 1, 7, 0, 80, 1,
+ 7, 0, 81, 1, 63, 0, 82, 1, 2, 0,249, 0, 2, 0, 70, 0, 7, 0,110, 0, 7, 0,111, 0, 7, 0, 83, 1, 7, 0, 84, 1,
+ 7, 0, 85, 1, 7, 0, 86, 1, 7, 0, 87, 1, 2, 0, 88, 1, 2, 0, 89, 1, 2, 0, 90, 1, 2, 0, 91, 1, 0, 0, 92, 1,
+ 0, 0, 93, 1, 2, 0, 94, 1, 2, 0, 95, 1, 2, 0, 96, 1, 2, 0, 97, 1, 2, 0, 98, 1, 7, 0, 99, 1, 7, 0,100, 1,
+ 7, 0,101, 1, 7, 0,102, 1, 2, 0,103, 1, 2, 0, 43, 0, 2, 0,104, 1, 2, 0,105, 1, 2, 0,106, 1, 2, 0,107, 1,
+ 7, 0,108, 1, 7, 0,109, 1, 7, 0,110, 1, 7, 0,111, 1, 7, 0,112, 1, 7, 0,113, 1, 7, 0,114, 1, 7, 0,115, 1,
+ 7, 0,116, 1, 7, 0,117, 1, 7, 0,118, 1, 7, 0,119, 1, 2, 0,120, 1, 2, 0,121, 1, 4, 0,122, 1, 4, 0,123, 1,
+ 2, 0,124, 1, 2, 0,125, 1, 2, 0,126, 1, 2, 0,127, 1, 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, 7, 0,131, 1,
+ 2, 0,132, 1, 2, 0,133, 1, 36, 0, 80, 0, 51, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 30, 0,150, 0, 64, 0, 2, 0,
+ 27, 0, 31, 0, 36, 0, 80, 0, 65, 0, 18, 0, 7, 0,137, 1, 7, 0,138, 1, 7, 0,139, 1, 7, 0,140, 1, 7, 0,141, 1,
+ 7, 0,142, 1, 7, 0,143, 1, 7, 0,144, 1, 7, 0,145, 1, 7, 0,146, 1, 2, 0,147, 1, 2, 0,148, 1, 2, 0,149, 1,
+ 2, 0,150, 1, 7, 0,151, 1, 7, 0,152, 1, 7, 0,153, 1, 4, 0,154, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0,
+ 2, 0,155, 1, 2, 0, 19, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,156, 1, 7, 0,157, 1, 7, 0,158, 1,
+ 7, 0,159, 1, 7, 0,160, 1, 7, 0,161, 1, 7, 0,162, 1, 7, 0,163, 1, 7, 0,164, 1, 7, 0,165, 1, 7, 0,166, 1,
+ 7, 0,167, 1, 7, 0,168, 1, 7, 0,169, 1, 7, 0,170, 1, 7, 0,171, 1, 7, 0,172, 1, 7, 0,173, 1, 7, 0,174, 1,
+ 7, 0,175, 1, 65, 0,176, 1, 7, 0,177, 1, 7, 0,178, 1, 7, 0,179, 1, 7, 0,180, 1, 7, 0,181, 1, 7, 0,182, 1,
+ 7, 0,183, 1, 2, 0,184, 1, 2, 0,185, 1, 2, 0,186, 1, 0, 0,187, 1, 0, 0,188, 1, 7, 0,189, 1, 7, 0,190, 1,
+ 2, 0,191, 1, 2, 0,192, 1, 7, 0,193, 1, 7, 0,194, 1, 7, 0,195, 1, 7, 0,196, 1, 2, 0,197, 1, 2, 0,198, 1,
+ 4, 0, 69, 1, 4, 0,199, 1, 2, 0,200, 1, 2, 0,201, 1, 2, 0,202, 1, 2, 0,203, 1, 7, 0,204, 1, 7, 0,205, 1,
+ 7, 0,206, 1, 7, 0,207, 1, 7, 0,208, 1, 7, 0,209, 1, 7, 0,210, 1, 7, 0,211, 1, 7, 0,212, 1, 7, 0,213, 1,
+ 0, 0,214, 1, 7, 0,215, 1, 7, 0,216, 1, 7, 0,217, 1, 4, 0,218, 1, 0, 0,219, 1, 0, 0,104, 1, 0, 0,220, 1,
+ 0, 0, 63, 1, 2, 0,221, 1, 2, 0,222, 1, 2, 0,135, 1, 2, 0,223, 1, 2, 0,224, 1, 2, 0,225, 1, 7, 0,226, 1,
+ 7, 0,227, 1, 7, 0,228, 1, 7, 0,229, 1, 7, 0,230, 1, 2, 0,160, 0, 2, 0,161, 0, 55, 0,231, 1, 55, 0,232, 1,
+ 0, 0,233, 1, 0, 0,234, 1, 0, 0,235, 1, 0, 0,236, 1, 2, 0,237, 1, 2, 0,238, 1, 7, 0,239, 1, 7, 0,240, 1,
+ 51, 0,134, 1, 60, 0, 58, 1, 36, 0, 80, 0, 67, 0,241, 1, 30, 0,150, 0, 7, 0,242, 1, 7, 0,243, 1, 7, 0,244, 1,
+ 7, 0,245, 1, 7, 0,246, 1, 2, 0,247, 1, 2, 0, 70, 0, 7, 0,248, 1, 7, 0,249, 1, 7, 0,250, 1, 7, 0,251, 1,
+ 7, 0,252, 1, 7, 0,253, 1, 7, 0,254, 1, 7, 0,255, 1, 7, 0, 0, 2, 2, 0, 1, 2, 2, 0, 2, 2, 4, 0, 3, 2,
+ 4, 0,121, 1, 12, 0, 4, 2, 68, 0, 4, 0, 27, 0, 31, 0, 0, 0, 5, 2, 69, 0, 2, 0, 43, 0,149, 0, 70, 0, 26, 0,
+ 70, 0, 0, 0, 70, 0, 1, 0, 71, 0, 6, 2, 4, 0, 7, 2, 4, 0, 8, 2, 4, 0, 9, 2, 4, 0, 10, 2, 4, 0, 11, 2,
+ 4, 0, 12, 2, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 13, 2, 2, 0, 14, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0,
+ 7, 0, 15, 2, 7, 0, 16, 2, 7, 0, 17, 2, 7, 0, 18, 2, 7, 0, 19, 2, 7, 0, 20, 2, 7, 0, 21, 2, 7, 0, 23, 0,
+ 7, 0, 22, 2, 7, 0, 23, 2, 72, 0, 20, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 6, 2, 12, 0, 24, 2, 12, 0, 25, 2,
+ 12, 0, 26, 2, 36, 0, 80, 0, 66, 0, 27, 2, 0, 0, 19, 0, 0, 0, 28, 2, 2, 0, 29, 2, 2, 0,174, 0, 2, 0, 37, 0,
+ 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1, 7, 0, 30, 2, 7, 0, 31, 2, 7, 0, 32, 2, 70, 0, 33, 2, 35, 0, 11, 0,
+ 7, 0, 34, 2, 7, 0, 35, 2, 7, 0, 36, 2, 7, 0,251, 0, 2, 0, 55, 0, 0, 0, 37, 2, 0, 0, 38, 2, 0, 0, 39, 2,
+ 0, 0, 40, 2, 0, 0, 41, 2, 0, 0, 42, 2, 34, 0, 7, 0, 7, 0, 43, 2, 7, 0, 35, 2, 7, 0, 36, 2, 2, 0, 39, 2,
+ 2, 0, 42, 2, 7, 0,251, 0, 7, 0, 37, 0, 73, 0, 21, 0, 73, 0, 0, 0, 73, 0, 1, 0, 2, 0, 17, 0, 2, 0, 44, 2,
+ 2, 0, 42, 2, 2, 0, 19, 0, 2, 0, 45, 2, 2, 0, 46, 2, 2, 0, 47, 2, 2, 0, 48, 2, 2, 0, 49, 2, 2, 0, 50, 2,
+ 2, 0, 51, 2, 2, 0, 52, 2, 7, 0, 53, 2, 7, 0, 54, 2, 34, 0, 49, 0, 35, 0, 50, 0, 2, 0, 55, 2, 2, 0, 56, 2,
+ 4, 0, 57, 2, 74, 0, 5, 0, 2, 0, 58, 2, 2, 0, 44, 2, 0, 0, 19, 0, 0, 0, 37, 0, 2, 0, 70, 0, 75, 0, 4, 0,
+ 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 8, 0, 7, 0, 59, 2, 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 6, 2,
+ 12, 0, 60, 2, 12, 0, 25, 2, 12, 0, 61, 2, 32, 0, 62, 2, 32, 0, 63, 2, 32, 0, 64, 2, 36, 0, 80, 0, 77, 0, 65, 2,
+ 38, 0, 66, 2, 66, 0, 27, 2, 12, 0, 67, 2, 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1, 2, 0,174, 0, 2, 0, 43, 0,
+ 2, 0, 68, 2, 2, 0, 69, 2, 2, 0, 70, 2, 7, 0, 71, 2, 7, 0, 70, 0, 2, 0, 72, 2, 2, 0, 29, 2, 2, 0, 19, 0,
+ 2, 0, 73, 2, 7, 0, 74, 2, 7, 0, 75, 2, 7, 0, 76, 2, 2, 0, 47, 2, 2, 0, 48, 2, 2, 0, 77, 2, 2, 0, 78, 2,
+ 4, 0, 79, 2, 34, 0, 80, 2, 2, 0, 23, 0, 2, 0, 95, 0, 2, 0, 67, 0, 2, 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, 7, 0, 90, 2, 7, 0, 91, 2,
+ 0, 0, 92, 2, 78, 0, 93, 2, 79, 0, 94, 2, 0, 0, 95, 2, 68, 0, 96, 2, 68, 0, 97, 2, 68, 0, 98, 2, 68, 0, 99, 2,
+ 4, 0,100, 2, 7, 0,101, 2, 4, 0,102, 2, 4, 0,103, 2, 75, 0,104, 2, 4, 0,105, 2, 4, 0,106, 2, 74, 0,107, 2,
+ 74, 0,108, 2, 80, 0, 40, 0, 27, 0, 31, 0, 71, 0, 6, 2, 12, 0,109, 2, 36, 0, 80, 0, 38, 0, 66, 2, 66, 0, 27, 2,
+ 81, 0,110, 2, 82, 0,111, 2, 83, 0,112, 2, 84, 0,113, 2, 85, 0,114, 2, 86, 0,115, 2, 87, 0,116, 2, 88, 0,117, 2,
+ 80, 0,118, 2, 89, 0,119, 2, 90, 0,120, 2, 91, 0,121, 2, 91, 0,122, 2, 91, 0,123, 2, 4, 0, 54, 0, 4, 0,124, 2,
+ 4, 0,125, 2, 4, 0,126, 2, 4, 0,127, 2, 2, 0,174, 0, 2, 0,128, 2, 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1,
+ 7, 0,129, 2, 4, 0, 68, 2, 2, 0,130, 2, 2, 0, 19, 0, 2, 0,131, 2, 2, 0,132, 2, 2, 0, 29, 2, 2, 0,133, 2,
+ 92, 0,134, 2, 93, 0,135, 2, 83, 0, 8, 0, 9, 0,136, 2, 7, 0,137, 2, 4, 0,138, 2, 0, 0, 19, 0, 0, 0,139, 2,
+ 2, 0, 69, 1, 2, 0,140, 2, 2, 0,141, 2, 81, 0, 7, 0, 4, 0,142, 2, 4, 0,143, 2, 4, 0,144, 2, 4, 0,145, 2,
+ 2, 0, 44, 2, 0, 0,146, 2, 0, 0, 19, 0, 85, 0, 5, 0, 4, 0,142, 2, 4, 0,143, 2, 0, 0,147, 2, 0, 0,148, 2,
+ 2, 0, 19, 0, 94, 0, 2, 0, 4, 0,149, 2, 7, 0, 36, 2, 86, 0, 3, 0, 94, 0,150, 2, 4, 0,151, 2, 4, 0, 19, 0,
+ 84, 0, 6, 0, 7, 0,152, 2, 2, 0,153, 2, 2, 0, 44, 2, 0, 0, 19, 0, 0, 0,148, 2, 0, 0, 70, 2, 87, 0, 4, 0,
+ 0, 0,236, 0, 0, 0,182, 0, 0, 0,183, 0, 0, 0,184, 0, 95, 0, 6, 0, 47, 0,136, 2, 0, 0, 19, 0, 0, 0,139, 2,
+ 2, 0, 69, 1, 2, 0,140, 2, 2, 0,141, 2, 96, 0, 1, 0, 7, 0,154, 2, 97, 0, 5, 0, 0, 0,236, 0, 0, 0,182, 0,
+ 0, 0,183, 0, 0, 0,184, 0, 4, 0, 37, 0, 88, 0, 1, 0, 7, 0,155, 2, 89, 0, 2, 0, 4, 0,156, 2, 4, 0, 17, 0,
+ 82, 0, 7, 0, 7, 0,137, 2, 47, 0,136, 2, 0, 0, 19, 0, 0, 0,139, 2, 2, 0, 69, 1, 2, 0,140, 2, 2, 0,141, 2,
+ 98, 0, 1, 0, 7, 0,157, 2, 99, 0, 1, 0, 4, 0,158, 2,100, 0, 1, 0, 0, 0,159, 2,101, 0, 1, 0, 7, 0,137, 2,
+102, 0, 3, 0, 4, 0,160, 2, 0, 0, 92, 0, 7, 0,161, 2,104, 0, 4, 0, 7, 0,236, 0, 7, 0,182, 0, 7, 0,183, 0,
+ 7, 0,184, 0,105, 0, 1, 0,104, 0,138, 2,106, 0, 5, 0, 4, 0,162, 2, 4, 0,163, 2, 0, 0, 19, 0, 0, 0, 44, 2,
+ 0, 0, 70, 2,107, 0, 2, 0, 4, 0,164, 2, 4, 0,163, 2,108, 0, 10, 0,108, 0, 0, 0,108, 0, 1, 0,106, 0,165, 2,
+105, 0,166, 2,107, 0,167, 2, 4, 0, 54, 0, 4, 0,125, 2, 4, 0,124, 2, 4, 0, 37, 0, 84, 0,168, 2, 92, 0, 14, 0,
+ 12, 0,169, 2, 84, 0,168, 2, 0, 0,170, 2, 0, 0,171, 2, 0, 0,172, 2, 0, 0,173, 2, 0, 0,174, 2, 0, 0,175, 2,
+ 0, 0,176, 2, 0, 0, 19, 0, 91, 0,121, 2, 91, 0,123, 2, 2, 0,177, 2, 0, 0,178, 2, 93, 0, 8, 0, 4, 0,179, 2,
+ 4, 0,180, 2, 81, 0,181, 2, 85, 0,182, 2, 4, 0,125, 2, 4, 0,124, 2, 4, 0, 54, 0, 4, 0, 37, 0,109, 0, 7, 0,
+109, 0, 0, 0,109, 0, 1, 0, 4, 0, 17, 0, 4, 0, 69, 1, 0, 0, 20, 0, 46, 0,134, 0, 0, 0,183, 2,110, 0, 7, 0,
+109, 0,184, 2, 2, 0,185, 2, 2, 0,169, 2, 2, 0,186, 2, 2, 0, 90, 0, 9, 0,187, 2, 9, 0,188, 2,111, 0, 3, 0,
+109, 0,184, 2, 32, 0,164, 0, 0, 0, 20, 0,112, 0, 5, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0, 20, 0, 2, 0,189, 2,
+ 0, 0,190, 2,113, 0, 5, 0,109, 0,184, 2, 7, 0, 88, 0, 7, 0,191, 2, 4, 0,192, 2, 4, 0,193, 2,114, 0, 5, 0,
+109, 0,184, 2, 32, 0,194, 2, 0, 0, 72, 0, 4, 0, 69, 1, 4, 0, 19, 0,115, 0, 13, 0,109, 0,184, 2, 32, 0,195, 2,
+ 32, 0,196, 2, 32, 0,197, 2, 32, 0,198, 2, 7, 0,199, 2, 7, 0,200, 2, 7, 0,191, 2, 7, 0,201, 2, 4, 0,202, 2,
+ 4, 0,203, 2, 4, 0, 90, 0, 4, 0,204, 2,116, 0, 5, 0,109, 0,184, 2, 2, 0,205, 2, 2, 0, 19, 0, 7, 0,206, 2,
+ 32, 0,207, 2,117, 0, 3, 0,109, 0,184, 2, 7, 0,208, 2, 4, 0, 90, 0,118, 0, 10, 0,109, 0,184, 2, 7, 0,209, 2,
+ 4, 0,210, 2, 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,211, 2, 2, 0,212, 2, 2, 0,213, 2, 7, 0,214, 2, 0, 0,215, 2,
+119, 0, 3, 0,109, 0,184, 2, 7, 0, 37, 0, 4, 0, 17, 0,120, 0, 6, 0,109, 0,184, 2,121, 0,216, 2,122, 0,217, 2,
+123, 0,218, 2, 7, 0,219, 2, 4, 0, 17, 0,124, 0, 11, 0,109, 0,184, 2, 52, 0,220, 2, 7, 0,221, 2, 4, 0,222, 2,
+ 0, 0,215, 2, 7, 0,223, 2, 4, 0,224, 2, 32, 0,225, 2, 0, 0,226, 2, 4, 0,227, 2, 4, 0, 37, 0,125, 0, 10, 0,
+109, 0,184, 2, 32, 0,228, 2, 47, 0,229, 2, 4, 0, 90, 0, 4, 0,230, 2, 7, 0,231, 2, 7, 0,232, 2, 0, 0,226, 2,
+ 4, 0,227, 2, 4, 0, 37, 0,126, 0, 3, 0,109, 0,184, 2, 7, 0,233, 2, 4, 0,234, 2,127, 0, 5, 0,109, 0,184, 2,
+ 7, 0,235, 2, 0, 0,215, 2, 2, 0, 19, 0, 2, 0,236, 2,128, 0, 8, 0,109, 0,184, 2, 32, 0,164, 0, 7, 0,235, 2,
+ 7, 0,251, 0, 7, 0,106, 0, 0, 0,215, 2, 2, 0, 19, 0, 2, 0, 17, 0,129, 0, 21, 0,109, 0,184, 2, 32, 0,237, 2,
+ 0, 0,215, 2, 52, 0,220, 2, 32, 0,225, 2, 2, 0, 19, 0, 2, 0, 37, 0, 7, 0,238, 2, 7, 0,239, 2, 7, 0,240, 2,
+ 7, 0, 74, 2, 7, 0,241, 2, 7, 0,242, 2, 7, 0,243, 2, 7, 0,244, 2, 4, 0,224, 2, 4, 0,227, 2, 0, 0,226, 2,
+ 7, 0,245, 2, 7, 0,246, 2, 7, 0, 43, 0,130, 0, 7, 0,109, 0,184, 2, 2, 0,247, 2, 2, 0,248, 2, 4, 0, 70, 0,
+ 32, 0,164, 0, 7, 0,249, 2, 0, 0,215, 2,131, 0, 10, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0,250, 2, 7, 0,251, 2,
+ 7, 0,252, 2, 7, 0,244, 2, 4, 0,253, 2, 4, 0,254, 2, 7, 0,255, 2, 0, 0, 20, 0,132, 0, 1, 0,109, 0,184, 2,
+133, 0, 7, 0,109, 0,184, 2, 46, 0,134, 0,134, 0, 0, 3,135, 0, 1, 3,136, 0, 2, 3,137, 0, 3, 3, 12, 0, 4, 3,
+138, 0, 13, 0,109, 0,184, 2, 84, 0, 5, 3, 84, 0, 6, 3, 84, 0, 7, 3, 84, 0, 8, 3, 84, 0, 9, 3, 84, 0, 10, 3,
+ 81, 0, 11, 3, 4, 0, 12, 3, 4, 0, 13, 3, 7, 0,219, 2, 7, 0, 37, 0,139, 0, 14, 3,140, 0, 7, 0,109, 0,184, 2,
+ 84, 0, 5, 3, 84, 0, 15, 3,141, 0, 16, 3,142, 0, 14, 3, 4, 0, 17, 3, 4, 0, 12, 3,143, 0, 4, 0,109, 0,184, 2,
+ 32, 0,164, 0, 4, 0, 18, 3, 4, 0, 37, 0,144, 0, 2, 0, 4, 0, 19, 3, 7, 0, 36, 2,145, 0, 2, 0, 4, 0,125, 0,
+ 4, 0, 20, 3,146, 0, 21, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0,215, 2, 2, 0, 21, 3, 2, 0, 19, 0, 2, 0, 69, 1,
+ 2, 0, 37, 0, 7, 0, 22, 3, 7, 0, 23, 3, 4, 0, 54, 0, 4, 0, 24, 3,145, 0, 25, 3,144, 0, 26, 3, 4, 0, 27, 3,
+ 4, 0, 28, 3, 4, 0, 29, 3, 4, 0, 20, 3, 7, 0, 30, 3, 7, 0, 31, 3, 7, 0, 32, 3, 9, 0, 33, 3,147, 0, 8, 0,
+109, 0,184, 2,148, 0, 34, 3,141, 0, 16, 3, 4, 0, 35, 3, 4, 0, 36, 3, 4, 0, 37, 3, 2, 0, 19, 0, 2, 0, 57, 0,
+149, 0, 8, 0,109, 0,184, 2, 32, 0, 45, 0, 2, 0,255, 0, 2, 0, 19, 0, 2, 0,205, 2, 2, 0, 57, 0, 7, 0, 38, 3,
+ 7, 0, 39, 3,150, 0, 5, 0,109, 0,184, 2, 4, 0, 40, 3, 2, 0, 19, 0, 2, 0, 41, 3, 7, 0, 42, 3,151, 0, 7, 0,
+109, 0,184, 2, 84, 0, 43, 3, 4, 0, 44, 3, 0, 0, 45, 3, 0, 0, 46, 3, 0, 0, 47, 3, 0, 0, 48, 3,152, 0, 3, 0,
+109, 0,184, 2,153, 0, 49, 3,137, 0, 3, 3,154, 0, 10, 0,109, 0,184, 2, 32, 0, 50, 3, 32, 0, 51, 3, 0, 0, 52, 3,
+ 7, 0, 53, 3, 2, 0, 54, 3, 2, 0, 55, 3, 0, 0, 56, 3, 0, 0, 57, 3, 0, 0,190, 2,155, 0, 9, 0,109, 0,184, 2,
+ 32, 0, 58, 3, 0, 0, 52, 3, 7, 0, 59, 3, 7, 0, 60, 3, 0, 0, 69, 1, 0, 0,205, 2, 0, 0, 61, 3, 0, 0, 37, 0,
+156, 0, 1, 0,109, 0,184, 2,157, 0, 27, 0, 27, 0, 31, 0, 2, 0, 45, 2, 2, 0, 46, 2, 2, 0, 62, 3, 2, 0, 19, 0,
+ 2, 0, 63, 3, 2, 0, 64, 3, 2, 0, 65, 3, 2, 0, 70, 0, 0, 0, 66, 3, 0, 0, 67, 3, 0, 0, 68, 3, 0, 0, 17, 0,
+ 4, 0, 37, 0, 7, 0, 69, 3, 7, 0, 70, 3, 7, 0, 71, 3, 7, 0, 72, 3, 7, 0, 73, 3, 7, 0, 74, 3, 34, 0, 75, 3,
+ 36, 0, 80, 0, 38, 0, 66, 2, 86, 0,115, 2, 7, 0, 76, 3, 7, 0, 77, 3,157, 0, 78, 3,158, 0, 3, 0,158, 0, 0, 0,
+158, 0, 1, 0, 0, 0, 20, 0, 71, 0, 3, 0, 7, 0, 79, 3, 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,124, 0, 27, 0, 31, 0,
+ 39, 0, 75, 0,159, 0, 80, 3, 2, 0, 17, 0, 2, 0, 81, 3, 4, 0, 82, 3, 4, 0, 83, 3, 4, 0, 84, 3, 0, 0, 85, 3,
+ 32, 0, 38, 0, 32, 0, 86, 3, 32, 0, 87, 3, 32, 0, 88, 3, 32, 0, 89, 3, 36, 0, 80, 0, 77, 0, 65, 2, 71, 0, 6, 2,
+160, 0, 90, 3,160, 0, 91, 3,161, 0, 92, 3, 9, 0, 2, 0,162, 0, 93, 3, 12, 0, 94, 3, 12, 0,109, 2, 12, 0, 25, 2,
+ 12, 0, 95, 3, 12, 0, 96, 3, 4, 0, 69, 1, 4, 0, 97, 3, 66, 0, 27, 2, 0, 0, 98, 3, 4, 0, 29, 2, 4, 0, 99, 3,
+ 7, 0, 64, 1, 7, 0,100, 3, 7, 0,101, 3, 7, 0,172, 0, 7, 0,102, 3, 7, 0, 65, 1, 7, 0,103, 3, 7, 0, 15, 2,
+ 7, 0,104, 3, 7, 0,105, 3, 7, 0,106, 3, 7, 0,107, 3, 7, 0,108, 3, 7, 0,109, 3, 7, 0,251, 2, 7, 0,110, 3,
+ 7, 0,240, 0, 4, 0,111, 3, 2, 0, 19, 0, 2, 0,112, 3, 2, 0,113, 3, 2, 0,114, 3, 2, 0,115, 3, 2, 0,116, 3,
+ 2, 0,117, 3, 2, 0,118, 3, 2, 0,119, 3, 2, 0,120, 3, 2, 0,121, 3, 2, 0,122, 3, 4, 0,123, 3, 4, 0,124, 3,
+ 4, 0,125, 3, 4, 0,126, 3, 7, 0,127, 3, 7, 0,101, 2, 7, 0,128, 3, 7, 0,129, 3, 7, 0,130, 3, 7, 0,131, 3,
+ 7, 0,132, 3, 7, 0,215, 0, 7, 0,133, 3, 7, 0,134, 3, 7, 0,135, 3, 7, 0,136, 3, 2, 0,137, 3, 0, 0,138, 3,
+ 0, 0,139, 3, 0, 0,140, 3, 0, 0,141, 3, 7, 0,142, 3, 7, 0,143, 3, 12, 0,144, 3, 12, 0,145, 3, 12, 0,146, 3,
+ 12, 0,147, 3, 7, 0,148, 3, 2, 0,156, 2, 2, 0,149, 3, 7, 0,138, 2, 4, 0,150, 3, 4, 0,151, 3,163, 0,152, 3,
+ 2, 0,153, 3, 2, 0,247, 0, 7, 0,154, 3, 12, 0,155, 3, 12, 0,156, 3, 12, 0,157, 3, 12, 0,158, 3,164, 0, 61, 1,
+165, 0,159, 3, 67, 0,160, 3, 2, 0,161, 3, 2, 0,162, 3, 2, 0,163, 3, 2, 0,164, 3, 7, 0,130, 2, 2, 0,165, 3,
+ 2, 0,166, 3,153, 0,167, 3,141, 0,168, 3,141, 0,169, 3, 4, 0,170, 3, 4, 0,171, 3, 4, 0,172, 3, 4, 0, 70, 0,
+ 12, 0,173, 3, 12, 0,174, 3, 12, 0,175, 3,166, 0, 14, 0,166, 0, 0, 0,166, 0, 1, 0, 32, 0, 38, 0, 7, 0,251, 2,
+ 7, 0, 66, 1, 7, 0,252, 2, 7, 0,244, 2, 0, 0, 20, 0, 4, 0,253, 2, 4, 0,254, 2, 4, 0,176, 3, 2, 0, 17, 0,
+ 2, 0,177, 3, 7, 0,255, 2,167, 0, 12, 0,167, 0, 0, 0,167, 0, 1, 0, 32, 0, 45, 0, 4, 0,178, 3, 4, 0,156, 2,
+ 4, 0,179, 3, 4, 0, 17, 0, 4, 0,180, 3, 7, 0, 66, 1, 7, 0,181, 3, 7, 0,182, 3, 7, 0,154, 2,164, 0, 40, 0,
+ 4, 0, 19, 0, 2, 0,183, 3, 2, 0,184, 3, 2, 0,244, 2, 2, 0,185, 3, 2, 0,186, 3, 2, 0,187, 3, 2, 0,188, 3,
+ 2, 0,189, 3, 7, 0,190, 3, 7, 0,191, 3, 7, 0,192, 3, 7, 0,193, 3, 7, 0,194, 3, 7, 0,195, 3, 7, 0,196, 3,
+ 7, 0,197, 3, 7, 0,198, 3, 7, 0,199, 3, 7, 0,200, 3, 7, 0,201, 3, 7, 0,202, 3, 7, 0,203, 3, 7, 0,204, 3,
+ 7, 0,205, 3, 7, 0, 37, 0, 7, 0,206, 3, 7, 0,207, 3, 7, 0,208, 3, 7, 0,209, 3, 7, 0,210, 3, 7, 0,211, 3,
+ 7, 0,212, 3, 7, 0,213, 3, 7, 0,214, 3, 7, 0,215, 3, 52, 0,165, 0,168, 0,216, 3, 7, 0,217, 3, 4, 0,193, 2,
+169, 0, 5, 0, 67, 0,241, 1, 7, 0,218, 3, 7, 0,219, 3, 2, 0, 19, 0, 2, 0,220, 3,170, 0, 9, 0,170, 0, 0, 0,
+170, 0, 1, 0, 4, 0,221, 3, 4, 0,222, 3, 4, 0,223, 3, 4, 0, 19, 0, 4, 0,224, 3, 9, 0,225, 3, 9, 0,226, 3,
+137, 0, 19, 0,137, 0, 0, 0,137, 0, 1, 0, 4, 0, 19, 0, 4, 0,227, 3, 4, 0,228, 3, 4, 0,229, 3, 4, 0,230, 3,
+ 4, 0,231, 3, 4, 0,232, 3, 4, 0,222, 3, 4, 0,156, 2, 4, 0, 57, 0, 0, 0,233, 3, 0, 0,234, 3, 0, 0,235, 3,
+ 0, 0,236, 3, 12, 0,237, 3,171, 0,238, 3, 9, 0,239, 3,172, 0, 1, 0, 7, 0, 43, 2,163, 0, 30, 0, 4, 0, 19, 0,
+ 7, 0,240, 3, 7, 0,241, 3, 7, 0,242, 3, 4, 0,243, 3, 4, 0,244, 3, 4, 0,245, 3, 4, 0,246, 3, 7, 0,247, 3,
+ 7, 0,248, 3, 7, 0,249, 3, 7, 0,250, 3, 7, 0,251, 3, 7, 0,252, 3, 7, 0,253, 3, 7, 0,254, 3, 7, 0,255, 3,
+ 7, 0, 0, 4, 7, 0, 1, 4, 7, 0, 2, 4, 7, 0, 3, 4, 7, 0, 4, 4, 7, 0, 5, 4, 7, 0, 6, 4, 7, 0, 7, 4,
+ 7, 0, 8, 4, 4, 0, 9, 4, 4, 0, 10, 4, 7, 0, 11, 4, 7, 0,133, 3,165, 0, 54, 0, 4, 0,222, 3, 4, 0, 12, 4,
+173, 0, 13, 4,174, 0, 14, 4, 0, 0, 37, 0, 0, 0, 15, 4, 2, 0, 16, 4, 7, 0, 17, 4, 0, 0, 18, 4, 7, 0, 19, 4,
+ 7, 0, 20, 4, 7, 0, 21, 4, 7, 0, 22, 4, 7, 0, 23, 4, 7, 0, 24, 4, 7, 0, 25, 4, 7, 0, 26, 4, 7, 0, 27, 4,
+ 2, 0, 28, 4, 0, 0, 29, 4, 2, 0, 30, 4, 7, 0, 31, 4, 7, 0, 32, 4, 0, 0, 33, 4, 4, 0,126, 0, 4, 0, 34, 4,
+ 4, 0, 35, 4, 2, 0, 36, 4, 2, 0, 37, 4,172, 0, 38, 4, 4, 0, 39, 4, 4, 0, 82, 0, 7, 0, 40, 4, 7, 0, 41, 4,
+ 7, 0, 42, 4, 7, 0, 43, 4, 2, 0, 44, 4, 2, 0, 45, 4, 2, 0, 46, 4, 2, 0, 47, 4, 2, 0, 48, 4, 2, 0, 49, 4,
+ 2, 0, 50, 4, 2, 0, 51, 4,175, 0, 52, 4, 7, 0, 53, 4, 7, 0, 54, 4,137, 0, 55, 4, 12, 0, 4, 3,169, 0, 56, 4,
+ 7, 0, 57, 4, 7, 0, 58, 4, 7, 0, 59, 4, 0, 0, 60, 4,153, 0, 49, 0,152, 0, 61, 4, 2, 0, 17, 0, 2, 0, 62, 4,
+ 2, 0, 63, 4, 2, 0, 64, 4, 7, 0, 65, 4, 2, 0, 66, 4, 2, 0, 67, 4, 7, 0, 68, 4, 2, 0, 69, 4, 2, 0, 70, 4,
+ 7, 0, 71, 4, 7, 0, 72, 4, 7, 0, 73, 4, 7, 0, 74, 4, 7, 0, 75, 4, 7, 0, 76, 4, 4, 0, 77, 4, 7, 0, 78, 4,
+ 7, 0, 79, 4, 7, 0, 80, 4, 80, 0, 81, 4, 80, 0, 82, 4, 80, 0, 83, 4, 0, 0, 84, 4, 7, 0, 85, 4, 7, 0, 86, 4,
+ 36, 0, 80, 0, 2, 0, 87, 4, 0, 0, 88, 4, 0, 0, 89, 4, 7, 0, 90, 4, 4, 0, 91, 4, 7, 0, 92, 4, 7, 0, 93, 4,
+ 4, 0, 94, 4, 4, 0, 19, 0, 7, 0, 95, 4, 7, 0, 96, 4, 7, 0, 97, 4, 84, 0, 98, 4, 7, 0, 99, 4, 7, 0,100, 4,
+ 7, 0,101, 4, 7, 0,102, 4, 7, 0,103, 4, 7, 0,104, 4, 7, 0,105, 4, 4, 0,106, 4,176, 0, 76, 0, 27, 0, 31, 0,
+ 39, 0, 75, 0, 2, 0,175, 0, 2, 0, 70, 1, 2, 0,104, 1, 2, 0,107, 4, 7, 0,108, 4, 7, 0,109, 4, 7, 0,110, 4,
+ 7, 0,111, 4, 7, 0,112, 4, 7, 0,113, 4, 7, 0,114, 4, 7, 0,115, 4, 7, 0,162, 1, 7, 0,164, 1, 7, 0,163, 1,
+ 7, 0,116, 4, 4, 0,117, 4, 7, 0,118, 4, 7, 0,119, 4, 7, 0,120, 4, 7, 0,121, 4, 7, 0,122, 4, 7, 0,123, 4,
+ 7, 0,124, 4, 2, 0,125, 4, 2, 0, 69, 1, 2, 0,126, 4, 2, 0,127, 4, 2, 0,128, 4, 2, 0,129, 4, 2, 0,130, 4,
+ 2, 0,131, 4, 7, 0,132, 4, 7, 0,133, 4, 7, 0,134, 4, 7, 0,135, 4, 7, 0,136, 4, 7, 0,137, 4, 7, 0,138, 4,
+ 7, 0,139, 4, 7, 0,140, 4, 7, 0,141, 4, 7, 0,142, 4, 7, 0,143, 4, 2, 0,144, 4, 2, 0,145, 4, 2, 0,146, 4,
+ 2, 0,147, 4, 7, 0,148, 4, 7, 0,149, 4, 7, 0,150, 4, 7, 0,151, 4, 2, 0,152, 4, 2, 0,153, 4, 2, 0,154, 4,
+ 2, 0,155, 4, 7, 0,156, 4, 7, 0,157, 4, 7, 0,158, 4, 7, 0,159, 4, 7, 0,160, 4, 2, 0,161, 4, 2, 0,162, 4,
+ 2, 0,163, 4, 2, 0,164, 4, 2, 0,165, 4, 2, 0, 19, 0, 7, 0,166, 4, 7, 0,167, 4, 36, 0, 80, 0, 51, 0,134, 1,
+ 2, 0,135, 1, 2, 0,136, 1, 30, 0,150, 0,177, 0, 8, 0,177, 0, 0, 0,177, 0, 1, 0, 4, 0,111, 3, 4, 0,168, 4,
+ 4, 0, 19, 0, 2, 0,169, 4, 2, 0,170, 4, 32, 0,164, 0,178, 0, 13, 0, 9, 0,171, 4, 9, 0,172, 4, 4, 0,173, 4,
+ 4, 0,174, 4, 4, 0,175, 4, 4, 0,176, 4, 4, 0,177, 4, 4, 0,178, 4, 4, 0,179, 4, 4, 0,180, 4, 4, 0,181, 4,
+ 4, 0, 37, 0, 0, 0,182, 4,179, 0, 5, 0, 9, 0,183, 4, 9, 0,184, 4, 4, 0,185, 4, 4, 0, 70, 0, 0, 0,186, 4,
+180, 0, 10, 0, 4, 0,187, 4, 4, 0,188, 4, 4, 0,189, 4, 4, 0,190, 4, 4, 0,191, 4, 4, 0,192, 4, 4, 0,193, 4,
+ 4, 0,194, 4, 4, 0,195, 4, 4, 0,196, 4,181, 0, 15, 0, 4, 0, 17, 0, 4, 0,189, 4, 4, 0,197, 4, 4, 0,198, 4,
+ 4, 0,199, 4, 4, 0,200, 4, 7, 0,201, 4, 4, 0,202, 4, 4, 0, 90, 0, 4, 0,203, 4, 4, 0,204, 4, 4, 0,205, 4,
+ 4, 0,206, 4, 4, 0,207, 4, 26, 0, 30, 0,182, 0, 7, 0, 4, 0,208, 4, 7, 0,209, 4, 7, 0,210, 4, 7, 0,211, 4,
+ 4, 0,212, 4, 2, 0, 19, 0, 2, 0, 37, 0,183, 0, 11, 0,183, 0, 0, 0,183, 0, 1, 0, 0, 0, 20, 0, 66, 0,213, 4,
+ 67, 0,214, 4, 4, 0,111, 3, 4, 0,215, 4, 4, 0,216, 4, 4, 0, 37, 0, 4, 0,217, 4, 4, 0,218, 4,184, 0,135, 0,
+178, 0,219, 4,179, 0,220, 4,180, 0,221, 4,181, 0,222, 4, 4, 0, 17, 3, 4, 0,126, 0, 4, 0, 34, 4, 4, 0,223, 4,
+ 4, 0,224, 4, 4, 0,225, 4, 4, 0,226, 4, 2, 0, 19, 0, 2, 0,227, 4, 7, 0,101, 2, 7, 0,228, 4, 7, 0,229, 4,
+ 7, 0,230, 4, 7, 0,231, 4, 7, 0,232, 4, 2, 0,233, 4, 2, 0,234, 4, 2, 0,235, 4, 2, 0,236, 4, 2, 0,246, 0,
+ 2, 0,237, 4, 2, 0,238, 4, 2, 0,239, 4, 2, 0,240, 4, 2, 0,241, 4, 2, 0, 91, 1, 2, 0,106, 0, 2, 0,242, 4,
+ 2, 0,243, 4, 2, 0,244, 4, 2, 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, 92, 1, 2, 0,251, 4, 2, 0,252, 4, 2, 0,253, 4, 2, 0,254, 4, 4, 0,255, 4, 4, 0, 69, 1, 4, 0, 0, 5,
+ 2, 0, 1, 5, 2, 0, 2, 5, 2, 0, 3, 5, 2, 0,121, 1, 2, 0, 4, 5, 2, 0, 5, 5, 2, 0, 6, 5, 2, 0, 7, 5,
+ 24, 0, 8, 5, 24, 0, 9, 5, 23, 0, 10, 5, 12, 0, 11, 5, 2, 0, 12, 5, 2, 0, 37, 0, 7, 0, 13, 5, 7, 0, 14, 5,
+ 7, 0, 15, 5, 7, 0, 16, 5, 4, 0, 17, 5, 7, 0, 18, 5, 7, 0, 19, 5, 7, 0, 20, 5, 7, 0, 21, 5, 2, 0, 22, 5,
+ 2, 0, 23, 5, 2, 0, 24, 5, 2, 0, 25, 5, 2, 0, 26, 5, 2, 0, 27, 5, 7, 0, 28, 5, 7, 0, 29, 5, 7, 0, 30, 5,
+ 2, 0, 31, 5, 2, 0, 32, 5, 2, 0, 33, 5, 2, 0, 34, 5, 2, 0, 35, 5, 2, 0, 36, 5, 2, 0, 37, 5, 2, 0, 38, 5,
+ 2, 0, 39, 5, 2, 0, 40, 5, 4, 0, 41, 5, 4, 0, 42, 5, 4, 0, 43, 5, 4, 0, 44, 5, 4, 0, 45, 5, 7, 0, 46, 5,
+ 4, 0, 47, 5, 4, 0, 48, 5, 4, 0, 49, 5, 4, 0, 50, 5, 7, 0, 51, 5, 7, 0, 52, 5, 7, 0, 53, 5, 7, 0, 54, 5,
+ 7, 0, 55, 5, 7, 0, 56, 5, 7, 0, 57, 5, 7, 0, 58, 5, 7, 0, 59, 5, 0, 0, 60, 5, 0, 0, 61, 5, 4, 0, 62, 5,
+ 2, 0, 63, 5, 2, 0,238, 1, 0, 0, 64, 5, 7, 0, 65, 5, 7, 0, 66, 5, 4, 0, 67, 5, 4, 0, 68, 5, 7, 0, 69, 5,
+ 7, 0, 70, 5, 2, 0, 71, 5, 2, 0, 72, 5, 7, 0, 73, 5, 2, 0, 74, 5, 2, 0, 75, 5, 4, 0, 76, 5, 2, 0, 77, 5,
+ 2, 0, 78, 5, 2, 0, 79, 5, 2, 0, 80, 5, 7, 0, 81, 5, 7, 0, 70, 0, 42, 0, 82, 5, 0, 0, 83, 5,185, 0, 9, 0,
+185, 0, 0, 0,185, 0, 1, 0, 0, 0, 20, 0, 2, 0, 84, 5, 2, 0, 85, 5, 2, 0, 86, 5, 2, 0, 43, 0, 7, 0, 87, 5,
+ 7, 0, 70, 0,186, 0, 7, 0, 2, 0,210, 2, 2, 0, 69, 1, 2, 0,109, 0, 2, 0, 88, 5, 7, 0, 89, 5, 7, 0, 70, 0,
+ 42, 0, 90, 5,187, 0, 5, 0, 7, 0, 91, 5, 0, 0, 17, 0, 0, 0, 43, 0, 0, 0, 70, 0, 0, 0,238, 1,188, 0, 26, 0,
+ 7, 0,123, 4, 7, 0,124, 4, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0, 92, 5, 2, 0,136, 1, 2, 0,126, 4, 2, 0,127, 4,
+ 2, 0,128, 4, 2, 0,129, 4, 2, 0,130, 4, 2, 0,131, 4,187, 0, 93, 5, 2, 0,233, 4, 2, 0,234, 4, 2, 0,235, 4,
+ 2, 0,236, 4, 2, 0,246, 0, 2, 0,237, 4, 2, 0, 94, 5, 2, 0,238, 4,186, 0, 95, 5, 2, 0, 96, 5, 2, 0,240, 4,
+ 2, 0,243, 4, 2, 0,244, 4,189, 0, 5, 0,189, 0, 0, 0,189, 0, 1, 0, 4, 0,221, 3, 0, 0,233, 3, 4, 0, 19, 0,
+190, 0, 6, 0,191, 0, 97, 5, 4, 0, 98, 5, 4, 0, 99, 5, 9, 0,100, 5, 0, 0,101, 5, 4, 0, 37, 0,192, 0, 6, 0,
+190, 0,102, 5, 2, 0, 19, 0, 2, 0,103, 5, 2, 0,104, 5, 2, 0,105, 5, 9, 0,106, 5,193, 0, 4, 0, 2, 0,106, 0,
+ 2, 0,221, 2, 2, 0,227, 3, 2, 0,107, 5,194, 0, 14, 0, 2, 0, 19, 0, 2, 0,108, 5, 2, 0,109, 5, 2, 0,110, 5,
+193, 0,111, 5, 9, 0,106, 5, 7, 0,112, 5, 7, 0, 57, 0, 4, 0,113, 5, 4, 0,114, 5, 4, 0,115, 5, 4, 0,116, 5,
+ 46, 0,134, 0, 32, 0,164, 0,195, 0, 4, 0,195, 0, 0, 0,195, 0, 1, 0, 0, 0,117, 5, 7, 0,118, 5,196, 0, 6, 0,
+190, 0,102, 5, 7, 0,119, 5, 4, 0, 90, 0, 0, 0,120, 5, 0, 0,121, 5, 0, 0,190, 2,197, 0, 7, 0,190, 0,102, 5,
+ 2, 0, 69, 1, 2, 0, 19, 0, 4, 0, 36, 0, 4, 0,122, 5, 86, 0,123, 5, 9, 0,106, 5,198, 0, 74, 0,197, 0,124, 5,
+197, 0,125, 5,196, 0, 80, 3, 7, 0,126, 5, 2, 0,127, 5, 2, 0,128, 5, 7, 0,129, 5, 7, 0,130, 5, 2, 0,227, 3,
+ 2, 0,131, 5, 7, 0,132, 5, 7, 0,133, 5, 7, 0,134, 5, 2, 0,135, 5, 2, 0,113, 5, 2, 0,136, 5, 2, 0,137, 5,
+ 2, 0,138, 5, 2, 0,139, 5, 7, 0,140, 5, 7, 0,141, 5, 7, 0,142, 5, 2, 0,143, 5, 2, 0,144, 5, 2, 0,145, 5,
+ 2, 0,146, 5, 2, 0,147, 5, 2, 0,148, 5, 2, 0,149, 5,192, 0,150, 5,194, 0,151, 5, 7, 0,152, 5, 7, 0,153, 5,
+ 7, 0,154, 5, 2, 0,155, 5, 2, 0,156, 5, 0, 0,157, 5, 0, 0,158, 5, 0, 0,159, 5, 0, 0,160, 5, 0, 0,161, 5,
+ 0, 0,162, 5, 2, 0,163, 5, 7, 0,164, 5, 7, 0,165, 5, 7, 0,166, 5, 7, 0,167, 5, 7, 0,168, 5, 7, 0,169, 5,
+ 7, 0,170, 5, 7, 0,171, 5, 7, 0,172, 5, 7, 0,173, 5, 2, 0,174, 5, 0, 0,175, 5, 0, 0,176, 5, 0, 0,177, 5,
+ 0, 0,178, 5, 32, 0,179, 5, 0, 0,180, 5, 0, 0,181, 5, 0, 0,182, 5, 0, 0,183, 5, 0, 0,184, 5, 0, 0,185, 5,
+ 0, 0,186, 5, 0, 0,187, 5, 2, 0,188, 5, 2, 0,189, 5, 2, 0,190, 5, 2, 0,191, 5, 2, 0,192, 5, 4, 0,193, 5,
+ 4, 0,194, 5,199, 0, 8, 0, 4, 0,195, 5, 4, 0,196, 5, 4, 0,197, 5, 4, 0,198, 5, 4, 0,199, 5, 4, 0,200, 5,
+ 4, 0, 54, 0, 4, 0,125, 2,200, 0, 3, 0, 7, 0,201, 5, 2, 0,202, 5, 2, 0, 19, 0,201, 0, 2, 0, 7, 0,203, 5,
+ 4, 0, 19, 0, 46, 0, 38, 0, 27, 0, 31, 0, 39, 0, 75, 0, 32, 0,204, 5,176, 0,205, 5, 46, 0,206, 5, 47, 0,238, 0,
+ 12, 0,207, 5,177, 0,208, 5, 32, 0,209, 5, 7, 0,210, 5, 7, 0,211, 5, 7, 0,212, 5, 7, 0,213, 5, 4, 0,111, 3,
+ 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1,202, 0,214, 5,198, 0,215, 5,203, 0,216, 5,184, 0,182, 0,182, 0,217, 5,
+ 12, 0,100, 0, 12, 0,218, 5, 12, 0,219, 5,204, 0,220, 5, 2, 0,221, 5, 2, 0,222, 5, 2, 0,247, 0, 2, 0,223, 5,
+ 4, 0,224, 5, 4, 0,225, 5, 12, 0,226, 5,187, 0, 93, 5,188, 0,227, 5,200, 0,228, 5,162, 0, 93, 3,201, 0,229, 5,
+205, 0, 6, 0, 47, 0,238, 0, 45, 0, 57, 1, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0,106, 0, 7, 0,230, 5,206, 0, 36, 0,
+ 7, 0,231, 5, 7, 0,232, 5, 7, 0,233, 5, 7, 0,234, 5, 7, 0,235, 5, 7, 0,236, 5, 7, 0,237, 5, 7, 0,238, 5,
+ 7, 0,239, 5, 7, 0, 76, 1, 7, 0,240, 5, 7, 0,241, 5, 7, 0,242, 5, 7, 0,243, 5, 7, 0,171, 0, 2, 0,244, 5,
+ 2, 0,245, 5, 2, 0, 70, 2, 2, 0,246, 5, 2, 0,247, 5, 2, 0,248, 5, 2, 0,249, 5, 7, 0,250, 5, 7, 0,251, 5,
+ 71, 0,252, 5,162, 0, 93, 3,206, 0,253, 5,207, 0,254, 5,208, 0,255, 5,209, 0, 0, 6,210, 0, 1, 6,211, 0, 2, 6,
+ 7, 0, 3, 6, 2, 0, 4, 6, 2, 0, 5, 6, 4, 0,238, 1,212, 0, 54, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6,
+ 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, 7, 0,239, 5, 7, 0, 76, 1, 7, 0, 43, 0, 4, 0, 10, 6, 2, 0,248, 5,
+ 2, 0,249, 5, 32, 0,204, 5, 32, 0, 11, 6,205, 0, 12, 6,212, 0,253, 5, 0, 0, 13, 6, 4, 0,111, 3, 4, 0, 14, 6,
+ 2, 0, 15, 6, 2, 0, 70, 0, 2, 0, 16, 6, 2, 0, 17, 6, 2, 0,238, 1, 2, 0, 19, 0, 2, 0, 28, 2, 2, 0, 18, 6,
+ 7, 0,112, 0, 7, 0, 19, 6, 7, 0, 20, 6, 7, 0, 21, 6, 7, 0, 22, 6, 7, 0, 23, 6, 7, 0,171, 0, 7, 0,210, 5,
+ 2, 0, 24, 6, 2, 0,121, 1, 2, 0, 25, 6, 2, 0, 26, 6, 2, 0, 27, 6, 2, 0, 28, 6, 2, 0, 29, 6, 2, 0, 30, 6,
+ 2, 0, 31, 6, 2, 0, 32, 6, 4, 0, 33, 6, 12, 0, 34, 6, 2, 0, 35, 6, 2, 0,139, 2, 2, 0, 36, 6, 0, 0, 37, 6,
+ 0, 0, 38, 6, 9, 0, 39, 6,162, 0, 93, 3,214, 0, 25, 0, 24, 0, 36, 0, 24, 0, 64, 0, 23, 0, 40, 6, 23, 0, 41, 6,
+ 23, 0, 42, 6, 7, 0, 43, 6, 7, 0, 44, 6, 7, 0, 45, 6, 7, 0, 46, 6, 2, 0, 47, 6, 2, 0, 48, 6, 2, 0, 49, 6,
+ 2, 0, 50, 6, 2, 0, 51, 6, 2, 0, 19, 0, 2, 0, 52, 6, 2, 0, 53, 6, 2, 0, 54, 6, 2, 0, 55, 6, 2, 0, 56, 6,
+ 2, 0, 17, 6, 7, 0, 57, 6, 7, 0, 58, 6, 4, 0, 59, 6, 4, 0, 60, 6,213, 0, 6, 0,213, 0, 0, 0,213, 0, 1, 0,
+ 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,215, 0, 8, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6,
+ 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,216, 0, 61, 6, 46, 0,134, 0,217, 0, 14, 0,213, 0, 0, 0,213, 0, 1, 0,
+ 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,214, 0, 62, 6,218, 0, 63, 6, 12, 0, 64, 6, 2, 0, 69, 1,
+ 2, 0, 65, 6, 4, 0, 19, 0, 7, 0, 66, 6, 4, 0, 17, 6,219, 0, 20, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6,
+ 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,207, 0,254, 5,214, 0, 62, 6, 2, 0, 67, 6, 2, 0, 68, 6, 2, 0, 69, 6,
+ 2, 0, 70, 6, 2, 0, 52, 6, 2, 0, 71, 6, 0, 0, 19, 0, 0, 0,136, 1, 9, 0, 65, 2, 4, 0, 72, 6, 4, 0, 73, 6,
+ 27, 0, 74, 6,220, 0, 16, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,
+214, 0, 62, 6, 7, 0, 89, 2, 7, 0, 90, 2, 2, 0, 67, 6, 2, 0, 75, 6, 2, 0, 76, 6, 2, 0, 77, 6, 4, 0, 19, 0,
+ 7, 0, 78, 6,162, 0, 93, 3,221, 0, 16, 0, 0, 0, 79, 6, 0, 0, 80, 6, 0, 0, 81, 6, 0, 0, 82, 6, 2, 0, 17, 0,
+ 2, 0, 19, 0, 2, 0, 83, 6, 2, 0, 84, 6, 2, 0,181, 1, 2, 0, 85, 6, 4, 0, 86, 6, 4, 0, 87, 6, 2, 0, 88, 6,
+ 2, 0, 89, 6, 0, 0, 90, 6, 0, 0, 91, 6,222, 0, 16, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6,
+ 4, 0, 37, 0,221, 0, 92, 6,223, 0, 93, 6, 12, 0, 94, 6, 12, 0, 95, 6,224, 0, 96, 6,211, 0, 97, 6,225, 0, 98, 6,
+ 2, 0, 99, 6, 2, 0,100, 6, 2, 0,101, 6, 2, 0, 70, 0,226, 0, 17, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6,
+ 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,214, 0, 62, 6, 12, 0,102, 6,227, 0,103, 6, 0, 0,104, 6,228, 0,105, 6,
+ 4, 0,106, 6, 4, 0,107, 6, 2, 0, 19, 0, 2, 0,108, 6, 2, 0,109, 6, 2, 0, 37, 0,229, 0, 29, 0,213, 0, 0, 0,
+213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, 47, 0,229, 2, 45, 0, 57, 1, 63, 0,110, 6,
+ 2, 0,133, 0, 2, 0,111, 6, 2, 0, 70, 0, 2, 0,112, 6, 4, 0, 19, 0, 2, 0,113, 6, 2, 0,114, 6, 2, 0,115, 6,
+ 2, 0,238, 1, 0, 0,116, 6, 0, 0,117, 6, 0, 0,118, 6, 0, 0, 17, 6, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0, 78, 6,
+ 7, 0,121, 1, 7, 0,119, 6, 7, 0,120, 6,162, 0, 93, 3,230, 0, 11, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6,
+ 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, 2, 0, 65, 6, 2, 0, 19, 0, 4, 0, 37, 0,218, 0, 63, 6,214, 0, 62, 6,
+231, 0, 27, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, 42, 0,121, 6,
+ 4, 0,122, 6, 4, 0,123, 6, 2, 0, 90, 0, 2, 0,133, 0, 2, 0,124, 6, 0, 0,125, 6, 0, 0,126, 6, 4, 0,127, 6,
+ 4, 0,128, 6, 4, 0,129, 6, 4, 0,130, 6, 2, 0,131, 6, 2, 0,132, 6, 7, 0,133, 6, 23, 0,134, 6, 23, 0,135, 6,
+ 4, 0,136, 6, 4, 0,137, 6, 0, 0,138, 6, 0, 0,139, 6,232, 0, 10, 0, 27, 0, 31, 0, 9, 0,140, 6, 9, 0,141, 6,
+ 9, 0,142, 6, 9, 0,143, 6, 9, 0,144, 6, 4, 0, 90, 0, 4, 0,145, 6, 0, 0,146, 6, 0, 0,147, 6,233, 0, 10, 0,
+213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6,232, 0,148, 6, 2, 0, 90, 0, 2, 0,133, 0,
+ 4, 0, 43, 0, 9, 0,149, 6,234, 0, 8, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6,
+214, 0, 62, 6, 4, 0, 19, 0, 4, 0,150, 6,235, 0, 23, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6,
+ 7, 0, 8, 6, 2, 0, 9, 6,214, 0, 62, 6, 27, 0,151, 6, 27, 0, 81, 0, 2, 0, 19, 0, 2, 0,133, 0, 7, 0,152, 6,
+ 9, 0,153, 6, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0,154, 6, 7, 0,155, 6, 60, 0, 58, 1, 60, 0,156, 6, 4, 0,157, 6,
+ 2, 0,158, 6, 2, 0, 37, 0,162, 0, 93, 3,236, 0, 10, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6,
+ 7, 0, 8, 6, 2, 0, 9, 6, 2, 0, 19, 0, 2, 0,120, 3, 4, 0, 37, 0,162, 0, 93, 3,237, 0, 42, 0,213, 0, 0, 0,
+213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,214, 0, 62, 6,223, 0, 93, 6, 0, 0, 79, 6,
+ 0, 0, 80, 6, 0, 0, 81, 6, 2, 0, 17, 0, 2, 0, 89, 6, 2, 0, 19, 0, 2, 0, 83, 6, 9, 0,153, 6, 4, 0, 86, 6,
+ 4, 0,159, 6, 4, 0,160, 6, 4, 0, 87, 6, 23, 0,161, 6, 23, 0,162, 6, 7, 0,163, 6, 7, 0,164, 6, 7, 0,165, 6,
+ 7, 0,152, 6, 2, 0,166, 6, 2, 0,237, 0, 2, 0,181, 1, 2, 0, 85, 6, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0,167, 6,
+ 2, 0,168, 6, 9, 0,169, 6, 9, 0,170, 6, 9, 0,171, 6, 9, 0,172, 6, 9, 0,173, 6, 2, 0,174, 6, 0, 0, 91, 6,
+ 57, 0,175, 6,238, 0, 7, 0,238, 0, 0, 0,238, 0, 1, 0, 4, 0,176, 6, 4, 0, 23, 0, 0, 0, 84, 0, 4, 0,177, 6,
+ 4, 0, 17, 0,239, 0, 14, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,
+ 4, 0, 17, 0, 4, 0,178, 6, 4, 0, 19, 0, 4, 0,124, 6, 12, 0,179, 6, 12, 0,180, 6, 0, 0,181, 6, 0, 0,182, 6,
+240, 0, 5, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 4, 0, 37, 0,241, 0, 7, 0,241, 0, 0, 0,
+241, 0, 1, 0, 0, 0,183, 6, 2, 0,184, 6, 2, 0,185, 6, 2, 0,186, 6, 2, 0, 37, 0,242, 0, 12, 0, 2, 0,185, 6,
+ 2, 0,187, 6, 2, 0,188, 6, 0, 0,190, 2, 2, 0,189, 6, 2, 0,190, 6, 2, 0,191, 6, 2, 0,192, 6, 2, 0,193, 6,
+ 2, 0, 52, 6, 7, 0,194, 6, 7, 0,195, 6,243, 0, 18, 0,243, 0, 0, 0,243, 0, 1, 0, 0, 0,233, 3,242, 0,196, 6,
+242, 0,197, 6,242, 0,198, 6,242, 0,199, 6, 7, 0,200, 6, 2, 0,201, 6, 2, 0,202, 6, 2, 0,203, 6, 2, 0,204, 6,
+ 2, 0,205, 6, 2, 0,206, 6, 2, 0,207, 6, 2, 0,208, 6, 2, 0,209, 6, 2, 0,210, 6,244, 0, 10, 0, 0, 0,211, 6,
+ 0, 0,212, 6, 0, 0,213, 6, 0, 0,214, 6, 0, 0,215, 6, 0, 0,216, 6, 2, 0,217, 6, 2, 0,218, 6, 2, 0,219, 6,
+ 2, 0, 37, 0,245, 0, 8, 0, 0, 0,220, 6, 0, 0,221, 6, 0, 0,222, 6, 0, 0,223, 6, 0, 0,224, 6, 0, 0,225, 6,
+ 7, 0,230, 5, 7, 0, 37, 0,246, 0, 17, 0,244, 0,226, 6,244, 0,227, 6,244, 0,228, 6,244, 0,229, 6,244, 0,230, 6,
+244, 0,231, 6,244, 0,232, 6,244, 0,233, 6,244, 0,234, 6,244, 0,235, 6,244, 0,236, 6,244, 0,237, 6,244, 0,238, 6,
+244, 0,239, 6,244, 0,240, 6,245, 0,241, 6, 0, 0,242, 6,247, 0, 71, 0, 0, 0,243, 6, 0, 0,244, 6, 0, 0,215, 6,
+ 0, 0,245, 6, 0, 0,246, 6, 0, 0,247, 6, 0, 0,248, 6, 0, 0,249, 6, 0, 0,250, 6, 0, 0,251, 6, 0, 0,252, 6,
+ 0, 0,253, 6, 0, 0,254, 6, 0, 0,255, 6, 0, 0, 0, 7, 0, 0, 1, 7, 0, 0, 2, 7, 0, 0, 3, 7, 0, 0, 4, 7,
+ 0, 0, 5, 7, 0, 0, 6, 7, 0, 0, 7, 7, 0, 0, 8, 7, 0, 0, 9, 7, 0, 0, 10, 7, 0, 0, 11, 7, 0, 0, 12, 7,
+ 0, 0, 13, 7, 0, 0, 14, 7, 0, 0, 15, 7, 0, 0, 16, 7, 0, 0, 17, 7, 0, 0, 18, 7, 0, 0, 19, 7, 0, 0, 20, 7,
+ 0, 0, 21, 7, 0, 0, 22, 7, 0, 0, 23, 7, 0, 0, 24, 7, 0, 0, 25, 7, 0, 0, 26, 7, 0, 0, 27, 7, 0, 0, 28, 7,
+ 0, 0, 29, 7, 0, 0, 30, 7, 0, 0, 31, 7, 0, 0, 32, 7, 0, 0, 33, 7, 0, 0, 34, 7, 0, 0, 35, 7, 0, 0, 36, 7,
+ 0, 0, 37, 7, 0, 0, 38, 7, 0, 0, 39, 7, 0, 0, 40, 7, 0, 0, 41, 7, 0, 0, 42, 7, 0, 0, 43, 7, 0, 0, 44, 7,
+ 0, 0, 45, 7, 0, 0, 46, 7, 0, 0, 47, 7, 0, 0, 48, 7, 0, 0, 49, 7, 0, 0, 50, 7, 0, 0, 51, 7, 0, 0, 52, 7,
+ 0, 0, 53, 7, 0, 0, 54, 7, 0, 0, 55, 7, 0, 0, 92, 0,248, 0, 5, 0, 0, 0, 56, 7, 0, 0, 11, 7, 0, 0, 13, 7,
+ 2, 0, 19, 0, 2, 0, 37, 0,249, 0, 24, 0,249, 0, 0, 0,249, 0, 1, 0, 0, 0, 20, 0,246, 0, 57, 7,247, 0, 58, 7,
+247, 0, 59, 7,247, 0, 60, 7,247, 0, 61, 7,247, 0, 62, 7,247, 0, 63, 7,247, 0, 64, 7,247, 0, 65, 7,247, 0, 66, 7,
+247, 0, 67, 7,247, 0, 68, 7,247, 0, 69, 7,247, 0, 70, 7,247, 0, 71, 7,247, 0, 72, 7,247, 0, 73, 7,247, 0, 74, 7,
+248, 0, 75, 7, 4, 0, 76, 7, 4, 0, 37, 0,250, 0, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,138, 2, 7, 0, 77, 7,
+ 7, 0, 43, 2,251, 0, 73, 0, 4, 0, 19, 0, 4, 0, 78, 7, 4, 0, 79, 7, 0, 0, 80, 7, 0, 0, 81, 7, 0, 0, 82, 7,
+ 0, 0, 83, 7, 0, 0, 84, 7, 0, 0, 85, 7, 0, 0, 86, 7, 0, 0, 87, 7, 0, 0, 88, 7, 2, 0, 89, 7, 2, 0, 90, 7,
+ 4, 0, 91, 7, 4, 0, 92, 7, 4, 0, 93, 7, 4, 0, 94, 7, 2, 0, 95, 7, 2, 0, 96, 7, 4, 0, 97, 7, 4, 0, 98, 7,
+ 4, 0, 99, 7, 4, 0,100, 7, 4, 0,101, 7, 4, 0,179, 6, 4, 0,102, 7, 2, 0,103, 7, 2, 0,104, 7, 2, 0,105, 7,
+ 2, 0,106, 7, 12, 0,107, 7, 12, 0,108, 7, 12, 0,109, 7, 12, 0,110, 7, 0, 0,111, 7, 2, 0,112, 7, 2, 0,113, 7,
+ 2, 0,114, 7, 2, 0,115, 7, 2, 0,116, 7, 2, 0,117, 7, 2, 0,118, 7, 2, 0,119, 7,250, 0,120, 7, 2, 0,121, 7,
+ 2, 0,122, 7, 2, 0,123, 7, 2, 0,124, 7, 2, 0,125, 7, 2, 0,126, 7, 2, 0,127, 7, 2, 0,128, 7, 4, 0,129, 7,
+ 4, 0,130, 7, 2, 0,131, 7, 2, 0,132, 7, 2, 0,133, 7, 2, 0,134, 7, 2, 0,135, 7, 2, 0,136, 7, 2, 0,137, 7,
+ 2, 0,138, 7, 2, 0,139, 7, 2, 0,140, 7, 2, 0,141, 7, 2, 0,142, 7, 0, 0,143, 7, 0, 0,144, 7, 7, 0,145, 7,
+ 2, 0,155, 5, 2, 0,156, 5, 55, 0,146, 7,216, 0, 21, 0, 27, 0, 31, 0, 12, 0,147, 7, 12, 0,148, 7, 12, 0,149, 7,
+ 12, 0, 6, 6, 46, 0,134, 0, 46, 0,150, 7, 2, 0,151, 7, 2, 0,152, 7, 2, 0,153, 7, 2, 0,154, 7, 2, 0,155, 7,
+ 2, 0,156, 7, 2, 0,157, 7, 2, 0, 37, 0, 2, 0,158, 7, 2, 0,159, 7, 4, 0, 70, 0,211, 0,160, 7, 9, 0,161, 7,
+ 2, 0,162, 7,252, 0, 5, 0,252, 0, 0, 0,252, 0, 1, 0,252, 0,163, 7, 13, 0,164, 7, 4, 0, 19, 0,253, 0, 7, 0,
+253, 0, 0, 0,253, 0, 1, 0,252, 0,165, 7,252, 0,166, 7, 2, 0, 9, 5, 2, 0, 19, 0, 4, 0, 37, 0,254, 0, 25, 0,
+254, 0, 0, 0,254, 0, 1, 0,255, 0,167, 7, 0, 1, 98, 6, 0, 0,168, 7, 0, 0,169, 7, 0, 0,170, 7, 2, 0,171, 7,
+ 2, 0,172, 7, 2, 0,173, 7, 2, 0,174, 7, 2, 0,175, 7, 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,176, 7, 2, 0,177, 7,
+ 2, 0,178, 7, 4, 0,179, 7,254, 0,180, 7, 9, 0,181, 7, 4, 0,182, 7, 4, 0,183, 7, 4, 0,184, 7, 4, 0,185, 7,
+ 0, 0,186, 7, 1, 1, 22, 0, 1, 1, 0, 0, 1, 1, 1, 0,252, 0,165, 7,252, 0,166, 7,252, 0,187, 7,252, 0,188, 7,
+216, 0,189, 7, 23, 0, 52, 0, 0, 0, 7, 6, 0, 0,190, 7, 2, 0, 53, 6, 2, 0, 54, 6, 2, 0,191, 7, 2, 0, 37, 0,
+ 2, 0,154, 7, 2, 0,177, 6, 2, 0, 19, 0, 2, 1,167, 7, 12, 0,192, 7, 12, 0, 6, 6, 12, 0,193, 7, 12, 0,194, 7,
+ 3, 1, 21, 0, 3, 1, 0, 0, 3, 1, 1, 0,214, 0, 62, 6, 23, 0,195, 7, 23, 0,196, 7, 2, 0, 53, 6, 2, 0, 54, 6,
+ 2, 0,197, 7, 2, 0,198, 7, 2, 0,199, 7, 2, 0, 19, 0, 7, 0, 85, 2, 2, 0,153, 7, 2, 0,157, 7, 4, 0, 43, 0,
+ 4, 1,167, 7, 12, 0,200, 7, 12, 0,201, 7, 12, 0,193, 7, 0, 0,202, 7, 9, 0,203, 7, 5, 1, 12, 0, 0, 0,204, 7,
+ 2, 0,205, 7, 2, 0,206, 7, 2, 0,207, 7, 2, 0,208, 7, 2, 0,252, 4, 2, 0,247, 4,216, 0,209, 7, 46, 0,210, 7,
+ 4, 0,211, 7, 4, 0,212, 7, 0, 0, 35, 0, 6, 1, 1, 0, 0, 0,213, 7, 7, 1, 8, 0, 57, 0,214, 7, 57, 0,215, 7,
+ 7, 1,216, 7, 7, 1,217, 7, 7, 1,218, 7, 2, 0,129, 0, 2, 0, 19, 0, 4, 0,219, 7, 8, 1, 4, 0, 4, 0,122, 6,
+ 4, 0,220, 7, 4, 0,127, 6, 4, 0,221, 7, 9, 1, 2, 0, 4, 0,222, 7, 4, 0,223, 7, 10, 1, 7, 0, 7, 0,224, 7,
+ 7, 0,225, 7, 7, 0,226, 7, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,118, 4, 7, 0,227, 7, 11, 1, 6, 0, 0, 0,228, 7,
+ 0, 0, 81, 6, 49, 0,137, 0, 2, 0,106, 0, 2, 0,251, 4, 4, 0, 37, 0, 12, 1, 21, 0, 12, 1, 0, 0, 12, 1, 1, 0,
+ 4, 0, 57, 0, 4, 0, 23, 0, 4, 0, 28, 0, 4, 0,229, 7, 4, 0,230, 7, 4, 0,231, 7, 6, 1,232, 7, 0, 0,228, 7,
+ 4, 0,233, 7, 4, 0,234, 7, 11, 1, 87, 3, 8, 1,235, 7, 9, 1,236, 7, 10, 1,237, 7, 7, 1,238, 7, 7, 1,239, 7,
+ 7, 1,240, 7, 57, 0,241, 7, 57, 0,242, 7, 13, 1, 12, 0, 0, 0, 5, 2, 9, 0,223, 0, 0, 0,224, 0, 4, 0,227, 0,
+ 4, 0,235, 0, 9, 0,228, 0, 7, 0,230, 0, 7, 0,231, 0, 9, 0,243, 7, 9, 0,244, 7, 9, 0,232, 0, 9, 0,234, 0,
+ 14, 1, 43, 0, 14, 1, 0, 0, 14, 1, 1, 0, 9, 0,245, 7, 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 19, 0, 4, 0, 17, 0,
+ 4, 0, 23, 0, 4, 0, 88, 0, 4, 0,246, 7, 4, 0,247, 7, 4, 0,230, 7, 4, 0,231, 7, 4, 0,248, 7, 4, 0,246, 0,
+ 4, 0,249, 7, 4, 0,250, 7, 7, 0,251, 7, 7, 0,252, 7, 4, 0,126, 0, 4, 0,253, 7, 12, 1,254, 7, 36, 0, 80, 0,
+ 46, 0,134, 0, 49, 0,137, 0, 7, 0,255, 7, 7, 0, 0, 8, 13, 1, 59, 1, 14, 1, 1, 8, 14, 1, 2, 8, 14, 1, 3, 8,
+ 12, 0, 4, 8, 15, 1, 5, 8, 16, 1, 6, 8, 7, 0, 7, 8, 7, 0, 8, 8, 4, 0, 9, 8, 7, 0, 10, 8, 9, 0, 11, 8,
+ 4, 0, 12, 8, 4, 0, 13, 8, 4, 0, 14, 8, 7, 0, 15, 8, 17, 1, 4, 0, 17, 1, 0, 0, 17, 1, 1, 0, 12, 0, 16, 8,
+ 14, 1, 17, 8,202, 0, 6, 0, 12, 0, 18, 8, 12, 0, 4, 8, 12, 0, 19, 8, 14, 1, 20, 8, 0, 0, 21, 8, 0, 0, 22, 8,
+ 18, 1, 4, 0, 7, 0, 23, 8, 7, 0,109, 0, 2, 0, 24, 8, 2, 0, 25, 8, 19, 1, 6, 0, 7, 0, 26, 8, 7, 0, 27, 8,
+ 7, 0, 28, 8, 7, 0, 29, 8, 4, 0, 30, 8, 4, 0, 31, 8, 20, 1, 13, 0, 7, 0, 32, 8, 7, 0, 33, 8, 7, 0, 34, 8,
+ 7, 0, 35, 8, 7, 0, 36, 8, 7, 0, 37, 8, 7, 0, 38, 8, 7, 0, 39, 8, 7, 0, 40, 8, 7, 0, 41, 8, 4, 0,233, 2,
+ 4, 0, 42, 8, 4, 0, 43, 8, 21, 1, 2, 0, 7, 0, 91, 5, 7, 0, 37, 0, 22, 1, 5, 0, 7, 0, 44, 8, 7, 0, 45, 8,
+ 4, 0, 90, 0, 4, 0,191, 2, 4, 0, 46, 8, 23, 1, 6, 0, 23, 1, 0, 0, 23, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0,
+ 2, 0, 47, 8, 2, 0, 57, 0, 24, 1, 8, 0, 24, 1, 0, 0, 24, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 47, 8,
+ 2, 0, 57, 0, 7, 0, 23, 0, 7, 0,126, 0, 25, 1, 45, 0, 25, 1, 0, 0, 25, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0,
+ 2, 0, 47, 8, 2, 0,242, 0, 2, 0, 28, 4, 2, 0, 48, 8, 7, 0, 49, 8, 7, 0, 89, 0, 7, 0,246, 2, 4, 0, 50, 8,
+ 4, 0, 82, 0, 4, 0,193, 2, 7, 0, 51, 8, 7, 0, 52, 8, 7, 0, 53, 8, 7, 0, 54, 8, 7, 0, 55, 8, 7, 0, 56, 8,
+ 7, 0,243, 2, 7, 0, 56, 1, 7, 0, 57, 8, 7, 0, 58, 8, 7, 0, 37, 0, 7, 0, 59, 8, 7, 0, 60, 8, 7, 0, 61, 8,
+ 2, 0, 62, 8, 2, 0, 63, 8, 2, 0, 64, 8, 2, 0, 65, 8, 2, 0, 66, 8, 2, 0, 67, 8, 2, 0, 68, 8, 2, 0, 69, 8,
+ 2, 0, 28, 2, 2, 0, 70, 8, 2, 0, 25, 2, 2, 0, 71, 8, 0, 0, 72, 8, 0, 0, 73, 8, 7, 0,240, 0, 26, 1, 74, 8,
+ 67, 0,241, 1, 27, 1, 16, 0, 27, 1, 0, 0, 27, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 47, 8, 2, 0,242, 0,
+ 7, 0,238, 2, 7, 0,239, 2, 7, 0,240, 2, 7, 0, 74, 2, 7, 0,241, 2, 7, 0,242, 2, 7, 0, 75, 8, 7, 0,243, 2,
+ 7, 0,245, 2, 7, 0,246, 2,228, 0, 5, 0, 2, 0, 17, 0, 2, 0,219, 7, 2, 0, 19, 0, 2, 0, 76, 8, 27, 0,151, 6,
+227, 0, 3, 0, 4, 0, 69, 0, 4, 0, 77, 8,228, 0, 2, 0, 28, 1, 7, 0, 28, 1, 0, 0, 28, 1, 1, 0, 0, 0, 20, 0,
+ 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, 9, 0, 78, 8, 29, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0, 79, 8,
+ 4, 0, 80, 8, 4, 0, 37, 0, 30, 1, 4, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 43, 0, 2, 0, 70, 0, 31, 1, 4, 0,
+ 0, 0, 20, 0, 66, 0, 81, 8, 7, 0, 76, 1, 7, 0, 37, 0, 32, 1, 6, 0, 2, 0, 82, 8, 2, 0, 83, 8, 2, 0, 17, 0,
+ 2, 0, 84, 8, 0, 0, 85, 8, 0, 0, 86, 8, 33, 1, 5, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0, 87, 8,
+ 0, 0, 88, 8, 34, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 35, 1, 4, 0, 2, 0, 89, 8, 2, 0, 90, 8,
+ 2, 0, 19, 0, 2, 0, 37, 0, 36, 1, 6, 0, 0, 0, 20, 0, 0, 0, 91, 8, 2, 0, 92, 8, 2, 0,243, 2, 2, 0, 69, 1,
+ 2, 0, 70, 0, 37, 1, 5, 0, 0, 0, 20, 0, 7, 0,109, 0, 7, 0,120, 4, 2, 0, 19, 0, 2, 0,205, 2, 38, 1, 3, 0,
+ 0, 0, 20, 0, 4, 0,193, 2, 4, 0, 89, 8, 39, 1, 7, 0, 0, 0, 20, 0, 7, 0,120, 4, 0, 0, 93, 8, 0, 0, 94, 8,
+ 2, 0, 69, 1, 2, 0, 43, 0, 4, 0, 95, 8, 40, 1, 4, 0, 0, 0, 96, 8, 0, 0, 97, 8, 4, 0, 17, 0, 7, 0,209, 2,
+ 41, 1, 3, 0, 32, 0, 98, 8, 0, 0, 99, 8, 0, 0,100, 8, 42, 1, 18, 0, 42, 1, 0, 0, 42, 1, 1, 0, 2, 0, 17, 0,
+ 2, 0,101, 8, 2, 0, 19, 0, 2, 0,102, 8, 2, 0,103, 8, 2, 0,104, 8, 2, 0, 43, 0, 2, 0, 70, 0, 0, 0, 20, 0,
+ 9, 0, 2, 0, 43, 1,105, 8, 32, 0, 45, 0, 2, 0,107, 5, 2, 0, 7, 8, 2, 0,106, 8, 2, 0, 37, 0, 44, 1, 11, 0,
+ 0, 0, 20, 0, 0, 0, 17, 0, 0, 0,107, 8, 2, 0, 19, 0, 2, 0,205, 2, 2, 0,108, 8, 4, 0,109, 8, 4, 0,110, 8,
+ 4, 0,111, 8, 4, 0,112, 8, 4, 0,113, 8, 45, 1, 1, 0, 0, 0,114, 8, 46, 1, 4, 0, 42, 0,121, 6, 0, 0,115, 8,
+ 4, 0, 69, 1, 4, 0, 19, 0, 43, 1, 18, 0, 43, 1, 0, 0, 43, 1, 1, 0, 43, 1,116, 8, 2, 0, 17, 0, 2, 0, 19, 0,
+ 2, 0,117, 8, 2, 0,104, 8, 2, 0,101, 8, 2, 0,118, 8, 2, 0, 70, 0, 2, 0,238, 1, 0, 0, 20, 0, 9, 0, 2, 0,
+ 47, 1,105, 8, 42, 1,119, 8, 2, 0, 15, 0, 2, 0,120, 8, 4, 0,121, 8, 48, 1, 3, 0, 4, 0,219, 2, 4, 0, 37, 0,
+ 32, 0, 45, 0, 49, 1, 12, 0,160, 0,122, 8, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 49, 8, 4, 0, 89, 0, 0, 0, 20, 0,
+ 0, 0,123, 8, 2, 0,124, 8, 2, 0,125, 8, 2, 0,126, 8, 2, 0,127, 8, 7, 0,128, 8, 50, 1, 13, 0, 2, 0, 19, 0,
+ 2, 0,129, 8, 4, 0, 49, 8, 4, 0, 89, 0, 2, 0,130, 8, 7, 0,242, 3, 7, 0,131, 8, 15, 1, 5, 8, 51, 1,132, 8,
+ 2, 0, 17, 0, 2, 0,133, 8, 2, 0,134, 8, 2, 0,135, 8, 52, 1, 11, 0, 4, 0,219, 2, 2, 0, 17, 0, 2, 0, 19, 0,
+ 32, 0, 45, 0, 80, 0,136, 8, 0, 0, 20, 0, 7, 0,137, 8, 7, 0,138, 8, 7, 0,128, 3, 2, 0,139, 8, 2, 0,140, 8,
+ 53, 1, 5, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 37, 0, 46, 0,134, 0, 32, 0,204, 5, 54, 1, 5, 0, 4, 0, 19, 0,
+ 4, 0, 17, 0, 0, 0, 20, 0, 0, 0, 87, 8, 32, 0, 45, 0, 55, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,101, 8,
+ 2, 0,129, 3, 7, 0,141, 8, 7, 0,142, 8, 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,100, 3, 7, 0,103, 3, 7, 0,143, 8,
+ 7, 0,144, 8, 32, 0,145, 8, 56, 1, 10, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 49, 8, 4, 0, 89, 0, 0, 0, 20, 0,
+ 0, 0,123, 8, 2, 0, 43, 0, 2, 0, 64, 0, 2, 0,146, 8, 2, 0,147, 8, 57, 1, 8, 0, 32, 0, 45, 0, 7, 0,240, 2,
+ 7, 0,148, 8, 7, 0,149, 8, 7, 0,235, 2, 2, 0, 19, 0, 2, 0,205, 2, 7, 0,150, 8, 58, 1, 12, 0, 2, 0, 17, 0,
+ 2, 0, 69, 1, 2, 0, 19, 0, 2, 0,243, 2, 2, 0,219, 2, 2, 0,151, 8, 4, 0, 37, 0, 7, 0,152, 8, 7, 0,153, 8,
+ 7, 0,154, 8, 7, 0,155, 8, 0, 0,156, 8, 59, 1, 9, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 49, 8, 4, 0, 89, 0,
+ 0, 0, 20, 0, 2, 0,136, 1, 2, 0, 64, 0, 2, 0,146, 8, 2, 0,147, 8, 60, 1, 7, 0, 4, 0,193, 2, 4, 0,157, 8,
+ 4, 0,158, 8, 4, 0,159, 8, 7, 0,160, 8, 7, 0,161, 8, 0, 0, 93, 8, 61, 1, 7, 0, 0, 0,162, 8, 32, 0,163, 8,
+ 0, 0, 99, 8, 2, 0,164, 8, 2, 0, 43, 0, 4, 0, 70, 0, 0, 0,100, 8, 62, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0,
+ 4, 0, 49, 8, 4, 0, 89, 0, 0, 0,165, 8, 0, 0,166, 8, 63, 1, 1, 0, 4, 0, 19, 0, 64, 1, 6, 0, 0, 0, 92, 0,
+ 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,167, 8, 7, 0,168, 8, 42, 0,121, 6, 65, 1, 4, 0, 0, 0, 70, 2, 2, 0, 19, 0,
+ 4, 0, 17, 0, 32, 0, 45, 0, 66, 1, 2, 0, 4, 0, 17, 0, 4, 0, 42, 6, 67, 1, 6, 0, 0, 0, 96, 8, 0, 0, 97, 8,
+ 4, 0, 17, 0, 7, 0, 36, 2, 32, 0, 50, 3, 32, 0,169, 8, 47, 1, 10, 0, 47, 1, 0, 0, 47, 1, 1, 0, 47, 1,116, 8,
+ 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,101, 8, 2, 0,170, 8, 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 45, 0, 68, 1, 10, 0,
+ 7, 0,128, 3, 7, 0,171, 8, 7, 0,172, 8, 7, 0,173, 8, 7, 0,174, 8, 4, 0, 19, 0, 7, 0,151, 8, 7, 0,175, 8,
+ 7, 0,176, 8, 7, 0, 37, 0, 16, 1, 12, 0, 16, 1, 0, 0, 16, 1, 1, 0, 15, 1,177, 8, 9, 0,223, 0, 4, 0,171, 3,
+ 4, 0,229, 3, 4, 0,230, 3, 4, 0,178, 8, 4, 0,179, 8, 4, 0,180, 8, 7, 0,242, 3, 7, 0, 37, 0, 51, 1, 8, 0,
+ 7, 0,181, 8, 7, 0,182, 8, 7, 0,183, 8, 7, 0,184, 8, 7, 0,185, 8, 7, 0,186, 8, 7, 0,187, 8, 7, 0,188, 8,
+ 15, 1, 15, 0, 27, 0, 31, 0, 0, 0,222, 0, 43, 0,149, 0, 9, 0,223, 0, 43, 0,189, 8, 36, 0, 80, 0, 7, 0,242, 3,
+ 7, 0,190, 8, 7, 0,131, 8, 7, 0,181, 8, 7, 0,182, 8, 7, 0,191, 8, 4, 0, 90, 0, 4, 0,180, 8, 9, 0,192, 8,
+ 69, 1, 15, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 1, 1,193, 8,214, 0, 62, 6,
+ 15, 1, 5, 8, 2, 0, 69, 1, 2, 0,129, 8, 2, 0, 89, 2, 2, 0, 90, 2, 2, 0, 19, 0, 2, 0,114, 6, 4, 0, 70, 0,
+ 70, 1, 6, 0, 70, 1, 0, 0, 70, 1, 1, 0, 32, 0, 45, 0, 9, 0,194, 8, 4, 0,247, 0, 4, 0, 37, 0, 67, 0, 4, 0,
+ 27, 0, 31, 0, 12, 0,195, 8, 4, 0,131, 0, 7, 0,196, 8, 71, 1, 27, 0, 71, 1, 0, 0, 71, 1, 1, 0, 26, 0,197, 8,
+ 71, 1, 38, 0, 12, 0,198, 8, 0, 0, 20, 0, 7, 0,199, 8, 7, 0,200, 8, 7, 0,201, 8, 7, 0,202, 8, 4, 0, 19, 0,
+ 7, 0,203, 8, 7, 0,204, 8, 7, 0,205, 8, 7, 0, 76, 1, 7, 0, 36, 2, 7, 0,206, 8, 7, 0,191, 2, 7, 0,207, 8,
+ 7, 0,208, 8, 7, 0,209, 8, 7, 0,210, 8, 7, 0,211, 8, 7, 0,172, 0, 4, 0,131, 0, 2, 0,136, 5, 2, 0,136, 1,
+ 72, 1, 25, 0, 27, 0, 31, 0, 39, 0, 75, 0, 12, 0,212, 8, 12, 0,213, 8, 12, 0,214, 8, 71, 1,215, 8, 9, 0,216, 8,
+ 9, 0,217, 8, 4, 0, 19, 0, 4, 0, 15, 6, 2, 0,247, 2, 2, 0, 72, 6, 4, 0, 37, 0, 4, 0,131, 0, 4, 0,218, 8,
+ 2, 0,219, 8, 2, 0,220, 8, 2, 0,221, 8, 2, 0,222, 8, 4, 0,223, 8, 4, 0,224, 8, 4, 0,225, 8, 4, 0,226, 8,
+ 4, 0,227, 8, 4, 0,228, 8, 73, 1, 2, 0, 7, 0,152, 2, 4, 0, 19, 0, 74, 1, 5, 0, 73, 1,229, 8, 4, 0,191, 2,
+ 4, 0,230, 8, 4, 0,231, 8, 4, 0, 19, 0, 75, 1, 6, 0, 4, 0, 37, 0, 4, 0, 72, 6, 4, 0,225, 8, 4, 0,226, 8,
+ 4, 0,227, 8, 4, 0,228, 8, 76, 1, 42, 0, 76, 1, 0, 0, 76, 1, 1, 0, 26, 0,197, 8, 12, 0,155, 3, 0, 0, 20, 0,
+ 2, 0, 19, 0, 2, 0,232, 8, 2, 0,233, 8, 2, 0,234, 8, 2, 0,114, 3, 2, 0,235, 8, 4, 0, 72, 2, 4, 0,225, 8,
+ 4, 0,226, 8, 71, 1,236, 8, 76, 1, 38, 0, 76, 1,237, 8, 12, 0,238, 8, 9, 0,239, 8, 9, 0,240, 8, 9, 0,241, 8,
+ 7, 0, 64, 1, 7, 0,172, 0, 7, 0,242, 8, 7, 0, 15, 2, 7, 0,105, 3, 7, 0,107, 3, 2, 0,137, 3, 2, 0, 37, 0,
+ 7, 0,243, 8, 7, 0,244, 8, 7, 0,110, 3, 7, 0,245, 8, 7, 0,246, 8, 7, 0,247, 8, 7, 0,248, 8, 7, 0,249, 8,
+ 7, 0,250, 8, 7, 0,251, 8, 7, 0,252, 8, 7, 0, 65, 2, 32, 0,253, 8,161, 0, 11, 0, 12, 0,254, 8, 2, 0, 19, 0,
+ 2, 0,255, 8, 7, 0,101, 2, 7, 0, 0, 9, 7, 0, 1, 9, 12, 0, 2, 9, 4, 0, 3, 9, 4, 0, 4, 9, 9, 0, 5, 9,
+ 9, 0, 6, 9, 77, 1, 1, 0, 4, 0, 4, 9, 78, 1, 12, 0, 4, 0, 4, 9, 7, 0,113, 8, 2, 0, 7, 9, 2, 0, 8, 9,
+ 7, 0, 9, 9, 7, 0, 10, 9, 2, 0, 11, 9, 2, 0, 19, 0, 7, 0, 12, 9, 7, 0, 13, 9, 7, 0, 14, 9, 7, 0, 15, 9,
+ 79, 1, 7, 0, 79, 1, 0, 0, 79, 1, 1, 0, 12, 0, 16, 9, 4, 0, 19, 0, 4, 0, 17, 9, 0, 0,233, 3,248, 0, 18, 9,
+160, 0, 7, 0, 27, 0, 31, 0, 12, 0, 19, 9, 12, 0,254, 8, 12, 0, 20, 9, 12, 0,100, 0, 4, 0, 19, 0, 4, 0, 21, 9,
+218, 0, 4, 0, 27, 0,177, 8, 12, 0,254, 8, 4, 0, 22, 9, 4, 0, 19, 0, 80, 1, 17, 0,213, 0, 0, 0,213, 0, 1, 0,
+ 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,214, 0, 62, 6,160, 0, 90, 3,218, 0, 23, 9, 0, 0, 69, 1,
+ 0, 0, 65, 6, 2, 0, 19, 0, 2, 0, 24, 9, 2, 0,115, 6, 2, 0,114, 6, 2, 0, 25, 9, 7, 0, 26, 9, 81, 1, 8, 0,
+ 81, 1, 0, 0, 81, 1, 1, 0, 79, 1, 27, 9, 36, 0, 80, 0, 12, 0, 94, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0, 28, 9,
+ 82, 1, 5, 0, 82, 1, 0, 0, 82, 1, 1, 0, 36, 0, 80, 0, 2, 0, 19, 0, 0, 0, 29, 9, 83, 1, 14, 0, 83, 1, 0, 0,
+ 83, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 30, 9, 0, 0, 31, 9, 0, 0, 29, 9, 7, 0, 32, 9,
+ 7, 0, 33, 9, 4, 0, 37, 0, 36, 0, 80, 0, 7, 0, 34, 9, 7, 0, 35, 9, 84, 1, 9, 0, 84, 1, 0, 0, 84, 1, 1, 0,
+ 32, 0, 36, 9, 0, 0,250, 2, 7, 0, 37, 9, 2, 0, 38, 9, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0, 39, 9, 85, 1, 7, 0,
+ 42, 0,121, 6, 26, 0,197, 8, 4, 0, 19, 0, 4, 0, 40, 9, 12, 0, 41, 9, 32, 0, 36, 9, 0, 0,250, 2, 86, 1, 15, 0,
+ 32, 0, 36, 9, 2, 0, 42, 9, 2, 0, 19, 0, 2, 0, 43, 9, 2, 0, 44, 9, 0, 0,250, 2, 32, 0, 45, 9, 0, 0, 46, 9,
+ 7, 0, 47, 9, 7, 0, 36, 2, 7, 0, 48, 9, 7, 0, 49, 9, 2, 0, 17, 0, 2, 0, 69, 1, 7, 0, 76, 1, 87, 1, 6, 0,
+ 32, 0, 36, 9, 7, 0,229, 8, 2, 0, 50, 9, 2, 0, 51, 9, 2, 0, 19, 0, 2, 0, 52, 9, 88, 1, 6, 0, 32, 0, 36, 9,
+ 4, 0, 53, 9, 4, 0, 54, 9, 4, 0, 90, 0, 4, 0, 37, 0, 0, 0,250, 2, 89, 1, 4, 0, 32, 0, 36, 9, 4, 0, 19, 0,
+ 4, 0, 53, 9, 0, 0,250, 2, 90, 1, 4, 0, 32, 0, 36, 9, 4, 0, 19, 0, 4, 0, 53, 9, 0, 0,250, 2, 91, 1, 10, 0,
+ 32, 0, 36, 9, 4, 0, 55, 9, 7, 0,125, 0, 4, 0, 19, 0, 2, 0,117, 6, 2, 0, 56, 9, 2, 0, 43, 0, 2, 0, 70, 0,
+ 7, 0, 57, 9, 0, 0,250, 2, 92, 1, 4, 0, 32, 0, 36, 9, 4, 0, 19, 0, 4, 0, 53, 9, 0, 0,250, 2, 93, 1, 10, 0,
+ 32, 0, 36, 9, 2, 0, 17, 0, 2, 0, 36, 4, 4, 0, 88, 0, 4, 0, 89, 0, 7, 0,148, 8, 7, 0,149, 8, 4, 0, 37, 0,
+160, 0,122, 8, 0, 0,250, 2, 94, 1, 4, 0, 32, 0, 36, 9, 4, 0,115, 3, 4, 0, 58, 9, 0, 0,250, 2, 95, 1, 4, 0,
+ 32, 0, 36, 9, 4, 0,115, 3, 4, 0, 37, 0, 0, 0,250, 2, 96, 1, 5, 0, 32, 0, 36, 9, 7, 0,125, 0, 4, 0, 59, 9,
+ 4, 0,115, 3, 4, 0,116, 3, 97, 1, 6, 0, 32, 0, 36, 9, 4, 0, 60, 9, 4, 0, 61, 9, 7, 0, 62, 9, 7, 0, 63, 9,
+ 0, 0,250, 2, 98, 1, 16, 0, 32, 0, 36, 9, 32, 0,237, 8, 4, 0, 17, 0, 7, 0, 64, 9, 7, 0, 65, 9, 7, 0, 66, 9,
+ 7, 0, 67, 9, 7, 0, 68, 9, 7, 0, 69, 9, 7, 0, 70, 9, 7, 0, 71, 9, 7, 0, 72, 9, 2, 0, 19, 0, 2, 0, 37, 0,
+ 2, 0, 43, 0, 2, 0, 70, 0, 99, 1, 3, 0, 32, 0, 36, 9, 4, 0, 19, 0, 4, 0, 28, 2,100, 1, 5, 0, 32, 0, 36, 9,
+ 4, 0, 19, 0, 4, 0, 37, 0, 7, 0, 73, 9, 0, 0,250, 2,101, 1, 10, 0, 32, 0, 36, 9, 0, 0,250, 2, 2, 0, 74, 9,
+ 2, 0, 75, 9, 0, 0, 76, 9, 0, 0, 77, 9, 7, 0, 78, 9, 7, 0, 79, 9, 7, 0, 80, 9, 7, 0, 81, 9,102, 1, 8, 0,
+ 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0, 82, 9, 7, 0, 83, 9, 2, 0, 19, 0, 2, 0, 28, 2,
+103, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0, 82, 9, 7, 0, 83, 9, 2, 0, 19, 0,
+ 2, 0, 28, 2,104, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0, 82, 9, 7, 0, 83, 9,
+ 2, 0, 19, 0, 2, 0, 28, 2,105, 1, 7, 0, 32, 0, 36, 9, 0, 0,250, 2, 7, 0, 76, 1, 7, 0, 85, 1, 2, 0, 19, 0,
+ 2, 0, 69, 1, 4, 0, 37, 0,106, 1, 5, 0, 32, 0, 50, 3, 7, 0, 76, 1, 2, 0, 54, 3, 0, 0, 56, 3, 0, 0, 84, 9,
+107, 1, 10, 0,107, 1, 0, 0,107, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 85, 9, 7, 0, 20, 1, 7, 0, 21, 1,
+ 2, 0, 16, 9, 2, 0, 86, 9, 32, 0, 45, 0,108, 1, 22, 0,108, 1, 0, 0,108, 1, 1, 0, 2, 0, 19, 0, 2, 0, 69, 1,
+ 2, 0, 87, 9, 2, 0, 88, 9, 36, 0, 80, 0,160, 0,122, 8, 32, 0,164, 0, 7, 0, 88, 0, 7, 0, 89, 0, 7, 0, 89, 9,
+ 7, 0, 90, 9, 7, 0, 91, 9, 7, 0, 92, 9, 7, 0,236, 2, 7, 0, 93, 9, 7, 0,124, 8, 7, 0, 94, 9, 0, 0, 95, 9,
+ 0, 0, 96, 9, 12, 0, 96, 3,109, 1, 8, 0, 7, 0, 43, 2, 7, 0,148, 8, 7, 0,149, 8, 9, 0, 2, 0, 2, 0, 97, 9,
+ 2, 0, 98, 9, 2, 0, 99, 9, 2, 0,100, 9,110, 1, 18, 0,110, 1, 0, 0,110, 1, 1, 0,110, 1,101, 9, 0, 0, 20, 0,
+109, 1,102, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,103, 9, 2, 0,104, 9, 2, 0,105, 9, 2, 0,106, 9, 4, 0, 43, 0,
+ 7, 0,107, 9, 7, 0,108, 9, 4, 0,109, 9, 4, 0,110, 9,110, 1,111, 9,111, 1,112, 9,112, 1, 33, 0,112, 1, 0, 0,
+112, 1, 1, 0,112, 1,113, 9, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,229, 7, 2, 0, 7, 8, 2, 0,114, 9,
+ 2, 0,133, 0, 2, 0,104, 9, 2, 0,219, 7, 12, 0,117, 8, 12, 0,115, 9, 27, 0,151, 6, 9, 0,116, 9, 7, 0,107, 9,
+ 7, 0,108, 9, 7, 0, 74, 2, 7, 0,117, 9, 2, 0,118, 9, 2, 0,119, 9, 7, 0,120, 9, 7, 0,121, 9, 2, 0,122, 9,
+ 2, 0,123, 9, 9, 0,124, 9, 24, 0,125, 9, 24, 0,126, 9, 24, 0,127, 9,113, 1,150, 0,114, 1,128, 9,115, 1,129, 9,
+111, 1, 8, 0,111, 1, 0, 0,111, 1, 1, 0,112, 1,130, 9,112, 1,131, 9,110, 1,132, 9,110, 1,111, 9, 4, 0, 19, 0,
+ 4, 0, 37, 0, 60, 0, 23, 0, 27, 0, 31, 0, 39, 0, 75, 0,162, 0, 93, 3, 12, 0,133, 9, 12, 0,134, 9,109, 1,135, 9,
+ 12, 0,136, 9, 4, 0, 17, 0, 4, 0,137, 9, 4, 0,138, 9, 4, 0,139, 9, 4, 0, 19, 0, 4, 0, 37, 0, 12, 0,140, 9,
+115, 1,141, 9,110, 1,142, 9,110, 1,143, 9, 9, 0,144, 9, 9, 0,145, 9, 4, 0,146, 9, 9, 0,147, 9, 9, 0,148, 9,
+ 9, 0,149, 9,116, 1, 6, 0, 4, 0,124, 0, 4, 0,126, 0, 4, 0,219, 7, 0, 0,150, 9, 0, 0,151, 9, 2, 0, 37, 0,
+117, 1, 16, 0, 2, 0,173, 7, 2, 0,174, 7, 2, 0,152, 9, 2, 0,172, 8, 2, 0,153, 9, 2, 0, 68, 0, 7, 0,235, 2,
+ 7, 0,154, 9, 7, 0,155, 9, 2, 0, 91, 1, 0, 0,156, 9, 0, 0,157, 9, 2, 0,158, 9, 2, 0, 37, 0, 4, 0,159, 9,
+ 4, 0,160, 9,118, 1, 9, 0, 7, 0,161, 9, 7, 0,162, 9, 7, 0,191, 8, 7, 0,109, 0, 7, 0,163, 9, 7, 0, 78, 6,
+ 2, 0,164, 9, 0, 0,165, 9, 0, 0, 37, 0,119, 1, 4, 0, 7, 0,166, 9, 7, 0,167, 9, 2, 0,164, 9, 2, 0, 37, 0,
+120, 1, 3, 0, 7, 0,168, 9, 7, 0,169, 9, 7, 0, 15, 0,121, 1, 7, 0, 0, 0, 5, 2, 2, 0,249, 4, 2, 0,250, 4,
+ 2, 0,251, 4, 2, 0,189, 4, 4, 0,126, 0, 4, 0, 34, 4,122, 1, 7, 0, 7, 0,170, 9, 7, 0,171, 9, 7, 0,172, 9,
+ 7, 0, 85, 2, 7, 0,173, 9, 7, 0,174, 9, 7, 0,175, 9,123, 1, 4, 0, 2, 0,176, 9, 2, 0,177, 9, 2, 0,178, 9,
+ 2, 0,179, 9,124, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,125, 1, 2, 0, 0, 0,166, 0, 0, 0,180, 9,126, 1, 1, 0,
+ 0, 0, 20, 0,127, 1, 10, 0, 0, 0,181, 9, 0, 0,182, 9, 0, 0, 71, 6, 0, 0,183, 9, 2, 0,152, 9, 2, 0,184, 9,
+ 7, 0,185, 9, 7, 0,186, 9, 7, 0,187, 9, 7, 0, 93, 9,128, 1, 2, 0, 9, 0,188, 9, 9, 0,189, 9,129, 1, 11, 0,
+ 0, 0,251, 4, 0, 0, 17, 0, 0, 0,164, 9, 0, 0,109, 0, 0, 0,190, 9, 0, 0,106, 0, 0, 0, 70, 2, 7, 0,191, 9,
+ 7, 0,192, 9, 7, 0,193, 9, 7, 0,194, 9,130, 1, 8, 0, 7, 0, 82, 8, 7, 0,125, 0, 7, 0,157, 9, 7, 0,157, 2,
+ 7, 0,195, 9, 7, 0,236, 0, 7, 0,196, 9, 4, 0, 17, 0,131, 1, 4, 0, 2, 0,197, 9, 2, 0,198, 9, 2, 0,199, 9,
+ 2, 0, 37, 0,132, 1, 1, 0, 0, 0, 20, 0,133, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 19, 0, 2, 0,200, 9,
+134, 1, 10, 0, 2, 0,222, 3, 2, 0, 19, 0, 7, 0,120, 4, 7, 0,201, 9, 7, 0,202, 9, 7, 0,203, 9, 7, 0,204, 9,
+133, 1,205, 9,133, 1,206, 9,133, 1,207, 9, 63, 0, 9, 0, 4, 0, 19, 0, 4, 0, 64, 0, 24, 0,208, 9, 24, 0,209, 9,
+134, 1,210, 9, 7, 0,211, 9, 7, 0,212, 9, 7, 0,213, 9, 7, 0,214, 9,135, 1, 4, 0, 47, 0,229, 2, 7, 0,215, 9,
+ 7, 0,170, 1, 7, 0, 37, 0,191, 0, 17, 0, 27, 0, 31, 0,135, 1,216, 9, 63, 0,205, 9, 51, 0,134, 1, 2, 0, 19, 0,
+ 2, 0,230, 5, 4, 0,106, 0, 7, 0,217, 9, 7, 0, 82, 2, 4, 0,218, 9, 7, 0,219, 9, 7, 0,220, 9, 7, 0,221, 9,
+ 7, 0,170, 1, 2, 0,104, 1, 0, 0,222, 9, 0, 0,210, 6,136, 1, 10, 0, 4, 0, 17, 0, 4, 0,125, 0, 4, 0, 19, 0,
+ 4, 0,177, 3, 4, 0,223, 9, 4, 0,224, 9, 4, 0,225, 9, 0, 0, 92, 0, 0, 0, 20, 0, 9, 0, 2, 0, 91, 0, 6, 0,
+136, 1,226, 9, 4, 0,227, 9, 4, 0,228, 9, 4, 0,229, 9, 4, 0, 37, 0, 9, 0,230, 9,137, 1, 5, 0, 7, 0,152, 2,
+ 7, 0,219, 2, 7, 0, 36, 2, 2, 0,128, 2, 2, 0, 37, 0,138, 1, 5, 0, 7, 0,152, 2, 7, 0,231, 9, 7, 0,232, 9,
+ 7, 0,233, 9, 7, 0,219, 2,139, 1, 5, 0, 32, 0,234, 9,140, 1, 22, 0, 7, 0,203, 5, 7, 0,235, 9, 7, 0, 57, 0,
+141, 1, 7, 0, 4, 0,236, 9, 4, 0,237, 9, 4, 0,238, 9, 7, 0,239, 9, 7, 0,240, 9, 7, 0,241, 9, 7, 0, 57, 0,
+142, 1, 8, 0,142, 1, 0, 0,142, 1, 1, 0, 32, 0, 45, 0, 4, 0,255, 0, 2, 0, 19, 0, 2, 0, 69, 1, 7, 0,219, 2,
+ 7, 0, 90, 8,143, 1, 6, 0,143, 1, 0, 0,143, 1, 1, 0, 32, 0, 45, 0, 2, 0,204, 2, 2, 0, 19, 0, 2, 0,242, 9,
+144, 1, 18, 0,138, 1,171, 3,138, 1,243, 9,137, 1,244, 9,138, 1, 74, 8,139, 1,245, 9, 4, 0, 82, 0, 7, 0,219, 2,
+ 7, 0,246, 2, 7, 0,246, 9, 4, 0,236, 9, 4, 0,247, 9, 7, 0,240, 9, 7, 0,241, 9, 7, 0,106, 0, 2, 0, 19, 0,
+ 2, 0,248, 9, 2, 0,249, 9, 2, 0,250, 9,145, 1,110, 0, 27, 0, 31, 0, 39, 0, 75, 0,146, 1,251, 9,169, 0, 56, 4,
+ 4, 0, 19, 0, 2, 0, 17, 0, 2, 0, 74, 9, 2, 0,252, 9, 2, 0,253, 9, 2, 0,137, 3, 2, 0,254, 9, 2, 0,255, 9,
+ 2, 0, 0, 10, 2, 0, 1, 10, 2, 0, 2, 10, 2, 0, 3, 10, 2, 0, 4, 10, 2, 0,238, 4, 2, 0,115, 5, 2, 0, 5, 10,
+ 2, 0, 6, 10, 2, 0, 7, 10, 2, 0, 8, 10, 2, 0, 9, 10, 2, 0, 25, 2, 2, 0, 67, 8, 2, 0, 42, 8, 2, 0, 10, 10,
+ 2, 0, 11, 10, 2, 0,187, 3, 2, 0,188, 3, 2, 0, 12, 10, 2, 0, 13, 10, 2, 0, 14, 10, 2, 0, 15, 10, 7, 0, 16, 10,
+ 7, 0, 17, 10, 7, 0, 18, 10, 2, 0, 19, 10, 2, 0, 20, 10, 7, 0, 21, 10, 7, 0, 22, 10, 7, 0, 23, 10, 7, 0, 49, 8,
+ 7, 0, 89, 0, 7, 0,246, 2, 7, 0, 55, 8, 7, 0, 24, 10, 7, 0, 25, 10, 7, 0, 26, 10, 4, 0, 50, 8, 4, 0, 48, 8,
+ 4, 0, 27, 10, 7, 0, 51, 8, 7, 0, 52, 8, 7, 0, 53, 8, 7, 0, 28, 10, 7, 0, 29, 10, 7, 0, 30, 10, 7, 0, 31, 10,
+ 7, 0, 32, 10, 7, 0, 57, 0, 7, 0, 33, 10, 7, 0, 34, 10, 7, 0, 35, 10, 7, 0, 36, 10, 7, 0,128, 3, 7, 0,106, 0,
+ 7, 0, 37, 10, 7, 0, 38, 10, 7, 0, 39, 10, 7, 0, 40, 10, 7, 0, 41, 10, 7, 0, 42, 10, 7, 0, 43, 10, 4, 0, 44, 10,
+ 4, 0, 45, 10, 7, 0, 46, 10, 7, 0, 47, 10, 7, 0, 48, 10, 7, 0, 49, 10, 7, 0, 50, 10, 7, 0,210, 0, 7, 0, 51, 10,
+ 7, 0,213, 3, 7, 0,211, 3, 7, 0,212, 3, 7, 0, 52, 10, 7, 0, 53, 10, 7, 0, 54, 10, 7, 0, 55, 10, 7, 0, 56, 10,
+ 7, 0, 57, 10, 7, 0, 58, 10, 7, 0, 59, 10, 7, 0, 60, 10, 7, 0, 61, 10, 7, 0, 62, 10, 7, 0, 63, 10, 7, 0, 64, 10,
+ 4, 0, 65, 10, 4, 0, 66, 10, 67, 0,160, 3, 12, 0, 67, 10, 67, 0, 68, 10, 32, 0, 69, 10, 32, 0, 70, 10, 36, 0, 80, 0,
+164, 0, 61, 1,164, 0, 71, 10,148, 0, 44, 0,148, 0, 0, 0,148, 0, 1, 0,145, 1, 72, 10,144, 1, 73, 10,141, 1,237, 8,
+171, 0,238, 3, 9, 0,239, 3,147, 1, 74, 10,147, 1, 75, 10, 12, 0, 76, 10, 12, 0, 77, 10,133, 0, 78, 10,141, 0, 79, 10,
+141, 0, 80, 10, 32, 0, 81, 10, 32, 0, 82, 10, 32, 0, 38, 0, 12, 0, 41, 9, 0, 0, 20, 0, 7, 0,240, 0, 7, 0, 17, 3,
+ 7, 0, 83, 10, 4, 0,193, 2, 4, 0, 57, 0, 4, 0, 19, 0, 4, 0, 50, 8, 4, 0, 84, 10, 4, 0, 85, 10, 4, 0, 86, 10,
+ 2, 0,247, 0, 2, 0, 87, 10, 2, 0, 88, 10, 2, 0, 89, 10, 0, 0, 90, 10, 2, 0, 91, 10, 2, 0, 92, 10, 2, 0, 93, 10,
+ 9, 0, 94, 10,137, 0, 55, 4, 12, 0, 4, 3, 12, 0, 95, 10,148, 1, 96, 10,149, 1, 97, 10, 7, 0, 98, 10,135, 0, 35, 0,
+150, 1,192, 8, 7, 0, 25, 4, 7, 0, 99, 10, 7, 0,100, 10, 7, 0,123, 4, 7, 0,101, 10, 7, 0,138, 3, 7, 0,128, 3,
+ 7, 0,102, 10, 7, 0, 84, 2, 7, 0,103, 10, 7, 0,104, 10, 7, 0,105, 10, 7, 0,106, 10, 7, 0,107, 10, 7, 0,108, 10,
+ 7, 0, 26, 4, 7, 0,109, 10, 7, 0,110, 10, 7, 0,111, 10, 7, 0, 27, 4, 7, 0, 23, 4, 7, 0, 24, 4, 7, 0,112, 10,
+ 4, 0,113, 10, 4, 0, 90, 0, 4, 0,114, 10, 4, 0,115, 10, 2, 0,116, 10, 2, 0,117, 10, 2, 0,118, 10, 2, 0,119, 10,
+ 2, 0,120, 10, 2, 0,121, 10,169, 0, 56, 4,136, 0, 8, 0,150, 1,122, 10, 7, 0,123, 10, 7, 0,124, 10, 7, 0,242, 1,
+ 7, 0,125, 10, 4, 0, 90, 0, 2, 0,126, 10, 2, 0,127, 10,151, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0,
+ 7, 0,128, 10,152, 1, 6, 0,152, 1, 0, 0,152, 1, 1, 0,151, 1,229, 8, 4, 0,253, 0, 2, 0,129, 10, 2, 0, 19, 0,
+153, 1, 5, 0,153, 1, 0, 0,153, 1, 1, 0, 12, 0,130, 10, 4, 0,131, 10, 4, 0, 19, 0,154, 1, 9, 0,154, 1, 0, 0,
+154, 1, 1, 0, 12, 0,124, 0,153, 1,132, 10, 4, 0, 19, 0, 2, 0,129, 10, 2, 0,133, 10, 7, 0, 91, 0, 0, 0,134, 10,
+162, 0, 6, 0, 27, 0, 31, 0, 12, 0, 11, 5, 4, 0, 19, 0, 2, 0,135, 10, 2, 0,136, 10, 9, 0,137, 10,155, 1, 7, 0,
+155, 1, 0, 0,155, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, 0, 0,138, 10, 0, 0,139, 10,156, 1, 5, 0,
+ 12, 0,140, 10, 4, 0,141, 10, 4, 0,142, 10, 4, 0, 19, 0, 4, 0, 37, 0,157, 1, 18, 0, 27, 0, 31, 0,158, 1,143, 10,
+158, 1,144, 10, 12, 0,145, 10, 4, 0,146, 10, 2, 0,147, 10, 2, 0, 37, 0, 12, 0,148, 10, 12, 0,149, 10,156, 1,150, 10,
+ 12, 0,151, 10, 12, 0,152, 10, 12, 0,153, 10,159, 1,154, 10, 4, 0,155, 10, 4, 0, 70, 0, 12, 0,156, 10,211, 0,157, 10,
+158, 1, 33, 0,158, 1, 0, 0,158, 1, 1, 0, 9, 0,158, 10, 4, 0,152, 7, 2, 0,159, 10, 2, 0, 37, 0,216, 0, 61, 6,
+216, 0,160, 10, 0, 0,161, 10, 2, 0,162, 10, 2, 0,163, 10, 2, 0,173, 7, 2, 0,174, 7, 2, 0,164, 10, 2, 0,165, 10,
+ 2, 0,177, 3, 2, 0,177, 6, 2, 0,166, 10, 2, 0,167, 10, 2, 0,168, 10, 2, 0,169, 10, 8, 0,170, 10,160, 1,171, 10,
+161, 1,172, 10,162, 1,173, 10, 4, 0,174, 10, 4, 0,175, 10, 9, 0,176, 10, 12, 0,149, 10, 12, 0,193, 7, 12, 0,177, 10,
+ 12, 0,178, 10, 12, 0,179, 10,163, 1, 16, 0,163, 1, 0, 0,163, 1, 1, 0, 0, 0,180, 10, 26, 0, 30, 0, 2, 0,181, 10,
+ 2, 0, 17, 0, 2, 0, 15, 0, 2, 0,182, 10, 2, 0,183, 10, 2, 0,184, 10, 2, 0,185, 10, 2, 0,186, 10, 2, 0, 19, 0,
+ 2, 0,187, 10, 2, 0, 70, 2,164, 1,188, 10,165, 1, 10, 0,165, 1, 0, 0,165, 1, 1, 0, 12, 0,189, 10, 0, 0,180, 10,
+ 2, 0,190, 10, 2, 0,191, 10, 2, 0, 19, 0, 2, 0, 37, 0, 4, 0,192, 10, 9, 0,193, 10,159, 1, 7, 0,159, 1, 0, 0,
+159, 1, 1, 0, 0, 0,180, 10, 0, 0,194, 10, 12, 0,110, 7, 4, 0,195, 10, 4, 0, 19, 0,224, 0, 12, 0,224, 0, 0, 0,
+224, 0, 1, 0, 0, 0,180, 10, 26, 0, 30, 0,166, 1,167, 7, 9, 0,196, 10,164, 1,188, 10,156, 1,197, 10, 12, 0,198, 10,
+224, 0,199, 10, 2, 0, 19, 0, 2, 0,136, 1,160, 1, 23, 0,160, 1, 0, 0,160, 1, 1, 0, 2, 0, 17, 0, 2, 0, 15, 0,
+ 2, 0, 5, 0, 2, 0, 6, 0, 2, 0,200, 10, 2, 0,201, 10, 2, 0,202, 10, 2, 0,203, 10, 0, 0,204, 10, 0, 0, 37, 0,
+ 2, 0,182, 10, 2, 0,183, 10, 2, 0,184, 10, 2, 0,185, 10, 2, 0,186, 10, 2, 0, 43, 0, 0, 0,205, 10, 2, 0,206, 10,
+ 2, 0,207, 10, 4, 0, 70, 0, 9, 0,196, 10,167, 1, 8, 0,167, 1, 0, 0,167, 1, 1, 0, 9, 0, 2, 0, 9, 0,208, 10,
+ 0, 0,233, 3, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,209, 10,168, 1, 5, 0, 7, 0,210, 10, 4, 0,211, 10, 4, 0,212, 10,
+ 4, 0, 69, 1, 4, 0, 19, 0,169, 1, 6, 0, 7, 0,213, 10, 7, 0,214, 10, 7, 0,215, 10, 7, 0,216, 10, 4, 0, 17, 0,
+ 4, 0, 19, 0,170, 1, 5, 0, 7, 0,148, 8, 7, 0,149, 8, 7, 0,219, 2, 2, 0, 39, 2, 2, 0, 40, 2,171, 1, 5, 0,
+170, 1, 2, 0, 4, 0, 54, 0, 7, 0,217, 10, 7, 0,148, 8, 7, 0,149, 8,172, 1, 4, 0, 2, 0,218, 10, 2, 0,219, 10,
+ 2, 0,220, 10, 2, 0,221, 10,173, 1, 2, 0, 42, 0,148, 6, 26, 0,197, 8,174, 1, 3, 0, 24, 0,222, 10, 4, 0, 19, 0,
+ 4, 0, 37, 0,175, 1, 6, 0, 7, 0,106, 0, 7, 0,221, 2, 7, 0,223, 10, 7, 0, 37, 0, 2, 0,246, 0, 2, 0,224, 10,
+176, 1, 5, 0, 7, 0,221, 2, 7, 0, 89, 8, 2, 0,224, 10, 2, 0,136, 1, 15, 1, 5, 8,177, 1, 9, 0,177, 1, 0, 0,
+177, 1, 1, 0, 27, 0,151, 6, 0, 0,225, 10, 4, 0,226, 10, 4, 0,227, 10, 4, 0, 90, 0, 4, 0, 37, 0, 0, 0,233, 3,
+178, 1, 7, 0, 12, 0, 41, 9, 0, 0,228, 10, 9, 0,229, 10, 7, 0, 61, 0, 7, 0,209, 10, 4, 0, 17, 0, 4, 0, 19, 0,
+179, 1, 3, 0, 7, 0,230, 10, 4, 0, 19, 0, 4, 0, 37, 0,180, 1, 15, 0,180, 1, 0, 0,180, 1, 1, 0, 79, 1, 27, 9,
+178, 1, 62, 0, 12, 0, 96, 3, 35, 0, 50, 0,179, 1,231, 10, 4, 0, 54, 0, 7, 0, 61, 0, 2, 0, 19, 0, 2, 0, 15, 1,
+ 4, 0,226, 10, 0, 0,225, 10, 4, 0,232, 10, 7, 0,233, 10,181, 1, 2, 0, 0, 0,234, 10, 0, 0,235, 10,182, 1, 4, 0,
+182, 1, 0, 0,182, 1, 1, 0,160, 0, 50, 3, 12, 0,236, 10,183, 1, 24, 0,183, 1, 0, 0,183, 1, 1, 0, 12, 0,237, 10,
+160, 0,122, 8,182, 1,238, 10, 12, 0,239, 10, 12, 0, 96, 3, 0, 0,233, 3, 7, 0,209, 10, 7, 0,240, 10, 7, 0, 88, 0,
+ 7, 0, 89, 0, 7, 0, 89, 9, 7, 0, 90, 9, 7, 0,236, 2, 7, 0, 93, 9, 7, 0,124, 8, 7, 0, 94, 9, 2, 0,241, 10,
+ 2, 0,242, 10, 2, 0, 43, 0, 2, 0, 17, 0, 4, 0, 19, 0, 4, 0, 70, 0,184, 1, 6, 0,184, 1, 0, 0,184, 1, 1, 0,
+ 12, 0,237, 10, 4, 0, 19, 0, 4, 0,156, 2, 0, 0,233, 3,185, 1, 10, 0,185, 1, 0, 0,185, 1, 1, 0, 27, 0,151, 6,
+ 0, 0,243, 10, 4, 0,227, 10, 4, 0,244, 10, 0, 0,225, 10, 4, 0,226, 10, 2, 0, 19, 0, 2, 0,245, 10,186, 1, 7, 0,
+186, 1, 0, 0,186, 1, 1, 0, 12, 0,246, 10, 0, 0,233, 3, 2, 0, 19, 0, 2, 0,247, 10, 4, 0,248, 10,187, 1, 5, 0,
+187, 1, 0, 0,187, 1, 1, 0, 0, 0,225, 10, 4, 0,226, 10, 7, 0,209, 2, 39, 0, 12, 0,160, 0, 90, 3,160, 0,249, 10,
+182, 1,238, 10, 12, 0,250, 10,183, 1,251, 10, 12, 0,252, 10, 12, 0,253, 10, 4, 0, 19, 0, 4, 0,247, 0, 2, 0,254, 10,
+ 2, 0,255, 10, 7, 0, 0, 11,188, 1, 2, 0, 27, 0, 31, 0, 39, 0, 75, 0,189, 1, 5, 0,189, 1, 0, 0,189, 1, 1, 0,
+ 4, 0, 17, 0, 4, 0, 19, 0, 0, 0, 20, 0,190, 1, 6, 0,189, 1, 1, 11, 32, 0, 45, 0, 4, 0, 2, 11, 7, 0, 3, 11,
+ 4, 0, 4, 11, 4, 0, 16, 9,191, 1, 3, 0,189, 1, 1, 11, 4, 0, 2, 11, 7, 0, 5, 11,192, 1, 8, 0,189, 1, 1, 11,
+ 32, 0, 45, 0, 7, 0, 64, 1, 7, 0, 6, 11, 7, 0, 17, 3, 7, 0,191, 8, 4, 0, 2, 11, 4, 0, 7, 11,193, 1, 5, 0,
+189, 1, 1, 11, 7, 0, 8, 11, 7, 0, 7, 8, 7, 0,242, 2, 7, 0, 57, 0,194, 1, 3, 0,189, 1, 1, 11, 7, 0,191, 8,
+ 7, 0, 9, 11,140, 1, 4, 0, 7, 0, 10, 11, 7, 0, 39, 10, 2, 0, 11, 11, 2, 0, 69, 1,195, 1, 14, 0,195, 1, 0, 0,
+195, 1, 1, 0, 12, 0, 12, 11, 12, 0, 13, 11, 12, 0, 14, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0, 15, 11,
+ 7, 0, 16, 11, 4, 0, 4, 11, 4, 0, 16, 9, 7, 0,242, 3, 7, 0,244, 2,146, 1, 23, 0, 4, 0, 2, 11, 4, 0, 17, 11,
+ 7, 0, 18, 11, 7, 0, 57, 0, 7, 0, 19, 11, 7, 0,240, 2, 7, 0, 10, 11, 7, 0, 20, 11, 7, 0,221, 2, 7, 0, 21, 11,
+ 7, 0,120, 4, 7, 0, 22, 11, 7, 0, 23, 11, 7, 0, 24, 11, 7, 0, 25, 11, 7, 0, 26, 11, 7, 0, 27, 11, 7, 0, 28, 11,
+ 7, 0, 29, 11, 7, 0, 30, 11, 7, 0, 31, 11, 7, 0, 32, 11, 12, 0, 33, 11,121, 0, 34, 0,120, 0, 34, 11,196, 1, 35, 11,
+ 67, 0, 36, 11, 67, 0, 68, 10, 67, 0, 37, 11,197, 1, 38, 11, 48, 0,165, 0, 48, 0, 39, 11, 48, 0, 40, 11, 7, 0, 41, 11,
+ 7, 0, 42, 11, 7, 0, 43, 11, 7, 0, 44, 11, 7, 0, 45, 11, 7, 0, 28, 9, 7, 0, 46, 11, 7, 0,170, 1, 7, 0, 47, 11,
+ 4, 0, 48, 11, 4, 0, 49, 11, 4, 0, 50, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0, 51, 11, 2, 0, 52, 11, 2, 0, 53, 11,
+ 4, 0, 54, 11, 7, 0,221, 2, 4, 0, 55, 11, 7, 0, 56, 11, 4, 0, 57, 11,137, 0, 58, 11, 12, 0, 59, 11,169, 0, 56, 4,
+122, 0, 11, 0,120, 0, 34, 11,148, 0, 34, 3, 7, 0,137, 1, 7, 0, 28, 9, 7, 0, 60, 11, 7, 0, 61, 11, 2, 0, 62, 11,
+ 2, 0, 63, 11, 2, 0, 64, 11, 2, 0, 17, 0, 4, 0, 37, 0,123, 0, 13, 0,120, 0, 34, 11,139, 0, 14, 3,141, 0, 16, 3,
+ 7, 0,229, 8, 7, 0, 65, 11, 7, 0, 66, 11, 7, 0, 66, 1, 7, 0, 67, 11, 4, 0, 50, 9, 4, 0, 12, 3, 2, 0, 17, 0,
2, 0, 37, 0, 4, 0, 70, 0, 69, 78, 68, 66, 0, 0, 0, 0, 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 28d6e2c70c4..b1b7bbbd2ec 100644
--- a/source/blender/editors/datafiles/blenderbuttons.c
+++ b/source/blender/editors/datafiles/blenderbuttons.c
@@ -1,6103 +1,6549 @@
/* DataToC output of file <blenderbuttons> */
-int datatoc_blenderbuttons_size= 195097;
+int datatoc_blenderbuttons_size= 209368;
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,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, 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,239, 68, 73, 68, 65, 84,120,218,236, 93,119,116, 20, 85, 31,189,111,118,182,111,178,233, 61,180,208, 33,
-128, 52,165,247, 34, 29,145, 34,124, 40, 34, 42, 29, 69, 65, 80, 68,165, 5, 16,233, 82, 20,149,162,116, 20, 68,165, 41,189, 10,
- 72,239,157, 16,210,251,102,235,204,188,239,143,236,172,155,101,147,221, 64, 64,196,185,231,204,217,157,118,231,245,119,223,239,
- 53, 66, 41,133, 4, 9, 18, 36, 72,144, 32, 65,130,132,146, 3,145, 4,150, 4, 9, 18, 36, 72,144, 32, 65, 66,201,130, 41,182,
- 34, 35,132, 22,227,217, 54,222,114,218,143,230, 79, 59,231, 99,244, 59, 45, 65,206,230,118,206, 79,255, 37,238,108,254,180,114,
-138,254,245,150,183, 56,156,222,166,169, 98,186,147,150,180, 59, 31, 23,103, 73,229, 35, 55,238,164,143, 33,222, 63,253,151,184,
-179,249,211,198,233,154,126,188,225, 45, 46,167, 55,105,234, 33,220, 73, 75,218,157,143,139,243, 81,243, 81, 17,238,164,143,154,
-150, 10,137,251, 79,241, 31, 0,251,184,196, 85,113, 64, 41, 37, 78,252,228,105,229,116, 14, 7,145,191, 36,221, 90,130,216, 83,
-210,156, 46,225, 89, 82,248,148, 82, 74, 8, 33,123, 1, 52, 47, 73,191,151, 68,188,187,248,181, 68,120,139, 43,174,138,203, 89,
- 82,233,254,113,115,150, 84, 94,114,229, 44,137,116,239, 46,222, 31, 99, 28,149,148, 59, 75, 36, 47, 61,142, 52,239, 38,253, 60,
- 50,175, 43,103, 73,228, 37, 87,206,146, 72,247, 79,130,179, 36,242,146, 59,206,146, 72,247,133,197,189,100,193,122, 50, 66,192,
- 53, 99,183,120,154,133,208,227, 18,153,222, 90, 92,158, 6,206, 18,142,163, 79,237,156, 37,217,154,105, 81, 82,113,244, 56,210,
-187, 51,103, 73,241,187,242,148, 68, 60,185,227,124, 84,247, 22,226,206, 18,247,251,163,166,251, 39,197, 89,194,113, 84, 34,121,
-201,133,179, 69, 9, 55, 2, 90, 56,157,127, 90,146,156, 37,149,151,220,184,243,145,227,201, 29,231,163,186,183, 16,119,150,184,
-223, 75,162, 14,121, 92,188,207,156, 5,235,113,138,171,199, 85,153,149, 36,247,227,176,226, 60, 46, 75, 91, 73, 89,113,220,240,
-238, 45, 65,186, 61, 37,237, 78,187,251,200,227,178,182, 62,237,144,242,146,148,151,158,182,188,228, 46,221, 80, 74, 63, 37,132,
-124,242,180, 53,158,157, 57, 75, 74, 8,185,241,251, 35,229, 37,215,119, 75, 34, 47,121,224, 36,143,195,255, 37,157,159,158, 70,
- 48, 79,139, 67,188, 29,223,243, 16,124, 45,158,230, 8,120, 76,238,108,241,111,240,251,227,112, 39, 33,228,211,199,228,247,127,
- 75,152, 74,121, 73,202, 75, 79, 93, 94,114, 73,147, 45, 74,202, 50, 84,210, 13, 41, 87,206,146,248,134, 51, 71, 73,165,209,199,
-237,247,146,204, 75,143, 35,238,255, 45, 40,182, 5,235,113,119,155, 60,205,156,143,131,251, 49,249,125,239,227,104, 29, 60,134,
-113, 93, 37,238, 78, 74,233,167, 40,193, 46, 71,209,207, 37,233,214,199,217, 77,248, 56,210,230,227, 76,239, 37, 57,206,227, 49,
-249,253,223, 18,239, 37,238,206,146,202, 75,110,226,252,145,221,234, 46,252, 74,186, 11,187, 36,211,230,227,228, 44, 9,238,199,
-225,206,199, 21,247,255, 38, 48,144, 32, 65,130, 4, 9, 18, 36, 72,144, 80,162,144,214,193,146, 32, 65,130, 4, 9, 18, 36, 72,
-120, 82, 2, 43, 42, 42,106,171, 86,171,173, 80,216,139, 6,131,225,126, 66, 66, 66, 75, 41, 8, 37, 72,144,224,177,160, 33,132,
-193,223, 22,115, 1, 0,165, 82,235, 78,130, 4, 9,207, 48, 10, 29,131,165, 82,169, 98, 46, 94,188, 88, 73, 16, 4,240, 60, 15,
-142,227, 28,191, 22,139, 5,205,154, 53, 43,246,248,173,240,240,240,125, 50,153,172,108,113,222,225,121,254, 78, 98, 98, 98,147,
- 34, 10,238, 67, 0, 98, 8, 33,206,215,138,252, 5,144, 96,181, 90,235, 20,197, 73, 8,137,113,229, 43,132, 75,252, 95, 36,167,
-191,191,255,113,150,101,163,221,113, 21,246, 95, 16,132, 27,201,201,201,141,164,100,250,100, 16, 30, 30,190,143,101,217, 98,167,
-207,251,247,239, 23,154, 62, 35, 35, 35,255, 98, 24, 38,178, 24,148, 50, 65, 16, 46,223,191,127,191, 73, 97, 2, 68, 76,243, 30,
- 4, 77,129,255,132,144,120,142,227,234,121,202, 71, 69,113,185, 73,163, 69,114, 58,139, 43,150,101,167,135,134,134, 14,201,203,
-203, 51, 1,160, 50,153,140, 6, 5, 5,137,110, 3, 0,112, 28,151,146,145,145, 81, 67, 74,137, 18, 36, 72,120,166, 5,150, 32,
- 8,140,217,108,198,149, 43, 87, 80, 72, 57,207, 63,196,247, 42,157,248,125,103,168,111,104, 24, 56,171, 21,186,224, 16, 7,119,
-210,133,115,224,108, 86,112, 22, 11, 74,215,111, 32, 86, 94,168, 94,189,186,204, 3,103,244,140, 25, 51, 66,125,125,125, 97, 50,
-153, 96, 50,153, 96, 54,155, 97, 50,153, 96,177, 88, 96,177, 88, 96,181, 90, 97,181, 90,193,113, 28,204,102, 51,118,237,218,229,
-201,237,209, 83,167, 78, 13,213,235,245, 14, 62,241, 16, 57, 69, 94,155,205, 6,147,201,132, 63,254,248,163, 72, 78,150,101,163,
- 19, 18, 18, 66, 21, 10, 5, 40,165, 16, 4, 1,148,210, 2,135, 43,202,151, 47,111,149,146,232, 19, 69,165,169,171,127, 9,245,
-211,168,192, 9, 2, 58,215, 42,239,184,113, 99,217,122, 80,142,135,192,113,168, 56,188, 63,144,111,130, 65,181,106,213,138, 76,
-159,148,210, 50, 83, 87,255,226,239, 45,103,106,106,170,177,106,213,170, 9,200, 31, 8, 90,152,133, 39,218,104, 52,134,138,110,
-112, 21, 66, 12,195, 20, 56,182,111,223,142,206,157, 59,123,242,123,244,187,239,190, 27,106,179,217, 96,177, 88, 96, 54,155, 97,
-179,217,192,113,156,227,224,121,222,113, 88, 44, 22, 28, 61,122,212, 91,203,213,140,182,109,219, 14,252,229,151, 95,116, 63,253,
-244,147,174,108,217,178, 80, 40, 20,144,201,100,144,201,100, 96, 24, 6, 44,203,226,133, 23, 94, 32, 82, 18,148, 32, 65,194, 51,
- 47,176,204,102,243,205,218,181,107, 83,251,255, 40,149, 74,165,112, 41, 56, 35, 43, 85,170,116,217,245, 61, 79, 93,135,190,161,
- 97, 24, 95, 42, 16, 0, 48,241,118,154,163, 98,152,217,232, 57,199, 51,147,238,101, 1, 0, 52, 26, 13,136,115,179,185, 16,232,
-116, 58,180,109,219, 22, 74,165, 18,245,234,213,131, 92, 46,119,123, 40, 20, 10,200,229,114,111, 42, 5,248,248,248,224,179,207,
- 62, 19,197, 17,116,106, 21, 70, 52,170, 7, 53, 40,190, 58,119, 21, 22,129,130,101, 89,199,225, 13,167, 66,161,192,217,179,103,
-193,178, 44,100, 50,153,227, 87,252,191,101,203, 22,244,236,217, 19, 44,203, 66,163,209, 0,255,161,217, 22, 79, 11,252, 52, 42,
-188,182,248, 71, 0,192,221, 57,195, 29,113,119,116,232, 68,199, 51,101,222,234, 13, 66, 8,228,114, 57, 24,134, 41, 49,206,244,
-244,116,227, 43,175,188,114,192,215,215,119,123,118,118, 54, 60, 8, 55,220,189,123, 23, 44,203, 22,154,222, 25,134,193,236,217,
-179,113,237,218, 53,175,252,110, 50,153,240,245,215, 95,131,231,249, 2,188,226,127,215,107, 94,138,171, 41,237,218,181,235,255,
-203, 47,191, 4, 16, 66,176,112,225, 66,200,229,114,116,234,212, 9, 65, 65, 65,216,177, 99, 7, 20, 10, 5,198,142, 29, 43, 37,
- 62, 9, 18, 36, 20, 5, 57,128,231, 0,132,216, 13, 60, 57, 0,252,157,238,167,216,127, 67,156,206,255,116,195, 83,223,254,140,
-120, 95, 60,183, 0, 80,186,185,158, 6, 64, 99, 63,204, 0, 14, 1,136,117,250,142,248, 30, 92,191,203,218, 11,194,230, 0,246,
- 0,104, 33, 46,126,119,255,254,253, 14, 78,150,148,139,151, 47, 95,174, 34,106, 29,123, 87,161,130,227,184, 74, 98,183,161,104,
- 29,106,211,166, 77,145, 45,122,206,106,125, 64,120,184,211, 80,238,186, 37, 10, 19, 46, 86,171, 21,189,123,247,206,143,129, 66,
- 42, 27,231,195, 11,205, 6,139,197, 2,150,101, 81,185, 84, 8, 62,110, 95, 27,207, 83, 27, 12,185, 4, 92,150, 1,221,124,108,
-184, 88,173, 14,150,222, 73,193,237,236, 92,176, 44,235, 21,167, 32, 8,133,138, 43,153, 76,134,197,139, 23,227,149, 87, 94,129,
- 76, 38,243,138, 79, 66,201,131, 19, 4,183,233,176,176, 52,235, 77, 60,121,195,153,158,158,110,236,220,185,243, 17,149, 74,181,
- 34, 44, 44, 44, 33, 62, 62,222,163,192,114, 21, 61,174,141,137, 47,190,248, 2,243,231,207, 71,203,150, 45,189,114,167,217,108,
- 6, 33, 4, 75,151, 46,125,224,222,228,201,147, 31,248, 94, 81,156,246,134, 17, 19, 25, 25, 57,116,219,182,109,122,241,217,224,
-224, 96,200,229,114,212,168, 81, 3,190,190,190, 56,112,224, 0,120,158,247, 58, 95, 74,144, 32,225,217,133, 59, 45,226,132,102,
-227,199,143,175, 55,125,250,244,105, 13, 27, 54, 92,115,232,208,161,213,132,144,173, 78,101, 98,103, 59,199, 86,167,243,250, 46,
- 34, 75, 14, 32,132, 16,178, 85,124,222,249,220,233,122, 27, 0, 74,241,124,252,248,241,177,211,167, 79,159, 54,110,220,184, 15,
-227,226,226, 20,227,199,143,175, 57,125,250,244,105,226,119,220,185,195,217,130, 85,228, 42,192, 98,119,225,165, 75,151,224,105,
- 92,170,167,245, 51,116,193, 33, 14,203,213,164, 50, 65,142,235,159,197,103, 58, 42,174, 5,117, 43, 64,167,211,161,253,164,207,
-189,178, 12, 89, 44, 22, 36, 39, 39, 59,172, 10,158, 14,111, 57,181, 26, 53,118,189, 91, 3,119,211,148,248,244,112, 58,126, 57,
-117, 13,114,185, 28, 47, 86,171,129, 14, 10, 95, 76, 40,163,196,187, 87,111,193,230,229, 88, 93, 74,169, 91, 97, 37,254, 23,187,
- 74, 36,129,245,207,161,115,173,242, 14, 43,211, 81,223,214,142,235, 61, 13,103, 29,113,242,222,226,153, 0,128,150,117, 94,128,
- 55,227,180, 61,113,166,165,165, 25,155,180,110,177,151, 55, 90,150,247,239,223,255,230,238,221,187, 53, 94, 53,231,220, 8, 44,
-209, 74, 43,138, 43,150,101, 97,177, 88,188,242,187,197, 98, 41, 52,127, 40, 20,138, 98, 91,176, 0,192, 96, 48, 88, 54,111,222,
-140, 5, 11, 22, 32, 40, 40, 8,237,218,181, 67, 68, 68, 4,214,175, 95, 15, 74, 41,134, 15, 31, 14,141, 70, 35, 90,171,165, 4,
- 40, 65,194,127, 27, 69,105, 17,213,244,233,211,167, 57, 11, 24, 87, 65,227, 44,156, 92, 68,148,179, 72,139,245, 80,255,111,117,
- 21, 77,226,119, 9, 33, 91,227,226,226, 58,123,112, 71,138,171,192, 42,114,153,125,179,217,124,179, 86,173, 90, 94,169,136,188,
-188,188, 68, 79, 34,195, 93, 43,222,217, 42,224,227,227, 3,157,222, 7,140,151,229,173,205,102,115, 8,148,157, 59,119, 66,163,
-209,160, 99,199,142,143,100,193,178, 90,173, 80, 42,228, 96,130,195,240,218,156,221, 72,203, 49, 58, 42,150, 61, 55,110,226,100,
- 82, 50,222,109,216, 26, 58, 77, 50,114, 45, 22,175, 44,109,130, 32, 60, 32,174, 88,150, 69,239,222,189, 29,214, 3,231,113, 41,
-144,186, 8,255,201,150,148,219,115,231,235,130,139,101,234, 97, 56,211,210,210,140,157, 59,119, 62,194, 27, 45,203,239,221,187,
-119, 4,128,250,249,231,159, 47,182,192, 18,133,149, 92, 46,199,236,217,179, 49,127,254,124,199,125,111, 5, 22,199,113, 5,132,
-211,213,171, 87, 11,124,203, 85,208, 21,213, 61, 74,243, 75, 73, 1,128, 16, 19, 19,227,120, 39, 60, 60, 28,254,254,254, 16, 4,
- 1,130, 32, 64,173, 86, 67,163,209, 64,161, 80, 72,137, 78,130, 4, 9, 69,105, 17,227,184,113,227, 62, 36,132,108,181, 91,146,
-206, 21, 33,164,220,161,190,139, 72, 75, 41,164,236,234,236, 78,100, 57,255, 23, 49,126,252,248, 88, 55,238,248,243, 1,129,229,
-164, 26, 31,128,115,119, 97, 73, 85, 94, 69, 85, 96, 62,254,122,104,116, 58,200,100,140,199,253,149,196, 46, 66,177,192, 31, 50,
-100, 72,145,227, 82,188, 29, 47,101,181, 90,193,176, 50,220, 15, 47, 7,158,217,239,120, 87, 60, 24, 86,142,219,225, 85, 32,187,
-244, 23,228, 94, 86,180,174, 22,172,225,195,135,227,235,175,191, 6,195, 48,142, 48, 97, 89, 22, 21, 43, 86,196,205,155, 55,165,
-156,246,148,136,171,194,174,243,188,224,181,213,197,221,115,105,105,105,198, 94,189,122,237,205,202,202, 90, 94,189,122,245,171,
-200, 95,198,128,241,150,143,101,217, 2,194, 74, 20, 87,243,230,205, 43, 32,134,108, 54,155, 87, 13, 0,155,205,246,128,208,153,
- 53,107, 86,129, 95, 0,104,212,168,145, 87,150, 96, 0,148, 97, 24,170, 80, 40,208,182,109, 91,212,172, 89, 19, 63,253,244, 19,
- 4, 65,192,176, 97,195,160,209,104, 48,119,238, 92,112, 28,135, 25, 51,102, 72, 22, 44, 9, 18, 36, 20,165, 69,204,113,113,113,
-231,226,226,226, 28,150, 36, 87, 11, 86, 33,232,100, 23, 83, 33,162, 56, 67,254, 88,170, 63,139,112, 67,231,194,132,151,243,181,
-233,211,167, 79,115,227, 14, 71,183,228, 19,223,236, 57,241,252, 89,124,222,184, 54,128,130,221,130,139, 95,168, 2,157,143, 14,
- 58, 95, 31,244,218,178, 31, 0,236,133,253, 56,175, 44, 88,162,192, 74, 75, 75, 43, 82, 92, 21,199,130,197, 40, 89,108,136,206,
- 0, 85,202,193, 90,108, 5, 4,150,140,149,227,110, 80, 57, 48,114, 5, 88,158,243,138,147, 82,250, 64,151,224,128, 1, 3, 64,
- 8,113,204,248,170, 85,171,150, 51,151, 84,227, 60,233,244,121,124, 25, 46,110, 28, 10, 0,104, 98, 48, 56,226, 98,106,173,191,
-231,109,204, 57,187,215, 97,109,156,132,247, 31,138, 51, 45, 45,205,248,124,213,216, 35,138, 64,191,229,119,238,220, 57, 2,128,
-233,211,167,143,127,173, 90,181,188,202,147,226,164, 9, 87,113,229,108,185, 18,127,109, 54,155, 87,126, 23,199, 66,121,130,216,
- 93,232, 41,205, 83, 74,105, 96, 96, 32, 24,134,129, 94,175,135,143,143,143, 99, 6,173, 90,173,134, 86,171,117,140,223,244, 82,
-176, 73,144, 32,225,191,139, 0, 81,224,216, 69, 82, 1,203, 18,165,180,179,179, 8, 42,172,171,208,110,113,218,231,225, 91,191,
-216,133,153, 91,136,150, 52,151, 50,121,171,171, 56, 99, 69,197,232,252, 27, 17, 17,241,155,143,143, 79, 57,111,125, 93,156, 69,
- 71,121,155,245, 1, 75, 22, 33, 4, 62,190, 62,208,248,232,160,241,245, 41,212,202, 85,148,192, 18, 45, 67, 98,101,179, 98,197,
- 10,248,248,248,224,245,215, 95, 47,246, 24, 44,135,192, 82, 48,216,161,250, 3, 50, 37, 91, 64, 92,177, 44, 11,153, 92,142, 68,
-159, 8, 48,114, 57, 88,206, 59,171, 88, 86, 86, 22, 88,150,197,199, 31,127,236,104,177, 59,139,171,226,248, 89,194, 99,106, 61,
-241,182, 7,172, 78,133, 89, 91, 31,150, 83,180, 92, 41, 2,253,150, 87,169, 82,197, 97,185,210,106,181,226,236, 81,143, 96, 24,
-198,173,184,114,157,241,199,178,108,126, 90,246, 48,219,209,217,130, 21, 23, 23,231,224,117,182, 92,137, 40, 78, 62, 18,221,186,
-119,239, 94,156, 60,121, 18, 67,134, 12,129, 70,163,193,252,249,243,193,113, 28, 38, 79,158, 12,141, 70, 3,165, 82, 41, 37, 62,
- 9, 18, 36,235, 85, 81,251,138,166,184,140,115, 34, 46,150,166, 20,119,194,202,185, 59,208,233,191,205, 13,175,197,165,235,208,
-245,186,248,155, 22, 23, 23,183, 91,180, 92, 57, 93, 47,224,142, 66, 45, 88, 42,149,170,220,149, 43, 87, 28,139,140, 22,245,107,
-177, 88,208,178,101, 75,175, 45, 97,226, 44, 66,150,149, 21, 16, 20, 90, 95, 31,104,245,190,208,248,248,184, 10, 13,226,169,240,
- 22, 91,192,206, 2,235,147, 79, 62, 1,203,178,248,250,235,175, 1, 0,239,191,255,190,215, 99,176, 68, 78,240, 4,241,244, 58,
-106,207,233, 9,203,247, 54, 36, 29, 60, 13,150,101, 17,218,160, 3,132,231,123, 34, 79,227, 3,150,231,188,158, 69,152,158,158,
-142,155, 55,111, 66, 38,147, 97,244,232,209, 5,214, 42,114,157,153,182,115,231, 78,201,130,245, 79,100,112,129,243, 74, 76, 21,
-199,202,232,204, 41,142,185,202,202,202, 90,126,231,206,157,163, 0,152,254,253,251,251,107,181, 90,124,243,205, 55,121, 0,148,
-235,215,175,215,120, 18, 67, 98,186,241, 36,174,228,114,121,126, 90,246,174,112, 43,208,136,240, 52,224,221,155, 52, 47,186,149,
- 16, 2,158,231,161,209,104, 10, 88,174,212,106, 53, 84, 42,149,148,240, 36, 72,144,224, 9,127, 22,227,217,250, 78, 98,233,207,
-135,228,253,243, 81, 29,204, 22, 38, 48,204,102, 51, 46, 92,184,224, 45,143,215,139,142,150,170,247, 2, 38,221,203, 2, 33, 4,
- 95, 53,170, 14,157,222, 7, 90,157, 14, 47,255,180,215, 81, 96,159,157,246, 62, 84, 58, 31, 68, 54,109,231, 85, 1, 46,118, 17,
- 58, 11,172,204,204, 76,200,229,114, 76,153, 50, 5, 12,195, 96,198,140, 25,136,138,138,194,253,251,247,177,126,253,122,175, 44,
- 88, 50, 94,134,136, 87,171, 66, 59,192, 15,250, 87,155, 33,160,237, 39,184,103, 97,113,200,164, 69, 51,211,121, 40,119,204,131,
- 69,224,189,158, 81,197,113, 28,246,238,221,235, 58,144, 29,148, 82,199, 42,249, 54,155, 13, 86,171, 21, 51,102,204,128,180,147,
-200,147, 71, 68,131,225, 8,169, 55, 24, 0,176, 37,238, 13,199,245,143,207,254,157, 62,103,127,159,191, 96,127,149,178,237,138,
-197,153,150,150,102,124,177,101,163,125, 38, 65,254, 93,141, 26, 53, 10, 88,174,212,106, 53,177,159,123, 37,170, 25,134,129, 76,
- 38,123,160, 91,176, 48,145,229,205, 24, 44,142,227, 28, 11,128, 22, 53, 94,241, 97, 44, 88,111,188,241, 6, 34, 34, 34, 28,150,
-171, 73,147, 38, 65,163,209, 96,252,248,241,176,217,108,152, 55,111,158,148,248, 36, 72,144,240, 79,136,177,199, 6,183, 37,168,
-201,100,186, 85,179,102, 77, 20,114, 47, 74,173, 86,203, 93, 10,231,200, 74,149, 42, 93,118,237, 42, 36,132,180,161,148,238,114,
- 87,152, 19, 66,224,171,247,133,218, 71, 7,173,139,213, 74,237,171,135,202,199, 7,140, 66,238,174, 34,120,128, 83, 28, 59,226,
- 44,176,196, 35, 43, 43, 11,114,185, 28, 11, 22, 44,128, 94,175,135,217,108,246,200, 41, 86, 54, 50,153, 12,121,119,115,112,113,
-218, 46, 40,213,135, 80,161,221, 43,136,144,107,160, 56,176, 9, 70,222, 86,228, 66,163,238, 56, 43, 85,170,132,137, 19, 39, 62,
-176, 60, 67, 97,136,138,138,242,232,247, 71,133,196,233,158,179,168, 89,174, 34, 4,202,187,123,206, 45,167,104,185, 50, 9,242,
-239,110,222,188, 41, 90,174,252,180, 90, 45,150, 44, 89,146, 7,128,153, 60,121,178,182, 76,153, 50, 50,111,210,146, 76, 38,195,
-156, 57,115,220,142,185,114, 39,182,138,147,143,156,223,109,222,188,185,219,133, 70,221,137, 54,119,156,162, 91,131,130,130, 28,
-150, 43,158,231, 29,179, 7,197,213,226, 11,107, 76, 72,233, 83,226,148, 56,255, 59,156,207, 26,220,214,238, 9, 9, 9, 47, 22,
-246, 66,133, 10, 21,174, 92,185,114,165,162,184,101,134,189,192, 84,152, 76,166, 74,141, 26, 53,242,104,202, 17, 4, 1, 42,149,
- 10,148, 82,180,154, 56, 29,132, 1, 24, 20,172,188, 66, 27,183,134, 76,198, 66,200,223,146,195,227, 44, 66,163,209, 88,160, 82,
-112,119,228,230,230,194,108, 54,123,189,250,182,201,100, 42,176,148, 2,161, 2,110,255,190,238,129,217,132,226,225,237,184, 28,
-181, 90, 93,160,139,167, 40,120, 90, 83, 76, 66,201, 67,156,136, 0, 0,149, 27,117,132, 32,240,160, 60, 95, 96, 59,163,170,229,
- 94,132, 64,121, 88,109,121, 48,155,205,158,204,140, 36, 53, 53,213,216,171, 87,175,189, 0,190,237,214,173,219,101,228,207, 96,
-161, 62, 62, 62, 42,185, 92, 46, 0, 72, 7, 64, 51, 50, 50,252,238,221,187, 39,152, 76,166,210,158,220,249,203, 47,191,224,194,
-133, 11,104,218,180,105,129,109,155, 68, 43,168,243,106,236,222,164, 79,177, 91,220,221, 10,238,133, 9, 56,111, 33,147,201,224,
-231,231, 7,133, 66,129, 41, 83,166, 64,161, 80, 64,171,213, 2, 0,230,205,155,231, 88, 52, 85,130, 4, 9, 18,158,121,129,229,
-169,188, 44,162,251,176,200,174, 66,142,227,226,203,148, 41, 83,172,143,241, 60,159,228, 65,176,197,175, 95,191, 94,225,108,117,
-240,244, 75, 41, 77,242, 80,201,198,111,217,178, 69,225,206,154, 81,216,198,207,158, 56,121,158,143, 47, 91,182,108,161, 22, 18,
-119,176,217,108,247,164, 36,250,228,192,243,124, 17,233,243,163,135, 77,159, 87, 43, 87,174,124,207,223,223,255,215,176,176,176,
-180,131, 7, 15, 6,213,175, 95, 63,200,249,153,250,245,235, 71,184,188,102, 65,225,251, 16,130, 16, 18,223,173, 91, 55,183,105,
- 94, 20, 75,110,210,103,188,167, 52,127,236,216, 49,133,243,251,133,241, 59,229,163,120, 47, 4,235,237,218,181,107, 51,206, 60,
-133,165,125,155,205,150, 34,165, 66, 9, 18, 36,252,103, 5,150,209,104,188, 91,179,102, 77,174,144,123,119,138,122, 55, 53, 53,
-181, 94, 73,123,192,106,181, 54,250, 55,112,166,164,164,212,147,146,219,211,141,199, 17, 71, 73, 73, 73,207,151, 52, 39,199,113,
- 37,158, 62,109, 54, 91,163,199, 17,166,105,105,105, 13,165,148, 37, 65,130, 4, 73, 96,121, 1,111,151, 99,144, 32, 65,130, 4,
- 9, 18, 36, 72,248,175,130,145,130, 64,130, 4, 9, 18, 36, 72,144, 32,161,100, 65,144,191,107,244, 3, 40,206,236, 0, 66, 72,
-155,226,126,216, 19,191,196, 41,113, 74,156, 18,167,196, 41,113, 74,156,207, 30,167, 39,238,103,102,118,162, 56, 59,234,113, 28,
- 0,218, 72,156, 18,167,196, 41,113, 74,156, 18,167,196, 41,113,254,215, 14,169,139, 80,130, 4, 9, 18, 36, 72,144, 32,161,132,
-193, 74, 65,240,207,128, 16, 34,163,148,242, 37, 72, 25, 0,160,176, 13,221, 44, 0, 50, 30,198,153, 0, 20,246, 67, 92,168,200,
- 6,192,106, 63,188, 88,106,254, 51, 38, 33, 33, 32,150,242,242,250,148, 16,185, 32,224, 84,233,210,165,254, 2, 94,180, 0,128,
- 79,120,181,106, 62, 58, 77, 27,179,213, 82, 78, 37, 87, 94,200, 52,228,238, 52, 37, 93,190, 37,165, 16, 9, 18,254,145,114,169,
- 11,128,207,236,121, 63,142, 82,186, 78, 10, 21, 9, 18, 74, 88, 96,249,250,250, 30,103, 24, 38,218,211,250, 58, 78, 25, 19, 60,
-207,199,167,167,167,215,243, 50, 35,179, 0,122,249,248,248,180,148,203,229,141, 1,192,102,179, 29,204,205,205,221, 13, 96, 61,
-165,148,123,200, 2, 66, 15,160, 55,128,126,246, 75, 63, 0, 88, 71, 41,205,126, 72,190,154,126,126,126, 27,229,114, 57, 77, 77,
- 77,109, 0, 0, 65, 65, 65, 71,108, 54, 27,201,206,206,126,153, 82,122,166,152,124,140, 66,161,152,222,180,105,211, 38,132,144,
-149,148,210,197, 37, 20,151, 42,134, 97,220, 10, 19, 65, 16,202, 62, 4,159, 2,128,223,130, 5, 11,130, 86,173, 90, 85, 59, 62,
- 62,190, 6, 0, 68, 71, 71,159,237,223,191,255, 95, 35, 70,140, 72, 3,144,101, 23, 90,133, 34, 33, 33, 32, 54, 57,241,198,144,
-164,228, 11,189, 1, 32, 60,162,198, 58,153,140, 81, 68, 69,157, 60,172, 13,238, 23, 92,185, 74,249,193,107,190, 89,160, 40, 91,
-174, 20,254, 56,116,242,185, 17,163, 62,140, 85,135, 85,254, 66, 18, 89, 79, 14,122,189,254, 56,195, 48,209, 69,229,113,119,121,
-158,231,249,248,180,180,180,122,133,113,178, 44, 27, 93, 84,121,225,238,154, 32, 8, 55, 82, 82, 82,220, 46, 25,225,231,231,119,
-152,101,217,114,222,114,137,191, 28,199,197, 23,182, 68,140,159,159,223,113,153, 76, 22, 93,148, 63,221,221, 19, 4,225, 70,114,
-114,114, 97,238,124,192,239, 37,225,206,135,225, 44,202,157, 98,121, 4, 96, 94, 80, 80,208, 11,105,105,105,255, 3,240, 97,118,
-118,118, 45,153, 76,134,192,192,192, 15, 9, 33,215,252,252,252,150,101,101,101, 29, 2, 48,138, 82, 42, 72, 57, 70,130,132, 71,
- 20, 88, 12,195, 68,223,187,119, 47, 84,167,211, 1,248,123,191, 60,113,147,103, 65, 16, 64, 41,117,252,114, 28,135,170, 85,171,
-122, 43, 50,106,232,245,250, 13,227,199,143, 47,221,171, 87, 47,165,184, 37, 76, 66, 66, 66,165,141, 27, 55,254,111,202,148, 41,
-159, 16, 66,122, 82, 74,207,122, 43, 90, 0,180, 6, 48,160,118,237,218, 61, 38, 77,154,164,104,213,170, 21,120,158,199,175,191,
-254,218,116,242,228,201, 11, 8, 33,155, 0, 44, 7,240,187,183,133, 4, 33,164, 73,120,120,248,234, 3, 7, 14, 68,220,188,121,
-147,239,213,171,215, 90, 0, 56,126,252,120, 12,207,243,164, 65,131, 6,191, 16, 66,250, 82, 74, 15, 20, 35,204,187,141, 24, 49,
-162,231,240,225,195, 67, 94,127,253,245, 87, 1, 44,182,127, 75,220, 69,188,184, 27, 16, 58, 44, 87,148, 82, 69, 17,207,133, 23,
-195,146,165,187,121,243,102, 64,163, 70,141,134, 38, 39, 39,191,235,204,155,148,148,132, 19, 39, 78, 88,167, 77,155, 54,231,208,
-161, 67,139,202,149, 43,151, 1,192, 80, 24, 17,229,229,245,147,146, 47,244,110,214,112,129, 31, 0,172,223, 50,244,149, 99,127,
-165,248,110,221,182,244,127, 74,181,194,188,234,171, 57,138,138, 21,202, 98,207,241,171, 56,122, 33,157,212,104,210,153,205,218,
-186,178, 45,128,165, 82,246,124, 50,144,201,100, 81,241,241,241,161, 90,173,214,237,134,238, 46,227, 46,196,133, 75, 81,169, 82,
-165,194, 11, 22,150,141,190,119,239, 94,168, 90,173,118,148, 29,174,101,134, 88,174, 56,210, 10,165,168, 92,185,178,181,136, 50,
-169,204,157, 59,119, 66,181, 90,173,131,199,157,251, 92,133, 70,229,202,149,139,242,123, 1,119,122,195, 73, 41, 69,197,138, 21,
-121, 79,126, 23,119,172,240,228,111,145,179, 92,185,114,180, 56,156,222,184,179,124,249,242, 86, 15,209, 63,239,242,229,203,195,
- 75,149, 42,133,138, 21, 43, 30,122,225,133, 23,244, 58,157, 14,219,182,109, 67,181,106,213, 98,245,122,253,209,245,235,215,203,
-199,142, 29,251,220,119,223,125, 7, 0, 35,164, 28, 35, 65,194, 35, 10, 44, 66, 8,116, 58, 29,214,174, 93, 91,232,182, 25,206,
-255, 75,151, 46,237,213, 7, 9, 33,245,202,149, 43,183,247,192,129, 3,154,136,136,191, 23,176,182, 88, 44, 8, 8, 8,192,176,
- 97,195,148, 93,186,116,169,216,174, 93,187, 35,132,144,230,148,210,227, 30,248,122,132,132,132, 44,252,248,227,143,195,250,244,
-233,131,160,160, 2,139,100,163, 87,175, 94,120,249,229,151, 21,151, 47, 95,126,101,197,138, 21,175, 44, 94,188, 56,145, 16, 50,
-130, 82,186,169, 40, 94,173, 86,219,173, 66,133, 10, 75, 14, 28, 56, 16, 26, 26, 26,138,152,152, 24,102,236,216,177, 21, 43, 85,
-170,164,137,142,142,102,238,223,191,143,159,126,250, 41,170,111,223,190, 27,148, 74,229, 96,139,197,178,217, 11,191, 43, 3, 3,
- 3,199,188,253,246,219, 65,217,217,217,220,201,147, 39,175,138,215, 85, 42,213,196, 6, 13, 26,212, 33,132,172,165,148, 46,127,
- 24,203,149,221, 74,231,186,231,136, 77,188,239,165, 37, 75,121,234,212,169,192,134, 13, 27,110, 50,155,205,117,134, 12, 25,114,
-103,218,180,105, 26,189, 94,175, 7, 64,178,179,179, 51, 62,251,236, 51,203,220,185,115, 63,168, 86,173, 90,235,195,135, 15,247,
-120,238,185,231,108,118,241,246,160,192, 34,196,225,158,187,247, 82,176,247,144,160,156, 56,254,253,232,153, 83,203,221,254,243,
-252, 93,129,213,232,241,243,190,115, 72, 74,203,197,111,135,207, 35, 60,200,151, 40, 84,242, 88,255,232,216,230, 89,247,206,239,
-163,210,142,215,143, 29,132, 16,104,181, 90,252,252,243,207, 15,108, 49,229,110,251, 41,150,101,225,239,239,239,113, 55, 2,181,
- 90,141,157, 59,119,186,221, 27,209,221,214, 59,126,126,126, 64, 17,155, 93, 19, 66,160, 86,171,113,240,224, 65, 48, 12,227,118,
- 11, 31,215,107, 58,157, 14, 76, 17,123, 82,137,156,251,246,237,243,200, 37,254,250,248,248, 0,128,172,200, 76,169, 82,225,192,
-129, 3,133,250,217,245,191,143,125, 63, 86, 79,156, 7, 15, 30, 44,176, 69,151,235,214, 93,206,231, 58,157,206,209,112, 43,180,
-117, 22, 16,208, 32, 58, 58, 26,199,142, 29,195,250,245,235, 3, 99, 99, 99,113,245,234, 85, 16, 66, 48,109,218, 52, 82,189,122,
-117,121, 98, 98, 34,154, 54,109,138, 31,127,252,177,145,148, 91, 36,252,131,144, 3,120, 14, 64, 8,242,119,141,201, 1,224,111,
-175,123,148, 0,210, 0,104,236,135, 25, 64, 46,128, 96,251,187,169,246,178,197, 89, 32,164,160,224,166,208,245,237,220,226,142,
- 18, 33, 78,247,196,111,184,158,187,254, 22,224,102,237,133,140, 88,137,181,160,148,238, 45,224, 35, 47,196,149,184,143,152,107,
- 94,118,179,241,171, 74,167,211,109, 60,114,228,136, 38, 36,228,111,183,155,205,102,228,228,228, 32, 55, 55, 23, 57, 57, 57,240,
-245,245,197,250,245,235, 53,173, 91,183,222, 72, 8,169, 68, 41, 53, 23,198, 9, 96,206,253,251,247,195, 56,142,131, 82,169, 44,
-172,229,139,170, 85,171,226,195, 15, 63, 68,251,246,237,195, 91,182,108, 57, 7,192,166, 34, 56,161,213,106,151,156, 56,113, 34,
- 84,171,213,226,202,149, 43,136,143,143,199,123,239,189, 87, 74, 16, 4,220,189,123, 23, 87,175, 94,197,189,123,247,176, 98,197,
-138,208,238,221,187, 47, 1,176,185, 40,191,219,241,230,232,209,163, 43, 5, 6, 6, 50,159,127,254,121, 86,110,110,238, 87,246,
-235,227,231,205,155,215,183, 89,179,102, 33,131, 6, 13, 2, 33,100, 13,165,244, 1,193,226,194,233,206,114,197, 3,184,232,242,
- 90, 85, 23,203, 86,184, 61,241,101,186,225, 36, 0,252,218,181,107, 55,218,108, 54,215, 57,112,224,192,181,198,141, 27,151, 1,
-112, 95, 76,116,126,126,126,186, 57,115,230,132,117,238,220,249,114,171, 86,173,234,180,107,215,110,116, 74, 74,202, 52,251,125,
-234,202, 41, 8, 56, 21, 30, 81, 99,221,190,195, 35,122,239, 57,104, 81,188, 63,234,147, 59,165, 75,149,205, 58,117, 37,157, 63,
-127, 35, 5, 57, 70, 14, 47,181,202,223, 88,188, 65,141,210, 88,184,246, 0,134,189,243,145,124,211,186,149, 47, 95,163,208, 1,
-248,165,136,240,124, 36, 72,156,127,139, 12, 65, 16, 32,151,203,209,161, 67, 7, 16, 66, 30,216,107, 83, 46,151,227,240,225,195,
-104,213,170, 21,228,114, 57,222,120,227, 13,175, 56, 89,150, 69,187,118,237, 28,251, 28, 58,243,185,138, 5,119, 90,192,213,239,
-148, 82,176, 44, 11,134, 97, 10,221,224,218,149,211, 83,185, 36,186,179, 40, 46,231,123,158,220, 41, 90,143,188, 21, 87,222,114,
-138,238,100, 89, 22,141, 26, 53,194, 95,127,253, 85,164,216,114,167, 43, 93,253,158,145,145,241, 90,165, 74,149,246, 45, 88,176,
- 32, 16, 0,210,210,210, 28, 27,209,203,100, 50, 92,186,116, 9, 22,139, 5,159,126,250,169, 53, 59, 59,123,144,148,143, 36,206,
-199,201, 89,148, 22, 1,208,108,252,248,241,245,166, 79,159, 62,173, 97,195,134,107, 14, 29, 58,180,154, 16,178,149, 82,218, 89,
-252, 29, 63,126,124,236,244,233,211,167,141, 27, 55,238,195,184,184,184,115,132,144,173, 0,224,122,110,119,127,103, 23,241, 22,
- 34,242,216,221, 82,224, 89,119,231,174,191,174,220,172,211, 5, 98,247, 28,113, 46,204,188, 21, 88,222,236,173,199,178,236,240,
-105,211,166,133, 21, 37,174,114,115,115,145,144,144,128, 50,101,202,224,141, 55,222, 8, 91,176, 96,193,112, 0,179,138,160, 85,
-200,100, 50, 28, 59,118, 12,201,201,201,168, 89,179, 38,202,149, 43, 87,224,129,235,215,175,227,215, 95,127, 69,102,102, 38,234,
-214,173, 11,228,143, 47,114,139,231,158,123,238,211,170, 85,171,182,107,215,174, 29,167,209,104,112,234,212, 41,212,169, 83, 7,
-107,215,174, 69,233,210,165,161,213,106,113,249,242,101,212,172, 89, 19,123,247,238, 69, 72, 72, 8,106,215,174,205,213,173, 91,
-119,127,122,122,250,238, 91,183,110,125, 90, 72,194, 81, 68, 69, 69,125,248,246,219,111, 43, 19, 18, 18,132, 21, 43, 86, 28,162,
-148, 30, 34,132, 12,254,232,163,143, 94,109,223,190,125,200,201,147, 39,179,255,252,243,207, 63,221,137, 43, 47, 45, 87,156,107,
-101,196,243,188,217,104, 52, 90,204,102,179,141, 97,152, 91,132, 16, 11,207,243,133,245,237,168, 7, 12, 24, 80, 62, 53, 53,117,
-216, 59,239,188,115,211, 46,174, 46, 33,127, 96, 59, 0,128,227, 56,115,110,110,110,118,195,134, 13,203,244,237,219,247,218,234,
-213,171,135, 13, 24, 48, 96,253,242,229,203,115, 1, 24, 93, 9, 75,151, 46,245,151, 76,198, 40, 12, 57,129, 55, 54,172, 95,246,
-238,175, 91,134,151,186,123,247, 94,197,160,224, 16,131,194, 39, 36, 97,253, 15,223, 29, 7, 96, 73, 72,201,198,153,235,137,144,
-203,101,184,112, 55, 11,205, 94,236, 37,191,118,101,106, 19, 81, 96, 73,120,172,160,226,230,208,123,246,236, 41,210,130,117,248,
-240, 97,200,229,114,104, 52, 26,204,157, 59,183, 72, 82, 81, 16,136,214, 33, 79, 34,134, 97,152, 34,203, 17, 81,100,136, 27,176,
-187, 30, 95,126,249, 37,222,121,231,157, 2,223,176,139, 12,226,137,179, 48,247,149, 41, 91, 22,201, 73, 73, 5,174,121,179, 89,
- 60,207,243,144,203,229,248,250,235,175,209,185,115,103,108,221,186,181,200,223, 14, 29, 58,128, 97, 24,234, 77,120, 54,106,212,
- 8, 86,171,213,225,230, 75,151, 46,185,229, 93,188,120,177,167,202,172, 11,128,207,234,212,169,163,111,217,178, 37,246,237,219,
-135,151, 95,126,217,108,181, 90,175, 0, 64,167, 78,157, 42, 47, 88,176, 64,121,226,196, 9, 4, 5, 5,201,239,220,185,243, 45,
- 33, 68, 26,248, 46,225,241, 22, 70,110,180,136, 88,231, 77,159, 62,125,154,139, 48, 42, 0,241, 62, 33,100,107, 92, 92, 92,103,
-103, 49,228,124,238,100,101,114, 22,111,177,206, 22, 40,103,241, 84,136, 40,115,117,183,243,243, 41, 5, 4,150,221, 67, 45,156,
-173, 62, 98,161,235, 73, 92, 21,214, 82,116,133,159,159, 95,199,151, 94,122,201, 33,110, 76, 38,147, 67, 88,137,226, 74, 60,191,
-124,249, 50,234,213,171,167,240,243,243,235,232, 65, 96,137,226, 13,145,145,145, 72, 77, 77,197,217,179,103, 81,166, 76, 25,216,
-108, 54,108,223,190, 29, 89, 89, 89,144,203,229, 80, 40, 20,176, 90,139, 30,146, 80,181,106,213, 14,171, 86,173,170,183,114,229,
-202, 12,177, 5,247,195, 15, 63,128, 82,138,144,144, 16,228,229,229, 33, 41, 41, 9,187,119,239, 6,199,113,240,241,241, 65, 76,
- 76,140,178, 91,183,110, 77, 62,251,236, 51, 57,128, 79, 11,161,126,225,229,151, 95,214,235,245,122,140, 26, 53,138, 90,173,214,
- 89,132,144, 6, 61,122,244,248,112,196,136, 17,129,183,110,221,178,188,249,230,155,199,173, 86,235, 28,123,124,200, 41,165, 54,
- 15, 9,177, 80,203,149,205,102, 19,195,244,102,110,110, 46,130,131,131,203,120, 24,163, 5, 0,138,131, 7, 15, 54, 2, 32,155,
- 60,121,178, 26, 64,146,179,184,178, 88, 44,200,205,205,133,193, 96,176,101,101,101, 37,143, 25, 51,134, 91,189,122,181,204,254,
-206, 5,119, 2, 11,120,209, 82,189,186, 78, 73,169,236,163,165, 75,151,250,180,111,223,158,241,241,241, 65, 78, 78,142,254,183,
-109,219,124, 90,183,108, 18, 51,109,250,204, 29,250,232,154, 73, 7, 79,221,192,189,196, 44, 88,108, 54,196, 68,248,229,219,191,
- 36, 60,118,216, 39,168, 56, 44, 88,206, 98, 98,223,190,125,120,241,197, 23, 29,121, 93,161, 80, 20,176,116,121,226,100, 89, 22,
- 47,190,248,226, 3, 22,157, 61,123,246,184,181, 54,121,130,179, 24,114, 21, 69,238,132, 23,195, 48,240,212,203, 44, 90,239,220,
-137, 44,103, 43,190,139,104,243, 84, 73,128,101, 89,140, 24, 49, 2,114,185, 28, 99,199,142, 5,203,178,168, 93,187, 54, 88,150,
- 69,195,134, 13, 33,151,203,209,170, 85,171, 98,251,253,200,145, 35,168, 83,167,142,195, 77,181,107,215, 70,253,250,245,193,178,
- 44,154, 54,109, 10,185, 92,142,118,237,218,121,195,249, 97, 78, 78, 78, 45, 31, 31, 31, 92,190,124, 25, 50,153, 12,132,144,171,
-148,210, 90, 0,240,246,219,111, 95,203,203,203, 43,111, 50,153,240,246,219,111, 19,139,197, 82,115,236,216,177, 31, 1,144, 4,
-150,132,199, 89, 30, 21,208, 34, 78, 48,142, 27, 55,238, 67, 66,200, 86,209, 34,229,106,105,114,119,238,134, 95, 20, 65, 98,247,
- 96,125, 23,241, 38,118, 29,118, 42,226, 93,139,139,160,114,237, 34,252,211,163, 5, 75, 44,116,189, 21, 88,158, 96, 50,153,158,
- 11, 13, 13, 45, 84, 92, 57,255, 90, 44, 22,148, 43, 87, 14, 38,147,233,185,226, 86, 22, 17, 17, 17,176, 90,173, 88,182,108, 25,
- 20, 10, 5, 20,138,191,117,133,197, 82,180,113,232,252,249,243, 55,143, 28, 57, 82,167,110,221,186, 1, 63,254,248, 99, 74,243,
-230,205, 67,218,183,111, 15,141, 70, 3,163,209, 8,155,205,134, 6, 13, 26,160,106,213,170,136,143,143,199,111,191,253,150, 90,
-169, 82,165,224,163, 71,143, 10,137,137,137,183,139,160,110,221,186,117,107, 16, 66,240,219,111,191,165, 81, 74, 79,104, 52,154,
- 31,167, 77,155,230,111,177, 88,132, 87, 95,125,245,110,122,122,250, 24, 0, 54,149, 74, 53,171,125,251,246, 47,200,100,178,181,
- 60,207, 47, 44,110, 2,117, 13, 91,131,193, 0,181, 90,237,205,146, 16,242,244,244,244, 26, 0,160,211,233, 2, 1, 92,115,164,
-108,163,177,128, 8,182, 88, 44,166,192,192, 64, 29, 0,216,223,145, 23, 18, 31, 33, 90,173,118,195,237,219, 55,124,157,199,199,
-249,251,251,163, 95,223,190, 76,227, 70,141,148,181,158,123,174,221,132, 47, 86,174,141, 12,210, 91, 98, 34,131, 96,227,109,216,
-181, 99,187, 64, 5,219, 14,169,184,121, 50, 2, 75, 20, 25,174, 22, 44,185, 92,142,189,123,247, 62,112, 77,161, 80,224,171,175,
-190,242, 74, 16,136, 98,170,176, 46, 50,151, 46, 45,226, 73,184,200,229,114,200,100, 50,124,253,245,215, 16, 4, 1,239,190,251,
-110,129,110, 67,103,126, 47, 91,204,142,119,170,126, 34, 0,176, 32,126,182,202,241,190,171,123,197,242,210, 27,171,216,130, 5,
- 11,188,178, 96,117,234,212,201,163, 96,117,238, 81,112,118,215, 95,127,253,229,150,119,233,210,165, 30,195,147,231,121,252,242,
-203, 47, 14,113, 42,226,227,143, 63,126, 59, 58, 58, 58,108,255,254,253, 72, 76, 76,132,193, 96, 64,110,110, 46, 26, 52,104, 16,
-211,166, 77,155, 83,137,137,137,183,206,159, 63,255,146,148,123, 36, 60, 65, 11,150, 57, 46, 46,238, 92, 92, 92,156, 91, 11,149,
-171, 37,169, 40, 75,147,147,176,250, 19,246,174,193,113,227,198,125,136,252,225, 51,127,122,241,174,210,181,139,208,173,225,199,
- 69, 53,126,230,174,208,245,166,155,208, 75,179, 57, 75, 8,129,201,100,114, 43,172,156, 69,129,213,106, 69,122,122, 58,120,158,
-103, 31, 33,162, 30,184,230, 73, 96,157, 61,123,246,245,129, 3, 7, 38,248,249,249,213, 74, 73, 73, 73, 22, 4,161,213,225,195,
-135, 67, 88,150,133, 94,175,135, 94,175,199,175,191,254, 10,173, 86,139, 17, 35, 70, 36,243, 60,191,207,215,215, 55,200,104, 52,
-158, 78, 76, 76,156, 80,168,114,145,203, 91, 55,107,214, 12, 39, 78,156, 64,102,102,230, 31,132,144, 90,131, 6, 13,106, 91,170,
- 84, 41, 50,117,234, 84,211,181,107,215,190, 4,144,162,211,233,150,173, 90,181,170,121,221,186,117,125,250,247,239, 15, 66,200,
- 55,148, 82,147,183,126, 54, 24, 12, 5,132, 85,118,118, 54,114,114,114,160,211,233, 56, 47,195, 76,142,252,177, 84,226,120, 42,
- 71,220,216,173, 87, 98,252, 80,150,101,105,254, 35, 84, 94, 24,159, 78,167,155,188,114,229, 74,141,235,228, 3,158,231,145,148,
-148, 4,189, 94,143,143, 39, 76, 80, 76,122,111, 80, 29,153, 79,216, 97,134, 33,176, 88,105, 38, 21, 44,219, 13, 73,125,246, 75,
-197,205,147,129, 40, 8,186,118,237,250, 64,183,160, 66,161,192,206,157, 59,209,189,123,119, 71,131,165,110,221,186, 30, 27, 85,
-162, 32,232,210,165,139,195, 18,180,125,251,118,183,221,123,162, 5,202, 27, 33, 40, 62, 59,114,228, 72,176, 44,139,133, 11, 23,
- 98,244,232,209, 96, 24, 6,179,103,207, 6,195, 48,152, 56,113,162,215,226,210, 89,184,220,154,153,255, 27, 61, 58, 27,105,139,
-195, 0, 0,190,122,189,232,161, 98,149, 61, 44,203, 58, 44, 87,207, 61,247, 28,228,114, 57, 26, 54,108, 8,150,101, 29,150,171,
-142, 29, 59, 58,135, 35,245,134,147,101, 89, 92,185,114,197,225,230,134, 13, 27, 22,176, 92,177, 44,139, 78,157, 58,121,227,204,
-105,254,254,254,159, 85,173, 90,181,218,156, 57,115,228, 50,153, 12,173, 91,183,174,252,230,155,111,222, 14, 10, 10, 10,154, 60,
-121,178,214,205, 59, 26, 0,181,170, 85,171,166,147,114,141,132,199,104,193,250,204,205,173, 0,231, 49, 85,197,224,219,234,252,
-188,200,225, 42,138,236, 22,177,125,158,184,220,189, 91, 24,216,162, 90, 99,197, 17, 88,118,243,114,145, 31,211,106,181,103,146,
-147,147, 27,106, 52,154, 2,226,202,157,208,146,201,100, 72, 76, 76,132, 86,171, 61, 83,146,145,231,169,139,208, 46,102,222,115,
- 10,208, 54, 29, 59,118, 92,190,115,231,206,136, 93,187,118,225,232,209,163, 8, 9, 9,193,130, 5, 11,238, 39, 37, 37,189, 78,
- 41,221,233,205,119,203,151, 47, 95, 93,167,211,225,208,161, 67, 0,176, 31,192,128, 97,195,134, 17,142,227,176,104,209,162, 60,
- 0, 59,253,252,252, 54,109,220,184,241,185,154, 53,107, 42,119,237,218,149,115,244,232,209, 61, 94,138, 43, 94, 16,132, 7,132,
-149,115,152,250,250,250,122, 99,193,178,249,249,249,157,205,206,206,238,101, 52, 26,179, 85, 42,149,111,118,118,182,217, 89, 88,
-137,252, 44,203,202,175, 92,185,146, 0, 32,198,207,207,239, 44,156,186, 18, 11, 36, 48,150,109,221,186,117,107,214, 53, 14,146,
-146,146,144,152,152, 8,171,213,138,186,117,235, 18, 25,177,201,210,239,156,126, 91, 42, 94,254,153, 2, 77,204,235,226,172, 63,
-119, 51, 7,183,111,223,238, 56,103, 24, 6,246,105,251, 30,197,208,206,157, 59,139, 28,136,238,210, 69,232,209, 20, 46, 62,191,
-104,209,162,252,237, 40,236,150, 43,134, 97, 48,110,220, 56,168, 84, 42, 76,157, 58, 21,227,198,141, 3,203,178, 30,187, 8,157,
-133, 75,217,177,121,206,141,162,252, 76, 97, 31,239, 68, 8,113, 22, 89,196, 91,209, 86,148,245,206, 27,203,191, 51,167,248,158,
- 90,173, 46,116,128,187, 11, 39, 41,194,223, 63, 19, 66,110, 68, 68, 68, 28,108,216,176,161,223,241,227,199, 49,123,246,108,133,
-217,108, 46,189,107,215, 46,199,119,221,133,151,193, 96,208, 72, 57, 71,194,227,176, 94, 21,113, 59,197,101,252, 20,113,238,174,
- 43,226,215,245,121, 56, 93,115,230, 77,113,169,199,156,175,187,138, 42,215,111, 56, 63,147,242,128, 5,203, 83, 33,225, 73,104,
-121, 99,193,202,203,203,251,125,219,182,109,245,251,246,237,203, 22,213, 61,104, 48, 24, 16, 22, 22,134,115,231,206,113,121,121,
-121,191,123, 97, 25, 43, 49,129,229, 38,194,119,133,135,135,203,108, 54, 27, 42, 86,172,136,168,168, 40,152, 76, 38,100,102,102,
-202,188, 21, 87,132, 16, 69,189,122,245,100, 0,144,145,145, 1,228, 79, 39,173, 84,169, 82, 37,156, 56,113, 2, 25, 25, 25,155,
- 1,180,153, 52,105, 82,237, 23, 94,120, 65,177,118,237,218,188, 33, 67,134,108,182,217,108, 83,189,180, 62, 88, 56,142, 43,199,
- 48,140, 53, 51, 51,243,158,115,120,134,133,133, 5,234,116, 58,146,148,148,100,243, 70, 96,213,170, 85,235,216,157, 59,119, 48,
-121,242,228,148,105,211,166, 85,202,201,201,201,200,202,202,226,156, 69,150,201,100, 98,130,131,131, 85,139, 23, 47,214, 0, 64,
-173, 90,181,142, 21, 38,176, 12, 6, 67, 41,173,246,239,134,176,217,108, 70, 98, 98, 34, 18, 19, 19,145,148,148,132,156,156, 28,
-196,196,196, 32, 47, 47,175,140, 84,188,252, 99, 2,171, 64, 55,153,115,254,118,174,192,139,147,215,157,133, 75,215,174, 93, 29,
- 99,183, 68,139,152,120,108,216,176,193,117,224,184, 87, 2,107,209,162, 69, 24, 57,114, 36,212,106, 53,230,204,153, 83,160,139,
-208, 85, 20, 8,130, 64,188,241,123,185, 15,140, 72,156, 31, 8,185, 92,142,160, 33, 73, 5,186,226,220, 8, 13,175,220, 57,109,
-218,180, 18,233, 34,116,230, 44, 83, 38, 63,171,124,253,245,215,232,213,171, 23,246,239,223,255,208, 93,132,177,177,177, 63,108,
-221,186,213,239,252,249,243,200,206,206, 70, 74, 74, 10,204,102, 51,226,227,227, 11,237, 5,176,151,229,106, 41,231, 72,120,194,
-248,243, 9,243, 62,242,247, 88, 15, 21,183,215, 2,203, 27, 11,150,217,108,158, 51,106,212,168, 97,109,218,180, 9,244,245,245,
- 69, 66, 66,194, 3,226, 42, 55, 55, 23, 62, 62, 62, 48, 26,141,216,178,101, 75,182,217,108,158,227, 73, 20,216,108, 54,132,134,
-134, 34, 53, 53, 21, 66, 33,227,162, 25,134,129, 70,163, 65,110,110, 46, 10, 19, 3, 69, 85, 20, 86,171, 21, 54,155, 13, 54,155,
- 13, 86,171, 21,197, 92,158, 73, 35, 46,216,106, 48, 24, 0,192, 16, 25, 25, 89, 94,173, 86,227,230,205,155, 0,112, 5, 64,203,
-246,237,219,203,211,210,210,232,155,111,190,121,152, 82, 58,194,195,106,246,150,125,251,246,149, 3, 0,141, 70,115, 25, 0,226,
-227,227,109,153,153,153, 5, 44,131, 90,173,150,118,239,222, 61,130, 82,138,125,251,246,149, 83, 40, 20, 20,133,172, 89, 5,192,
-180,121,243,230,243,126,126,126,171,167, 79,159,222,183,115,231,206,231,106,212,168, 81,206, 96, 48, 36, 27,141, 70,163,201,100,
-162, 50,153, 76, 17, 16, 16,160,222,177, 99,199,181,195,135, 15,183,209,235,245,171, 55,111,222,124, 30,128, 91, 75,155, 78,167,
-139,207,203,203, 43, 43,198,169,179,184, 74, 76, 76, 4,165, 20, 55,110,220,128, 86,171,189, 35,149, 31,255,104,203,241, 1, 97,
-229, 78,108,121, 43,174,156, 5,193,142, 29, 59,138, 92, 3,203, 91, 78,103, 49, 52,122,244,104,204,159, 63,255, 1, 11,214,212,
-169,249,109,146, 9, 19, 38,120, 61, 6, 75,180, 86, 37,206, 15, 68,248,200,244, 2,110, 7, 0, 34,186,175,152, 75,178,177, 44,
-139,201,147, 39, 63, 48,248,220,185, 11,207,203,174,188, 2,238, 76, 78, 78, 6,203,178, 8, 12, 12, 68,191,126,253,208,174, 93,
- 59, 71, 87, 99,113,121, 47, 94,188,120,240,131, 15, 62,168, 25, 27, 27,139, 41, 83,166,164,251,251,251,251,190,245,214, 91,108,
-102,102, 38, 41,202,130, 37, 9, 44, 9, 18, 30, 65, 96,137, 25,203,219, 89,132,238, 10, 73, 66, 72, 27,231,181, 50, 40,165, 89,
-132,144,126,109,219,182,253,113,221,186,117,154,242,229,203,227,226,197,139, 72, 79, 79,135,197, 98,129, 66,161, 64, 68, 68, 4,
- 50, 51, 51,241,221,119,223, 25,243,242,242,250, 81, 74,179,138,226, 4,240, 81,189,122,245,150,204,154, 53, 75, 93,187,118,109,
-164,167,167, 35, 55, 55,183,192,170,211,122,189, 30, 26,141, 6,199,142, 29,195,246,237,219,141, 0, 62,242,192,233, 78,197,193,
-106,181, 58,132,150, 39,129,229,194,169, 19,173, 56,121,121,121, 0,192,149, 46, 93, 58, 12, 0,110,220,184, 1, 0,183, 99, 98,
- 98, 38, 84,168, 80,129,172, 90,181,138, 82, 74,119,185, 19, 87, 46,156,233, 77,155, 54,205, 0, 16,110,177, 88, 20, 0,144,149,
-149,101, 13, 14, 14, 14, 85,169, 84,130, 70,163, 17,212,106,181,144,144,144,192,113, 28,167, 0,128,166, 77,155, 90, 0, 36,194,
-105,172,135, 11,167, 0, 32,123,233,210,165,159,245,239,223,191, 97,163, 70,141, 98,135, 14, 29,122,246,205, 55,223,100,162,162,
-162, 2,114,114,114, 76, 87,175, 94,205,248,226,139, 47,114,142, 28, 57,210, 70, 46,151,223, 94,186,116,233,103, 0,178,237,239,
- 62,192,201,113,220,239,187,118,237,122,189,115,231,206,236,189,123,247,144,148,148,228, 16, 87, 73, 73, 73,168, 90,181, 42, 14,
- 31, 62,204, 91,173,214, 93,197, 8,207,146,178,220, 72,156,249,141, 15, 42,230,245,194,132,149,216,136,242,150,211, 89, 12,245,
-234,213,171,128,213, 74,161, 80, 96,227,198,141,110,203, 13, 55, 43,146,183,113, 93, 15, 74,116,211, 7, 31,124, 80, 64,172,125,
-252,241,199,133, 58,205, 83,120,138, 60, 89, 95, 71, 21,156, 69, 88, 72, 62, 47,202,157, 98,217, 41,151,203,241,241,199, 31,123,
-109,193,130,203, 24, 44,119,156,162,223,155, 55,111,142,188,188, 60,135,128, 45,204,130,229, 41, 60,121,158, 31, 57,127,254,124,
-170,215,235, 95,200,206,206,254,223,157, 59,119, 86,228,229,229, 61,159,149,149, 85,164, 5,203,108, 54,171,164,124, 36,113, 62,
-142,181,176,254, 19, 2,203, 94, 57,162, 84,169, 82, 5,246,182, 98, 24,166,192, 81,156,113, 4,246, 12,187,131, 16,210,163,113,
-227,198,223,143, 28, 57,210,183,118,237,218,242,178,101,203,194, 96, 48,224,230,205,155, 56,119,238, 28,183,121,243,230,236,188,
-188,188,255, 81, 74,119,120,193,183,146, 16,178,189,125,251,246, 19, 27, 52,104, 48,248,147, 79, 62,145, 85,174, 92, 25, 89, 89,
- 89, 8, 8, 8, 64,104,104, 40, 46, 93,186,132, 45, 91,182,240,169,169,169, 75, 0, 76,162,148,166, 20,183,129,111,181, 90,241,
-202, 43,175, 64, 16, 4,204,157, 59,215,121, 65, 52,111, 96,181, 90,173, 20, 0, 73, 77, 77, 5,128, 60, 81,112, 93,189,122, 21,
- 0,238,148, 45, 91,214, 7, 0,118,237,218, 69, 0, 28,242,214, 93,206,150,172,170, 85,171,222,116, 45, 20, 69,203,149,104,245,
-130,231, 13,154, 77,189,123,247, 78,206,203,203,107, 63,122,244,232,137,139, 22, 45,234,187,104,209,162, 7, 30,210,235,245,171,
-103,207,158, 61,169,119,239,222,201,133, 89,175,236, 22,187, 9,175,189,246, 90,239, 51,103,206,248,170,213,106, 24, 12, 6,164,
-165,165,193,106,181, 34, 38, 38, 6,201,201,201, 88,185,114,101,142,209,104,252, 84,202,142,255, 12,156, 5, 65, 97, 86, 44, 79,
-226,170, 40, 43,206,207, 63,255,236,118,141,169,226,114,186,138, 12,111,215,166, 42,170, 49, 36, 46, 47,227,110,233,135,226,148,
-107,238,120, 89,150,197,231,159,127,238, 88,108,213,157,229,170, 56, 22, 44,145, 51, 48, 48, 16, 0, 32,110,109,212,169, 83,167,
-135,230,181,111, 27, 54,194,233, 27,211,198,140, 25,243, 89,213,170, 85, 43, 3, 80, 57,135,129,180,169,130, 4, 9, 37, 36,176,
-120,158,143,175, 82,165, 74,129,130,205,211, 38,163, 54,155, 45,222,203, 76,189,157, 16, 18, 51,123,246,236, 81, 58,157,174, 77,
- 94, 94, 94, 77,123,129,113,198, 96, 48,236, 50,155,205,243,138,179, 57,179, 93, 48, 13, 39,132,204,109,223,190,253,212, 86,173,
- 90,245,124,239,189,247, 8,165, 20,139, 23, 47,166,215,175, 95,223, 0,224, 35, 74,233,245,135, 9,164,192,192,192,243,223,125,
-247, 93,216,143, 63,254, 8,155,205,134,121,243,230,193,215,215,247,124,113,220,199,178,236,247,141, 26, 53,234,123,248,240,225,
-213,148,210,179, 42,149,234,135,166, 77,155,246, 59,116,232,208, 58, 74,233, 5,150,101,127,104,216,176, 97,191, 99,199,142,109,
-162,148,158, 46,134,243, 28,150, 44,142,115,223,163,232,206,114,229, 1,217, 3, 7, 14,180, 14, 28, 56,240,189,222,189,123, 47,
-251,243,207, 63,159,207,204,204,172, 9, 0,254,254,254,103,234,215,175,127,108,221,186,117,151,236,150, 43,147, 39,191, 19, 66,
-186,215,172, 89,115,211,148, 41, 83,116,177,177,177,108,197,138, 21,113,235,214, 45,156, 61,123,150,251,246,219,111,115,141, 70,
- 99, 87, 74,105,134,148, 29,255, 57,129, 69, 41,133,191,191,127,129,198,147, 56,117,191,184,221,130,206, 21,178,184,165,142, 43,
-111, 97,156, 30, 6,185, 2, 0,124,124,124, 28,139,146,122, 51, 52, 65, 16,138, 94, 79,141, 82,234,224, 20, 15, 47,196,149,199,
- 25,127,246,173,106,188,230,244,102,153, 6,157, 78, 7,155,205,230,224,245, 98, 38, 39, 41,102,156,253, 12,224,231,138, 21, 43,
- 94, 5, 80, 65, 18, 85, 18, 36, 60, 6,129,149,158,158, 94,239,113,126,216, 46,160, 38,217,143,146,226,188, 14,160, 55, 33,100,
-214, 31,127,252, 33,246, 23, 76,246,180,159,161, 39, 92,188,120,177,179, 92, 46,255,106,245,234,213, 13, 40,165,240,243,243, 59,
-114,235,214,173,183,138,195,193,113,220, 96, 66,200,187,226,172, 64,179,217, 60,152, 16,242, 62,165,212,224,116,223,113, 94, 92,
-175, 3, 48, 83, 74, 35, 11,185,111, 46,134,184,114, 88,178, 0, 88,214,173, 91,151, 11,224, 20,254, 94,231,202,102, 63, 76,112,
-234, 22,244, 16, 47,187, 9, 33, 21, 63,254,248,227,105, 50,153,172,181,193, 96,136,210,233,116,119, 57,142,251, 61, 47, 47,239,
- 35, 74,105,154,148, 21,255, 57, 88, 44,150,123, 85,170, 84, 97,221, 53,156,138,170,192,139,106, 80,241, 60, 31, 95,169, 82, 37,
-143,141, 50, 55,156,247,138, 72, 71,183, 99, 98, 98, 24,111,185, 68, 88,173,214,228,162,220, 25, 19, 19,131,226,114,122,242,123,
-185,114,229,220,250,221,131, 16,188, 87, 68,249,241, 80,156, 69,133,103, 81, 48, 26,141, 25, 33, 33, 33,185, 38,147, 73,110, 54,
-155,229, 28,199, 21, 48, 55,106, 52,154, 20, 41,231, 72,144,240,144, 2,235,223, 12,187,160,234, 82,130,124,102, 0,175,150, 0,
-143,201,229,220, 80,212,121, 49,241, 56, 44, 64, 2,128,188, 18, 10,195, 84, 0,111, 74, 89,238,233, 67,106,106,234, 11, 37,205,
-153,150,150, 86,226, 13,180,148,148,148,134,143,193,239,245,254,171,156, 69,225,222,189,123, 47, 72, 57, 67,130,132, 71, 3, 35,
- 5,129, 4, 9, 18, 36, 72,144, 32, 65, 66,201,130, 0,104,227,238, 70,113,102, 7, 16, 66,218, 20,247,195,158,248, 37, 78,137,
- 83,226,148, 56, 37, 78,137, 83,226,124,246, 56, 61,113, 63, 51,179, 19, 41,165,143,237, 0,208, 70,226,148, 56, 37, 78,137, 83,
-226,148, 56, 37, 78,137,243,191,118, 72, 93,132, 18, 36, 72,144, 32, 65,130, 4, 9, 37, 12, 73, 96, 73,144, 32, 65,130, 4, 9,
- 18, 36, 72, 2, 75,130, 4, 9, 18,158, 12, 8, 33, 1, 79, 51,159, 4, 9, 18, 36,129, 37, 65,130, 4, 9,255, 54,113, 85, 3,
-192,148, 18,166,157, 98,231,149, 32,225, 63,145,135, 8, 33, 53, 37,129, 37, 65,130, 4, 9, 18,196,138,161, 99,249,242,229, 39,
- 3,240, 41, 97,106,159,242,229,203, 79, 38,132,116,148, 66, 89,194, 51,154,119, 84,132,144, 87, 25,134, 57, 86,163, 70,141, 51,
-177,177,177,167, 25,134, 57, 76, 8,233, 69, 8, 97,255, 83, 97,225,180, 41,242, 94, 0,160,148, 54,151,146,136, 4, 9, 18,254,
-163,149, 3, 11, 96,112,223,190,125,187, 76,159, 62, 93, 89,170, 84,169,187,148,210,254, 37,200,191,234,238,221,187,209, 3, 6,
- 12,200,221,189,123,247, 14, 0, 75,220,109,236, 46, 65,194,191, 48,239,148, 5, 48,216,199,199,103, 80,139, 22, 45, 2,186,118,
-237,138,160,160, 32,112, 28,135,187,119,239, 98,235,214,173, 56,116,232, 80,130,197, 98,153, 15,224,107, 74,105,102, 33, 60,207,
-140, 22, 33,148, 82,113,227,226, 22,118, 79,237,149,146,138, 4, 9, 18,254,131, 21,132, 30,192,248, 57,115,230, 52, 24, 60,120,
-112, 57,147,201, 20, 31, 16, 16,112,163,164, 5,150,213,106,109,147,146,146,114,124,234,212,169, 88,188,120,241, 5, 0,113,197,
-217,123, 85,130,132,167, 48,239,140,235,209,163,199,212,176,176, 48,166, 70,141, 26,136,136,136,128,217,108,134,209,104, 4,165,
- 20, 44,203,130, 82,138,172,172, 44,236,219,183, 15,187,119,239, 54,103,100,100,124, 7, 96, 30,165,244,138, 19,207, 51,165, 69,
- 28, 2,171,184,155,130, 74,144, 32, 65,194, 51, 84, 65,148,211,104, 52, 31,111,217,178,165,122,147, 38, 77, 66,115,114,114,110,
-216,108, 54, 67,100,100, 36, 69,254,166,230,238,144, 69, 41, 29,225,134,107, 1, 0,191, 66,222,209, 91,173,214,250,169,169,169,
-199, 1, 96,227,198,141, 24, 63,126,124,154,209,104,156, 76, 41,189, 41,197,132,132,127,105,254,185,124,241,226,197, 74, 60,207,
- 35, 53, 53, 21,102,179, 25,121,121,121, 14,129, 37,147,201, 64, 41, 5,199,229, 27,107, 5, 65,192,137, 19, 39,176,107,215, 46,
-122,227,198,141, 79, 40,165,147, 69,129,245, 44,105, 17, 73, 96, 73,144, 32,225,191, 94, 57, 52, 14, 15, 15,127,247,143, 63,254,
- 40, 91,166, 76, 25,125,110,110,238, 53,142,227,108, 0, 16, 16, 16, 16, 43,147,201, 84,174,239,240, 60,111, 86,171,213, 7,220,
- 89,183, 8, 33,171, 76, 38, 83, 19,119,239,217,223,229, 50, 50, 50, 78,137,231,167, 79,159,198,160, 65,131,172,137,137,137,115,
- 40,165, 7,165, 24,145,240,111, 20, 88,167, 78,157,170,180,102,205, 26,212,169, 83, 7,213,170, 85, 67,110,110,174, 67,108, 89,
- 44, 22,216,108,182, 7,222,203,206,206,198,187,239,190,123,133, 82, 90,249, 89, 20, 88,226,128,179,207,164, 49, 88, 18, 36, 72,
-248, 47, 35, 49, 49, 49,213,223,223,255,190, 32, 8, 84,188,150,145,145,113,238, 97,184, 30,246, 61, 9, 18,254,165,176, 89, 44,
- 22,212,171, 87, 15, 55,111,222,196,137, 19, 39, 28, 66, 43, 53, 53, 21, 9, 9, 9, 5, 30, 62,118,236, 24, 78,158, 60,137,102,
-205,154,185,242,124,246,204,141,193,178, 43,199,230,118, 79,237,149,210,138, 4, 9, 18,254, 99, 45,240,114, 26,141,230,227,184,
-184,184,160,151, 95,126,217,113,253,113,116, 17, 38, 36, 36, 56, 90,232, 82, 23,161,132,103, 36,255,116,143,140,140,252,118,216,
-176, 97,126, 13, 26, 52, 64,124,124, 60,238,221,187,135,140,140, 12,212,174, 93, 27,177,177,177,184,126,253, 58,182,111,223,142,
-147, 39, 79, 66,165, 82, 33, 58, 58, 26, 62,171,215,224, 43,130,243,148,210, 88, 39,174,103, 70,139, 56, 4,150, 4, 9, 18, 36,
-252,199, 43, 9, 61,128,241, 67,134, 12,169,246,209, 71, 31,129, 16,130,200,200,200,172,146, 30,228,158,144,144,224, 71, 41,133,
- 52,200, 93,194, 51,150,127,124, 1,140,137,137,137,121,127,200,144, 33,170,234,213,171, 35, 62, 62, 30, 41, 41, 41,200,200,200,
-192,145, 35, 71, 0, 0, 81, 81, 81,136,138,138,194,165, 75,151,112,240,224,193,236,220,220,220,129,148,210, 31,159,201, 48,145,
- 4,150, 4, 9, 18, 36, 56, 42, 9, 22,192,224,150, 45, 91,182, 91,188,120, 49, 42, 85,170, 84,226, 2,235,202,149, 43,126, 67,
-134, 12,129,180, 76,131,132,103, 52, 15,133, 2,152, 80,189,122,245,193,131, 6, 13, 98,203,148, 41,131,123,247,238,225,143, 63,
-254, 64,133, 10, 21,112,247,238, 93,236,222,189,219,146,146,146, 50, 23,192,116, 74,105,214,179, 26, 22,204, 99, 14,232, 54, 18,
-167,196, 41,113, 74,156,255, 22, 78, 74, 41, 71, 41, 93,184,123,247,238, 37, 29, 59,118, 20, 30,135, 59, 59,118,236, 40,236,222,
-189,123, 9,165,116, 97, 81,226, 74,138, 35,137,243,223,200, 73, 41, 77,166,148,142, 56,127,254,124,197,119,222,121,231,251, 41,
- 83,166, 8,130, 32, 32, 52, 52, 20,235,215,175, 23,214,174, 93,251,109, 74, 74, 74,121, 74,233,184,103, 89, 92, 1,127, 15,114,
-151, 32, 65,130, 4, 9,127, 87, 18,191, 18, 66,226, 1, 12, 46, 97,234,220,235,215,175,127, 78, 41, 61, 43,133,178,132,103, 60,
- 15,221, 2,208,159, 16, 50,243,196,137, 19, 31, 1,160, 0,166, 80, 74, 47,252, 87,194, 64, 18, 88, 18, 36, 72,144,224,190,130,
- 56, 75, 8,153, 80,194,180, 19, 40,165, 25, 82,232, 74,248, 15,229,163,115, 0,250,252, 23,253, 46,237, 69, 40, 65,130, 4, 9,
-133, 87, 14, 25, 79, 51,159, 4, 9, 18, 36,129, 37, 65,130, 4, 9, 18, 36, 72,144, 32, 9, 44, 9, 18, 36, 72,144, 32, 65,130,
- 4, 9, 15, 7, 2,160,176,153, 0,187,188, 38,121,136, 25, 10,158,248, 37, 78,137, 83,226,148, 56, 37, 78,137, 83,226,124,246,
- 56, 61,113, 23, 71,127, 60,213,160,148,122, 60, 96, 95, 47,171,184, 7,128, 54, 15,243,158,196, 41,113, 74,156, 18,167,196,249,
-239,229,180, 55,222, 9,242,123, 73, 24,241,252,105,246,251,195,212,115, 79,202,239,255, 21,206,103,237, 96, 61,168, 75, 71, 32,
- 17, 66, 4, 0, 2, 45,129,149, 73, 9, 33, 98, 4,148, 8,159,132,199, 96,218,204,143, 35,242,183, 14,151,226, 73,130, 4, 9,
-197, 42, 59,100, 78,149, 44, 15,128, 39,132,224,105, 43, 75, 74,178,158,123, 28,126,255, 47,115,254,219,193, 22, 21, 80, 50,153,
-108, 71,112,112,112,203,212,212, 84,193,126, 29, 74,165, 18, 12,195, 64, 46,151, 27,115,114,114,244, 15, 17, 9,223,132,133,133,
- 13, 72, 75, 75, 19, 24,134,129, 90,173, 6, 33,196,193,153,153,153,169,255,167, 3,165,108,217,178, 25, 70,163,209,199,245,186,
- 90,173, 54,221,190,125,219,247,191, 80, 64, 42, 20,138, 30,129,129,129,254, 41, 41, 41,148, 97, 24, 40, 20, 10,200,100, 50,216,
-255,115,153,153,153,203,189,229, 11, 12, 12, 60, 22, 24, 24,232, 47,190, 79, 8, 65, 90, 90, 90,102, 82, 82,210,243, 0,160,209,
-104, 14,234,116,186, 32,150,101, 33,147,201, 32,147,201,144,151,151,151,150,154,154,218, 88,170,174,254,157,216,176, 97,131,172,
-125,212, 27, 21, 88,106,172,197, 48,212, 79, 16, 72, 22, 71, 52,167,183,223,251,230,154, 55,239,247,236,217,147,255,135,243, 64,
- 99,123,203,226, 96, 9,241, 57,239, 79,104, 2,144, 10,224, 26,128,245,148, 82,227, 63, 29, 95, 42,149,106,110, 88, 88,216,160,
-220,220,220, 60, 66, 8, 37,132, 32,191, 26,192, 3,191, 60,207,199,167,166,166,214,243, 80,201,202,149, 74,229,236,240,240,240,
-215,242,242,242,242,236,124,148, 16,130,136,136,136, 2,124, 0, 96,179,217,226, 83, 82, 82,234,121,227,214,208,208,208,165, 26,
-141,230,127,121,121,121, 6,187, 32,114,238,145,113,174,196,175,167,164,164, 52,245, 36, 8,148, 74,229,188,176,176,176,215,237,
-126, 7, 33,132,134,132,132, 60,178,223,195,194,194, 94, 51, 24, 12, 5,252, 30, 26, 26,234,150,179, 48,191,187,227,116,118, 39,
- 33, 4, 33, 33, 33,143,236,206,167,145,243,153, 21, 88, 0, 24, 66,200,230,198,141, 27,183,216,187,119, 47,115,241,226, 69,166,
-106,213,170,224,121, 30,130,144,159,158,163,163,163,181, 15, 81,200,172,104,218,180,233, 43,251,246,237, 99, 54,111,222,204,212,
-175, 95, 31,132, 16,240, 60, 15,158,231, 81,163, 70, 13,205, 35, 22, 98, 62, 44,203,190,171, 84, 42,155,115, 28, 87, 13, 0,228,
-114,249, 5,179,217,188,151,227,184, 57,148,210, 92,111,120,172, 86,171, 54, 57, 57,249,129,176,137,137,137, 81, 62,172,219,244,
-122,253, 33,134, 97, 98, 28, 1,108, 23, 26,238, 50,177,248, 75, 41,189,145,146,146,210,168, 48,206,128,128, 0, 7,103, 97, 28,
-174,215, 4, 65,184,145,156,156,220,200,131,184,122,185,105,211,166,126,187,118,237, 34,119,239,222, 37, 26,141, 6,130, 32,128,
-231,121,216,108, 54, 84,175, 94,189, 88,235,167,249,251,251,235,199,141, 27, 87,161, 67,135, 14,216,184,113, 35, 94,125,245, 85,
- 52,105,210,228,138,120, 95,167,211, 5,157, 63,127,190, 82, 96, 96, 32,242,242,242,144,149,149,133,182,109,219,254,235, 51, 87,
-131, 58,165,166, 16,134, 4, 58, 10,127,142, 79, 63,114,234,222, 35,175,171,228,239,239,127, 82,169, 84,134,137,241,202, 48,140,
-219,184,118,190,102, 50,153,146, 82, 83, 83,235,120,200, 63,101, 1,116,145,201,100, 21, 89,150,173, 2,160, 44,199,113, 97, 0,
-160, 80, 40,146,100, 50,217, 45,155,205,118,201, 98,177, 92, 5,240,179,125, 33, 65,183,104, 31,245, 70, 5,194,229,245,204, 49,
- 11, 29,181,229,167, 87,206,187, 62,238,178, 86,149,247,107,251,168, 55, 54,120, 43,178,254, 65,113, 85, 46, 60, 60,252, 93,251,
-255,251, 37,180, 9,179,159,201,100,106, 34,147,201, 84, 28,199, 33, 41, 41, 41,117,201,146, 37,183, 23, 44, 88,208,146, 16, 50,
-203,211,194,163, 13,235,149, 62,206, 48, 76, 52,236,242, 65,160,124,252,225,227,119, 75,164, 98,146,201,100,243, 94,122,233,165,
-215, 55,108,216,160, 61,113,226,132,182, 90,181,106,142,242, 73, 16, 4,184, 26, 30,202,149, 43, 87,100,240, 1, 96, 25,134,153,
-219,179,103,207,190,171, 86,173,210,222,190,125, 91, 27, 25, 25,233,224,116, 22,111, 34, 34, 35, 35,189,114,107, 80, 80,208, 55,
- 29, 58,116,232,191,114,229, 74,249,150, 45, 91, 52,193,193,193, 8, 10, 10,130, 66,161,120,224,217,198,141, 27,123, 90,137,159,
- 97, 24,102, 94,183,110,221,250,175, 93,187, 86,123,244,232, 81,109,141, 26, 53, 32,147,201, 30,217,239,221,187,119,239,187,102,
-205, 26,237,153, 51,103,180, 21, 43, 86, 4,195, 48, 96, 24,230, 1, 62,134, 97, 80,170, 84, 41,175, 56,187,118,237,218,119,221,
-186,117,218,147, 39, 79,106,171, 84,169,226, 8, 79,167,238,185, 98,187,243, 41,231,124,246, 4,150,221, 92,186,170,113,227,198,
-237,247,238,221, 43, 3,128,147, 39, 79, 34, 61, 61, 29, 81, 81, 81,240,241,241,129, 74,165,130,201,100,162,197, 44,180,190,177,
-139, 43, 57, 0,108,250, 95,119,220,144, 3, 35,146, 45, 80, 40, 20,184,126,253, 58,100, 50, 25,125,132, 66,177,153, 94,175, 95,
-249,227,143, 63, 6,212,169, 83,135, 73, 73, 73, 65, 76, 76, 12,210,211,211,159,223,183,111, 95,221, 55,222,120,227, 13, 66,200,
-171,148,210,125,222,114,254,250,235,175,208,233,116,208,106,181,208,233,116,176, 88, 44,228,161, 3,154,101,163,111,221,186, 21,
-234,227,227, 3, 65, 16, 28,135, 75,255,181, 3,130, 32,160, 82,165, 74, 86, 15, 5, 99,244,237,219,183, 67, 53, 26, 13, 40,165,
- 5,248,120,158,135, 74,165,114,110, 41,128,231,121,196,196,196, 88, 61, 89,174, 68,113, 5, 0,171, 87,175, 70,120,120, 56, 66,
- 67, 67,161,211,233,160,209,104, 10, 84,232, 94, 22,224,104,223,190, 61, 62,253,244, 83, 76,159, 62, 29, 99,198,140, 41, 80,192,
-202,229,114, 4, 6, 6, 98,219,182,109,208,235,245, 40, 83,166, 12,228,114,249,191,223, 18,200,144,192,195,199,239, 56, 44,178,
- 47,182,170,202, 54,168, 91,102,145, 61,134,193, 48,128, 32,228, 87,153,132,128,114, 54, 33,227,207,211,247, 38,122, 17,158,145,
-183,111,223, 14, 85,169, 84, 94,185,131,231,121, 68, 69, 69,201, 60,228,159,142,177,177,177,155,134, 14, 29,170,168, 88,177, 34,
- 81, 40, 20, 96, 89, 22, 44,203,138,233,177, 12,165,180,140, 32, 8, 45,146,146,146,232,130, 5, 11,102, 18, 66, 94,162,148,254,
-234, 54,189, 83, 99,173, 28,179,208,113,255, 95,120,190,103,155, 15,176,109,253,184,231,155,214, 22,224,171, 53, 94,179, 91,110,
-158, 86,113,165,215,104, 52, 31,239,223,191,191, 82, 78, 78, 78,118,147, 38, 77, 62, 38,132,188, 83, 18,155, 49,103,100,100,156,
- 19,255, 43,149, 74,140, 26, 53, 10, 29, 58,116,240,111,219,182,237,104, 66,200, 91,148, 82,107,225, 74, 64, 22,125,240,216,205,
- 80,241,188,107,251,154,138, 70,245,203, 36,229, 55,196, 92,159,166, 16,120, 33,254,232, 95,241,245,188,240,239,204, 30, 61,122,
-244,219,176, 97,131, 15, 0, 44, 94,188, 24, 61,122,244, 64, 96, 96, 32,180, 90, 45, 20, 10, 5,228,114,121,129, 95, 15, 22, 33,
- 25,128,153,125,250,244,233,185,106,213, 42, 95, 0, 88,181,106, 21,186,119,239,142,160,160, 32,248,250,250, 66,169, 84, 66, 38,
-147, 21, 59,252,130,130,130,190,105,242,252,243, 3, 87,174, 92, 9, 0,248,232,157,119,208,225,133, 23,224,163,213, 64,171, 81,
- 66, 12, 11,165, 76,142, 23, 71,140,244,228,111, 6,192,172, 30, 61,122,244, 94,187,118,173, 47, 0,156, 56,113, 2,201,201,201,
- 8, 11, 11,131, 70,163,129, 82,169,116,248,153, 16, 2,141, 70,227,149,223,123,244,232,209,115,205,154, 53,190, 0,176, 98,197,
- 10,180,111,223,222,225,119,149, 74, 5,133, 66, 81,224,112, 21,155,238, 56, 95,122,233,165,158,235,214,173,243, 5,128,229,203,
-151,163, 77,155, 54, 8, 8, 8,112,132,167,200, 85,156, 56,122,154, 57,159, 73,129, 37,142,141, 10, 11, 11,235,189,127,255,126,
-198, 73, 28, 64,165, 82, 65,165, 82, 65,169, 84, 58,186, 9,139, 81,104,145,176,176,176, 1,251,246,237,115,188,100,161, 15,152,
-168,139, 93,113, 59,241,183,105,217,178,229,154,173, 91,183,170, 21, 10, 5,140, 70, 35,206,157, 59, 7,127,127,127, 40,149, 74,
-116,235,214, 77,214,184,113,227,160, 22, 45, 90,108, 36,132,244,245,102,134, 2,165, 20, 62, 62, 62, 5, 4,214,163,118, 33,107,
- 52, 26,108,217,178, 5, 50,153,204,109,193,229,252, 63, 52, 52,212, 27,127, 67,165, 82,225,208,161, 67,144,201,100,144,203,229,
- 96, 89, 22,114,185, 28,191,252,242, 11,222,123,239, 61,164,166,166,130, 16, 2,185, 92, 14, 95, 95,143,189,155, 36, 48, 48,208,
- 95, 20, 87,162,248,209,104, 52,144,203,229,132,101, 89, 34,118,225, 17, 66,136,183,125,234, 12,195,224,251,239,191,199,140, 25,
- 51, 48,118,236, 88, 44, 93,186, 20,181,106,213,114, 22,159,200,206,206, 70, 64, 64, 0, 2, 2, 2,160, 86,171, 31, 58, 45, 60,
- 77,112, 13,157,217,115,230,107, 33, 80,228, 15,242, 16, 0, 1,160,160, 16,168,128,164,123,215,240,201,167,159,123, 93,235,168,
- 84, 42, 28, 60,120,208, 33,130, 88,150, 5, 33, 4,206,194, 72, 60,194,195,195, 61,242, 41, 20,138,207,126,250,233, 39,229,247,
-223,127,143,181,107,215, 58,210,150, 78,167,131,191,191, 63,130,130,130, 28, 71,116,116, 52,249,246,219,111, 21,181,106,213,250,
- 12,192,175,238,227,156,250,105,203, 79,175,220,179,205, 7, 0,128,158, 31, 80,100, 92,153,250, 28,147, 57,209,239, 41, 22, 87,
- 44,128,241, 91,182,108,169, 30, 25, 25,169,214,233,116,183,227,226,226,130, 70,141, 26, 53,158, 16, 50,225, 17, 55,101,206, 18,
-173, 52,106,181, 90,221,188,121,115,229,180,105,211, 80,161, 66, 5,188,241,198, 27,129,139, 23, 47,238, 6, 96,125, 81,229,145,
- 51, 22, 44, 92,228, 79,105,126,250,161, 2, 45,240,155,158,124, 11,239,140,254,196, 43, 71,149, 42, 85,106,240,198,141, 27,125,
-156, 45, 73,206,149,191,115, 25, 37, 30,133, 9, 2,187, 21,131, 41, 93,186,244,192, 31,126,248,193,193, 25, 28, 28,236, 40,151,
- 88,150, 5,195, 48,216,191,127, 63,226, 62, 27,143,128,144, 72,204, 95,184,216,163, 59, 67, 67, 67,151,118,236,216,241,127, 43,
- 86,172,112, 92,171, 89,190, 60, 58, 53,126, 1,161,193,122, 4, 7,228,151,109, 84, 32, 56,125,233,166,199,250, 8, 0, 83,170,
- 84,169, 55,214,175, 95,239,227,220, 16, 20,253, 10, 0,121,121,121, 14,171,189,197, 98, 65,189,122,245,188,242,187, 51,167,104,
- 93, 19,197,154,107, 89, 47, 54, 96,138,226, 44, 85,170,212, 64, 81, 0, 3, 64, 96, 96, 96, 1, 14,185, 92,142,245,219, 86, 62,
- 80, 55, 60, 42,103,113,227,221,149,243,230,205,155,152, 54,109, 90,129,120, 23,173, 89, 81, 81, 81, 88,176, 96, 65, 81,156,238,
- 80, 31, 64,136,211,185, 5,128,210,233, 55, 5,192,159,110,158, 19,175,203, 1, 60,103,191,199, 3,200, 1,224,239,134,175, 48,
-158, 84,228,111,247, 19,226,242,188,235,119, 10, 10, 44, 66,136,152,123, 91, 2, 56,152,154,154, 42, 92,188,120,145, 57,113,226,
- 4,228,114, 57, 66, 67, 67, 81,191,126,125,177,251, 12,114,185, 28, 58,157,142,248,251,251, 39,137, 21,174, 24,120,206,125,233,
- 78, 66,134, 73, 79, 79, 23,118,238,220,201,172,122,169, 29, 44, 20,168,253,113, 28,218,119,238,140,237, 81, 74,200, 0, 60,127,
- 49, 21, 90,173,150,149,203,229, 54, 49, 18, 68, 78,231,177, 89,174,226,136, 16,226,171,211,233,190,253,249,231,159,213, 12,195,
- 32, 39, 39, 7,130, 32,160, 73,147, 38, 96, 24, 6,103,207,158,197, 71, 31,125,132, 77,155, 54,225,167,159,126,210,212,169, 83,
-231, 91, 66, 72, 53, 74,105,142, 83,225,181,203, 93,226,244,245,245,133, 86,171,117, 8, 44,209,207,206,166,110,241,121, 74,233,
-189,212,212,212,186, 69,113,242, 60,143,238,221,187,131, 16, 2,153, 76, 86,160,208,113,254, 85, 40, 20, 56,123,246,236, 3,137,
-207,157, 48, 20,253, 10, 0, 90,173, 22, 62, 62, 62,216,179,103,143,227,126,237,218,181, 97,177, 88, 16, 28, 28,140, 11, 23, 46,
-184, 43,184, 11,112,166,164,164,208,132,132, 4,178,106,213, 42,200,229,114, 4, 5, 5, 65,171,213,146,149, 43, 87,142, 87, 40,
- 20,209, 38,147, 73,176, 88, 44, 80, 42,149,243, 69,107, 22,203,178,134,172,172,172,160,194, 56,101, 50, 25,134, 14, 29,138,247,
-223,127, 31, 75,151, 46,197,219,111,191,253,128,133,203,100, 50, 33, 56, 56,216, 33,178,188,241,251,163, 11,160,199,204, 41, 80,
-156, 59,185, 29,231,207,236,130,192, 11,224, 5, 10, 74,121, 8, 28,112, 98,231,145, 74,247,111, 36, 68, 81, 80,192,222,145,161,
-202,202,229, 90, 4,171,170, 0,216,188, 39,213, 60,215, 83,250,100, 89, 22, 54,155, 13, 63,255,252, 51,174, 93,187,134, 29, 59,
-118,192,104, 52, 58,194,177, 97,195,134, 24, 56,112,160, 91,129,229,202, 73, 41, 93,113,247,238,221,218, 77,154, 52, 33,153,153,
-153,200,204,204,132,209,104, 4,207,243,224, 56, 14, 44,203, 66,173, 86, 67,163,209, 32, 44, 44, 12, 38,147,137,154,205,230, 21,
-133,113, 10, 2,201,202,187, 62,238,242,182,245,227,158,239,249, 1,197,134, 25, 4, 21, 74,171,242,126, 63,238, 59,112,243,129,
- 49,109, 1, 80,193, 94,234, 48, 0,181,241, 66,234,251,227,191, 24,254,196,227,168, 32, 6,207,153, 51,167, 65,147, 38, 77, 66,
-179,179,179, 47, 10,130, 64, 95,126,249,101, 92,190,124,185,218,226,197,139, 7, 3, 88, 88, 92, 78, 66, 72, 75,251,253, 17,206,
- 21,252,182,109,219, 94, 2, 48, 96,217,178,101,232,209,163, 7, 22, 47, 94, 28,235, 42,176,156, 57, 41,165,184,117,101, 63,110,
- 93, 61, 0, 65,160, 78, 86,112,247,255,169,151,238, 52, 24, 12,166,191,254,250,203,103,217,178,101, 8, 13, 13, 69,185,114,229,
-160,213,106,161, 86,171, 11, 84,174,206, 21,174,167,188,105, 52, 26, 77,183,110,221,242, 89,179,102, 13,130,130,130, 80,182,108,
- 89,104,181, 90, 40,149, 74, 71, 67, 96,213,170, 85, 88,253,105, 63,220,186,116, 6,221, 59,181,245,232, 78,173, 86,251,191, 21,
- 43, 86, 20, 48,121,132, 5, 4,128,149, 51,144,201, 9, 2, 90,191,148,111, 37,252,227,199, 66, 87,119,116,225, 36, 57, 57, 57,
-166,163, 71,143,250, 28, 63,126, 28,130, 32,160,108,217,178,200,203,203,131, 94,175,119,248,127,231,206,157,232,214,173, 27,190,
-255,254,123, 52,108,216,208,163,223,115,115,115, 77,103,206,156,241,249,225,135, 31, 16, 24, 24,136, 82,165, 74, 57,252, 46, 30,
-114,185, 28, 50,153, 12, 49, 49, 49,200,202,202,130,143,143,143,199, 56, 58,113,226,132,207, 15, 63,252,128,128,128, 0, 68, 71,
- 71, 59, 44,108,162, 40,154,177,232,211, 2, 28,106, 18,241,200,156,197,141,119, 87,206,151, 94,122, 9, 21, 42, 84,128, 94,175,
-135, 78,167,115,112, 23,197,233,164, 69, 90, 80, 74,247,186, 68, 97, 8, 33,100,171,211,247, 59, 19, 66,182, 58,255, 22,246,156,
-253,111,179,241,227,199,215,155, 62,125,250,180,134, 13, 27,174, 57,116,232,208,234,194,248, 10,227, 25, 63,126,124,236,244,233,
-211,167, 57, 63,239,230, 59, 15, 90,176, 40,165,196,238, 57, 22, 0,170, 86,173,138,244,244,116,168, 84, 42,212,175, 95, 31,169,
-169,169,240,241,241,129, 66,161, 0,165, 20,195,135, 15,151,141, 25, 51, 38,148, 97, 24,112, 28,231, 40,240, 11,233, 75, 23, 24,
-134, 65,163, 70,141,112,206,222,243,211,190,115,103, 68, 71, 71, 67, 28,196,161, 86,171, 49,124,248,112,242,222,123,239,177,162,
-245,130, 82, 10,163,209,136,136,136, 8, 77, 17, 93,111,239,108,220,184,209, 79,169, 84, 34, 39, 39,199,209, 69, 38,147,201,112,
-241,226, 69,204,154, 53, 11,175,189,246, 26,238,220,185,131,200,200, 72,188,255,254,251, 62,211,167, 79,127, 7,192, 36, 79, 5,
-177,143,143,143, 67, 92,105,181, 90,188,243,206, 59,108,227,198,141, 67,125,124,124,224,235,235, 11,177,187,143,231,121,148, 47,
- 95,222,163, 20, 23, 4, 1,219,183,111, 7,203,178, 30, 45, 88,246,132,231, 21,231,209,163, 71, 29,226,204,185, 85, 68, 8,193,
-185,115,231, 28, 98,206, 11, 78,202, 48, 12,116, 58, 29,194,195,195,161,209,104,160,213,106,201,154, 53,107, 38,148, 43, 87, 46,
-226,189,247,222, 99,178,179,179,153, 70,141, 26,161, 71,143, 30,172, 32, 8,176, 90,173,136,141,141,245,104,105,219,187,119, 47,
-150, 44, 89,130,183,223,126,219,173, 5, 75, 28, 4,169,215,255,227,115, 28, 74, 12, 2, 0, 43,103, 67, 94,174,209,209,133,203,
-243, 60,206,236, 57, 85,233,198,169, 43,177, 91,215,124, 47, 7, 0,211,158, 31,157, 95,139,232,177,104, 93,229, 22,129,138,163,
-123,210,173, 71, 61, 89, 6, 71,142, 28,137,137, 19, 39,162, 79,159, 62,216,185,115, 39, 62,250,232, 35,188,241,198, 27, 5, 44,
- 88,222,192,102,179,125,245,234,171,175,190,189, 97,195,134, 42, 31,124,240, 1, 35, 90,176,180, 90,173, 56,134, 11,102,179, 25,
- 70,163, 17,151, 46, 93, 18,222,124,243,205,203, 22,139,229,171,194,248, 56,162, 57,173, 85,229,253, 90, 62,154,169, 96,184,249,
-185,111,147, 23,202, 26,137,166,110,214, 75,149,219,208,142, 3,202, 6,128, 82, 80, 1, 16, 40, 96, 54, 27, 48,124,248, 40,217,
- 63, 25, 87,132,144,142,125,251,246,237, 50,120,240,224,114, 57, 57, 57,215, 57,142,179,137,247, 62,250,232, 35, 92,185,114,165,
- 29, 33,228, 86, 97, 93,162,133,112, 70,151, 47, 95,126, 20,207,243,148, 16,114,141, 82, 26,111,191, 53, 31,128,223,222,189,249,
-245, 71,116,116, 52, 0,196, 18, 66, 86, 1,200,114, 22, 99,206,230, 80,155,141,131,209,104, 46, 82, 88,137,231,148, 10,222,186,
-145, 86,169, 82, 5, 93,186,116,129, 92, 46,119, 52,210,156,187,199, 92,133, 86, 81,229, 7, 0,129, 16,130,200,200, 72,116,236,
-216, 17, 10,133,162, 0,167, 88,161,118,236,216, 17, 35, 39,125,140,175, 70,182,194,146, 87, 43,161,205,148,164, 34,221,153,151,
-151,151,187,123,247,110,205,251,111,191,141,231, 42, 86, 68,176, 94,143,210, 97, 33,208,168,148, 80, 56,187,137,120, 54,170,211,
-252,202, 78,144,201,100,168, 81,163, 6,146,146,146,112,243,230, 77,220,188,121, 19, 12,195,160, 73,147, 38, 14, 75,240,213,171,
- 87, 49,105,210, 36,152,205,102,175,253, 94,177, 98, 69,180,106,213, 10, 74,165, 18, 90,173,182, 64,215,160, 24,166, 57, 57, 57,
-168, 80,161, 2, 54,111,222,140,202,149, 43,123,228,172, 90,181, 42,154, 55,111, 94, 32, 60, 53, 26,141,163,222, 0,128,187, 71,
-115, 29,223,136,138,138, 42, 22,231,142, 99,119,176,108,231,110,152, 45, 2,178,243,108, 5, 94,136, 8,214,227,192, 15, 31,120,
-229,119,145,243,171,175,190, 66, 86, 86,150,163,238, 17,141, 37,162,113,162, 84,169, 82, 88,178,100, 73, 97,241, 35,106, 17, 82,
-200,253,206, 94, 54,164,196,231,196,196,165,154, 62,125,250, 52,215,247, 61,241, 57,223,119,121,223,226, 34,202,146,138,236, 34,
- 20,235, 5, 49, 19, 68, 69, 69, 65, 28,231, 33,102, 16, 71, 1,202,113,216,180,105, 19, 66, 67, 67, 29,135,159,159, 95,161, 9,
- 90, 28, 39, 52, 50, 37,127,152,193,182, 72, 5,110, 1,232,148, 66, 29,227, 68,120,158,199,198,141, 27,225, 44, 96,124,125,125,
-139,236, 46, 82, 42,149, 45,234,215,175,207,152,205,230, 7,196,213,244,233,211,209,183,111, 95, 84,174, 92, 25,130, 32, 32, 55,
- 55, 23, 45, 91,182,148,207,159, 63,191, 69,113, 4,150, 86,155, 63,158,223, 98,177, 96,207,158, 61, 8, 8, 8, 64, 80, 80, 16,
- 2, 3, 3,225,235,235, 43,206,132,164,158, 68, 6,165, 20,221,187,119,119, 84,124,206, 86, 43, 87,177,117,232,208, 33,175,186,
-222, 40,165,120,225,133, 23,160,211,233,224,227,227, 3, 31, 31, 31,108,223,190,221,241,204,243,207, 63, 15, 65, 16, 16, 26, 26,
-138,195,135, 15, 23,217,205, 73, 41,165, 10,133,194,241,188, 92, 46, 39, 43, 87,174, 28, 31, 19, 19, 19, 49,122,244,104, 70, 38,
-147,225,228,201,147, 56,127,254, 60,202,150, 45,235,245,152,172,204,204,204,251,227,199,143,231,199,143, 31, 15, 0,136,141,141,
- 69,102,102,102,178,120, 63, 59, 59, 59,173, 93,187,118, 5,198,101,164,166,166,166,253,235, 5,150, 32,128,179,114,200, 51,153,
-144,155,147,231,176, 6, 37, 39, 36,249,127,240,222,187,242, 89,195, 95, 7, 0,188, 55,119, 33,114,150,254, 93,128,253,248,126,
-223,208,151,102,173, 25, 7,160,155,135, 74, 7,102,179, 25,101,202,148,193,177, 99,199,144,147,147,131, 54,109,218, 20,176,144,
-138, 97,234,201, 20, 79, 41,181, 16, 66, 26,119,238,220,249,207, 57,115,230,148,175, 86,173, 26, 49, 24, 12,200,203,203,131,243,
-239,153, 51,103,232,234,213,171,111,228,229,229, 53,162,148, 90, 10,227,219,126,239,155,107,237,163,222,216,240,251, 73, 89,231,
-208, 10,151,245,247, 50,202,115,105,247, 84,134,108,227, 37, 19, 79,207,131,242, 0, 15, 1,148, 19,192,219,187,183,254, 65,113,
- 85,163,124,249,242,111,205,159, 63, 63,204,100, 50,221,179,217,108, 6,215,188,187,120,241, 98,116,236,216,241, 45, 66, 72,188,
-167, 1,233,246,119,148,254,254,254, 31,237,217,179, 39,246,254,253,251,137,141, 27, 55, 30, 71, 8, 25, 77, 41,181, 84,169, 82,
-197,239,248,241,227, 77,228,114,185, 50, 51, 51,243,172, 94,175,135,197, 98,169, 97,179,217, 44,245,234,213, 59,224, 54,126, 4,
-192,102,179,193,104, 52, 35, 43, 43, 7, 22,171,205, 94,102, 10,224,121,206,254, 43,128,179,151,163, 74, 5,235, 91,183,102, 68,
- 46,165, 20, 12, 33,153,199,207,220, 47, 85, 88,185, 84, 88, 87,150, 55,214, 43, 55,224,197, 89, 99, 65, 65, 65,144,203,229,248,
-254,251,239,113,250,224,118, 40,101, 20, 60,103, 3,103,179,130,183, 89, 32,151,201,240,251,201,155,104, 91,213,215,155, 56,162,
-193,193,193,232,212,176, 33, 58, 55,108,152, 63, 93,141,101,225,163, 82, 65,171, 80,231, 91,174, 0, 80,158, 1,188, 75, 74,130,
-232,206,176,176, 48, 28, 63,126, 28, 35, 71,142,196,140, 25, 51,160,209,104, 28,179,153, 47, 94,188,136,117,235,214,161,109,219,
-182,197,246,187,104,177, 27, 55,110, 28, 18, 18, 18, 48,119,238, 92,212,173, 91, 23,114,185, 28,153,153,153,104,212,168, 17,146,
-146,146,188,226,116,238,198, 83, 42,149, 5,172, 77,162,240, 43,110, 28, 57,115,190,222, 61, 2, 91, 14,174, 6, 1,193,145, 31,
-222, 45, 80, 23, 45, 94,187,191,216,156,159,124,242, 73, 1,119,122, 99,189, 42, 70,126,221,234,141,200,114,122,238,132,104, 92,
- 29, 55,110,220,135,132,144,173,227,198,141,251, 48, 46, 46,238,156, 55,124,133,220,255,197,254,219,201,233,218, 9,143, 2,139,
- 82, 74,149, 74, 37, 4, 65, 40, 32,170, 92, 7,212,138, 38, 63,103,147,162, 39, 49, 32, 8,130, 35, 49,184, 54, 87,101, 50, 25,
- 14, 31, 62,140,195,135, 15, 23,184,190,108,217,178, 34, 43,112,142,227,170,249,250,250, 22,176, 94, 41, 20, 10,140, 27, 55, 14,
-253,251,247,119,136, 43,133, 66,129,229,203,151,163, 94,189,122,176, 88, 44,213, 60,140, 71,201, 11, 15, 15,103,196, 2, 72,167,
-211,145,145, 35, 71,202, 56,142,115,132,137,120,136, 99,211, 60, 37, 22,113, 86,202,142, 29, 59,188,178, 96,121, 59, 6,137, 82,
-138, 83,167, 78, 21, 16,109,226, 44, 24, 0, 56,117,234,148, 99,124,150, 55,156, 50,153, 12, 60,207, 67,163,209, 16,133, 66, 65,
- 20, 10, 69,180, 40,174,100, 50,153, 35,190,157,199,228,121,242,251,189,123,247, 90, 22,117, 63, 57, 57,249,153, 93,142,193,106,
-179,193,152,103, 65, 78,174, 17,159,197,125,151,127,241, 51, 28, 5,112,180,241,224,145, 24,218,190,109, 43,151,126,126,111, 10,
- 24, 71,165,184,113,227, 70,200,229,114,108,222,188, 25,122,189, 30, 93,187,118,133, 94,175,199, 7, 31,124,128, 62,125,250,120,
-109,193,178,167,165, 44, 66, 72,227,119,222,121,231,207,207, 63,255,188,116,169, 82,165, 96,177, 88, 96,181, 90, 97,177, 88,112,
-237,218, 53,172, 94,189,250,110, 94, 94, 94, 99, 74,105,150, 39,190,237,247,190,185,182,105,223,123, 9,109,250,244, 48, 94, 76,
-218,134,196,196, 52,112,220, 61, 8, 60, 7, 43,151, 63, 35,153,231, 56,112, 28, 15,133, 66,166,255,124,234,187, 59, 5, 80, 48,
- 12,177,244,236,217,179,195, 19, 18, 87, 1, 0, 6, 95,191,126, 61, 39, 40, 40,232,140,253,178, 62, 33, 33,129, 0, 64,100,100,
- 36, 5,224, 60,192,125,176,125, 60,150,167, 77,155, 7,255,252,243,207,141,252,253,253, 45, 12,195,100,124,244,209, 71,165, 62,
-253,244,211,193, 0,230, 93,186,116,233,187, 87, 94,121,197,207,185, 5,159,150,150,118, 98,240,224,193,184,116,233,210,119,238,
- 77, 4,118, 11,150,201,132,148,180, 12, 12, 26, 60,193, 97, 58, 0,104, 1, 81, 65, 65, 49,100, 4,212, 0,144,154,116, 13,175,
- 15, 26,169,242,212, 16,112, 87, 1, 22, 99, 12,142,179,101,200,145, 70,125,124,124,242,187,217, 54,175,198, 47, 95, 12, 6,120,
- 43,168,205, 8, 88,243, 0,107, 46, 4, 75, 30,136, 66, 3,216,140,222,196, 19,245,241,241,129,143, 70,131, 80,127,255,252, 69,
- 28,101, 50,200,229, 44, 4, 27, 64,120,226, 16,162, 2,239, 85, 90,167,193,193,193, 16, 4, 1, 26,141, 6,183,110,221,194,208,
-161, 67, 97,181, 90,209,189,123,119, 88, 44, 22,152, 76, 38, 24,141, 70,196,196,196, 32, 47, 47,207, 43,191,139,229,188,216,219,
-243,238,187,239,162, 94,189,122,152, 52,105, 18,198,142, 29,139,152,152, 24, 12, 25, 50, 4,171, 87,175, 70,108,108,108,145,188,
-206,225, 41,114,138,241,226,218,149, 7,160,216,113,228,202,153, 63,238, 31, 15,196,251,168, 87, 91, 23,155, 51, 46, 46, 14, 41,
- 41, 41, 15, 88,174,196,255, 81, 81, 81, 88,188,120,241, 67,229, 89, 39,107, 81,152,155,219,157,220, 88,158,234, 35,127,108,148,
- 57, 46, 46,238, 92, 92, 92, 92,103, 66,200,214,184,184,184,206, 69, 88,176, 58,121,176,112,117, 66,254,152,171, 34,193,186,244,
-125,182,112,182,140,136, 21,168, 88,145, 59, 23,238, 90,173, 22,155, 54,109,130, 56,163,195,249,153,162, 4,214,175, 33,118, 19,
-177,221,114,229,124,222,165, 75, 23,148, 43, 87,174,128,245, 74,163,209, 20,153,104, 4, 65,192,237,219,183,113,246,236, 89, 52,
-108,216, 16, 89, 89, 89,144, 51, 12,222, 59,115, 6,213, 95,125, 21, 22,187, 69, 70,169, 84,226,237,183,223,246,106,160,250,205,
-155, 55, 3,156,207,131,131,131,227,155, 54,109, 26,117,236,216, 49,199,192,119,123,247,153, 67,104,120, 35, 94, 40,165,120,249,
-229,151, 11, 88,173,156,197,149,243,177,109,219, 54,175,186, 8, 41,165,104,218,180,169,195,122,229,235,235,139,159,126,250,201,
- 17, 87,205,154, 53,203, 31,175, 16, 22,230, 21,167,232, 15,251,192,118,152, 76, 38, 33, 39, 39,135, 57,113,226, 4,148, 74,165,
-195, 98,167,209,104,160, 86,171,161, 82,169, 30,106, 70,208,127, 1,148, 10,176,216,108, 48, 26,141,200,205,205, 95, 33,228,218,
-217,141, 5, 5,152,249,225, 39,167,137, 86,170,156,156, 28,252,254,251,239,248,241,199, 31, 81,183,110,221, 7, 6,185,123, 99,
-193,114, 74, 79, 41,132,144, 38, 99,198,140, 57, 50,101,202,148,200,192,192, 64, 88,173, 86,220,185,115, 7,223,126,251,109, 66,
- 94, 94, 94, 19, 74,105,138,247,129, 0,216,108, 28, 76,121,102,100,101,231,224,211,169,203, 11, 77,122, 0,144,158,124, 9, 93,
-186,246, 82, 62,185, 56,162, 25, 0,134,186, 84,230,171,240,247,154, 85,217,148,210,254,197, 20,109, 45,103,204,152,209,167,110,
-221,186,190, 89, 89, 89, 23, 0,224,205, 55,223,196,201,147, 39, 91, 19, 66,206, 81, 74,119, 19, 66, 98,235,212,169,211,250,205,
- 55,223, 4, 0,124,253,245,215,216,186,117,235,239,148,210,221,133,165, 37,177,139, 48, 55,215, 8,189,127, 4,238,221,220,235,
-209, 45, 10,153, 9, 84, 16, 60, 54,252,220, 89,173,156,203,167, 98,164, 31, 42,142,249, 19, 43,234, 14, 47,191,138, 14, 67,167,
- 67, 43, 7,166,189,222, 24, 49,254, 0, 52,129, 80, 52,251, 0,196,191, 76,254,139, 67,127,246,138,127,236,146, 37, 56,121, 37,
-127,133,151,232,144, 16,140,233,211, 7,212, 6, 28, 58,127, 30,107,119,239, 70,159,150, 45,161, 85,171,189,110,168,136,141,239,
-107,215,174,225,208,161, 67,168, 90,181, 42,174, 94,189, 90, 96, 57, 9, 74,169, 87,254,167,148, 82,113,114,146, 74,165,130, 92,
- 46, 71, 98, 98, 34, 58,119,238,236,104,224,239,221,187, 23, 99,198,140,193,192,129, 3,209,162, 69, 11,183,227, 98, 93, 57, 67,
- 66, 66, 28,134, 3,215, 9, 8,206,221,182,197,137, 35,119,156, 34, 30, 54,222,157, 57,167, 78,157,234,118,162,132, 55,156,206,
- 90,164, 8,156,112,177, 30, 65, 28, 15, 37, 10, 34,215,115, 0, 1,226,181,113,227,198,125,232,237,123,206,231,162, 5,204,219,
-174, 74, 86,236,243,116, 87,201,138,230, 98,119,208,233,116, 24, 54,108, 24, 38, 78,156,136,224,224, 96,143, 99,103, 68,229, 90,
- 20,126,254,249,193, 76,182,121,243,102, 79, 93,132, 23,253,252,252,234,181,106,213, 10, 89, 89, 89,184,123,247, 46,116, 58, 29,
-170,127,241, 5,206, 12, 29,138,231,150, 44, 1,211,170,149, 99,145,212, 51,103,206, 64,163,209, 92, 44,174,197,192,215,215, 23,
- 1, 1, 1,142, 62,117, 81,104, 57, 89,176,168, 23,137, 16,191,254,250,171,219, 86,226,195,140,193, 18, 51,255,145, 35, 71, 10,
-140,191,114, 22, 60, 71,142, 28,113, 88,176,196,215,188,233,218,210,104, 52, 84,228,211,106,181, 8, 12, 12,132, 74,165,130, 70,
-163, 41, 32,174,188,177,222,121, 90, 72, 84,163,209, 28,211,233,116,254,226,125,185, 92,142,156,156,156,204,180,180,180,231,255,
-213, 93,132,160,224,172, 28,140, 70, 19,114,115, 74,126, 45, 73,113,194,201,166, 77,155,240,194, 11, 47, 60, 32,174,196,176,126,
- 8,209, 17, 79, 8,105, 49,111,222,188,163,179,103,207, 14,200,205,205,197,119,223,125,151,149,155,155,219,194,105, 28,145,119,
- 92, 2,133,205,106, 69,158,201, 12, 67,110,126, 24, 92, 63,183,241,153, 22,214, 85,170, 84,121,125,200,144, 33, 33, 57, 57, 57,
-215, 5,225,111,123,202,236,217,179,113,253,250,245,215, 1,236, 6,176,100,234,212,169, 21,107,214,172, 89, 10, 0,166, 78,157,
-122, 23,192,146,162,202, 14,171,189,139, 48, 55, 55,223,234, 97, 50,164,150, 76, 58,181,139,140,194,198, 92, 61, 76, 87,142, 56,
-115, 89, 38,147, 97,248,240,225, 56,115,250, 52, 90, 71,102, 35, 38,220, 23, 52,251, 30, 20,173, 62,193,169, 20, 13,102,205,249,
-181,216,220,235,156, 38,241,204, 90,183,206,237,189,235,221,186, 21,203,239,151, 47, 95,134, 70,163, 1,207,243, 15,212, 55,197,
-245,191,179,112,153, 51,103, 14,198,140, 25,131,229,203,151,227,204,153, 51,120,238,185,231,208,166, 77, 27, 36, 39, 39,227,244,
-233,211, 48,155,205, 94,187,211,121, 92,220,229, 27,231,177,235,208,111,184, 29,127, 19, 9,137,119, 31, 58,222,157, 57, 93, 5,
-214,166, 93,127,225,229,182,117, 30,138,243,147, 79, 62, 65,114,114,114, 1,203,149,243,196,176,194, 44, 88,174, 90,196, 5,169,
- 46, 99,157,196,115,139,139,216,113, 61,119,125, 30, 0,146, 1,200, 60,188,231,122,158, 26, 23, 23,183, 71,180,124,217,121,101,
-133,141,191,114,219, 69, 40,138, 33, 49,131,184, 90,166,196,255, 58,157, 14,190,190,190,240,245,245,133, 94,175,247,104, 25, 18,
- 5, 86,211, 27, 57, 5,198,114,137,150, 44, 0, 24, 56,112,224, 3, 22, 44,231, 5, 57,221,193,108, 54,239,221,187,119,111,237,
- 46, 93,186,200, 46, 94,188, 8,153, 76, 6, 65, 16, 96,105,216, 16,207, 45, 89,130,179,239,190,139,230,183,110,193,100,181, 66,
-173, 86, 99,251,246,237,214,188,188,188,189,197, 45, 47,156, 5,150, 78,167,131,159,159,159, 67, 96,120,163,202,197, 76, 91,212,
-248, 6,241,112, 30,228,239, 77,102, 22, 43, 82,231,113, 55,132, 16, 24,141, 70,199, 96, 77,111,172,140,206, 93,132,206, 25,143,
- 97, 24,248,251,251, 59, 10, 13,209,130,229,173,245,206,211, 66,162, 90,173, 86,127,233,210,165, 10,226, 50, 18,169,169,169,104,
-213,170,213,149,127,125, 77, 43, 0, 86,142, 71,174,209,132, 92, 99, 94, 73,118,107, 1, 0,190,255,254,123, 92,187,118, 13, 86,
-171, 21,113,113,113, 15, 8,171,226, 12,114,119,147,174,174,213,169, 83, 71,120,241,197, 23,113,228,200, 17,168, 84, 42, 27,165,
-180,216,235, 87, 9, 84,128,149,227, 96, 50, 26,145,107, 48,252, 39, 44,151,151, 46, 93,202,242,245,245, 61, 12,192,231,202,149,
- 43, 50,157, 78,135,242,229,203,195,100, 50,101, 1,200,178,135,175,133, 16, 50,253,237,183,223,158, 11, 0, 54,155,109,122, 81,
- 99,218, 40,165,176,113,118,177, 94,130,225, 40,166,165,194,202,164,135, 89, 46,197,185, 66, 21, 4, 1,111,189,249, 38,218, 68,
-102,227,165,186, 33, 48,220,191, 2,173, 95, 8,136,127, 89,204,154,243, 43,206,221,240,122,168, 37, 5,128,246,205,186,161, 86,
-213, 7,151,247,106,210, 58,191, 45,118,224,247, 99, 72, 74, 77, 40,182,223, 13, 6, 67,161,150, 42,111, 45, 88, 34,167,184, 92,
-138, 92, 46, 71,237,218,181, 81,169, 82, 37,236,217,179, 7,117,234,212,193,213,171, 87,113,245,234, 85,220,186,117, 11,103,206,
-156, 65, 70, 70, 70,177,227,232,167, 29,107,145,145,147, 14,165, 66,137,244,204, 84,220,190,119, 19, 97, 65,225,143, 28,239,142,
- 6, 66,167, 79, 1, 0,145, 33,126,197, 18, 88,206,156,159,127,254,249, 3,162,189, 4,150,222, 57,230,225,188,184,239, 63,118,
-176,133, 88,133,140,129,129,129, 26,231,254, 83,134, 97,224,231,231, 71,102,204,152, 33, 99, 24, 6,190,190,190,240,243,243,131,
-104, 22,244, 4,165, 82,105, 44, 91,182,172, 70, 76,128, 98, 6,212,235,245,178, 25, 51,102,144,101,203,150, 21,106,213,242, 48,
- 6,107,118,255,254,253,223,136,143,143, 15, 8, 13, 13,197,253,251,247,161, 84, 42,243, 51, 69,203,150,104,122,227, 6,172,249,
- 99,138,112,249,242,101,124,245,213, 87, 6,179,217, 60,187,184, 1,229,227,227,131,160,160, 32, 71,215,160,104,193,113, 18,139,
- 94, 13,173, 44,202, 20, 47,182,248, 30,166,171,200, 85,100, 13, 30, 60,184,128,216,242, 22, 10,133,130, 19, 87,106,103, 24, 6,
- 86,171, 21,117,234,212, 65,114,114,178, 35,179, 56, 91,238,188, 17, 88,158, 22, 18,101, 89, 22, 22,139, 5,205,154, 53, 3, 33,
- 4, 11, 23, 46,124, 54,186, 29, 5,129,248,248, 4, 33, 50,178, 50, 66, 66, 77, 16,132,146,219,253,133,227, 56, 12, 25, 50,164,
-128,197, 74,156,169, 40,118,241, 83, 74, 97,179,217, 30,122,209, 86, 49, 95, 63,202,250,111, 20,112,116,109, 25, 12,166,127, 93,
- 20, 70, 71, 71,235,237, 93,134,174,112, 63,219, 15,127, 47,201, 64, 8,153, 18, 31, 31, 95,179, 74,149, 42,104,222,188, 57,182,
-109,219,182, 25,192,143, 46,150,194, 47,197,255, 69,199,133, 61, 28, 77,102, 24, 12, 37,111, 13, 45,170,161,247, 40,194,109,226,
-196,143,209, 38, 34, 19,221,159,243,195,138,173, 7,209,175,182, 6,176,168,138,205, 39,186, 37, 40,170, 28,202,213,104,240,192,
-125,181, 95,126,215, 92,185, 26, 13, 32,187,123,181,216,126,119,118,179,155,165, 3, 30, 41, 60, 7, 13, 26,132, 15, 62,248, 0,
-237,218,181,195,213,171, 87,177,111,223, 62, 92,189,122, 21, 35, 71,142, 68,108,108, 44,158,123,238,185, 98,113,110,217,181, 1,
-217,185, 89, 96, 8,131,244,172, 52,152,204, 70,140, 29, 50,241,145,227, 93,196,205, 93,113, 0,128,141, 59, 79, 62, 52,231,135,
- 31,126,136,196,196,196, 2,150,171, 71, 25,119,245,111,133, 91,129,149,150,150,230,182,191, 47, 36, 36, 36,169,109,219,182,161,
-247,239,223,135,143,143,143, 71,113, 69, 8,105, 35,174,149,145,152,152,232,150,211,215,215,215,218,182,109, 91,121, 68, 68, 68,
-129,217,131, 58,157,238,129,204,229,202,105, 47,152,114, 8, 33,111, 53,110,220,120,197,182,109,219,180,149, 42, 85, 66,118,118,
- 54, 40,165, 88,190,124, 57,134, 15, 31, 14,181, 90,141,203,151, 47,163,107,215,174,121,121,121,121,111, 57,175,129,229,142,179,
-176, 22,153,184,138,189, 27,113, 85,164,223,157, 51,233,188,121,243, 48,109,218, 52,124,248,225,135, 69, 70,204,210,165, 75, 1,
-151,238, 60,119,156,148, 82,204,154, 53,171,196, 56,211,210,210,150,187, 88,159, 22,190,244,210, 75,236,221,187,119, 11,136, 42,
-231,195, 77,129, 84,128,211,211, 66,162, 50,153, 12, 97, 97, 97,152, 50,101, 10,130,130,130, 16, 30, 30,254,128,229,197, 83, 28,
- 61,100, 37,240, 88, 57,121, 42,156,248,124,250,199, 77,190, 91,181, 69,174, 82, 2,135,247,109, 68,118, 70, 98, 65, 11,172,245,
-239, 41,209,202, 58,173, 97, 57,249,187, 87,238, 52,155,205,152, 57,115, 38, 62,253,244, 83,124,250,233,167,222,196,251, 35,249,
-221, 27,145,229,150, 83,160, 68,171, 11,128, 90, 23,137,234,177, 1, 16,138,185, 86,231, 63, 20,239, 66, 66, 66, 2, 34, 35, 35,
-113,245,234,213, 26, 50,153,172,128, 34,224,121,222,172, 86,171, 15,120,193,121,118,211,166, 77, 53, 39, 76,152,128,105,211,166,
- 1,192,128,189,123,247,190, 66, 8, 49,121, 18,105,174,156, 2,165, 68,163,245,135, 90, 23,129,234, 53,252, 33, 8, 92,137,248,
- 93,172,252, 92,173, 87,197, 92, 72,218,109, 89, 7, 0,127,254,190, 25, 19,223,173,129,229,191, 28,197,252, 99, 64, 45,255,100,
- 84, 15, 73,129,144,114, 17,239,247,171,135, 89, 63, 28, 7, 0,236,219,235, 49,142,138, 92,215,216,100,180, 62,146,223,157, 45,
- 85,206,223,241, 52, 6,203, 29,167,216, 56,204,201,201, 65,102,102, 38, 86,172, 88,129,215, 95,127, 29,201,201,201,184,117,235,
- 22,174, 92,185,130, 53,107,214, 56,102,167, 23, 55,142,222,123,243, 35, 76,152, 53, 26, 20, 20, 85, 42, 84,199,184,161,159,162,
-126,173,134,143, 28,239,174,240,100,189, 42,138,115,222,188,121, 15,149,150,254, 19, 2,171,168, 86, 4,195, 48, 8, 14, 14,118,
- 36, 14,231,132,247, 48, 45, 93,153, 76, 6,142,227, 28, 99,123,196, 3, 0,186,116,233,130,159,127,254,217,155,153, 17,219, 8,
- 33,255,171, 86,173,218,183,159,125,246,153, 79,243,230,205,217,200,200, 72,212,175, 95, 31,151, 47, 95,198, 47,191,252, 98, 91,
-180,104,145, 33, 47, 47,111, 32,165,116,231,195,148, 75,226,214, 51,206, 71,113, 90, 57, 86,171,245,238,213,171, 87, 35,102,205,
-154, 37, 99, 24, 6,115,231,206,117,100, 70,113,161, 86,103,236,219,183,143, 19, 4,161,200, 46, 25,155,205,118,247,234,213,171,
- 17, 95,124,241,133,140, 16,226,224,100, 24, 6,206, 27, 43, 23,135,211,157,184, 20, 39, 60,184, 59,220,185,221, 93, 28, 23,181,
-144, 40,203,178,184,124,249, 50, 38, 78,156, 8, 66, 8, 54,110,124, 54,198,232,156,185,152,186,236,185,234,161, 1, 93, 58, 52,
-169, 9, 66, 96,181, 60,216, 3,228,147,145,235, 16, 87, 47,125,177, 22, 63,190,215,199, 27,177,115,237,192,129, 3,129, 51,103,
-206,100,101, 50, 25,230,204,153, 83, 96,177, 95,215,120,223,191,127, 63,247, 48,221,123, 98,126,182, 90,173, 48, 26, 31,206,106,
- 66, 41, 61, 20, 55,117, 66,219,149,223,255, 42, 39,196,130,195,123, 55, 34, 43,211,253,212,116,165,156,197,178, 21,155, 56,133,
- 92,118,247, 31,142,186,249, 61,123,246,156,176, 97,195, 6, 22,192,185, 71,224,217,252,205, 55,223,116,232,213,171, 87, 96,197,
-138, 21,241,221,119,223, 41,252,253,253,235, 18, 66,136, 59,145,230, 33, 28, 55, 79,159, 58,225,181, 21, 63,252,170,100,136, 21,
-135,247,109, 68,150,139, 88,127,208, 26, 45,199, 55,203, 55, 89, 21, 10,249, 37, 79,229,186,179,245,170, 36, 43,196,174,253,135,
-226,165,121,243, 81,190,126,123, 76,159,209, 6,223, 76,237,133,217, 47, 42, 96, 93,223, 15,181,122,174,196,234, 73, 29, 1, 0,
-145,223,120,105, 29, 97, 21,184,227,198, 66,149,153,165,182,139,154,226, 89, 73, 69,191, 23, 85,134, 23,215,130,197, 48, 12,202,
-149, 43,135,242,229,203,163,113,227,198,168, 83,167, 14, 90,182,108,137,211,167, 79,227,244,233,211, 24, 57,114,100,161,226,202,
-155, 56,106,209,168, 45,142, 54,189,244,200,113,227, 26,239, 37, 1,111,210,210,144, 33, 67, 0,224, 63, 97,205, 98, 31, 38,240,
-196, 4,249,168, 91,199,136,156, 22,139,197,209,245,230,188,174,146, 56,232,221,203, 25,122, 59, 9, 33,177, 31,127,252,241,187,
-106,181,186,101, 94, 94, 94,101,187, 5,230,178,217,108,222,109, 52, 26,231, 80, 74, 51, 31,197,173,206,203, 50,184,115, 66, 81,
-239,102,100,100,180,111,223,190,253, 78,150,101,203,185,110,196,235, 46, 3, 11,130,112, 43, 41, 41,169,200,169,234,105,105,105,
-237,219,181,107,231,150,211, 93,193,224, 13,167,187,248, 17, 4,161, 80,113,229, 77, 1,228,105, 33, 81,150,101,161,211,233,240,
-211, 79, 63, 33, 56, 56,248,153,202, 96,167,206, 39,207, 44,234,126,139, 96,213, 94, 0, 33, 47,125,177,246,206,158, 84, 75,153,
- 22,193,202,219, 63,190,255, 74,233,162,222, 73, 77, 77,109,247,250,235,175,255,198,178,108, 57,215,240,119, 23, 23, 28,199,221,
- 76, 76, 76, 44,246,178, 7,148, 82, 92,186,116, 73, 24, 52,104, 80,106, 74, 74, 74,175,135,241,255,184,137,243,103, 79,251,108,
-120,208,139,109, 27,212, 7, 3, 88, 10, 31,212, 75, 9, 64, 89,185,236,238,152, 15,231,190,249, 79,198, 25,165,244, 36, 33,100,
- 74,253,250,245, 71,162,208,117,193,243,199, 82,121,224,177, 18, 66,102,119,232,208,225,253, 17, 35, 70,248,183,107,215,206, 26,
- 21, 21,117,194,217, 58,239,125, 58, 74,122,251,185,106, 33,209, 47,182,121,161, 61, 8,161, 22,139,217, 67,195, 8, 20,148, 82,
-133, 66,126,233,216,169,132, 90,158,172,243,246, 29, 51, 74,188,107,126,216,176, 97, 24, 54,108,152, 35, 61, 45, 92,216, 20, 27,
-206, 30, 64,207, 90,241, 48,127,213, 4, 68, 95,218,235,134, 30, 0,124,244,241,160,146,180,100, 22,152,124, 85, 82, 99,176,100,
- 50, 25, 82, 83, 83,113,249,242,101, 36, 37, 37, 33, 47, 47, 15, 23, 46, 92,128,213,106, 69, 70, 70, 6,106,212,168,241,208,238,
- 44,169, 56,250, 39, 57,255, 75,221,132,197, 18, 88, 28,199,197,123,218,245,220,102,179, 21,107,150,145, 92, 46, 55, 85,170, 84,
-137,184,155,109, 32,254,215,233,116, 70, 47, 11,198, 76, 0, 19, 1, 76,180,239, 55,133,244,244,244, 71, 86,129, 60,207, 39,148,
- 41, 83, 70, 86,152,112,177,135, 77,146, 7,183, 25, 0, 52, 44,225,138,160,196, 57,221,196,143,161,106,213,170,142,177, 92,174,
-107,154,216, 55, 65, 45,114,212,173,167,133, 68, 13, 6,195,253,246,237,219,243,206,247,157, 23, 34,125,166, 65,232,237,142,175,
-188, 81,102, 79,170,165, 12, 0,136, 34, 11,148,222, 46, 34,222,141, 0,154, 63,110,167,221,184,113,195,242,194, 11, 47,124,159,
-147,147, 51,148, 82,250,208,163,244, 63,252,100,225,135,255,182,104,161,148,158, 4,240, 90, 9,240,156, 37,132, 12,158, 57,115,
-102,175,153, 51,103, 86, 0, 16, 12, 64,237,173, 72, 43, 32,178, 46,164,148,248,218, 96, 28,199,197,151, 47, 95,190, 88,150, 26,
- 79,101,188,205,102, 43,178,158, 56, 7, 63,124,120, 4,200,223,198, 45,205, 43, 78,147,201,148,222,176, 97, 67,121, 49,253,150,
-236,173,223, 35, 34, 34, 16, 25, 25,233,248, 21,225,122,221,147, 59, 57,142,139,143,142,142, 70,112,112,112,161, 43,180,187,142,
-185,242,134,179,164,227,168, 40,206,200,200,149, 37,206, 89, 82,122,225,153, 22, 88,226, 30,131, 37,137,164,164,164,199,178, 55,
- 10, 45, 9,243,218,223,150,162,250,248,143, 34, 45, 45, 45,232, 81, 57, 60, 45, 36,154,148,148,212,242,191, 26,190,123, 82, 44,
- 3, 30,184,102, 23, 91,255, 52, 12, 6, 67,105, 74,233, 67,141,204,239,217,179, 39, 15, 9,206,130,120,249,211,232,182,212,212,
-212, 18, 47,211, 31, 71, 61,145,158,158, 94,243,191,234,247,199,225,206,127, 11,231,191, 29,140, 20, 4, 18, 36, 72, 40, 68, 24,
- 72, 34, 73,130, 4, 9, 18, 30, 18, 4, 64,155, 66, 10, 87,175,103,238, 16, 66,218, 60, 68,225,189, 75,226,148, 56, 37, 78,137,
- 83,226,148, 56, 37,206,255, 22,167, 39,238,146,158, 57,252, 79,182, 82, 31,219, 1,160,141,196, 41,113, 74,156, 18,167,196, 41,
-113, 74,156, 18,231,127,237,144,186, 8, 37, 72,144, 32, 65,130, 4, 9, 18, 74, 24,146,192,146, 32, 65,130, 4, 9, 18, 36, 72,
-144, 4,150, 4, 9, 18, 36, 72,144, 32, 65,130, 36,176, 36, 72,144, 32, 65,130, 4, 9, 18, 36,129, 37, 65,130, 4, 9, 18, 36,
- 72,144, 32,225,225, 65, 74,112, 61, 78, 9, 18, 36, 72,144, 32, 65,130, 4, 9,162,192, 34,132, 56, 84, 22,165,148, 72,193, 34,
- 65,130, 4, 9, 18, 36, 72,120,162,130,228, 25,211, 34, 14,129, 37, 9, 43, 9, 18, 36, 72,144, 32, 65,194, 63, 41,176,158, 37,
- 45, 82,192,130, 37,137, 44, 9, 18, 36, 72,144, 32, 65,194, 63, 37,176,158, 37, 45, 34, 89,176, 36, 72,144, 32, 65,130, 4, 9,
- 79,133,192,122,102, 45, 88,207,146,114,148, 32, 65,130, 4, 9, 18, 36,252,187, 4,214,179,164, 69,164, 89,132, 18, 36, 72,144,
- 32, 65,130, 4, 9,146,192,146, 32, 65,130, 4, 9, 18, 36, 72,120,186,241, 88, 23, 26, 37,132,180,145, 56, 37, 78,137, 83,226,
-148, 56, 37, 78,137, 83,226,148, 4,150, 4, 9, 18, 36, 72,144, 32, 65,130, 4, 73, 96, 73,144, 32, 65,130, 4, 9, 18, 36, 72,
- 2, 75,130, 4, 9, 18, 36, 72,144, 32, 65, 18, 88, 18, 36, 72,144, 32, 65,130, 4, 9, 18, 36,129, 37, 65,130, 4, 9, 18, 36,
- 72,144,240, 15,129, 0,112, 59, 19,128, 82,186,203,107,146,135,152, 77,224,137, 95,226,148, 56, 37, 78,137, 83,226,148, 56, 37,
-206,103,143,211, 19,119,113,244,199, 83, 13, 74,233, 99, 59, 0,180,145, 56, 37, 78,137, 83,226,148, 56, 37, 78,137, 83,226,252,
-175, 29, 82, 23,161, 4, 79, 45, 12,150, 16,194, 62,236,253, 39,197, 41, 65,130, 4, 9, 18, 36, 60, 77, 96, 11,169,224, 42, 2,
-248, 16,128,159,211,229, 99,148,210, 56,151,231,126, 0,160,117,186,100, 0, 48,137, 82,122,213,139,111, 43,236,252, 42,251, 33,
- 0, 48, 1, 48, 3,200, 1, 96,147,162,231, 31, 23, 87, 13, 1,116,182,255,223, 74, 41, 61, 92,156,251, 79,138,243, 73, 33, 50,
- 50, 82, 19, 16, 16,208,238,228,201,147,202, 11, 23, 46, 96,255,254,253,116,217,178,101,214,140,140,140, 29, 9, 9, 9, 70, 41,
-197, 60, 19,105,190, 61,128,113,246,211,233,148,210,237,143,200, 71,180, 90,237, 72,157, 78,215, 81,165, 82, 69,114, 28, 71,242,
-242,242, 18, 12, 6,195, 78,142,227,190,160,148, 10, 15,193, 89, 63, 56, 56,120,112,108,108,108,165, 27, 55,110,220,189,115,231,
-206, 42, 0,219, 1,180, 47, 93,186,116,255,152,152,152, 82,231,206,157,187,146,154,154,186,132, 82,250,231, 63,229, 78, 9, 18,
- 36,129,229, 30, 19, 41,165,253, 92, 50,224, 3, 15,181,106,213,170,235,142, 29, 59,180,130, 32, 64, 60, 52, 26, 13, 7, 96,128,
-135,239, 6, 29, 58,116,168,204,208,161, 67, 95, 74, 72, 72,168,151,147,147,243, 60, 0,104,181,218,163,161,161,161,127,206,155,
- 55,111, 77,187,118,237,226,237, 66,171, 88,150, 17,185, 92,254,122, 64, 64, 64, 71,142,227,234, 80, 74, 33,151,203, 79,102,100,
-100,108,183,217,108,223, 80, 74,109, 15, 81,152, 41, 89,150, 29,166, 82,169,218,115, 28, 87, 19, 0, 88,150, 61, 99, 54,155,183,
-115, 28,247, 37,165,212,242, 16,156,106,165, 82, 57, 76,175,215,183,181, 88, 44, 53, 1, 64,169, 84,158,201,206,206,222,105,177,
- 88,190,164,148,154,158,130,138,134, 5,208,153, 82, 42, 7, 0,153, 76,214,173, 97,195,134,101, 8, 33,130,184,227, 57,195, 48,
-181,121,158,103,236,207,119, 38,132,252, 73, 41,229,138,195,249,194, 11, 47,148, 98, 89,150, 82, 74, 9,165,148, 97, 24,166, 86,
-113, 56, 75, 10, 33, 33, 33,211, 4, 65,136, 44,234, 25, 63, 63,191,122, 39, 79,158,172,178,110,221, 58,254,171,175,190,202, 28,
- 56,112,160,207,208,161, 67,217,133, 11, 23,126, 9, 96,148,235,243,193,193,193,179, 25,134, 9,246,230,251,130, 32,164,166,166,
-166,142,150,138,164,127, 28,227, 22,237,202,105, 70, 41, 48,172,173, 47, 99, 23, 46, 15,141,168,168,168, 21,175,189,246,218, 43,
- 53,107,214,100, 41,165,176,217,108, 48,155,205, 85, 14, 31, 62,220, 98,227,198,141,245, 0,244, 42,102,190,236, 60,110,220,184,
-175, 39, 77,154, 20, 34,151,203,137,205,102,107,176,110,221,186, 23, 7, 15, 30,124,106,201,146, 37,207,245,238,221,219, 87,188,
-254,201, 39,159,116, 32,132,188, 75, 41, 93,243,164,221, 41, 65,130,132,194, 5,150,206,158,153,147, 0, 28, 19, 45, 88,174, 15,
-253,241,199, 31, 91, 88,150, 21, 45, 88,207, 27, 12,134, 48, 23,171,151, 59,148,237,223,191,127,195, 13, 27, 54, 76,235,221,187,
-119,162, 86,171,173,212,163, 71,143, 28, 66,136,108,221,186,117,181,203,151, 47,175,233,210,165, 75,255, 86,173, 90,189,247,219,
-111,191,237, 7,144,226,101,193, 83, 61, 48, 48,112,211,204,153, 51,203,180,111,223, 94, 17, 28, 28, 12, 74, 41, 18, 18, 18,162,
-126,249,229,151, 23, 63,251,236,179,247, 8, 33,221, 41,165,231,139,211, 82,212,104, 52, 27, 62,251,236,179,136, 23, 95,124,145,
- 13, 15, 15,135,201,100,194,133, 11, 23,218,108,223,190,189,217,210,165, 75, 71, 17, 66,122,122,219, 74,180,115, 62,239,231,231,
-183,241,187, 15, 62, 8,107,240,250,235,108, 96, 96, 32, 40,165, 72, 73, 73,105,115, 96,229,202, 22, 67,102,206, 28, 69, 8,121,
-153, 82,122,236,105, 74, 40, 74,165,146, 89,181,106,213,115, 74,165, 18, 0, 96,177, 88, 16, 27, 27,251, 72,187,157,203,229,114,
-230,139, 47,190,168,195,178, 44,172, 86,171,144,147,147, 67,123,244,232,241,143,116, 91, 19, 66,162, 19, 18, 18,252, 20, 10,133,
-219,251, 60,207,163, 89,179,102,229, 20, 10, 5,190,248,226, 11, 91,106,106,106,237, 5, 11, 22,156, 92,189,122,117,240,151, 95,
-126,217,211,157,192, 98, 24, 38, 56, 62, 62,222, 45, 39,207,243,176, 90,173,224, 56, 14, 22,139, 5,213,170, 85,147, 74,163,167,
- 3,101, 0,224,215,211, 38, 0, 8,124, 84, 50,157, 78, 87,181,111,223,190,108, 74, 74, 10,228,114, 57,172, 86, 43, 18, 19, 19,
- 17, 27, 27, 43,251,254,251,239, 43, 23,151,175, 74,149, 42,131,227,226,226, 66,127,253,245, 87,235,247,223,127,111,110,211,166,
-141, 98,224,192,129,250,102,205,154, 53,141,142,142,102,190,253,246, 91,243,174, 93,187,172,255,251,223,255, 84,211,166, 77, 11,
-253,237,183,223, 94, 1,176,230, 73,187, 83,130, 4, 9,133, 11, 44, 17,199, 40,165,221, 0, 64,161, 80,212, 46, 85,170,212, 10,
-142,227,194,237, 86,156, 68,185, 92,254,133,213,106,253,203, 94, 65,109, 22, 4,161,171, 39,203, 85,255,254,253, 27,254,246,219,
-111,179, 14, 31, 62,156,149,150,150, 22,190,101,203, 22,211,123,239,189,119, 11, 0,110,220,184, 17,211,165, 75,151,168,225,195,
-135,199,183,107,215,110, 94,203,150, 45, 71,236,222,189,123, 39,242,187, 30,139, 20, 87,177,177,177,135,246,237,219,231,235,239,
-239, 95, 80,205,149, 45,139, 17, 35, 70, 40,186,118,237, 90,190,117,235,214, 7, 9, 33, 77, 41,165,103,189, 17, 66, 21, 43, 86,
-220,245,199, 31,127,248, 4, 4, 4, 32, 51, 51, 19,137,137,137,200,203,203,131, 94,175, 71,239,222,189, 21,205,155, 52, 46, 53,
-124,228,168, 93,132,144, 54,222,136, 44, 66,200,243,141,171, 87,223,181, 58, 46,206,199,118,231, 14, 52, 26, 13,114,115,115, 1,
- 0,190,190,190,168, 87,174, 28,123,124,229,202,168,126, 99,199,138,156, 79, 92,100, 17, 66, 84, 0, 64, 41, 53, 19, 66,182,202,
-100,178,110, 74,165,146,233,214,173, 27,118,237,218, 69, 76, 38, 19, 11, 0,106,181,154,235,214,173, 27, 52, 26, 13, 44, 22,139,
- 0, 96,107, 97,150, 38,119,156,114,185,156,105,217,178,101,222,177, 99,199,210, 69, 78,173, 86,107,107,217,178,101,144, 82,169,
-212,112, 28, 71,139,226,124, 76, 34, 18,215,174, 93, 43,112, 45, 39, 39, 7, 41, 41, 41, 72, 75, 75,131,217,108, 70,102,102, 38,
- 4, 65, 32, 26,141, 38, 69, 16, 4, 48, 76,190,177,173, 48, 78,133, 66,129,203,151, 47, 23,184,198,113, 28, 12, 6, 3,204,102,
- 51,172, 86, 43,114,114,114, 52,190,190,190, 21,171, 87,175, 30, 15, 96,115,122,122,250, 23,137,137,137,183,165,226,233, 31,193,
-157,173,127,153, 74, 3,176, 0,184, 89, 2,124, 2, 0,236,223,191, 31, 73, 73, 73, 72, 77, 77, 69, 74, 74, 10,162,163,163,241,
- 48,221,110,151, 46, 93,154, 87,187,118,109,114,234,212,169,159, 1,124,189,118,237,218,151,210,211,211, 23,143, 25, 51, 38,240,
-243,207, 63, 79, 31, 59,118,236, 16, 0, 63,174, 93,187,246,245,154, 53,107,118, 57,115,230,204,220,127,194,157, 18, 36, 60, 6,
-212, 7, 16, 98,255,159,106, 47,119,131,156,206, 79,219,243,173,248,156, 5,128,210,205,175, 8,241, 60, 5,192,159, 78,239,137,
-231,143, 12,177, 43,134,138,135,187,135,194,194,194, 70,182,106,213,106,214,137, 19, 39,170,221,191,127, 63,224,254,253,251, 1,
- 39, 78,156,168,214,170, 85,171, 89, 97, 97, 97, 35,197,231,236, 51, 11,224,116,238, 60,213, 82,113,232,208,161, 50,155, 54,109,
-154,190,107,215,174,172,218,181,107, 91,254,248,227, 15,174, 93,187,118,201, 0, 56, 0, 92,187,118,237,146,119,239,222,205, 55,
-104,208, 64,243,219,111,191,221, 61,120,240,224,236, 13, 27, 54,132, 1,144, 21,194, 9, 66,136,220,223,223,255,167,189,123,247,
- 62, 32,174,156, 81,170, 84, 41,108,221,186, 85,239,239,239,191,153, 16,162, 40,194,157, 32,132,168,213,106,245,198,221,187,119,
-251,248,250,250, 34, 57, 57, 25,114,185, 28,161,161,161,200,202,202, 66,226,253,251,184,125,229, 10, 24,139, 5,115,166, 78,246,
-213,104, 52, 27, 8, 33, 74, 79,156,126,126,126, 27, 87, 79,155,230,147,182,107, 23, 78, 77,153, 2,171,213,234,232, 90,181, 90,
-173, 56, 56,116, 40, 82,126,255, 29,223, 78,156,232,227,231,231,183,145, 16,162, 46,138,179, 36,224,204, 73, 8, 25, 10, 32, 29,
- 64, 58, 33,100, 40,165,244,112,108,108,236,137, 11, 23, 46,160,105,211,166, 88,191,126,125,173, 49, 99,198, 12, 29, 51,102,204,
-208,245,235,215,215,106,218,180, 41, 46, 92,184,128,216,216,216, 19,206, 99,165,188,225,220,187,119, 47, 90,181,106,149,177,126,
-253,250,152,137, 19, 39, 78,155, 56,113,226,180,181,107,215,150,111,213,170, 85,198,220,185,115,205, 69,113, 62, 14,191, 59, 91,
-150,156, 15, 65,248,187,110,137,140,140, 76,222,180,105, 19,122,247,238,205, 40,149,202,251,125,250,244, 81, 29, 56,112,128, 2,
-216, 90, 28,119,154, 76, 38, 24,141, 70, 24, 12, 6,220,184,113, 67, 51,115,230,204, 38,159,126,250,105,133, 93,187,118, 69,125,
-248,225,135, 67, 66, 66, 66, 78,134,135,135,151,121,210,126,151, 56, 1, 0,137, 0,172,246, 70,221,237, 71,225,108,221,186,117,
-141, 10, 21, 42,132,173, 59, 23,128, 12, 69, 21, 8, 10,127, 8, 10,127,240, 65,245,113, 77,217, 1,165, 75,151, 14,243,245,245,
-109, 88, 28, 78, 74,233,206,191,254,250,171, 3,165,116, 9,165,148,167,148,110, 24, 59,118,236, 32, 66,200,198,177, 99,199,190,
- 77, 41,221, 96,191,190,236,244,233,211, 93, 40,165,187,255, 9,119, 74,105, 73,226,124,200, 6,126, 81, 90, 36,132, 16,178,149,
- 16,178,117,252,248,241, 45, 1, 4,185,156, 55,114,126, 14,128,210,221,175,120, 56, 93, 15, 1,208,201,233,189,144,146,242, 15,
-227, 20, 88,132, 82, 42,182,196,143, 17, 66,182, 0, 56,166, 80, 40,106, 63,247,220,115,221,182,109,219,230, 27, 18,242,247,119,
- 67, 66, 66,176, 97,195, 6,223,234,213,171,119, 83, 40, 20,181, 1, 28,211,235,245, 91,224,166, 43,209, 14,255,161, 67,135,190,
-244,234,171,175,102,215,174, 93, 27, 0, 50,207,159, 63,175,109,208,160,129,129,227, 56,194,113, 28,105,208,160,129,225,252,249,
-243, 90,155,205,150, 83,191,126,125, 93,235,214,173,111,141, 30, 61,186, 63, 0,117, 17,126,232, 59, 99,198,140,232,128,128,128,
-162, 18, 2,114,114,114, 16, 22, 22,134,161, 67,135,134,203,229,242, 55,138, 52,235,177,236,176, 25, 51,102,132,250,251,251, 35,
- 35, 35, 3,209,209,209,176, 88, 44,184,124,249, 50, 76,134, 92,216,114,178, 97,203,206, 68,202,245,171,240,151,179,232,223,181,
-115, 24,203,178,195, 60, 88, 71,134,125, 51,118,108,152,229,214, 45,220, 88,191, 30, 60,247,160, 97,134,179, 90,113,230,235,175,
- 97,138,143,199,244, 65,131,194,148, 74,229,176, 39,108,185,250,156, 82,170,161,148,106, 8, 33,243, 26, 53,106,244,189, 70,163,
- 25, 26, 23, 23,215,126,199,142, 29, 47,238,219,183,175, 5,199,113,114,142,227,228,251,247,239,111,106, 50,153, 88,149, 74, 5,
-150,101,169,183,156, 13, 27, 54, 92,161,209,104,134, 44, 94,188,184,253,238,221,187,251, 31, 63,126,124, 24,207,243, 74,158,231,
-149,199,143, 31,127,219,104, 52,202, 41,165,124, 97,156, 79, 26,114,185, 28, 10,133, 2, 26,141, 6, 77,154, 52,185,190,108,217,
- 50, 91,116,116,180,124,227,198,141, 1,145,145,145,186,133, 11, 23,102,230,228,228,204,240,150,207,106,181,194,108, 54,195,104,
- 52,194,100, 50,225,143, 63,254, 40, 55,124,248,112,214,100, 50,241, 93,186,116, 73,183,217,108,230,177, 99,199,234, 3, 3, 3,
-223,147, 26,172,255, 8, 56, 0,185,118,129,101,118, 78,203,132,144,154,162, 53,214, 27,100,102,102, 46,253,230,155,111,162, 25,
-149, 63, 14, 88, 58, 98,141,240, 25,118,248, 45, 68,114,153,247, 17, 26, 93, 1,175,188,242, 74, 40,165,116, 97, 9, 84,116,155,
- 41,165, 61, 41,165,155, 30,230,253,199,237, 78, 66, 72, 25, 31, 31,159,245,122,189,254,128,143,143,207,122, 66, 72,153, 71,245,
-115,187,138,164, 77,183,106,178,248,118, 21, 8,237, 86, 77, 22,223,174, 98,241,215,106,146,240,116,194, 69,139, 56, 35,133, 82,
-218,153, 82,218,121,250,244,233,211,156,158, 23,207, 53, 94,242,119,166,148,118,118, 73,163, 91, 31,135, 95, 88,103,229, 40,122,
-202,121,182, 96,169, 82,165, 86,172, 88,177,194,215,245,197,251,247,239, 35, 59, 59, 27, 19, 38, 76,240,125,245,213, 87, 71,221,
-189,123,247, 53, 15,223, 82, 38, 38, 38,214,233,215,175,159,218,106,181,102, 8,130,192,100,103,103,179,126,126,126,188,248,128,
-159,159, 31,159,149,149, 37, 55, 24, 12, 50,158,231,205,175,190,250,170,114,208,160, 65,245,156, 45, 88, 15, 72,218,144,144,182,
- 29, 59,118, 84, 22,118,223,102,179,193, 96, 48,192, 96, 48,192,106,181,162, 73,147, 38,170,101,203,150,181, 3,176,184,176,119,
- 84, 42, 85,219,182,109,219,202,211,211,211,225,231,231,135,219,183,111,227,230,205,155, 48,231,230,194,154,155, 13,107,110, 14,
-184,156,108,208,236, 44,164, 93,189,132, 6, 85,171, 40,126, 80,169,218, 3,152, 93, 24,167, 94,175,111,219, 96,192, 0, 86,167,
-211,161, 69,191,252,249, 3,191, 85,173, 10,202,243, 16,120, 30, 60,199,161,253,229,203,176,217,108, 96, 24, 6,245,211,211, 89,
-253,202,149,109, 1,204,250, 39, 18,185, 74,165, 98, 87,173, 90,213, 87,169, 84,130, 82, 74, 44, 22, 11,118,236,216,241,200,156,
- 43, 87,174,236, 47,114, 90,173, 86, 90,163, 70,141, 7, 50,146,217,108,166, 79, 75,102, 87, 42,149, 80,171,213,176, 90,173, 40,
- 91,182,172,177, 95,191,126,135,166, 78,157, 90,154, 97, 24,157, 66,161,216,150,150,150, 54, 45, 33, 33,225,134,183,124, 54,155,
- 13, 22,139, 5, 22,139, 5, 70,163, 17,215,175, 95, 15, 47, 87,174, 28, 25, 58,116, 40,159,151,151, 23, 51,127,254,252,107, 59,
-118,236,208,206,152, 49,163, 7,128, 17, 82,113,251,228, 96,183, 66,251,149, 14, 98, 13,114, 25,114, 1,248,218,197, 64, 15, 66,
- 72,131,106,213,170, 5, 92,184,112, 33,131, 16,114, 4,192, 26, 74,233,253,162,248, 4, 65, 32,130, 32,224,237,231, 51, 49,180,
-161, 12, 54, 91, 22,178,178,178,112,251,246,109,156, 63,127, 30, 71,143,158,127, 40,119,170,213,234, 55,124,124,124,218,169,213,
-234,178, 28,199, 49,185,185,185,183,243,242,242,118, 9,130,176,148,186,118, 35,120,129,199,229, 78, 17, 58,157,110,230,135, 31,
-126,216,216,207,207, 15,127,253,245, 87,204,218,181,107,103,226, 17, 7,205,171,229,204,183,179,231, 46,140,138, 10,245,199,233,
-125, 63, 71, 77, 91,178,238, 91, 0,209, 82, 42,126, 38,242, 33, 45, 68, 96,253, 9,160,147,125,118,121,231, 71,224,127,164,247,
- 31, 74, 96, 21,226, 33,112, 28, 23,238,108,185,162,148,226,254,253,251,184,119,239, 30, 82, 82, 82, 16, 16, 16, 0,171,213, 26,
-238, 77,253,154,147,147,243,124, 80, 80, 80,158, 92, 46, 55, 27,141, 70,104,181, 90, 65, 46,151, 83,251,119,136,125, 22, 34,111,
- 54,155, 9,203,178, 54, 95, 95, 95, 31,179,217, 92, 5, 69,140, 21,163,148, 62, 31, 20, 20,228,246,158,217,108, 70,110,110, 46,
- 12, 6, 3,114,115,115, 97, 54,155, 17, 22, 22, 6,142,227,234, 20,217,132,229,184,154, 33, 33, 33, 72, 72, 72,128, 70,163, 65,
-124,124, 60, 44,185, 57,176,230,228,128, 51,100,131,207,202,130,144,157, 13,193,144, 13,155, 37, 15, 81,149,170, 66,156, 97, 88,
- 24, 44, 22, 75,205,160,160, 32, 24, 12,127, 15, 39,163,118, 97,197,113, 28, 56,251,160,103,177,219, 48, 56, 56, 24,226, 12,195,
- 39,212,106, 48, 19, 66,198, 48, 12, 51, 79,165, 82,177, 67,134, 12,193,253,251,247, 11,164,137, 33, 67,134, 56,198, 92, 53,107,
-214,108,191, 90,173,230, 82, 82, 82, 96, 54,155,229,222,112,150, 45, 91,246,246,132, 9, 19,142, 89, 44,150,232,200,200, 72,127,
-179,217,108,172, 92,185,114,164, 70,163, 9,179, 88, 44,124,189,122,245,150,106, 52, 26, 91,110,110, 46,229, 56,142, 60, 37,153,
- 29,132,144,252, 56,226, 56, 4, 7, 7, 27, 82, 83, 83,143,102,100,100,244,125, 24, 62,155,205, 38,206,208,130,209,104, 4,165,
- 20,127,253,245, 23,212,106,181,156,231,249,115, 28,199,105,229,114, 57, 24,251,224, 46, 9, 79, 44,158, 91, 84,241, 87,206,142,
-107, 16,234,255, 92, 23,157, 65,171,148, 25,132,219,207,149,253,238,243,243,107, 95,237,255,134,239,164, 73,147,202, 4, 7, 7,
-171,175, 93,187,102,154, 60,121,114,185, 85,171, 86, 17, 79,141,159,187,119,239,110,252,240,195, 15, 3, 59,118,236, 24,163, 82,
-169, 72, 86, 86, 22, 82, 82, 82,144,148,148,132,155, 55,111,210,211,167, 79, 95, 55,155,205,235,139,227,206,200,200,200,101,195,
-135, 15,127,181,110,221,186,114,209, 34,106, 48, 24,106,239,221,187,183,235,111,191,253,214, 20, 64,177,211,229,221,187,119,215,
-127,244,209, 71,186, 14, 29, 58, 84, 81,169, 84, 76, 73,184,211, 25, 12,195,132,249,248,248, 96,215,174, 93,240,247,247, 7,195,
- 48, 97,143, 26, 95, 38,171, 16, 21, 25, 30, 4,211,193,217,168, 18, 82, 6, 38,171, 16, 37,165,226,103,199,130, 85,200,173,250,
-162, 5,202,131, 72, 50,142, 27, 55,238, 67, 66,200,214,113,227,198,125,232,206,130,101,255,203, 59, 63,231,244,188,185,196, 5,
-150,151, 45, 29,220,187,119, 15, 9, 9, 9,184,119,239, 30,210,210,210,192, 48, 76, 81, 1, 82,192, 95,132, 16, 97,231,206,157,
- 1,135, 14, 29, 50,212,175, 95, 63, 83, 28,223,194,113, 28,177,217,108,196, 62,238,133,220,190,125, 91,113,224,192, 1,255,139,
- 23, 47,134, 33,127, 32,154,224, 33, 66, 30,184, 38, 10, 43,231,195,100, 50, 65,173, 86,123,229, 87,177, 2,252,235,196,137,124,
-113,149,155, 99,239, 26,204, 2,159,157, 5,106,200,129,146,183, 65, 9, 10, 98,202,243, 58,252,156, 33,138, 43,171, 93, 96, 89,
- 44, 22,216,108, 54, 8,130, 0,142,227,254,137,132,189,168,118,237,218,117,126,252,241,199,129,247,238,221,123,224,126,247,238,
-221, 49, 98,196, 8, 12, 31, 62,252, 98,167, 78,157, 78,255,252,243,207, 24, 54,108, 24, 4, 65,120,142, 16,146, 69, 41,253,173,
- 40,206,113,227,198, 29,191,123,247,238,158, 43, 87,174, 12, 9, 13, 13, 85,213,172, 89,243,106,205,154, 53,101, 63,254,248, 99,
-216,155,111,190,121,226,197, 23, 95,188,245,251,239,191, 7,238,218,181, 75, 45, 8, 66, 93, 66,200,189,127,122, 29, 44,179,217,
-236,176, 56,153, 76, 38, 88,173, 86,160,136, 65,237,158,210,166, 24,183, 28,199,137,220,228,199, 31, 55, 97,255,254,253,204,249,
-243,231,162,135, 12, 25, 42, 14,164,151, 74,218, 39, 35,172, 58, 40, 25,242,213,152,231,130,212,239,213, 10, 50, 40, 89,146,123,
-249,171, 15,115,111,150,214, 27,194, 74,105, 45,209,229,252, 35,167, 77,155, 26,113,241,226, 37,243,132, 9, 19, 46,244,233,211,
- 39,244,189,247,222,171,182,113,227,198,166,132,144,111, 40,165,153,133,240, 42, 6, 14, 28,120, 52, 52, 52,180,252,146, 37, 75,
-146,239,222,189, 27, 96,179,217,180, 54,155,205,106, 48, 24,174,229,229,229, 29,176, 90,173,187, 40,165, 39,138,227, 94, 95, 95,
-223, 90, 3, 6, 12,144,103,102,102,194, 62,251, 22,201,201,201,104,220,184,177,108,203,150, 45,213, 31, 38, 12,210,211,211,103,
- 19, 66,246,172, 94,189,186,157, 94,175,175,171, 82,169,194, 1,240, 57, 57, 57, 73, 6,131,225,212,195,184,179, 64, 57,199,243,
- 73, 39, 78,156, 40,175,215,235,113,231,206, 29,240, 60,159,244,168,241,166, 86, 48,119,207,236,219, 82,170,106,112, 57, 28, 56,
-116, 4,106, 5,115, 87, 74,205,207, 60,196, 49, 82,112, 22, 78,110,132,209,161,184,184, 56,205,244,233,211, 17, 23, 23,119,206,
-157, 5, 75, 20, 90,113,113,113,231,196,231,156,158,223, 87,162, 2,171, 40,129,196,178,108, 98, 74, 74, 74,128,191,191,191, 67,
- 88, 37, 36, 36, 32, 33, 33, 1, 74,165, 18,183,111,223,134, 82,169,188,239, 77,163, 67,163,209, 28,175, 93,187,118,229, 27, 55,
-110, 40, 38, 79,158, 92,234,196,137, 19,250,198,141, 27,215,208,104, 52, 60,165, 20, 38,147,137,185,112,225,130,207,172, 89,179,
-162,158,127,254,121,203,243,207, 63,127,114,221,186,117, 70, 20,177,232, 40, 33,228,216,253,251,247, 99,202,150, 45, 43,138,181,
- 2,162,202, 89,104, 1,249, 93,155, 44,203,158, 44, 50, 80, 88,246,204,229,203,151,219,104,213, 42, 88,114,178, 97,205,205, 6,
-151,147, 3, 62, 39, 11,124, 86, 22, 96,200,134,146,227, 32,231,109,208,168,213,184, 23, 31, 15,150,101,207, 20,197,169, 84, 42,
-207, 36, 37, 37,181,241,247,247,119, 84,158, 54,142,203, 63,120, 30, 22,142,115, 88,176,228,114, 57,238,222,189, 11,165, 82,121,
-230, 73,167, 96,134, 97,120,113, 41,134, 66,252,129,176,176, 48,161, 65,131, 6, 24, 54,108, 24,120,158,183, 71, 3,105, 65, 8,
- 57, 64, 41,205, 45,140, 83, 16, 4,230,194,133, 11, 47, 93,187,118, 77, 38,151,203,153, 23, 94,120, 33,182, 73,147, 38, 22,165,
- 82, 9,133, 66,193,230,230,230,250,238,218,181, 75,109,179,217,136,157,243,137,173,131, 37,166,157, 7,154, 66,246,193,232, 70,
-163, 17,185,185,185,200,200,200, 96, 53, 26, 77,229, 26, 53,106, 28,177, 88, 44,235, 57,142,251,246,198,141, 27,217,133,113,218,
- 5,153, 67,108, 9,130, 0, 74, 41,120,158,135,205,102,131, 66,161, 16,246,238,221,135, 89,115,102, 98,197,183,171,104,215,174,
- 93,201,150, 45, 91, 32, 8, 66,188, 84,158, 62, 17,124,145,185,102,170, 26, 28,111, 48,239, 93,157,251,253,149,108,195,164,239,
-231, 30,183, 40,101,217,245,154,135,213,140, 41, 87, 89,230,239, 31,192, 44, 94, 58, 47,237,135, 85, 27,174,221,185,115, 39,251,
-203, 47,191,108, 88,185,114,101,191, 83,167, 78, 69, 1,112, 43,176,124,124,124,202,190,254,250,235,175,103,100,100, 40, 86,173,
- 90,181,252,222,189,123,123, 41,165,215, 93,202,174, 58,132,144,207, 1,200, 1,132, 33,127,252,215, 78, 74,233,202,162,218,105,
-132, 16,236,222,189,251,129,217,126,194,163,169,242,140,154, 53,107,214,186,114,229,202,230,196,196,196,239, 93,111,106,181,218,
-174,177,177,177,175, 28, 59,118,236, 99, 74,233,181,226, 16,231,229,229,141,221,176, 97,195,231, 50,153, 44,146,231,249, 4,163,
-209, 56,246,145, 45, 88, 54, 97, 80,220,226,181, 95, 27, 45,124,105,141, 82,118,199,100, 19,222,148,146,242, 51,109,189, 2,236,
- 99,176,196,255, 0,136,203,249, 41,251,127,139,211,179, 41, 78, 86, 43,139,139,213,203,221,189, 20,148,224, 34,231,133,173,228,
- 62, 30,192,243, 0,142,201,229,242,121,175,190,250,234,172, 31,126,248,193, 55, 59, 59, 27, 73, 73, 73, 72, 78, 78, 6,203,178,
-208,235,245, 88,180,104,145, 49, 41, 41,105,158,243, 59,174, 43,190,139,121, 34, 56, 56,248,248,170, 85,171,194,191,250,234, 43,
-246,181,215, 94,187,221,169, 83,167, 42,139, 22, 45,186,161, 80, 40, 40,207,243,196,108, 54,147,183,223,126,187,252,156, 57,115,
-110,201,100, 50,109,239,222,189,137, 78,167, 59,102, 47,120,220,135,120, 74,202,206,159,126,250,233,165,209,163, 71,171, 44, 22,
-139, 91,203,149,120,205,223,223, 31, 7, 15, 30,180,100,100,100,236,240, 96,181,216,185,237,215, 95,154,253,175, 79, 31,133, 45,
- 39, 27,182,156,108,112,217,217,224,115, 50, 65,114,179, 33,231, 57,104, 20, 2,194,163,213,224,140, 62,248,229,207, 83, 54,179,
-217, 92,228,130,132,217,217,217, 59, 15,172, 88,209,226,249, 50,101,216,131, 35, 71,194,106,179,161,195,229,203, 14, 81,101,181,
- 90,177,185,102, 77,240,132,224,185,183,222,194, 85,142,227,178,179,179,119, 62,141,153,224,244,233,211,201,253,250,245, 59, 33,
- 8, 66,157,226, 88,115,156, 42,159,156,220,220, 92,164,166,166,242,105,105,105, 38, 0, 72, 78, 78,206,216,178,101,203, 5, 65,
- 16,158,127, 24,206,146,128,205,102,123,192,250,196,243,124,190,149, 49,223, 82,160,252,229,151, 95,154, 93,184,112, 65,113,246,
-236, 89,236,223,191,255,185, 31,126,248, 97,124,153, 50,101,106,222,190,125, 59,209,147,104,115,183, 88, 47,236,227, 11,215,173,
- 94,143,193,131, 7,147,196,196, 68,172, 89,179, 6,158, 22, 61,149, 80, 98, 48,128,227, 53,150,189,171,115, 59,253,122, 39,231,
-240,125,227,100, 0,219,169,145,163,165, 74,149, 58, 93,183,110, 64, 48, 0,152, 77,124,120,197,138, 21,155,179, 44,171,180,167,
-225,186, 65, 65, 65,139, 0, 52,113, 71,218,189,123,247, 70,161,161,161,181,127,251,237,183, 83,247,238,221,219,231, 42,174, 0,
-160,114,229,202,159,157, 61,123,182,131, 92, 46, 39, 78,105,132, 2,112, 43,176, 90,180,104, 81,185, 76,153, 50, 65,191, 94,241,
- 67,182,162, 2,168, 44, 11, 96,213,224,253,107,225,182,162, 26,162,163,143, 4,249,251,251, 63,151,153,153,121,170,152, 86,188,
-210,189,123,247,254,101,217,178,101, 85, 95,124,241, 69, 37,128, 7, 4, 86,213,170, 85,123,252,254,251,239, 61,135, 12, 25, 82,
-139, 16,210,197,203,221, 58,196,124,116, 27, 64,207,146,140,180, 29, 87,233, 46,216,215, 44,147,240,159,193,159,143,233,217,199,
-134,194,186, 8,159, 23, 4,161, 43,195, 48,176, 90,173,113, 97, 97, 97,155,123,247,238,221,125,252,248,241, 62, 65, 65, 65, 14,
-203,213,162, 69,139,140, 55,111,222,220,104,181, 90,255, 34,132, 76, 76, 72, 72,232, 26, 25, 89,104,189,144, 51,127,254,252,181,
- 93,186,116,121,237,173,183,222, 50,214,172, 89, 83, 95,165, 74,149,188, 67,135, 14,249,180,109,219, 54, 91, 38,147,209,131, 7,
- 15,250,150, 47, 95,222, 68, 8, 81,253,254,251,239,105, 71,142, 28, 41, 31, 23, 23,247, 13,242,167, 77, 23,134,213, 83,166, 76,
-153,208,181,107,215,242, 65, 65, 65,200,206,206, 46, 32,178,196,255,106,181, 26,137,137,137,216,180,105,211,125,155,205,246,141,
- 7, 75,198,151, 11, 23, 45, 30,213,178,193, 11, 81,122,173, 6,137,241,183,193,103,101, 0,134, 92, 40, 57, 27, 52, 74,138,168,
- 10, 90,176, 50, 29,174, 37,230, 98,197,161, 63, 19, 57,142,251,178, 40, 78,139,197,242,229,136, 57,115, 70, 29, 94,188, 56,170,
- 76,175, 94, 56,191,114,165,163, 75, 80, 20, 88, 60, 33, 40,221,186, 53, 24, 63, 63, 76, 91,178, 36,201, 98,177,124,249,164, 19,
-132, 32, 8, 50,139,197, 82,148, 63, 32, 8, 66,252,249,243,231,215, 18, 66,114, 8, 33, 45,236,183,246,184,179, 94, 57,115, 50,
- 12, 35, 84,171, 86,237,199,176,176,176,151, 0, 24,170, 85,171,246,163, 74,165,106,101,177, 88, 94, 16, 4, 33,254,175,191,254,
-218, 68, 8, 73, 36,132,136,173,140, 39,186, 14,150,205,102,195,196,137, 19, 49,125,250,116,140, 27, 55,206,225, 95,177,155, 48,
- 51, 51,179,220,129, 3, 7, 20,123,247,238,165, 75,150, 44, 73,123,237,181,215,252,223,122,235, 45,255,175,190,250,234, 93, 0,
- 99, 11,227, 28, 59,118, 44,150, 44, 89,130,193,131, 7, 63,168,174,100, 50, 33, 62,254, 46, 76, 38, 19,157, 63,127,126,130, 92,
- 46, 15,248,230,155,111, 52,111,190,249, 38,145,202,211, 39,130,143, 52,253, 62,126,199, 94,198,204,163,148,238, 17,111,232,245,
-122,205,143, 63,254,196, 2,192,198, 13,155,228,148, 82, 63,113, 97,216,239,191,255, 94,221,184,113,227,208,194, 72, 55,108,216,
-144, 57,121,242,228,160, 65,131, 6,189,184,103,207, 30, 45, 33,228, 87,123,161,159, 10,128, 7, 16, 12,224, 96, 72, 72, 72,196,
-218,181,107, 43,180,107,215, 78,231,201,161, 57, 57, 57,223,172, 93,187,182,236,156, 3,126,248,213,240, 18,238, 10,189, 64,253,
- 41, 2, 67,115, 80,205,231, 14,250,246,237, 27, 57,111,222,188,175, 1,212, 45,134,184,170,254,242,203, 47,255,180,108,217,178,
-114,111,189,245, 86,252,193,131, 7,239, 18, 66, 62,115,243,104,218,128, 1, 3,110, 47, 95,190,188,130, 32, 8,219, 9, 33, 47,
- 82, 74,175, 72,201, 71,130,132, 34,242,151,187,241, 75,132,144,205, 28,199,117,101, 89,118,139,243, 66,163, 97, 97, 97,163, 44,
- 22, 75, 4, 33,132, 42, 20,138,196,164,164,164,121,206, 11,141,198,199,199,119,141,142,142,118,188, 99, 95, 44,211,121,173, 12,
-125,135, 14, 29,218, 28, 62,124,120,193,214,173, 91,147,115,114,114,124, 54,108,216,160,153, 62,125,250,109, 65, 16,232, 7, 31,
-124, 80,166,125,251,246,121, 60,207,223,127,235,173,183,202,151, 43, 87,238,173,139, 23, 47,238,114, 22, 88,110, 56, 65, 8,169,
- 94,161, 66,133,131, 27, 55,110,212,251,251,251, 35, 57, 57, 25,233,233,233, 48, 24, 12,224,121, 30,114,185, 28, 41, 41, 41,152,
- 60,121,114,118, 66, 66,194, 3, 11,141, 22,194,249,124,217,168,168,157,243, 62,155,232,235,207, 50, 72,187,116, 1, 92, 70, 26,
-228,156, 13,165,170,251, 65,161,212,224,234,229, 28,188,187,122, 83,206,157,244,204, 7, 22, 26, 45,140,179, 94,197,138,187,150,
-140, 25,227, 99,186,123, 23, 17,175,191,142,188,188, 60, 88,173, 86, 48, 12,131,235,243,230, 65, 17, 18,130, 9,235,214, 25,206,
-221,185,211,218,117,161, 81,119,156,143,156, 0,156, 56, 9, 33, 67, 9, 33,142, 65,238,221,187,119, 47,240,236, 79, 63,253,132,
-197,139, 23,195,108, 54,115,148,210, 81,148,210, 69,132, 16, 31,123, 43, 53,215, 19,103,217,178,101,239,196,198,198,254,201,243,
- 60,107, 23, 23,244,252,249,243,117,111,222,188, 89,202,133, 83,236,186,230,158,148,223,131,130,130,230,253,246,219,111,101, 67,
- 67, 67,137,243, 10,235,118,129, 8, 0, 24, 54,108, 88,235, 35, 71,142,168,106,215,174,109, 78, 77, 77,173, 31, 18, 18,242,199,
-170, 85,171,130,123,247,238,157,112,238,220,185, 40, 87,206,224,224,224, 89, 27, 55,110,172, 80,161, 66, 5, 70,180,130,185,118,
- 67, 14, 28, 56,176,205,170, 85,171,148, 47,189,244,146,217, 96, 48,132,249,250,250, 94,219,184,113, 99,112,183,110,221, 18,207,
-157, 59, 23,241, 36,252, 46,113,186, 71,108,108,236,213,115,231,206, 85, 16,207,141, 70, 35, 82, 82, 82,144,154,154, 10,127,127,
-127,180,109,219,246,250,205,155, 55, 43,184,227,180, 91,133,230, 46, 93,186,244, 69,157, 78,167,216,183,111,159, 97,215,174, 93,
-166,219,183,111,115, 54,155,141, 70, 68, 68,176, 77,154, 52, 81,119,236,216, 81,167, 82,169,152,143, 63,254, 56,117,234,212,169,
-193,132,144,185,148,210,119,221,113,214,169, 83,231,232,182,109,219,158, 39,132, 64, 38,147,193, 98,177, 34, 51, 51, 19,247,238,
-197,227,252,249,243, 56,124,248, 48,118,236,216,113, 42, 55, 55,183,182,183,126, 39,132,252, 97, 54,155, 91, 40,149, 74,175, 5,
- 61,207,243, 96, 89,118, 55,128, 54,148, 82, 65, 74, 75, 18,167,132,226, 89,176,196,193,185,207, 19, 66, 54,219, 47, 29,115, 93,
-138,129, 16, 50,158, 16, 50,209,201,234,229,233,123,217,191,253,246,219,254, 54,109,218, 12,107,221,186,245,156,118,237,218,221,
-191,127,255,126,204,236,217,179,163, 57,142,179,158, 63,127,158,185,118,237,218,237,227,199,143, 87,168, 84,169,210, 91, 23, 47,
- 94,220,235,193,122, 37,186,245, 60, 33,164,113,203,150, 45, 55,189,245,214, 91,165, 27, 52,104,160,244,247,247, 7,203,178,184,
-113,227, 6, 78,157, 58,101, 89,183,110, 93,124,102,102,166,215, 91,229, 80, 74,143, 17, 66,218,246, 30, 62,106,227, 91,221,187,
- 4,191, 80,165,178, 50, 34, 34, 2, 48, 26,113,233, 78, 34,142, 92, 58,101, 93,182,255, 72,138,217,108,126,217,219,173,114,236,
-156,109, 90,141, 25,179,113,210,255,254, 23,134,251,247,217,136,136, 8, 40,149, 74,220,188,121, 19,215, 4,129,155,177,116,105,
- 82,118,118,246, 19,223, 42, 71, 92,179, 74, 16, 4, 22, 0, 52, 26, 13, 70,140, 24, 1,231,173,113, 22, 47, 94, 12,163,209, 8,
- 0, 44, 33,228,115, 66,200,183,133, 89,173, 10,225, 44,253,235,175,191,150,118,230,172, 90,181,170, 59, 78,243,147,206, 8,233,
-233,233, 19, 58,116,232, 16,199,178,108,161,171,213, 6, 4, 4, 32, 39, 39, 7, 28,199,241,247,238,221,187, 20, 16, 16, 0,185,
- 92, 14, 74,169,219,124,148,150,150, 54,225,229,151, 95,158,194, 48, 76,161,150, 14,189, 94,127,251,143, 63,254,168,248,230,155,
-111, 50,223,125,247,221,141, 65,131, 6,169,254,248,227, 15,254, 97,215, 52,146,240,248,224,220, 24,181, 55,222,104, 17,207,222,
- 33,132,140, 61,113,226,132,122,240,224,193,117,255,247,191,255,233, 91,182,108,233,227,252,140,209,104, 20,126,254,249,103,195,
-146, 37, 75,210,246,237,219,247,231,192,129, 3, 95, 66,254,248, 17,183,184,115,231,206, 47,211,166, 77,243,235,216,177, 99, 37,
- 0,142,241, 87, 41, 41, 41,184,125,251, 54,206,158, 61,123,219,106,181,110, 41,166,183,134,245,235,215,239,215,229,203,151,151,
-121,235,173,183,226,215,172, 89,179, 5, 64,150,155,231,124,122,244,232,209,117,249,242,229,101,222,126,251,237, 59, 0, 70, 74,
- 43,188, 75,144,240,112, 2, 43, 75, 16, 4,152, 76,166, 48, 65, 16,186, 10,130, 0, 31, 31, 31,119,207, 61,159,144,144,208,213,
-121,179,103,120,216,214, 6, 64,202,174, 93,187,118,174, 94,189,186,245, 7, 31,124,240,191,204,204,204,231, 79,159, 62,221, 0,
- 0,228,114,249, 97,157, 78,119, 52, 46, 46,238,245,177, 99,199,166,120, 35,174, 92, 68, 86,181, 89,179,102,149,216,102,207,118,
- 65, 84,241,203,245,155,134,125,163, 82,181,117,217,236,121,167,125,179,103,211,195,112,142,249,250,235, 97,250,245,235,159,218,
-205,158,205,102, 51,247,210, 75, 47,125,195, 48,140, 96,111,181,178,102,179,249,117, 20,115,230,169, 43,103,247,238,221,191,147,
-201,100,156,221, 50,196,152,205,230, 55, 30,133,179, 4, 43,207, 92, 0,195,139,122,166, 70,141, 26,171,182,108,217,210,175,107,
-215,174,188,213,106, 77,238,210,165, 11,123,244,232, 81,202, 48,204,174, 66, 56,205, 0,222, 47,138, 51, 60, 60,188,204,194,133,
- 11, 79,142, 28, 57, 82,191,122,245,234,192, 3, 7, 14,240,243,231,207,207, 78, 79, 79,255, 66, 42,158,158, 46,200,229,114,104,
-181, 90, 88, 44, 22,164,164,164,192,211,146, 83,148,210,107,132,144, 78, 99,198,140,105, 58,102,204,152, 78,209,209,209,213, 75,
-151, 46, 93,154, 97, 24,230,254,253,251, 41,119,239,222,189,101,181, 90,127, 7,240, 11, 0, 69,249,242,229,255, 2,176,170, 48,
-190,180,180,180, 41,132,144,221, 43, 87,174,236,164,211,233,170,169,213,234, 64,155,205,198,228,228,228,164, 27,141,198, 11, 38,
-147,105, 43,165,244, 80, 49,211,253,101, 66, 72, 75,150,101,127, 89,182,108, 89,213,251,247,239,151,221,187,119,111, 23,215,231,
-234,214,173,187,124,249,242,229,101,134, 12, 25,114,109,245,234,213,197, 26,131, 37, 65,130, 36,176, 10, 98,154, 82,169,100, 97,
-223,244, 89,180, 96,185,121,238,152,203,152,171, 44, 0,211,188,248,174,161,111,223,190, 55,251,246,237,251,185,221, 13, 50,228,
- 47,197,192, 33,127, 4,191, 21, 30,150,102, 40,164,176,224, 0,124,109, 63, 74,170,226, 53, 33,127,189,155, 89, 79, 51,103, 9,
-184,201, 76, 8, 25, 99,159,213, 4, 0, 99,254,250,235,175, 69, 46, 22,169,211,206,247, 61, 89,154,220,113,158, 58,117,202,149,
-243,108,113, 56,255, 73,100,102,102,142, 90,184,112,225,177,113,227,198,169, 6, 12, 24,128,179,103,207, 98,250,244,233,230,204,
-204,204,213, 15,203,153,152,152,120, 59, 60, 60,188,206,220,185,115,223,155, 51,103, 78, 55, 66,136,180, 23,225, 83, 2,163,209,
-120,189, 86,173, 90, 32,249,179, 19, 40,199,113,142,217,159,246, 21,249,175,123, 89, 38,237,182, 31,158,240,185, 23,124,135, 1,
- 28, 46,225,188,127,135, 16,210,233,214,173, 91,211, 46, 95,190,188,205,221, 51,231,206,157,251,169, 93,187,118,218,195,135, 15,
-127, 88,220, 89,132, 18, 36, 72, 2,171, 96,134,187, 10,224,127, 94,100,204,184, 71,248, 54,239,133,181, 75,194,147, 21, 89,139,
- 8, 33,223, 58, 89, 95,138,117,255, 73,113,254, 83,136,143,143,207, 0,224,216, 50, 36, 38, 38,230,129,113,106, 15, 43,178,144,
-191,106,187,180,114,251, 83,132, 27, 55,110,116,248, 15,229,253, 59, 0,250, 21,118,223, 98,177,108, 1,176, 69, 74, 21, 18, 36,
- 60,162,192,146,240,159, 22, 89,230, 71,185,255,164, 56, 37, 72,144, 32, 65,130,132,167, 25, 4, 64,155, 66, 42, 61,175,103, 7,
- 16, 82,252,141, 54, 61,241, 75,156, 18,167,196, 41,113, 74,156, 18,167,196,249,236,113, 58,113,207, 41,228,214, 37, 23,190,175,
-254,173, 22,139,199,118, 32,127, 26,175,196, 41,113, 74,156, 18,167,196, 41,113, 74,156, 18,231,195,124,231,173, 39,241,157,199,
-113, 72, 27,202, 74,144, 32, 65,130, 4, 9, 18, 36,148, 48,220,142,193,218,176, 97,131, 76,252,255,202, 43,175, 12,228,121,222,
- 49,125, 93, 38,147, 45, 92,179,102,205,183, 69,145,246,236,217,147, 47,138,211, 29, 60,125,199, 29,103,108,101,191, 33, 65,126,
-218, 81,153, 89,121,115,111, 36,240,251, 77, 38, 83, 53,241,158, 90,173,190,240,237,183,223, 94, 41,105,119, 14, 28, 56,176,146,
-235,119,202, 70,203, 91, 4,250,170, 71,164,103,230,206, 62,123, 37,231, 43, 41, 89, 61, 94,244,234,213, 75, 86,156,231,111,222,
-244,103, 78, 34,226, 11,189, 78,209, 37,215, 96,251,130, 63, 49,113,193,179, 16, 14, 17, 17, 17, 85,244,122,125,127, 0,213,243,
-242,242, 66,181, 90,109, 50,128,243,217,217,217,171,238,223,191,127,201, 91,158, 22,229,200,109, 0,165,237,167,119,246,220,164,
-101,188,185,231, 9,237, 43, 16, 19, 5, 84,132,192,186,253, 42,117,108,112,249, 98, 69, 98, 18,232,131,215,219, 87, 36, 22, 74,
-161, 32,128,121,251, 53,170,126, 86,210, 43, 33, 68, 15,160, 45,128, 88, 0,167, 1,236,160,148,230, 73, 57, 89,130,132,255,160,
-192, 26, 56,112, 96, 51, 37, 75, 23, 64,160,254,160, 52,200,108, 54,203,149, 74, 37, 44, 22, 11,180, 26,205,151,131,223, 24,240,
- 25, 8, 50,173, 2, 51,226,219,111,191,125,232,157,167,139,243,157,158, 61,123, 62, 48,205, 57, 64,175,153,178,231,231, 15, 2,
-154,117,138,155,110,185,153, 62, 54, 39, 39,135, 81,169, 84, 48,155,205,240,243,243,107, 60,252,173, 65,117, 41, 67, 44, 10,181,
-238,208,156, 57,115, 18, 31,214,157,239,190,251,110, 56,103, 53, 52,162, 54,170,180, 88, 44, 42,215,239,248,107,117, 51,246,252,
-252,129,182,121,231,233,159, 1,144, 4,214, 83,132,124,113, 21,254,213, 59,125, 95, 24, 48,115,100, 27,248,183,152, 49, 22,192,
-191, 90, 96, 17, 66,100, 49, 49, 49,195,202,148, 41,211,103,233,210,165,138,152,152, 24,168,213,106, 24,141,198,136,235,215,175,
- 71, 12, 25, 50,164,121,249,242,229,215,222,184,113,227, 75, 74, 41,239, 5,101,233, 61,203, 63, 6, 0, 52,238, 63,185, 52, 33,
-228,125, 0,121, 0,208,188,236,223,247, 90, 12,152, 92,154, 16, 50, 6, 5,103,255,222,167,148,186,157, 93, 70, 1,229,214,149,
-179,208,245,213,247, 89, 66,200, 16,241,122,199, 74,192,182,239,231,225,197, 87, 70, 21,184,222,190, 60,216,159, 87,206, 66,231,
- 87,223, 47,116,183,241, 23, 43, 49, 54, 65,160,133, 78,206, 97, 24,194,109,191, 74,221,109,252,155, 68, 41,221,238, 38, 44,219,
- 35,127,163,101,183,207,119,174,202, 38, 89,109,188,219,133, 98, 21,114, 89,242,214,139,220, 3,239, 14,168, 67,108, 54, 62,191,
-108, 85,176,224,253,252,252,246,124,244,209, 71,108,231,206,157,177,108,217,178, 38, 95,125,245,213, 91,132,144,223, 1,108,145,
-150, 60,144, 32,225, 63, 38,176,148, 12, 93,178,125,245,226, 10,137, 41,233,232, 51,100, 60, 86,175, 94,141,140,140, 12, 4, 4,
- 4, 64,169, 84,200, 23, 77, 27, 27,238,239,171, 13,239, 61,124,226, 18, 0, 85, 30,246,227,197,252, 78,197, 7, 10, 71,251, 66,
-164,172,140,149, 43,149,114,102,237,218,181,200,204,204,132,191,191, 63,148, 74, 57, 51,111,242,104,141,191, 94,167,249,223,168,
- 73, 77, 0,172,127, 88,119,114,198,220, 38, 63,127,191, 80,159,148,146,134,126, 35, 38,192,245, 59,114,133,130, 23, 43, 20, 41,
- 73,253,115, 72, 77, 77, 37, 0, 16, 28, 28, 76, 11,138,171, 6, 3,230,140,110,135,119,103,239, 64,158,201,242,253,191,221,159,
- 49, 49, 49,195,122,245,234,213,103,202,148, 41, 10,134,201,239,229, 55, 24, 12, 48, 26,141,136,138,138,194,158, 61,123, 20, 19,
- 38, 76,232,243,211, 79, 63, 1,192,252,226,242,159, 59,119,174,108,233,210,165, 77, 0,208,165,166,175,235,189, 50,226, 61, 0,
-240,245,245,245,200, 23,228,175, 51,159, 59,119,164,186,248,222,176,214, 81,124, 33,215, 77, 0,180, 69,113, 9, 2,101,119, 44,
- 24, 82,232,253, 55,167,252,192,157, 94,191,191, 74, 76, 76,140,209,249,122, 33, 11, 37, 3, 64, 88,110,110,110,105,215,139,226,
-243, 86, 27, 31, 90,216,247,218,141, 88,236, 86,120,217,120,176, 63,252,240, 3, 0,224,139,247,251,201,190, 62,154,202,178,108,
-126, 81,251,249,231,159, 99,210,164, 73,202,237,219,183,119, 92,185,114,101, 71,251,214, 56,210,242, 7, 18, 36,252, 87, 4, 22,
- 33,240,213,251,234,208,245,181, 17,248,109,219,118, 52,107,214,204,113,175, 92,185,114,120,165, 71, 23,252,180, 52, 14, 12,136,
-239,163,124,252, 81,191,147,145,101,248,164, 67,159,249,147,239, 36,230, 30,222,186,245, 87, 52,109,218,180,192,251,255,235,253,
- 18, 54, 46,154, 10, 66,169,226, 81,220, 41, 48, 84,161,215,235,240,242,160, 81,112,247,157,193, 3,186,110,125,177,231,188, 54,
- 73,105,134, 57, 82,146,122,178,184,120,241,162,204,108, 54,191,162,215,235, 27,200,229,242, 48,149,127,105, 33,129,125, 62, 45,
-133,196,220, 72, 14,205,107, 54,186, 77,216,139, 95,188,211, 18,239,206,222,129,185,171,143, 44,175,131,196,137,255,102,255, 70,
- 68, 68, 84, 41, 83,166, 76, 1,113,149,147,147,131,220,220, 92,100,103,103, 35, 39, 39, 7, 12,195, 96,236,216,177,138,189,123,
-247,246,137,136,136,216,229, 69,119,225,157,198,253, 39,231,139, 12,153, 60,119,226,196,137,230,208,208, 80,179, 86,171,165,172,
- 66,149,211, 98,192,100, 95, 0, 96, 88, 69,206,220,185,115, 45, 81, 81, 81, 38,150,101,149,163, 70,141,242,106, 12,167,217,108,
-166,206,156, 22,139,217,113,125,198,140, 25,150,176,176, 48,179, 86,171,165, 86,171,197,235,112, 56,115, 51, 29, 42,133, 12, 42,
-133, 12,106,165, 28,190,101,235, 67,149,113, 22, 28,199, 97,230,204,153,214,240,240,112,139, 86,171,165, 74,165, 82, 49,114,228,
- 72,143,238, 28, 56,112, 32,245,247,247,183,106,181, 90,197,164, 73,147, 30,216,151,239,143,211,247,160, 81,202,161, 85,177,168,
- 88, 46, 26, 42,106,244,218,173, 50, 89,193, 30,109,149, 74,133, 38, 77,154,160,122,245,234,216,188,121,115, 11, 72,235, 75, 73,
-144,240,236, 10, 44, 66, 72,115, 0,123, 0,128, 82, 74, 0,128, 1,197,167,131, 94,196, 91,175,246, 2,207, 11,249,163,226, 1,
-200, 8,193,251,125,154, 65,224, 57, 8,240,184, 85,132,199,169,154,197,253,142, 51, 39, 37,140, 12, 0,170,148, 14,162,131, 95,
-239, 11,129,207,239, 13,225, 1,200, 1,188,215,171, 9,120,222, 6,193,195,162,240,222,185, 83,192,199, 3,219,193,221,119,170,
-148, 15, 99,204, 60, 7,226,180, 25,227,227,216, 4, 83,226, 44,136, 67,135, 14, 69,104,181,218,217,253,250,245,139, 28, 57,114,
-164,146,103,253,217, 13,135,211,252, 62, 88,116, 56, 50,207,108,149,245,109, 89, 22,163,255, 87, 19,163,231,254, 33,138,171,183,
-202,149,203,252, 87,199,145, 94,175,239,191,116,233,210, 7,196, 85, 82, 82, 18,147,155,155, 11,171,213, 42,228,228,228,128,231,
-121,140, 27, 55, 78, 62, 97,194,132,254,132,144, 73,118, 30,179, 59,206, 61, 55,105, 25, 66,200,152,115,231,206,149,249,232,163,
-143,172,173, 90,181,186, 83,174, 92, 57,131, 76, 38, 67, 68, 68,196,188,182,109,219, 6, 78,153, 50,197,218,177, 99,199, 91, 50,
-153, 12, 21, 43, 86, 52,156, 61,123,182, 12, 0,141,183,126,119,230,252,246,143,133,212, 94,238,160,109,219,182,183, 43, 86,172,
-104,144,201,100,184,242,243, 12,234,109,120,202, 89, 6,149,162,252, 28, 45, 53,104,124,128,140,252,211,182,109,219,198, 87,169,
- 82, 37,151, 97, 24,156, 57,115, 38, 26,128,218, 19,167, 70,163,177,245,237,219,247,206,165, 75,151, 30,120, 30, 0, 88, 25,131,
- 6, 85,236, 6,171,168, 58, 64,252,129, 66,221, 41,151,129,155, 48,172, 31,235,175, 6, 84,190,193,230,236,236,108,232,245,250,
-124,139,152,213,138,191,254,250, 11, 13, 27, 54,108,190,126,253,250,189, 82,126,151, 56, 37, 78,103,163,203,131, 90,228, 89,176,
- 96,237,113,245,140,192,115,168, 16, 21,132, 69,239,191, 12,142,227,193,243,130,253,224,193,113, 2,108, 86, 11, 60,232, 43,239,
-172, 67,143,240,157, 0,189,102,202,111,107, 71, 6,180,238,246,121,235, 5,239,245,216, 41,216,108,224, 5,128,227, 5,240, 54,
- 30,130, 32,192,102, 41,153, 53, 44, 5, 27,143, 10,145, 65, 88,240, 94, 15,184,126,103,225, 47, 59,186,252,177,101,172,182, 89,
-231,233,239, 1,152, 41,233,246, 39, 99,185,210,106,181,179, 87,173, 90, 85,166,126,253,250, 12, 0,236,191,204,169, 62, 88,116,
- 56,114,123, 92, 99,210,184,122, 16,146, 51,205, 24,245,229, 41,252,118, 56,121,155,171,184,250, 23,163,122, 76, 76, 76, 1,113,
- 53,107,214,172,224, 69,139, 22, 69, 1,192,203, 47,191,124,175,117,235,214,169,151, 47, 95, 70, 68, 68, 4, 73, 77, 77,237, 4,
- 96,148,189,240, 26, 67, 41, 93, 84, 8,175,161,116,233,210,166,144,144, 16,179, 40,132, 24,134, 1,203,178, 40, 93,186,180, 41,
- 52, 52,212, 92,177, 98, 69,131, 66,161, 0,195, 48, 16, 5,158,151,133, 38,100, 50, 25, 68, 78, 87,235,142,200, 89, 28,200, 89,
-167,231,233,131, 22, 35,134, 97,220,126,175, 48,168,213,106, 10,160,208,231,101,140, 83,241,200, 22, 61, 18, 96,249, 73, 42, 39,
-132,236,161,148,226,228,201,147,184,113,227, 6, 20, 10, 5,194,195,195, 49,105,210, 36,152,205,249,101, 82,175, 94,189,154, 3,
- 56, 35,229,102, 9, 18, 28,216,243, 44, 8, 43, 87,129,229, 80,143,148,210,189, 0,192,115, 54,240,188,224, 86,244, 88,109, 28,
-108, 86,107,137, 56,160,168,239,240, 60, 95,228,119,196, 49, 88, 2,165,172, 91,113, 37,228,239, 27, 86, 34,238, 20,108,176,241,
-128,187,239, 16,194,240,246,130, 94, 33,229,143, 39, 3,179,217,220,183, 95,191,126,145,162,184, 2,128,212, 28, 27,155,103,182,
-201, 26, 87, 15, 66,221,150,189,112, 98,247,122,172,219,119, 15,229, 67,180,251,202,233,158, 9,113,133,188,188,188, 80,181, 90,
- 13,131,193,224,176, 92, 45, 90,180, 40,202, 98,177, 48, 0,192,178,242,232, 20, 33, 74,205, 11,128,159,254, 62, 50, 50,178,130,
-196, 2,139, 16,242, 57, 33,228,219,162, 86,206, 87, 40, 20, 14, 97,226, 44,124, 84, 42,213, 67, 9, 23, 17,162, 40, 83, 40, 20,
-110,175,187,118,163,121,130,194, 89, 96,129,230, 91,177, 92, 68,150, 76, 38,131, 56,246,201, 19,148, 74,165,195,239,110, 11, 74,
-153,211,247,100,197, 31,106,105,181, 90,145,155,155,139,204,204, 76,168,213,106,209, 2, 0, 66,200, 40, 0,239, 72, 57, 90,130,
- 4,247, 90,228,153, 17, 88,200, 55,205, 17, 0,224,108, 86,183,162,103,229,142, 19,184,150,102, 67, 84,192,121,136,207,122,139,
- 62,125,250, 44,143,136,136,104,224, 40, 36,181,190, 65,253,223,159, 1,222,106,129,191,138,226,157,158, 77, 11,136, 43,158, 23,
- 96,181, 22,110,129,202,200, 50,124,242, 98,175,121,147,131,116,190,135, 93, 69,207,132, 13,151,122,166,101, 89,162, 9,123, 17,
-153, 36,138,239,245,246,167, 3,157, 10,245,211,107, 23, 79, 28,237,173,187, 41, 97,228, 93, 70,126,245, 22,175,240,173,166,167,
- 25,251, 38,189, 82,237, 71,103, 17, 23,234,227,179,181,253,203,115,218, 36,165, 75, 99,176,158, 20,148, 74,101,155,145, 35, 71,
- 22,168,233,130,125,229,156, 86, 37,231, 15,158, 79, 37, 39,118,175,103,246,159, 75, 21,212, 10, 25, 13,161, 55, 98,158, 21,127,
-107,181,218,228,188,188,188, 8,163,209,136,236,236,108,100,103,103, 23,204,208,114, 57,121,107,240,240, 96,185, 66, 9,155,213,
-130,223, 86, 77,245,200,217,162, 28,185,221,188, 44, 74,119,169,233, 11,153, 92,153,115, 62, 38,102, 30,203,178, 96, 24, 6, 63,
-127,249,193,168, 77,179, 71,248, 2,192,233,173, 95,102,191, 50,118,225,124,134, 97, 96, 54,155, 85,197,113,247,221,187,119,163,
-205,102,179,201, 46,204, 68,193,135,155, 55,111,150, 50,155,205, 70,231,235,222, 64,163,245, 5,252,203, 1,218,208, 7,172,101,
-183,110,221,138,180,217,108,121, 44,203,194, 98,177,120,165,134, 24,134, 81,156, 57,115, 38, 90, 16, 4,183,207, 87, 47, 31, 9,
-132,215, 4,148,126, 94,251,217,190, 72,162,199,103, 8, 33,244, 89,106,181, 75,144, 80, 18,150,172,226,234,139,167, 89, 96,181,
- 32,132,208,191, 51, 61,192, 89,173, 14, 97,149,111, 97,202,255,127, 51, 75,192,165, 43, 87, 49,119,238, 92,236, 61,254,158,223,
-148, 41, 83, 84, 19, 38, 76, 48,247,233,211,103,182, 32, 8,181, 24,134, 57,221,179,103,207, 81,238, 62, 38, 8, 66,169, 19, 39,
- 78, 56, 42, 59,155,205, 6, 95, 95, 95,248,250,250, 34, 54, 38,252, 1,113,197,217, 45, 88,180,112,225, 35, 3, 5, 64, 65, 57,
-222, 6,222, 6,135,232, 73,203,178, 68,255,180,251, 84, 5,167,199, 43,139,127,154,212,175, 86,184, 8, 28, 50,201,225,143,181,
-139, 39,142,158,178,108,153, 42,131, 15, 27,249, 74,239, 65,177,189, 94,233,143,126, 61, 94,108,110, 50,217, 54,179, 12, 4,155,
-192,131,183, 9, 16, 40,101, 40, 80, 96, 12,150,132,199,135,212,212, 84, 98, 52, 26,203,250,251,251, 23,168,168, 34,116, 6,243,
-216,222,149, 18,218,126,112, 32,210,100,229,161,146, 51,116, 84,183, 50, 9, 71,127, 90, 23,148,106, 78, 37,226,236,194,127, 57,
-206, 95,187,118, 45,162, 84,169, 82,200,206,206, 6,199,113,194,203, 47,191,124,143,101,229,209,172, 92, 78, 58,191, 50, 92, 72,
- 76, 76,176, 49,140, 12,148,242,232,208,107, 40, 81,169, 53, 10,171,197,194, 1, 24, 83,136,245,202,121, 41, 6,223,182,109,219,
- 6,138, 51,251, 54,205, 30,225,235,116, 79, 95,183,110,221, 64,231, 89,132, 94,138, 97,210,167, 79, 31, 77,233,210,165, 9, 0,
-252,185,234, 35,209, 90, 70,186,116,233,162, 46, 93, 58,127,124,253,239, 95,122,191,215,117,176,150, 2, 89, 55,129,172, 91, 15,
- 88,174,186,116,233,162,138,137,137, 41, 86, 94,180, 15,108, 47,116,237, 45, 29,203, 1,137, 39,189,226, 26, 80,135,216, 62,106,
- 6,118,118, 7, 6, 74,159, 32,115,131, 15,182, 31,149, 68,150, 4, 9, 94,161,128, 22,121, 38, 4,150,221, 20, 87, 32,115,115,
- 54,235, 3,226,138,231, 5,168,121, 3,230,206,157,139,119,222,121, 7, 0, 20,163, 71,143,254,113,202,148, 41, 47, 9,130, 80,
-139, 82,218,148, 16, 82, 84, 43,113, 79, 68, 68, 68, 18,165, 84,206, 48, 76,211, 47,191,252, 50,176, 67,135, 14,240,245,245, 5,
- 21,232, 3,226,138,231, 5,216,204,150,124,197,231, 6, 1,122,205,148,109, 27, 70, 5,180,234, 54,179, 53,111,195, 78, 81, 92,
-241,182,191,135,197,167, 37,197, 99,199,182,205, 88,178,120,105, 6, 8,189, 8, 10,129, 97,152,211,133,185, 81, 16,132, 90, 7,
-254,188,208,180, 73,253,106,152,178,108,153,234,220,137,251, 63, 14,127,247,163,216, 94,175,244,199,250, 53,171, 32,179,102,156,
-100,153,176,191,197, 21,207, 35, 37, 39,187,203, 31, 63,127, 32,141,193,250,135, 96,179,217,144,145,145, 1, 91,110, 6, 87, 47,
-194,144,245,105,175, 80,115, 82,134,137,149, 11,121, 92, 85,125,178,121,119,250, 45,153, 86,171,125, 38,252,154,157,157,189,106,
-200,144, 33,205,247,237,219,167, 96, 24, 6,217,217,217,104,217,178,101,106,138, 16,165,126,107,240,240,224,132,132,123,156, 94,
-195,154, 21, 10, 57,146,147,147,133,230, 29,251, 26, 95, 25, 56, 42,242,157, 15,167,125,149,112,104,241, 34,111,190,225, 60,179,
-207,245,222,215, 95,127,109,137,138,138, 50,169, 84, 42,229,128, 1, 3,188,234, 39,180, 88, 44,116,198,140, 25,102,215,217,130,
- 22,139,133,206,157, 59,215, 18, 29, 29,109,214,104, 52,212,102,243, 60,236,128, 97, 8,247,230,148, 31, 56,142,227, 10, 88,173,
- 68,113,101, 19, 72,238,130, 5, 11,172,209,209,209, 22,173, 86, 75, 85, 42,149,194, 27,119, 14, 31, 62,156, 6, 4, 4, 88,117,
- 58,157, 98,236,216,177,143, 52,139,208,198,131,157,242,165, 99,153, 6,149,175,175, 47,114,114,114, 28,110,141,136,136,144, 68,
-150, 4, 9,238, 27, 27,123,159, 5,203,149,171, 5,171,160,200,160, 66,110, 82,114,106,168,127,100, 5,216,108, 28,120,206, 6,
-206,198,193,198,217, 48,230,245,238,136, 91,156,223, 19,102, 23, 89,109, 71,143, 30,253, 35,224,121,219,157,181,107,215, 78, 30,
- 61,122,180, 62, 41, 41,105,251,242,229,203, 3,251,245,235,135, 49, 99,198,224,243,207, 63, 7,171, 84,195, 47,188,140,227, 59,
-156,141, 3,111,227,144,156,150, 1, 74,105,174, 59, 62,113, 12, 22,165, 96,245,225,229,192,243,226,187, 54, 48,178,252,153,233,
- 59,182,109, 70,191,215, 71, 64,174,242, 11, 88, 56,119,166, 49,182, 94,196, 75, 19, 6, 13,242, 60,242,157,128, 57,119,226,254,
-143,195,223, 25,219, 86, 20, 87,155, 86,126,121,241,203, 81,109, 87,107,149,172,227, 59,188,205, 6,134,145, 73, 99,176,158, 32,
-130,131,131,105, 74, 74,202,173,204,204,204,202, 58,157, 14,105,105,105, 72, 79, 79, 71,102,102, 38,204,217, 25, 92, 16,159,105,
- 32, 92, 58, 88,150, 69,242, 93, 14, 60,207, 39, 62, 35,214, 43,220,191,127,255, 82,249,242,229,215,126,248,225,135,175,140, 27,
- 55, 78, 46, 8, 2, 46, 95,190, 12, 10, 80,185, 66, 9,134, 97, 32,151,179,200,202,202, 22,180, 62,254,247,173, 84,166,149, 43,
-148, 96,100,138,162, 22, 28,189,211, 98, 64,254, 50, 13, 12,171,200, 17,103,246, 41, 20, 10, 28, 89, 63, 43,187,197,128,201,122,
- 0, 80,168, 52, 25,237,218,181,187, 93,173, 90, 53,195,241,227,199,203,192,101, 22,161,155,252,201,117, 31, 48, 86,166,213,168,
- 13,109,219,182,189, 35,114,222,218,185, 48,187,255,208,143, 8,145, 41, 13,157, 59,119,190, 29, 27, 27,107,144,201,100,184,176,
-121,102,118,247, 1, 99,213, 36,127,130,174, 91,108,191, 74,223, 60,189,126,127,149,169, 83,167,218, 58,118,236,120, 87, 28, 15,
-118,235,214,173,200, 78,157, 58,169,230,204,153, 99,235,212,169, 83,124,141, 26, 53,114, 25,134,193,137, 19, 39,162,139,178, 76,
-137,208,104, 52,182, 55,222,120,227,206,217,179,103, 31,106, 22,161, 39,148, 42, 85, 10,130, 32,160,101,203,150, 48,153, 76,146,
- 37, 75,130,132,255, 0,220, 10, 44,171, 32, 12,127,245,131, 89, 11, 9,136,143, 0, 90, 96,150, 14,205, 47, 9,200,251,239,191,
-167, 3,160, 17, 69,214,187,239,190,155,225,233, 99, 78,226,170, 94,191,126,253, 48,126,252,120,124,241,197, 23,252,231,159,127,
- 46,187,112,253,174,181,231,232,207, 51, 93,190, 3, 74,105, 46,207, 99,184, 59,190,140, 44,195, 39, 77, 59, 77,255,236, 94, 82,
-222,129, 94,239,197, 21, 40,181, 50, 73,254, 98,134, 75, 22, 47, 49,200, 85,126,186, 94,175,244, 7,128,182, 11,231,206,252,113,
- 10,150,121, 22, 89,148, 84, 29,254,238,216, 0, 81, 92,125, 57,103,234,217, 0,146,180, 96,208,199,231, 31, 24, 53,239,231,131,
- 31,155,118,154,222, 62, 57,221, 48, 79, 74, 82, 79, 6, 22,139,101,215,252,249,243,203, 78,152, 48, 65,153,158,158,142,212,212,
- 84,100,100,100, 56,142,220,220, 92,132,135,135, 99,219,182,109,214,236,236,236, 35,207,146,223,111,220,184,241,229,150, 45, 91,
-176,119,239,222, 62,227,198,141,147,135,135,135, 19, 63,191, 68, 98,179, 90, 0, 80,154,146,146, 34,104,125,252,239, 7,135, 69,
-223, 73, 72, 76,174,106,179, 90, 32,240,214, 66, 71,145,219,151,105,120,255,220,185,115,101,103,205,154,101,113,158,217,247,202,
-216,133,243,235,214,173, 27,184, 96,193, 2, 75,231,206,157,111,139,131,210,189, 25,228,190,227, 58, 70,157, 59,119,166,186, 43,
-103,139,183,102,125, 35,114, 58,207, 46,236,242,222,210,111, 42, 86,172, 24, 24, 27, 27,123,187, 40,222,152,152, 24, 99, 68, 68,
-132,165, 74,149, 42,185,114,185, 60,223,114,101,179,229,197,196,196, 8, 97, 97, 97,150,106,213,170,229, 22,119, 48,190, 70,163,
-161,162, 21,204, 29,138, 51,139, 80, 46, 3,215,175, 95, 63,199, 74,238,239, 87,172,120,191,127,255,254, 17,163, 71,143,198, 55,
-223,124,131,131, 7, 15,166,187,190,211,188,121,115,236,219,183,239, 51, 0,159, 72,185, 91,130,132,103, 88, 96,125,247,221,170,
-223,225, 52,102,201, 29,166, 76,153,162,178, 91,174,218,190,243,206, 59, 48, 26,141, 1, 15,180, 96, 9,105, 35,174,149,225, 78,
- 92,205,156, 57,115, 53,165, 52, 26, 64, 19,142, 23,142,126,245,237,138,150, 30, 13, 75, 78,156,148, 48, 50,134, 33,185, 74, 57,
-253,107,241, 87,223, 21, 88,161,219, 62,168,189, 50, 8, 78, 47,156, 59,211, 8,160,173,171,200,234,217,179,103,158, 43,167,136,
-193, 67,222,118,136,171,133,115,103,238,140,173, 87,250,165, 9,131, 38,187, 21,101,147, 63,121, 91,199, 48,164,145,243, 24, 44,
-119,156,143, 10,137,243,111, 78,149, 74,181,122,205,154, 53, 29,155, 54,109, 90,166, 86,173, 90, 76,122,122, 58,114,115,115,145,
-155,155, 43, 90,185,112,225,194, 5,225,246,237,219,247, 84, 42,213,154,103,201,239,246,237,111,230, 71, 68, 68,236,154, 56,113,
- 98,255,212,212,212, 78, 25, 25,153, 65,191, 44,159,130, 23,123, 13, 33,205, 59,246, 53, 88, 40,171,142,191,159, 84,101,207,175,
- 63, 4,254,182,246, 75, 88, 45,150,183, 8, 89,114, 65, 92,166,193,141, 59,243,196,229, 24,170, 84,169, 98,112, 22, 40,165, 75,
-151, 54, 69, 70, 70,154, 99, 99, 99, 29,215,221,205,206,115,231,247,226,114,218,199,119, 25, 60,133,167, 40,214, 92,151,127,208,
-106,181, 16, 69, 87,113,220,233, 60,123,210,109, 65,233, 97, 22,161, 51,231,242,147, 84,238,124,111, 57, 33,178, 85,171, 86,181,
- 89,181,106, 85, 61, 0,127, 1,216, 1,192,102,127,207, 49, 24,158, 82,250, 41,128, 79,165,252, 46,113,254, 87, 57,255, 19, 2,
-203, 19,196, 1,237, 0,152,119,223,125, 55,195,104, 52, 6,244,239,223,191,200,119, 18, 19, 19,191, 89,177, 98, 69, 1,113,213,
-163, 71,143,215, 55,108,216,176, 43, 57, 57,249,161, 28, 31,160,215, 76,217,251,243, 7, 1,205, 59, 79,127, 7,192,231,238, 45,
- 81, 16, 98,235, 69,188,180,112,238,204, 31, 93, 68,214, 74, 0, 61,220,165, 27, 0,104,247, 98, 55,252,240,221, 2,113,236,150,
-230,236,241,123,191,245, 57, 57,201,237,236, 67,127, 31,213, 36,187, 59, 70, 67, 26,131,245, 68, 80,181,106, 85,254,208,161, 67,
-163,135, 12, 25, 50,187,117,235,214, 81,221,186,117, 83,148, 42, 85, 10, 42,149, 10,215,175, 95,199,254,253,251,173, 55,110,220,
-184,151,151,151, 55,186, 86,173, 90,252,179, 24, 6,247,239,223,191,100, 95, 68,116,148,216,173,164, 82,107, 20,125, 7,190, 19,
-237,152, 69,184,246, 75,152, 77, 70, 0, 96,189, 89,166,129,101, 89,197,169, 83,167,202,136, 86, 42,171,213,170, 18,175, 31, 63,
-126,188,140,184, 54,150,201,100,242,122, 22,225,227,226, 60,115,230, 76,180, 56,219, 81,156, 45,200,178,172,226,196,137, 19,209,
- 34,167,217,108,246,106, 22,161, 82,169, 84,156, 58,117, 42,154,231,249, 18,155, 69,232, 34,136,183,219, 15,177,114, 18,197, 21,
-177,119, 11, 74,221,131, 18, 36, 72, 2, 43,127, 32, 56,165,180,105, 49,148, 46, 91,182,108,217,118,175,188,242, 74, 1,113,213,
-179,103, 79,126,211,166, 77,123, 34, 34, 34,146, 24,134,185, 84, 92,119, 56,198, 96,229, 47,168, 94, 0, 12,195,156,110, 82,191,
- 26, 24,134, 57, 61, 97,208, 32,243, 20, 44, 43, 32,178, 54,255,184,174,125, 97,229, 33, 0, 4,133, 69,255,159,189,179, 14,143,
-226,106,163,248,185,235, 30,119, 66, 66, 32, 68, 72,112,119,105,208, 98,165,184,182, 20,107, 11, 45, 20,135, 98,197,138, 21, 47,
- 20, 40, 80, 28, 74,113,119,183,160, 9, 9, 16,226,238,182, 46,115,191, 63, 72,248, 66, 26,217, 13,180,165,116,126,207, 51,207,
-238,222,153, 57,115,199,207,190,215, 48,240,179,177, 24,248,217, 88, 91, 0,205,129,210, 91, 31,150,149, 15,150,191,142,102,205,
-154, 37,133,133,133, 13, 60,123,246,236,128, 43, 87,174, 4,169, 84,170, 42,132, 16, 72, 36,146,104,157, 78,119, 78, 36, 18,237,
-254, 80,205, 85,105,232,245,122,227,212,185,203,182,115,185,124, 19,195,232,137, 94,175,255,204,146,251,124,234,212,169, 28,148,
- 80,183,106,236,216,177, 37,166,255, 83,154,211,167, 79, 47,177,213,223,216,177, 99,203,108, 13, 88, 26,223,125,247,221, 59,107,
- 69,104,166,233, 98,141, 20, 11, 11,107,176,254, 12,135,195,121, 84, 66,107, 65, 2,128,150,212, 66,143, 82,106,228,114,185,115,
-109,108,108, 70, 41,149,202, 83,189,122,245, 26,223,187,119,111, 19,240,170,226,123, 69, 51,159,149,163,156,221,166,219,143, 19,
-178,243,181,107,138,207, 43, 30,105, 42, 52, 89,235, 86, 45, 89,255,199,129, 61,189,147, 19,227,215,151,182,111,165, 25,169,210,
- 90, 31,230,228,170,231,182,233,246,227,183, 89,185,106,182, 14,214, 63, 16,201, 2,176, 3,192,142,226,131, 61,255, 23,160,148,
-106, 9, 33,147, 8, 33,133, 17,220, 73,145, 23, 87,173,255,255,159,155, 53,143,138,206, 43, 35,122,149,100,206,192,205, 37,173,
- 87,214,188,191, 64, 51,165,140,129,155,203, 34,197, 66,189, 20, 0, 16,240,185,169,165, 13,234, 44,224,115, 83,223,209, 57, 36,
- 5, 77,211,231,178,119, 52, 11,203, 7,110,176, 10,205, 79,105,148,214,207, 85, 89,152, 76,166, 31, 1,252,248, 46, 51,255,228,
-121,222, 47, 0,126, 49,119,249,130, 58, 87, 67, 11,166,146,243,153, 17, 98,241,190,245,238,221,123, 3,128, 13,236,229,244,247,
-176,127,255,126, 19,123, 20,222,120, 65,175, 39,132,252, 90,104,184,204,157, 87,108,185, 35,127, 65,190,254, 10,205,211,127,167,
-222,177, 48,163,243,223,116, 14,217,136, 22, 11,203,127,193, 96,177,176,176,252,235, 76,150,182, 34,243, 88, 88, 88, 88, 88,254,
- 26, 8,128,160, 82, 30,202,102,183, 14, 32,132, 4, 85,224,133,112,142,213,100, 53, 89, 77, 86,147,213,100, 53, 89,205,255,150,
-102,121,218, 69,215, 39,132,140,164,148,254,130,127, 35,244, 85, 95, 83,127,201, 4, 32,136,213,100, 53, 89, 77, 86,147,213,100,
- 53, 89, 77, 86,179,130,219, 25,249,119,108,231,175,152, 56, 96, 97, 97, 97, 97, 97, 97, 97, 97,121,167,176,117,176,204,132, 84,
-238,249, 61, 64,167, 21,196, 44,151,208,216, 67,115,216,163, 82,193, 99, 73,136, 3,128,174, 10,177,160,123,128,141,160,233,147,
- 12,205, 13,165,222,116, 20,192, 97, 74,105, 22,123,132, 88, 88,254,134,251,208, 54,160, 50, 8,249, 28,160,255,111, 70,201,208,
- 80,154,253,116,235, 27,203,217,212,248, 12, 28, 18, 80, 36, 73, 13,138, 77, 52, 43, 52,174,148,251,187,176,194,190, 77, 68, 68,
-132,167,183,183,119, 12,128,236, 98,139,253,105, 30,165,148,150,241,204, 32, 14, 85,235, 13,145,138,165, 95,234,116, 58, 47,185,
- 66,145,154,153,145,182, 33, 51,246,241,186, 34,139, 89,221,190,125,219,181,113,227,198,137, 0,242,202,211,100, 97,121,239, 13,
- 22,241,249,212, 11, 70,206, 80, 80, 12, 2,193, 67, 26,185,255,211, 10,233,120,247,170, 4,134,215, 8, 64, 61,128,214,147, 73,
-196,117,213, 58,125, 42, 67,233, 16, 26,177,247,129,197,122, 85,251, 28, 7,208,165,148,185,115,105,228, 62, 11, 13, 18,157,126,
-247,202, 65,145,141,148,192,187,254, 39,147, 81,164,199,229,247,204,188, 72, 0, 12, 35,132,124, 36,149, 74,125, 84, 42, 85, 52,
-165,244, 49,128,245,148,210,196, 10,106,114, 0, 12,151,203,100,157, 60, 21,194,122,177,233, 57, 9,121, 6,211, 85, 0, 75, 45,
- 53, 68,132, 16,161,167,173,236,242,202,254,109,252,155, 6, 84, 7, 19,122, 5, 26,157,190,251,165,248,252,238,179,111, 38, 78,
- 32,132,212,163,148,234,204,212,114, 5,192,163,148,198, 21,252,150, 1, 8, 4, 80, 21, 64, 36,128, 16, 74,169,242, 45,143,231,
-191, 66,211,221,221,221,141, 97,152, 47,156,157,157, 63, 78, 73, 73, 57,206,225,112, 54,199,199,199, 39,254,195,151,227,198,194,
-250, 19,230,126, 2, 24,101,201, 6, 36, 18, 73,138, 70,163,113, 2, 0,177, 88,156,170, 86,171,255,178, 86,127,127,231,182,254,
-158,135, 5, 70,156,185, 22,210,169,104, 82,135, 22, 1,127, 94,142, 67, 2,206, 92, 11,109,245,230,114,129,166,146,158,129, 5,
-189,166, 98,238,220,185,100,222,188,121,159, 85,171, 86,173, 58,135,195,121, 54,107,214,172, 55,186,176, 41, 62,111,246,236,217,
-255,239,113,181, 4, 77,119,223,102,135,251,245,239,211,230,171,145,195,228,149, 28,229, 72, 74, 87,218,255,188,101,199,178, 29,
- 59,118,117,253,162, 95,251, 78, 0,240,195, 15, 63,244,172, 92,185,114, 21, 46,151, 27,245,253,247,223,255, 86,150, 38, 11,203,
-123,107,176, 72, 64, 31, 25, 52,180, 55, 64,134,181,110, 90,191,197,168, 33,221, 8,229,138, 49, 96,196, 20,163,197, 90, 85, 62,
- 19,129,171,158, 95, 43, 48, 96,124,159,110, 65,156, 6,129, 85,224,234,104, 13,112,248,216,120, 34,218,126,205,146,239,215, 3,
-104, 92,129,108,118,121,121,115, 55,146,178, 77, 32, 4, 32, 4,224, 16, 32, 95,195,160, 67,207,161,179, 45, 55, 72,132, 99, 35,
- 37, 24,191, 91, 3,128,112,223, 83,115, 85,207,209,209,113,221,184,113,227,108,107,213,170,229, 42, 22,139,165,106,181,186,122,
- 68, 68,132,215,204,153, 51,219, 19, 66, 22, 83, 74, 15, 90,168,233,225,237,238,182,111,205,248,225,141,106, 87,245, 4, 95,151,
- 15, 70,171,172,252, 60,226, 69,211,209,235,247,143, 32,132,244,183,112,184,132, 25, 27,199, 14,241,175,169, 0,244, 33,215,193,
-231,114, 33,181,182, 69,123, 30, 23, 92,130, 26, 67, 79, 71, 79,135, 25,227,177, 21,244, 96, 62,189,224,249,187,139,203,229,158,
- 13, 10, 10,242,250,226,139, 47, 72,253,250,245, 17, 28, 28, 92,117,247,238,221, 65, 60, 30, 47,202,100, 50, 61, 6,240,140, 82,
-106, 48,115,159,249, 0,124,185, 92,110,173,247, 89,211,205,205, 77,162,211,233,134,186,187,187,143,236,222,189,123,173,110,221,
-186, 17, 95, 95, 95,132,135,135,215, 63,121,242,228,236, 58,117,234, 60,142,143,143,255, 69, 40, 20,110, 79, 76, 76, 84,155,163,
-217,175, 38, 9,223,251,132,250, 85,116,126,177,125, 30, 9,192,173, 32,160, 49,215,140,207, 68, 0,115, 41,165, 73,230, 94, 76,
- 26,141,198,169,240,253, 73, 8,113,250, 43,239, 47, 75,182, 69, 8,121, 74, 8,177, 43,248,142,178, 62, 57, 28, 14,140, 70,163,
-210,104, 52, 86, 43, 71,211, 23,176,168, 90, 7,165,148,150,213,129,179, 4, 0, 58, 52, 15,200, 4, 65,104, 97, 4,235, 79, 75,
- 49, 52,244,181,241,162, 8, 56,115, 61,212,238,141,168, 87, 49,230,206,157, 75,102,207,158,141, 57,115,230,116, 3,208,146, 97,
-152,171,254,254,254,171,223,144,100,152,215,243,102,207,158,189,106,238,220,185, 4,111,140,122,251,127,236,170,212, 25,252,201,
- 39, 61,218, 44,152, 49, 86,158,144,161,199,195, 40, 53,236,228, 2,204,158, 52, 70,168,213, 26,154,174,255,109,199,200,181,139,
-167,108, 50,153, 76,237, 0, 52, 48,153, 76,247, 0,252, 86,150, 38, 11,203,123,101,176, 8, 33, 4,213, 62,109, 5, 19,134,121,
- 86,118,238, 61,238,139,190,146, 64,127,111,104, 32, 71,116,186, 9, 39,142,157, 4,128,189,150, 69,153,250, 53,224, 9,176,125,
-201,156, 73,126, 45, 27, 5,226, 73,130, 1,247, 18, 76, 80, 69, 25,192,229, 24, 96, 98, 40, 64,161,169,232,206,197,103, 25,113,
-237,153, 14, 28, 2,112, 57, 0,135, 67,192,173,104,173, 51,147,238,249, 15, 91,131, 3,211, 83, 24,192,164,123,254, 30,154,171,
-118, 62, 62, 62, 43,231,205,155,231,146,146,146, 98,119,239,222, 61,136, 68, 34,216,218,218,242,220,220,220,252, 86,174, 92,153,
- 51,118,236,216, 73,132,144, 7,148,210,104, 51, 53,253,187, 52,168,117,227,151, 37, 63, 88, 27,110,159, 68,246,158,223,193,229,
- 80, 8,100,114,120, 73, 36, 56,249,137,183, 93,239, 99, 81, 7, 9, 33,254,148,210, 4,115, 52,189, 93,236, 59,212,242,247, 71,
-214, 31,107,241, 48, 75,131,147,137,106,124,222,190, 9,106,218, 73,208,210,104,130,139,140,223,174, 60,131, 69, 8,177, 5, 48,
- 69,167,211,113, 4, 2, 1, 17,139,197,131, 23, 44, 88,160, 31, 48, 96, 64,124,225, 50, 45, 91,182, 68,203,150, 45, 73, 94, 94,
- 94,213,139, 23, 47, 86,221,177, 99,135,145, 16,242,148, 82,122,184,244, 8,133, 52, 86,163, 81, 87, 22, 75, 36,170,159,215,175,
- 95,222,170, 85, 43, 70, 36,250,255,232, 45, 21,209, 4, 0, 27, 27,155, 77, 62, 62, 62,100,218,180,105,137,239, 74,211,203,203,
-235, 76,203,150, 45,219,118,232,208,129,215,188,121,115,184,185,185,189,158,231,224,224,128,150, 45, 91,146,184,184,184,218, 87,
-175, 94, 93,127,230,204,153,213, 94, 94, 94, 23,163,162,162, 58,148,251, 70, 46,103, 12,210,242,230, 23,123,187,255, 82, 48, 28,
-140,185,134,233,151, 18, 58, 48,254,119, 6,135, 8,145,111,220,184,209,169,112,204, 68,131,193, 0,147,201,244,250,179,112, 98,
- 24, 6, 38,147, 9, 11, 22, 44, 48,153,121, 76,149, 40,232,212,185,200,196,148,244, 41, 20, 10, 29,204,140,100,133,186,138,178,
-107,200,100, 50, 79, 0, 93,124,124,124,166, 20,157, 93,221,241,213,167, 82,169,140, 73,210,218,132, 2,104, 85,214,229, 62,111,
-222,188,161,115,230,204,233,129,255,143, 41, 89,171, 79,159, 62, 23,139, 45, 87,171,224, 83, 73, 8,185,196,225,112,142, 2,216,
- 10,224, 79, 17,113,169, 84, 62,106,220,151, 95,200,227,211,245,152,127, 48, 29, 91,175,228, 98,104, 75, 5,198,119,182,198,192,
- 1,253,100,251,127, 63, 48, 10,192,166, 34,171,132,251,251,251,147,176,176, 48,214, 92,125, 88, 52, 4,224, 88,228,183, 14, 64,
-225,208, 86,233, 5,247,133,125,177,244,162,203, 21,126,166, 21,164, 59, 22,172, 71,139,232,166, 1,184,251, 78, 13, 86,225, 24,
- 88,101,142,133,229,213,251,196,240, 1,221, 59,125,252, 81, 51,112,196,182,120,158, 10,220,140,165,224,113, 12,224,128,226,246,
-245,139, 20, 60,102,123,177,135, 65,169,145, 13,226,213,251,187, 90, 53, 3,127,220,188,228, 27,238,211, 84, 30,182, 94, 85, 65,
-175,201, 71, 90,114, 44, 82, 19, 99,144, 20, 31,137,132,216,200,199, 0,153,109,174,230,159, 31, 70,128,137, 41,248,207,199, 20,
-188, 30, 64, 74,122,104,149,175,105, 80,134, 85,243,171, 25,152, 37, 52, 1, 6,101,152, 25, 15,194,119, 62, 8,102,105,154,132,
-144,246,222,222,222, 75,103,204,152,225, 30, 18, 18, 98,165, 84, 42,149, 39, 79,158,188, 28, 19, 19,227,236,226,226, 18, 55,102,
-204,152,102,149, 42, 85,114,234,217,179,167,116,223,190,125, 51, 0,124, 97,134,102, 96,247, 38,117,111,110, 89,253,147, 44, 99,
-255, 26,232, 34, 30,225, 68,146, 18,215, 83, 84,180,170,181,136,124, 93,219, 17,114, 17, 15, 63, 52,119,147,119,249, 35,226, 71,
- 0, 3,205,217,247,128,202,174,213, 12,106, 21, 52,106, 3,182,135,103,170,207, 38, 40,157,136, 77,116,218,234,222, 77,196,220,
-180, 68,120, 42,132,213, 43,114, 60,197,226,146, 71, 57,177,181,181, 69,235,214,173,225,239,239,207,107,213,170, 85, 45, 0,135,
- 75,211,212,235,117,174, 12, 67,161, 80, 40, 36,246,246,246,182, 10,133, 34, 67,175,215,191,149, 38, 0,216,217,217,125,218,186,
-117,107,222,238,221,187,211,163,162,162,110, 15, 24, 48, 32,210,202,202,234,141,104,175, 76, 38, 67,245,234,213,241,253,247,223,
-243, 58,117,234, 84,174,166,179,179,115,251, 29, 59,118,128, 16,242,250,101, 93, 28, 79, 79, 79,184,184,184,160, 75,151, 46,188,
- 79, 63,253,180,125, 89,199,179, 95, 77, 18, 94,104,158,250,214, 36,101,190,152,250,214, 36,148, 0,207,138, 71,178,138,107, 22,
- 68,176,230,190,105, 98, 75, 47,102, 43,105,121, 51,206,123,106, 97, 52, 73, 44, 22,167,190,205,125, 84, 64,169,197,154, 34,145,
-232,117,212,169,248,182, 74,210,228,112, 56,152, 57,115, 38, 8, 33,224,243,249, 16, 8, 4, 37,126,182,105,211,198,210,124,198,
- 17, 66, 56, 2,129, 96, 10,143,199,251, 66,171,213,186,139,197,226, 68,147,201,180, 77,171,213, 46, 40,136,128,218,148,116,237,
-150,166, 41,147,201, 60,159, 63,127,238, 83,218, 65,209,106,181,168, 85,171, 22,160,197,211,178, 52, 35, 34, 34, 60,171, 85,171,
-230, 11,160,112, 40,181, 43,148,210, 86, 69,126, 23,229, 10,165,180,115,193,247,103, 47, 95,190,244, 44, 52, 88, 69, 53, 13,122,
-189,151,187,147, 21, 30, 70,171,177,245, 74, 46,206,207,112,195, 71, 11, 18,209,171, 30, 15,254, 30,114, 24,245, 6,223, 62,125,
-250,108,199,171,235,247, 46,128,158,125,250,244,241,227,114,185, 23, 0, 28, 2,144,243,119, 63,147, 89,205, 10,255, 49, 41,203,
-139, 56, 18, 66,142, 21,217,126,215,194,223, 83,167, 78,157,190,104,209,162, 16, 66,200,177,162,233, 69,151, 43,250, 89,176,173,
- 99,148,210,174,211,166, 77, 11, 92,188,120,241,194,194,101,255,145, 8, 22, 0,171, 52,141, 12, 87, 99,173,192,227,154,192,227,
- 16,240,184, 0, 40, 65, 76,116, 4,242,114,179,175,209,200,223,163,204,139, 92,245,105, 94,167,110,173, 37,187, 86, 78,230,252,
-122, 85,133,108,165, 6, 97, 15, 46,225,238,165, 67,201, 38,163,233, 16, 8,189, 7,112,130, 17,201,132, 83, 90,241, 94,187, 95,
- 25,172, 2, 83,245,134,201,250,112, 32,132,116,246,243,243, 91, 52,115,230, 76,207, 7, 15, 30, 40,114,115,115,211,118,238,220,
- 25,174,213,106, 31, 0, 88, 21, 27, 27,219,122,213,170, 85,210,101,203,150,117,168, 85,171,150,239,254,253,251, 85,102,104,214,
-158, 52,108,224,205, 47,198,125, 43,126,186,111, 29,132, 79,131, 49,243, 81,186,233,124,146,106, 6,128,149,136,203,111,158,166,
- 49,158,253,169,117,101, 78, 21,133, 0,222, 54,194, 54,230,230, 87, 44, 20,241, 40, 79, 12,157,206,136, 60, 29,163,163,148, 42,
-123, 55,242,215, 83,153,131, 24, 0,120, 28,194, 51,227,198,206, 34,132,252, 40, 20, 10,103, 18, 66,104,195,134, 13, 31,214,172,
- 89, 51,223,214,214, 22,106,181, 26, 90,173, 22, 2,129, 0,106,181, 26, 49, 49, 49,184,125,251, 54,108,109,109, 45, 58,174,249,
-249,249, 80, 40, 20, 96, 24,230,173, 53, 77, 38, 19,217,176, 97,131, 44, 36, 36, 68,118,224,192, 1,231,241,227,199,103,212,168,
- 81,227, 94,191,126,253, 94, 56, 57, 57,105, 31, 61,122,132, 27, 55,110, 32, 43, 43, 11, 77,154, 52, 49, 75, 83,167,211,129,199,
-227, 65,173, 86, 67, 36, 18,129,199,227,193,104, 52,130, 97,152,215,166, 43, 63, 63, 31,153,153,153, 16, 8, 4,208,233,202,174,
-214, 86,104,150,250,214, 36,116,223,169, 27,169, 48, 49,128, 62,215, 0,109,206,171, 73,151, 99,128, 38,219,208,119,194,242,218,
-251,158,152,215,235,120, 97, 4,171, 40,101, 21,179,149,180,124,121,188,235,122, 80,101, 21,107,102,103,103, 75,108,108,108,166,
-152, 19,145, 35,132,128,203,229, 66, 32, 16,128, 16,130, 86,173, 90, 97,248,240,225,168, 87,175, 30, 34, 34, 34,176,103,207, 30,
-220,189,123, 23,124, 62,255,245,242,230,210,166, 77, 27,174, 88, 44,190,209,189,123,247,192, 25, 51,102,136,171, 84,169,130,167,
- 79,159,122, 44, 94,188,120,202,185,115,231,122, 16, 66, 26, 80, 74,153,114,133, 10,139,254, 94, 21, 11,118,209,106,181,120,250,
-244,169, 37,235,252, 57, 66,237,237, 29,195,225,112, 94, 48, 12,115, 21, 64, 45, 74,105, 43, 66,200, 73, 0,178, 98,139, 42, 41,
-165,157, 9, 33,185, 0, 30,115, 56,156,103, 12,195,196,148, 84, 93, 74,161, 80,164,197,167,230, 58,219,203,197, 24,210, 66,142,
-143, 22, 36,162,119, 3, 17, 68, 2,130,240,168,100,120, 87,171, 66, 30, 94, 59,220,160,192, 92, 53, 76, 74, 74, 2,128, 6, 0,
-162,226,226,226, 92, 11, 13, 22,203,135, 65,113, 19, 84,104,156, 22, 45, 90,212,181, 36, 83, 85,194,189,249, 70,250,226,197,139,
- 23, 22,249,253, 78, 27, 89,241,138, 58,199,178,111, 44,244, 58,118,112,247,173,143,244,196, 51,176,126,139, 34,209, 32,138,224,
-219, 55, 0,208,109,102, 61,192,220,186, 73, 56, 82,217,182, 13, 11,199,114, 54, 94, 82, 33, 46, 49, 21, 55, 78,108, 67, 90, 82,
-244, 86,128,142,167,145,251,115,223,250, 33, 89,181, 79,160,147,131, 61, 52,122, 10,134, 2,248,147,201,250, 96,204, 85, 55, 95,
- 95,223,121, 55,111,222,244,212,104, 52,138,235,215,175,103,239,216,177,227,133, 78,167,219, 76, 41,221, 89,176,204,145,244,244,
-244, 31, 40,165, 80, 40, 20, 60, 62,159, 47, 41,171,226, 39, 33,164,222,164, 47,134, 94,251,113,195, 22,241,139, 39, 15,177,234,
-192, 9,100,171, 84,166, 75,169,234,158,148,210,194,127, 5, 23,188,109, 68, 9, 20,180, 50,159, 67,224, 42,227,187, 16, 66,196,
-148,210,114,139,115, 93, 43,123,114, 12, 30, 94,184,106,212,160,146,189, 72, 8, 0, 85,125, 3,184, 15,212, 6, 92,127,244, 20,
- 14,114, 43,129,153, 55,217, 44, 66,136,243,246,237,219, 57, 6,131, 33, 63, 34, 34, 2, 46, 46, 46,112,118,118,134,181,181, 53,
-194,194,194,112,254,252,121,132,135,135,131, 97, 24,212,169, 83,199,162, 99,155,145,145,129, 71,143, 30,161, 75,151,143,199,167,
-165,165, 90,217,218,217, 43,175, 93,189,178,172, 34,154, 12,195, 16, 0, 8, 12, 12, 68, 96, 96,160, 56, 33, 33,193,253,216,177,
- 99, 78,243,231,207,143,245,244,244,220,165, 86,171,223,136, 20,152,107,176, 10, 12,203,107,243, 39, 22,139, 33, 16, 8,144,155,
-155,139,148,148, 20,228,229,229,189, 42,179,177,177, 41,215, 96,189,233, 8, 25, 96, 71,139,123,127, 74,175, 57,204,201,194,235,
-243, 79, 17,169,119,185,252, 95,244,240, 46,181, 88,147, 16, 50, 8,192, 20, 51,247, 5, 70,163, 17, 2,129, 0,141, 27, 55,198,
-154, 53,107,112,247,238, 93, 28, 58,116, 8, 30, 30, 30, 24, 54,108, 24, 56, 28, 14, 66, 66, 66, 44,205, 34,115,243,230,205, 41,
- 61,123,246, 12,220,190,125,187, 56, 38, 38, 6,225,225,225,176,177,177,193,154, 53,107, 68, 35, 71,142,244,190,120,241,226, 44,
- 0, 75,203,221,215, 34,173, 5,221,220,220,250,214,170, 85,235, 79,203,184,184,184, 88,159, 62,125,218,169,208,120, 21,111, 97,
- 88, 2,217,179,102,205,250,201,223,223,127,101, 65,177, 96, 75, 0, 50, 74,105,155, 3, 7, 14, 16, 0,232,221,187, 55, 37,132,
- 92, 42, 88,254,241,254,253,251,219,134,133,133,209, 57,115,230,148,248, 76, 74, 75, 77,218,240,211,154,141, 63,253, 56,119,146,
-112, 66, 23,107,244,110,192,135, 88, 64, 96, 37,229, 99,193,234, 77,134,251,183,175, 60,114,117,117, 61, 6,160,103, 82, 82, 18,
- 92, 93, 93,243, 1, 60,227,114,185, 81, 38,147, 41,145,173,227,254,175,123,175,149,212,208, 97,100,225, 61, 89,154,113,178,196,
-160, 21,141,112, 21, 50,109,218,180,192, 69,139, 22,221,121,151,251,194, 41,178,209,178,255, 66,241, 56,174, 46,206, 14,118, 83,
-135, 53, 7,195, 0, 70, 19, 96, 52, 81, 40, 85,106, 60,125,114, 87, 5, 49, 57, 96,214, 22, 69,194, 37,243,103,124, 91,245, 97,
- 60, 7,137, 89,122, 92, 62,188,145,166, 37, 69,127, 74, 35,247,125,254,174,204,149,139,147,195,165,221, 27,127,192,221, 72, 29,
- 76,204, 43,127,197, 48,244,245,247, 15,228, 34,172,238,224,224,176,236,214,173, 91, 85, 68, 34,145,226,249,243,231,166,253,251,
-247, 39,234,116,186,245,133,230,170,128, 65,245,235,215, 55,200,100, 50,228,231,231,107,245,122,125,126, 25,230,202,189, 77,189,
-218, 87,126,220,176, 69,172,209,233,144,163,214,130,107,239, 84,220, 92,129, 16,210,172,173, 79,165, 74, 68,172, 0, 5, 16,157,
-171, 79, 52,199, 92, 1,128,220,218,134,227,222,160, 13, 26,124,179, 6,185, 68, 65, 1,192,222,181, 18,167,237,151, 11,208,105,
-213,101, 40, 57, 10, 75, 44,112,226,192,129, 3,227, 3, 2, 2,114,252,253,253,115, 50, 50, 50, 16, 26, 26,138,172,172, 44,172,
- 90,181, 10, 79,159, 62, 5,195,188,146, 43,169,184,196, 12, 99,132,172,172, 76, 57,165, 20, 89,153, 25,178, 25, 51,102, 88, 87,
- 68,211,100, 50,189,113,111, 85,170, 84, 9, 99,198,140, 17,168, 84, 42,155,216,216, 88,171,162,243,204,213,212,233,116,133,157,
-240,129, 82, 10,157, 78,135,156,156, 28,232,116, 58,188,120,241,226,181,185, 42,216,190,101, 6, 75,159, 91,114, 37,123,117,134,
-193,194, 7,217,235,222,151, 37, 18, 73, 74,225,131, 83, 44, 22,131, 16, 82, 82, 49,219, 59,233,173,185,112, 91,132, 16, 42,145,
- 72, 82, 42, 96, 10,203,221, 31, 51,207, 59, 4, 2, 1,134, 15, 31,142, 59,119,238, 32, 34, 34, 2, 92, 46, 23, 74,165, 18, 42,
-149, 10,237,219,183,135, 80, 40,180, 52,130, 69, 5, 2,193,160,233,211,167,139,163,162,162,144,158,158, 94, 88, 73, 30, 38,147,
- 9,227,199,143,151,136, 68,162, 65,150,134,234, 19, 19, 19, 59, 62,127,254,220,183,248,148,156,156,156, 83,180,206, 96, 69, 57,
-112,224, 0,233,221,187, 55,237,221,187, 55, 45, 52, 90,230,146, 29, 31,186,225,208,145, 99,103,191,251,126, 73,190, 74,153,135,
-106,110, 18,228,231,229, 96,193,162, 31, 13, 55,111, 94,189, 52,101,252,232,166,251,247,239, 95, 12,224, 89,193, 42,207,246,239,
-223, 63,244,251,239,191,255, 13, 5,221, 53,176,252,171, 34, 84,164,172,123,239, 93, 20,227,149,164, 81, 80, 76, 40,249, 75, 34,
- 88,101, 62,116,188,251,213,117,118,176,191,184,125,237, 92,249,177, 39, 64,124, 92, 52,210,146, 98,208,160,105, 27, 60,125,242,
- 16,140,193,116,144, 62,223, 95,110, 51,115,226,213,199,199,191, 70,192,151,173,155,214,196,146, 99,249,120, 30,124, 26,217,105,
- 73,107,105,212,190,131,239, 98,103, 72,213, 62,129,206,142, 14,151,126, 91, 55,207,238,100, 40, 7,113,113,209, 56,252,219, 74,
- 24,244,127,122,247,159,176,248,161,205,232,132,249,217, 41,208,229,153, 32,230,168,196,239,193, 69,248,194,209,209,113,251, 79,
- 63,253, 52,186,105,211,166,210, 1, 3, 6, 60,207,202,202,154, 79, 41,221, 87,228,101,209,206,215,215,119,226,218,181,107,189,
-227,226,226,112,254,252,249,231, 0,238,149,161, 25,207,229,114,215,159,255,109,211, 36, 73, 85, 63,172,154,254,157,241,192,221,
-208,238,148,210,147, 69, 52,253,131,106,249, 28,155, 63,241, 43, 14,115,255, 20, 30,197,164, 32, 50, 71,123,222,220,124, 71,100,
- 43, 13,124,145, 4,114,151, 42,120,158,111, 18,240,120,188, 59, 95,124, 49, 92,192,225,242,192,225, 9, 16,154,165,177,228, 37,
- 46,191,115,231, 14,135,203,229,190, 97,204,139, 70,132, 44,141, 12, 89,130,185,154,197, 13, 86, 33, 70,163,145, 84, 84, 83,171,
-213,162, 36,159, 92, 82, 93, 44,134, 97, 44,219,127, 93, 78,201, 46, 79, 99,153,193, 42, 26,145, 42, 90, 52, 88, 88, 95, 78,163,
-209, 56, 73, 36,146,148,194, 98,190,119, 21,193,122,155,150,133,101, 21, 83, 90,146, 63, 14,135, 3,134, 97, 32, 16, 8, 80,167,
- 78, 29, 28, 59,118, 12,118,118,118,176,178,178,130,149,149, 21, 36, 18, 9,236,237,237, 95, 27, 44, 14,199,236,214, 55, 84,171,
-213,122,120,120,120,224,197,139, 23, 16,139,197,175, 39,145, 72,132,192,192, 64, 40,149,202, 74,248,160, 98,245,192,136,126, 65,
- 61,214,237,248, 99,200,177, 99,199,191,212,107, 53, 53,253,252,124,233,189,155, 23, 31, 77, 25, 63,186, 19,107, 73,254,115, 17,
-174, 99, 69, 77, 18, 33,228,216,212,169, 83,167, 87, 84,111,234,212,169,211, 75,138,104,189, 51,131, 85,232, 24, 75,114,142,133,
-230,106,235,154, 57, 86,127, 60, 0,226,227,163,112,118,223,234, 60,131, 94,151,197, 48, 6,207,200,240,135, 0, 7,219,204,139,
-151,209, 70, 61,186,180, 37,103, 67,116,200,205, 78,195,179,123,167,163,161, 22, 78,123,151,230,106,251,186,185,118, 71,159, 16,
-196,197, 69,227,228,158,149, 57, 6,163,190, 29,141,220,255,224,109,180, 7, 11,133, 61,250,213,176,233, 58,188, 69, 34, 76, 45,
- 77, 24,244, 52,172,179, 91, 75,210, 35,241,106,217, 45,189,254,106,210,210,210, 22,200,229,114,206,210,165, 75, 63,215,104, 52,
-115, 40,165, 7,138, 92,132,237,171, 85,171,182,100,195,134, 13,238,177,177,177,194,107,215,174,101, 94,186,116,137, 2, 88, 84,
-142, 25,152, 76, 8,225,214,171, 82,105,236,253,232,132,238,148,210, 83, 69, 52, 3,187,214, 15,184,190,101,209, 44,133,225,250,
- 1,228, 39,197, 97,218,245,248, 92, 0,211,204,188, 49,236, 28, 28, 28,200,224,193,131,153,188,188, 60, 8,132, 66,198, 96, 48,
-112,155, 53,107,102,250,246,219,111, 57,201,201,201,200,205,203,231, 17, 66,236, 40,165,153,229,104,205, 3, 48,190, 89,179,102,
-164,113,227,198,183, 87,174, 92,121,166, 44,147, 82,145, 8, 86,185,129, 30, 51, 53, 25,134, 41,241,237,105, 48, 24, 72, 69, 53,
-139, 70,176,202, 51, 88, 22, 71,176,180,165, 69,176,210, 44,142, 96,149,100, 86,138,154,195,162, 6,168, 34,117,176,254,130,135,
-119,169, 38,202,146,252, 21,214,131, 19, 8, 4,120,248,240, 33, 42, 87,174, 12,189, 94, 15,133, 66, 1,133, 66, 1,185, 92,142,
-188,188, 60,240,249,124, 88,184,207,140, 88, 44,142, 13, 13, 13,245,117,116,116,132,201,100,122,195,100, 61,127,254, 28, 50,153,
- 44,193,210, 8,150,155,155,219,233,130, 86,132,111,224,226,226, 98,253, 46,142,107,209,200, 85,239,222,189, 43, 84,142,176,110,
-209,164, 29, 0,118,244,233,211,103,251,227,155,199, 27,184,186,186, 30,247,247,247, 39, 0,192,182, 24,252,176,162, 87,165,148,
-168,165, 21,139, 60,233,138,252, 78, 3, 64, 10,126,167, 21, 49, 96, 69,191,235, 74, 72,203, 88,180,104,209,197, 34,245,183,210,
-254,182, 8, 22,241,238, 87,215,201,222,238,226,230, 85,115,172,246, 5, 3, 9,113, 81,184,124,112, 77,142,209,164,111, 7,134,
- 38,221, 60,119,240, 0, 8, 84,136, 60,112, 25,216,103,198,163, 1,245,234,213,240,196,161, 16, 3,210,226,159,131, 82,102, 43,
- 77,249, 77,245,214, 15,197, 2,115,181,117,205, 28,187, 63, 30, 18,196,199, 69,225,236,190,213, 57, 70,147,190, 93, 69, 58, 41,
- 45,228, 11, 66,108, 57, 10,233,207, 67, 58, 54,234,227, 89,181, 18, 24,106, 0, 35,160,232, 53,217,129,247,236,190,234,144, 71,
- 7,238, 62, 38,159,249, 50,254,230, 63,215,251,120,126,126,254, 15,132,144, 63, 40,165, 79,139, 60,220, 59,123,123,123, 47,252,
-249,231,159,171, 36, 36, 36, 40,238,223,191,159,251,203, 47,191, 68, 49, 12, 51,143, 82,154,106,198, 69,254, 29, 33,100,115,209,
- 62,116, 8, 33,181, 39,125, 62,240,230,192,207,190, 16, 71,157,219, 1,219,168,167,152,120, 61,209,244, 44, 75, 55,128, 82,154,
-108,142,185, 18,137, 68, 7, 78,156, 56,241,162, 94,189,122, 68,169, 84,194, 96, 48, 32, 61, 61, 29,127,252,241, 71, 40,165, 20,
-182,182,182, 56,113,226, 4, 51,112,224,192, 3,132,144,222,165,153,172, 34,221, 52,144,130,110, 26,154,156, 58,117, 42,172, 83,
-167, 78,241, 37,153, 20,145, 72, 4,141,198,178,222, 62, 74,107,149, 88, 17,205,210, 34, 88,197,211, 45,209, 44, 44,166, 44,172,
-220, 94, 60,189, 16, 46,151, 11,134, 97,254,148, 94,182,193,202, 46,217, 72, 41, 83, 43, 28,193, 42,218,218,175, 34,230,166, 40,
-229,117,248, 89,145,150,133,239, 58,130, 85,120, 46, 4, 2, 1,142, 28, 57,130,207, 62,251, 12, 38,147, 9, 82,169, 20,114,185,
- 28, 50,153, 12, 7, 15, 30, 68, 97, 55, 14,150,100,209, 96, 48,236, 92,180,104,209,244, 13, 27, 54, 72, 40,165, 16, 10,133,175,
- 13,214,156, 57,115,212,122,189,126,167, 57, 6,235,117, 15,237, 12, 13,173,238, 88,118, 43,194,146,214, 41,165, 62,150,205,188,
-121,243,134, 50, 12,211, 3,197,186, 98, 40,126, 53, 21,124,214,234,211,167,207,197,178,186,105, 0, 96, 59,111,222,188, 17, 12,
-195, 20,246,130,250, 70,107,193, 34,203, 21,190, 75,124,251,244,233,179,189,120, 43, 66,150,127, 61,119,255,109, 25,230,149,110,
-174,250,248, 59,217, 59, 92,220,180,114,142,213,174, 59, 64, 98, 92, 36,110, 28, 89,155, 99, 98, 12, 69, 77, 75, 11, 11,255, 30,
-214,115,115,178, 65,230, 45, 53,114,211, 99, 1,138,251,111,111,174,250, 85,119,114,176,191,180,101,245, 28,187,253, 15, 56, 72,
-136,141,194,165, 2, 19,248, 54,230,106,176, 80,216, 35,208,199,125, 75,255,206, 45,108,173,137, 1,198,152, 48,108, 30,214, 23,
-193,221,244,104,222,207, 26,141,186, 40,224, 93, 87,220,247,196,166,204,143,220, 90,146, 47,254,201,104, 86, 49,115,213,173, 74,
-149, 42,115,111,223,190,237,201, 48,140,226,242,229,203,121, 27, 54,108,136,212,104, 52,171, 41,165,199, 45,208, 44,106,174,234,
- 77, 29, 57,236,218,194,159, 55,139, 67,131,239, 98,201,206,163, 80, 27,116,166,211,241,249,125,138, 22, 31,150,133, 80, 40,252,
-225,194,133, 11,178, 90,181,106,145,140,140,140,215,145, 22,189, 94,143,156,156, 28,228,229,229, 65,171,213,162,126,253,250,156,
-213,171, 87,203,198,142, 29,251, 3,128, 47,205,205,175, 66,161,128, 64, 32,128, 94,175,127, 29,193, 18,137, 68,176,182,182, 70,
- 70, 70, 6,246,238,221, 11, 0,101, 70,197, 4, 2, 97, 18,135, 67, 42, 75,164, 82,173, 88, 44,102, 92, 93, 93, 75, 52, 86,150,
-104, 22, 16,223,185,115,103,247,121,243,230,137,235,215,175,255,167, 8, 86, 69, 52, 41,165,170, 14, 29, 58, 72, 87,175, 94, 13,
- 79, 79, 79,232,116,186, 55,140, 20,135,195,129, 64, 32, 64, 92, 92, 28,230,207,159, 15, 74,169,249,127,100, 52, 89, 6,212, 26,
-234, 8,117,134,225,213,148,110,128, 42,213, 0,189,202,100,225,117,249,218,172, 20, 53, 65, 5,117,164,254,100,128,204,141, 16,
-149, 87, 4,104,105,203,194,162,134, 77, 36, 18, 33, 59, 59, 91, 66, 8, 25, 84, 74,143,243,102, 71,176, 10, 13,214,211,167, 79,
-177,125,251,118,116,233,210, 5,182,182,182,200,202,202,194,190,125,251, 16, 22, 22, 6,161, 80, 8, 66,136, 37, 81, 44,166,113,
-227,198, 63, 94,189,122,181,219,128, 1, 3, 2, 38, 78,156, 40,169, 89,179, 38,158, 61,123,134,121,243,230,105,130,131,131, 35,
-212,106,245, 60,152,211, 33,105, 65, 15,237,133,157,136,154,213,138,176,216, 58,197, 41,165,155,134,206,165,168, 21,237,194,225,
-141,110, 26,138,114,227,198, 13,175, 42, 85,170,248,227, 85,203,192,194, 23,109,209,214,130,111,188,132,147,146,146, 26,130,109,
- 69,200,242, 62, 27, 44, 80, 50,126,192,176,145, 86, 59,239, 16,196,197, 68,224,222,137,245,197,205,149, 57, 15,153,160,162,125,
-101,136, 37,178,154, 12,121,213, 44, 57, 55, 61, 14,160, 92,139, 13, 86,113, 77, 80,230,187, 1, 67, 71,218,237,190, 71,144, 24,
-247, 18,215, 15,175,179,216, 92, 21,213, 28, 34, 20,206,226,243, 56, 51, 62,110, 85, 79,208,178,174, 47,164,169, 81, 72,142, 79,
-196,222,167,105,153, 17, 89,218, 47,174, 19, 61, 98, 94,106, 55,119, 25, 97,103,103,235,194, 71,215,209,246,118,183,142,230, 30,
-170,212,142,163,167,122,186, 40,241, 26,157, 83, 98, 62,223, 1,229,105, 18, 66,170, 91, 89, 89, 45, 13, 14, 14,118, 20,139,197,
- 86,247,238,221, 51,109,220,184, 49, 78,163,209, 44,163,148,238,169,160,166,123, 67,159,106,151, 23,174,219, 36,206, 87,170,160,
-212,233, 33,114,118, 53,253,113,243,201,167,165,117,134, 89, 92,147, 16,210,246,243,207, 63,175,221,184,113, 99, 78, 81,115,165,
-211,233,144,155,155,139,188,188, 60,228,230,230, 34, 55, 55, 23, 9, 9, 9,104,221,186, 53,167,118,237,218, 53, 9, 33,109, 41,
-165, 23,139,107, 22,233,166, 97, 58, 0, 14, 33,228,238,195,135, 15,243, 59,117,234, 4,137, 68, 2,165, 82, 9, 15, 15, 15, 24,
-141, 70,156, 56,113, 2,193,193,193, 74,134, 97, 46, 3,120, 88, 86, 62,213,106,149, 7, 33,132,163, 86,169,234, 12, 29, 58,180,
-245,132, 9, 19,222,104, 90,238,228,228, 4, 59, 59, 59,139, 52, 1, 32, 51, 51,179,198,169, 83,167,190,125,248,240,225,119, 93,
-186,116,177,158, 62,125,186,200,203,203, 11, 38,147,137, 83, 81,205,172,172, 44,235,251,247,239, 47,107,209,162,197, 87,157, 58,
-117,226, 45, 92,184, 16,214,214,214, 48,153, 76,144, 72, 36,200,205,205,197,188,121,243,112,237,218, 53, 35,165,116, 93, 78, 78,
-206,196,178, 52,223,232, 7,107,194,138, 50,155, 71,150,214, 15, 86, 9,231,189,196,136, 79,105, 6,168,164,229,255,142,251,168,
-152, 97,131,141,141,205, 20, 0, 83, 74,233,113,222,236,123,179,208, 96,113,185, 92, 68, 71, 71, 99,227,198,141,127,234, 7,171,
-176, 27,135,146,180, 75,217,119,122,233,210, 37, 19, 33,164,233,189,123,247,166, 12, 25, 50,228, 11,165, 82,233, 46,147,201, 18,
- 13, 6,195, 54,181, 90, 93,216, 15,150,192,146,251, 93,169, 84,198,148,212,138,176,248, 50,128, 77,153,154,197,186,105,120,163,
- 43,134, 98,171,189,209,133, 67,241,110, 26,138,106, 54,107,214, 44,138,195,225,132, 23, 20,181,135,163, 88,107,193, 34,154,190,
- 73, 73, 73, 13, 93, 93, 93, 47, 3,144, 22,111, 69,248, 79, 60,147, 89, 77,214, 96,149, 98,176, 32, 62,119, 59, 26, 66, 73, 38,
- 30,157,223,106,177,185, 42,177,228, 65,163,138,152,181, 59,182,174, 78,171,129, 50, 39,229, 25,141,218,147,250,246,103, 25,178,
-115,119, 99, 32,150,101,227,193,185, 95,179, 77, 38, 77, 59, 26,241,251,195,138,203, 97,234,250, 19,251, 5,196,218, 14,143,190,
-253, 12,137,217, 74,156,140,204,218, 71, 85,218, 47,119, 20,140,187,231,222,148, 92,221, 50, 35,121,125,203, 94,214,125, 29, 42,
-241,177, 98,210, 54,136,167,218, 11, 26,125,212,234, 31, 29,163,176,176,226,251,170, 85,171,198,180,108,217, 82,222,183,111,223,
-231,153,153,153,111, 84,124,175,128,102, 60, 33,228,231,227, 27,150, 79,178,175,213, 4,107,191,159,108,218,125,243,201, 27,173,
- 10,203, 67, 32, 16,180,153, 58,117,170, 64,169, 84,254,201, 92, 21, 55, 88,185,185,185,120,244,232, 17,134, 13, 27, 38,122,248,
-240, 97, 27, 0, 23, 75,201,215, 44, 66,200, 6,188, 26,139, 48,121,199,142, 29, 77, 15, 31, 62,220,116,252,248,241,130, 46, 93,
-186,224,214,173, 91, 56,123,246,172, 94,175,215,223, 4,112,211,220,225,103, 10,250, 15,186, 79, 8,121,178,100,201,146,166, 92,
- 46,119, 86,225,188,208,208, 80,108,221,186,181, 34,154, 70, 0,203, 8, 33, 63,239,216,177, 99,214,185,115,231, 62, 31, 58,116,
-168,149,193, 96,192,211,167, 79,241,235,175,191, 86, 84,243, 91, 71, 71,199,153, 39, 78,156,216,118,230,204,153,158,131, 7, 15,
-230,140, 27, 55, 14,107,214,172,193,239,191,255,206,152, 76,166,195,124, 62,127,104, 90, 90, 90,185, 13, 80,222,232, 7,171,140,
-126,174,202,155, 95, 66, 4, 43, 17,175,122,104, 55,119, 76,194,114,117,223,166, 8,208,204,124, 39,189,245, 99,169, 96, 63,218,
-180,105,243, 58,170, 72, 41,125,163,222, 92,161,177,178,180,136, 16,128, 77,193,117,186, 14,192, 26,188,217,139, 59, 23,255,239,
-233,221, 92,197,128, 36,173, 77, 40,180,120, 90,246, 96,207, 54, 0, 69, 64, 57,106,217,179,102,205,250,105,246,236,217, 63, 21,
-239,138,161,232, 66,197,187,112,152, 59,119, 46, 74,235,166, 1, 64,214,172, 89,179,126, 4, 0,127,127,127, 82, 80, 44,216, 0,
- 5,173, 5,139,104,110, 47, 72,151,206,153, 51,103, 8,128,178, 52, 89, 88,254, 65,131, 5, 58, 61,244,234,110, 3, 0,123, 16,
-206, 52,250,114,111,232, 91, 63,184, 24, 58,245,194,174, 57,107, 64,145, 69, 77,198, 41,239,100, 15, 24,238,140,208,171,187, 24,
-128,216,128,112,166,210,151,191,191,117, 62,137,181, 29,242,230,141,193,239, 33,137, 52, 89,105,248,100,135, 78,247, 70,164,166,
-160,206, 85, 63,183,150,100,175,173, 27,255,143,111,219,217,147,227,153, 67,222,139, 19,154,150,150,182, 80, 46,151,115,151, 45,
- 91,246,185, 90,173,126,163,226,251, 91,188,112, 38, 19, 66,184,141,170,123,142,189,243, 34,166,135,185,197,130, 69, 94, 36, 66,
- 55, 55,183, 39, 26,141, 6,132, 16,104,181,218,215,198, 42, 47, 47, 15, 57, 57, 57,175,127,235,245,122,164,165,165,193,195,195,
- 3,132, 16,129, 5, 47,194, 43,132,144,224,121,243,230,181,154, 55,111, 94,157,130, 40,208, 21,139,138,198,222,212, 54, 0,184,
- 34,145, 72, 19, 9, 33,238, 2,161, 72,121,227,198,141,115,111,169,169, 42,136,140,172, 88,177, 98,197, 2,153, 76,214, 48, 52,
- 52,244,252,219,104, 22,152,167, 79,237,237,237,221,182,111,223,190,127,203,150, 45, 77,120, 60,222, 45, 66, 72,159,236,236,108,
-139, 7,123, 38,111, 70, 4, 44,158, 95,140, 81, 48,111, 12,194,114, 35, 68,230, 68,192, 42,202, 95, 97,216, 76, 38, 83,254,204,
-153, 51, 83,139, 27,174,226,209,170,194,223,122,189, 94, 99,230,189,100, 73,171,200,114,204, 5,201, 7,128, 87, 99, 11,190, 26,
-254,198,220,193,158, 1,148, 58,182,229,236,217,179,233,220,185,115, 9,135,195, 57, 12,224, 25,135,195,121, 81,188, 18,122,209,
-121,115,231,206,197,236,217,179,233,156, 57,165,255, 55, 45,212, 12, 11, 11,163, 92, 46,247, 60,128, 40, 46,151, 27, 93, 84,183,
-104,122,225, 58,101,105,178,176,252, 99, 6,139, 70,238,143, 3,240,217, 59,253,103, 24,181,255, 28, 44, 24,203,204, 44,205,232,
- 61, 49, 0, 6,191, 51, 61, 96,233,136, 70,109, 38, 21,252, 11, 92, 81,220, 92, 21, 37,241, 42, 61,236,218,156, 44,106,244, 81,
-171,241, 5, 47,159,133,239,195, 73, 45,169,226,251, 59, 48, 89,127,170,248,110,193,203,230,140, 68, 34, 33, 74,165, 18,106,181,
-250,141,104, 85,110,110, 46, 84, 42, 21,242,243,243, 95, 87, 78,207,207,207, 47, 44,238,162, 22,230, 81, 5,224, 36, 33,228, 12,
-165,212,244, 46,246, 91,173, 86, 85, 46,120,177,113,223,149,102, 65, 67,131, 47,222,165,102, 70, 70, 70, 34,128,102,222,222,222,
-194,136,136, 8, 93, 69,117,202, 27,200,217,220,129,158,223,101, 52,232,175,230, 93, 27, 54, 0,208,235,245, 53,254,130,200,218,
-179,119, 44,248,107,135, 22, 1, 92, 20,237,251,167,188,193,158, 11,141, 25,197,175,165,228,145,146, 87, 14,146, 2,216,254,242,
-229, 75, 79,134, 97, 98, 74,136, 36,189, 49,111,206,156, 57, 40,173,127,190, 98,154, 0,112, 40, 46, 46,206,205,100, 50, 37, 21,
-211,125, 35,189, 44, 77, 22,150,127, 56,130,245,223,228, 55,157,110, 54,202, 25,108,184, 40, 73,215,233, 12, 0, 51,222,183,253,
-120,151,230,170,136,102,120, 69,214, 51, 24, 12, 23, 0,192,209,209, 17,142,142,142,150,172, 87,209,124,154,254,130,125,255, 87,
-104,190,141,185, 98,249,111, 65,179, 66,227, 0,124, 95,238,114,229,247,222,254, 39, 67, 84,240, 53, 11, 64, 86, 41, 30,167,172,
-121,101,105, 2, 64, 46,128,220, 18,214, 45, 45,157,133,229, 31,129,195, 30, 2, 22, 22, 22, 22, 22, 22, 22,150,119, 11, 1, 16,
- 84,202, 63, 6,179, 91, 7, 16, 66,130, 42,240,239,253, 28,171,201,106,178,154,172, 38,171,201,106,178,154,255, 45,205,242,180,
-139,183, 70,126, 87,195,104,253,237, 20,182,108,249, 43, 38, 0, 65,172, 38,171,201,106,178,154,172, 38,171,201,106,178,154, 21,
-220,206,200,191, 99, 59,127,197,196, 22, 17,178,176,176,176,176,176,176,176,188, 99,216, 74,238,255, 82, 8, 33,213, 1, 76, 7,
- 96, 93, 36,249, 14,165,116, 81,177,229,118, 1,144, 22, 73, 82, 2,152, 71, 41,125, 97,201,246,184, 92,238,162, 86,173, 90,125,
-121,237,218,181,229, 6,131, 97, 94, 5,242,235,233,234,234,250, 35, 33,164, 62, 0, 62, 33,228,101, 74, 74,202, 34,131,193,112,
-238, 45,142, 65, 85, 23, 23,151,197, 0,234,114, 56, 28, 62, 33, 36, 34, 37, 37,101,190,193, 96,184,244, 22,154, 10,103,103,231,
-230,148, 82, 23, 0, 92, 62,159,159,145,144,144,112,187,162,173,225,250,204, 13, 19,228, 42,141,124, 0,176,146,241, 12,251,103,
-251,235,205, 77, 99,175,114, 22, 22, 22,150, 15,212, 96,245,247, 37,174, 38, 30,120,251, 67,105, 92,225,203, 7, 64, 29, 0,213,
- 1,188, 0,240,144, 82,154,247,150, 70,225, 95,161,249, 30, 50,139, 82, 58,176,216,126,255,105,161,118,237,218,117, 63,115,230,
-140,180,112, 24, 21,134, 97, 32,145, 72,140, 0,134, 89,112, 60,157, 6, 12, 24, 48,117,243,230,205,232,219,183,239, 76, 66,200,
- 79,148,210,124,115,215,183,179,179,235, 93,181,106,213, 53,155, 54,109,114,108,210,164, 41, 17, 10,133,120,249, 50,194,125,212,
-168, 81, 53,157,157,157, 15,167,164,164,124, 97,233,206,219,219,219, 15,170, 86,173,218,138,141, 27, 55, 58,180,104,209, 2,132,
- 16, 4, 7, 7,187,127,251,237,183,117, 92, 92, 92,246, 36, 39, 39,127,101,169,166,131,131,131, 79,181,106,213,218,174, 93,187,
- 86,210,188,121,115,136,197, 98, 60,124,248, 80, 62,122,244,104, 23, 23, 23,151,167,201,201,201,151, 45, 53, 87,143,131,143,246,
- 52,234,181, 75, 0,128, 39, 16, 77,110,250, 83,238,209,204,224, 43,221,202, 75,235, 51, 23,135, 88,147,197,194,194,194,242, 1,
- 26,172,222, 1,100, 30,120,152, 14,128,116,174, 78,246,156,141,226, 94,109,223,190,189,247,240,225,195, 73,189,122,245, 16, 28,
- 28,236,179,103,207,158,143,121, 60, 94,132,201,100, 10, 6, 16, 98,110, 47,212,132, 16, 62,128, 64, 46,151, 91,255,125,214,124,
-207,145, 21,236,119, 10,128, 59, 5,105,119,138, 47,116,225,194,133, 35, 60, 30,175, 48,130,213, 72,169, 84, 58,227,205,168,151,
- 57, 84, 49, 24, 12, 8, 15, 15, 7,135,195,225, 3,240,194,159,135,190, 40,237,188,184,187,187,187,175,191,121, 39,216,158,240,
- 36,200,210, 0,208,232, 33,148, 59, 99,243,214, 29,118, 19,190,249,234, 83, 43, 43,171,171,185,185,185,191, 89, 96,248,188, 60,
- 60, 60,126,122,244,232,145,189, 84, 42, 5,195, 48,200,203,203,131,139,139, 11, 54,109,218,100, 51, 97,194,132,129, 18,137,228,
-146, 90,173,254,221, 18, 83, 94,173, 90,181,182, 79,158, 60,145, 20, 14,244,172,211,233,224,238,238,142, 93,187,118,137,198,141,
- 27, 87, 67, 36, 18,197,107,181,218, 72,115, 53,115,149, 70,190, 81,175, 93,178,125,221,156,202, 0, 48,244,171, 57, 75,132,121,
- 86, 39,204, 73,203, 85, 26,143, 3, 96, 13, 22,203,223, 10, 33,164,190,131,131,195,129,244,244,244,203, 0,190,120, 23, 93,137,
- 16, 66,220,120, 60,158, 23,165,212,166,224,119,182,209,104,140,162,148, 38, 86, 84,211,193,187,109, 55,136,164,159,129, 50,117,
- 56, 0, 8,135,243,208,164, 87,109, 77,127,118,241,232, 91,105, 10, 37,159, 3,180, 14, 7, 96, 8,135,243,136, 49,170, 54,165,
-133, 93, 60,201, 94, 25, 44,239,204, 96,245, 9, 32,182, 0,166,236, 89, 51,157,195,227,114,201,128,111, 22, 13,220,178,110, 25,
-167,125,183, 62,175,139, 73, 90,182,108,137,150, 45, 91,146, 37, 75,150, 84, 63,127,254,124,245, 93,187,118, 25, 9, 33,143, 40,
-165,123, 75,219, 88, 39,111,162,102, 0,241,199,126, 60,229,128,239,127,219,216,184,113, 99,136, 68, 34,188,141, 38, 0,116,168,
-206,141,236,210,216,251,209,128,177,179, 98,154, 52,105, 70,223,133,230,191,136, 59,148,210, 30, 5, 15, 46, 91, 15, 15,143,230,
- 70,163, 81, 12, 0, 60, 30, 79, 3, 96, 44, 45, 24,226,135, 16,114,152, 97,152,238, 22, 60, 24, 57, 0,102,119,239,222,125,230,
-215, 95,127, 13, 15, 15, 15,140, 27, 55, 14, 6,131, 33,152, 16, 50, 11,192,226,242, 58,242,115,114,114,154,181,126,253,122, 59,
-158, 80,134,122, 83,162,144,148,109, 4, 0,200, 69,192,145, 49, 20,227,198,141,179,186,119,239,222,124, 0,102, 27, 44, 39, 39,
-167,121,155, 54,109,178,147, 74,165,160,148, 34, 63, 63, 31,121,121,121,200,207,207, 71,126,126, 62,190,250,234, 43,171,167, 79,
-159,254, 8,192,108,131,229,236,236,220,124,237,218,181, 18,177, 88,140,252,252,124,129, 94,175, 39,121,121,121, 80,169, 84, 84,
-167,211,233,199,142, 29, 43, 10, 9, 9,105, 3, 32,146,125,108,188, 55,102,128, 11,224, 19, 62,159,223,203,219,219,187,193,139,
- 23, 47, 30, 24,141,198,131, 0, 14,190,237,159, 40, 66,200, 71,110,110,110, 11, 18, 19, 19,215, 82, 74,119,252, 87,142,169,179,
-179,243,193, 27, 55,110, 84, 94,191,126,253,176,229,203,151,159,176,228, 30, 42,229, 79,111,211, 70,141, 26, 57,244,234,213,139,
-239,226,226, 2,149, 74,133,136,136, 8,233,185,115,231, 28,197, 98,113,134, 86,171,189,105,201,185,114,240,109, 46, 7,207,106,
- 79,211,182, 65, 45,250,126,250,137,194,217,222, 26,106,157, 9, 47, 98,146, 60, 78,157, 56,210,218,173,230,199, 55,244,250,156,
-254,233,207,174,231, 91,170,217,182, 83,215, 22, 65, 31,125,164,176,182,177, 70,142, 82,143,151,209, 9,158, 23,207, 30,109,233,
- 90,243,227, 43, 12, 49, 12, 78,121,124, 70,197,222,117, 44,150, 96,118, 37,119,169, 84, 90, 98,186,181,181, 53,218,182,109,139,
- 69,139, 22,241, 0,212, 47, 58,239, 79,131,159, 2,162, 99, 27,166,193, 90, 38,226,120,120,120, 40,172,172,172,222, 90,243, 85,
- 34,227,213,204,131,118,190,251,219,244, 97,231,118,173, 8, 84,230,101,243,139, 47, 34,151,203,225,235,235,139,153, 51,103,154,
-167,249,150,252,221,154,174,174,174,126, 45, 91,182,172,127,225,242,101,155,196,196, 68, 81, 98, 98,162,232,204,133, 11, 54, 77,
-155, 54,173,239,234,234,234, 87, 68,195,146,124,254,176,110,221,186, 89,135, 15, 31,230,180,108,217, 18,182,182,182,104,219,182,
- 45, 78,156, 56,193, 91,190,124,249, 66, 0, 51,203,203, 39,135,195,105,209,178,101, 75, 2, 74,145,156, 99,196,237, 69,126,120,
-184,204, 31,121, 26,138,204,156, 92,168,213, 26, 72,165, 82,113, 65,177,174,185,251,222,172,105,211,166, 4,192,107, 83,149,151,
-247,106,202,207, 87, 66,167,211, 67, 36, 18, 41, 8, 33, 98,115, 53, 41,165, 46,205,155, 55, 7, 0,232,245,250,215,101,173,217,
-217,217, 36, 39, 39, 7, 58,157, 14,124, 62, 95, 64, 8,225,153,171,105, 37,227, 25,120, 2,209,228,161, 95,205,137, 27,250,213,
-156, 56,158, 64, 52, 89,167,200, 53,153,147,102, 37,227, 25,254,201,235,147, 16,226,200,229,114,127,245,246,246,126,202,229,114,
-183, 19, 66, 92,222, 70,147, 16,210,144, 16,178, 80, 42,149,158,171, 81,163, 70,156, 76, 38,187, 64, 8, 89, 76, 8,105, 90, 17,
- 77, 66,136, 80, 42,149, 94, 88,184,112,225,254, 7, 15, 30,244, 61,127,254,188,215,227,199,143, 63, 93,178,100,201, 30,185, 92,
-126,149, 16, 34,125,155,123,211,203,203,107,203,237,219,183, 27, 54,107,214,108, 51, 33, 68,244, 46,238,119, 66, 8,151, 16, 82,
-151,152, 57, 38,208,223,125,222, 9, 33,110,245,234,213,171, 44, 22,139, 17, 20, 20, 4, 0,109,222, 82,179,233,232,209,163, 93,
- 38, 76,152,192,127,248,240, 33, 54,111,222,140,195,135, 15, 35, 53, 53, 21, 93,187,118, 21,180,107,215,206, 69, 36, 18, 53,181,
- 72,147,103,181,231,155,111,199,119,154, 52,110,132,226, 81,172, 30, 91,207,197,226,208,205, 36,164,170,132,232,246,233, 80,235,
-142, 61,250,117, 20,138,172,247, 88,170, 57,117,202,148, 78, 35, 63, 31,168, 8, 77, 98,112,228, 86, 50,110,133,231,192,200,183,
- 65,151, 79,191,176,173,211,188,211,199, 60,240,183,189, 15,231,232, 67,215,252, 96, 35, 88,132, 16, 74,233,171, 65, 92,247,135,
-210,172,222, 1,228,199,126, 95, 47,156, 73, 56,132, 86, 9,108, 22, 90,169, 90,128,210,222,222, 30, 42,149, 10, 90,173, 22, 2,
-129, 0, 26,141, 6,177,177,177,184,117,235, 22,108,109,109, 45,218,112,110,110, 46,228,114, 57,228,114,249, 59,209,156, 54, 44,
- 72,244, 50, 46, 77,116,250,214,165,214,171,190,252,189, 73,181,186,109, 30,127,212,111,220, 19, 43, 71, 55,205,227,199,143,113,
-227,198, 13,100,101,101,161,113,227,198, 31,202,185,187, 83,240,156,190, 67, 8,177,109,217,178,165,251,233,115, 87,108,243, 53,
-140, 85,116,138,129,207, 48, 12,164, 82, 87,227,222, 3, 71,114,250,126,218,141, 16, 66, 82, 1,220, 41, 48,181,119,202,121, 17,
-136, 1,248,245,238,221,123,234,151, 95,126,137,136,136, 8,140, 24, 49, 66,125,231,206,157,140,102,205,154,217,111,218,180, 73,
- 50, 97,194, 4, 92,190,124,121, 54, 33,228, 15, 0, 81,148, 82, 77, 41, 55,161, 64, 32, 16,192, 88, 96, 23,244, 38,230,181,175,
-207,205,205, 5, 85,103, 65, 32, 16,112, 1, 56, 2, 48,171,158, 28,195, 48, 2, 62,159,255,218, 92,197,166,228, 34, 54, 85,133,
-220,124, 29,212,106, 35,116,106, 10,174,212,158, 7, 68, 59, 3,136, 54,243,120,114,197, 98, 49,140, 70, 35,242,242, 94,101,163,
- 48, 50,166,211,233,144,147,147, 3, 46,151, 43, 7, 96, 5, 32,211, 28,193, 87,149,215,113,168,160,184, 15,119,119,118,119,120,
-113,124,154,190,247,156,167,175,211,172,100, 60,195,129, 9, 53,184,246,238,117,174,213,237,187,205,191, 48,237,159,172,127, 69,
- 8, 17, 57, 58, 58, 94,220,191,127,127,141,234,213,171, 35, 42, 42,202,191, 79,159, 62,141, 9, 33,117, 45, 29, 51,145, 16, 34,
-229,112, 56, 63,126,246,217,103, 95, 14, 24, 48,128,248,248,248,128,199,227,193,104, 52,186, 71, 68, 68,180,221,183,111,223, 20,
- 30,143,183,201,100, 50,125,103,110,189, 62, 66, 8, 71, 40, 20,238,221,184,113, 99,171,198,141, 27, 99,251,246,237,184,115,231,
- 14,211,176, 97, 67,206,144, 33, 67,224,233,233,217,120,200,144, 33,135, 8, 33, 93, 42, 18,201, 34,132,120, 14, 26, 52,168, 50,
-151,203, 69,179,102,205, 4, 55,110,220,168, 7,224,198, 91, 30, 83,185,187,187,251,229, 54,109,218,212, 61,119,238,220,125, 66,
- 72, 27, 75,234, 49, 18, 66,122,184,185,185, 45,177,182,182,182,181,224, 25,171, 74, 72, 72,152,104,193,120,164, 77,234,215,175,
-143,152,152, 24,248,249,249, 65, 32, 16, 52, 37,132,140, 2,208, 9,192, 12, 75, 70,135, 32,132,184, 53,109,218,212,161, 77,155,
- 54,100,241,226,197, 0, 0, 62,159, 15,147,201, 4, 14,135, 3, 62,159, 15,127,127,127, 18, 25, 25,105, 71, 8,113, 51,167,184,
-208,193,187,109,183,102, 31,117,106,209,170,113,109,206,242, 3, 47, 96, 98, 76,224, 18, 35,120,132, 1, 99, 16, 65, 36,224,194,
- 39,176, 1, 55, 60,228, 81, 99, 7,223,246,221,210,159,157, 61,106,142,102,167,110,221, 91,214,240,243,225,172, 58,244, 18,217,
- 9, 79, 77, 9, 97, 87,210, 57, 92, 14,106,212,111,231,224, 19, 80,151, 91,183,113, 27,126, 98, 84, 72, 91,187,234,173,131, 50,
- 95, 92,102, 77,197, 95,255,252,121,237, 69, 62, 24,131, 85,156, 3,161,116,150,149,144,120,237,219,183,155,147,150,167, 87, 70,
- 68, 68,192,193,193, 1,174,174,174,176,182,182, 70,104,104, 40, 46, 92,184,128,103,207,158,129, 97, 24,212,169, 83,199,162, 13,
-167,167,167,227,209,163, 71,176,181,181,125,103,154,213, 42, 59,226,235,202,142,130,148,140, 92,193,185, 59,207, 26,255, 50,237,
-211, 0,142,255,167, 91, 52,154,255,191,251,117,186, 15, 99, 36,145,162,173, 5, 61, 60, 60,154,111,221,186, 85,160, 53, 66,225,
- 51,234,230, 82,165,198, 36, 3, 0,153,152,171, 12, 94,226,251,221, 15, 63,252,160,252,252,243,207,253, 99, 99, 99, 23,149,167,
- 43, 20, 10, 23,116,238,220,121, 18,165,148,255,205, 55,223, 0, 0,134, 14, 29,154,123,235,214, 45, 31, 74,105, 42, 33,196,109,
-248,240,225,207, 47, 94,188, 40, 29, 63,126, 60,215,104, 52,134,242,120, 60, 74, 8,153, 71, 41,157,243,167, 16, 41,135,115,239,
-254,253,251, 85,220, 60,125,225,105,207, 65,203,153,175,134, 83,179,151, 50,136,143,126,137,176,199,119,224,226,226, 98,237,234,
-234,250,212,207,207, 79,159,144,144, 48, 37, 63, 63,127,125, 89,121, 20, 8, 4, 15,131,131,131, 93, 61, 61, 61,145,159,159,143,
-248, 52, 21,198, 29,148, 34, 87,253, 42,104,193,135, 26,117, 43,251, 42, 36, 28,221, 29,103,103,103,189, 78,167,251, 62, 59, 59,
-187,204,225, 62,248,124,126,198,227,199,143,229, 30, 30, 30,208,104, 52, 52, 51, 51,147, 40,149, 74,228,229,229,145,227,199,143,
-247, 76, 74, 74,106,232,229,229, 69,220,221,221,231, 85,175, 94, 93,157,144,144, 48,194,156, 58, 94,251,103,251,235, 9, 33, 38,
- 30,143,183,124,228,200,145,125,255,248,227,143,123, 7,230,212,232, 65, 41,213, 23, 60, 76,172, 3, 3, 3, 79,215,174, 29,224,
-182, 99, 89,173,213,148,210,165,239,193,229,245,217,244,233,211,107,216,217,217, 97,244,232,209,152, 59,119, 46,102,205,154, 85,
-125,244,232,209, 35, 1,252,100,193,131, 82,226,226,226,114,119,213,170, 85,254,205,155, 55,199,137, 19, 39,176,123,247,110, 68,
- 70, 70, 26,189,188,188,120,141, 27, 55,198,236,217,179,209,177, 99,199, 17, 99,199,142,109, 77, 8,169,103,166,233,248,124,246,
-236,217, 61, 90,180,104,129, 97,195,134,105, 47, 93,186,212, 23,192,153,179,103,207,182,187,124,249,242,129,157, 59,119, 74, 22,
- 46, 92, 24, 52, 97,194,132,209, 0,214, 84, 96,255,123,182,106,245,106,108,227, 22, 45, 90, 96,201,146, 37, 29,223,198, 96, 17,
- 66,132,246,246,246,199,183,111,223, 94,215,215,215, 23,131, 7, 15,174,215,183,111,223,227,132,144,246,148, 82,179, 30, 72,149,
- 42, 85,250,241,240,225,195,222,165,149, 36,148,132, 86,171,181,251,228,147, 79, 22, 3,176,200, 96,237,218,181, 11, 19, 39, 78,
- 68,157, 58,117,106, 55,105,210,100,195,168, 81,163,208,187,119,239,143, 8, 33,206,148, 82,165, 89, 47, 22, 30,207,171,107,215,
-174,252,131, 7, 15, 2, 0, 90,181,106,133,160,160, 32, 60,121,242, 4,215,174, 93, 3,151,203,133, 76, 38, 67,243,230,205,133,
-137,137,137, 94, 0,202, 53, 88, 28,145,244,179, 30, 93,187, 40,142,220, 74,130,137, 49,162,129,183, 21, 26,251, 59, 33, 60, 62,
- 23,193, 79,227, 97,210, 9, 96,101,103,143,166,173, 59,216, 37, 39, 68,126, 6,160,252,250, 88, 34,233,103,189,122,124, 44, 63,
-114, 51, 17,217,137, 97,244,197,157, 63, 46, 24, 52,202, 17, 0,112,239,252,158, 13, 46,246,146,246, 62,245, 27,112,219,180,239,
-110,123,112,119,242,103, 0, 88,131,197,242,246, 6, 11, 0,242,244, 72,249,232,227, 79,113,255,254,125, 0, 64, 70, 70, 6, 50,
- 50, 50,224,237,237,141, 53,107,222,124,110, 85,196,184, 48, 12,243,206, 53, 1,192,217,222, 10,131,187, 52,226, 93,123,180, 91,
-172, 76, 75, 19,203,229,114,205,135,102,176,138, 98, 52, 26,197, 94, 94, 94,200, 85,131,228,168, 12,242,244, 61,175, 34,251, 14,
-253, 47,201,117, 58, 29, 71, 46,151, 67,171,213,138,205,120, 17,240,123,244,232, 49,105,239,222,189,252,176,176, 48, 84,171, 86,
- 13,122,189, 30,183,110,221,138, 47, 24,160, 24,148,210, 68, 46,151,155,200, 48, 76,245, 58,117,234, 96,209,162, 69,240,247,247,
- 39, 93,186,116,153, 82, 96,178,152,162,154, 73, 73, 73, 63,142, 26, 53,170,221,190, 3,127,216,109,236,167, 70,110, 78, 46,242,
-243,243,241,240,193, 61,100,166,104,240,203, 47,191, 64, 44,150, 16, 0,130,212,212, 20,193,248,241,227, 87,187,187,187,119,138,
-143,143,239, 90, 90, 62, 19, 19, 19, 23,124,245,213, 87, 77,247,236,217, 99,147,151,151, 7,181, 90,131, 76,165, 20, 79, 87,190,
- 26, 95,183,198,183, 79,177,110,237,122, 78,173, 42, 50, 7,149, 74,133, 47,191,252,114,133,155,155, 91,243,196,196,196,225,165,
-105, 38, 36, 36,220,254,250,235,175,157,119,238,220, 41,214,233,116,122,147,201, 4,181, 90,205,217,179,103,207,148, 42, 85,170,
-216,110,218,180,137,136,197,146,130,101,227, 5, 99,198,140,217,235,226,226,178, 51, 57, 57,121, 88, 57,199,148,203,229,114, 87,
-238,216,177, 99, 72,191,126,253, 20, 73, 73, 73, 1,135, 15, 31, 22, 1, 80, 23, 44,226,218,190,125,251, 42,203,150, 45,115, 12,
- 12, 12,156, 66, 8,225, 83, 74,255,209, 65,195, 29, 28, 28,198,246,232,209, 3,139, 23, 47,198,209,163, 71, 39,216,217,217,173,
-152, 59,119, 46,220,220,220,190, 38,132,172,180, 96, 0,221,165, 63,253,244,147,191,191,191, 63,134, 14, 29,170, 59,119,238,220,
-116, 0,135, 0,196, 92,189,122,213, 99,219,182,109,221,246,238,221,187,120,213,170, 85,226, 53,107,214,120,127,250,233,167, 43,
- 1, 12, 47,247,254,118,118, 30, 63, 96,192, 0, 44, 91,182, 12,151, 46, 93,250,148, 82,122,162, 96,214, 73, 66, 72,183,133, 11,
- 23,158,159, 57,115, 38,126,250,233,167,111, 44, 53, 88,132, 16,121,141, 26, 53,190,239,212,169, 19,174, 94,189,138,150, 45, 91,
-162,105,211,166, 19, 8, 33,171, 41,165,233, 21, 48, 87, 28,185, 92,190,119,235,214,173, 45,171, 84,169,130,249,243,231, 99,210,
-164, 73,216,178,101, 75,203,193,131, 7,239, 37,132,244, 42,126,207,148,132,181,181,181, 92, 42,149, 98,202,148, 41, 52, 50, 50,
- 50,171,188,229, 43, 87,174,108,187, 98,197, 10, 98,107,107,107,109,174, 25, 22,139,197,205,106,214,172,137,217,179,103,227,236,
-217,179,152, 57,115, 38,106,214,172,137,152,152, 24,244,239,223, 95, 58, 99,198,140,222, 0,204, 26,151,144, 82,106,109,111,111,
-143,212,212, 84,240,249,124, 52,111,222, 28,135, 14, 29,130, 86,171,133,147,147, 19,178,179,179,209,168, 81,163, 66, 51,102,109,
-222,209,164, 53, 29,236,172,145, 26,146, 0, 30,140,168,239,227,128,139, 79, 50,160, 55, 48,112,178,183, 65,114,106, 10,154,212,
-116,135, 78,231, 1, 74,153,154,230, 40, 10,185,156,250, 34,177, 4,153,121,233, 72,120,122, 41, 67,111,210,142,202,142,188, 22,
- 7, 0,118,213, 90,141,186,119,237,236,189, 62, 31,183,114,202, 87, 86, 6,161, 76, 35,214, 50,176, 88, 2,199,140, 27,229, 79,
-105, 42,213,159, 75, 9,222,214,184,252, 21,154, 37,241, 33, 26,172, 66, 10, 7, 71,214, 25, 24,232, 12, 76,225,191, 88,168,213,
-106,115,163, 98,134,211,167, 79,111, 31, 55,110, 28, 86,172, 88,129,231,207,159, 67, 32, 16,160,102,205,154,174,132, 16,121, 97,
-196,165,126,253,250, 78, 28, 14, 7,225,225,225, 88,190,124, 57, 62,255,252,115,122,227,198,141, 45, 37,189, 40, 40,165, 15, 50,
- 51, 51,215,142, 26,241,121,118, 86, 74, 44, 12,234, 44,164, 38,188,132, 86,153,141,249,139,126,132,202,192, 67,114,142, 30,201,
- 57,122,112, 68,118,216,176,105, 43,183, 70,141, 26,157,120, 60, 94,215, 50,242,121, 43, 37, 37,101,211,152, 49, 99,178,147,147,
-147, 95,239,159,206, 64,161, 51,188,121,189, 74,165, 82,172, 92,185,210,218,199,199,167, 7,159,207,111, 91,134,102, 82, 92, 92,
- 92,216,152, 49, 99,116, 41, 41, 41,200,201,201,193,145, 35, 71,186, 85,169, 82,197,118,241,210, 21, 68,169,231, 33, 57, 91,143,
-228,108, 61,132,114, 39,236, 61,240, 7,215,215,215,119, 32,159,207,111, 90,158,185,218,185,115,231,144,126,253,250, 41,150, 46,
- 93,154,121,248,240,225,117,148,210,162, 39, 36,124,229,202,149,251,246,238,221,155, 55,105,210, 36,187, 37, 75,150, 76, 32,132,
- 76,255, 7,195,243,109,251,245,235,231,199, 48, 12,246,239,223,255,152, 82,250,211, 31,127,252,113, 87,171,213,162,127,255,254,
- 94,120, 85, 92,100,142, 78,195,129, 3, 7,126,217,178,101, 75,124,251,237,183,250,115,231,206,213,167,148,174,160,148, 70,211,
- 87,196, 80, 74, 87, 95,190,124,185,206,216,177, 99,181,141, 26, 53,194,176, 97,195, 62, 39,132,180, 44, 71,183,217,128, 1, 3,
-252, 25,134,193,158, 61,123, 30, 21, 49, 87,133,231,241,194,129, 3, 7,110,233,116, 58, 12, 26, 52,168, 42, 33,164,157, 5,251,
- 46, 16,137, 68,251,127,248,225, 7,155,132,132, 4, 12, 25, 50, 68, 27, 30, 30,142, 57,115,230, 72,172,173,173, 79, 20,222, 3,
-150, 32, 18,137,126,249,249,231,159,123,212,170, 85, 11, 99,198,140,209,173, 95,191,126,220,151, 95,126,169,171, 95,191, 62,214,
-173, 91,215, 67, 40, 20, 90, 52, 4, 72, 98, 98, 98,118,104,104,168,125,121, 83,124,124,124,138,153,251, 44, 85, 40, 20, 55, 3,
- 3, 3,115,107,214,172,217,192,104, 52, 34, 52, 52,244,229,246,237,219,153,154, 53,107, 98,237,218,181, 88,178,100, 9,186,118,
-237, 10, 46,151,219,219,146,188, 42,149, 74,136,197, 98, 8, 4, 2, 4, 7, 7, 67,171,213, 66, 42,149, 66, 44, 22,131,203,229,
-194,198,198, 6, 10,133, 2, 0,168,121,121, 5,205, 85, 25,192,231,115,192,227, 48, 8,139,201,129,222,192, 64, 44,224,130,207,
- 35, 0,101, 96, 35,227, 67, 44,228,130, 67, 8, 99,166, 38,114,148,122, 8, 5, 28,240, 5, 66,194, 49,154, 36,175, 95,142, 60,
-147, 68, 34, 17, 18, 7, 43, 17,196, 2,182, 79,110,150,119, 28,193, 42,140, 50,153, 99, 82,180, 90,237, 59, 55, 62,111,171, 89,
-146, 57,124, 91,205,247,242, 36,242,120,154,103,207,158, 9,173,236,221, 24,123, 5, 63,171,202,231,215,172, 1,192, 78,206,203,
-209,155, 12, 76, 98, 98, 34, 68, 34,145,198, 28, 45,141, 70, 51,130, 16, 50, 31, 64, 0,143,199, 59,182,117,235, 86,178, 99,199,
- 14,219, 1, 3, 6, 68, 16, 66, 18, 2, 3, 3, 61,183,110,221,106, 5, 0,171, 87,175,166,123,247,238,237,136, 87, 93, 95, 36,
-151,166,153,156,156, 60,135,207,231,223,248,234,171,175,214, 8,133, 66, 91,153, 76,102,127,245,234, 85,162,209, 83, 52,156, 30,
-243,186,101,161,149,132,131, 43,211,172, 48,114,228, 72,238,211,167, 79, 23, 1, 56, 86,134,230, 20,145, 72,116,245,249,243,231,
- 43,172,221,235, 58,202, 60,167, 91, 55,158, 22, 14, 0,240,116,224,131, 83,240, 60,204,206,206, 70, 90, 90, 26,190,252,242, 75,
-219,136,136,136, 41, 0, 46,150,166, 25, 31, 31,127, 89, 36, 18,197,135,132,132,180,225,243,249, 66,153, 76,214,240,230,205,155,
- 68,163, 99, 80,123, 74, 12, 50,243, 95,229,211, 78,206,195,189, 31,156,241,245,215, 95,243, 94,188,120,241, 35,128, 22, 37,254,
-123,225,112,150, 20, 53, 87,147, 39, 79,126, 8,160, 42, 33,228,141, 34, 80,147,201, 68, 6, 13, 26,244, 4, 64,205, 73,147, 38,
-217, 81, 74, 39, 16, 66, 50, 41,165, 27,255,238,107,201,202,202,106,241,168, 81,163,176,119,239, 94,100,101,101,173, 4,128,220,
-220,220,159,118,237,218,181,103,196,136, 17,248,237,183,223, 22, 19, 66, 78,153, 17,197,234,220,191,127,127,156, 60,121, 18,231,
-207,159,255,158, 82, 26, 90,202, 61,250,156, 16, 50,229,240,225,195,171, 6, 12, 24,128, 95,127,253,181, 19,128,171,101,232,182,
-239,216,177, 35, 78,156, 56,129,140,140,140,117, 37, 45,144,157,157,189,254,200,145, 35, 77, 58,118,236,136, 69,139, 22,181, 7,
-112,193, 12,163,225,111,109,109,189,117,213,170, 85, 13,107,213,170,133,129, 3, 7,106,244,122,125,167, 73,147, 38, 29,221,189,
-123,183, 98,251,246,237, 13, 70,142, 28,121,155, 16,242, 5,165,244,150, 57,199,146,203,229, 46, 92,179,102,205,240, 54,109,218,
- 96,194,132, 9,198,211,167, 79,119,167,148,158, 33,132, 68, 76,158, 60,249,248,242,229,203,185,203,150, 45, 27,206,229,114,211,
- 76, 38,211, 63,101,170,127, 88,189,122,117,147, 14, 29, 58,224,229,203,151,184,117,235, 22,244,122,253,111, 55,111,222,188, 82,
-189,122,245, 31,116, 58,221, 81,153, 76, 54, 84,161, 80, 4,214,173, 91,183, 29, 33, 68,106, 78, 61, 60, 66, 72,118, 68, 68,132,
-204,201,201, 9,124, 62, 31,143, 30, 61,130,147,147, 19, 0, 32, 53, 53, 21, 53,107,214, 4,151,203, 69,118,118, 54, 0,228,152,
-103,134, 56,143, 35,162, 19,171,218, 41,100,128, 73,140, 7,225,241,112,116,176,133,137,112,144,156,156,132,186,126,238, 32,132,
- 32, 59, 35, 25,132,144, 39,230,104,154, 40, 19, 28,155,152, 90,201, 94, 33, 66,173, 38, 29,236,111,158, 74,219, 97, 93,173,197,
- 72, 30,151,112, 69, 98,171,141,195,135, 13,115, 96, 24,138,236,140, 20,240, 56,156, 59,172,101, 96,169, 80, 4,171,180, 74,101,
-175, 42, 75, 75,203, 52, 41, 98,177,248,117,244,196,130,127,118,239, 92,179, 60,254, 10,205,127, 48,210, 48,141, 16,114,152, 16,
- 50, 45, 46, 46, 46,108,248,240,225,122,163, 94,155,119, 99,126,213,169,247, 23, 85, 25,115,115,142,235,152, 67,227,172,167,170,
-114, 50,243, 86,175, 94,109,136,139,139, 11, 43,186, 78, 57,198, 52,150, 82,122, 98,219,182,109,235,247,239,223,143,154, 53,107,
- 34, 52, 52,212, 73,169, 84,214,123,242,228,137,157,191,191, 63,118,236,216,129,189,123,247,174,160,148,158, 45,203, 92, 21,137,
-174,157, 75, 74, 74,242,141,137,137,241,182,177,177, 49,216,216,216,160,120,203,194, 92, 53,131,140,236, 28,216,217,217,195,202,
-202,202,171, 60, 77,173, 86,123, 34, 41, 41,201,135,177,245,107,229,147,190, 50, 39,120, 97,101, 4, 47,172,140, 19, 83,220,224,
-106, 35, 68, 86, 86, 22,210,210,210,144,150,150, 6, 66, 8, 12, 6, 67, 13, 51, 52, 35, 19, 19, 19, 55,199,198,198, 30,118,118,
-118,134, 66,161, 0, 5,144,156,109,192,195,101,254,120,184,204, 31,201,217, 6,228,230,229,161, 74,149, 42, 80, 40, 20, 53, 75,
- 57, 63,156, 74,149, 42,117,233,215,175,159, 2, 0, 10,140,211, 71,148,210, 49, 37, 76,163,141, 70, 99,243,194,101, 39, 78,156,
-104, 7,160,227,223,124, 61,113, 9, 33, 95,141, 24, 49,162,129, 88, 44,198,218,181,107, 35, 1,236, 44,152,189,127,253,250,245,
-225, 0, 48,110,220,184, 64, 0, 19, 10,186, 72, 40, 21,129, 64, 80,191, 70,141, 26,184,121,243, 38, 0,252, 81,206,230, 15,220,
-184,113, 3,213,171, 87,135, 88, 44,110, 88,206,178, 94,149, 43, 87, 70,120,120, 56, 0, 60, 40,101,153, 7,225,225,225,168, 92,
-185, 50, 8, 33, 94,102,236,123,143, 14, 29, 58, 60,190,120,241, 98,195,102,205,154, 97,248,240,225,186,219,183,111,119,161,148,
- 94,121,240,224, 65,219, 65,131, 6, 41,125,124,124,112,249,242,101,255, 65,131, 6,221,224,114,185,243,205,208,252,124,222,188,
-121,211,122,246,236,137,121,243,230,209,125,251,246, 13,164,148,158, 41,184,191, 78,239,217,179,103,200,130, 5, 11,104,175, 94,
-189, 48,119,238,220,105,132,144, 49,229, 68,131,114, 76, 38, 19,148, 74,165, 89, 33,120,115,151,119,112,112,232,220,161, 67, 7,
-204,156, 57, 19,149, 42, 85,194,209,163, 71, 41,128, 99,148,210,171, 90,173,182, 21,165,116,185, 82,169, 60,116,243,230, 77,180,
-111,223, 94, 0,224, 99,115,182,111, 52, 26,163, 47, 94,188,168,183,183,183,135,187,187, 59, 60, 60, 60,160, 84, 42,145,157,157,
-141,154, 53,107,162, 73,147, 38, 80, 42,149, 56,118,236,152, 62, 59, 59,219,172,134, 40, 70,157,114,251,217,227, 7,115,236, 21,
- 34,184, 59, 89,163, 74, 37, 59,228,103,167, 35, 45, 57, 17,245,107,120,160,117,253, 42, 72,207,209,225,244,177,131, 89,121,121,
-170,237,102, 69,253,181,170,173,231, 78, 29,205,177, 85, 8,224,235, 23,136, 65,195,199,213,173, 91,175,241,217, 70,141,154,159,
- 94,186,120, 97,237,143,154,214, 32,241,233, 26,156, 60,246, 71, 86, 78,110,238, 86,176,252,229,124, 40, 21,220,223, 48, 88,165,
-144, 62, 97,194, 4,136, 68, 34,184,186,186,190, 54, 69,133, 38, 69, 40, 20,194,213,213, 21, 70,163, 17,123,246,236, 1,128,244,
-114, 54,166,237, 62,102, 17,163, 53, 80, 21,159,207,127, 39,154, 5,145, 2,237,167,147,127,101, 78,221, 40,185,145, 75, 69, 52,
-255, 5, 52, 42,232,211,170, 17,165, 52, 43, 58, 58, 58,190,239,167,221,115, 98, 34, 66,146,149,217,137, 73,185, 25,113, 73,113,
-145, 79,146,167, 79,153,144, 19, 31, 31, 31, 87,208, 23, 86,163,196,196,196,238, 0,204,173, 75, 48,161,111,223,190, 63,143, 24,
- 49,130, 62,124,248, 16, 0, 16, 28, 28,140, 97,195,134,209, 33, 67,134,172, 4, 48,181, 2,249, 86,170,213,234, 55,162, 31,122,
- 19,243,186,104, 47, 55, 55, 23,137,137,137,208,233,116,102, 59,225,231,167,151, 61,203,140,190,103, 8,244,148, 33,208, 83, 6,
-255,202, 82, 16, 99,254,107,115,149,150,150,134,148,148, 20, 0,208, 88,144,207, 92,173, 86,251, 70, 62,139, 22, 65,230,230,230,
- 34, 57, 57, 25, 38,147, 73, 87,202, 67,130, 73, 72, 72, 56,189,119,239,222, 60, 0, 88,186,116,105, 38, 33,228, 60, 33,228,231,
- 18,166, 13, 60, 30,239,122,225,178,203,150, 45,203, 4,112,226,111, 52, 87, 61,107,213,170,149, 53,109,218,180,181,223,124,243,
- 13, 54,108,216,128,164,164,164,169,148, 82, 99,225,190,164,167,167, 79, 94,183,110, 29, 62,251,236, 51,204,154, 53,107, 89,189,
-122,245,114, 9, 33,131, 74,211,116,116,116,116,231,241,120,184,127,255,126, 46,165,244,101, 57, 15,212,228,251,247,239,167, 16,
- 66,224,234,234, 90,173,172,101,237,236,236,188, 21, 10, 5, 18, 18, 18, 0, 32,170,148,197,162, 19, 19, 19,169, 80, 40,132,155,
-155, 91,245,242,246,223,214,214,118,242,230,205,155,121, 33, 33, 33,248,232,163,143,226, 47, 95,190,220,158, 82,122,169, 32,111,
-247,131,131,131, 91,182,109,219,246,217,217,179,103,241,227,143, 63,146, 58,117,234,140, 41, 79,211,211,211,115,244,231,159,127,
-142, 53,107,214, 96,227,198,141, 99, 40,165,251,139,237,243,238,117,235,214,141,219,184,113, 35,134, 15, 31, 14, 47, 47,175, 65,
-101,233,197,196,196, 76,105,211,166, 77,240,243,231,207,205, 26,161,192,156,229, 9, 33,109, 27, 55,110,236,173, 86,171,177,117,
-235,214,151,222,222,222,119,247,239,223, 63,129, 82,250,168,216,162,135, 14, 30, 60,136,193,131, 7,163, 78,157, 58, 91, 9, 33,
- 3,204,120, 73, 38,198,196,196,164, 63,122,244,136,225,114,185,112,119,119, 71,151, 46, 93,208,191,127,127,212,169, 83, 7,169,
-169,169,184,114,229, 10, 19, 17, 17,145,110,110,135,163,233,207, 46, 30,141,138,122,118,253,254,237, 43, 6, 30,151, 3, 15, 87,
- 59,124, 18, 84, 23, 95,244,110,142,250,254,149, 16,147,170,198,133, 11,103, 13, 81, 81, 47,111,154,211,130,176, 80, 51, 44,244,
-209,141,144,251,215,140,124, 30,129,191,159, 15,102, 78,159,108,187, 96,246, 20, 27,159,106, 30,120, 20,153,131,179,103, 78, 26,
- 18,227,227, 46,178, 45, 8, 89, 44,165,188, 34,194,165, 27, 54,108,104,180,121,243,230,246, 19, 38, 76,144, 15, 29, 58, 20, 98,
-177, 24, 42,149, 10,238,238,238, 48,153, 76, 56,117,234, 20,238,221,187,151,207, 48,204, 89, 20,107,254, 79, 8, 9, 42,218, 87,
-198,169, 8, 42,121,213,121,165,170,209,225, 62,125,222,137, 38, 0,200, 95, 48, 86, 25, 85,116, 59, 86,239,191,214,107,215,233,
-251,228,219, 1,173, 57,245,253, 42, 3, 0,156,157,157, 97,101,101,101,177,230, 59,120,105,253,229,154, 69,139,111,147,146,146,
-194, 9, 33,169, 35, 70,140,240, 47,172,208, 46, 18,137, 52,113,113,113, 97,133, 29,141, 22, 95,167,188,124, 22,180,116,251,146,
- 16,114, 36, 39, 39,231,244,164, 73,147,176, 96,193, 2, 28, 61,122,180, 37,165,244,122, 69,246,157, 82,106,242,242,242,202,190,
-115,231,142,115,245, 26,245, 80,213,137,143, 86,223, 63, 7,165, 20,246, 82,138,188,236, 76, 60,120,112, 31,121,121,121,183, 45,
-201,167,155,155, 91,118,106,106,170,131,147,147, 19, 50, 51, 51,145,158,158,254,218, 92,101,101,101, 33, 51, 51,147, 18, 66,174,
- 90,160,169,244,246,246, 86,133,133,133, 9,157, 43, 87, 71, 53, 39, 1, 26, 79, 15, 7, 40,133,135, 29, 7,121,185,217,184,121,
-243, 38,114,114,114, 46,149,166,201, 48,204,119,131, 6, 13,226, 2, 24, 50,105,210, 36, 59, 0,117, 38, 79,158,124,182,120, 75,
- 65, 62,159,255,211,142, 29, 59,106, 22, 22, 37, 78,153, 50,101, 5,165,116,243,223,117, 45,217,219,219,127,119,252,248,113,133,
- 94,175,199,234,213,171,177, 98,197,138, 45,148,210,223,139, 29,143,227, 92, 46,119, 29,135,195,249,234,235,175,191,198,168, 81,
-163,164, 13, 26, 52,152, 80, 36,202,245,134,102, 66, 66,194,204,250,245,235,207, 74, 77, 77, 53,171,194,254,243,231,207, 71,214,
-175, 95,127,102,106,106,234,146,178,206,145, 76, 38,147,153, 76, 38, 68, 69, 69,101, 81, 74,115, 74, 57,119, 26, 31, 31,159, 4,
-147,201,228, 46,149, 74,237,202,187, 62,179,178,178, 22, 54,104,208, 96, 78, 74, 74,202, 25, 0,243,139,119, 57, 66, 41,125, 72,
- 8, 9,252,230,155,111,198, 46, 94,188,184, 87,114,114,242,158,242, 52, 99, 98, 98, 22,182,109,219,246,251,103,207,158,109, 43,
-173,168,151, 82,186,150, 16,162,223,177, 99,199,152,168,168,168, 69,101,105, 82, 74,143,161,140, 34,243, 18,180, 75, 92,190,168,
- 38,151,203,157,188,120,241, 98,206,134, 13, 27, 64, 41, 93,102, 52, 26, 75,203,231, 35, 46,151,187,189,121,243,230, 67,247,239,
-223, 47, 14, 12, 12, 28, 5, 96,119,121,215,167, 86,171,189,117,227,198,141, 38,209,209,209, 14,109,219,182, 21, 20,254, 49,201,
-206,206,198,177, 99,199,244, 17, 17, 17,233, 74,165,242,150, 37,207, 16,163, 46,119,192,141, 11,135,119, 71, 63,127,210,180, 77,
-167, 30,182, 58,189, 59, 68, 25, 92,100,103, 36,227,212,177,131, 89, 81, 81, 47,111,170, 84,217, 3, 44,209,212,107,115,250,223,
-188,120,100, 79,124, 84, 88,147, 86,109,187,216,106,116,158, 16, 9, 56,200, 72, 73,192,169,227,135, 51,163,162, 34,175,106, 12,
-218, 97,255,212,115,254,191,164,249, 33,134,227,202,157, 0, 8, 0, 4,201,229,242, 5,179,102,205, 90,118,251,246,237,101, 93,
-187,118, 93, 38, 18,137, 22, 0, 8, 2, 32, 40,101,189,160,191, 83,179,161, 27,236,218, 86, 35, 87, 58,120, 19,102,116, 75, 91,
-211,176,198, 50, 93,187,118,237,214,189,141,102, 69,167,191, 90, 19,192, 97,131,193, 64, 1, 36, 3, 56, 92, 48, 77, 43, 97,157,
-105, 69,230, 39,199,198,198, 82, 0,135, 45,201, 39, 0,135,126,253,250, 49,121,121,121,180,111,223,190, 20,128,245,219,236,187,
- 72, 36,106,219,170, 85, 43, 67, 74, 90, 38, 13,143, 76,160,183,130, 67,233,233, 11, 55,232,158,131,199,233,154,117, 27,105,237,
-218,181,117, 0, 60, 45,209,228,241,120,237,218,182,109,155,145,146,146, 66,195,194,194,232,149, 43, 87,232,129, 3, 7,232,198,
-141, 27,233,207, 63,255, 76, 43, 87,174,156, 2,192,217, 18, 77,137, 68,210,163,115,231,206,134,236, 92, 21,141, 74,200,160,143,
-195,162,232,245, 59,143,233,169, 11,215,233,206,221,251,105, 64, 64,128,166, 60,205, 87,239, 49,238,154, 61,123,246,228, 82, 74,
-105,143, 30, 61,226, 1,136,139,204,175,250,221,119,223,165, 82, 74,233,146, 37, 75, 50, 0, 76,255, 7,174,165, 78,149, 42, 85,
- 10, 23, 8, 4,199, 1, 12, 41,103,189,254, 60, 30,239,168,139,139,203, 93, 0,159,252,221,247, 17,128,174, 78, 78, 78,183, 0,
-116, 47,103,189,194,229,122,126, 8,247,251, 95,116,222,219,241,120,188, 43,120,213,199,149, 57,239,128, 31,184, 92,238, 9, 0,
- 31, 89,146, 79, 0,110,114,185,188,133, 92, 46,239, 38,151,203,187,217,216,216,180, 0,224,246, 54,251,110,239, 19,212,205,163,
- 94,247, 67,149,235,124, 28,227, 81,183,107,140, 87,253, 30,135,236,125,130,186,189,173,166,103,253, 30,135, 61,234,118,141,245,
-168,219, 45,186,106,195, 30,135, 28,252,130, 58,127,104,231,253,125,214, 44,101, 59, 35,255,142,237,252, 37,121,183,112, 71,101,
- 0, 62, 1,176,168,224, 83,246,182, 39,224,175,208,108,226, 10,223, 32,111, 18,214,197,143,151, 9,160,247,187,208,124, 15, 31,
-142,219,116, 58, 29,213,104, 52, 84,165, 82,209,252,252,252, 55,140, 83, 81, 35,150,152,152, 72,227,227,227,105,108,108, 44,141,
-142,142,166, 0,118, 90,154, 79, 43, 43,171,205,125,250,244, 49,241,249,252, 53,239, 98,223,237,236,236, 22, 53,110,220, 88,191,
-106,213, 42,122,232,208, 33,186,105,211, 38,250,245,215, 95,211,154, 53,107,106,109,108,108, 6, 84, 68,211,197,197,101,166,159,
-159, 95,198,150, 45, 91,232,206,157, 59,233,202,149, 43,233,140, 25, 51, 76,238,238,238,201, 10,133,162, 99, 69, 52,157,156,156,
-126,105,209,162,133,254,151, 95,126,161,103,207,158,165,187,118,237,162,223,125,247, 29,245,247,247,215,202,100,178, 79,205,209,
- 4,192,229,241,120,203, 71,143, 30,157,236,230,230,118,188,216, 60,105, 64, 64,192,221, 65,131, 6, 37, 2,152,194, 62,112, 89,
- 77, 86,147,213,100, 13,214,135, 97,176,120, 22, 70,187,148, 0,254, 32,132, 28, 45,172,159,241, 14, 34,104,239, 92,243,102, 34,
-125, 6,192,159, 16,194,123, 87,154,239, 33, 11,133, 66, 33,175,192,160, 22, 82, 82, 43,151, 59,110,110,110, 69,127,231, 0,176,
-184,159,165,156,156,156, 47, 8, 33,227,138,117, 49, 80, 97, 50, 50, 50,166, 17, 66,246, 70, 70, 70, 46,178,177,177,169,111, 48,
- 24, 12,185,185,185, 87,178,178,178,166, 80, 74,227, 43,162,153,148,148, 52,159, 16,114,100,230,204,153,147, 40,165,141, 56, 28,
-142,198, 96, 48, 92, 74, 79, 79, 95, 68, 41, 77,171,136,102, 74, 74,202, 72,129, 64,240,107, 68, 68,196, 34,137, 68, 82,155, 97,
- 24,157, 74,165,186,148,158,158, 62,158, 82,154, 98,230, 53,110, 2,240, 29, 33,100, 57,128,212, 98,243, 84,132,144,230,161,161,
-161,246,148,210, 36, 54,166,206,194,194,194,242,223,168,131, 85,218, 11,227,157,155,150,127,139,230,123, 84,180,251, 2,192, 32,
- 51,150, 91,244, 14,183,169,126,199,251,240, 24, 64,231,119,172, 25, 2, 96,200,187,212,212,235,245,183, 97,230,184,108,229,228,
- 45,169,148,116, 61, 0,214, 92,177,176,176,176,124, 64,176,189,167,177,176,176,176,176,176,176,176,188, 99, 8, 94, 85,254, 46,
-233, 95,181,217,173, 3, 8, 33, 65, 21,248, 55,127,142,213,100, 53, 89, 77, 86,147,213,100, 53, 89,205,255,150,102, 17,237,210,
-198, 54, 13, 47,166,247, 11,254,141,252,197,149,211,216, 10,128,172, 38,171,201,106,178,154,172, 38,171,201,106,254,231, 38,182,
-136,144,133,133,133,133,133,133,133,229, 29,195, 26, 44, 22, 22, 22, 22, 22, 22, 22, 22,214, 96,177,176,176,176,176,176,176,176,
-176, 6,139,133,133,133,133,133,133,133,133, 53, 88, 44, 44, 44, 44, 44, 44, 44, 44, 44, 21,135, 20,180, 6,120,245,131, 16, 74,
- 41, 37,236, 97, 97, 97, 97, 97, 97, 97, 97,249, 71,140,201, 7,226, 69, 88,131,197,194,194,194,194,194,194,194, 26, 44,214, 96,
-177,176,176,176,176,176,176,176, 6,235, 95, 96,176, 10,119,134, 53, 88, 44, 44, 44, 44, 44, 44, 44,255,164,177,250, 80,188, 72,
- 97, 37,247, 54,132, 16,138,119, 48,160, 45, 11, 11, 11, 11, 11, 11, 11, 75, 5,248,160,188,200, 27, 69,132, 44, 44, 44, 44, 44,
- 44, 44, 44, 44,172,193, 98, 97, 97, 97, 97, 97, 97, 97, 97, 13, 22, 11, 11, 11, 11, 11, 11, 11,203,135,206, 95,218,209, 40, 33,
- 36,136,213,100, 53, 89, 77, 86,147,213,100, 53, 89, 77, 86,147, 53, 88, 44, 44, 44, 44, 44, 44, 44, 44, 44,172,193, 98, 97, 97,
- 97, 97, 97, 97, 97, 97, 13, 22, 11, 11, 11, 11, 11, 11, 11, 11,107,176, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,131,197,194,194,
-194,194,194,194,194,242, 15, 65, 0,148,216, 18,128, 82,122,206,108,145, 10,180, 38, 40, 79,159,213,100, 53, 89, 77, 86,147,213,
-100, 53, 89,205, 15, 79,179, 60,109, 75,252,199,123, 13,165,244, 47,155, 0, 4,177,154,172, 38,171,201,106,178,154,172, 38,171,
-201,106,254,215, 38, 30, 27,196, 99, 97,249,151,115,128,112,145,229,231, 5, 74,221,192, 21, 38, 33,233,241, 75,204,166,204, 91,
-107,166, 4,120, 66, 98,112,134, 81,156,134,148, 71,145,111,173,201,194,194,194,242, 31,130, 53, 88, 44, 44,255,118,210,252,125,
-193,195, 34,112,224, 10,170,143,128, 99,192, 34, 0, 79,222, 90, 83,192,204,135,137,227, 14,170,127, 6, 39,191,197, 0, 66,217,
-131,205,194,194,194, 98, 30,255, 72, 37,119,177, 88, 28, 44, 20, 10,127, 32,132,136,216, 83,192,242, 87, 65, 8, 17, 9,133,194,
- 31, 36, 18, 73,240, 7,187,147, 59,106, 73,193, 49,117,214, 25,152, 74,167, 30,103, 59,169,180, 38, 95,112,140, 93,240,171,175,
-252,173, 52,121,164,131, 70,207,120,236,188,163,114, 86,234,140, 53, 64,241,118,154,255, 63, 39, 54, 66,161,240, 20, 33,196,129,
-189, 66, 63, 76, 2, 8,105,208,144,207,159, 88,131,144,118,132, 16,194, 30, 17, 22,214, 96,253,141,104,181,218,122,245,234,213,
-155, 32, 20, 10, 99, 8, 33,221,255, 75, 7, 92,161, 80,220,176,182,182, 78,177,177,177, 73,177,182,182,190, 95, 94,250, 7,106,
-124,124,157,156,156, 98,236,237,237,159, 21, 77,119,170,211,171,153, 79,139,161,179, 29, 2,123,182,126, 7,219,232, 46, 18,137,
- 98, 26, 55,110, 60, 94,163,209,212,251, 96, 15,166,134,113, 6,135,219, 54, 36, 73, 37, 77,202, 53, 56, 7, 71,171, 20, 0,183,
- 13,116,112,173,176,102, 14,227, 12,208,118, 15,227,213,178, 27,153,142,206, 87, 95,106,173,192,225,180,133,134,184,188,245, 3,
-135,195, 25,195, 48, 76,123,129, 64,240, 45,251,248,253, 48, 17,114, 56,205,111,116,239, 62,127, 74,237,218, 99,253,129,110, 37,
-153, 44,242,138,113, 53,106,212, 56, 73, 8,233,255, 14,159, 45, 63,250,251,251, 39, 16, 66,190, 97,207, 4,203,191,198, 96,245,
-169, 74,154, 15,172, 70, 46,247,171, 74,242,250, 87, 35,249, 67,170,145,107,189,171,146,118, 21,221,240,149, 43, 87, 36, 97, 97,
- 97, 78,173, 91,183,222, 35,145, 72,174, 17, 66,124, 42,162, 35, 22,139, 79,241,120,188, 62, 69,211,164, 82,233, 41, 30,143,215,
-175, 88, 90,136, 84, 42,205,145, 72, 36, 47,205,212,125, 33, 20, 10,149, 98,177,248, 69,209,116, 30,143,215, 79, 38,147,157, 42,
-150,214,167,120, 90,105,240,249,124,247,184,184, 56,167,248,248,120, 39,161, 80,232, 92, 52, 61, 54, 54,214, 41, 46, 46,238,141,
-116, 75,225,243,249,237,228,114,249,129,226,105, 10,133,226,128,185, 26,114,185,252,119, 62,159,223,174,152, 49,252, 83, 90, 69,
-205, 85,135, 14, 29,174, 37, 37, 37,121,216,216,216,216, 20,157,103,103,109,211,241,183, 45,235, 38,244,232,210, 97,140, 83,192,
- 39,181, 42,168,239, 35,149, 74,175, 53,106,212,104,207,133, 11, 23,156,118,238,220, 41,253, 96,239,222, 3, 1, 2, 16,166, 21,
- 67,169,227,211, 4,141,227,199,221,251,240, 30,196,169, 29, 13, 38,147, 29,192,109,131,109, 85, 68, 21,210,228, 25, 90, 50,148,
- 58,159,143,230, 59,182,237, 59,150,123, 33,154,231,104, 48,153,236,193, 65,235, 10,105,254,255,220,240,185, 92,238,132,229,203,
-151,115, 0,124, 77, 8, 17,254,151, 30,182,141, 43,145, 74, 31, 85,231,221,169,239, 70,154,191, 67, 67, 17, 40,147,201,238, 17,
- 66,124,223,151,253,212, 49, 76,248,158,200,200,211,131,189,189,187, 78,169, 93,251,179,226, 38,171,224,251,148,197,139, 23, 15,
- 9, 9, 9,113,172, 90,181,234, 40, 66, 8,231, 29, 28,139,149,139, 23, 47,158, 28, 18, 18,226,230,229,229, 53,247, 93,104,178,
-188, 95,222, 29, 64, 91, 0, 31, 3,248, 8, 64,163,130,239, 13, 11,166,143,241,170, 87,132,162,159, 13, 11,214, 45,156,223,184,
- 20,141,143, 75, 88,175, 97,145,244,162,191,139,127, 47,157,130,214, 0,180,232,103,241,169,159, 23,230,140,109, 86, 73,245,244,
-232, 46,154, 31, 23, 73,179,194, 30,208, 7,191, 44,164, 99, 27, 58,170, 6, 86,197,143, 21,104,125, 64, 41,165, 52, 56, 56,152,
-170,213,106,122,226,196, 9,198,217,217, 89, 35, 20, 10, 87, 2,144, 89,162, 37, 20, 10,243, 29, 29, 29,243, 36, 18,201, 86, 0,
- 66, 74, 41, 68, 34, 81,190,139,139, 75,158, 88, 44,222, 1, 64, 68, 41, 69,199,142, 29,213,148, 82, 42, 18,137,148,230,232,118,
-238,220, 89, 73, 41,165, 66,161, 80, 89,144,103,145, 88, 44,254,173, 65,131, 6,185, 34,145, 40,191, 32, 77, 40,149, 74,183, 54,
-108,216, 48, 87, 44, 22,231,155,163,107,103,103, 23,103, 50,153,232,209,163, 71,169,147,147, 83, 98, 97,186,173,173,109,156,201,
-100,162,135, 15, 31,166,142,142,142,137, 21, 56,166, 28,185, 92,190,180, 81,163, 70,217,114,185, 60,163, 72,218,178, 38, 77,154,
-228, 20,166,153, 51,201,100,178, 12, 15, 15,143, 44,185, 92,190, 12, 0,135, 82, 10,185, 92,158, 81,165, 74,149, 76, 43, 43,171,
-165,133,105,230, 76,110,110,110,163,156,156,156, 18,157,156,156, 18,109,108,108, 22,184,186,186, 38,167,165,165, 81, 74, 41,173,
- 86,173, 90, 42,165, 20,142,181, 63,105, 86,189,249,144,217, 78,129,221,199,111,216,127,243,246,149, 39, 25,105,181,219,143, 89,
-106, 93,187,135,181, 5,251, 47, 19, 10,133, 43, 93, 92, 92, 52,135, 15, 31, 54,165,164,164,208, 71,143, 30,209,164,164, 36, 90,
-218,117,253,175,159,214, 5,184,211,141,126,123, 66,103,121,132, 93, 89,220,201, 64,163, 47,208, 93,159, 57, 26, 46,143,175, 20,
- 65,127,246,255,157,110,172, 81,185, 66,154, 63,215,216,245,104,134, 71,248,154,185,227, 12, 49, 49, 49,116,226,208, 78,198, 51,
- 99, 43,189,164, 27,252,247, 87, 72,243,255,231,104,192, 39,159,124,146, 31, 27, 27, 75, 3, 2, 2,148, 92, 46,119,248,127,165,
- 53, 81, 35, 55, 84, 10,242, 21, 38, 60,218, 57,145,233, 22, 40,205,168,231,138,230,239,160, 21, 87,160,147,147, 83,250,182,109,
-219,168, 66,161, 72, 5,224,251, 62,236, 43, 0,226, 15,116,223, 94,187,246, 97,166,119,111,211,246,218,181, 15,251, 3,221,241,
-170, 91, 32, 2, 96,234,146, 37, 75,130, 13, 6, 67,240,214,173, 91,131,187,119,239, 30, 12, 96,226, 91,110,115,213,143, 63,254,
- 72, 13, 6, 3,221,186,117, 43,237,222,189, 59, 5,176,218,220,245,229,114,121,245, 90,181,106,237, 8, 8, 8,136,173, 83,167,
-142,174, 70,141, 26, 26, 95, 95,223,232,192,192,192,109, 34,145,200,139,109, 17,247,183, 93, 59,101,121,145, 70, 83,167, 78,157,
- 6,128, 78,157, 58,117, 26,165,244,227,130,229, 62, 46,250,189,248, 39,165, 52,168,232,239,146, 52, 10,167,146, 52, 75,218, 70,
-177,239,165,239, 79,225,206, 0,104, 13,224,114,241, 5,250, 84, 69,179,177,205, 42,169,213,105, 73,244,201,194,111,233,197,182,
-238,244,122, 27, 23,250,108,194, 39, 52,105,231, 74,250,101, 93, 91, 85,239,170,104, 91, 17,131,117,248,240, 97,122,230,204, 25,
-250,242,229, 75,154,146,146, 66,191,255,254,123,157, 76, 38,203,226,114,185,131,204,213,146, 72, 36, 57, 9, 9, 9,244,251,239,
-191,215, 22, 68,155,170, 74,165,210,156,228,228,100,186,112,225, 66,157, 68, 34,137, 4,224, 35, 18,137,242, 95,190,124, 73,197,
- 98,177, 89, 6, 75, 42,149,230, 60,121,242,132,138, 68, 34, 37, 0, 31, 71, 71,199,200,243,231,207, 27, 24,134,161,238,238,238,
-185, 0,170, 58, 58, 58,190,184,112,225,194,235, 52,115, 13,150, 90,173,166,103,206,156,161,206,206,206,137,197,211, 79,158, 60,
-249,134,241, 50,243,120, 58,187,186,186, 62, 40,204,159,151,151, 87, 26, 0,103, 55, 55,183,135,151, 47, 95, 54, 20,152,153, 52,
-115,245, 92, 92, 92, 82, 83, 83, 83,233,234,213,171,181, 10,133,226, 62, 0,103, 23, 23,151,212,180,180, 52,186,118,237, 90,173,
-149,149, 85, 48, 0,103,115,180, 28, 28, 28, 18,117, 58, 29,205,206,206,166,141, 27, 55,206,191,126,253, 58,205,205,205,165,148,
- 82, 90,165, 74,149, 84, 74, 41,252, 90, 15,255,225,246,243,252,220,207, 39,175,219,231,213,104,224,194,211,119, 18,226, 55, 31,
-186, 23,236, 16,216,163,147, 57,219,224,114,185,131,100, 50, 89,214, 79, 63,253,164,207,202,202,162,145,145,145,244,214,173, 91,
-244,214,173, 91, 52, 37, 37,229,195, 52, 88,251,193,165, 27,253,122,208,141,126,193,219, 6, 59,164,231,221,223, 77,233,217,111,
-232,203, 31,170,210, 89,157, 20,121,204, 70,191, 96,186,209,191, 55,157,211,154,103,145,230, 47, 53,186,209,141,126,193, 63,246,
-241,204,120, 16,124,151, 94,190,124,153,174, 95,185,132,142, 13,170,164,100, 54,250, 5,211,159,107,244,178, 72,179,200, 36, 18,
-137,158, 95,187,118,141, 94,185,114,133,206,157, 59,151, 74,165,210,216,183, 63, 14, 53, 4,244,103, 95, 79,186,206,167, 13,221,
-226,227, 74, 47, 85, 44,111,127,181,185,106,239, 43,140, 79,127,112,136,210,204, 23, 52,121, 89, 0,237,228,199,127, 43,147, 85,
- 96,174,210,162,163,163,105,114,114, 50, 93,177, 98, 5,181,178,178,122,175, 77,150, 31,208, 3,192,180,165, 75,151,190, 54, 87,
-235,214,173, 11,126,252,248,113,176,135,135,199,137,183,216,214,234,165, 75,151,190, 54, 87,235,214,173,163,143, 31, 63,166,158,
-158,158,113,229,173, 59,120,240, 96,105,179,102,205,130, 7, 13, 26,164,218,182,109, 27,141,142,142,166,143, 31, 63,166, 75,151,
- 46,165,179,103,207,166,191,254,250, 43,237,213,171,151,178,113,227,198,183,123,247,238, 45,182, 48,111, 60, 74,169,176, 96,226,
- 83, 74, 11, 13, 38, 15, 0, 31, 0,151, 53, 85,127,246, 6,165,121,145,210, 76, 84,105,198,170,248,188, 50, 12, 88,153, 70,173,
-188,237,149,181, 63, 69, 67,168,151, 40,165,127,170,251,194,163,152, 55,242,187, 31,196, 81,219, 86, 32,101,239, 90,112,179, 83,
-192,207,203,128,246,218,113, 24,174, 29,193,144,166, 77, 37, 18, 66,230, 87, 36,222, 39,145, 72,192,227,241,144,152,152,136,196,
-196, 68,140, 26, 53, 74,112,237,218, 53,155,150, 45, 91,254, 34,151,203, 31, 18, 66,106,155, 17, 22,134,155,155, 27,198,142, 29,
- 43,220,190,125,123, 53,133, 66,113,223,100, 50,241,157,157,157, 49,102,204, 24,193,254,253,251,171,216,216,216,220, 53,153, 76,
- 2,161, 80, 8,115,235, 92, 18, 66, 32, 16, 8, 96, 52, 26,249,141, 26, 53,186, 23, 26, 26,234,213,186,117,107, 94, 88, 88, 24,
-210,211,211,121, 13, 27, 54,124, 24, 26, 26,234,221,170, 85, 43, 94,100,100, 36,114,114,114,168,185,186, 58,157, 14, 34,145, 8,
- 28, 14,231,141,116,173, 86, 11, 75,242, 88, 88,252,215,188,121,243,144, 71,143, 30,213,105,221,186, 53,239,201,147, 39, 72, 79,
- 79,231, 55,110,220, 56,228,225,195,135,181, 91,180,104,193,123,246,236, 25,114,114,114,204,110, 98, 47, 22,139,225,232,232,136,
- 33, 67,134, 8,247,239,223, 95,199,209,209,241, 17,143,199, 19, 58, 56, 56, 96,208,160, 65,194,253,251,247,215,117,118,118,126,
-104,102,145, 33, 23, 0, 12, 6, 3, 70,141, 26, 37,179,178,178, 66, 92, 92, 28, 24,134,129,201,100, 2, 0,100,100,101, 60,126,
-248,248, 73,216,144, 1,125, 90,171,245, 90,237,205, 59,247,158, 86,171,226,233, 78, 8,173, 82,206,177,172, 45,149, 74, 31,246,
-239,223,127, 83,108,108,172,205,160, 65,131,248,209,209,209,200,200,200, 0,159,207,135, 88, 44,126,227, 24,127, 80,228, 6,216,
-131, 65,251,152, 52,157, 72,100,227,174,144,187,250, 2,177, 87, 80,213, 81, 4, 46,135, 43,190, 27,169,146, 1,180, 61, 60,210,
-237, 45,211,100,218, 71,166,234, 68, 6,187,154,114, 55,119, 15,100,100,100,160,114, 53,127,104,132,142,194, 27, 47,148,114, 16,
- 11, 53,255,127,174, 90,250,248,248,184, 84,175, 94, 29,233,233,233,168, 87,175, 30,108,109,109,109, 9, 33,237, 43,124, 12,182,
- 85, 17, 33, 23,205, 65,200,114,112, 57,115, 97,224, 45,194,139,180,122,248,165, 62,255,125, 42, 22,180,146, 11,111,237,222,179,
-183,146,189, 71, 13,224,248,231,112,182, 17, 97,203,152,122,118,142,214,162,195, 21, 41, 46, 36,132, 4, 58, 59, 59, 95,184,125,
-251,182,131, 88, 44,198,253,251,247, 17, 16, 16,128, 21, 43, 86, 56,218,218,218, 94,121, 31,138, 11, 41,165, 52, 12, 56,250,227,
-163, 71, 91,119, 68, 68, 28, 27,236,237,221,117,144,175,239,130,209,253,251, 15, 31, 55,110, 28,150, 44, 89,130,195,135, 15,163,
-121,243,230, 24, 57,114,164, 33, 54, 54,118,123, 5,139, 5,215, 46, 91,182,108,236, 55,223,124, 83, 92, 83, 31, 19, 19,243, 99,
- 89,235, 6, 6, 6,186, 63,127,254, 60, 97,194,132, 9,245,118,236,216, 33,145, 74,165,200,206,206,198, 47,191,252,130,105,211,
-166,129, 16, 2, 74, 41,126,253,245, 87,233,103,159,125,214, 40, 34, 34, 34,161, 74,149, 42,230, 84,223, 32, 0,196, 0,164, 5,
-147, 12,128,116,247,238,221,214, 61,122,244,176, 42, 72,147, 0,144,176, 13,189, 74,164, 68, 47, 82,228,156, 31, 43,118,173,117,
- 45,158, 86,124, 30,165,180,107, 89, 26, 22, 94,219, 93,205, 93,191,232,219,167, 13, 33,228,242,159,196,128,218, 46, 94,126,200,
- 57,187, 31, 18, 30,129,132, 91, 48,241, 8, 56, 47, 31,163,178,152, 15, 3,165,129, 21,172, 63, 5,137, 68, 2,137, 68, 2, 66,
- 8,178,178,178, 96,101,101,133,189,123,247,138, 87,175, 94, 93, 75, 42,149,222,180,182,182, 94, 84,158, 97, 1,128,103,207,158,
-161,110,221,186,228,216,177, 99, 86,163, 71,143,230, 1, 64, 76, 76, 12,106,213,170, 69, 46, 94,188,168,152, 52,105, 18, 17,137,
- 44,187,150, 5, 2, 1, 38, 79,158, 76,174, 95,191, 46,151, 74,165,120,242,228, 9,242,243,243, 49,105,210, 36,222,141, 27, 55,
-228, 50,153, 12, 17, 17, 17,208,104, 52, 22, 25, 55,157, 78, 7,129, 64,240,198, 58,132, 16,232,245,122, 8,133, 66,179, 77,129,
-131,131,195,236, 6, 13, 26, 28,184,116,233,146,189, 68, 34,193,227,199,143,161, 82,169, 48,127,254,124,233,181,107,215,236, 21,
- 10, 5,194,195,195,161, 82,169, 44, 50,109,133,219,127,241,226, 5,124,124,124,200,241,227,199,157, 70,142, 28, 41, 46, 60,166,
-190,190,190,228,196,137, 19,206,254,254,254,251,157,156,156,102,149,165,197, 48, 12,146,146,146, 16, 18, 18,130,151, 47, 95, 34,
- 45, 45, 13,233,233,233,200,203,203,131,209,104,124, 85, 63, 46, 47,247,248,238,125, 71, 31, 74, 36, 18,105,128,175,143,199,227,
- 39,161,169, 18,137, 68,234,233,225,225, 75,200,220, 18, 15,134, 66,161, 88, 36,145, 72,110, 30, 57,114,164,246,166, 77,155, 68,
-233,233,233,136,137,137, 1, 33, 4, 98,177,248,245,196,229,114, 63,188,199, 15, 33, 4, 68,231, 3, 66,234,221,122,169,180,107,
-217,117,128, 0,145,167, 0,198, 0,112,120,104, 83,219,157,119,248,177,210, 25, 20,181,161,133, 63, 96,198,201, 39,132, 0,250,
-234, 0,105,112,230,185,209,190,249, 39, 99, 4, 9, 9, 9, 16, 8, 4, 16,137, 68,168,215,238, 83,222,238,135, 6, 23, 16,212,
-129, 30,126,102,105,190,249,103,234,251,217,179,103,203,138,106, 14, 31, 62, 92,102,109,109, 61,187,194,230, 74, 41,109, 10, 19,
-253, 54, 36, 65,237,185,224,120,178,255,203, 84,181, 63, 40,190, 3, 12,117,223,214,100, 17, 66,218,136,197,226, 72, 66, 72,139,
-183, 50, 87, 10,225,205, 61,123,246, 86,178,171,252,202, 92,193,168, 1,248, 18,184, 56,218, 96,203,248,182,118,142, 54, 18,139,
- 76, 86,129,185, 58,127,235,214, 45, 7,177, 88,140,224,224, 96, 8, 4, 2,136,197, 98,212,170, 85, 11, 27, 55,110,116,180,179,
-179,123,175, 76,214,226, 71,143,182, 45, 10, 9,121, 54, 53, 48,208,191,167, 76,102,247,213,160, 65,214, 51,102,204, 56,118,228,
-200,145,173, 31,127,252,113,250,157, 59,119,126,162,148,238,183,240,252, 16, 66,200,186,229,203,151,127, 85,104,216,102,204,152,
-241,235,145, 35, 71, 22,125,252,241,199, 73,119,238,220,153, 64, 41, 93, 87,150, 70,126,126,254,145,153, 51,103, 90,127,242,201,
- 39,133,191,113,237,218, 53,108,223,190, 29, 50,153,236,141,101,187,119,239,142, 17, 35, 70,216,234,116,186,223,203,210,116,114,
-114, 10,186,117,235, 86, 0, 0, 1, 0, 81,161,193,122,242,228,137, 77,110,110,174,141, 92, 46,183,113,117,117, 85, 20,154,172,
- 79, 62,249,196,134,207,231,183,100, 61,213, 27,148,232, 69,138, 26, 28,115,210, 42,186,188,185, 38,203, 34,131, 69, 41,189, 12,
-160, 85, 73, 11,233, 51, 83, 32,130, 9, 18, 46,129,148, 91,196,100,129, 1, 47, 39, 21, 21,109,136, 91,244, 69, 40,145, 72, 32,
- 22,139, 95, 71,114,114,114,114, 64, 8, 41,215,108, 20, 26, 7,185, 92, 14,181, 90, 13,189, 94, 15,177, 88,252, 58,205,104, 52,
-194,104, 52, 66, 34,145, 64, 36, 18, 89, 28,193, 50, 24, 12, 8, 9, 9, 65, 68, 68, 4, 56, 28, 14,100, 50, 25, 12, 6, 3,158,
- 62,125,138,132,132, 4,240,120, 60, 72,165, 82,139, 12,140,201,100,130, 80,248,231,250,189, 6,131,193,162, 8, 22,135,195,129,
- 74,165,162,207,159, 63, 71,116,116, 52, 4, 2, 1,172,172,172, 32, 20, 10,145,150,150,134,248,248,248,215,105,150,228,175,112,
- 89,137, 68, 2,165, 82, 89, 88,215,237,117,154, 86,171, 5, 33, 4, 92, 46,183,220,243, 99, 50,153,144,152,152,136,180,180, 52,
-196,197,197, 33, 61, 61,253,181,201, 98,152,183,239,183,242,222,189,123, 52, 52, 52, 20, 90,173, 22, 34,145, 8, 98,177,248,141,
- 79, 30,239, 3,236,234,109,125,160, 53, 12,252, 14,233,249, 6, 81,154, 94, 96,237, 28, 24, 4, 68,158, 4, 56, 60, 64,108,139,
- 38, 53,171, 34, 38,203, 36, 11, 79,209,137, 65,208, 17,235,124,109,205,210, 52,241,219,167,229, 25, 68,209,122, 71,171, 26,181,
-235, 35, 37, 37, 5, 34,145, 8, 34,145, 8, 13,154, 7, 33, 50,195, 36, 13, 77, 80, 75, 65,209,193, 44,205,255, 95, 79,213,228,
-114,121,211, 22, 45, 90,144,162,154, 93,186,116, 1, 33,164, 22, 33,196,223,162,253, 95,227, 45,132, 94,218, 4,124,250,109,104,
-146,202,237,240, 19,141,111,183,158,159,218,173, 60,151,234, 31,150,164,241, 2, 99,156, 8,170,175, 95, 81,147, 69, 8,105,173,
- 80, 40,142,173, 89,179,198, 75, 44, 22,159, 36,132, 84,232, 5, 40,151,112, 55,124,255,213,128, 74,182,133,230,202,160, 2,120,
- 18,128, 47, 1,120, 18,184, 56, 57, 96,254,136,246,118, 82, 49,255,160, 5, 70,117,247,186,117,235, 28,139,155,171,194,169, 94,
-189,122,152, 53,107,150,163,157,157,221,174,127,248, 63, 64, 7, 27, 27,155, 29, 65, 65, 65,183, 18, 21,138, 17, 73,245,235, 11,
-207, 91, 91,231,124,148,147, 99,237,249,228,137,222, 15,120, 12, 96,125, 92, 92, 92, 39,115,205, 21, 33,164,191,181,181,117,112,
- 80, 80,144, 94,161, 80,196,174, 88,177,226,203,175,191,254, 26, 75,150, 44,193,204,153, 51, 55, 1,248,130, 82, 58, 61, 46, 46,
-206,173, 60,115, 5, 0,201,201,201, 3,167, 76,153,146,158,158,158, 14, 0,168, 85,171, 22,178,179,179, 49,113,226, 68,124,251,
-237,183, 0,128,186,117,235,130, 82,138,148,148, 20, 44, 91,182, 44, 37, 57, 57,121, 88, 57,127, 40,227,246,239,223,223, 72,175,
-215,187, 23, 20, 3,138,178,179,179,173, 50, 51, 51, 21,122,189, 94,198, 48,140,204,198,198, 70, 14, 64, 58,100,200, 16, 94, 72,
- 72, 72,128,209,104, 76, 96, 61,213, 27,230,165, 84, 47, 82, 65,142,191, 77,164,170,164, 8,152,217,193,138, 2, 33, 82,244,179,
- 40, 92,130, 71,177,247,174,192, 46,176,254, 27,209, 43, 41,151, 64, 98,101,141,200,184, 24, 8, 64, 66,222,214, 96, 21,154,172,
-208,208, 80,124,244,209, 71,170, 57,115,230, 60, 86, 42,149, 77,179,178,178,166,153, 99, 6,172,173,173,113,253,250,117,218,171,
- 87,175,220, 85,171, 86, 25, 11,211,110,221,186, 69,219,183,111,159, 55,111,222, 60, 90,188, 88,206, 28,131,181,106,213, 42,218,
-182,109,219,156,219,183,111, 83,153, 76, 6,169, 84,138, 85,171, 86, 25, 91,181,106,149,115,241,226, 69, 42,147,201,254,244,111,
-167, 60, 83, 84,104,176,138,154, 30, 14,135, 3,134, 97, 44, 50, 88,169,169,169,115,195,194,194,250,180,107,215, 46, 37, 36, 36,
-132, 90, 89, 89,193,218,218, 26, 83,167, 78, 85,213,173, 91, 55,245,209,163, 71,175,211, 44, 41, 42, 43,220,190, 66,161, 64, 72,
- 72, 8,237,218,181,107,234,250,245,235, 53,133,105, 79,158, 60,161,157, 59,119, 78, 9, 9, 9,233,147,156,156, 60,175,188, 8,
-214,203,151, 47, 95, 71,172, 52, 26, 13,210,211,211, 17, 23, 23,247,186,136, 80, 45,179,234, 52,160,111,183, 58,106,181, 90, 21,
-250,236,121,108,173,154, 1, 78,106,181, 90, 21, 19, 27,251,140,210,217, 37,186,176,188,188,188,105,106,181,186,233,130, 5, 11,
- 30,247,233,211, 71, 21, 30, 30,254, 39,115, 37, 22,139, 63, 76,131,197, 97, 92, 64,104,139,171,207,243,109,218,119,235, 39, 36,
-201,119, 0,125, 62, 32,178, 5, 68,182,224,201,236,209,185,101, 93,238,182, 91,185, 46,160, 76, 51, 8, 68,238,229,106,242,169,
- 51,192,180, 60,251, 76, 99,219,162,247, 88, 97,102,102, 38,184, 92,238,107, 51, 36,149,201,240, 81,207, 33,156, 95,239,104, 93,
- 0,218, 28,132,235,110,110,118,133, 66,225,228,239,191,255, 94,144,149,149, 5, 14,135,243,127, 77,169, 20,163, 71,143, 22, 89,
- 89, 89,205, 52,123,223, 15, 4, 8,192, 23, 53, 1, 67,191, 13, 79, 86,187, 29,121,164,246,253,110,209, 22, 73, 96,221, 70, 24,
-213,198, 73,178,232, 68,106,192,195, 4,149, 23, 96,154, 0,163,174,129,165, 38,139, 16,210, 82,161, 80, 28,191,119,239,158,180,
- 75,151, 46, 88,182,108,153, 76, 34,145,156, 36,132, 88,252,192, 87,230,155,190,158,183,250,183,148, 71, 63,117, 4,244,202, 87,
-198,170,200,148,154,207, 96,214,150, 11, 57, 6, 3, 29, 96,174,166, 90,173, 30,250,197, 23, 95,100, 28, 60,120,240, 79,230, 74,
- 44, 22, 35, 42, 42, 10, 11, 22, 44,200,204,204,204, 28,246, 79,154,171,175,191,254,122, 65,124,124,188,223,217,179,103,121,105,
-105,105, 78,203, 55,111,206, 57,144,147,147,185,232,201,147,240,233, 53,107,250, 76,173, 93,123, 88,105, 93, 56,148,102,174,190,
-250,234,171,221,241,241,241,245,206,157, 59,199, 79, 75, 75,115,255,234,171,175,176,116,233, 82,204,156, 57,115, 35,128, 81,133,
-181,163,205, 69,167,211,133,103,101,101,117,237,216,177, 99,118, 86, 86, 22,106,215,174,141,110,221,186,193,197,197, 5,110,110,
-110,232,209,163, 7,124,125,125,145,145,145,129, 1, 3, 6,100,166,165,165,117,164,148,150,217, 10, 61, 35, 35,227,197,174, 93,
-187,158,127,253,245,215,245,227,227,227,107, 0,176,207,203,203,147,229,229,229,137,116, 58,157,196,214,214,214,182,110,221,186,
- 14, 35, 71,142,148,223,191,127, 63, 32, 33, 33, 33, 15, 64, 52,107,171, 94,155,154, 82,189, 8,128,180, 2,163,163, 43,246,153,
- 86,206, 60,115,215, 45,241,187, 25,203,149, 31,193, 42, 13, 61, 48,107,251,254,109, 26,161, 71,117, 88,251,213,129, 84, 44,134,
- 68, 40,132,196,214, 30, 90,134,193,230,168,100,149,146,210,153, 21, 56,144,175,139, 7,197, 98, 49,242,243,243, 49,118,236, 88,
- 77,223,190,125,179,163,162,162, 70,231,230,230,214,161,148, 62, 50,199, 12, 40,149, 74,204,153, 51, 71, 61,117,234,212,151,121,
-121,121,245, 4, 2,129, 65,175,215,227,251,239,191,215,140, 25, 51, 38, 58, 59, 59,187,161, 64, 32,208, 91,250,178,229,243,249,
-224,241,120,134,156,156,156,122, 83,166, 76,137, 88,176, 96,129, 90, 32, 16, 64, 32, 16, 24,114,115,115,107, 77,155, 54, 45,124,
-218,180,105,106, 62,159,111, 81,100,172, 48, 34, 84,188,136,176,104,164,200, 92, 12, 6,195,133,212,212,212, 58,223,124,243,205,
-131, 85,171, 86,169,228,114, 57, 68, 34,145, 46, 53, 53,181,246,151, 95,126,249,112,217,178,101, 42,185, 92,110, 81, 4, 75,175,
-215,131, 97, 24,172, 89,179, 70,245,205, 55,223, 60, 76, 75, 75,171, 93,112, 65, 98,213,170, 85,170, 47,191,252,242, 65, 74, 74,
- 74, 29,131,193,112,193,140,104,157, 41, 55, 55, 23, 60, 30, 15, 79,158, 60,209, 10, 4, 2,112, 56, 28,188,120,241,226,181,193,
-178,179,179, 11,168, 83,171,166,255,111,187,247, 95,150, 8, 68,162,166,141, 26,212,120, 25, 29, 19, 79, 41,137, 46,231, 26,122,
-164, 84, 42,235,196,197,197,141, 30, 62,124,120,246,119,223,125,167,201,207,207,127,227,133,195,231,243, 63,188,167, 16, 7, 82,
- 16, 72,158,167,106, 21, 98,142,145,224,217,161, 87,230, 74,108, 3,136,109, 1,177, 45, 42, 85,114,199,157, 40,149, 2, 28, 8,
- 97, 50, 56,153,113, 67,202, 64, 32,125,146, 2, 5, 95, 40, 33,201,201,201,175,141, 80,225,228, 85,189, 6,238,199,228,203, 65,
-168, 8, 92, 88,210,149, 72, 87,123,123,123, 94, 82, 82,210,159, 52, 3, 2, 2,184, 6,131,161,163,217, 74,137, 38, 87,128,249,
-250, 89,170,198,237,143,135, 42,223,241,139,126,149, 72, 76,217,192,189,213, 8,172,230,134,241,189,235, 10,103, 28, 78, 11,188,
- 27,173,170, 6, 30, 29, 13, 38,223,209, 2, 99,208, 66,161, 80,156,188,123,247,174, 84,161, 80,224,229,203,151,104,212,168, 17,
-126,249,229, 23,169, 84, 42, 61, 65, 8,105, 99,201,105,186,149, 76, 99,242,243, 76, 77, 39,239,143, 77,126,148,100,124,195, 92,
-165, 41, 41,190,248,241, 72,118, 86,174,230,211,155,177,229,223, 71, 69,174,249, 7,217,217,217, 29,102,206,156,153,145,150,150,
-246,198,181, 30, 19, 19, 83,104, 4,218, 80, 74, 67,254,169,203,211,218,218,122,208,162, 69,139,112,247,238, 93,116,233,210, 5,
- 87,174, 92, 65,102,102, 38,246,156, 60,249,124,215,243,231,211, 11,235,100,149,212,133, 67,105, 88, 89, 89,125,183,104,209, 34,
-220,187,119,239,181,102, 70, 70, 6, 22, 45, 90, 20, 15, 96,140,165,230,170,144,148,148,148, 59,225,225,225, 29,107,215,174,253,
-116,205,154, 53,241,174,174,174,204,200,145, 35,241,197, 23, 95,192,209,209,209,180,114,229,202,216,150, 45, 91, 62,137,136,136,
- 8, 82, 42,149,143,205, 56, 63, 52, 61, 61,253,250,166, 77,155,110,182,107,215, 78, 54,120,240, 96,167,195,135, 15,219,171, 84,
- 42, 55,129, 64,224,172,211,233,132,161,161,161,188, 3, 7, 14,184, 62,125,250, 52, 74,173, 86,223,169,104,222,255,131,220, 45,
-136, 70,157, 43,246,121,183,156,121,230,174, 91,218,247,242,150, 43,219,232,148, 55, 13,170,134, 57,163,107, 42, 84, 55, 6, 55,
-161,201, 35, 91,208,148,126, 53,232,181,214,118,116,184, 55, 81, 14,173, 96, 55, 13, 38,147,137,166,164,164,208,148,148, 20, 58,
-127,254,124,163, 68, 34, 81, 75,165,210,149,176,176,155, 6,185, 92,158,239,227,227,147,103,109,109,253,186,155, 6,133, 66,145,
-239,231,231,151,103, 99, 99,243,186,155, 6,153, 76,150, 79, 41,165,114,185,220,172, 86,132, 86, 86, 86, 57,249,249,249, 84, 42,
-149, 22,118,211, 32,176,182,182,222,228,227,227,147, 39,151,203, 11,187,105,224,219,218,218,110,240,245,245,205, 83, 40, 20,249,
-102,182,208,139,139,143,143,167,241,241,241,180,114,229,202,137, 69,211, 99, 98, 98,104, 76, 76, 12,117,119,119,175, 80, 55, 13,
-142,142,142, 75, 27, 54,108,152,233,232,232,152, 81, 36,109, 89,195,134, 13,179, 10,211,204,108,249,151,209,160, 65,131, 44, 71,
- 71,199,215,221, 52, 56, 58, 58,102, 20,104, 91,212, 77,131, 68, 34, 25, 37, 22,139, 19,197, 98,113,162, 72, 36, 90, 80,165, 74,
-149,212,125,251,246,209,149, 43, 87, 82,133, 66,241,170,155,134,128,238, 77,171, 55, 27, 54,221, 49,160,199,119,111,211, 77,131,
- 84, 42, 93, 41,145, 72,212, 11, 23, 46, 52, 42,149, 74,106, 48, 24,104,193,195,235,195,106, 69,248,139,111,117,250,179,255,145,
-136,121, 94,161,223,180,146,106, 30,207,175, 67,233,239,159, 80,122,226, 11, 74, 47, 76,166,119, 54,142,164,205,188, 68,166,235,
- 19, 43, 63,163, 27,252,254, 48,171,107,133, 95,106, 85,167, 63,251,159,120, 62,215, 43,116,104, 75, 55,205,230,245, 43,233,237,
-219,183,233,147, 39, 79,232,203,151, 47,233,137, 67,251,104,179,106,210, 87,154, 63,251, 31,177,164,187, 6, 0,205, 69, 34, 81,
-254,138, 21, 43,232,173, 91,183, 94,107, 30, 57,114,132, 74,165, 82, 21, 96,102, 43,100,128,208,117, 1,159, 24,215,251, 93,155,
-217, 94,158,159,113,108, 50,165,143,183, 81,250, 75, 32,165, 91, 27, 83,186,239, 99, 74,143, 14,163,183, 86,246,166,205,189, 4,
- 6,186,193,239, 42,221, 18,208,222,220,124,242,249,252,220,131, 7, 15,210,196,196, 68,122,229,202, 21,122,239,222, 61, 26, 22,
- 22, 70, 99, 99, 99,233,241,227,199, 41,159,207,215, 0,176,184,149, 98, 99,103,120, 6,249, 8,146, 30, 46,110, 78,233,225, 1,
- 52,109,215, 32,218,181,166, 34,179, 73,101, 94,187,183,104,109, 85,215,222,222, 62,253,248,241,227, 52, 42, 42,138, 94,190,124,
-153, 58, 57, 57,165, 3, 8,252,167,175,207,160,160,160,219,148,210,224, 46, 93,186, 4, 3, 56, 21, 20, 20, 20, 28, 25, 25, 25,
-220,168, 81,163, 91, 40,163, 11,135,178, 52, 63,250,232, 35, 61,165,148,118,233,210,133, 2, 72, 12, 10, 10,162,145,145,145,180,
- 81,163, 70,186,119,212,122,141, 11, 96, 24,159,207,223,108,103,103,119,209,214,214,246, 2,151,203,253, 5,192, 96, 75,158,119,
- 37,104, 86, 2, 16,128, 87,253, 37, 53, 40,248,238, 6,182, 5,225,127,163, 85,164,185, 11,246,246, 66,243,207,170,145,203, 3,
-171, 34,111, 64, 85,228,127,238, 77,174,125,234,133,118, 21, 25,109,187,208, 96, 29, 61,122,148, 86,174, 92, 89,169, 80, 40,174,
- 1,240,169,200, 8,222,182,182,182,167,184, 92,110,159, 18,210,250, 21, 77,179,182,182, 14,177,177,177,201,177,178,178,122,105,
- 78, 62,173,172,172,194,164, 82,169,210,202,202, 42,172, 88,151, 0, 61,236,237,237,143, 23, 75,235, 94, 60,173,180,125,119,113,
-113,137, 75, 76, 76,164,105,105,105,212,195,195, 35,177,184,241, 74, 78, 78,126,195,120, 89, 58,122, 57,143,199,107,231,232,232,
-120,160,188,180,178, 52,157,157,157,127,231,241,222,124,248,151,148, 86,145, 81,214, 1,248, 86,170, 84, 41,117,249,242,229, 84,
- 46,151,167, 22,157,231,215,234,243,239,111, 63,207,207,253, 98,202,207,251, 28,107,244,172, 85,145,145,219, 1,248, 40, 20,138,
-107,158,158,158,202,243,231,207,151,105,176,240,111, 29,181,126,127, 13, 1,221, 88,163, 57,221, 80,227,120,216,108,207,167,195,
- 26,203,180,193,203,187, 80,122, 97, 50,189,245,243, 23,180,169,151,240,149, 17,218,232,127,146,254,234,219,138,174,174, 38, 52,
- 75,115,179,119, 75,186,209,255,100,232, 44,207,167,159,212,119,212,237,222,182,145,190,120,241,130, 30, 57,176,139, 54,169, 90,
- 96,174, 54,212, 56, 67,127,174,209,214, 44,205, 18, 76,214,150, 45, 91,232,139, 23, 47,232, 31,127,252, 97,150,185,122, 67, 19,
- 32,244,231,128,158,198,245,126,215,166, 5,201,179,191,104, 44,214, 14,168, 43,212,245, 8, 20,232, 59, 84, 23, 24,155,121,242,
- 76,117, 92, 57, 76, 13, 71,208, 14,126, 18, 45,221,224,119,149,110,168,209,209,220,124, 10,133,194, 88, 20,233, 19,167,248, 36,
- 18,137,210, 74, 51, 88,229,157,247,198,206,240, 12,242, 21, 37,157,159,215,142,118,171,173,200, 48,199, 92,149,167, 9,160,174,
-131,131, 67,250,214,173, 91,169,179,179,115,154, 57,230,234,239,184, 62,173,173,173,119,228,231,231, 7,159, 62,125, 58, 56, 40,
- 40, 40,120,199,142, 29,193,215,174, 93, 11,150, 74,165, 59, 74,235,194,161, 6,208,177, 44, 77, 43, 43,171,224,188,188, 60,122,
-250,244,105, 26, 20, 20, 68,119,236,216, 65,175, 93,187, 70,165, 82,105,240,123,117,111,178,154,236, 84, 17,131,245, 46, 79, 0,
- 0, 58,120,240, 96,149, 84, 42, 77, 1,208,253,191,116,241, 57, 56, 56,220,112,118,118, 78,113,118,118, 78,113,116,116,188, 95,
- 82,186,131,131,195,253, 15,249,198, 3,224, 43, 16, 8, 98,248,124,254,179,162,233,142, 1,221,155,122, 55, 31, 58,211, 57,176,
-123,231,183,205, 39,128,238, 82,169, 52,165, 87,175, 94,202, 15,206, 96, 81, 10,186,186,154,176,208,100, 61,158,233, 25,214,173,
-166, 84,255,203,132, 14,180,105,149, 98,230,106,171,167,200, 34,205, 2,147,245, 96,134, 71, 88, 91, 95,185,113,209,204,241,180,
- 73, 85,201,155,230,202, 18,205, 98, 38, 75, 42,149,230,205,158, 61,219,236,200,213,159, 52, 55,251,121,208,159,253,119,190, 50,
- 79,229, 77, 53, 54,211,181,126, 30,239,203,121,111,236, 12,207,143,124, 69, 33,230, 70,174,204,209, 4, 80,215,214,214,246,169,
-185,145,171,191, 99,223, 1,116, 24, 61,122,116,112,100,100,100,240,203,151, 47,131,175, 93,187, 22,220,179,103,207, 96, 0, 29,
- 74,234, 39, 75,223,171,151,182, 46,135, 51,190, 28,205,254,163, 71,143,166,145,145,145,244,229,203,151,244,218,181,107,180,103,
-207,158, 20, 64,127,214,184,176, 6,235,125,157,254,145, 26,192, 10,133,226,254,193,131, 7, 79,169,213,234, 5,148, 82,237,127,
-169, 16, 57, 45, 45,173,153, 37,233, 31,104, 69,198,103, 0, 60,255, 84,105, 63,228,240, 77, 0, 55,223,209, 54,142, 16, 66,206,
-156, 58,117,106,134, 66,161,232,244,193, 29,196,177, 17, 58,172,241,190, 7,161,112,113,205, 74,210,169,223,119,161,100,209,233,
- 27,158, 75,122, 57,197, 54,243,150, 69,129,207,252, 8,162,189,131, 97,209, 90, 11, 53,239, 64, 98, 88, 92,167,178,116,234,194,
- 30, 32, 63,158,220,230,185,180,167,125,108,179,106,242, 88, 80,252, 8,145,234,166, 69,154,111,158,147,235,132,144,206,203,151,
- 47,223,174, 82,169, 70, 80, 74, 47, 90,254,240,224, 36, 67,105,152, 5, 3,183, 38, 40,132,101,108, 76, 5, 14,158, 32,131,147,
-242,190,156,178, 91,201, 52, 6, 64,224, 59,190,151, 30, 0,168,241,158,221,223,103, 8, 33,216,181,107,215, 32,127,127,255,106,
-161,161,161, 47, 85, 42,213, 78, 74,233,153,162,117,149, 8, 33, 71,127,124,244, 72,185, 54, 52,244,186,142, 97,174,151,163,185,
-167, 64,243, 59,127,127,255,192,208,208,208, 16,149, 74,181,156, 82,186,135,173,154,196,242,190,242,143, 24,172,220,220,220,250,
-236,161,103,249, 27, 30,244, 90, 0,223, 23, 76, 31, 30, 69, 76, 86,125, 15,201,216,131,163, 37, 42, 80, 18, 15, 62,179,210, 98,
-115, 85,130,201,106,228, 41,249,246,143, 81, 18, 21, 40,146, 65,241,211,219,152,171,162, 38, 11, 64,213, 10, 11,244, 14,213, 3,
-136, 2, 33,209,152,131,210, 43, 71,207,193,235,191,217, 44,255,140,201, 2,112,166,156,101, 40,128, 11, 5,147, 57,154,123, 0,
-176,134,138,133, 53, 88, 44, 44, 44,127,147,201, 58, 16,112, 23,233,220,137,224,160, 42, 96,140,129,210,152,140,177,209,186,183,
-212,188,141,116,242, 13,184,240,133,208, 24,129,124, 93, 50, 70,191,133,230, 95,240, 6,199,171,186, 81, 37, 51,155,189, 52, 88,
- 88, 88, 88,131,197,194,194,242, 54,188,138,234,196, 23, 76,239,175, 38, 11, 11, 11,203,127, 8, 2, 32,168,148, 63,136,231,204,
- 22, 33, 36,168, 2,127, 64,207,177,154,172, 38,171,201,106,178,154,172, 38,171,249,223,210, 44, 79,219, 18,255,241, 94,243, 79,
-180, 34,100, 53, 89, 77, 86,147,213,100, 53, 89, 77, 86,147,213,252,144, 39, 14, 88, 88, 88, 88, 88, 88, 88, 88, 88,222, 41,255,
-104, 29, 44,169,131,175, 43,120,156,218,132,161,254, 0, 64, 57, 36, 12, 70,230,145, 42,253, 89,210,219,106, 43, 42,249,217, 81,
- 8,247, 19,232,250,228, 37,132,103,190,173, 94, 45, 63,235, 94,206, 14,138, 65,201, 25, 57,219,159,132,229, 29,182,100, 93, 27,
-155, 42,214, 98, 59,219,222, 90,189,161,166, 80, 32,136,213,103,231,254,146,153, 25,145,199, 94,126, 44, 44, 44, 44, 44, 44,255,
- 49,131, 85, 37,176,229, 93,177, 88,226, 5, 0, 12,165, 96, 40,160,204,205, 14, 78,138,184,219, 17, 0, 28,189,234,159,230,139,
-173,234, 51,244,213,124, 19, 3, 24,245,154,168,156,232, 91, 13,205,217,176,220,201,239,147,160, 14, 65,189,186,118,253,216,175,
- 86,205, 90,222, 0,240,248,201,227,136, 99,199,142,135,203,157,252, 14,230,167,134,255,241, 54, 59, 70, 33,254,161, 65,131,186,
- 45,238,221,187, 63, 15,192, 87,111,123,160,236,237,229, 99,207,252, 62,177,213, 71,189,150,201, 0, 88,100,176,196,118,182,189,
-123,116,235, 84,119,210,184,209,156, 47, 38, 46,244,186,123,253,210, 18,133, 91,205,108,202, 24,206, 40, 83,250, 93, 45,109, 64,
- 99, 22, 22, 22, 22, 22, 22,150, 15,204, 96,137,197, 18,175, 91,151,142,217,253,113, 45, 14, 0, 16, 84,207, 5,211,231,175,233,
- 64, 8, 9, 7,128,238, 95,204,241,157, 55,109, 28,110,132,164,130, 82,138,186,213,237,209,185, 71, 31,179, 54, 42,113, 9,104,
-216,175,111,223,129, 19, 39,126,215,253,197,139, 23,209,187,119,239,190, 10, 0, 45, 91,181,170,190,112,225,194,190,203,108,237,
- 68, 18,151,128, 4,117,114,232,221,138,236,148,164,146,119,165, 0,159,218,131,246,254,186,134,211,166,227,167, 3, 36,149,188,
- 23,169, 19, 34, 18,204, 89,215,209,209,241, 27, 62,159,111, 13, 0, 12,243,127,223, 83,173, 50,215, 5, 0,140, 38, 70, 97, 87,
-201, 63,143, 43, 16,155, 68, 34, 65,104, 94,126,254,246,156,248,208,205,101,105,106, 13,134,192,111,199,124,198,121,240, 50, 3,
- 94,129, 45,185, 43, 23,205, 0, 99, 50,216,142,159, 54,191,247,189,219,123, 1,204,190,204, 94,138, 44, 44, 44, 44, 44, 44,255,
- 1,131, 5, 0,114, 9, 15,225,145,201, 0, 0, 27, 9, 48,118,212, 80,100,164,167,249,234,140, 12, 62, 31, 58, 24,247,195,146,
- 16, 30,149, 6, 74, 41,124,221,165,102,111,148, 11,166,193,231,195, 63,111,125,250,204,153, 59,223,207,252,254, 55, 66, 94,245,
-222,189,241,151, 77, 77,103,205,158, 53, 98,240,208,193,237, 15, 28, 56, 16,130,242, 70,170, 46,109,167,136, 98,205,210,197, 11,
-132,241,233, 26,205, 55, 19,167, 50,223, 77,248,102, 37,128, 79,205, 89,151,207,231, 91,199,199,199,203, 57,156, 55,171,167,253,
-184, 96,234,149,246,189,150, 61,143,142,205,126,112,250,200,145,134, 1, 1, 1,136, 79, 72,110,190,100,213,134, 58,174,222, 13,
- 63,203,203, 85,247, 82,166,133,150,216,107,180,136,207, 15,153,187,228,231,186,140, 77,117,206,244, 17, 93, 16,232,237,134,132,
-212,108,180,234,216,157, 23,124,247,110, 7, 0,172,193, 98, 97, 97, 97, 97, 97,249,128,224, 0, 0, 33,164,196, 14,251, 76, 38,
-138,240,168, 36,132, 71, 37,225, 78, 88, 26,244,148,143,149, 75,230, 98,249,162,217,200, 84,115,240,199,141, 56, 60,139, 74,198,
-179,168,100,164,103,229,255,105,253,226, 77, 45,151, 47,150,214, 91,185,210,122,105,135, 86,178, 54,118,182,182,182,207, 67,126,
- 83,206,154,144, 82, 99,238,183,113, 2,190, 78, 20, 47,147,203,154,237,223,191, 47,192,217,209, 73, 38,151, 43, 38,203,220,235,
-110,177,177,169, 99, 93,150,102,113,164,206, 53,186,119,255,184, 83, 59, 23, 23,103,102,244,202,224,176,154, 53,252, 13, 62,213,
-125,154, 75,157,125,187,151,182, 78, 81, 77,134, 97,192,225,112,144,146,146,130,196,196, 68, 68, 70, 70,226,217,179,103,136,139,
-139, 78, 97, 40,229,155,192,112, 92, 93,221,193,227, 9,225, 85,197, 19, 63,175, 92, 36,157, 63,103,122, 35,177, 76,120,152, 16,
- 66, 74,210,212,100,102, 29, 56,113,234, 76,194,201,221, 63,155, 0, 32, 53, 43, 31, 23,238,190,192,253,208, 56,139, 78,214, 95,
-209,116,149,213,100, 53, 89, 77, 86,147,213,100, 53,223, 7,205,210,188,200,191,218, 96,149, 70, 68, 92, 38,194, 35,147, 81,223,
-191, 18,188,171,184,226,206,179, 44,236,188, 16,135, 45,167, 99,112,225, 97, 26, 24,158, 2,201,185,192,243,232, 20, 60,143, 73,
- 47,171, 95,101, 0, 0, 87,196,239,247,237,183, 57, 19,107, 5,228, 54,185,116,114, 44, 42, 57, 62, 15,152, 50, 37,123, 44, 87,
-196,239,103, 91, 89,177,123,234,196,241,131, 20, 82,169, 80,167,213,161, 90, 85, 79,241,184,175,199,126, 70,108, 69,187,205,221,
- 25, 43,247, 0, 91,145, 68,178,121,254,156,201,162,159,254,120, 30,171,212, 65,121,240,102,202,203,239,166,206,202,228,241,197,
- 63, 91,185, 7,216,154,171,101, 48, 24,160,213,106,161,211,233,160,215,235,145, 16,247,180,251,249, 63, 38,117,172, 90,217,174,
-163, 72, 44, 6, 5,144,171, 54, 34, 50, 73,133,182, 31,181,231,214,175, 87, 47, 80,238, 90, 99,120, 73, 90,217,217,209, 57, 12,
-229, 42,142, 29,218,197,221,119,246, 1,126, 59,118, 23,135, 47, 62,192,157,203, 39,141,148, 49,188, 30, 78, 66,225,230,227,171,
-112,171, 29,163,168, 84, 39,229,245,228, 94,235, 30,251, 63,128,133,133,133,133,133,229,223, 69,169, 69,132, 26,141, 58,234,211,
-126,131,225,234,228, 34,239,209,102,152, 32, 56, 34, 27,105, 73, 49,120,241,236, 9, 84, 26, 3, 4,182, 85, 1,177, 11,170,120,
-121,226, 81,248, 97,253,234,165,199,243, 25,163, 54,170, 52,189, 30, 61,220,220, 93, 29,101,156,165, 75, 60,110, 61, 11,207,170,
-191,107,230, 86, 12, 28, 40,119, 88,186,196,227, 86,244, 75, 25, 71, 42,166,205, 62, 27, 58,128,112, 8,197,148, 41, 19,209,163,
-107, 39,124,254,217, 16,178,125,251,182, 38,230,238, 12, 3,254,218,105, 51,230, 10, 83,178,141,186, 59,207,242,181, 82,153, 68,
-114,253,121,190, 50,208,203, 67,210,165,215,176,196,227,251, 55,255, 4, 96,168, 57, 90,133,198,202, 96, 48, 64,175,215, 3,128,
- 9, 0, 56,156, 87,159, 25,121, 58,164,102,107,145,146,173,133,209,196,160, 87,191,161,146,187,247, 30, 14, 5, 80, 74,125, 44,
-134, 49, 24, 13, 56,120,246, 62, 18,238, 30, 96, 8,135,155, 83, 88,201,189,208, 92,185,184,120, 92,233,218,107,136,163, 80,252,
-170,184, 53, 79,169,197,246, 13, 75,216,171,148,133,133,133,133,133,229, 67, 49, 88,209, 33, 87, 27, 2,128, 95,195,142, 25,114,
- 49,207,142,199, 33, 72,137,143,192,246,101,223,128, 97, 40,186,140, 88, 10,133,151, 11, 36, 2, 46,180,249, 25,249, 25, 47, 46,
-217,151,181, 33, 66, 12,237,215,109, 76,240,250,114, 76, 53,171, 93,187,242,249, 0,176,107, 87, 62,127,204,232,202, 86,235, 55,
- 70,121, 53,110, 81, 31,212,100, 66,215, 30,159,162, 95,255,126,136, 78, 86,225,247, 43,177, 80,170,117,102,141,127, 38,117,172,
- 81,199,201,173, 82,167,111,135,117,146,241,184,132,248,120, 90,115,227,210, 12, 70, 46,151,111, 58,122, 55, 39,177, 87,175,254,
- 14, 23, 78,236,107, 39,117,172, 81, 71,149,246,244, 97,121,122, 90,173, 22, 38,147, 9, 90,173, 22, 6,131, 1,118, 14, 85, 79,
-180,255,116, 89,124, 82,114,222,241,228, 44, 77, 99,165,193,136,148,108, 45, 82,179,181,200, 86,234,225,162,176,133,209,160,171,
- 85,154, 30,165,244,183,158,159, 14, 30, 2,128, 67, 56,198,173,121,137, 79,159, 21,206, 43, 52, 87,157,122, 12,116,188, 18, 28,
-129, 23,247, 78,102, 81,198,104,120,117,224, 24,118,168, 18, 22, 22, 22, 22, 22,150,127, 25,156,255, 27, 32, 66, 75, 43,255, 76,
- 72,201,132,189,156, 7, 71, 55, 47, 12,250,102, 57, 0,192,100, 50,128, 82,192,104, 50,175,135, 1, 74,249,103,191, 26,227, 21,
- 85,197,139,228, 12, 26, 40, 85, 3,192,160,129, 82,117, 21, 47,146,243,213, 24,175,168, 60,141, 92,111, 52,153,112, 61, 36, 21,
- 75,247, 62,197,172,109,143,113,234,158,249,221, 97,113,133,130, 49, 75, 22, 47, 18,240,184,132,132,196,228,231,199,103, 24,243,
-185,124,190, 94, 42, 21, 82, 29,229,105,163,211,105,198, 71, 61, 63,123,193,225,146,225,101,233, 20,182, 28, 44, 44, 34, 44,140,
- 96, 81, 74, 41, 1, 24,134,152, 76,241,233, 26,196,165,169, 17,151,250,255, 41, 37, 75, 91,106, 9,169,194,205,199,215,218, 74,
-126,202,214,198,234, 51, 27,107,171,161, 50,137,237,105,133,155,143,111,113,115,117, 43, 36, 17, 17, 15,206,165,152,244,170,190,
-121, 9, 15,157,243, 18, 30, 58,231,197, 63,110,192, 94,166, 44, 44, 44, 44, 44,255, 5,202,242, 34,255, 74,131, 69, 41, 37,133,
-211,159,141, 17,240, 60, 38, 29, 66, 30, 3,247, 42,222,160, 69,108, 4, 5, 96, 52,153,119, 28, 14, 31, 78,140,175, 86, 93,201,
- 76,158, 28,219,180,102, 45,251, 71, 99, 70, 87, 14,171, 89,203,254,209,228,201,177, 77,171, 85, 87, 50, 6, 35,223, 68, 11,250,
-219, 42,236, 91,171,160, 59,126,115,119,165, 81,157,128,170,220,185,187,158,199,126,185,254, 89,184, 64, 32, 48,184, 59, 72,137,
-167,179,148,235,225, 40, 17,106, 13, 28,173,111, 96, 61, 29, 56,164,158, 57, 6, 75,167,211,189, 49,101,164, 69,116, 63,243,251,
-196, 30,149,156,109,135, 37,164,169, 17,155,170, 66, 92,154, 10,177,105, 42,168,180, 70, 60,126,250, 18,224, 10,158,148,164,105,
-165,176, 59,189,123,231,111, 30,117,106, 84,115, 10,240,173,226,180,121,219,111, 30, 98,177,205,105,133,155,143,175,135,151, 95,
-240,237,115,251, 28,111,133, 36, 34, 38,252, 94,178, 81,155,187, 91,153, 18,118,158,189,205, 88, 88, 88, 88, 88,254, 75,148,229,
- 69,254,141,152,213,147,187,167,187, 51,110, 63,137, 66, 45,255,170,176,182, 82, 32, 44, 34, 30, 92, 14, 31, 28, 2, 24,140,230,
-155, 32,170, 55,236, 93,177,194, 26, 49, 81, 50,206,250,159,163,188,190, 26,227, 21,181, 98,133,245, 77,170, 55,236, 5, 48,152,
-210, 87, 99, 35, 22,118,108,106,178,160,251, 77,202, 24, 42, 59,219, 73,185,247, 94, 42, 51, 56, 28,174,214,222, 90,204,216, 91,
-139, 56,246, 10, 33, 95,192,231, 50, 70,202,209,187, 59,121,105, 40,195,212, 49, 71,175,104, 17,161,201,100, 2, 33, 28, 83,129,
- 1,147,197,101,168,145,163,225, 34, 37, 91,139,172, 60, 61,124, 42,201,112,238,194, 1,149,201,160,222, 85,146, 22,151, 47,176,
-246,246,114,199,244, 31, 86, 64,173, 53,225,121, 66, 62, 4, 34,145,139,179, 75,224,195,193, 95, 78, 21,141,251, 37, 2,195,219,
-217, 99,194,213,136, 4, 85,138,120, 42,123,155,177,176,176,176,176,176,252, 7, 12,150, 92, 42, 6,229,138,113, 53, 56, 2,126,
- 1,181,177,237,200, 29, 84,175,213, 4, 73,121, 70, 80,112,202,109, 61, 88,200,119, 83, 85,247, 1,220,239,209,195,205,253,147,
- 79, 42,181,167,148,127,118,253,134,156,120, 0,248,121, 79,107, 80, 0, 12, 67, 65, 41, 64,153, 87, 70,203,108, 8, 47, 38, 42,
- 41,183,138,151,139, 12,161,241,122,173, 76, 36,224,216,202,132, 92, 71,107,161, 64,192,227,193, 68,137, 54, 41, 41, 66, 75,128,
-104,115,228, 10,139, 6, 11, 63,165,114,215, 19, 31,245, 92,154, 22, 29,155,115,207, 39, 83, 85, 39, 71, 47, 4,165,128, 79, 37,
- 25,158,220, 58,110, 74, 73,120,241, 92,157, 18,190,161, 36, 45,134, 1, 87,111,100,240,240,101, 14,178,149, 6,100,231,235,209,
-188,109, 55, 65,243,160,238,184,250, 36, 29,140,209,128, 37,155,142,231,153,168,161, 31,165,161, 6,246,178,100, 97, 97, 97, 97,
- 97,249,119, 99,214, 96,207, 38,134,194,193,222, 14, 98,153, 21,162, 82,244,200, 35, 78,200, 82, 81,152, 76,175, 34, 88,165, 5,
-154, 8, 33, 65, 37,165, 31, 62,156, 24,127,232, 80,218,150,195,135, 19,139, 84,224,254,127,228,234,245, 39, 67,205,214, 36,212,
-116,238,200,201, 75, 57,221, 27, 59,218,114,184, 92,181,128,207,209,242, 4, 92,189,128,199, 49, 8,120, 28,157,179, 21,159,123,
-233,232, 30, 33, 37,184, 84,158,166, 70,163, 65, 80, 80, 16,186,116,233,130, 30, 61,122,160, 79,159, 62,240,245,173,225,196,225,
- 18, 29, 37, 12,227, 40,204,131,183, 35, 1, 79, 19,135,243,123,126, 84, 61,185,126,232,161, 73,171,233, 70,139,148,105,190,161,
- 73, 41,147,153,163,133, 70,111, 66, 86,190, 30, 89, 74, 61,140,142, 77,113,232, 70, 34,212, 58, 19, 98,130, 15,168,211,146,227,
-191,209,164, 60,143, 42,211, 67,150,178,239,111, 3,171,201,106,178,154,172, 38,171,201,106,190, 15,154, 31, 26,102, 68,176, 40,
-170,185,202, 80,189,146, 12, 26,189, 19, 52, 58, 19,148, 26, 19,114, 85,122,228,170, 12,136, 74, 86,225,201,145,183,207,200,171,
-168, 21, 64, 10,190,131,188, 50,118,230,198,176,132,122,221, 15,203,151, 44,236,187,167, 94, 93,221,184,143, 93, 43, 63,138,210,
- 37, 18,194, 81,115,184, 60,131,157,130,199, 15, 11,123,148,118,243,202,137, 86, 98,163,105, 72, 89, 58, 70,163, 49,167, 82,165,
- 74, 0,222, 28, 42,167,134,183,164,199,245,227, 83,170,182,238,190,196,241,167, 5, 19, 85, 28,174,128, 33, 60,193, 19,147, 65,
-189, 91,157, 18,254, 51, 45,163,194, 24, 71, 32,126,122,251, 65,104, 19, 27,187,202,120,145,160,132, 82, 99,132,222,200,192, 86,
- 46, 64,252,227,211,250,168,176,123,251,242, 18, 30,110, 99, 47, 71, 22, 22, 22, 22, 22,150,255,136,193,210,104, 52, 81, 45,130,
-186,129, 97, 40, 76, 20, 96, 76, 5,145, 38,230,255,209, 38,147, 65, 19,245,182, 25, 97, 24,211,157,181,191,108,233, 82,175, 81,
-107,110,128,135, 28,185, 25,201,184,117,253,162, 17, 12,189,105,206,250,233,233,207,242,165, 46, 62,159,246,237,253,201,254,161,
-159,143,206,110,213,182,173,204,201,201, 69, 27,159, 16,175,250,117,199, 78,195,233, 19,135, 91, 49, 48,246, 79, 79,127,158, 95,
-150, 78,118,118,246,170,146,210, 63,106, 81,185, 57,128,170, 92, 30,209,169, 82,159,201, 44,217,183,244,132,184, 94, 11,127,152,
- 19, 61,112,196,120, 97,181, 74,222, 72,205,225, 34, 42, 62, 25, 97, 87, 14,107, 19,158,221,253, 35, 55,254,254,112,246, 82,100,
- 97, 97, 97, 97, 97,249, 15, 25,172,216,208, 87,253, 97,253,213,228, 37,167, 14,222,182,237,183,249,191,237,216,211, 92,163,211,
- 85,162, 16,196,153,140,186,203,249, 38,204, 50, 87, 67,149,252,252,158,131,131,111,205, 95, 55,173,157,241,235,150,245,173,193,
-152,252, 9, 16, 77, 9, 46,137, 13,166,161,229,153,171,178, 13, 92,222,198,246,159, 46, 83,103,100,228,255,102,233,186,170,244,
-176,100,185,115,181,202, 27, 87,254,176,148,195,225,118, 48,153, 24, 62, 99, 50,188, 48,233, 53, 63,170,211,194,143, 80,203,154,
- 75,178,176,176,176,176,176,176,252,219, 13,214,223, 69,102,102, 68, 30,128,113,111,171,147,158,254, 44, 31,192, 59,111,137,247,
-248, 89,206,239, 0,126,175,232,250,249, 41, 47,211, 96,102, 47,242, 44, 44, 44, 44, 44, 44, 44,255,110, 56,236, 33, 96, 97, 97,
- 97, 97, 97, 97, 97,121,183, 16, 0, 37,182, 4,176,100,164,236,138,180, 38, 40, 79,159,213,100, 53, 89, 77, 86,147,213,100, 53,
- 89,205, 15, 79,179, 60,109, 75,252,199,123, 13, 45,232, 49,253,175,152, 0, 4,177,154,172, 38,171,201,106,178,154,172, 38,171,
-201,106,254,215, 38,182,136,144,133,133,133,133,229, 63,135,131,131,175,220,193,193, 87,110,238,242, 50,199, 0,103,153, 99,128,
- 51,123,228, 88,204,133, 53, 88,111, 9, 33,132,248,121,201,199,118,104, 93,245,144,127, 53,105,143,127, 74, 83,238, 92,205, 81,
-225,209,240,186,149,123,205,206,127,193, 62,138, 2, 3, 3,155, 6, 6, 6, 54, 37,132,136,222,133,166,204,217,111, 64,101,159,
-166, 87,156,189,235, 93,148,187,248,246,126,215,121, 86,184,249,216, 43, 60, 26,252,174,168, 84, 39, 75,225, 86, 39, 87, 81,185,
-193,101, 43,199,128,106,229,173,231,209, 99,145,255,188, 61, 33,187, 61,122, 44,242, 47,105,190, 93,231, 53,138, 57,123, 95, 44,
-112,232,190, 68,206, 94,253, 21,195,163,197, 64, 27,183, 54, 19,237, 45, 93,207,221,175,105,136, 87,205, 86,169,149,124,155, 60,
- 49,119,157,202,254,205,238, 87, 9,108,145, 82,217,175,217, 61,246,200,155,135,196,169, 90, 83,137,157,231,113,177,157,231, 9,
-177,125,181,182,111,171,231,230,230, 38,169, 81,163, 70,167,166, 77,155,142, 10, 10, 10,250,182, 94,189,122, 35,171, 84,169,210,
-129, 16,242,143, 53,178,146, 57,251, 77,211,242, 73,186,150, 79,210,101,206,126,211,202,127,190,250,207, 39, 28, 83, 34,225,152,
- 18,229,206,254,243,223,151,115, 37,118,241,243,148, 57,251,173,176,114, 13,188, 35,117,246,237,102,233,250,118,118,118, 29,156,
-156,156,122, 22, 78,118,118,118, 29,216, 59,224,221, 97,241, 5, 78, 72,125,190,220,213,240,173, 80, 44, 25,198,225,192, 42,245,
-197,173, 74,239,243, 14, 58, 86,107,124,143,203,225,186, 23, 77, 51, 49,166,248,180,151,183, 27,188, 11,125,191, 42,146,225, 51,
- 38, 15,158, 48,160,111,144,103, 80,215,111, 8,128,195, 37,190,240, 61, 26,222, 32,132, 83,149, 67, 0, 14,135,128, 67, 0,128,
- 38,166,191,188, 93,175,162,154,133, 88, 59,121, 87, 21,202, 29,175,180,232,241,149, 75,240,185,157,219,100,142, 1,237,149,105,
-161,143,222,129,177,114,244,246,246,110,232,235,235,107, 63,118,236, 88, 1, 0,252,244,211, 79,213,171, 87,175,158, 17, 17, 17,
-113,151, 82,154, 86,161,135,155,147,255,224, 85,203,230,253,214,185,115, 23, 36,166, 43,177,100,197,186, 54,114, 23,223, 62,249,
-201,207, 14,188,139,115, 98,107, 91,213,138,103,101,251,248,155,201,243,156, 58,181,105,200,205,215, 24,113,234,202,131,150, 59,
-215,205,187, 99,229, 24,208, 40, 55, 45,244,101,105,235, 50,170,156,153,206,114,218,137, 81,229, 0,192,128,226,243, 43,201, 13,
- 65,142, 18, 83, 39, 87, 17,239, 1,128,131,229,230,197,171,197,105,190, 72,228,201,225,112, 80,120,238,185,228,213,249, 55,232,
-213, 49,241, 79,175,116,124, 31,238, 19, 43,207,198,201,224,242,236, 57,228,255,249, 35, 5,215, 41,161, 52, 55,233,217, 85,251,
-119,112, 61, 89,215,172,110, 19,248,113,243, 22,191, 94,142,204,148,121,180, 30,127,156, 80,206,250,152, 43,203, 31,154,245, 50,
- 17,139,109,143, 30, 61,234,216,169, 83, 39,107,231,154, 61, 47,155,245,199, 67, 40, 14, 56,118,236,136,160, 83,167,142, 22, 92,
-159,126,237,193,225,236, 32, 0,159, 97,232, 79, 92,134,238,203,207,120, 22, 97,105,119, 42, 82,103,255,225, 28, 80,179,159, 51,
- 12,200, 61, 85, 74,216,150, 10, 30, 91,174,196,201,111,152, 68, 44,158,232,227, 87,195, 55, 42, 50,226, 89,110,110,206, 10,117,
-234,179, 45,148, 82,198, 34, 49,131,113,210,185,171,193,157,121,124, 62,233,244, 81, 99, 46,128,139,111,115,222,157,157,157,123,
-174, 89,179,166, 90,211,166, 77, 1, 0, 70,163,209,106,255,254,253, 46, 63,252,240,131,204,156,123,168,148,253,173,228,232,232,
-232, 33, 20, 10, 43, 1,128, 78,167, 75, 72, 75, 75,139,165,148, 38,148,123, 77,184,120, 59, 16,240,230, 93,189,114,133, 7, 0,
- 45, 91,182,154,239,217,114,172, 45, 87, 32, 87,151,120, 56,116,121, 50, 0,227,111,221,190, 73, 0,160, 73,227,166, 83,101,142,
- 1,107,149,105,161, 41,255,152, 9,118,246,111,204, 1, 38, 52,111,213,190, 87,191,254,131, 57,129, 62, 30,232,208,190,221, 20,
- 0, 71, 45, 50, 0, 60,158,228,206,157, 59,222, 28, 14,135,107, 52, 26, 53, 77,154, 52,137,125,155,124, 85,242,107,118,131,128,
- 83, 89,111,212,109, 74,123,121,111,126,241,107,143, 16,194,181,174, 92,111, 6,184,188, 17, 12,195,196,229,198,220,109,198, 26,
-172, 34, 7,199,202,189,238,181,190,253, 6,213,252, 97,242, 72,241,234, 29,103, 97, 87,181, 81,104,102,228,157,128,247,117, 7,
-185, 28,174,251,153, 51,167,157, 36, 34, 46, 0, 32, 95,109, 66,103, 51, 30,182, 54, 94,141, 47,113, 8,241, 43, 28,210,219,100,
-212,139,121,124,161,134, 0, 0,121,213, 58,192,193,173,202, 5, 87, 87, 59,233,128,190, 65,158, 59,246,156,141,143,141,207, 40,
-245,161,207,225,112,221, 15, 31, 57,234, 84,201, 94, 12, 30,151, 32, 95,109, 68,167, 46,221, 76, 37, 45,235,234,106,247,241,128,
-190, 65,158,187,246,158,139, 77, 74,202, 60, 94,230, 67,220,213,183,190,204,218,249, 84,175, 81, 63,216,107, 56,118,152,181, 96,
-149,195,149,147,187, 46,183,254,120, 48, 19, 19, 19,167,161,132,132,102,101, 38,125,155,159,244, 34,220,220,115, 44,151,203,171,
-201,229,242, 58,157, 59,119, 22, 79,156, 56,145,223,166, 77,155,215,243, 71,142, 28, 41,184,116,233,146,235,178,101,203,186,184,
-185,185,105,242,243,243, 31,230,231,231,191,164,148,154,204, 61, 39, 46, 46,142, 95,127,250, 73, 55,180,235,245, 21, 76, 12,193,
-200, 47,199,227,244,201,131,163, 1,188, 19,131,101,144, 90,253, 48, 98,212, 68,199, 38, 13,235,114,231,237, 10,135, 68,200, 67,
-199, 6,126,228,179,177, 51,109,182,172,158,183, 25, 64,235,146, 34, 87,140, 42,103,102, 77, 7, 93,255,238, 77,171,226,200,110,
- 93,127,247,160, 41,224, 72,173,231,199, 30,158, 22, 6, 0,222,157,199, 41,108, 37,146, 53,110, 54, 92, 39,145, 41,109,141,119,
-231,113,231, 34, 78,174,206, 43, 43, 47,124,145,200,115,207,238, 93, 62,182,114, 1,184, 92, 2, 30,135, 3, 46,151, 64,171, 55,
-161,119,159,254,239, 42,194,200,149, 56,249,116,225, 0,159,189,122, 81, 99,171, 58,245,249, 9, 75,206, 9,225, 10,236,143, 29,
-249,131,231,100, 45, 2,151, 75,192,229, 0, 92, 14, 65,116,138, 26,195,135,127,102,253,182, 70,189,115,115,167,134,151,214,182,
-238,216,164,166, 93,237,189, 55,137,117,147,206,253,236,211, 53,210, 97,123, 14, 95,236,239,209,106,194,109, 74,153,165,113, 87,
- 87,158, 41, 75, 71,171,213,166,116,236,212,217,138,240,100,210,115,135,182,181,226,113, 8, 12, 38, 10,163,137,194, 84, 48,118,
-233,171,251,149,128,195, 33,160, 12,197,136, 17,195,209,177, 83,103, 21, 99,100,226,205,206, 48,135,179,227,212,185,235,142, 90,
- 3,131,101,107,182,204, 83,230,164,205,139, 12,179,143,150, 58,251,142, 87,165, 60, 51,123,220, 10, 14,104,131,184,151, 79, 70,
-237, 58,118, 11, 53, 3,106,192,196,188,202,167,159,187, 12,187,142,223,130,191,159,255,171,124, 51, 20,190,149,229,104,216,160,
- 33, 0,108,177,252,248,182,225,201,156,253,119,119,239, 61,180,119,175,222, 3, 96,103,107, 5,157, 94,235,123,254,244,137, 95,
-126, 94,179,164, 57, 33,100,152, 69,230,144,154, 94,191, 23, 40,195,188,117,148,201,205,205,205,177, 97,195,255,119,167,104, 52,
- 26,225,229,229,133,132,132, 4,191, 10, 92, 75, 82, 87, 87,215,143, 55,110,220,232,212,165, 75, 23,190,139,139, 11, 0, 32, 57,
- 57,185,210,169, 83,167,234,185,185,185,165, 38, 37, 37, 29,167,148,170, 74,211, 48, 25, 56, 2, 14, 15, 92,177, 88,250,106, 31,
- 65, 56, 19,191, 30, 82,219,217,213, 77, 91,210,242,105,105,201,194,201, 95, 93, 36, 60,158,160, 96,121,112, 40,101, 72, 25, 81,
-161, 32, 62,159, 47, 41,105,158,158,107,213,132,242,173,191,224,112, 57,175, 46, 86,163, 33, 45, 51, 38,184,134, 5,145,183, 64,
-190, 80,240,243,192,161,163,154,245,238,213, 3,174,142,214, 56,119,237, 17, 70,127, 61,193, 96,212, 27, 86, 84,232, 29,201,229,
-242, 82, 83, 83,163,109,109,109, 93,222,254,125, 75,170,158, 61,125,210,233,220,249, 11, 83,151,175, 92, 61,198,205,183,165,129,
-161,244,245, 56,195, 30, 53,219,241,219,119,237,107,229,228,221, 68,188,122,246, 23,124, 54,130, 85,212,249,187, 5,124,219,167,
-111,223,154, 95,141, 30, 41,254,118,205, 53,156,223,253, 83,250,187, 50, 87, 10, 39,191,166,132,203, 27, 69,184, 92, 25,225, 16,
- 33, 99, 98,226,140, 58,221,124, 85,250,179,164,183,213, 54, 49,192,239,215, 83, 45,187,145, 41,170,239,216,119,200,201,217, 70,
- 4,141,206,136,126, 3, 6, 99,199,142,223, 20, 14, 86, 66,104,116, 70, 44, 93,190, 60, 47, 63,250,184, 83,116, 92, 86, 66, 80,
-183, 9,103, 94, 70,165, 62,137, 77,210,236, 43,253,193,192,129,147,181, 8, 11,246, 60,131,149,132, 15, 91,133, 0, 28, 14, 41,
-250,224, 32,190, 85,100, 95, 87,174,236,216, 54, 49, 41, 43,167,136,230,206, 82,111, 54,215, 90, 29,173,109,221,118,127, 50,106,
-129,205,243, 84, 30, 40,244,136,176, 18,163,239,176,113, 86,213, 92, 36,144,137,185, 54,145, 49, 9,174, 19, 39, 77,186,102,237,
-228,221, 40, 39, 53, 34,178,188,253,174, 82,165, 74,175,174, 93,187, 74,191,251,238, 59,126,229,202,149,177,117,215,126,207,150,
- 29,251,116, 75, 76, 74,169, 76, 41,133,179,147, 83,220,136,207,250, 28, 61,113,226, 68, 76, 92, 92, 28,127,201,146, 37,141,255,
-248,227,143, 0, 75,254,137,154, 40,133, 70,107,130,169,224,197,152,150,163,181,244, 33, 75, 42, 85,170, 36, 74, 72, 72,208, 22,
-190, 56, 8, 33,175, 15,166,188, 82,221,142, 31,181,110,204,219,120, 50, 10,249, 26, 19,100, 98, 62,162, 82, 84,104, 80,183, 22,
-217,100, 50,214, 41, 73,115,120,223,143,103, 58,203,105,167,238, 77,171,194,201, 86,138, 95,215, 46,192,145,155,145,157, 82,242,
- 9, 28,186, 47, 25,229, 42,226,181,119,148, 10,214,180,105,224,237,210,174,190, 39,238, 54,240,118,185, 18, 28,254,172, 86,223,
- 21, 99, 19,242,249,231, 50, 79,142,205, 43,249,129,195,129,157, 66,136,205,167,162, 33, 21,243, 32, 19,243, 32, 19,189,250, 44,
-122,254, 43,244, 47,214, 45,160, 50,151, 49, 13,183,114, 11, 24,222,191,111, 31,183,129,253,251, 80,112, 57,216,255,251,209, 30,
- 59,119,238, 72,146,187,248,109, 54,113,184, 91,212,137,161,113,229, 30, 83, 14,224,100, 45,196,164,205, 79, 96, 37,225, 67, 33,
-229,195, 74,202, 71,187,218,142,224, 86,176, 34, 1, 33,196,118,116,143,106, 93, 30,253, 22,212,214,207, 67,238,243, 48, 34, 39,
-116,248,252,123, 43, 47,101,183,253,118,237, 79, 1,246,249,217, 58,222,172,137, 35,120,241,137,137,109,247, 31,189,220,206,173,
-209,240,112,163, 94, 57, 61,245,225,190, 18, 35,182,113, 97, 55,234,185, 55,237, 35,214,231, 27, 30, 63, 12,143,247,206,210,138,
- 16, 18,157, 11,153,152, 7,121,225,177, 21,243, 32, 19,243, 33, 23,243,144, 24, 31,133, 76, 37,247, 90,130, 61,167, 45,189,116,
-195,104, 73,222, 53,122, 19, 30, 68,230,163,138, 95, 93,184,186,186, 65,215,101, 80,149,219, 23,126, 63, 44,115,173,177, 72,153,
-244,116,186,185, 58,187,142,221,194,212,241,163,130, 9,112,191,224,229, 92,111,214,226,117,245,231, 77,253,234,141,180,137,115,
- 87,215,175,168,185,150, 58,251,237,108,253,241,224,222,181,154,116,192,203,168, 40,156, 60,122, 15, 31,181,239,140, 46,221,122,
- 65,167,211, 14,217,178,113,245, 93, 0,235,254,244,204,117,173,209,162, 86,205, 26, 59, 43,185,185, 85,102,152, 87,163,114, 80,
- 10,180,104,221, 14,147,191, 29, 1,134, 82,212,169,215,168, 93,151,254, 99, 41, 45, 24,189, 35, 61, 35, 93, 25, 30, 22, 26,164,
- 78, 9,187,109,246,177,212,104, 12,105,105,105,120,240,224, 1,158, 61,123,134,144,144, 16,100,100,100,192,218,218, 58,223,194,
-125,181,170, 93,187,246,192, 11, 23, 46,136,109,109,109, 95,167,235,116, 58, 40, 20, 10, 12, 28, 56,144,223,161, 67,135, 74, 31,
-127,252,241, 80, 66,200, 46, 74,105,110, 73, 58,234,140,231,137, 86, 46,254, 27, 90,183,105, 61, 6, 0, 36, 86,174,145,107,182,
- 30, 13, 41,243, 94,179,118,243,108,214,172,185, 55, 40, 5, 1, 93,165, 76, 15, 79, 46, 35, 42, 36,187,117,235, 86, 53, 46,151,
-251,250,253,202, 48, 12,214,255,186,215,255,236,213,199,189, 22, 47, 93, 38,182,146,137,144,150,163,195, 23,131, 62, 49,251, 29,
- 44,117,241,239,210,188,121,235,195,243,230,126,207,147,203,100, 56,115,251, 37,198,126, 59, 73,147, 20,253,100, 25,101,248,235,
-148,169,225,169,111,249,170,124, 39, 29, 94,251,184,203,161,232,222, 81, 60,122, 72,119,177,206, 96, 66,182,210, 0,173,222, 4,
- 19, 67,145,163, 52, 32, 52, 54, 15, 14, 86,194,138, 72, 55, 4,224, 8, 32, 13,192,221, 98,191, 81,240, 29, 37,252, 78,127, 21,
- 22,129, 61, 0, 29,128,162, 27, 47,252, 93, 90,122,225,250,161, 0,106, 20,104,154, 0,220, 1,144, 85,174,193, 34,132, 80, 74,
- 41, 41,114, 17,191,241,187, 40, 2,161,188,239,212,177,131,197, 63,236, 10,198,249,221, 11,211,211, 34,110, 22,238, 0,156,188,
- 27,223, 79,141,120,179,184,203,156,166,150, 18,183,128,202, 60,194, 93,209,186, 77,171, 14, 99,190,252, 18,126,213,220, 5, 38,
-147,137, 62,121, 22,105,216,182,229,215, 97,214,149,107,173,204,141,127, 50,179, 48,212,104,105,243, 77, 19, 99,138, 47, 30,177,
- 50, 49,166,248,242,242, 73, 8, 96, 35, 19, 96,195,137, 72, 80, 10, 16, 80, 88, 73,249,216,115, 41, 30,145,193, 7,115,187,214,
-201, 85, 14, 92, 60,167, 93,219, 46,227, 46,132, 70,104,246,165,166,106, 78, 83, 74,147, 75,211,228, 16,128,199, 37,176,146,242,
- 97, 45, 21,192, 70, 38, 0, 41,242,226, 42, 90, 44,216,166,203,184,179, 23,174,199, 76, 7,144, 70, 41,213,150,164, 41,113,241,
-105,104,101,227,190,175,215,152, 37,138,199,241, 70,240,184, 64, 85, 23, 9,236, 20, 2,232,140, 4,209,105,250,130, 59,198, 6,
- 99, 39,206,181,155, 58, 97,204, 9, 66, 2,106, 82, 26,170, 47,107,223, 85, 42,149,112,240,224,193,124,131,193,160, 31,248,197,
- 55, 29,146,147,211,122,172, 95,245,163,200,201,201, 25, 42,141, 17,193, 33, 47,106,204,155, 55,183,234,209, 83,151, 14,205,153,
- 52,250,112,167, 78,157,172,247,238,221,203, 88,114,222,211, 82,210,215,254,186,243,192,111, 63, 45, 91,136,240,152, 44,108,217,
-184, 14,212,100,220, 80,230,157, 95, 68,147, 82, 74,167, 79,159, 46, 57,116,232,144,187, 76, 38,203, 85,169, 84,105,111,196, 31,
- 56,132,151,146,169,130,131, 66, 8, 1,143, 3,103, 91, 49,156,172, 69,224,115, 1, 14, 33,166,146, 52,183,236, 59, 62,159, 81,
-229,224,200,110, 93,255, 95,215, 46,192,231, 95,207,192,147,116,225, 41,142,212,122,254, 87,253,123, 77,117,148,152, 58,185,217,
-112,156,218,213,175, 2,153, 88,128,105,227, 6,163, 81,112,180, 83, 66, 54, 51, 35, 77,205,173, 11, 96, 70,137,231,157, 67,192,
-227, 18, 40,164,124,156,218,185, 52, 85,153,147,150, 83, 88,244,166,211,106, 98,204,122,234,149,112, 60,101,206,126, 83,235,215,
-173,189, 96,204,200,225,156,230, 77, 27, 81, 14,135,143,244, 60, 29,161, 20,248,118,236,104,124, 53,122,132, 75, 92, 98,234,172,
-117,235, 54,204,148, 59,213,248, 33, 63,245,233,156,178, 52, 57,228, 85,212, 71, 46,230, 65, 46,121,101, 88,228, 98, 30, 52, 58,
- 19, 8, 1,215,214,179,126, 14,121, 21,185, 77,204,136, 46,249, 31,119,113, 77, 59,143,192,243,103, 35, 21,254, 89,251,178,110,
- 70, 37,134,204, 15,126,148,114,135, 82,154,233,209,122,194, 80,189,145, 34, 95, 99, 68, 84,138, 10, 70, 61, 37,159,119,246,132,
- 87,111,226,183,240,215,251,191, 17, 66,172, 10,141,115,113,205,248,155,251, 53, 14,181,122,245,251,105,245,198,187,203, 22,204,
-224,166,231,232,192, 80, 10,177,144, 11,137,144, 87, 48,113,161, 86,230, 96,221,207,155,146,141, 32,189,232,165, 75, 70,139,158,
- 75, 12, 29,244, 73,151, 86,123, 8, 32, 36, 28, 65,188,155,103, 21,207,143,186, 13, 19,127,212,125, 48, 76, 70,221, 84,153,179,
-255, 69,101, 74,216,121,115, 52,107, 6,212, 0, 1,238,231,167,132,143, 6, 0,185,179,223, 6,127, 63,255,250,197,211,170, 87,
-247,171,111,206,121, 47,120, 70,115, 36,142, 62, 35,171,251,215,154, 60,230,251,141, 85,162,146, 84,176,171,236,131,144,199, 15,
-112,114,239,218,251,234,188,172,101, 39,143, 28,156,252,195,143,171,234,116,235,217, 23,135,255,216,251, 29, 33,100, 61,125,197,
-185, 34,209,169, 65,219, 54,255, 82,153, 47, 20,193, 96,100, 96, 48,209, 87,159, 70, 19, 50, 51,179, 96, 48, 50, 16, 75, 21, 48,
- 50, 4, 6, 19, 3,131,145,129, 86,103,148,141, 30,252,241,151, 0,110,151,148, 79,247, 26,109, 78, 11, 68, 34, 79,138, 87, 99,
-203, 82, 74,193, 53,234, 56,174,174,174,187, 0, 64, 36, 18, 65, 36, 18,129, 97, 24, 4,135,167,125,237,232, 31, 52, 6, 5,198,
-206,164,215,197,100, 69, 93,235, 88,218,190,187,184,184,116, 43,110,174, 52, 26, 13,242,243,243,113,245,230, 93,235,205,191, 29,
-232, 20, 21, 19, 95,141,161,214, 90,133, 83,181,142, 0,186,149,118, 60,115,147,195,190,172,220,116, 36,231,187,175,134, 86, 95,
-189,237,216,157,231,167,126, 40,179, 30, 86,213,160,169,186,239, 70,125,218, 96,241,170, 45,207, 51,175,253, 60,190,188,115,196,
-227,241,248,105,105,105,175,239,239, 53,155,118, 55,184, 31,158,208,115,229, 79, 43,197,193, 47,243,240, 56, 42, 17, 67,131, 60,
-240,198, 75,160, 12, 77,185,139,183,131,183,183,255,174,117,171, 22,243,158, 39,106,176,246,224, 29, 92, 56,188,225,106,114,234,
-237, 78, 52, 57, 81, 93,145,103,200,219, 26,172,178, 52, 47, 62, 74, 71,190,198, 8,173,206, 8, 3, 67,145,171, 50, 32, 53, 91,
-135, 92,149, 30,249,106, 35,134,182,247, 40,205, 68,151,229, 71, 28, 9, 33,199, 40,165, 93,241,170,123, 41, 97,145,223, 32,132,
- 28, 43,200,215, 27,191,167, 78,157, 58,125,209,162, 69, 33,133,203, 22,166, 23, 46, 91, 86,122,145,245,237,167, 77,155, 86,115,
-241,226,197, 11,155, 54,109,186,231,198,141, 27,145,102, 25,172,162, 59, 65, 8, 41,243, 0,139, 4, 60, 55,169,194,246,149,225,
-248,127,192, 0, 85,106,182,201, 88,185,100,158,157,171, 79,147,152,164,231,183, 60,205,143, 90,249, 54,147, 72,164,199,151, 47,
- 95,142,254,221, 90, 74, 98,211, 13,249,143, 98,213, 41, 74, 29,140, 78,142,190,194,249, 11, 23,203, 23, 47, 89,250,213,177, 35,
- 76, 54,128,165, 37, 23,229, 53,188,199, 37, 69,234, 88, 17, 2,202,152,226, 51,163,238, 52, 0,128,183,169,107,165,212, 24,193,
- 45,168, 59, 67, 8,160,210,154,192,229,146,212,236,240,125,161, 3,127,152,223,110,199,158,179,137,148, 99,147,167, 84, 70, 73,
- 41,165,241,101, 71, 8, 8,114, 85, 6, 88, 75,249,176,145,243, 97, 45, 19,128, 91,228,230, 42, 44, 22,220,177,251, 76, 66, 76,
- 76,198,221, 2,115, 85,170, 38,143,203,137,164, 38,131,134, 82,147,162,107, 67, 71, 56,217, 8,225,106, 43,130, 72,200,131,193,
- 8,168,117, 12, 52, 58, 19,162, 83,213,200, 83, 75, 80,171,117,159,170,246,174,247,180,246,158, 13, 15,101,196,220,237, 85,166,
- 41, 53,153,176,109,215,129,234,137,137, 41, 61, 78, 28,218, 41, 74,203, 53,224, 81,180, 18,169,217, 90,128,235,136,217, 11,215,
-138,166,140, 31,217,115,219,238,223, 99, 62,106,217, 56,198,226,227,154, 26,182,163, 86,179,143, 55,116,237,218, 83, 18,114,251,
- 4,158, 63, 56,191, 32, 63,197,252,250, 87,132, 16,206,254,253,251,141, 35, 71,142,204, 91,184,112, 97,229, 35, 71,142,120,165,
-165,165, 61, 0, 96,176,177,177,241,247,173,238,249,240,204,169,147,149, 62,238,217,135, 31,159,174,134,181, 84, 0, 79, 39, 41,
-110, 94, 61,109, 16, 10,249, 37,214, 39, 41, 40, 6, 28,224, 30, 52, 5, 71,110, 70,118, 10,201, 16, 95, 26, 49,124,104,204,153,
- 43,225, 25,107,126, 59,243, 99, 37,185,225,129,152, 73, 91,115,175,129,183,203,212,177,131,177,104,245, 14, 92, 14, 14, 79, 85,
-114, 92, 23, 36,105,141,103,231,244,155, 92, 74,200,252,149,177, 86, 72,248, 80,230,166,229,188, 8, 62,233,251,142,162,207, 67,
-207, 28,218,193,201,204, 51, 32, 46, 93, 67, 18, 51,243, 96, 98, 40,108,164, 2, 24, 25,138,236,204,116,178,115,199,111,184,123,
-247, 38, 7, 92,206, 23, 0,230,148, 89,156, 69, 94, 21, 9,202,197,252, 87, 17, 32,201,171, 79,131,137,129, 95,117,111,252,178,
-102,133,149,131,147, 51, 90,180, 50,191,206,179,194,222,179,206,158,173,107,112,233,198,253, 54,151, 87,174,109, 40,119,115, 92,
-109,229, 30,176,204,218,171,189, 70,171, 55, 33, 39, 59, 11, 66, 93, 28, 26, 85, 74,131,157,212,132,232, 92, 87, 60, 73,126, 46,
- 47,175, 56, 43,253,241,193, 7,142, 53, 63,153,121,224,232,133, 69, 29,219,183,193,147,232, 92, 72,132, 60,136,133, 92,136,133,
- 92,240,137, 9, 43,126,222, 96,200,202,201,235,154,254,228, 80,122, 5,174,207,115, 5,255,118, 95,189,220,156,171, 57,238, 88,
- 61,115,251,136,201, 75, 58,118,250,100, 24,121,114,247,226,116, 0,231,205,251,131, 71,205, 74, 99, 24,106,246,181,239,228,221,
- 96,215,214,109,187,251, 5,248, 84, 70, 74,182, 1,137, 89,122, 92,189, 31,129,237,155,103,102,103,165,188, 28, 4,125,126, 62,
- 67,140, 57,167, 79, 29, 61,245,245, 55,147, 17, 88,179, 78,149,220,248, 92, 43, 0, 57,111,108,147, 75, 54, 14, 25, 62,170,159,
-179,179,179,226,255, 17, 44, 10, 95,191, 0,116,233,254, 41, 78, 31,254, 3,161, 33,143,192,208, 87, 70,137, 97, 40,178,179, 50,
-146,141, 6,221,182,210,242, 39, 20,139, 61,127,221,250,155, 15,135, 67,160, 55, 48,208, 25, 25,140,255,242, 51,221,232,111,167,
-183,232,210,161,117,136,144,139,220,232,216, 36,155,155,247,159,214, 98,248,242,202,195, 39,174, 16,104,180, 38,228,168, 12, 56,
-177,165,116,143, 35,177,243,108, 90,167, 89,207,225,163,191,255, 69, 36,226,114,244,129,190,149, 35, 91, 55, 9,140,243,112,115,
-200,155,183,120,109,163,107,183,239,119,233, 59,112,184,120,168,127,125,226,102, 47, 81,124, 54,240,147,218, 50,123,143, 33,202,
-140,216, 82,135, 54,227, 75,109,179, 61,188,170,171,254, 31, 33,242, 59, 72, 40,170,190, 97, 34, 8, 34, 85,201,225,189, 0,192,
-213,205, 67,195, 23, 89,229, 89, 96, 64, 40, 0,172,222,180,187,193,195,103,137, 35,126,250,105,165, 52,248,101, 30, 30,188,204,
-129, 72,192,129,222,192,128,152, 25,196,102, 40,119,212,140,105, 83,173,178,148, 38, 92,122,148,134,144,123, 23,169, 46, 95, 51,
- 80,106,180,234, 37,115,246, 27, 2,192, 27, 64, 4, 33,116,163, 50,197,229, 48,165,151,140,150, 94,247, 12,243,234,127,178,181,
-147,119, 85, 19, 79,212,133, 47,148, 53, 37,132, 6, 18, 10, 91,128, 38,100, 20,188, 83,205,117,104,202,148,103, 88,178,112, 22,
- 86,109,254, 3,137, 25, 26, 88,155,226,112,120,203,124,124,183,104, 23,212, 90, 83, 89,215,120,153,126,164, 36, 67, 84,220,104,
- 21,126, 47, 92,110,209,162, 69, 93,139,157,155,174,165,156,179, 63, 45, 87,184,254,226,197,139, 23, 22,153,175, 50,187,136,176,
-112,103,202,218, 41, 43,199,128,106, 2, 43,185,200, 74,194,135,151,135, 43,250,143,153,227,224,226,211, 60, 85, 36,228,113, 15,
-237,254,197, 46, 93, 45, 2,225,112,148,102, 23,111, 56,251, 55, 86, 40, 20, 39, 14,254,254, 7,170,121, 56, 9,118, 94,205,140,
-186, 31,169,126, 29,210,205, 77,139, 17,122, 89,169,120,189, 62,249, 68,122,254,194,197,111, 75, 51, 88, 92,194,117,223,244,219,
-239, 78, 10, 9, 31,132, 0,121,106, 35, 70, 12,249,244,237, 95, 95,148,225,126, 62,108, 8, 72,129,185,202,205, 72,198,244,201,
- 99, 52, 50,195,243,208,216,232,216,132,160,110,223,157,207,205, 39,154,126,131,191,188, 27,250,108, 81, 86,249, 87,175, 33,190,
-203,199, 93, 4,175, 34, 5, 0,151, 16, 48,148, 73,241,243,146,143,253, 83,177, 96,178,118, 83,121,134, 45, 47, 33, 60, 83,225,
- 90,171,247,142,229, 95,111,114,115,118,178,151,203, 36, 84, 46, 21,145, 64,127, 31, 65,147, 38,205,132, 94,126,181, 5, 87,159,
-170, 17,155,166, 70,100, 98, 14, 68,206,117,121,253,219,117,198,142,149, 19,219, 16, 66, 56,229, 85,124, 61,123,233, 86,183,205,
- 63,255, 36, 74,201,214, 35, 44, 54, 31,201, 89, 26, 36,101,105,145,156,169,129, 92,194, 71,171,238, 35, 69,199, 15,111,236,246,
- 81,203,198,171, 43,114,120, 35, 35,163,142, 71, 39, 36,245,169, 93,175, 17,118,108,223,218,210,214,182,170, 85, 86, 86,100,174,
-185,103,103,254,252,249,194,197,139, 23,243,214,172, 89,147,219,164, 73, 19,151,105,211,166,117, 76, 77, 77,189, 83,165, 74, 21,
-191,211, 7,183, 93,168,219,170, 71, 67, 48,122,199,150,173,219, 10, 68, 12, 15,103,142, 29,211,239,219,187, 51, 67,173,206, 27,
- 93,166,209,144, 90,207, 79,201, 39,112,172, 84, 41, 68, 46, 52,181,231,113,178,159,101,158, 28,251, 27,128,131,222,157,199,157,
-187,120, 47,252,217,255,216, 59,235,240,168,142,182,141,223,179,158,149,184, 59, 16, 8, 9, 33,193,221,221,181,104,161,148,182,
- 72,169, 80,164, 45,148, 22,107,145, 82, 90,164,165,197,138,211,226, 90,220, 93,131, 67, 18, 8, 81,226,178,146,117, 57,243,253,
- 17,121, 3,111,100, 67,233,215,183,116,126,215,181, 87, 54,187,231,220, 59,115,206,156, 57,247,121,198, 26,223, 76,244, 58,117,
-243,113, 86,158,206, 92,251,201,225,201, 21, 86,184,124, 66, 32,224,243,224, 40, 21,128, 87, 84,155, 58,250,215,127, 12, 66, 60,
-139, 35,165, 4,164,232, 47, 64, 8,210,242,146,162,237,232,147, 65, 40, 71,129,152, 84, 45, 10, 12,133, 33,248, 0, 15, 25,178,
- 51, 83,241,243,242, 13,136,190,113, 29, 93,123,244,197,138, 53, 91, 48,230,173,193,134,202,212,120,188,162, 8, 86,169,232,149,
- 66, 42, 0, 64,160,212, 90,176,235, 66, 10,106,214,224,217,125, 67, 0, 0, 71,133, 12, 42,141, 30, 60,145, 35,158,220, 60, 36,
- 59,124,250,234,244, 47,191, 94,242,105,126,250,157,228,199,119,207, 35,204, 67,133, 26,254,102,220,207,112,194,141,220,234, 8,
-171, 21, 2,158,232,186, 93,218, 57,247,163, 22,237,227,237,234,221,184, 65, 68,139, 96, 47, 23,232, 77,182,162, 40, 22, 31,235,
-215,109, 66, 98, 66,234,187, 57,247,247, 70,191, 10, 39, 91,144, 25,159,237,224, 29,250,193,221,171, 39,159, 14,120,243, 3,248,
-250, 7,213,183,255,166,101,159,153,178,217, 97,176, 8, 33, 60,183,106, 13, 54,110,220,188, 99,104,141, 32, 31, 28,191,154,128,
-107,177,185,240,240,112, 7, 95,230,131,208,118,163, 93,238, 30, 89,246,134, 62,167, 96,163, 80, 36,123,175, 89,243, 86,160,148,
- 34,230,225,253, 60,149,202,249,191,234,102, 93,218,163, 91, 0,156,158,107,134,242,172, 83, 95,225,236,118,203,104,182,225,217,
-179, 84, 92,188,116,166, 97,209,118,118, 35, 17,241,113, 44, 58, 11,102, 11, 7,179,149, 67,219,118, 93, 76, 34,158,177,205,188,
- 37,235,154,167,167,165,243,228, 78, 30,156,155,127, 29,145,175,196,108,188, 29,175, 18,153, 45, 28, 66,252,228, 21,106,122,250,
-213,154, 63,117,234,164, 58,124,145, 20, 26,173,209,148,158,246,204,103,245,111,167, 11, 30, 62,186,235, 31,224,229,236,244,237,
-210, 85, 34,181,129, 32, 75,101, 68,158, 70, 77,222, 28,247,153,223,218,159, 22,140, 0, 96,247,218,177,132,162,198, 31,199,206,
-135,187, 58,138, 72,129,193,202,229,170,205,182, 55,251,255,185, 65,148, 69,230,106,236,146, 31,150,202,162,227, 53,184, 29,175,
-130,131,136, 15,177,136, 7,147,133,131, 61,151, 19, 33,132, 87, 35,178,221,248,150,141,163,112,244, 86, 14,248,124, 30,244,154,
-124,157, 0,185,177,141,219,119,149, 53,106,218, 28, 29,218,183,195,227,216,152,160,131,251,119,117,186,124,241,108,134,194, 43,
-236,195,130,172,152, 61, 85, 42,231, 58, 29,223, 34,246, 25,237,235, 95,173,213,192, 97,163,157,131,131,252,137,151,135, 59,172,
- 84,128,177,111,189, 97,247,149, 95,104,200,129,133, 95, 79,135,209,104,130,167,139, 24,148, 2,235,150,207,134,201,100,130,159,
-187, 4, 42,173,165, 34, 99, 90,161, 31, 41, 47,234, 84,197,230,230,131,101,153,172, 23, 63, 39,132, 28,156, 54,109,218, 23, 0,
-232,180,105,211,190, 40,254,127,193,130, 5,122, 0,105,118, 25,172,226, 76,149, 91, 81,250,133,214,118,245,242,187,176,125,227,
- 79,174,249, 5,102, 56,136,248, 8, 8, 12,198,231,115,151,121,246,104,236,129,108,131, 12, 59,118,174,207, 51, 25,116,219,236,
-107, 75, 14,109,236, 40,119, 58,186,113,243, 54,206,195,221,157,247,243,177,236,248, 92,141,181,164,233, 42,246,234,126,238,198,
-209,213,190, 20,228,136,131,131, 67, 45,147,201,228, 90,217, 9, 93,119, 44,169,168,115, 46,121, 21,117, 42, 8,159,111,219,178,
-101, 51,220,157,196, 48, 90, 56, 76,251,116,162,126, 84, 87,133,242,205, 33,195, 58,118,232,249,241, 41,161, 60,244,100,203,134,
-161,180, 65,131, 6, 74, 62,159, 95,169, 94,238,211,107,255, 53, 90, 34,188,186,236,189, 25,159,141,154, 81, 70,179,160, 93, 29,
-114, 53,233,119, 47, 0,120, 46, 34, 66,106,214, 20,111,221,177,111,226,160, 33, 67,191,244,175,223, 95,145,144,174,130,136,152,
-209,164,142, 47, 78, 31,217, 67, 83, 19, 99, 39,217, 51,170, 40, 43, 59, 47,208,211,211, 27,209, 79, 11,240, 44, 87,143,140, 34,
-115,149,158,111,132, 70,175, 65,189, 96, 63, 40, 85,170,192,151, 62,190,192,158,163, 71,143, 14,238,217,111, 40, 62,254,116, 78,
-235, 95,127, 89,124, 71,225, 83,251,157,130,140,216, 51,246, 60, 25, 18, 66,242, 62,255,252,243,154,107,214,172,225,141, 24, 49,
- 66, 31, 21, 21,229, 48,114,228,200,214,155, 54,109,114,144,201, 28,244,183,207,239,255,242,189,143,166,245, 91,189,236,155,250,
-249,249,249,196,106,177, 28, 54,231,231, 79,211, 84, 98,226,146,247, 77,127, 68, 34,230,188,221,165,141,231,126, 55, 25,175,174,
-132,154,134,145,136, 57,219,232,131, 89,230, 39,135,151,107,162,134,252,240, 81,154,146,155, 97,224,121,205,171,204, 92, 1, 0,
-143, 79, 96,178,112,112,148, 10,193,227,241,138,205,187,239,250,109,135,101,158,206, 98, 8,249, 60, 8,248,133,209,205, 28,181,
- 25, 31,140,238,103,247, 19,128,213, 70,161, 55, 89,161, 43,122, 26,212,168,115, 48,253,211,201,232,209,103, 0,222, 27, 63, 25,
-249,122,224,198, 83, 13,204, 22, 75,165, 23, 5,143,240,160, 51, 90,241, 78,215, 96,228, 21,152,161,213, 91, 97,178,114,144,137,
- 5, 16, 10,120,144, 59, 8,224, 36, 19, 2,148,138, 8, 33, 99, 1, 64, 40, 20, 26,204,102,243,230, 10,206, 19,170, 7,122, 67,
-111,225,161,233,208,197,232,220,162, 54,238, 95,216, 37, 56,123,229,110,141, 79, 62,157,129,137, 99,250, 96,231,163,154,112,243,
- 10,134, 66, 46,133,133,242, 0, 80,187, 58,228, 81, 58,139,243, 13, 31, 56,124,229,154,117, 49,115,103, 78,115, 80,106, 9, 36,
- 34, 62, 78,157, 60,129,203, 87,111, 44,203,190,191,119, 51, 94, 33, 66,202,243,118,114,114,130,131,152, 15,147,217,104,178,191,
-139, 2, 5, 5, 26, 42,188,195, 86, 22, 61,225, 55,180,113, 40,227, 51, 90,217, 13,129, 56,251, 69,174, 95,185,118,203, 8, 63,
- 31, 47,236, 57,121, 7,235,215,252,136, 26, 13,122,227,194, 31,235,225, 92,189, 57,228, 65,173, 33,118,220, 49,150,199, 23, 68,
-125,248,201, 23, 3, 27, 53,105,129,139,231, 79, 33, 43, 35,125, 37,165,143,236,138,104,240,133,228,227,142, 93,250,192, 96,178,
-161, 77,167,222, 56,114, 96,207, 71, 40, 26, 60, 97,255,205,235,133,250, 25, 60,235,228, 73, 31, 11,179, 84, 38, 97,142,202,132,
-148, 28, 61, 18, 51,180,216,251,251,175,212,254,250,194,212,164,109,189, 0,225,216, 69,167, 82, 2, 3,124,141, 66,163, 94, 26,
-251, 36, 62,252,189,209,163,132, 53,106,133,243,178, 84, 70,100,171,140,200, 81, 25, 81, 96,176,162, 86, 64, 40,207, 98, 37, 45,
-170,122,158, 61,156,197,194, 21, 7,158,194, 73, 46, 68,203,240,151, 31, 56,203,113,220,127,204,213,146, 66,115,117,231,169, 10,
- 18, 17, 31, 18, 17, 15, 18, 17, 31, 86, 27,181,235,129, 69,234, 85,187,231, 7, 31, 78,240, 51, 89,129, 92,149, 9, 2, 62,129,
-151,135,171,188, 73,253,225, 88,183,248, 35, 0,192,152,207,127,198,123,239,140, 68,157,186, 81, 80,230,231,251, 12, 31,212,115,
- 9,128, 61,246,166,245,208,177, 51, 65,199,206, 69,127,254,193,212, 89,138, 33,125, 58,240,111,197,171,144,158,103,196,147, 88,
- 77,149, 34,109, 0, 96,181,113,160,160,216,176,237, 32,164, 98, 1,178, 85,102, 80, 74,241,205,143,219,225, 40, 21, 34, 61,191,
-176, 89,191,146, 58,158, 84,242,125,239, 63, 21, 63, 41,220, 63, 27,255,233,167, 85,105, 4,107,193,130, 5,247, 23, 44, 88, 80,
-102, 68,172, 82,131, 85,145,185,114,113,245,189,184,127,219, 26,183, 61,209, 38, 92,217,113, 3,189,154,249, 66, 36,224, 65,230,
-236,137,219, 79,181, 56,122,228, 55,229,161,253, 59,159,229, 9,117,223, 85,106,174,124,195, 26,202,165, 78, 39, 86,172,222,104,
-245,240,242,194,230,243,121,169,249, 90,171,229, 63,205, 83, 22,114,227,232,234, 26, 86,206,210, 93,159, 17, 87,233,227, 44, 71,
- 33, 90,240,203, 62, 0, 20, 28,199,129,114, 28,132, 14, 10,185,103,205, 22,153, 69, 21,156,131,128, 71, 12,165,175,124,202, 89,
- 83,179,227, 43, 14,119, 18, 0, 78, 50, 33,182,157,125, 6, 0,153,124,205,205,135,111, 14, 41,108, 22, 52,152, 28,212,117,107,
-214,164, 77,154, 52, 81, 74,165,210,151, 62,201, 85,109, 22,180,171,224, 60,121, 98, 2,176,200, 47,172,205,128,110,138,122, 77,
-197, 60, 17, 26,133,249,226,244,209,189,244,202,145,117, 99,116,153, 49, 27,237, 44,128, 40, 48, 88,144,150,107,192,179, 92, 3,
- 50,242, 13,200,200, 51, 34, 35,223, 0, 66, 8, 12, 38,235,159,186, 97,105,179, 98,118,108,222,184,182,175,209,140, 97,109,187,
- 14,192,228, 89, 43,130, 55,175, 92,120, 66,234, 29,222,202,158, 14,180,148, 82, 27, 33, 36,113,244,232,209,245,127,251,237, 55,
-126,100,100,164,254,225,195,135, 50, 0, 28, 0,179, 66, 33,147,254,250,211,130,163, 77,155, 54,253,253, 89,236,163, 83, 0,242,
-237, 25, 73, 85,173,253,104, 73,184, 83,222,216, 32,121,203,110, 33, 62, 50, 4,201, 53,221,194, 21,183,191,243,234,244,201,252,
-172,147, 75,179,210,141,214,227,217,122,126,131,103, 5, 66,187,250, 2, 90,140,134,164,129,131,134,130, 79,120, 48, 27,116, 73,
-197,133,203,203, 89,140,217, 91, 30, 65,225, 32,132,163, 84, 0,133, 84,136,214, 17,110,168, 66, 61, 70, 45, 54, 14, 58,163, 13,
-122,163, 21, 6,147, 21, 30,129,174, 88,179,121, 7,146,179,244,216,119, 61, 7, 49, 73, 26,132, 6,200, 65,105,229,213, 35,103,
-179,104,251,188, 49,194,145,207, 35,224,243, 8, 47, 34,188, 54,242, 10,204, 16, 9,120, 16, 57, 72, 33,151, 8,224, 36, 21, 66,
- 36, 18, 34, 43, 43, 11, 70,163, 17, 65, 65, 65, 14, 21, 91, 64, 10, 71,133, 20,161, 53,252, 96,182, 88,113,232,220, 3,204,155,
- 52, 16, 93,218, 54, 6, 17, 42,240,200,216, 16,142,110,142,224,120, 60,152,173, 28, 76,102, 27, 0, 94,185,209,182,160,160,160,
-142,114,185, 92,174,211,233, 52, 73, 73, 73,103,210, 31,237, 78,246,170,219,127,236,145, 99,167, 54,247,238,209, 5,209,119,238,
- 99,231,158,253,231,115,220, 85, 83,139,247,137,140,140,108,238,225,225,161,200,205,205, 85,223,189,123,247,218, 75, 62,237, 18,
-185,119,248, 39, 45, 90,183, 71,129, 50, 11,153, 41, 9,118, 63, 53,215, 9,118,196, 87, 11, 86, 52, 10,171, 29,214,200, 70, 11,
- 13, 87, 68,144, 35,166,204, 90,222,168,102,104,237, 70,197, 3, 61,234, 4, 85, 60,173,154,220, 59,108,194,188, 31,126,121, 43,
- 40, 48, 16,135, 47, 62,194,130, 25,227,163,229, 50,199,234, 1,222,174, 46,162,186,141,113,235,214, 37,120, 65, 12, 39,239,208,
-128, 97,125,199, 5,116,235,209, 23,119,111,223,192,210, 69, 95, 95,214,242,165,243,237, 73,171,194, 59,196,179, 65,147,182,111,
- 58,186,121, 67,169,210,192,209,213, 11,117,234, 53,121, 83,225, 29,242,121,209, 98,245, 47,103, 54, 40,133,209, 76,145,175, 49,
- 35, 57,187,208, 92, 37,100,234,192,113, 85,232,243, 99,227,136,194, 65, 32,112,179, 60, 14,186,123,226, 20, 13, 14,244, 38,139,
-190,254,148,111,134, 3,178,149,133,230, 42, 91,109, 66,182,202,132, 2,131, 5,110,114, 1, 56, 27, 87,229,167,237,252, 2, 51,
- 28,139,250,201,218,184,151,239,243,253,203,250,109, 97,183, 99,211,250,255,240,195, 82,217,173,167,165,204,149,176, 48,122, 37,
- 17,241, 97,227,184,162, 59, 77, 37,230, 94, 32,252,184, 95,207,206, 72,201,209, 23,141, 68, 38, 8,141,106, 10, 15, 41,135, 78,
- 67,167, 1, 0,250,244, 44,236,103,252, 52, 93,139, 3, 87,178,129,231, 59,108, 87, 92, 23,235,245,252,213, 91,254,248,100,199,
-246,223,157, 13, 54, 1, 86, 29, 78,132,206,104,133,131,136, 15,137,136, 15,169,136,255, 92,151,160,202, 13, 86, 97,159,186,228,
- 28, 11,116, 6, 3,212,122, 11, 40,128,107,143, 11,160, 55, 89,161,210, 90,208, 60,220,245,207, 62,243,252, 1,160,215,139, 70,
-232, 69,147, 84, 42, 2, 85, 22,215, 75,107, 20,111, 95,158,129, 43,221, 39, 11,128, 93, 15,130,130, 23,157, 98,233,255, 29,253,
- 66,107,187,184,248, 94,220,255,251, 26,183,221,209, 70,156,190,157,139, 65,109, 2,160, 83,101, 96,225,130,207,242, 8,168,137,
-199,231, 41,141, 6,253,238, 92,153,121, 30,125,240,196, 92, 97, 37,225, 25, 81, 79, 42,147,157,250,118,233, 42,179,151,183, 63,
-183,251,138, 50, 75,165,179, 61, 23, 43,180, 25,141, 60,202, 81,145, 61,230,170,168,105,195, 60,235,163, 1,224, 40,197,236,165,
- 59, 48,127,234, 80, 40,164, 35,100,132, 16,153,214, 96,197,164, 57,107,241,253, 87,239, 58,202, 36, 2, 16, 2, 24, 76, 54,188,
- 53,108,128,125, 5,207, 96,197,147,171,191, 21,104,158, 30,124, 88,186, 89,176, 89,235, 30, 55,154, 53,107,166,116,117,117,133,
- 84, 42,253, 79,100,194,206,202,186,172,209,130, 89, 74,164, 58, 58, 58,182,115,114,114, 42,173,167, 85, 42,149,123, 95,166,244,
-105,148, 57,167, 50, 18,239, 54,109,213,161, 15,206, 28,221, 75,175, 28,254,117, 76, 85,230,216,113,117,115, 77,185,121,247, 73,
- 29, 66,220, 10, 35, 88, 69,230,202,100,225, 16,236, 45, 67, 74,226, 19,184, 56, 59,167,216,171, 39,243, 10,239, 71,120,116, 60,
- 1, 93, 87,144, 17,187,163,200,236, 12,151,251,132,223,185,127,239,214,188,222,111,126, 44,232, 58,104, 2,127,229,130, 15,191,
-192, 11,157, 83, 43,192, 28, 19, 19,243,224,221,119,223,109,121,249,242,101, 27, 0, 29, 33,196,194,231,243,101, 38,147, 73,212,
-161, 67, 7,213,163, 71,143,206,194,142,206,136,109,222,217,233, 65, 36,154, 30, 53, 67,155, 12, 15,118,212,116,233,208,166, 5,
- 90,212, 13, 68, 74,155, 22, 0,240,113, 82,129, 34,172,245,251,191,110,171,225, 25,112,104,229,250, 3,243,199, 12,237, 60,201,
-175,207,156, 31,210, 14,204,170,176,131,105,242,131, 51,221,202,178,239,133,205,134, 66, 40,164, 2, 56, 74,133,112,116, 16,194,
- 98,165, 85,121, 82,164, 22, 43, 87, 24,193, 50, 89, 81,160,183,226,212,173, 76,100,168, 76, 80,106,204,208,155,109,160,160,133,
- 79,159,118,212,226, 89,113, 23, 92, 74,206,125,112, 35,213,234, 31, 23, 59,237,186,144, 90, 50, 66,207, 89, 38,134,163,172,112,
- 84,245,185,115,231,224,238, 94,249,211, 61,199,113,216,121,228, 26,126,216,112, 10, 71,214,125, 6, 7, 17, 31,245,250,205,193,
-219,253,155,129,163, 28,158,196,220,207, 12,141,168,239,205,227, 73,193, 35, 4, 70, 11, 7,128,150,123, 60, 77, 38,147,123,114,
-114,178,186, 86,173, 90, 62,254,254,254,131,248,124, 62,149, 0,198,189,191,231,233, 78, 30,220, 42,211,234,141, 54,153, 85,181,
-174, 86,186,190, 87,104,104, 40, 8, 33,212,195,195, 67,116,234,212,169,130,168,168, 40,207,151, 52, 87, 60,169, 87,237,101,239,
-189,255,201,160,154, 33, 33,216,177,117, 29, 40, 37,187,236,221,127,203,129,203,248,122,250,243, 35, 6,167,204, 90,222,232,251,
- 57, 31, 63,247,217,251,211,127,104, 84, 81,157, 17, 16,217,241,179,240,240, 8, 92,190,159,138, 69, 95,190, 31,109,200,122, 58,
-220,164,112, 31,103, 46, 72,159,220,160, 97, 99,248,184, 59, 33, 45,207,136,190, 35,250,163, 85,235, 54,184,123,251, 6,190,254,
-234,211,203,208,153,186,210,236, 7,122,123,210,202, 81,225,248, 14,221,250, 11,245, 70, 51,150, 47,154,137,113, 83,231,161,121,
-199, 62,194,123,183,174,140, 7, 48,215,222, 60, 27,205, 54,116,136,242, 40, 52,205, 22, 14,251,159,242, 5,101,149, 64, 1,159,
-240, 26,132,184, 64,111,178, 66,173,179, 84,124,163, 18, 9, 51,148, 42,117,181,159,230,127,194,215, 26,172,200, 86,153,144,165,
- 50, 34, 71,249, 31, 99,149,163, 50, 34, 91,101,130, 80, 64, 16, 27,159, 4,158, 80, 80,229,254,119,249, 5, 22, 52,173,237, 90,
-120,141,190,100,107,136, 69,224,212,236,200,217,219, 3,127,248, 97,137,195,237, 4, 13,238, 60, 85, 23, 69,174,248,144, 8,121,
- 16, 23,189,183,113, 64,101, 63,225,236, 85,179,198,168,119,199,116,114, 82, 72,145, 22,151, 5, 1,159,128,207, 39,112,246, 10,
-132,179,196,128, 15,223, 31, 11, 15,119, 23, 36,231, 24,177,108, 79, 44,238, 60,120, 12, 78, 95,181,108, 47, 95,245,123,247,247,
- 62,152,226,194, 19,138,177,233,104, 66, 97, 58,249, 54, 60,186,114,192,144,246,228,174,182, 64,157, 75, 65,109,118, 62,248, 19,
-106,181, 21, 26,211,249,179,167,225,247, 13, 63,227,232,205,172,146,206, 89, 23,118,125,143, 79,166,127,131, 28,181,169,168,232,
- 87, 28,185,122,225,255,236, 82,145,167,255,250,191,148, 41, 42,235,127, 82,244,191,169, 28, 13,211, 11,166,202,244,194,231,166,
- 23,244,236,154,187, 79, 80, 81,228,202,217,213,231,226,190,109,171,221,118,223, 52,225,204,157, 66,115,101, 53, 42,241,203,162,
-233,233, 58,165,186,109, 69, 19, 54,254,151,185,242,170, 29, 41,145,203,207,126,249,205, 50,163,183,127, 53,235,161, 91,234, 92,
-141,193,246, 95, 97, 16,145, 76,110,147, 59,123, 26, 92,130, 27,254, 32,212,155,102,102,103, 63,208, 86, 22,105,226, 40,197,193,
-171, 25,160,180,240,145,104,251,185,103, 40,122, 18,135,141, 43,108, 62, 57,126, 43, 11,130,162,126, 38,246,134,185,127, 89,245,
-179,186, 87,148, 74,251,230,252,217, 37,205,130,205,235, 23, 70,174,156,156,156,224,226,226, 2,133, 66, 1,123,154, 8,139, 41,
-111,180,160,163,163, 99,187, 91,183,110, 57, 56, 57, 57,129,207,231,195,104, 52,162,110,221,186, 47,117,129, 43,124,194, 63,104,
-218,113,192, 23,173, 59,246,193,169, 35,187,233,149, 35,235,199, 86,117, 2,195, 94,157, 91, 30,248,250,235,217, 53,190,156,247,
-147,196,209, 65,128,135, 5, 38,240, 8, 65,176,183, 12,238,114, 30,206,236,221,100, 24,218,167,165,221,147,218, 5, 6,250,111,
-254,254,199,213,242,239, 23,206,233,224,232, 31,118, 74,243, 44, 38, 15, 0,180, 25,143, 22,201,124,194, 31, 4, 92, 58,118,168,
-126,187, 1,240,246, 11,233, 82,133, 48, 47, 37,132,232,226,227,227,159,126,249,229,151, 97, 11, 23, 46,164,124, 62,159, 3, 32,
- 89,186,116,169, 46, 46, 46,238, 22, 10,135,216,162,178,232, 85,167, 46,117, 39, 41,196,182,230,110, 50, 94,221, 16, 31, 25, 90,
-212, 45,108,253, 28,218,171, 53, 2,131,130, 16,159,161,107,144,167,227,132, 5, 38,126,200,138, 85,119,174, 87,247,224,143,177,
-234, 77, 15, 80,201, 36,176,229,149,217,226,142,239,197,209, 43, 71,169, 16, 28, 80,149, 39, 69,106,177,114, 48,154,109,208, 27,
-109,208,155,172,208,154,108,208,153,108,224,104,225, 53, 65, 8,129,217,202,193,174,199,228, 23,202,190,147,155, 7, 66,170, 23,
-142,122,117,148, 22, 78,217,224, 36, 19, 22,142,117,118,119,135,151,151,151, 93, 81, 80,147,185,240, 18, 55, 89,184,146,230,123,
-147,217, 10, 74, 41, 98, 99, 99, 62, 75,124,250,180, 95,173,208, 90,109, 35,234,213,119,147, 73,120, 0, 80,174, 25,208,233,116,
- 54, 71, 71, 71, 47, 55, 55, 55,222,179,103,207, 74, 76,115,173, 6, 29,172,123,118,239,194,192,129, 3, 10, 30, 94,187, 93, 50,
- 84, 93,175,215,147, 86,173, 90, 57, 5, 6, 6,242,140, 70,163,186,106,199,128, 16,185,103,237,254,129,225, 45,231,189, 53,122,
- 92,237, 14,157,187,227,244,201, 99,216,183,251,183,141,218,172,152, 99,118, 95,239, 97,225,255, 53,138,176,102,104,237,255, 26,
- 69, 88,173, 70,104,185, 6,203,217,185,158, 83,189, 38,237, 3, 19,115,204, 56,124,248, 16,180,170,140,175, 76,166, 2, 29,132,
-116,237,193,223, 86,188,251,222, 39,115,156,218,183,107, 3, 87, 39, 25, 4, 2, 62,110, 94,191,140,133,115,191,184, 12,157,169,
-107,101,245,103, 73,126, 35, 34, 68,181,130,170, 77, 12,170, 25,137,155, 87,206,227, 73,236,189,251,183,175, 95,174, 91, 43,170,
- 57, 60,253,130, 39,146,136,136,133,244,193, 3,115,101, 58, 38,131, 33,233,237, 81, 35, 81,122, 20, 97,139,134, 97,238,228,197,
- 11, 0,128, 78,147,101,254,117,241,164,184,226, 81,132,156,217,148, 84,158,174, 42, 63,123,231,153,139, 87,167,246,235,213,157,
-151,163, 54, 21, 70,172, 84,166,162,151, 17, 57,197,239,213, 70,132,250, 41, 16,115,255, 38,103, 80,229,236,170,226,117,105,120,
-123,112,183, 7,197,101,151,227, 40, 8, 96,168,234,245, 77,133, 78, 99, 23,125,247,131,195,237,167, 5,184,147,160, 46,108, 18,
- 20,242, 11,141,149,144, 87, 98,182, 10, 71,167, 87, 18, 13, 34,252,249,239,140, 26,134, 28,181, 25, 28, 7, 8,248,188,162,151,
- 8,201, 26,130, 20,141, 14, 57,249,217,120,154,152, 4,101,198, 19,240,120, 60,120,248,213,134,189,225, 70, 27, 21,251,234, 76,
- 52,106, 80,175,182,130,221,151,210, 33,147, 8, 96,212,100,226,240,182,197,217,198, 2,245, 60,189,174, 96,183, 62, 55, 46,205,
-222,188,243, 8,201, 86, 23, 24,188, 37, 66, 62,118,108,248, 9,131,223,126,191,232,160, 20,254,249,108,198,215, 0,143, 32, 47,
- 95, 3, 66, 72, 85,163,162,215, 43,249,255,101,120, 21, 26, 85, 55, 88, 50,153,251,137,125,191,175,118,187,244,148,135,107, 49,
-249, 24,212, 38, 0, 22, 67, 62,150,125, 51, 57, 67,173,206,234,168,201,142,139,175,210, 47,241,120,221,134,190, 51,245,126, 72,
-237, 8,227,233,123, 5, 9, 74,173,165,220,126, 12, 45, 6,125,121,255,198, 31, 63,246, 84, 89,226, 39, 40,252,234,218, 56,171,
-117,145, 46, 43,102, 78, 57, 77,132,226, 57,203,118,148, 52, 15,126,190,112, 83,225,123,155, 13, 54,202,129,114,192,135, 95,253,
- 2, 43,103, 3,103,179,129,179, 81, 88,108, 84, 86, 89,114,189,252,170,237,206,127,180, 61,252,205,185,255,221, 44,232,226,226,
- 2,119,119,119,184,187,187,163,216, 16,253,217,102, 65, 39, 39, 39, 40, 20, 10,156, 63,127, 30, 82,169, 20,114,185,188, 74,186,
-165,204,213,132, 38,237,251,253,212,177,239,187, 56,190,123, 21,189,126,238,192, 56, 93,102,204, 90,187, 35,241, 54, 27,177, 88,
- 44,232,213,181,125, 82,244,253,199, 71,102, 76, 29,223,189,101,239,113,146, 22, 97,254, 48,152,108, 72, 77,124,130, 51,123,215,
- 27,106,215,240, 61,218,169, 77,179, 36,139,197, 2,155,205, 86,233, 13,220, 96, 50,231,240,133, 82,249,176, 97,111, 10,175, 95,
-187,182, 75,225, 85,123,135,141,240,110, 19,202,213, 35,132, 12,172, 87,175, 14,204, 22, 14, 58,157, 58,191,170,121,214,104, 52,
- 79,215,173, 91, 87, 99,212,168, 81,178,136,136, 8,225,147, 39, 79,240,253,247,223,231,106, 52,154,167,246,106, 28, 59, 23,179,
- 84, 64,242,227,196,156,121,120,176,163,166, 75,114,235, 22, 24,214,187, 53,126,255,227, 2,206,156,191,140,164, 2,197,173, 2,
-171, 96,111, 74, 82,154,177,174,155,122, 87,223, 22,213,248, 59, 54,228,239,242,234, 48,125, 8,165,146, 99,217,103,102,105,237,
-191,121, 3, 26,189, 5, 78,178,194,249,154,138, 35, 89,124, 66,236,118, 66, 4,120,122,254,242,205,200,198,161, 17,136,126,170,
- 66,150,210, 8,189,209, 10,142,163,224, 64,225,238, 40,134,131,136,135,228,196,167,224,168, 57,161,138,183,136,236,118,109,219,
- 9, 0, 2, 66,168, 64, 40, 16,128,162,112, 94, 68,169, 84, 90,224,229,229,101, 87, 4,203,108,181, 98, 96,247,102,104,222,164,
- 30,250,141, 91, 12, 0, 56,185,113, 26, 92, 21, 66,252,190,121, 45,146,207, 46,217, 28,210,242,253, 99,247,238,222,127,227,126,
-244,165, 55,123, 52,146, 54,240, 17,164,137,202,211, 43, 40, 40,216, 69, 8, 17,139, 68,162,238,109,219,182,117,219,181,107,151,
-210,195,195,131, 19,139, 68,217,125,251,244,230,132, 34, 81, 94,241,182, 23, 47, 94, 20,142, 27, 55,206, 49, 63, 63, 63, 57, 51,
- 51,243, 50,165,212, 82,241, 3, 96,120,103,240,240, 27, 8,113, 80, 72,101, 73, 45, 58, 15,243,107,210,188,153,115,255,129,131,
- 33, 17, 75,112,252,216, 17, 44, 95,178,112,123, 65,250,195,119,170,114, 36, 95,197, 40, 66,149,202, 89, 27,247,224,118,126, 66,
-150,201, 85,232, 18, 10,161,196,113, 28,113,246, 91,198,151, 40,102,121,214,239,239,180,115,255, 33,220,189,119, 15,110, 82, 11,
-226,159,196,233,238,221,138,254, 89, 71,132,115,104,246, 3,157,189,233,148,229,218,222,104, 49,178,187,171,209,108,195,185, 83,
-127, 24, 56, 43,215,253,242,217, 67, 79, 2,106, 55,113,136,108,210,201, 53,103,223,218,129, 0,126,175, 76, 39,245,225,127, 71,
-108,131,194,154, 38,156, 60,117,194,217, 59,184, 46,159,128,192,108, 52, 32, 59,254,186, 85,151,249, 72,173, 74,189,107,215,168,
-218,220, 20,124, 53,125,214,183, 19,154, 52,110, 44,167,112,120, 46, 98, 85,108,172,114,212, 38,120, 56,138,161, 87,103, 35,238,
-250, 17,131, 46,155, 95,225,124,101, 86,147, 86,150,147,149, 89,210,148, 86,144, 25,211,188,162,237,115,178, 50,197, 86,147, 86,
- 86,249,173,142, 15, 39,185, 24,119, 19,158,149,116,104,151, 8, 11,251, 94,137,133,252,146,126, 88,197,117, 65, 37,180, 23, 57,
-184,224, 89,174, 1, 4, 20,156,205, 10,171,197, 4,141, 90,141,103,105, 25,200,204,200,132, 70,163,132, 76,225,138,200, 6, 77,
-225, 40,119,192,237, 51,219, 65, 41,181,107, 94, 66, 11, 17,134, 53,105,222, 70,114, 47,177,176,175,149,131,144,226,192,111, 11,
-115, 11,212, 89,109, 52,105,177,113, 85,173,139,173, 54,219,137, 59, 15,226,234, 6,248, 86, 39,183,158,168,176,121,205,143, 48,
- 21, 69, 50, 45, 22, 27,238, 37,107,145,158,167, 67,114,252, 67,202,217,108, 39,240,154, 83,174,193, 18,137,133, 82, 39, 55, 63,
-124, 61,124, 4,126,254,249, 23, 36,164, 60,195,242,175, 39,101,168, 53,217, 29, 52,105,113,177,118, 62, 5,118, 46,158, 43, 67,
-155,241,104,209, 59, 63, 39,164,238,143,206,227,233, 77,180,194, 14, 60, 14,158,193,104,243,206,247, 71,245,154, 60,177,205,168,
- 19, 28,216,252,206,111,101,105, 22, 58,102,152,230, 77, 25, 10,133, 84, 0, 66, 8,138,155, 5, 87,124, 61, 22, 50, 73, 97,219,
-177,222,104,197,136, 73, 63, 96,243, 15,147, 65, 1, 12, 31,124, 65, 87, 94, 58, 75, 53,225, 5, 36, 37,102, 61,235,220,103,202,
- 73,131, 89, 98,236, 61, 96,212,141,198,141, 27, 43,165, 82, 41,164, 82, 41,156,156,156,224,234,234, 10, 23, 23,151, 74,243, 94,
-238, 36,162,165, 70, 11,242,120, 60,240,120, 60,200,229,114, 40, 20, 10,200,229,242, 10, 53,203, 53, 87,237,250,174,232,212,239,
- 61, 28,223,189,154, 94, 63,119, 96,188, 46, 51,102,141,189,231,168,168, 89,231,246,192,129, 3,163,198,141, 27, 39,154, 53,117,
-220,209, 63,142,157,137,221,113,112,117,159,252,124,101, 32,165, 20, 46,206,206, 41, 67,251,180, 60,208,161, 85,147,164,147, 39,
- 79,114,191,253,246,155,145, 16,114,183,178,116,230,100,101,109, 60,121,226,212,236, 54,237,218, 99,237,134,223,218,221,127,240,
-176,221,147, 39,113, 8, 12, 14, 65,245, 26,161,208, 17, 87,156, 58,123, 30, 5,202,172,141,246,164,243,133, 40, 22,201,207,207,
-191, 52,116,232,208,174, 23, 46, 92,224, 13, 29, 58, 84,151,147,147,115,177,248,185,169,188,232, 85,105,205, 75,191,244,207, 6,
-176,177, 90,251,209,219,159,153,149, 19, 1, 44, 12, 10, 14,194,153,243,151,113,249,194,213, 95,114,100, 65,115,222, 25, 49,122,
-108,181,190,252,247,250,182,168,198,247,114,149, 97,235,234,239,249,251, 47, 39,254,144,152,107, 91, 11,224,107,123,206, 81,201,
- 13, 67, 99, 70,171, 58,110,176,216, 40, 56, 90, 88,209, 58, 58, 8,203,172,112,203,210, 20,152, 36,239,140, 31, 55,238, 73,100,
-189, 6,159,140, 24, 61, 94,212, 32, 36, 16,215, 30, 43, 1, 66,224,230, 35, 71,122,122, 58,206,237, 92,109,205,127,246,232, 23,
- 62,159,155, 91,149,178,148,151, 24, 93,171,212,118, 99,115,114,114,112,230,204, 25, 20, 27, 43, 79, 79,207, 50, 13,214,139,154,
-185,153,105, 23,191,254,110, 85,171, 49,111, 13, 64,239,246,117,113,246,250, 19,152,138,230, 91, 42, 30, 18,254,244,242, 74,241,
-196,161, 33,166, 9, 3,107,171,245, 22,113,226, 87, 9,170,115,165, 71,185,190,168, 73, 41, 53, 17, 66,246,199,196,196,180,174,
- 95,191,126,181, 67,135, 14,229,221,191,122,244,227,210,233,152, 50,101,138,226,231,159,127,150, 81, 74, 47, 26,141,198,120,187,
-242,206,195,214,155, 55,110,184,155, 45, 28,206, 95,189, 93,167, 83,171, 6,224, 40,112,253,250,117,172,253,117,173,225,238,157,
- 91,139,181,153, 62,115,203, 27, 32, 82,222,241,180,253,137, 81,132,197,154,148,158,177, 42,188,195,127,185,120,254,236, 12,137,
- 95, 99,132,247,252,162,239,179,219,251,251,250, 68,116,131, 71, 72, 75,164,221,217,143,139, 71,183, 28,226,172,214,105, 14, 28,
- 47, 73,155,253, 72,107,239,245, 94,140, 68, 42,251, 40,162, 81, 59, 36, 39, 37, 34, 33,238,222, 70,125,110, 92,154,194, 39,124,
- 99, 90,106,210,248, 26,117, 91,225,194,209,223, 63, 46,207, 96, 85, 86,230, 3, 61,165,171, 15, 29,220, 63, 44, 53,117,165,143,
- 86,111,144, 80, 74, 13, 18,177, 32, 67,193,211,108,179, 55,157,148, 62, 48,203,221,170, 15, 28, 60, 98,252, 31,203,151, 47, 17,
-122,187,200,144,145,111,128, 90,111,134, 70,103, 6,143, 16,212,242,147, 67,167,201,195,217,157,223, 89, 76, 5,249, 67, 41,125,
-108, 46, 79,179,112, 61, 65,250,225,148,247, 79, 67,236, 28,232, 87,163,211, 23, 21, 70,231, 52,105,119,250, 76,121,255, 64, 24,
-165,180,147,194, 59, 92, 83,144,249,232,203,242,242, 78, 72,225,245,253,102,135, 64,152,173,133,243,135, 89, 57,192,198,113, 69,
- 81, 61,128,150,180,219,147, 74,242, 78,184,109,127, 92, 68, 90,166, 18,122,147, 5, 70,147, 21,102,139, 13, 60, 62, 31, 46,174,
- 46, 8,173,222, 16,206, 46, 78,200,204, 72,195,229,147,251, 17,123,231,236, 69, 66, 49, 71,151, 21,123,210,158,115, 36,146,186,
-132,249,250,249,240,210,213, 38, 72,197,124,220, 58,123,200,108, 49, 25, 23,219, 99,174,202,210, 84,230,230,253,240,201,212, 79,
-135,175, 95,183,193, 39,170,134, 19, 82,115,244, 72,205, 54, 64, 99,176, 20, 25, 48, 14,198,130, 28,220, 57,181, 33,195,102,208,
-252,240,175, 53, 88,156,213,102,138,121, 28,143,105,115,190, 67,124, 98, 18,150, 47,248, 52,179,160, 10,230,170, 44,214, 77,168,
-254,123,213,246, 40,154,146,100,110, 98,197,207,219, 47, 54, 11, 82, 14, 28,165, 56,112, 53,163,164, 89,144, 43,234, 81, 25,253,
- 68, 89,165, 38,188, 59, 49,154, 45,122,125,166,243,163,199,139,243, 1,128,207,231,151,188,138,251, 74, 25, 12, 6,211,203, 52,
- 11,190,216,161,157,227, 56, 56, 57, 57, 65, 42,149, 86,185,233, 81,238, 29, 54,172, 73,251,126, 63,117,234, 63, 6, 39,246,172,
-161,215,207,238,127, 95,151, 21,179,186,202,125, 16,242,243,239, 19, 66,226, 22, 47, 94,220, 96,237,218,181, 53,166, 78,157, 26,
-191,233,167,217,203, 1, 32, 55, 55, 23, 0, 16, 29, 29, 77,223,127,255,125,163,193, 96,120,154,159,159,127,147, 82, 90,105,211,
-129, 62, 91, 54,127,237,138,133,145, 41,207,210, 7,132, 68, 54,133,103,141,166,240,169,213, 12,249, 26, 51,174, 61, 78, 67,252,
-195,147,120,120,126,231, 33,157,194, 58,187,170,105,174, 95,191,126, 32,143,199,171, 94, 80, 80,224, 19, 17, 17, 81, 95, 46,151,
- 71,215,175, 95,191,161, 64, 32, 72,189,113,227, 70, 98, 85,180, 18,207,172, 55, 86,107, 63,122, 89,146,198,177, 67,124,134,174,
- 97,146,198, 49, 90, 39,113,158,156,117,114,169,209,187,235,226, 31,168, 57,231,254,142, 13,234, 93, 91, 87,127,207, 31, 49,118,
-138,237,158,202,117,162, 64, 42, 62,190,224,237,168, 42, 52, 63,241,210, 39,140,234,247,159,105, 26,138, 34, 87, 69,239,237, 10,
-199, 43,149,183, 85, 0, 62,151,250,213,253,233,222,196,113, 95,215,107,210,106,100,219, 30, 67,121, 86,145, 2, 71,247,172,164,
- 79,239,156,218, 33,160,182, 25, 58, 59,102,239,175,180,217,199,100,170,212, 92,149, 25,121, 73,145,183,223,241,219,175,111,239,
-218,179,123, 65,255,190,253,220, 87,124, 53, 4,223,173,218, 11,185, 84, 2,202,113, 24,218, 49,104,208,195,223,186,245, 9,244,
-118,240,223,117, 58,245,220,135, 75,238,125,174,211,153, 99, 43, 27,229, 90,100,152,207, 59, 58, 58,102,183,110,221,186,185, 68,
- 34, 33, 57, 57, 57, 2, 47, 47, 47,171,179,179,179, 41, 53, 53, 85,103, 52, 26,119, 81, 74,181, 85,201,167,217,194, 33, 33,211,
-128,125,187,119,225,246,213,147,120,248, 48, 70,243,240,193,195, 31,137,128, 46, 41,200,136,205,123,153, 99,199,149, 57,138,144,
- 86,121, 20,161,150, 47,157, 31,125,240,187,246,161, 29, 63,110,225, 94,179, 21, 92,131, 11,199,232,168, 82,239, 33,229,250,142,
-125,154, 52,209, 96, 74,239, 89, 94,246, 28,251, 5,212, 8,165,124, 49, 46,157,249, 3,148,227,126, 1, 0,202,113,191, 68, 95,
- 56, 52,190, 89,207,247,224,230, 85,173,126,241,216,249,170,106,139, 4, 60,237,225, 93,235,247, 36, 36, 36,224,209,163, 71,120,
-252,248, 49,242,242,242,176,117,107, 66,149,206,143, 54, 47,225,184,194, 61,164,219, 27, 67,222, 60, 48,104,216, 91, 14, 53, 66,
-163,120, 97, 1,174,112, 87, 8, 16,243, 56, 17,177, 55,238,112, 49,215, 14, 25,204,234,172,254,186,188,132,114, 13,159,220, 51,
-194,155,240,232,180,226,181, 5, 91,180,104, 21,246,233,188, 5,205,221, 61,189,202,172,199,115,179,179,196,159,125,184, 63,236,
-242,149, 75,118,173, 69,200,217,108,185, 99,223, 30,202,241, 11, 23,242, 68, 73, 92,154, 20,158,236,194,135,168,194,207, 41,103,
-173, 52, 98, 63,122, 64, 27, 88, 57, 14, 90,189, 25,106,173, 17, 42,141, 1,233, 89,185,184,125,231, 14,206, 30,216,143, 39, 49,
-183,159, 90, 76,166, 99, 60, 30,217,169,203,136, 57, 91,181,150, 37, 65, 13,119, 55, 55, 60,205, 43,128,131, 88,128,196,216, 27,
- 70,173, 90,181,229,101,203,145, 46, 39, 54, 93,238, 29,214,117,232,208, 97, 71, 58,118,235,235,220,164,101,103,153,135,147, 11,
- 68, 2,138,184,132, 52,220,188,120, 68, 27,127,251,156,218, 98, 42,232,254, 42, 86,105,249,199, 26, 44,181, 38,187,195,187,239,
-140, 59,202, 19,240, 37,160,156, 65,167,203,239,254,103,204,213, 95, 5,165,182,212,183,135, 15,120,238, 89,192,202, 81,233,240,
-193, 71,245,165,159, 13, 44, 54, 42, 27, 62,248,162,174,176,226, 40,191,195, 94, 73, 19,222,239,199, 83,147,146,114,175,231,229,
- 25, 79,255,217,145,125,165,215, 22,172, 96,180,160, 54, 60, 60,188,196, 84,241,249,124,216,108, 54,187, 43, 32,145, 68, 58,166,
- 99,223,119,201,137,189,107,232,181, 51,123, 39,232,178, 98, 87,189,252, 49,165,102, 0, 87, 9, 33,247,102,204,152,209,196,219,
-219,219,123,230,204,153, 14,106,181, 90,184, 98,197, 10, 67, 78, 78, 78,134, 90,173,190, 76, 41,213,219,175,121,211, 2, 96,160,
-194,187,118, 7,186,107, 77, 23, 23, 15,255,174,206,158, 1, 53,149,217,207,158,170,178,211,142, 1, 56, 81, 52,193, 99,149,104,
-216,176, 97, 8,143,199, 27, 10, 32, 82, 46,151,215, 82, 40, 20, 18, 74,105, 56, 33,228, 62,199,113,119, 34, 34, 34, 14, 2,168,
-210,249, 75, 60,179,222,216,118,194,175,191,229,233, 56,145,137, 39,250, 45,241,204,122, 35, 0,100, 30,155,170, 3,176,207,187,
-195,180,129,251, 47, 39, 46,191,159,239,252,113,214,233,249,251,171,154,102,101,202,173, 90,175,170,252,235,211,238,167, 2,120,
- 91,238, 29,246,253,221,232,203,179, 8,133,208, 6,235, 55,186,204,184, 27,175, 66, 95, 40, 20, 26,252,253,253,203, 28, 45, 40,
-145, 72, 12, 21,159,243, 51, 86, 0,107, 9,105,191, 97,247,246, 13,111,239,221,191,111, 65,219, 78,253,221, 29, 2, 2, 80,221,
-139, 96,195,180, 70, 31,159,140,206,190,214,247,211,115, 63,199,167, 25,238, 80, 74,171,212,223, 69,163,209,196, 18, 66,242, 11,
- 10, 10,250, 81, 74, 83, 8, 33,129,249,249,249,183, 44, 22,203,221, 42, 27, 1, 14,111,182,104,209,116, 43, 33, 68, 64,173,220,
-162,203, 66,254,111,134,244,135,169, 47, 99, 40, 74, 19, 85,221, 9,147,102, 46,107, 84,179, 86,237, 70,197,107, 17,214,173,230,
-136,113,159,127,223,168, 90,141,208, 70,255, 89,159,176,226, 81,132, 52,237,166,158,120, 71,117,137, 57,182,248, 43,247, 39, 23,
- 39, 72,221, 2, 20,218,156,196,188,252,196, 27,139,117, 89,222,139, 95,102, 98,201,210, 36, 60,190,191,100,237,226,207,167,166,
- 63,123,186, 86,155, 21,123, 15, 0,180, 89,177,247,100,222,181,191,202,201, 72,157,154,155, 21,191,248,101,143,133, 86,171, 77,
-219,178,101,139, 75,171, 86,173,120,222,222,222,200,206,206,198,233,211,167, 57,142,227,158, 85, 85,171, 32, 55,254, 52, 33, 53,
-221, 54,174,250,105,145, 72,238,216,211,106,181,250, 81, 10, 8, 4,130,116,147, 78,125, 68,195,147,127, 74,243, 18, 42, 41,151,
- 28, 1,192, 43, 94, 91,144,227, 56,178,104,249,134, 68,161,131, 99,153, 77,170, 22,131, 70,198,113,156,221,107, 17,230, 39,221,
-168,249,170,174,111, 66,233,156,250,141,155,127, 97,177,152, 13, 40,236, 15,102, 0, 96,160, 20,185, 60, 30, 57,203,231, 44, 71,
- 85,127,226, 33,138, 16, 56, 81, 34,128,163, 84, 0, 2,130, 2, 85, 30,173, 74,159,171, 50,207,119,102,204,125, 66,218, 7, 31,
- 54,109, 31,117,234,248,161,193, 54,155,173,122, 81,201, 73, 48,234,181, 59, 10,210, 93, 55, 82,122,221,138,127, 1,228, 79,214,
- 31, 85, 14, 33,254,175,107,134,135,200,250, 5,248,123,143, 74, 72,204,186, 22,159,162,219, 88,122,249,155, 63,171,153,146,146,
-125, 58, 54, 81,187,166,244,242, 55,175, 42,239,114,175,176,174, 14,114,249,231, 6,189,118,147, 54, 35,102,195,171, 60,158,132,
- 16,103,137, 68,210, 80,161, 80, 8,115,114,114,174, 82, 74, 85,255, 75,231,189, 65,131, 6, 65, 60, 30,175, 58,199,113,222, 0,
-156, 81, 56,202, 35, 71, 32, 16, 60,187,113,227, 70,162, 61, 77,132, 47,210,230,157,157, 30,157,186,212,157,116,236, 92,204,210,
-162,230,195, 18, 2, 6, 47,113, 24,217,179,195,148,141,187,247,253,215, 40,194,127, 98,153,255,255,210, 36,164,189, 64,225,155,
-243, 54, 79,236,252, 77,167, 48,131, 46, 39,237,217,251,231,239,102, 95,165,148,106,254, 76, 58,197, 98,241, 8,179,217, 44, 21,
-137, 68,122,147,201,180,229,127, 37,239, 50,239,240,119,121,160,118,175, 36,193,129,220, 40, 61, 24,165,188,116,146,136, 8,145,
- 44, 27,174,186, 28,143,220,170, 26,171,191,231,188, 19,126, 84, 84, 84, 27,145, 72, 20,100,179,217,100, 38,147, 73,167,215,235,
- 19, 18, 19, 19, 47,149,183, 32,249, 95,157, 78,133,119,237, 37, 34,145,100, 34, 0,152,205,198,101, 5,153,177,147, 42,218,183,
-188,237,255,233,215,166,103,141, 38,113, 2,190,208, 19, 69, 19,106,115, 86,107,118, 70,252,181,208,191, 43,157,175, 29,180,104,
-121,132,191,226, 5,160, 51,211,100,154, 76,147,105,150,177, 45,143, 29, 79,166,249,119,106, 58,248,214, 9,116,240,173, 19,104,
-239,254,101,109,207,142, 39, 5,123,149,255, 18, 48,139,201, 96, 48,254,134, 7, 59,142, 29, 5,198,223,137, 62,237, 65,202, 95,
-185, 61,131, 65, 80,184, 42,117, 89, 21,160,221,161, 63, 66, 72,231,151,168, 96, 79, 48, 77,166,201, 52,153, 38,211,100,154, 76,
-243,223,165, 89,153,246,107,211,244,200,154, 8,153, 38,211,100,154, 76,147,105, 50, 77,166,201,154, 8, 95,237,139, 7, 6,131,
-193, 96, 48, 24, 12,198, 43,133, 25, 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, 96, 6,139,193, 96, 48, 24, 12, 6,131,241,242, 16, 74, 41,138,150,152, 34, 0,158,123,207, 96, 48, 24, 12, 6,131,
-241,255, 98, 72, 94, 51, 47, 82, 98,176, 0,128, 82, 74,152,193, 98, 48, 24, 12, 6,131,241,119, 24,172,215,201,139, 60, 23,193,
- 42,157, 57,118,170, 25, 12, 6,131,193, 96,252,127, 26,172,215,201,139,176, 38, 66, 6,131,193, 96, 48, 24,255, 51, 6,235,117,
-241, 34,204, 96, 49, 24, 12, 6,131,193, 96, 6,235,175, 48, 88, 12, 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,183,240,151, 78, 52, 74, 8,233,204, 52,153, 38,211,100,154, 76,147,105, 50, 77,166,
-201, 12, 22,131,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,152,193, 98,
- 48, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,241, 55, 65, 0,148, 57, 18,128, 82,122,194,110,145,151, 24, 77,
- 80,153, 62,211,100,154, 76,147,105, 50, 77,166,201, 52, 95, 63,205,202,180,171,226, 63,254,167,161,148,254,101, 47, 0,157,153,
- 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,109, 47,214, 68,200, 96, 48, 24, 12, 6,131,241,138, 97, 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,152,193, 98, 48, 24, 12, 6,131,193, 96,
-188, 60,164,104, 52, 0, 8, 33,148, 82, 74,216, 33, 97, 48, 24, 12, 6,131,241,183,152,146,215,200,139, 16, 74,105, 73,134,152,
-201, 98, 48, 24, 12, 6,131,241,119,154,171,215,197,139, 48,131,197, 96, 48, 24, 12, 6,131, 25, 44,102,176, 24, 12, 6,131,193,
- 96, 48,131,245, 15, 48, 88,165, 51,198, 78, 49,131,193, 96, 48, 24,140,191,211,100,189, 22,121, 41, 54, 88, 12, 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, 55,240,151, 78, 52, 74, 8,233,204, 52,
-153, 38,211,100,154, 76,147,105, 50, 77,166,201, 12, 22,131,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,152,193, 98, 48, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,241, 55, 65, 0,148,
- 57, 18,128, 82,122,194,110,145,151, 24, 77, 80,153, 62,211,100,154, 76,147,105, 50, 77,166,201, 52, 95, 63,205,202,180,171,226,
- 63,254,167,161,148,254,101, 47, 0,157,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,109, 47,214, 68,200, 96, 48, 24,
- 12, 6,131,241,138, 97, 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,152,193, 98, 48, 24, 12, 6,131,193, 96,188, 60,132, 82, 10, 66, 8, 45,250,191, 61,165,244, 44, 59, 44, 12, 6,131,193, 96,
- 48,254, 95, 13,201,107,230, 69, 74, 12, 22,165,148, 20,255,101,167,153,193, 96, 48, 24, 12,198,255,183,193,122,157,188, 8,239,
- 5,231,216,158,157, 98, 6,131,193, 96, 48, 24,127,151,201,122, 93,188,200,115, 17, 44,118,106, 25, 12, 6,131,193, 96,252, 93,
-230,234,117,242, 34,204, 96, 49, 24, 12, 6,131,193, 96, 6,235,175, 48, 88, 12, 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,183,240,151, 78, 52, 74, 8,233,204, 52,153, 38,211,100,154, 76,147,105,
- 50, 77,166,201, 12, 22,131,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,
-152,193, 98, 48, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,241, 55, 65, 0,148, 57, 18,128, 82,122,194,110,145,
-151, 24, 77, 80,153, 62,211,100,154, 76,147,105, 50, 77,166,201, 52, 95, 63,205,202,180,171,226, 63,254,167,161,148,254,101, 47,
- 0,157,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,109, 47,214, 68,200, 96, 48, 24, 12, 6,131,241,138, 97, 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,152,193, 98, 48, 24, 12, 6,
-131,193, 96,188, 60,164,104, 52, 0, 8, 33,148, 82, 74,216, 33, 97, 48, 24, 12, 6,131,241,183,152,146,215,200,139, 16, 74,105,
- 73,134,152,201, 98, 48, 24, 12, 6,131,241,119,154,171,215,197,139, 48,131,197, 96, 48, 24, 12, 6,131, 25, 44,102,176, 24, 12,
- 6,131,193, 96, 48,131,245, 15, 48, 88,165, 51,198, 78, 49,131,193, 96, 48, 24,140,191,211,100,189, 22,121, 41, 54, 88,204,100,
- 49, 24, 12, 6,131,193, 96, 38,235, 47, 48, 88, 12, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,254,231,248,
- 75, 39, 26, 37,132,116,102,154, 76,147,105, 50, 77,166,201, 52,153, 38,211,100, 6,139,193, 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,204, 96, 49, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12,
- 6,131,193,248,155, 32, 0,202, 28, 9, 64, 41, 61, 97,183,200, 75,140, 38,168, 76,159,105, 50, 77,166,201, 52,153, 38,211,100,
-154,175,159,102,101,218, 85,241, 31,255,211, 80, 74,255,178, 23,128,206, 76,147,105, 50, 77,166,201, 52,153, 38,211,100,154,255,
-182, 23,107, 34,100, 48, 24, 12, 6,131,193,120,197, 8,202,250, 80,216,108, 94,166,213,106,245, 2, 0,129, 64,144,101,185,246,
-165,111, 69, 34, 66,160,147, 21, 88, 83, 36, 56,198, 66,233,241, 50, 52,143, 91,173, 86,215, 34,205,124,203,181, 47,187, 85,168,
-217,244,155,163,207,109,127,117, 70,151, 50,226,139,124, 97,211,111,210, 94, 72,171, 95, 21,194,119,182,255,143,116,254, 83, 52,
-255,205,136,154,207,203,180, 88, 10,203,145, 80, 40,200, 50, 95,173,184, 28,137,154,125,147,246,220,246, 87,102,120, 87,164, 41,
-147, 74,114,107,250,123,254, 80,145,102,124, 90,206,100,173,206,224, 94,145,102, 85,175,205, 64, 95,223, 78,182,162,107,147, 15,
-140, 73, 73, 75, 59,254,191, 84,150, 8, 33,141, 1,124, 9,192,169,212,199,119, 40,165,159,176, 82,201, 96, 48, 94, 59,131,101,
-181, 90,189,110,238,153, 5,173, 17,232,244,214, 55, 94, 33,253, 87,109,253,175,109, 12,249, 98,229,253,109, 81,124,139,218,213,
- 83, 96,118, 74, 75, 75, 35, 69, 21,230, 26, 0, 65,101,104,186,222,220, 51, 11, 58, 19,208,118,216, 28,215, 32,192, 41, 91, 36,
-154, 34,149,203, 59,232,245,250,186, 0, 32,149, 74,239,235,181,218,211,158,102,243,247, 47,110, 95, 94, 6, 74,167,181,227,200,
-111,188,194,251,175,250,216,198,113,226,103,215, 87,182, 53,228,196, 9,132, 86,227,138, 47,128,195,179, 0,155, 61, 7,228,185,
-223, 29, 60,221, 93, 8,116, 20, 59, 56,212,119,113,117,109,195, 81, 90,135,227, 56, 98,179, 90, 31,168, 85,170,243,156,213,122,
-219,106,210,186,223,220,191,128,171, 40,157, 47,230,101, 48, 32,216, 3, 12,146, 43, 20, 29,248, 66, 97, 75, 0,176, 89, 44,151,
-180, 5, 5,167, 7, 0, 59,237,201,187,189,199,231,101,183,255,183, 97,177, 88,189,158, 30,157, 5,163, 5,104,248,198, 2,175,
-122,111,110,220, 10, 0,166,172,219,222, 5,113,251,155, 1,128,188,102,239,171, 18,159,134,153, 0, 32, 72, 74,247,138, 61, 56,
- 3, 70, 11, 80,167,247, 28,175,202, 52, 71,207,220,238,254,217,216,129, 18, 0, 56,182,235,167,218,167,118,255,210, 3, 0, 58,
- 14,124,255,112,215, 55, 62,140, 5,128, 69,171,119,187,255,190, 96, 72,133,154,246, 93,155, 42,145, 42,238, 96, 45,147, 58,221,
- 37, 80, 46,240,137,139,139,227, 1,128,159,159,159, 93,215,102, 0,224,156, 14,124,192,227,243,219,212,172, 85,171, 33, 0, 26,
-255,228, 73,180,205,106,189,224, 11,172,120,197,101,233, 99, 74,105,159, 23, 76, 23, 43,144, 12, 6,227,245, 52, 88, 0,160, 53,
- 2,103, 31, 3,237,154,215,195,216, 55,123, 42, 74,127,183,115,213,156,160,184,235,251,194,127,221,248, 61,175, 94,189,122,120,
-250,244,169, 93, 63,166, 51, 1,103,226, 0, 40, 31, 58,230,203,229, 79,150,124,247,157, 83,151, 46, 93, 4,126,126,126, 32,132,
- 32, 35, 35,163,249,137, 19, 39, 26, 79,154, 52,105, 60,148, 15,243,117, 38,104,206,196, 85,174, 91,156,214,186,181,171,225,203,
- 15,135, 56, 3,192, 23,111,173,104,124, 61, 38,211,237,201,147, 39,157, 62,255,252,243, 92,254,233,211,191,120, 0,235, 51,129,
- 20,123,210,185,233,192, 85, 7,231,244,223, 66, 70,124,248,225,174, 90,181,106, 41,130,131,131,137,163,163, 35,248,124, 62,242,
-243,243,131,238,221,187,215,227,218,181,107,218, 19,103,215,136,111, 92,235, 27,159,229,208,204, 96, 87,222,245,105, 14,199, 28,
- 29,239,143, 28, 48, 32, 96,200,144, 33, 14, 53,107,214, 4, 0, 60,121,242, 36,116,231,206,157,195,118,237,218, 53, 19,250, 52,
-171,206, 4, 67,101,121, 47,209, 4,224, 0,180,116,241,242, 26,193, 23, 10,235, 90,173, 86,255,162,232,194, 51,155,197,114, 95,
-153,149,181,229,197,237, 25,255,141,209, 2, 60, 76, 7, 58,183,105,136,145, 3, 59,203, 1,224,243,161,243,154, 39, 37, 60, 22,
-153, 76, 38,212, 14,171,211,234,235, 5, 63, 28, 5,143,135,205,187, 79,148,108,111,143,230,157,135, 79, 49,235,235, 37, 72,187,
-187,179,185, 77,245,184,131, 70,173,226, 3,128,147,179,243,192,157,219,126, 59,237, 23, 53,232,202,227, 28,179, 93,154, 21, 93,
-155, 71,182,253,232,155,122,239,116,196,207,199,214, 9,131,130,130,112,247,238,221,170, 93,155,170, 24, 71,206,215,247,193,247,
-159,126,234,211,182,109, 91, 40, 20, 10, 8, 4, 2, 88,173,214,206, 23, 46, 92,232, 60,107,214,172,247,161,138,209,218,123,109,
-218,193,247,132,144, 14,163,199,126,236,219,179,223, 32, 12,236,222,138, 21, 68, 6,131,241,250, 26, 44,129, 64,144,213,101,212,
-124,175, 54,205, 34,113,253,118,172, 42, 49, 57,189,160,248,187,188,251, 59,107,247,107,229, 31,113,238,220, 89, 24,141, 70, 92,
-186,116, 9,183,111,223, 70, 66, 66, 2,198,141, 27,103, 20, 0, 99,202,209,204,111, 59,108,142, 43, 84,113,138, 80,113, 76,245,
- 19,143, 30,241, 13, 6, 3,206,157, 59,135,252,252,124,136,197, 98, 4, 4, 4,160,107,215,174,130, 71,143, 30,185,117,234,210,
-221,185,109,247,225, 79,225, 28, 90, 32, 16, 8,242,203,205,128, 64,144,213,233,173,111,188, 34, 66,171,225, 73, 98,154,234,203,
- 5,191, 22,112, 28, 21,196, 39, 36,153,207,158, 61,139,134, 13, 27,226,248,241,227,238,121,121,121, 95,173, 88,177,226, 75,225,
-183, 63, 47,179,152,114,167, 86,160,151,223,118,216, 28, 87,247,172, 29,193,167,142,236, 21,221,191,127, 95,180,114,229, 74,228,
-230,230, 66, 44, 22,195,197,197, 5, 62, 62, 62,168, 93,187, 54,249,226,139, 47, 20,189,123,223,199, 71, 99, 6, 5,155, 67,222,
-139, 41, 47,157, 37,121, 47, 72,146,121,168,143,213,220,253,199, 31,188,214,173, 91, 63,247,152, 94,163, 70, 13,116,235,214,205,
- 97,196,136, 17, 53,135, 12,123,147,107,219,107,244, 19, 40,130,117,149,106,106, 83,164,238,186,203,126,157,135, 13,219, 63,103,
-206, 28, 23, 31, 31, 31,200,229,114, 0,128, 74,165, 10, 72, 76, 76,108, 62,115,230,204, 55,174,222,217, 38,104,219, 59, 37, 13,
-242, 64,125, 69,199,243,223,138, 80, 40,200, 42,142, 26, 57,202,165,249, 41,169,153, 90, 0, 48,153, 76, 48,153, 76, 48, 26,141,
-152,240,254, 56,254,152, 55,154,214, 10,110,243,241,173,132,103,153,121,117, 78, 92,113, 43,222,183, 50, 77,129, 46, 65,169, 76,
- 62, 57,102,214,167,159,250,120,123,255,167,229,111,243,166, 77,252,188,188,188,206,179,102,205,138,160,178,246,202, 58,189,231,
-184, 84,164, 89,209,181,169,140,253,163,250,215, 31,118,171,191,106,193, 65,216,108, 54, 92,190,124, 25,231,206,157,195, 15, 63,
-252, 64, 15, 31, 62,172,114,146,203, 43,185, 54, 99, 28, 91,251,102,132,124,251,237, 46, 34,145, 72,176,111,223, 62, 60,122,244,
- 8, 60, 30, 15,245,234,213,195,200,145, 35,209,185,115,103,159,177, 99,199,209,182,221,135,198,195, 57, 76,243,103,202, 18, 33,
-132, 7,224,227,233,179,190,245,125,235,189, 15,176,232,235, 47,152,193, 98, 48, 24,175, 15, 69,163, 1,104,209,171, 29,165, 20,
- 20,224,213,232,191,234,247, 29, 55,184, 63,106,244, 95,245, 59, 5,120, 20,224, 57, 1,213, 26, 52,104, 96, 81, 42,149,244,218,
-181,107,116,194,132, 9,218,101,203,150,157,254,227,143, 63,118, 90,205,230,181,126,190,190,139, 41,192, 43,179, 71, 61,192, 11,
- 6,156,101, 50, 89,118,114,114, 50, 61,116,232, 16,157, 61,123, 54,221,178,101, 11, 61,124,248, 48, 61,113,226, 4, 61,124,248,
- 48,253,253,247,223,233,157, 59,119,104,108,108, 44,149,203,229,217,193,128,115, 5,154,124, 10,240,107,247, 95, 57,117,215,117,
-203,156,176,254,171, 38, 81,128,239, 10,132, 55,104,208,192,182,115,231, 78,186,121,243,102,186,113,227, 70,122,231,206, 29,154,
-147,147, 67, 5, 18,121,118,241,126,229,165,147, 2, 60,127,127,255,108,165, 82, 73, 3, 3, 3,169, 88, 44,166,222,222,222,180,
-118,237,218,180,121,243,230,180, 71,143, 30,244,205, 55,223,164, 95,125,245, 21, 85, 42,149,212,193,193, 33,179,120,191,242, 52,
- 27, 2, 82,185, 92,158,124,243,230, 77, 90, 30,122,189,158,230,228,228,208,163, 71,143, 82,185, 92,158,220, 16,144, 86,164, 41,
- 5, 26, 69, 69, 69,101,231,228,228, 80,179,217, 76,147,147,147,233,189,123,247,232,163, 71,143,104,114,114, 50,213,235,245, 37,
-218,177,177,177, 52, 36, 36, 36, 91, 10, 52, 42, 87,243,223,252, 42, 46, 19, 47,188,130,188,189,123,248,248,248,232,119,237,218,
- 69,159, 61,123, 70, 55,108,216, 64,121,192,188,255,218,182, 2, 77, 49,208,181,117,235,214,182,203,151, 47,211, 91,183,110,209,
-105,211,166,209,110,221,186,209,238,221,187,211, 89,179,102,209,212,212, 84,154,154,154, 74,123,244,232, 97, 19, 3, 93, 43, 43,
-159,101, 93,155,206, 64, 80,239,222,189,245,102,179,153,198,199,199,211,186,117,235,166,242,129, 17,114, 32,162, 29, 32,169,172,
-124,250, 3,174,190,190,190,233,151, 47, 95,166,187,119,239,166,193,193,193,217,124, 96,180, 19, 80,195, 9,168,193, 7, 70,215,
-168, 81, 35,251,242,229,203, 52, 55, 55,151, 6, 5, 5,165,251, 3,174, 47, 91,150, 80, 56, 7,223,186,233,179,190,165, 49,169,
- 90, 58,125,214,183, 20, 64, 50, 45,252,242, 56, 43,147,236,197, 94,255,190,215,127,121,145,127,248, 75, 80,202,104, 17, 66, 8,
- 69,225,220, 88,101,162,231,243,231, 47, 90,180, 72, 96, 48, 24,240,235,175,191,106,134, 15, 29,186,219,197,197,197, 42, 20, 10,
- 65,120,149, 15, 72,204,150, 72, 38,126,183,104,145,139,201,100,194,141, 27, 55,208,184,113, 99, 72, 36, 18,136, 68, 34, 8,133,
- 66, 8,133, 66,248,250,250, 34, 43, 43, 11,117,235,214,197,103,159,125,230,188,112,254,252,137, 48, 26,191,174, 72,151,227,168,
- 0, 0,108, 28, 39, 22, 1, 99,235, 55,105,178,248,139, 47,190,224, 57, 57, 57,193, 96, 48,192,104, 52,226,209,163, 71,112,119,
-119,135, 76, 42, 19,192,168,173, 52,173, 60, 30,143,167, 80, 40,112,234,212, 41,172, 94,189, 26, 9, 9, 9, 72, 79, 79,135,163,
-163, 35,234,214,173,139, 58,117,234,160, 93,187,118,136,143,143, 7,177,163,211,200, 3,129,224,131, 9, 99,198,120, 53,108,216,
-176,204,239, 13, 6, 3,148, 74, 37, 84, 42, 21, 2, 2, 2, 48,104,208, 32,175,223, 54,111,254, 0, 86,235,247,101,109,239, 14,
-248, 4,132,134,238,191,118,237,154, 7,165, 20,155, 55,111, 70, 65, 65, 1, 76, 38, 19,120, 60, 30, 28, 28, 28,224,234,234,138,
-142, 29, 59,194,211,211, 19,161,161,161,216,190,125,187, 71,143, 30, 61, 14,186,103,101, 53,202, 5,210,216,227, 69,229, 36,101,
-102, 30,235, 10,120,140,120,243,205,195,183,239,220,105, 51, 98,196, 8,100,102,102,126, 33,156, 54, 77,105, 1,150, 84,182,127,
- 24,224,236,230,235,187,254,219,111,191,229,101,100,100, 96,202,148, 41, 57,105, 73, 73,211,156,129,243, 0,112,242,200,145, 54,
- 91,182,108, 89,184,121,243,102,143, 77,155, 54,241, 26, 54,108,184, 62, 44, 57,185,110, 12,160,170, 74, 58, 53,192,199, 75,151,
- 46,117, 48, 24, 12,232,210,165, 75,188, 67, 66, 66,125, 43,160,183,119,255,116,224,131, 31, 62,251,204, 71, 34,145, 96,202,148,
- 41, 57,186,164,164, 72, 43,144, 93,106,147, 68,207,167, 79,143,188,245,214, 91,247,238,220,185,227,177,100,201, 18,159, 55, 6,
- 12,248, 0,192,188, 42, 68,172, 74,119,104, 15, 29, 61,246, 99,239,134, 77, 91, 96,211,218, 21, 88, 48,231,243,245, 0, 86, 17,
- 66, 62, 4,240, 29, 43,121, 12,198,191, 54,232, 83,169, 23,249,199, 53, 17, 22,101,168,125, 69, 27,187,186,187, 55,142,140,140,
-196,185,115,231, 16, 21, 21,117,205,197,197,197, 42,146, 72, 32, 20, 10, 65, 57,174,210, 31,147,202,229,157, 58,119,238, 44,184,
-114,229, 10, 66, 66, 66, 32,149, 74, 75,140, 85,241, 75, 36, 18,193,215,215, 23,106,181, 26,157, 58,117, 18, 46, 95,190,188, 83,
-101, 6, 11, 0,146,226,238, 41,178,175,124,251,230,154, 13,235,107,180,109,219, 22, 42,149, 26, 28,199, 65, 38,147,193,100, 50,
- 65, 32, 16, 20, 54,245, 88,168,218,158, 3, 99,179,217,108,124, 62, 31, 33, 33, 33,152, 63,127, 62, 12, 6, 3, 68, 34, 17, 0,
- 64,173, 86, 67,169, 84,226,222,189,123, 72, 76, 76, 68,209, 83,119,133, 56, 58, 59,247, 28, 50,100,136,184,172,239,140, 70, 35,
- 84, 42, 21, 84, 42, 21,148, 74, 37, 12, 6, 3, 90,180,104, 33,254,227,224,193,158,200,205, 45,211, 96, 25, 29, 28,222,216,180,
-105,147,151, 88, 44,134, 94,175,135, 70,163, 65, 74, 74, 10,146,146,146, 12, 89, 89, 89, 86, 71, 71, 71, 94,112,112, 48, 79, 34,
-145, 72,250,247,239, 79,212,106, 53, 8, 33,232,221,187,183,251,214,205,155,135, 0,248,129, 93,202,246,113, 12, 48, 54, 50,153,
-250, 52,107,218,244,212,181,235,215, 27, 78,156, 56, 17,119,238,220,249, 86,182,109,219, 89, 29,112,187,162,125,227,129, 15, 22,
-151, 50, 46, 52, 41, 41,202,252,130,113, 9, 46, 52, 46,119,139,141,203,224, 42, 26,151,162,242,213,196,215,215, 23,135, 15, 31,
- 70,114, 66,194,231, 85, 49, 87, 0,192,227,243, 91,183,109,219, 22,251,246,237, 67,106, 82,210,231, 47,152,171,194, 7, 36, 32,
- 91, 16, 31,255,249,250,245,235,215,189,243,206, 59,224, 11, 4,173, 97,181, 86,229,103,254,171, 67,251, 59,227, 38, 98,253,234,
-229,235, 1,188, 71, 41,229, 0, 92, 99, 37,142,193,248,247, 98,143, 23,249,167,192, 43,237, 26, 1,156,169,104, 99, 47, 47, 47,
-127,133, 66,129,180,180, 52,212, 9, 15,207,146, 72, 36, 16, 11,133,112, 16,139,237,250, 49,157, 78, 23,229,231,231, 7,149, 74,
- 5, 15, 15, 15,136, 68,162,146,151, 88, 44, 46,121,239,232,232, 8, 30,143,135,160,160, 32,232,116,186,168, 74,117, 51,239,121,
-109, 91,254,254,132,203,103, 15,215, 24, 48, 96, 32, 92, 93,221, 16, 24, 24, 0, 47, 47, 47, 72,165, 82, 4, 6, 6,162,102,205,
-154,244,251,239,191,135,204,171,158, 93, 21,120,105,211, 36, 16, 8, 96,179,217,144,153,153,137,152,152, 24,220,185,115, 7,151,
- 47, 95,198,173, 91,183,160,209,104, 96,135,191,130, 78,175,175, 47, 16, 8,202, 52, 87, 74,165,178, 36,122,165, 84, 42,145,157,
-157,141,196,196, 68, 20,104,181, 13, 42, 48,187, 3, 35, 35, 35,249, 0, 32,149, 74,209,160, 65, 3,172, 90,181,202,122, 96,239,
-222,161, 17,151, 47,187, 5, 30, 61,234,178,102,229,202,161,131, 6, 13,178, 93,185,114, 5,106,181, 26, 15, 31, 62,132,167,167,
-167, 64,236,224, 48,132, 93,198, 85,227, 38,160,245,208,104,186,183,108,217,242,169, 74,165,194,119,223,125,199, 19, 58, 58,174,
-158, 3,240, 43,220,145,207,111,213,182,109, 91,236,223,191, 31,105, 73, 73,211,146,202, 48, 46, 73, 64,118,114,124,252,180,245,
-235,215,163,107,215,174, 32, 2, 65,149, 59, 34, 53,111,222, 60,146,227, 56,220,189,123, 23, 46,192,213,170,238, 95,179, 86,173,
-134, 10,133, 2,143, 30, 61,130,188, 40,186, 86, 22,114,224,124,116,116, 52,164, 82, 41,234, 68, 68, 52,170,226,207,124, 79, 8,
- 73,127,103,220, 68,236, 62,114, 17, 0,176,126,245,242,204, 82,230,138,193, 96,176, 8, 86,165, 94,228, 31,103,176,236,204, 56,
- 0, 64, 40, 20, 66, 44,145, 64, 44, 22, 23, 26, 35,137,164, 42,238, 20, 14, 14, 14, 37,134,170,180,177, 42,253, 94, 38,147,217,
-101, 92, 0, 32,255,241,145, 54,239,189,251,142, 88, 34,145,192,100, 50,130, 82, 10,137,196, 1, 46, 46, 46, 8, 9, 9,129, 90,
-173, 70,203, 86,237,140, 41, 74,209, 65,247, 58,253,239,188,204,129,178, 90,173,208,106,181,200,207,207, 71, 94, 94, 30,212,106,
- 53,244,122,189,221, 67,202, 57,142,227,167,164,164,224,183,223,126, 67,110,110, 46,128,194, 14,212,197,166,170,248,239,211,167,
- 79,177,121,243,102, 36, 36, 36, 84,233,252,180,105,211, 6, 7, 15, 30,228,183,239,212,105,237,241,224,224,180,227,193,193,105,
-237, 59,117, 90,187,127,255,126,190,191,191, 63, 18, 19, 19,113,227,198, 13,228,231,231, 23, 23, 96, 70, 21,121, 2,228,235,242,
-242,222,249,226,139, 47,168, 66,161,192,119,139, 23,215,159, 7, 12,183,215,184, 56, 87, 96, 92,156,255,156,113, 1,165, 20, 28,
-199,193,102,179,189, 84,222, 8, 33, 68, 40, 20, 86,117,138, 4, 82, 5,253,146, 14,237,159,125, 53, 31,135,246,237, 44,254, 42,
-142,153, 43, 6,131,241, 58, 34, 40,229, 24, 43,189,241,102,102,102, 62,211,106,181, 53,130,131,131,145,154,154,234, 21, 20, 20,
-148, 36, 22, 10, 33, 18,139,237,234,131, 37,147,201,238,166,165,165,181,242,247,247,135,213,106, 45, 49, 83, 47, 54, 17, 22, 71,
-101,110,221,186, 5,153, 76,118, 23,134, 10,103, 64,128,205,148, 95,173, 81,163, 70, 37,145, 32, 23, 23, 23,184,184, 56, 67, 34,
-113,192,140, 25, 51,184, 37,223,127,191, 34,168,227, 28,213,219,147,190,160, 95,204, 91,251, 74, 15,160,189, 55, 36,153, 76,118,
- 55, 48, 48,176,133,179,179, 51,118,239,222,141,196,196, 68,228,231,231, 67,167,211,193,104, 52, 66,167,211,193,100, 50,193,193,
-193, 1, 17, 17, 17,112,114,114,194,137, 19, 39,238,194,104, 44,219, 84,230,230,238,190,123,247,110,139,166, 77,155,150, 68, 80,
- 58,116,232, 64, 58,116,232,224, 81, 18, 53,211,233,144,147,147,131,107,215,174,225,196,137, 19, 32,132, 32, 46, 46,206,102,212,
-235,127,103, 69,255,229, 48, 0,151,248,235,215,175, 27, 63,126,252,187,173, 90,181,130, 13,232, 1, 96,243,223,101, 92,138,185,
-124,249,242, 61,155,205,214,170,118,237,218, 80, 2,205, 0,236,171,146,121,124,252, 56,218,106,181,118,170, 95,191, 62,118,239,
-216,209, 6, 64, 98, 89,219,105,129, 54, 13, 27, 54,132, 94,175,199,195, 7, 15,110, 86,193, 92,173,157, 62,235,219,209,111,189,
-247, 1, 54,173, 93,129,245,171,151,167,172, 91,181, 44, 16,128,153,149, 42, 6,131, 81, 21, 47,242, 90, 70,176, 84,249,249, 55,
-163,163,163,209,168, 81, 35, 60,121,242,164, 41,229, 56,129, 72, 44,134, 88, 36, 2,207,142, 27,136, 94,171, 61,121,242,228, 73,
-107,131, 6, 13, 80, 80, 80, 0,129, 64,240, 92,244, 74, 44, 22, 67, 40, 20, 66, 32, 16, 64, 38,147, 97,207,158, 61,102,189, 86,
-123,178,210,232,144,141,179,241,120,188,146,155,152, 82,169,132, 78,167,199,252,249,243,241,227,247,223,191,105, 3, 38, 9,229,
-158,250,191,243, 64, 27,116,186, 83,135, 14, 29,178,212,168, 81, 3,163, 71,143,198,164, 73,147, 48,105,210, 36,140, 31, 63, 30,
-163, 71,143,198,200,145, 35, 49, 96,192, 0, 52,107,214, 12,158,158,158,136,137,137,177, 24,116,186, 83,229,233, 73, 12,134, 93,
-163, 70,141,202, 42, 54,102, 90,173, 22, 26,141, 6, 42,149, 10,217,217,217,184,120,241, 34, 54,109,218,132,239,191,255, 30,123,
-246,236,129,209,104,132,217,108,198,173, 91,183,242,229, 22,203, 14,118, 41,191, 60, 66, 96,247,133, 11, 23,224,230,230, 6,191,
-128,128,118,118, 24, 23,212,175, 95, 31, 42,160, 77,185,215,214, 75, 24,151,231,140,143, 70,115,253,233,211,167,104,223,190, 61,
-124, 3, 2,190,141, 0,164, 85,217,223,102,181,158,191,112,225, 2,222,122,235, 45, 4,215,168,241,173, 39,224,249,226, 54,158,
-128,103,245,154, 53,191, 29, 61,122, 52,142, 29, 59, 6,155,213,122,190, 2, 83,213,152, 16,178,159, 16,114, 22, 64,226,232,177,
- 31,143,126,161, 67,251, 96, 66,200, 22, 0, 83, 89,137, 98, 48, 24,175, 35, 85, 50, 88, 82,155,109,250,212,169, 83, 45, 60, 30,
- 15, 3, 7, 14,116,220,183,127,255,160, 91,183,111,135,100,101,101,185,216,108,182, 74,181, 60,141,198,101, 83,167, 78, 85,154,
- 76, 38,132,133,133, 33, 47, 47, 15, 54,155, 13, 2,129, 0, 2,129, 0,132, 16,240,120, 60, 40, 20, 10, 68, 71, 71, 99,221,186,
-117,106, 79,163,113, 89,165, 55, 7,155,237,238,230,205,155,193,231,243,169,131,131, 3, 8, 33, 16, 8, 4, 88,178,100, 73,214,
-143,192,110, 0,224,243,120, 38, 0,224,241,136,189,189,114, 43,109,159, 20,139,197,224, 10, 59,247, 87,186,173,171,209,184,116,
-209,162, 69,154,135, 15, 31, 66,171,213,150, 68,219, 10, 10, 10, 74, 58,205, 43,149, 74, 16, 66,160,213,106,177,127,255,126,141,
-171,209,184,180, 60,189, 92, 32, 35, 53, 46,174,111,211,166, 77,115,159, 62,125, 10,149, 74,133,187,119,239,226,196,137, 19,216,
-190,125, 59,142, 29, 59,134,199,143, 31,195,106,181,194,223,223, 31,148, 82,236,221,187, 87,101,213,104,122,228, 2, 25,172,232,
-151, 79, 53, 31,159, 78,222, 94, 94,201,158, 30, 30,169,213,124,124, 58,189,248,189, 51, 16, 27, 27, 27, 11,171,213,138,144,144,
- 16,183,138,250, 97, 81,171,245, 66,177,113, 9,172, 81, 99, 97,112, 25,198, 37, 24,240, 12,174, 89,115, 97,177,113,161, 86,235,
-133,170,166,217, 17, 88,254,233,167,159,234, 69, 34, 17,182,109,219, 22, 98,169, 85,235,145, 0, 24,174, 0,194,219, 3,162,202,
-246,247, 5, 86,124,245,213, 87, 25,132, 16,108,217,178,197,195,185,102,205,123, 2, 96,148, 51, 80,205, 25,168, 38, 0, 70, 57,
-215,172,121,111,219,182,109, 30, 86,171, 21,147, 38, 77,202,240, 5, 86, 84, 32,249, 49,165,180, 15,165,180, 45,165, 52,112,221,
-170,101, 56,180,111,103,177,185,122,143, 82,122,141, 82, 58,146, 82,122,143,149, 56, 6,131,241, 58, 66,202,234,231, 36,108, 54,
- 47, 19,160, 94,237,154,215,195,245,219, 49, 42, 15, 87,167,163,197,223,229,221,223, 89,187, 99,148, 83,189,159,127,254, 25, 66,
-161, 16, 41, 41, 41,120,240,224, 1,156,156,156,240,230,155,111, 26,245, 26, 77,223,226,181, 8, 9, 33,157, 41,165, 39,138, 52,
- 11,215, 59, 83,197, 41,106, 10,238,212, 56,114,232, 32,223,217,217, 25, 5, 5, 5, 37,211, 10,200,100, 50, 72,165, 82,220,184,
-113, 3,189,250,244,179,101,203,218,150, 76, 52, 90,188,222, 89,105, 77, 16,194, 7,128,102,128, 44, 26,152,226,229,231, 55,245,
-203, 47,191,148,118,235,214, 13, 34,145, 8, 1,213, 66, 51, 66,186,127,183,156,199, 35,214,212, 92,245,140,154,213,252,156, 31,
-196, 37, 2, 32,133,107, 22, 22,173, 69, 88, 86, 58,131, 76,103, 67,246,108,252,222,169, 65,131, 6, 37, 81,177,204,204, 76,100,
-101,101, 65,169, 84, 66,171, 45,156,234,225,224,193,131, 56,116,238,145, 90, 31, 48, 40,190,188,116,254, 39,239, 49,142,126,230,
-171,213,183,110,222,200,247,244,244, 68,102,102, 38,178,179,179,161, 84, 42,161,215,235, 97,179,217,144,151,151,135, 95,215,111,
-180,229, 42,218, 38, 20, 79,228, 88,161,166, 54, 69,234, 86,112,209,191, 97, 68, 48,125,247,221,119, 29,157,156,156,192,113, 28,
-242,243,243,145,156,156,140,167, 79,159,226,220,185,115,218, 44,165, 9, 90,143, 46,169,197, 19,141,150,121, 60, 95, 85,161,250,
- 39,106, 22,149, 37, 0,240,243,245, 77, 75, 74, 74,242,178,217,108,240,247,247,183, 42,243,242, 22,138,129, 99,142, 64, 58, 0,
-154, 3,124,185,116,249,242,119,250,245,235,135, 38, 77,154,164,100,100,102, 86, 47,171, 44,129, 16,126, 24,224,172, 11, 8,184,
-127,237,218, 53,159,228,228,100,188,245,214, 91, 57, 73, 79,158,148, 76,211,160, 2,218, 4,215,172,185,112,219,182,109, 30, 53,
-106,212, 64, 84, 84, 84,134, 67,241, 52, 13,101,151,207,114,175, 77,101,236, 31,213,223, 31, 16,217,100,194,132, 9,176, 90,173,
- 56,119,238, 28,174, 94,189,138,164,164, 36, 92,188,120, 81,233, 36,151, 15, 45, 94,139,176,188,242,217, 35, 84, 27,178,101,203,
-102, 34, 18,137,176,126,253,122, 68, 71, 71, 3, 0, 26, 54,108,136,209,163, 71,195,106,181, 98,196,136,145,244,143, 24,105,124,
- 69,229,147, 16, 18, 9, 96, 49, 10,205, 93, 19, 74,169, 3, 33, 36, 13, 64, 96, 85,250, 92,177,242,201, 52,153,230,191, 71,243,
-117,163,210,181, 8,191,249, 5,206,207, 47,199, 49, 38,109,231,170, 57,130,214,109,218,134,207,153, 61,139,215,180,105, 83, 4,
- 6, 6,162, 97,195,134, 72, 78, 78,150,184,184,184, 84,182,222, 89, 65,219,238,195,159,214,171, 87,207,101,218,180,105,206, 93,
-187,118, 21, 6, 6, 6,130, 82,138,232,232,104,236,222,189,219,188,118,237, 90,181,206,187,143,242,230,233,223, 10,236, 89,239,
-236, 42,160, 3, 48, 55, 32, 45,109,245, 7,239,191, 63,171, 65,163, 70,239,206,158, 61,155,167,144, 73,133,243,103,188,231, 0,
- 0,223,252,180,221,185,223,160, 55,177,180, 22,208,110,120,217,235,188,149, 78,103,114,234,152,164,158, 3, 58,213,154,242,225,
- 59,182, 33, 67,134,200,157,156,156, 16, 24, 24, 8, 87, 87, 87,196,199,199, 35, 53, 53,149, 30, 56,112,160,224,242,173, 88,225,
-222, 99,215,147, 28,156,125,237, 89, 55, 80,211,182,219,224,132,158, 61,123,186,142, 26, 53,202,177,113,227,198, 66,137, 68, 2,
-137, 68,130,204,204, 76, 60,126,252,216,124,224,192,129, 2,157, 87,143,252,155,167,183,105,236, 92,139, 80,223,118,216,156,199,
-231,143,207,158,116,255,238,221,145, 28, 80,223,108, 54,251,219,108, 54,194,227,241,210, 57,142,187,107,214,104,214, 25, 27,206,
- 94,194,214, 34,180, 15,155,205, 38,178,217,108, 80, 42,149, 56,126,252,184,224,201,147, 39, 95,222,190,125,251,203,180,180, 52,
- 88, 44, 22,188,241,198, 27,104,216,176, 33, 78,159, 62,141,236,204,204, 3, 21,105,197, 0, 42, 73,106,234,232, 49, 99,198, 28,
-222,188,121, 51,239,246,237,219, 30,235,215,175,255,181, 44,227, 50,114,228, 72, 46, 51, 57,121,180,177,130, 57,176, 42,185, 54,
-115,142,108,251,241,118,255,129,131, 34,102,207,252, 82,216,178,101, 75,120,120,120,160, 77,155, 54, 48,155,205, 46,117,234,212,
-169,236,218,212,180,237, 62, 52,190,126,253,250,242, 37, 75,150,248,188,243,206, 59,248,240,195, 15, 1, 0,122,189, 30,199,142,
- 29,195,164, 73,147, 50,146, 5,205,180,149,149,207,162,200, 84,177,241, 58, 11,160, 45,128,120,214,161,157,193, 96,252,171, 13,
- 22,240,159,245,206,206, 95,189,135,210,203,113, 20,226,251,192, 26, 52,234,201,184,169, 11,163,248, 22,181,171,144, 24,156,226,
- 98, 99, 73,101,107, 18,150,172,119,230, 28, 90,224,254,244,247,166,243,191,249,102,226,210,165, 75, 59, 21, 79,197, 32,147,201,
-238,234,181,218,147,158, 70,227, 50,157,115,232,201,170,174,157,151, 10,100, 2,120,223,245,230,205,229,189,251,189,177,200,193,
- 45, 68,248,197,188,181, 6, 62,143,103,122,156,150,141,165,181, 0,185, 29, 3, 30,117, 38,224,190,210,215,154,233, 62, 40,230,
-171, 79, 63,157,242,205,220,185, 77, 21, 10, 69, 59,179,213, 26,202,113, 28,192,113,113, 58,173,246, 44, 53,155,175, 25, 27,206,
-252,222,193,217,151,218,189,110,160, 75, 29,141, 91,194,206,166, 27,214,173,251,120,199,142, 29,255,149,119,119,163,113,185,206,
-165,206, 9,123,242, 94,122, 27, 3,112, 9, 89, 89,151,202,125,218, 0, 91,139,208,238,139,130,227,198,186,186,186,110,234,212,
-169,147, 67,231,206,157,209,171, 87, 47,180,108,217, 18, 28,199,129, 82, 10,141, 70,131,237,219,183, 99,209,162, 69,113,213,129,
-185,149,233, 25,129,147,146, 67,135,122,212,175, 95,127,125, 69,198,165,200, 92, 85,218,231,176,226,107, 83, 18,103,117,238,155,
- 56,236,131,249,181, 76,234,116, 23,119,153,213,231,254,189,187, 60,251,175,205, 48,141, 45,122,123,179, 55, 6, 12,248,128, 47,
- 16,180, 41, 26,209, 72, 31, 62,120,112,179,120,177,103, 52, 28,125,188,138,101,169,120,238, 57,214,161,157,193, 96,252,187, 13,
-150, 64, 32,200, 42,142,242, 8, 4,130,172,248,189,227,222,172, 72, 68, 8,116, 42,138, 92,161,210,181, 8,139,222, 39, 2, 26,
- 24,141, 95, 63, 55,137,104,169,209,130,194, 23,182,175, 74,166,242,129, 24, 88,141,189,145,245, 0,216,255,126,161, 94,211,111,
- 62, 47,157,167,114, 15,200,115,191, 43,202, 51, 0,231, 81, 80,112, 30, 5, 5,101,206, 46, 45, 20,136,242, 42, 75,231,139,121,
- 79, 6,212,127, 54,239,130, 42, 30, 31,193,159, 56,158,255, 54,158,229,228,236, 5,160, 8, 56,120,208,251,200,193,131, 67,166,
- 76,158,252,134,175,159, 95, 77, 15, 15, 15, 87, 71, 71, 71,222,149, 43, 87,158, 90, 13,134,229, 13,128, 13, 69,209,211, 74, 49,
- 2, 39,195,146,147,235, 14, 30, 48,224, 3, 34, 16,180, 46,109, 92,168,213,122, 49, 4, 88, 97,180, 99,246,246,170, 94,155,129,
- 18,223, 78, 69,145, 43,240,237,188, 54, 83, 11,211, 49, 15, 86,235, 60,220,185, 83, 70,153,175,114, 89,250,134, 16,162, 1,155,
-161,157,193, 96,252,155,248,139,215, 21,234,204, 52,153,230,235,162, 89,232, 81,224,196,142, 39,211,100,154, 76,147,105,190,122,
-205,215,237, 37, 96, 22,147,193,176,251, 97,196,134,255, 52,119, 49, 24, 12, 6,131, 81, 46, 4, 64,231,114,110, 38,118,143, 14,
- 32,132,116,126,137,155,213, 9,166,201, 52,153, 38,211,100,154, 76,147,105,254,187, 52, 43,211,126,109, 70, 39,178, 38, 66,166,
-201, 52,153, 38,211,100,154, 76,147,105,178, 38,194, 87,251,226,129,193, 96, 48, 24,152, 51,135,240, 0, 66,128, 57, 60, 96, 39,
- 31, 24,204, 47,252,255,229, 25, 60,152,148, 57, 9,237,199, 31, 19, 71,118,196, 25,140,215, 27,214, 7,235,111,132, 16, 18,228,
-227,227,179, 10, 0,201,200,200, 24, 75, 41, 77,102, 71,229,127, 15,119,119,247, 78, 86,171, 21, 42,149,234,228,235,152,191,186,
-181,200, 0,202, 67,157,255,132,181,145,252, 32,142,110, 42,107,219,136, 80,242, 22,200,127,230,210, 34, 28, 30,222,127, 76,247,
- 84,161,204,243,250,247,240, 92, 12, 0,123, 15,103, 79,253, 43,230,197, 34,132,212,246,244,244, 60, 42, 16, 8, 4, 54,155,237,
-253,204,204,204,131,229, 27,160,193,124, 0,240,148,238,158,238,226,230, 49,237,171, 41, 68,104, 50,126,167, 52, 26, 12, 42,158,
- 64,144, 32, 22,201, 46, 88,121,242,195,169,153, 61, 30,148,181,255,142, 29, 59,202, 93, 93, 59, 50,148,244, 8,143,136,232,211,
- 40, 74, 26,191,120, 89,211,165,237, 66, 60,132, 79, 83,110, 41,126,217,148,188,202,211,213,191,207,196,247, 4, 7, 37,212, 54,
-242,219, 95,105, 1,187,202,236,103, 1, 33,110,102, 32, 74, 40,145, 4,218,172, 86,111, 2, 80,190, 64,144,105, 49, 26, 83, 68,
-192,157,105,148, 42, 95,119, 77,145, 68, 18, 96,179, 90,189, 1,224,127, 49,157,140, 74, 12,150,163,163,227, 13, 30,143, 23, 80,
-122,145, 90, 94,209,130,206,197,159,149,254,142, 16, 2,155,205,150,154,151,151,215,184, 10, 21,161, 19,128, 33, 0,138,135,154,
-111, 5,176,157, 82,170,126,201,138,213, 73, 36, 18, 77,149,203,229, 29,245,122,125, 93, 0,144, 74,165,247,181, 90,237, 41,179,
-217,188,248,101,116, 9, 33, 2, 0,131, 21, 10, 69, 7, 30,143,215,129, 82, 74, 40,165,167, 11, 10, 10, 78, 1,216, 65, 41,181,
-190,132,166,212,203,203,107, 94,120,120,248,240,233,211,167,231,186,187,187,135, 77,154, 52,233,186,167,167,231,111, 57, 57, 57,
- 51, 40,165,250,255,133,194, 65, 8,169,233,227,227,179, 85, 40, 20,242, 83, 82, 82, 58, 0, 64, 96, 96,224,105,147,201,100,203,
-202,202,122,147, 82,250,164,138,122,114, 0,205, 21, 10, 69, 99,133, 66,209,214,102,179,213,225, 56, 14, 28,199, 61, 44, 40, 40,
- 56,103, 54,155,111, 0,184, 66, 41,213,254, 15,153, 96, 71, 47, 47,175,205,132, 16, 16, 66, 66, 41,165,154,215,173, 18,160, 60,
-212,121,112,255, 81, 88,137,137,170, 27, 94,193, 1, 65, 80, 25,219,218,109,176,122,118,114,233,222,167, 79,125, 30, 0,152,205,
-215,187, 3, 56,244,170,205,213,192,129, 3, 47,109,222,188,217,213,104, 52, 98,236,216,177, 91,157,157,157, 87,168, 84,170,233,
- 21,237,231,232,232, 56,105,238,215, 63,201,138,234, 52, 47,142,227,188,210,211, 83, 66, 99, 30,221,237, 30, 19,115,111,190, 89,
-187,231,138,153,242,199, 41,117,125, 31,217,147,142,136,154,164,119,191,193, 3,122,205,157, 59, 27,195,135, 14,175,118,255,190,
- 65,234,239, 20, 47, 86,155,229,181, 60, 60, 2,250,126,254,197,183,228,202,229, 51,125,119,108, 95,123,234,243,119, 73, 71,102,
-178,236, 58,183,228, 27,129,160,185,107,120,120,219,161,123,247, 66, 17, 24, 40, 16, 72, 36, 60, 0,176, 26,141,129, 5, 41, 41,
-190,219,250,246,109, 54,135,144, 51,179, 40,189,202, 52,255,255, 53, 25,118, 26, 44, 30,143, 23,240,236,217, 51, 47,185, 92, 94,
- 88, 9, 83, 10,155,205, 6,155,205,134,162,155, 34, 40,165, 37,127,173, 86, 43,194,195,195,237,122,130, 5,208, 17,192,219,237,
-219,183, 31,180,120,241, 98, 97, 84, 84, 84,241,210, 30,109,190,248,226,139,159, 8, 33,187, 0,108, 0,112,210,222, 39, 92, 66,
- 72, 55,185, 92,190,229,187,239,190,115,234,210,165,139,192,207,207, 15,132, 16,100,100,100, 52, 63,113,226, 68,227, 73,147, 38,
-189, 79, 8, 25, 65, 41, 61, 90,133, 11, 58,210,209,209,113,231,128, 1, 3, 2,218,181,107,231, 16, 17, 17, 1,155,205,134, 91,
-183,110,189,115,227,198,141, 97,187,118,237,154, 69, 8, 25,100,239,122,106,132, 16,162, 80, 40, 70,249,251,251,207,155, 57,115,
-166,219,136, 17, 35,196,247,238,221,203, 15, 9, 9, 33, 23, 46, 92,240,220,190,125,251,251, 11, 23, 46, 28,236,232,232, 56,163,
-160,160, 96, 35, 45,107, 29,163, 23,112,114,114,186,193,227,241, 2,236, 49,192, 0,236, 54,193,132,144, 6,213,171, 87,223,126,
-254,252,249,234,137,137,137,182,254,253,251,111, 2,128, 83,167, 78, 69, 89, 44, 22,210,181,107,215,195,132,144, 33,148,210, 91,
-118,230,189,158,155,155,219,190,225,195,135,187,213,172, 89, 83, 86,189,122,117, 34,151,203,193,231,243,161, 82,169,252,238,221,
-187,215,249,234,213,171,250, 19, 39, 78,228, 17, 66,250, 82, 74,239, 84,225, 60,181,244,242,242, 26, 41, 20, 10, 35,173, 86,171,
- 63, 0, 8, 4,130,103, 22,139,229, 94, 86, 86,214,102, 74,233,165,151,189, 64,188,189,189,127,156, 55,111,158, 71, 86, 86, 22,
- 93,184,112,225,143, 0, 70,189,174,149,193,214,223,118,224,198,245,171, 0, 32, 34,132,144, 23,203, 31, 33,132,212, 9,133,232,
-147, 79, 38,163,113,147,102,120,115,248,224, 74, 53,251,247,242,152, 43,230, 11,220,117, 38,227,213, 28, 21,111, 95,144,151,120,
-192,136,193,141,227, 1,224,200,225,187, 3,154, 53,115,187,224,225,204,245,147,137, 37,205, 76, 54,107,238,222, 63,114,102, 86,
-197, 76,249,251,251, 31,117,117,117,149,229,229,229,101,100,103,103,255, 50,112,224,192,111, 54,108,216,224,250,244,233, 83,164,
-164,164, 96,226,196,137,138,212,212,212, 15, 36, 18,201,101,163,209, 88,110, 36, 75,163,209, 44,155,247,245,228,153,142, 78,174,
-124,153, 84, 14,133,163, 19,170, 87, 15, 69,147,166,109,208,185, 75, 95,196,199,199, 52,223,254,251,218,104,126,250,206, 5, 54,
-113,195,111,148,202,234,229,214, 75,117,195, 72,187, 98,115, 53,115,230,108,196, 62,122,164, 73, 76,224,125,244,199, 94,129,172,
- 71,167,112,137,201, 92,144,120,229,242,153,234,205, 91,180, 7,128,198, 59,182,175, 61, 53,103, 4,233, 52,107,203,235,103,222,
- 95,165,185,154, 43, 20,142,234,182,100,137, 87,195,247,223, 23, 21, 36, 36,152,227, 87,174,212,101,158, 59,103, 19, 72, 36, 52,
-176,123,119,226,217,161,131,195,251, 15, 31,138, 46, 46, 92,216,118,190, 88, 28,242,133,201,180,133,105,254,255,105, 50,170, 96,
-176, 8, 33,144,203,229,216,182,109, 27,132, 66, 33, 4, 2, 1,132, 66, 97,185,239,131,130,130,236,185, 72, 6,250,248,248,252,
-180, 98,197, 10,239,110,221,186,193,193,193,161,228, 59, 62,159,143, 46, 93,186,160,115,231,206,194,180,180,180, 97,219,182,109,
- 27, 54,127,254,252, 76, 66,200,135,148,210,221,149,232,118, 8, 11, 11,219,125,236,216, 49,169,193, 96,192,185,115,231,144,159,
-159, 15,177, 88,140,128,128, 0,116,237,218, 85,240,232,209, 35,183, 46, 93,186,236, 38,132,244,166,148,158,182, 35,173,141,189,
-188,188,206,238,216,177,195,161,126,253,250,228,241,227,199,104,216,176, 33, 0, 64,165, 82,161,127,255,254, 14, 35, 70,140,168,
- 57,108,216,176, 43,132,144,118,148,210, 27,149,232, 53,242,241,241,217, 56, 96,192, 0,191,249,243,231, 59, 57, 58, 58, 34, 49,
- 49, 49,221,199,199, 39,180,248,120, 15, 27, 54, 76,220,167, 79, 31,223, 69,139, 22, 45,219,185,115,231,167,132,144, 81,148,210,
-155, 21,233, 22, 27, 97,153, 76,134,204,204, 76,108,221,186, 21, 31,124,240, 1,248,124, 62,178,178,178,176,125,251,118,124,244,
-209, 71,197, 70,198, 46, 19, 44,151,203, 59,215,175, 95,255,215, 83,167, 78, 5,184,184,184,192,207,207,143,247,213, 87, 95, 69,
-134,132,132, 72,171, 85,171,198, 79, 79, 79,199,238,221,187, 67, 70,142, 28,185,207,193,193,225, 29,131,193, 80,105,211,153,183,
-183,247,186, 63,254,248, 35,232,254,253,251, 88,185,114, 37,242,242,242, 32, 22,139,225,226,226, 2, 31, 31, 31,132,134,134,146,
-105,211,166,201,250,244,233, 35,251,240,195, 15,215, 1,104, 96,199, 57,170,239,229,229,181,106,216,176, 97, 33,115,230,204,113,
-241,241,241, 65,241, 3,129, 74,165, 10, 72, 76, 76,108, 62,115,230,204, 65,222,222,222, 79,179,178,178,198, 81, 74,111, 87,177,
- 82,111,208,169, 83,167,222,253,251,247,231,167,167,167, 99,243,230,205,189, 9, 33, 13,236, 53,149,255, 52,110, 92,191,138,177,
- 19, 38, 22,248, 5, 6,138, 14,236,255,189, 95, 65,193,234, 11, 10,158,139, 0, 0, 10, 56,165,181, 85,115, 69,235, 62,125,135,
-137,122,246,234, 95,176,250,231,101, 10,123, 12,150,152, 47,112,223,182,101,124,202,185,139,113,117,142,158, 72,236,220,191,111,
-103,158, 64, 20, 86, 19, 0,166, 76, 30, 35,222,187,255,196,138,110,157,171,165,183,109, 21,154, 50,116,196,202,192,170,152,171,
-218,181,107,159,137,142,142,246,150, 72, 36,200,203,203,115, 95,189,122,245, 15,173, 91,183,230,197,199,199,227,209,163, 71, 72,
- 72, 72,128, 74,165, 66,151, 46, 93, 20, 55,111,222,252, 5, 64,185, 6, 43, 91, 63,112, 94,136, 87,206,114,127,119,215,234, 6,
-179,202,203,102,205,141, 56,117,226,118,189, 93, 59,116, 13,189,124, 2, 66,135, 13, 27,139,207,167,127, 43,220,179,107,227,204,
-179,231,142, 1,168, 94,254, 12,254, 20, 45,191,152, 49, 29,106,141, 17, 35,134,143,193,200,225, 99,220, 41, 76,190,212,102,144,
-155,244,249, 46,206,162,251, 7, 55,254,190, 99, 0,128,128, 82, 38,235, 36, 51, 89,229, 51, 87, 32,104,214,251,167,159, 60, 35,
-223,123, 79,114,123,206, 28,109,206,185,115,250, 90, 61,123,230, 55, 28, 63,222, 8, 0,154,132, 4, 81,236,172, 89, 50,207,182,
-109,165, 45,166, 78,117,181,153, 76, 62, 95, 19,210,244, 43, 74,175, 85, 85, 51,104,200, 16,219,204,245,235,155,156,155, 60,185,
- 61,177, 88,248,221, 91,180,184,181,112,243,230,103,127, 70,243, 85,166, 51,237,236, 89, 99, 94, 72, 8, 26,246,239,159, 27,228,
-229,101,124,149,121,255, 51,233,100,148, 81, 79, 81, 74, 65, 8,105, 7,224, 12,128, 57,148,210,217, 0,224,226,226,146,169, 84,
- 42,189,118,239,222, 93,169,185, 18, 10,133,240,245,245, 69,104,104,104, 86,102,102,166,119, 5,149, 98, 10,199,113, 1,148,210,
-146,104, 75,121, 24,141, 70,196,197,197,161, 94,189,122,169,148,210,192,138,154,112,100, 50, 89,252,163, 71,143, 60, 30, 60,120,
-128, 27, 55,110, 32, 36, 36, 4,174,174,174, 16, 10,133,176, 88, 44, 80,171,213, 8, 11, 11,131, 68, 34, 65,163, 70,141,114,180,
- 90,109, 72, 69, 77, 61,132, 16,137, 92, 46,143, 59,123,246,108, 96,195,134, 13,113,237,218, 53, 4, 6, 6,194,199,199, 7, 0,
-144,144,144,128, 11, 23, 46,160,103,207,158,136,142,142,198, 27,111,188,145,162,213,106, 67, 41,165,198,242, 52,221,221,221,211,
- 79,157, 58,149, 26, 21, 21,101,208,106,181,188,204,204, 76,225,185,115,231,172, 26,141, 70,161, 82,169,132, 74,165, 82,168, 86,
-171, 5, 90,173, 86,200,227,241, 68,122,189, 94,120,242,228, 73,190,201,100,114,170,232, 56, 21,159,167,253,251,247, 35, 42, 42,
- 10,187,119,239,198,148, 41, 83,112,241,226, 69, 4, 6, 6, 98,199,142, 29,152, 58,117, 42, 98, 98, 98,224,225,225,129,136,136,
-136, 10,207, 17, 0,212,170, 85,235,241,221,187,119,107,138, 68,162,226,117, 23,139,215,179, 67,118,118, 54,158, 60,121,130,103,
-207,158,161, 86,173, 90, 24, 62,124,248,147,212,212,212, 90,149, 21,180,128,128,128,236,251,247,239,123,212,171, 87, 15,153,153,
-153,112,113,113,129,179,179, 51, 92, 92, 92, 74,222,135,132,132, 96,242,228,201,240,241,241,201,210,235,245,222,149,153,159,168,
-168,168,163, 39, 79,158,244,112,114,114, 66, 70, 70, 6,212,106, 53, 4, 2, 1,100, 50, 25, 60, 60, 60, 74, 12,124, 92, 92, 28,
-122,245,234,149, 19, 31, 31,223,173, 10, 17, 55,158,183,183,247,163, 59,119,238,132, 82, 74,145,156,156,140,152,152, 24, 76,152,
- 48, 33,206, 96, 48,132,191, 78,107,234,149,234, 87, 37, 26, 53,122,172,168,127,223,126,186, 91, 55,142,112, 82,156, 69,211, 6,
- 82, 37, 0, 92,187,165,119,209,163, 29, 26, 52,238,206,219,187,127,159,108,227,134,213, 66,112,240, 6, 65,204,131, 88,250,117,
-121,218,189,187,185,188, 53,117, 98,247, 58,109, 91,181, 21,168,213,212,231,215, 77,107,154, 38, 61,141,247, 6,128,224, 26, 33,
-153,239,190, 53,230,154,147, 19,201, 56,119,241,156,117,241,178, 35, 15, 15, 30, 85,110,178,227,220,132,132,134,134, 94,222,191,
-127,191,135,151,151, 23,156,157,157,161,213,106, 97, 54,155,241,224,193, 3,195,182,109,219, 44, 78, 78, 78,142, 25, 25, 25, 80,
- 42,149, 32,132, 96,255,254,253,201,148,210,224, 23,181,138,251, 96, 1,192,132, 30,117,132, 17, 29, 67, 93, 69, 18,171, 84, 42,
-140,245, 5,177, 73, 8, 85,120,159, 58,117,185,222,233,179,231,223,236,217,123,168,103,139, 22, 29,240,237,252,207, 45,201, 25,
-153, 13,149,186,190,143,202,234,131, 85, 39,148,116,236,255,198,128,193,115,231,206,198,236,153,115,112,112,255, 94,149, 66,206,
- 51, 58,185, 8,157,219, 54,111,101,152,252, 65,191, 20, 93, 65,106,224, 15, 43,214, 12,239,210,109,112, 64,243, 22,237,113,229,
-242, 25,236,216,190,246,134,200,102, 97,205,133, 47, 48,135, 16, 87,151,144,144,113, 31,199,197,137,110,207,158, 93, 96, 77, 75,
-203,111, 60,105, 82, 78, 89,219,166, 30, 63, 46, 23,251,249, 57,185,246,237,235,182, 44, 56,152, 90,178,178, 86,149,213,135,168,
- 44,205, 19, 10,133,203,239,135, 15,119,162, 66, 97,187,207, 62,255, 92,218,187,119,111,168,213,106,236,218,181, 11,171, 86,174,
- 52,250,250,250,222,245,187,119, 47, 58, 82,173,254,210, 94,205,198,147, 38,229,216,108, 54, 50,120,234,212, 46,247, 19, 18, 58,
-102,100,101, 85, 3, 0, 95, 55,183,148,198, 33, 33, 55,214, 29, 60, 24,243, 99,245,234,156,189,233, 92,115,228,136,247,206,196,
-196,247,220,220,220,164,153, 89, 89, 2,137, 88,156,219, 60, 34, 98,199,207, 51,102,156,177,222,185, 35,114, 8, 8,112,114,238,
-221,187,202,121,111, 60,105, 82, 78,158, 70, 35,248,248,155,111, 90, 37,101,102, 86, 43, 48, 26,107, 41, 53, 26, 31,155,197,194,
-115,146,201,114,107,132,133,101,233,207,157, 75,175,161,211, 77, 92, 67,105,214, 95, 24,169,252, 47, 47,242, 58, 68,176,206, 80,
- 74,255,107,180, 12,165,212,174,232,149, 80, 40,124,174, 57,170, 2, 68,132, 16,220,188,121, 19,238,238,238,240,241,241,129, 68,
-242,252,226,128,217,217,217,184,120,241, 34, 30, 62,124,136,250,245,235, 3,128,168, 34, 65,137, 68,242,201,162, 69,139, 92, 76,
- 38, 19,110,220,184,129,198,141, 27, 67, 34,145, 64, 36, 18, 61,103,254,178,178,178, 80,183,110, 93,124,246,217,103,206,243,231,
-207,255, 4, 21,172, 33, 39, 16, 8, 62, 28, 51,102,140, 87,113,196, 42, 37, 37, 5,141, 26, 53, 42,249,222,211,211, 19,183,110,
-221, 66,227,198,141, 17, 16, 16,128, 65,131, 6,121,109,222,188,249, 67, 0,139,203,125,146, 23,139,121, 81, 81, 81, 77,138, 34,
- 68,224,241,120,177, 78, 78, 78,158,222,222,222,114, 39, 39,167,255,202,227,250,245,235,149, 60, 30,207, 82,217, 1,229,241,120,
-200,200,200, 64,100,100, 36, 84, 42, 21, 0, 64,171,213,162, 86,173, 90, 80,171,213, 37,102,213,207,207, 15,122,125,197, 93,187,
-234,215,175, 63, 59, 60, 60,188,107,251,246,237, 37, 66,161, 16,183,111,223, 70,195,134, 13,177,109,219, 54, 4, 5, 5, 65, 38,
-147, 33, 46, 46, 14, 81, 81, 81, 56,123,246, 44, 60, 61, 61, 81,183,110, 93, 73,163, 70,141,206,231,229,229,157, 78, 76, 76,156,
- 93, 65, 58,121, 10,133, 2,103,207,158,197,186,117,235,144,144,144,128,180,180, 52, 56, 58, 58,162, 65,131, 6,136,136,136, 64,
-203,150, 45, 17, 23, 23, 7, 82, 73, 97, 34,132,248,132,134,134, 30,188,118,237,154, 7,165, 20,155, 55,111, 70, 65, 65, 1, 76,
- 38, 19,120, 60, 30, 28, 28, 28,224,234,234,138,142, 29, 59,194,211,211, 19,161,161,161,216,190,125,187, 71,143, 30, 61, 14, 21,
- 69,160, 50, 42, 59,174,174,174,174, 19,103,205,154, 21,232,229,229,133,196,196, 68,168, 84, 42,120,123,123,163,125,251,246,254,
- 39, 78,156,152, 8, 96,201,235,114, 3, 43,238,208, 78, 8, 33, 7,246,255,222, 47,200, 87, 92,167,105, 67, 77,240,221,155,130,
-154,135, 78, 60,174, 87,120, 60,130,239, 52,109,164,121,114,237,198,145,164, 3,251,127,191,250, 48, 22,251,236,105,194,206, 81,
-241,246, 29, 61,145,216,185, 94,221, 54,252,229, 43,102,245, 27,251,110, 55,137,155,107, 27,162,206,218,142,139, 87,239, 6,127,
- 53,123,154,215,215,179, 23, 30, 56,122, 34,209,150,163,226,205,179, 39,189,117,235,248,254,120,102,175,151, 71,129,249,103,220,
-186,234, 12, 8, 91,160, 70, 72,109,168,213,106, 56, 56, 56, 56, 12, 31, 62,220, 54,125,250,116,157,147,147,147,140, 16,130,211,
-167, 79,103, 1,232, 86,153,174,193,203,149,218,204, 22, 43, 21,243, 57, 74, 28,245,196,150, 39,190,247,224, 41,218,181,235,145,
-217,164,113,195,249, 11,191, 91,242, 69, 72, 72,152,231,240, 17,227,132,139, 23,127,185, 18, 64,155,178,116, 30,198,209, 83, 17,
- 53,137, 20, 64,175,185, 95,207, 70,124,124,156,235,216,183,149,115, 4, 18,169, 95,120,112, 43,199,149,235, 78,119,175, 85,171,
-122,181,177,163,223,249, 99,245,250,117,189, 74, 71,178,126,255,109,245, 62, 66, 72, 39,123,142,237,191,136,122, 35, 15, 30, 68,
- 65,114,178, 37,239,252,121, 67,167,159,126,202, 9,236,214,109,137,201,108,246, 40,174, 42,120,132,128, 20,119,145,224, 56, 34,
-248,236, 51, 30, 21, 8, 96,113,117,125,123, 26, 80,187, 50,205, 41,233,233, 3,223,124,239,189, 94,251,142, 28, 65,245,234,213,
- 75,238,103, 46, 46, 46,152, 58,117, 42, 38, 77,154, 36,185,117,235, 86,211,157, 59,119, 54, 93,252,221,119,222,211,128,129,246,
-164,243,216,149, 43,174,227,231,206,157, 81,191,113,227,160, 77, 91,183, 74,106,214,172, 9, 0,120,242,228, 73,232,183, 11, 23,
- 6, 71, 70, 69,101,206,255,228,147, 13,247,167, 79,175, 11,224,124, 69,154, 25,231,206,153,118, 38, 38,190,119,234,244,105,151,
-200,200, 72, 0, 64, 76, 76,140,215,178,101,203,198,212, 29, 52,104,196,220,247,223,255,178,183,193,160,116,202,206,150,244,254,
-241, 71,193,239,131, 7, 87,170, 89,156, 78, 0,104,255,206, 59,159,180,233,208, 33, 98,224,123,239,185, 5, 5, 5, 17,133, 66,
- 1,179,217,140,180,180, 52,215,251,247,239,215, 60,168,209,168,247, 92,185,178,121, 77,209, 34,238,127, 17,101,122,145,127,186,
-193,106, 79, 8,161, 0,218, 83, 74,207, 22,223,184,109, 54,155, 93,230, 74, 32, 16,160,168, 19,176, 93, 63, 74, 41, 69, 78, 78,
- 14,114,114,114, 74,154,136,178,178,178,112,234,212, 41,196,197,197, 65, 40, 20, 66, 36, 18,193,108,174,124,109, 88,185, 92,222,
-185,115,231,206,130, 43, 87,174, 32, 36, 36, 4, 82,169,180, 36, 93,197, 47,145, 72, 4, 95, 95, 95,168,213,106,116,234,212, 73,
-184,124,249,242,206, 21, 25, 44,103,103,231,158, 67,134, 12, 17, 23,255, 95, 80, 80, 0, 62,159, 95, 98, 86, 10, 10, 10,144,151,
-151, 7,165, 82, 9,131,193,128, 22, 45, 90,136, 15, 30, 60,216,179, 34,131, 85, 26,157, 78, 87,144,149,149,229,210,166, 77, 27,
-215, 13, 27, 54,196,180,104,209, 34,236,185, 18,118,230,140,193, 96, 48, 8,121, 60,158, 93,235,220,109,217,178,165,228,216, 63,
-123,246, 12, 43, 87,174, 44,249, 46, 46, 46, 14,203,151, 47, 47,153,151,163,162,115, 20, 30, 30,222, 99,243,230,205,141, 55,109,
-218,148,207,231,243, 17, 19, 19,131,173, 91,183,130, 82, 10, 79, 79, 79,232,116, 58,100,102,102,226,244,233,211,176, 90,173, 80,
- 40, 20,240,247,247,119,248,240,195, 15, 91,207,153, 51, 71, 8,160, 92,131,101,179,217,108,124, 62, 31,193,193,193,152, 57,115,
- 38, 12, 6, 3, 68,162, 66, 95,169, 86,171,161, 84, 42, 17, 29, 29,141,196,196, 68, 84,118,115,113,112,112, 24,180,105,211, 38,
- 47,177, 88, 12,189, 94, 15,141, 70,131,148,148, 20, 36, 37, 37, 25,178,178,178,172,142,142,142,188,224,224, 96,158, 68, 34,145,
-244,239,223,159, 20, 27,205,222,189,123,187,111,222,188,121,104,101,230,136, 16,226, 89,167, 78,157, 47,198,140, 25,227, 80,186,
-204,102,100,100, 96,224,192,129,178, 75,151, 46, 77, 39,132,108,165,148,102,191, 78,119, 49, 74, 41, 45, 40, 88,125,225,220,190,
-159,234,220,189, 41,168,105, 50,229,183,232,210,115,162, 0, 0, 46,157, 93,223,226,238,205,123,144, 18,107,210,225, 99,139, 47,
- 40, 20, 99,105,101, 17,192,158,157, 92,186, 7,121,137, 7,244,239,219,153,247,235,166, 53, 77,199,190,219, 77,226, 85, 99, 13,
- 1, 0, 87, 81, 0, 90,218,166,240, 12, 70,173,195,175,155,214, 52,237,223,183,231,213,132,167, 73, 75,122,117,118,221,115,232,
-164,242, 72, 69, 17, 66, 95, 31,161,191,155, 83, 46,220, 28, 27, 34, 56,196, 17,209,183,238, 96,223,238,243, 8, 13,111, 13,163,
-209, 8,171,213, 42,239,211,167,143,110,219,182,109,134,216,216, 88,141, 94,175,111, 71, 41,141,173, 44,255,169,169, 15,184, 48,
-159,230,102,145, 84, 98,213,168, 68,186,105, 95,238, 28,220,168, 89,215,198,174,190,254, 66, 79, 57,119,160, 67,187, 54, 91,127,
-219,178,106,210,148, 79,191, 70,131, 6, 45, 90, 60,124,124, 56, 2,192,221, 50, 77,235, 19,122, 48, 50,148, 88,227, 31, 63,238,
-149,148,152,152, 90,219,219,199,244, 68, 73, 45, 19,167,173,233,210,166,221,160,122, 53,235,180, 21,223,127,112,150, 76,254, 96,
-204,111, 63,172, 88, 51,188,216,100,157, 59,119,180,221,236,217,137, 98, 0, 70,230,171,138,158,202, 37,146, 0, 69,112,176, 32,
- 97,195, 6,125, 72,159, 62,249, 0, 96, 50,155, 61, 18, 18, 19,157,101, 50, 25, 40,165,176, 88, 44,207,245, 17, 46,238, 23, 28,
- 25, 22,230,109,143,102,194, 87, 95,213,251,236,179,207,144,145,145, 1,171,213, 10,161, 80,248, 98,157, 13,173, 86,139,183,223,
-126, 27, 63,126,247, 93,115,123, 52,109, 54, 27, 25, 63,119,238,140,207,103,204,168, 57,110,220, 56, 94,233,186,215,205,205, 13,
- 59,119,237, 18,175, 88,177, 34,224,139, 31,127,124,251, 77,137, 36,190, 50,205,156, 90,181,224,150,153, 41, 45, 54, 87, 0, 16,
- 22, 22,134,149, 43, 87, 74,222,125,247, 93,113,159, 62,125,190,191, 85,191,254,178, 37,173, 91, 63,118,175, 93,219, 73, 44,145,
- 4,216,123, 60, 1, 64, 99, 48, 68, 46, 89,182,204,245,234,213,171,200,204,204, 68, 70, 70, 70,241,181,140, 38, 77,154,144,145,
- 35, 71, 58,215, 8, 12,108,250, 23,159,238,255,242, 34,255,120,131, 85,148, 17, 82,148, 49, 82,234,166,248,156, 81,169,204, 96,
-189, 12, 74,165, 18, 74,165, 18,107,215,174,133, 72, 36, 42,185,233, 2,128,201,100,178,199,172, 68,249,249,249, 65,165, 82,161,
-118,237,218,207, 69,174, 68, 34, 17, 4, 2, 1, 68, 34, 17, 36, 18, 9,140, 70, 35,130,130,130,160,211,233,162, 42,210,212,235,
-245, 13,220,220,220, 74,110,172, 70,163,177,196, 92, 21,167,215,100, 50, 33, 63, 63, 31, 5, 5, 5,208,104, 52,208,106,181, 13,
-237,201, 47,199,113,184,119,239,222,147,176,176,176, 6,124, 62, 31, 10,133, 66,174,213,106, 75,250, 14,229,229,229, 97,227,198,
-141,218,183,222,122,203, 99,255,254,253,149, 26, 44, 66, 8, 62,250,232, 35, 72, 36, 18,232,116, 58,252,242,203, 47,248,248,227,
-143, 33, 18,137,160,209,104,176,114,229, 74, 76,158, 60, 25, 2,129, 0, 38,147, 9,203,150, 45, 43, 63,146,241,224, 65,194,149,
- 43, 87, 26, 54,106,212,200,117,207,158, 61,217, 93,186,116,241,236,214,173, 27,164, 82, 41,244,122, 61, 44, 22, 11,154, 55,111,
-142,240,240,112,100,101,101,225,240,225,195, 57,161,161,161, 30, 87,175, 94,229, 50, 50, 50,146, 42,187,121,151,138, 16,194,102,
-179, 33, 51, 51, 19, 74,165, 18,217,217,217, 72, 75, 75, 67,106,106, 42, 4, 2, 1, 42,123,120,119,119,119,127, 35, 50, 50,146,
- 15, 0, 82,169, 20, 13, 26, 52,192,140, 25, 51,172,122,189,126, 8,128,195, 69,155,245, 88,179,102,205,158, 11, 23, 46, 8,252,
-252,252,240,232,209, 35,120,122,122, 10, 28, 28, 28, 42, 53, 88, 62, 62, 62,235, 15, 28, 56,224, 86,108,170,139,143,179, 78, 87,
-120, 58, 6, 14, 28,232,182,105,211,166,245, 0,122,190,110, 55, 51, 5,207, 69,208,180,129, 84,121,232,196,227,122, 93,122, 78,
- 20,248,214,156, 5, 0,104, 9, 8,142, 31, 90, 86,175,103,231, 90, 59,138,251,101, 85, 68,255, 30,158,139,251,244,169,207, 27,
- 49,184,113,188, 64, 20, 86,115,203,166,101,222,110,174,109,254, 83, 73,240,221, 32,151, 2,225, 53,109,188,203,191,199,123, 79,
-158, 24,102,218,186,225,189,248, 45, 59,110,116, 22,137,110,119, 4, 48,185, 60,237, 59,247,141,251,243, 53,254,117, 92, 69,103,
- 8, 28,250,162, 97,131, 80,120,122, 42,241,203,234, 77,240, 15,106, 5,163,209, 8, 39, 39, 39,153,205,102, 51,243,249,252, 45,
-246,152, 43, 0, 56,121, 82,201,213,173,171, 52,241, 53,156,245,131,143, 23, 15,232,210,163,111, 68,199,142,157,185, 99,199,143,
-153, 91, 53, 52,167,119,236,216, 34,243,244,153,115,113, 25, 25,207, 66,195,195,235, 33, 54,230, 86,119,128,220, 3,202, 46,176,
-247,226,232,145,154, 53,201,233,109,219,198,114,122, 46, 90,250,205,188,187, 61,122,245, 26, 21,217,182, 77, 91,238,248,137, 83,
- 38, 49,114, 30, 42, 90,183,124, 54,106,216,144, 61,219,118,239,233,122,250,212,193, 90, 42,117,230,193,239, 86, 80,102,174, 74,
- 63,156, 89,173,222, 2,137,132,151,125,250,180, 53,234,221,119,141,197,215,163, 76, 38,195,190,125,251, 32, 22,139, 75, 94, 34,
-145,168,228,189,183,183,119,241,160, 42,187, 52, 1, 32, 61, 61, 29, 25, 25, 25,112,118,118,134,167,167, 39, 50, 50, 50,112,233,
-210, 37,196,198,198, 66, 40, 20,162,123,247,238,224,149,211,119,249, 69,205,193, 83,167,118,169, 19, 21, 21,244,162,185, 2, 0,
-179,217,140,188,188, 60,244,235,215,143,119,248,240, 97,159, 35,201,201,125,191, 2,182, 84,164,217,176, 87,175,220,204,157, 59,
-203,252,237, 70,141, 26,145,139, 23, 47, 74,186,119,235, 54,105,202,188,121, 43,126,220,180, 41,197,102,181,250, 84, 37,239, 60,
- 30,143, 71, 8, 65, 96, 96, 32,242,242,242, 80, 80, 80,216, 82,173, 80, 40,224,234,234, 10,139,197, 2,142, 82,225, 95,252,144,
- 87,166, 23,249, 71, 27,172,162,204, 0, 64,251,210, 55, 20,142,227,236, 50, 87, 66,161,176,210, 62, 85,246, 68,181, 94,196, 30,
-131, 85,156, 86, 7, 7,135,146, 11,172,180,177, 42, 78, 39,143,199, 3,159,207,135, 61,145,119,142,227,248, 26,141, 6,187,118,
-237, 66,187,118,237, 74,154,159, 84, 42, 21,148, 74, 37, 84, 42, 21, 12, 6, 3, 18, 18, 18,112,242,228, 73,212,170, 85, 11,128,
-125,147,182,198,199,199,223,168, 94,189,122,227,226,155,119,135, 14, 29, 2, 54,108,216,144,214,179,103, 79, 63, 74, 41,190,252,
-242,203,156,230,205,155,123,148,190,185, 87, 6,159,207,199,165, 75,151, 80,171, 86, 45, 80, 74, 33, 18,137, 16, 19, 19, 3, 47,
- 47, 47,112, 28, 7,129, 64,128,236,236,108, 56, 58, 86, 60,183,225,189,123,247, 70,191,243,206, 59,105,206,206,206,245,114,115,
-115,211, 37, 18, 73,155,115,231,206, 5,154,205,102, 56, 57, 57,193,201,201, 9,135, 14, 29,130,139,139, 11, 62,249,228,147,100,
-189, 94,127, 73, 46,151,123,235,245,250, 59, 25, 25, 25, 95, 86,229,124, 91,173, 86,104,181, 90,228,231,231, 35, 47, 47, 15,106,
-181, 26, 6,131,161,210, 52,150, 69,155, 54,109,112,240,224, 65,254,130, 5, 11,126,141,143, 47,124, 16, 12, 9, 9,193, 39,159,
-124,194,247,247,247, 71, 66, 66, 2,110,220,184, 1,179,217,140,202,194,207, 66,161,176,195,148, 41, 83, 90, 7, 5, 5, 17,179,
-217, 12,142,227, 96, 52, 26, 81,252, 62, 57, 57, 25,117,234,212,225, 5, 7, 7,183, 32,132,116,176,103,192, 4,163, 16,117,214,
-118,184,138, 2, 0,190, 27, 56,245, 10,104, 95,114, 50,146,172,172,172,121,195,199,241,223, 61,180,181,192, 59,230,177, 35, 2,
- 67, 70, 34,160, 70, 63,140,121,199,134,217,223, 28,132,127, 96, 4,146,146,146,208,161, 67, 7, 81, 90, 90,218, 59, 0,166,218,
-171,125,252,248, 21,219,177, 67,135, 7, 13, 30, 58,170,113,231,206, 61,173, 71,143, 30,194,189, 59, 71,239,191, 51,244,141, 44,
-202, 21, 16, 23, 23, 89,244,227,199, 15, 67, 35, 35, 27,193,108,177,180, 1,102, 47, 2, 80,110,165,242,228, 9, 53,205,153, 51,
-135,247,199,222,245, 35,135,143,120,187,126,167, 78, 93, 45, 71,143, 31,192,141,203,199,111,127,191,104,204,217, 5,203,182,119,
-232,210,253,141,186, 14, 78, 87, 14, 69,214,213,191, 23,232, 20,244,132,149,148,114,110, 86, 14, 14, 28,138,234, 69, 30, 33,160,
-148, 62,103,174, 94, 52, 88, 60, 30,175,210, 7,255,210,154,165,239, 69,197, 15,210,171, 86,173,130, 68, 34,129, 88, 44,134, 80,
- 40,172,180,155, 69,105,205,251, 9, 9, 29, 55,110,217, 34, 41,203, 92,229,230,230, 34, 55, 55, 23, 5, 5, 5, 24, 54,108,152,
-104,206,245,235,141, 42,211, 12,242,245, 53,202,165,210,204, 7, 15, 30,248, 69, 68, 68, 60,151, 94,181, 90, 13,169, 84,138, 45,
- 91,183,138,122,247,234, 53,161,211,161, 67,223, 3, 80, 86, 53,239,132, 16,120,121,121,193,213,213, 21,132, 16, 88,173, 86,100,
-100,100,224,254,253,251,184,126,253, 58,248,132, 88,255,202,115, 92,150, 23,121, 29, 34, 88,164,188,104,139,189, 6,139,207,231,
-191,116, 20,171, 60,236,105, 34,148,201,100,119,211,210,210, 90,249,251,251,195,106,181,150, 24,172, 23,155, 8,139,163, 29,183,
-110,221,130, 76, 38,187, 91,153, 38,165,180, 69,211,166, 77,177,123,247,110,156, 62,125, 26, 79,159, 62,133, 78,167,131,209,104,
-132, 94,175,199,253,251,247,193,113, 28, 34, 35, 35, 33,151,203, 43,213, 4, 0,173, 86,155, 46, 20, 10,195,164, 82,233,127,154,
- 59,124,125,145,155,155,203, 89, 44, 22,108,220,184, 81,237,227,227, 35,151, 74,165,118, 27, 86, 66, 8,178,178,178, 16, 16, 16,
- 80,210, 7, 75,163,209,192,203,203,171,216, 80,192,104, 52,194,209,209,177,210, 38, 66, 74,169, 1,192,148, 82,218, 77, 6, 15,
- 30,252,219,182,109,219,106,156, 56,113, 2, 87,175, 94,133,167,167, 39,230,207,159,255, 52, 49, 49,113, 56,165,244,250, 95,112,
-129, 85,186, 77,110,110,238,174,187,119,239,182,104,218,180,105, 73,237,208,161, 67, 7,210,161, 67, 7,143,210, 33,253,236,236,
-108, 92,187,118, 13, 39, 78,156, 0, 33, 4,113,113,113, 54,189, 94,255, 91, 5,191, 45, 10, 14, 14,222, 48, 99,198, 12,133,213,
-106, 45, 41,219, 82,169, 20, 14, 14, 14, 16,137, 68,224,243,249, 72, 76, 76, 68,191,126,253,156,127,250,233,167,245,132,144,154,
-148, 82, 51, 94, 19, 10, 56,165,245,218, 45,189,139,171,107,240,157, 75,103,215,183,104, 89, 84, 71, 92, 58,187,222,234,234, 26,
-124,231,218, 45,189, 75,219, 64,165, 85, 81,137,206,222,195,217, 83,205,230,235,221,143, 28,190, 59, 96,202,228, 49,226,224, 26,
- 33,153, 23,175,222, 13,110,105,155,194,147, 75, 1,173, 30,200, 83, 2,143,158,240,185,224, 26, 33,153,215,111,198,136,191,255,
- 97,109,136, 78,111,218,115,232,164,242, 72, 37, 15, 99, 6, 66, 72,255,143,190, 16,158, 29, 53,218, 75, 44,118, 8,132, 38,255,
- 38,170, 5,187, 99,200, 27, 97, 88,177,250, 38,156,156,220,224,237,237, 13, 30,143, 39,183, 55,239, 57, 57, 57,100,215,239,231,
-223,125,235,237, 49,205,187,117,237,101, 61,114,244, 15,193,233, 99,251, 47,173, 95,253,197, 30,202,215,202, 8,213, 72, 3,131,
- 2,238, 36, 60,141, 29,222,182,109, 87, 72,197,178, 90, 64,120,153, 5,182,100,224, 0, 69, 50,143, 7,135,183,222, 30,219,178,
- 91,183,190,214,163, 71,247,226,232,161, 77, 87,102,205,170,118,232,233,179,173,162,203,215, 83, 29,250, 15,122, 63,255,224,225,
-135,166, 55,250, 84,143,245,147, 55,208,131,241,252, 3,164, 64,144,105, 53, 26, 3, 3,186,117,227,235,146,146,132, 10,111,111,
- 43, 0, 88, 44,150, 74, 13, 22, 0,206, 30, 77,123,211,162,211,233,192, 1, 86,123, 52, 51,178,178,170, 21, 61,124,151, 96,177,
- 88, 74,204, 85,110,110, 46,148, 74, 37,228,114, 57,178,141, 70,111,123, 52,187, 54,107,182,113,206,236,217, 83,119,238,218, 37,
- 42,109,174,138, 95, 66,161, 16,223, 46, 90, 36,250,248,211, 79,223,159, 32, 16, 76,172,202,241, 44,126, 88,231,243,249, 16, 8,
- 4, 72, 74, 74, 66,114,114, 50,146,146,146,144,148,148, 4,169, 84, 10, 90,206,241,124,133, 17, 44,242, 58,149,221, 10,167,105,
-168, 74, 39,119,123, 13,129,205,102,123,165, 6, 75,171,213,158, 56,121,242,100,179,254,253,251, 11,174, 92,185, 2, 31, 31,159,
- 18,131, 85,252,183,184,217, 73, 38,147, 97,207,158, 61,102,173, 86,123,162,146,139,232,228,161, 67,135, 26,207,156, 57, 83, 56,
-122,244,104, 60,120,240, 0,227,198,141,131, 82,169,132, 90,173, 70,110,110, 46,116, 58, 29,154, 53,107, 6, 7, 7, 7,220,185,
-115,199,162,211,233, 78, 86, 82,112,104, 86, 86, 86,129,167,167,167,239,139,223, 13, 26, 52,200,251,231,159,127,214, 61,122,244,
-200,210,170, 85, 43, 39,123,141, 70, 49,191,255,254,123, 73,100, 46, 54, 54, 22, 63,255,252,115, 73,159,171,155, 55,111, 98,241,
-226,197, 37,115,151, 85,177,176, 95,175, 91,183,174,213, 98,177,160, 86,173, 90,240,247,247,135,193, 96,192,210,165, 75,173,127,
-133,185,178, 23,131,193,176,115,212,168, 81,159, 71, 71, 71,251, 10, 4,130,194,208,117, 81,254,204,102, 51, 30, 63,126,140,251,
-247,239,227,209,163, 71,200,203,203, 43,121, 0,184,117,235, 86,190,197, 98,217, 94,158,174,167,167,231,151,235,214,173,243,145,
-201,100,207,149,231,226,232,103,113, 84, 52, 59, 59, 27, 46, 46, 46,232,212,169,147,215,201,147, 39,191, 4, 48,243,117,168, 12,
- 8, 33,164, 85,115, 69,235,143,222,127, 27, 77, 27,105,158,220,189,121, 15,199, 15, 45,171, 7, 20,118,114,143,106, 20,249,228,
- 90,180, 35,122,116,157,218,250,226,149,113, 21,118,114, 47,234, 67,117,168, 89, 51,183, 11,123,247,159, 88, 49,109,242,152,107,
- 95,205,158,230,101, 48,106, 29,194,107,218,120, 64,161,185,186, 28, 45, 55,124, 61,123,204,181,133, 63,108,228,146,179,204,147,
-174, 94,205, 47,119,116,111,105,211, 82,183, 54, 28,124,130,123,165, 5,215,232, 80,253,206,205,181,240,112,206,135, 99,173, 86,
-232,209,173, 25, 78,156,188,139,164,103, 6,164,167,167,195,104, 52, 86, 56,237,193,163, 59,123, 70, 82, 66,131, 8, 37,201,132,
- 71, 29, 70,142,122,175, 77,175, 94,125,233,193,131,251,173,123,247,108,185,176,125,243,242,157, 60,145, 80,160, 55, 57,155, 8,
- 49,168, 56,158,227, 3,173, 54,183,176,242, 20,137,202, 15,183, 22, 77,200, 26, 81, 55,220,103,228,168,113,206, 61,123,244,163,
-135, 14,237,229,182,111,219,120,122,251,218,168, 45, 28, 79, 45, 74, 79,209, 73, 84,106,139,138, 18,177, 75,129,154,211,101,198,
-215, 52,248,245, 26,100, 6,227,249,251,128,209,152, 90,144,146,226,235,214,174,157,228,241,236,217, 50,239,102,205, 12,164,168,
-143,112, 69, 6,139,207,231, 3, 60, 30,103,143,166,189,105,209,235,245,224, 0,203,203,104, 90,173,214,231,204, 85,177,193, 42,
-142,103,216,163,185,122,214,172, 43, 65,221,186,229,157, 57,115,198,187,125,251,246, 68,163,209, 64,163,209, 60,103,178,252,252,
-252, 72, 68,100,164,236,247,211,167, 67,102,218,121, 60,237,201, 59,143,199,251,203, 13,214,107, 23,117,173,232,203,226, 8,150,
- 61, 6,203,206, 8,150,197, 98,177,192,203,203, 11, 57, 57, 57,229,222,240,121, 60, 30,164, 82,105,113, 27,112,133, 35,233,140,
- 70,227,210,169, 83,167,126,216,163, 71, 15,143,176,176, 48,100,103,103,195,219,219, 27, 14, 14, 14, 37,125,195,138,245,110,222,
-188,137,117,235,214,169,141, 70,227,210, 74, 52,151, 44, 90,180,232,131,129, 3, 7,186,249,248,248,192,213,213, 21,119,238,220,
-129,171,171, 43,212,106, 53, 98, 98, 98,224,232,232, 88,210, 47,103,255,254,253, 26,163,209,184,164, 18,211, 70,207,157, 59,103,
-118,116,116,188,147,157,157,205,207,203,203, 19,228,231,231, 11,212,106,181, 80,165, 82, 9,143, 28, 57,226,225,236,236,172, 59,
-117,234, 84,118, 80, 80, 16,255,233,211,167,124,139,197,194,179,227,166,136,137, 19, 39, 66, 36, 18,193,104, 52, 98,233,210,165,
-152, 58,117,106, 73,159,171, 69,139, 22, 97,198,140, 25, 37,134,121,205,154, 53, 85, 53, 89, 48,155,205,176, 88, 44,176, 88, 44,
-118,153,222, 63,131, 61, 70,157, 82,154, 65, 8,233,221,180,105,211, 99, 59,118,236,112, 47,154, 83, 12,153,153,153,200,204,204,
- 68,118,118, 54, 10, 10, 10, 96,181, 90,225,239,239,143,204,204, 76,236,221,187, 87,165,209,104,186, 85, 52,130,144,207,231,143,
-106,211,166,141,224,197, 52, 20, 63,213, 21,155,118,137, 68,130,180,180, 52,116,232,208, 65,124,230,204,153, 81,255,116,131, 85,
-108, 92,234,132, 66,212,167,239, 48, 81,131,198,221,117,215,110, 28, 73,146, 18,107, 82,207,206,181,118, 0,133,211, 52, 92,139,
-118, 68,131,198,221,121,125,210, 77,205,148,249,171, 27, 68,212, 38,230,138,150,213, 1, 0, 15,103,174, 95,183,206,213,210,157,
-156,136,224,235,217, 11, 15,252,186,105, 77,211,203,191,255,103,154,134,175,103, 23, 78,211,208,173,115, 53,235,131, 71,177,253,
- 0,108,178,215,180,244,238,221, 39,122,245,218,205, 72,141,223,239,183, 98,161,139, 24,134,124, 64, 24,134, 54,205,157,112,245,
-199,100,220,190,125, 59,195,100, 50,117,168,176, 44, 17, 26,116,255,193,189,218, 81,117, 35,124, 70,142, 26,235,212,187,119, 63,
- 28, 60,184, 15,155, 55,174, 61,247,198,176,129,191, 62,203, 87,243,189,132, 50,145,140,114, 98,190,200, 89,224, 32,147,101,153,
-211,210, 10, 43, 79,129,208, 9, 24,204, 85,208, 66,136,241, 99, 71, 56,119,236,220, 15,127, 28,218,135,205, 27, 87,159,253,170,
-238,160,181,213, 27,214, 33,205, 26,125,247,126,245, 26,213,131,181, 5,153,106, 30, 17,155, 13, 6,206,241,187,141,137, 63,196,
-207, 24, 21, 31,125,111,240,247,108, 20,225,115,220,217,220,179,103,211,143,159, 60, 17,121,182,110, 45, 77, 59,125, 90, 86,180,
-114, 72,133, 6, 75, 32, 16,128,150,223,164,245,156, 38,217,180,137, 7,160,194,193, 85, 34,145, 8, 58,157, 14, 22,192,108,143,
-166,239,209,163, 41, 79,158, 60, 9,117,115,115,123,206, 92,229,229,229,149,188, 55, 24, 12,208,233,116,144, 74,165,247,237,209,
-204, 60,119,206,176,112,226,196,153,195,135, 13, 91,126,226,228, 73, 7,119,119,119,168, 84,170,231, 12,150,201,100, 66,199, 78,
-157, 68,139,162,163, 71, 2,152,101,207,241,244,238,208,161,210,254,190,124, 62, 31,220, 95,220, 68,248,186,193,171,172,169,198,
-222, 81,132,101,221, 24, 9, 33,157, 95,248,104, 70,227,198,141, 13,177,177,177, 8, 10, 10, 42, 49, 41,165,127,211,201,201, 9,
- 46, 46, 46,184,121,243, 38,230,205,155,167, 7, 48,163, 34, 77, 74,169, 70,167,211, 13,237,210,165,139, 94, 32, 16, 32, 60, 60,
-188,100,254, 43,142,227, 32, 22,139, 33,151,203, 17, 29, 29,141, 62,125,250,232,116, 58,221,208, 23,231,192, 42, 67, 83,165,211,
-233,222,236,218,181,171,238,193,131, 7,104,211,166, 13,110,223,190,141,130,130, 2, 20, 20, 20, 32, 33, 33, 1, 17, 17, 17,208,
-233,116,248,249,231,159,245, 58,157,238, 77, 74,169,170, 34, 77,141, 70,211,103,234,212,169,252,223,126,251,173,186,191,191,127,
-221, 38, 77,154,132,117,234,212,169,230,128, 1, 3,130,123,246,236,233, 27, 26, 26,106,232,214,173,155,103,143, 30, 61, 60,117,
- 58,157,240,226,197,139,233, 22,139,165, 71, 37,199,179,196,148,196,198,198,150, 52, 9, 10, 4, 2,228,228,228,148,204,180, 95,
- 92, 25,149,101,128,203,211, 44,109,178,139,141, 85,177,209,170,172,238, 47, 71,179,210, 27,134, 88, 44, 46,142,112,210,202, 52,
- 41,165,183, 30, 62,124,216,165, 93,187,118,183,222,125,247, 93, 77, 70, 70, 6, 28, 29, 29, 17, 18, 18,130,218,181,107,195,195,
-195, 3,102,179, 25,123,246,236,209,238,221,187,247,174, 74,165,234,240,226, 28, 88, 47,106,242,120,188,132,178, 42,215,226,232,
- 85,177,193,114,112,112,128,191,191,127,241,177, 77,168,202,241,124,201,200,210, 95,171, 89,100, 92, 58,117,236, 86,163,103,175,
-254,206,123,247,239,147,253,248,203,134,135,109,251,125,184,210, 35,120,202,110,143,224, 41,187,219,246,251,112,229,143,191,108,
-120,184,119,255, 62, 89,207, 94,253,157, 59,117,236, 86,227,193,253, 71, 97,207,173, 75, 88, 70, 58,101, 98, 73,179,182,173, 66,
-149,231, 46,158,179, 46,252, 97,163,173, 85,203,158, 87,151, 47, 95,185,125,249,242,149,219, 91,181,236,121,117,225, 15, 27,109,
-231, 46,158,179,182,109, 21,170,148,137, 37,205,236,201,251,248,177, 35,156,123,245,236,135,131, 7,247, 88,119,254,254,243,162,
- 53,155,211,218,117, 24,144,154,153, 16,127,157, 66,183, 1, 30,142,119,240,240,225, 67,149,201,100,234, 80, 86, 7,247,178, 52,
-199,141, 25, 81,218, 92,157,119,247,105,179,230,225, 67,216,142, 31, 63, 96, 57,121, 50, 90,127,254, 86,150,234,198,131,156,188,
- 92,181,225,169, 86,163, 54,113, 28, 7,202,217,248,115,230, 20,118,196, 45,239, 28,181,106,213, 30,167, 78,108,197,198, 13,171,
- 84, 28, 7,195,160, 29, 59,108,131, 7,207,166,193,213,170, 5,111,249,125, 43,233,221,183,191, 51, 5,184, 62, 3,251,185,252,
-182,237, 55, 82,163, 86,141,106, 33, 33,133, 83,211,252, 35,203,210, 95,160, 57,139,210,124,117, 82,210,217,155, 63,253,100,244,
- 30, 58,212, 77,236,237,237, 4,155,141, 20,215,239,229,189, 4, 2,193,115, 17,151,138, 52,253, 61, 60,158,237,223,191, 31,181,
-107,215,134,191,191, 63, 74,247,129, 45,158, 72,219,221,221, 29,187,118,237, 2, 5,110,216,163,217,176,122,245,155,223, 46, 92,
-104,226, 56, 14,249,249,249,255, 21,189,202,207,207, 7,199,113, 56,244,199, 31, 38,117, 65,193, 70,123,243,222,129,207, 47, 24,
-222,182,237,130, 94,189,122,153,159, 60,121, 2,142,227, 80, 58,146,149,149,149, 5,133, 66, 1,131,209, 24, 72, 8,145,217,163,
-153,117,228,136, 28,149,212,235, 47, 70,176,254,138,243,254,175,138, 96, 89,173, 86, 4, 6, 6, 62,183,244, 10,143,199,123,238,
- 85,149, 17,132,148,210, 77,132,144,163,221,186,117,155,217,188,121,243,241, 51,103,206,228,135,133,133, 65,165, 82,193,213,213,
- 21, 94, 94, 94,136,137,137,193,254,253,251,109, 57, 57, 57, 43, 1,204,181,103, 40, 60,165,244, 52, 33,164,119,189,122,245,182,
- 77,155, 54,205,185,107,215,174,194,192,192, 64, 80, 74, 17, 29, 29,141,221,187,119,155,215,174, 93,171, 46, 50, 87,167,237, 76,
-235, 49, 66,200, 27, 61,122,244,216, 50,106,212, 40, 71,155,205, 38, 76, 72, 72,128,209,104,132,197, 98, 65,114,114,178,249,224,
-193,131, 5, 58,157,110, 4,165,244,152, 29,122, 55, 9, 33, 17,199,143, 31, 31,117,241,226,197,121,239,190,251,174,123,167, 78,
-157, 68, 86,171, 21, 23, 46, 92,200,110,216,176,161, 87, 86, 86,150,121,215,174, 93,185, 6,131, 97,134,205,102,179,107,169, 28,
- 66, 8,212,106, 53, 60, 60, 60, 96, 52, 26,193,113, 28, 76, 38, 19, 20, 10, 69,201,242, 70,148, 82, 84,165,211,252, 11,101,128,
-111, 54,155, 49,108,216, 48,112, 28,135,165, 75,151,194,106,181, 86, 89,204,217,217,249,198,173, 91,183,122, 55,104,208,160,196,
-180, 20,151, 33,137, 68, 2, 15, 15, 15,184,187,187,227,224,193,131, 16, 10,133, 55,236, 60, 71,183, 1, 52, 36,132,180,188,123,
-247,238, 91, 0, 26,152,205,102,127,155,205, 70,120, 60, 94, 58,165,244,142, 90,173,254,213,222,165,114,178,178,178,230,189,253,
-246,219, 13,183,110,221,170, 16, 8,254,115,105, 8, 4, 2, 72, 36, 18, 20, 79,106, 73, 41,133,201,100,194,151, 95,126,169,214,
-106,181,243, 94,151,202,160,113,147,102, 88,253,243, 50,197,201, 83, 71,179, 31,198, 97, 95,233,169, 24, 20, 0, 46, 94, 25,183,
- 79,153,191,186, 65, 90, 74,138,162,113,147,102,118,105,154,108,214,220,161, 35, 86, 6, 22, 45,149, 51, 47,225,105,210,146,173,
- 27,222,139, 7,128,239,127, 88, 27,146,156,101,158,244,224, 81,108,191, 95, 86,158,105,102,178, 89,115,237,209,252,143,105,217,
-162, 2,133,129, 82,122,149, 16, 82, 61,172,165, 97, 70,100,184,168,111, 90,166,229, 89, 65,129,233, 35, 74,105,188,189,121,111,
-221,170, 29, 78, 29,251, 13,155, 55,110, 81, 83,142,111,240,240,240,160, 0,240,240,161, 7,125,248, 80, 73,255,211, 95,216, 69,
-235, 41,203,158, 59, 99,250,248,201, 26,141,102,201,138,239, 42,158,112,182, 94,253,230,168, 87,191, 57, 62,252,232, 11,231,136,
-186,225, 65, 0,176, 99, 7,181, 69,134,146, 3, 51,191,154,221,119,238,220,217, 80,107,140,152, 59,183,112, 89,157,152,123, 15,
-254,120,242,132,154,216,173,233,121,102, 90,173, 87, 49,121,114,168, 46, 47,207,179,245,231,159,123, 8, 62,253,148, 87, 81, 39,
-247,210,215,175, 61,154,215,239,220,249, 99,220,123,239, 61,155, 53,115,102,183,149,171, 86, 73,163,162,162,144,145,145,129,240,
-240,112,248,251,251,227,248,241,227,216,181,125,187, 86,169,209,204, 0,240,139, 61,154,155, 14, 29,138, 9,171, 91, 55,103,213,
-170, 85,126,189,122,245, 34, 90,173, 22, 42,149, 10, 42,149, 10, 70,163, 17, 69, 19, 57,211,216,184,184,135, 22,139,101,165,189,
-121,183,101,103, 59,204,109,214, 44, 85,196,113,223,190, 49,112,224,212,185, 95,127, 45,169, 81,163, 6, 49, 26,141, 37, 81, 44,
-179,217, 12,133, 66, 97, 54,153, 76,238, 0,116,246,104, 74,214,174,181,102,103,103,195,211,211,179,100,218,165,210,243, 10,106,
- 52, 26, 80,202, 38,193,173,210,131, 66,121,247,112, 55, 55,183, 27, 2,129, 32,160,116, 52,171,172,181,237, 74,127,102,177, 88,
- 82,179,179,179, 27,151,118,184,148,210, 19,229, 24,131, 16, 0,243, 59,118,236,248,198,148, 41, 83,200,153, 51,103,176,119,239,
- 94, 26, 31, 31,191, 19,192,140,242, 42,199, 74, 52, 29, 37, 18,201, 39,114,185,188,115,241, 84, 12, 50,153,236,174, 86,171, 61,
- 97, 52, 26,151,150, 55,123,123, 37,154, 78, 18,137,100,162, 92, 46,239,162,209,104, 26, 0,128,163,163,227, 45,173, 86,123,220,
-104, 52, 46, 43,111, 1,233, 74, 52,165,206,206,206,243, 60, 60, 60,222,252,244,211, 79,221,207,157, 59,151,126,234,212, 41,145,
- 82,169,220,106, 50,153,202, 93,236,185, 44, 77,119,119,247, 27,124, 62, 63,224,175, 56, 71, 0, 80,191,126,253,131,125,250,244,
-233, 53, 98,196, 8, 88, 44, 22,252,242,203, 47, 56,126,252,248, 31,113,113,113,189, 43,122,250,124, 81,147, 16,226, 17, 16, 16,
-112,102,252,248,241,193,195,134, 13,147,185,186,186, 66, 32, 16, 64,171,213,226,241,227,199,136,142,142,166,251,246,237, 43,184,
-121,243,102,170, 78,167,107, 79, 41,205,177,247,120,254,153,167,228, 23, 53,133, 66, 97,187,192,192,192,223,103,205,154,229,216,
-165, 75, 23,169,187,187, 59,248,124, 62, 44, 22, 11,210,211,211,113,239,222, 61, 28, 61,122, 84,187,115,231, 78,109,110,110,238,
-176, 23,231,106,249,255, 74,231,171,212,140,168, 77,190,122, 97, 1,231,114,103,103,175,104, 91,123,210,217,171,179,107,207, 55,
-222,104,210, 25, 0,118,237,186,126,226,143, 19,249,135, 94, 54,157,149,165,213, 30,205, 58,161,252, 89,247, 31,220,123,110, 34,
-202,186, 17,145,177,117,162, 6,126, 99,143, 86,241, 76,238, 47,230,189,212,236,248,165, 99,184,207, 53,167, 22, 47, 8,253,197,
-140,233,152, 63,111, 1,246,237,216,243,199,131, 39,244,224, 63,185, 44,253,149,154,197,139, 19,203,124,125,219, 46,229,184,233,
-183,239,221, 83,148,126, 80, 43,142, 52,151,126,152,244,243,243,203, 74, 75, 75,243,182, 71,179,247,143, 63,154,117,114,185,100,
-250,183,223,182, 43, 48, 24,218,205,157, 59, 87,112,253,250,117,252,252,211, 79, 86, 67,106,234,150,108, 96, 98, 89,173, 31, 21,
-105, 6, 79,156,232,240,217,207, 63,143, 14,169, 85,203,235,173,183,222, 18, 10,133, 66,104,181, 90,164,164,164,224,216,209,163,
-166, 7, 15, 31, 62, 80,171,213,125, 41,165,105,246,106,246,254,241, 71,179, 75, 72, 8,100,158,158,244,228,233,211,206,227, 62,
-249,100,124,181,234,213,157,187,117,239, 46,116,114,114, 66,126,126, 62, 18, 18, 18,176,103,207,158,172,130,130, 2, 63, 74,169,
-205, 30,205, 45, 23, 47,214, 59,116,246,236,160,111,190,249, 70, 28, 25, 25, 9,103,103,103,104, 52, 26,220,187,119, 15,103,207,
-158, 53,174, 92,185, 82,165, 82,169,198, 91,173,214,253,127,213,121,255,215, 24,172,255,175, 11,143, 16,210, 24,192, 87, 69,255,
-126,109,199,154,126,175, 77,165, 67, 8, 9,114,115,115, 91,109, 48, 24,168, 94,175, 31, 71, 41, 77,254, 95, 75, 39, 33, 68,208,
-184,113,227,159,179,178,178, 90, 82, 74,225,236,236,124,233,254,253,251, 19, 40,165,214,170,106, 18, 66,248, 0, 90, 42, 20,138,
-102,142,142,142,237,140, 70, 99,157,162,102,182,135, 90,173,246,172,217,108,190, 10,224, 18,165,212,246,119,230,189, 40,157, 93,
-252,252,252,222,227, 56,174, 22, 33,196,197,102,179,193, 98,177, 40, 57,142,123,172, 82,169,214, 2, 56,254,119,167,243, 85,105,
-214,173, 69, 6, 80, 30,234,148,103, 4,158, 51, 52, 47, 24, 7,194,225,225,253,199,116, 79, 21,202, 60,175,127, 15,207,197, 64,
-225, 72,195,202,150, 28,122,206, 96,217, 97, 90,170,108, 46,107, 9,222,166,132, 6, 61, 95, 41,146,228,240,122, 3, 54,255, 25,
-131,101, 47,117,195, 72, 59, 80,180,228, 40,174, 62,140,163,167, 94,215,186,238, 85,106, 46, 32,196,237, 39, 87,215, 75, 60,129,
-192, 7, 0,175, 40,218,194,113,132,216, 40, 33,214,210,205, 88,165, 31, 40, 43,211, 52, 3, 81, 66,137, 36,208,102,181,122,103,
- 0,138, 67, 54, 91, 35, 3,165, 5, 1,192, 87,209,148,198,188, 76, 58,205, 64, 20, 95, 34, 9, 58, 68,105,191,108,185,188, 94,
-150, 94,239, 9,128, 42,228,242,135,106,173,118,163,193, 96, 88, 81,198,162,234,149,106,138, 36,146, 0,155,213,234, 13, 0, 60,
-129, 32,107,155,209, 24,152,234,228,244,150,193,104, 12, 86, 40, 20, 22,147,201,164, 54, 24, 12, 35, 44, 22,203,201,170,228,253,
-177,213, 26,113,145,199,107, 99,150,203,221,205,132,200, 77, 86,171,217,100, 54,167, 24, 12,134,187, 0,126,160,148, 62,249, 43,
-207,251,107, 71,241,104,179,191,226, 5,160, 51,211,100,154, 76,147,105, 50, 77,166,201, 52,255,122, 77, 0, 50, 0, 65, 0,248,
-255,196,188,191,110, 47, 1,179,152, 12, 6,131,193, 96,188, 22, 1, 19, 29,202,232,115,197,248,155,154, 8, 1,116, 46,231, 68,
-217, 29,250,123,153,209, 4,118, 52, 37, 48, 77,166,201, 52,153, 38,211,100,154, 76,243, 53,211,172, 76,251,181,105,122,100, 77,
-132, 76,147,105, 50, 77,166,201, 52,153, 38,211,100, 77,132,175,246,197, 3,163, 60,103,237, 77, 8,241,126,213,219, 50, 94,239,
-178, 80,198,190,254,132, 16,255, 42,110,239,203,142, 58,131,193, 96,252,179,249,127, 55, 88,246,222,172,254,228, 77,237, 79, 25,
- 30, 66,200, 2, 66,144, 86,248, 34, 11, 94,213,182,118,252,174,159,167,167,231,199,117,235,214,221,226,227,227,243, 33, 33,196,
-171,138,251,135,202,229,242,101, 10,133,226,140, 66,161, 56, 35,151,203,151, 17, 66, 66, 95,209,121, 35,132,144,113, 14, 14, 14,
-167,253,252,252,158, 73, 36,146,211,132,144,241,228, 37, 23,160, 36,132,212, 36,132, 76, 38,132, 76, 33,132,132, 85,101, 95,239,
-200,254,219,189, 34,251,223,241,138,236,127,207, 35,170,111,168, 87,100,255,123, 94,145,253,239,120, 71,246,223,254, 23,148,215,
-151, 62,191, 69,251, 38, 23,190, 42,223,151, 16,242, 3, 1, 82, 8, 65,234,159, 45, 75, 12, 6,131,193,248,123,169, 82, 39,247,
-128,128,128, 30, 28,199, 13, 7, 0, 30,143,247, 91,106,106,234,225,151,184,225,124, 86,244,126, 17,165,116,250,159,217,206,142,
-125,151, 80, 74,167, 86,221,156,225, 51,142,163,188,194,124,146,207,189,189,189,101,124, 62,255,191, 58, 14,218,108, 54, 25, 33,
-248,144,227, 10, 23,168,228,241,200,103,132,144,101,148,210,204,151, 49,133, 35, 71,142, 92,178,108,217, 50, 7,153, 76,134,164,
-164,164,174,227,199,143,111, 69, 8,153, 76, 41, 77,175,108,127,169, 84, 58,188,105,179,150,147,191,253,238,123,133,183,151,151,
-220,106,227,204, 9,137,137,242, 47,167, 79,109, 38,149, 74,151, 85,180,200,241,139, 70, 10,192, 88,129, 64, 48,196,193,193,161,
-166,193, 96,120, 98,181, 90,119,242,249,252,110,243,230,205,139,236,217,179,167,131, 90,173, 22, 91,173,214, 90,155, 55,111,158,
-188,110,221,186, 30,132,144,126, 21, 13,183, 47,142,224, 80, 74,159,149,250,184, 71,114,114,114,148, 80, 40, 68,205,154, 53, 9,
-128,152, 74,182, 47,129, 2,161,247, 47,236,136, 2,128,186,173, 7,199,222,191,176, 3, 69,239,255,130,135,129,231,203,130, 84,
- 42,253, 69,175,215,167, 20,127, 95,148,206, 76,123,246, 37,132, 44, 47, 90,230, 39, 18,192,192,162, 77,119, 83, 74,239, 17, 66,
-124, 28, 36,146, 79,244, 6, 3, 1, 64,254, 76, 89, 98, 48, 24, 12,198, 63,204, 96, 81, 74,223,122,252,248,177,140,227, 56,132,
-133,133,141, 4, 96,183,193, 42,235,134,211,169, 83,167,134, 82,169,244,185, 89,139,245,122,189,152, 16,116,122, 25,211, 82,252,
- 27, 38,147,145, 39, 20,138,193,227,145,201,245,234,213,171,150,147,147,115,142,199,227,109, 73, 77, 77,205,127,137,155, 44,214,
-172, 89, 83,219,215,215,247,191,102, 87, 78, 79, 79, 23,247,235,215,183, 74,122,163, 9,145, 24, 37,146,102, 34, 66,124,109, 86,
-171, 11, 0, 8, 4,130,252, 48,103,231,198,243,191,249, 70, 70, 8,225,114,115,115,161,215,235, 49,105,210, 36,233,131, 7, 15,
-250, 3, 88, 81, 73, 26,107, 55,111,209,106,210,209,163, 71,234,168,243,242, 13,107,150,172,142,214, 11,132,218, 26, 17,117,196,
- 63,175,222,232, 50,118,244,136,143, 8, 33,183,202, 90, 54,228, 5, 29, 30,128, 61,159,124,242, 73,221,222,189,123,139, 53, 26,
-141,131, 94,175,175,182,101,203,150, 47, 27, 55,110,172,104,208,160,129,248,247,223,127, 39, 42,149, 10,148, 82, 89,120,120, 56,
- 29, 50,100,136, 97,219,182,109, 31, 2, 88,110,143,225,245,245,245,157, 89,100,208, 75,151, 61,161,159,159,159,180,232,152,206,
- 37, 4,147, 42, 50,215, 4,136,171,219,122, 48, 64, 80,235,254,133, 29, 14,117,219, 12, 54,128,226, 49, 1,226, 0,192,223,223,
-127, 46, 80,106, 94,167,231,121,248,236,217,179,151, 90, 59,176,119,239, 62,160,148,254,226,239,239,127, 48, 51, 51, 51,146, 16,
-140,179,247, 33,128, 16, 2,119,119,247, 55, 0,252, 8, 96,232,163, 71,143,234, 2, 64,120,120,184, 16,192, 61, 23, 23,151, 70,
-198, 66,115,197, 96, 48, 24,140,127,161,193, 18, 1,192,185,115,231, 64, 41, 21,191, 76, 80,160,244, 13,103,226,196,137,240,245,
-245,125,209,180,224,204,153,211,127, 38, 79,207,253,198,215, 95,127,173, 80, 42,149,157,127,253,245,215,182,254,254,254,139,159,
- 61,123,118,165,146, 60,102, 18, 66, 22, 21, 69, 28, 32,145, 56,196,142, 31, 63, 62,186,232,235,106, 7, 14, 28,144,245,233,211,
- 71, 7, 32, 17, 0, 36, 18, 7,127, 62,159, 87,187,176, 83, 27, 22, 85,100, 4, 7, 19, 18, 34, 22,139, 59,142,251,241, 71,107,
-163, 62,125, 4,114, 79, 79, 2, 0,137,143, 30,185, 47,250,238,187, 86,249,241,241, 98,189,187,123,110,174, 86,171,143,141,141,
-133, 68, 34, 33,124, 62,191, 81,101, 25,150,203,229, 31,127, 51,127,145, 92,157,167,212, 27,213, 5, 38,190,205, 98,116,148, 74,
-109, 25, 25,153, 57, 10,153, 76, 55,253,171, 57,162,247,199,188,245, 49,128, 9,149, 72,125, 56,121,242,228, 58, 77,155, 54,245,
-223,190,125, 59, 81,169, 84, 16, 8, 4,138, 6, 13, 26,160,113,227,198,182, 83,167, 78,145,234,213,171, 35, 50, 50, 18, 23, 46,
- 92,192,165, 75,151, 72,195,134, 13,101,187,119,239, 30, 89,150,193, 42,195, 84, 79,110,209,162, 69,160, 66,161, 48,168,213,106,
-188,251,238,187, 0,128, 46, 93,186,212,150,203,229,191, 20, 20, 20, 56,236,223,191,239,141,202,204,117,230,189,189, 67, 0,192,
- 43,178,255, 29, 0, 81,160,120,156,117,111,111,189, 82,155,212,137,137,137,105,158,159,159, 95,210,217,176,120, 97,241,182,109,
-219, 86,165,188,103, 18, 66, 22,245,237,219,231,115,128,160,125,251,246,153, 19, 39, 78,164,247,238,221, 27, 48,120,240,160, 78,
-113,113,143,203, 77,231,139,229,104,248,240, 55,159,186,185,185,117,241,243,243,139, 3, 32, 16, 10,133,197,155,242,253,253,253,
-221, 34, 35, 35,135, 41, 20,138, 4, 62,143, 87,157,130,210,202,202, 18,131,193, 96, 48,254, 1, 6,139, 16, 66, 75,221, 24, 72,
- 5, 79,225, 57,183,110,221,242, 53, 24, 12, 32,132,228,216,113,131, 58, 81,250,134,195,231,243,127,230,241,200, 4, 66, 8, 34,
- 35,163,158, 46, 93,186,180,172, 53,183, 76,145,145, 81, 79,249,124, 94, 13, 74, 41, 8,225,253,194,113,182,204,178, 52,203,187,
- 33,138,197,146,207, 0,192,199,199, 55,254,240,225,195,166, 65,131, 6,225,187,239,190, 19, 77,155, 54,109,106,112,112,240,135,
- 73, 73, 73, 25,229,165,179,232,255,233,222,222,222,178, 53,107,214,212, 30, 63,126,124,116, 90, 90,218,116, 0,240,243,243, 91,
- 0, 32, 2, 64, 98,169,207,176,114,229,182,103, 99,198,140,137,205,204,204,156, 94,158,230, 27,132,212, 12, 14, 15,239, 56,247,
-220, 57,202, 51, 26, 73,206,249,243,234,236,204, 76,203,147,236,108,217,134, 27, 55,122,127,185, 96,129, 48, 48, 40, 8,103,246,
-239,247,200,209,233,178, 85, 70,163, 33, 51, 51,147, 90,173,214, 75,118,228,189,174,151,167,167,108,213, 15,191, 92,119, 20,242,
- 57,111,127,127, 34,112,115, 17,242,100,206, 98,158, 64, 96,168, 17, 92, 75, 4,160,110,101,231, 72, 36, 18,141,236,218,181,171,
-108,219,182,109, 36, 50, 50, 18, 46, 46, 46, 56,127,254, 60,110,221,186, 5,139,197,194,203,207,207, 71,147, 38, 77,240,237,183,
-223, 34, 40, 40, 8, 74,165, 18,201,201,201, 30, 98,177,216,179,130,227,249,156,225,157, 58,117, 42, 2, 3, 3, 97,181, 90,145,
-151,151, 7,171,213, 10,185, 92, 14, 0, 72, 76, 76,196,129, 3,251, 43, 45, 75,118,154, 35,180,104,209, 66, 67, 8,121,248, 98,
- 4,171, 42,154,190,190,190, 27,179,178,178, 27,118,232,208, 1, 42,149,202, 52,107,214, 44,212,171, 87, 15,181,107,135,217, 83,
-230,167, 75, 36,146,181, 65, 65, 65, 95,125,250,233,167,110,110,110,110, 48, 26,141, 31,165,167,167, 99,252,248,241, 0,128, 94,
-189,122,133, 11, 4,130, 13,239,190,251, 46,170, 85,171,246, 72,163,209,196,220,186,117,107, 90, 65, 65,193,131,151,205,187,157,
-199,135,105, 50, 77,166,201, 52,255,167, 52,237,245, 34,255, 40,131, 69, 41, 37,132, 16, 90, 89,134, 40,165,249,254,254,254,190,
- 82,169, 20,148,210, 42, 55,183,217,108,182, 15, 61, 60, 60,178,166, 79,159,222,186,118,237,218,166, 15, 63,252,240, 94, 66, 66,
-194,140,210,219, 84,175, 94,125,222, 79, 63,253,132,216,216,216,196, 5, 11, 22, 92,200,201,201,249,186,138, 39,125, 26, 33,100,
-105, 81, 52, 44,103,255,254,253,245,206,157, 59, 55, 97,201,146, 37,158, 31,124,240,129,232,227,143, 63, 30, 1,224,187,202,116,
-248,124,190,174,172,102,193,114,110,194,166,178,250,104, 21,211,135, 16,169,147, 88,220, 97,238,185,115,212,148,152,168, 91,247,
-253,247,142,171,174, 93,155,101,161,212,219,203,203, 11,109, 90,181, 42,112,224,243,115,178, 50, 50, 56,175,154, 53,249, 9,135,
- 15,123,232,197,226,180,109,219,182,169,114,115,115,247,218, 81, 40,213, 54,142, 51, 59,250, 7, 90, 7, 13,232, 90,247,250,213,
- 91,143, 28, 61, 61,120,141, 27, 70, 70, 61,136, 77,188, 73,109, 54, 11, 33, 68, 93,153,142,179,179,115,237,220,220, 92,168,213,
-106,120,122,122, 98,233,210,165,240,241,241,129, 78,167,195,229,203,151,105, 64, 64, 0, 57,119,238, 28, 2, 2, 2,144,157,157,
- 13,147,201, 4,141, 70,147,101, 52, 26,245,229, 25, 94,129, 64,176,150,199, 35,239, 1, 64,181,106,213, 31,254,242,203, 47, 6,
- 0,168, 83,167, 14, 6, 12, 24,128, 93,187,118,225,193,131, 7,224, 56, 14,148, 82, 67, 64, 64,224, 67, 30,143,212, 41,242, 72,
- 47, 29,197, 41, 94,130,231,217,179,103, 3, 95,242, 66, 39, 62, 62, 62, 3,194,195,195, 71, 12, 31, 62,220, 36, 20, 10,161,211,
-233,160,211,233,240,240,225, 67, 83,215,174, 93, 51,251,246,237,227,125,240,224,193, 10,211,105, 52, 26,159,250,249,249, 77,157,
- 60,121,242,210,149, 43, 87, 58,125,249,229,151,176,217,108,224, 56,174,228,111,241,251,189,123,247, 34, 62, 62,126, 89,105,115,
-197, 96, 48, 24,255, 22,236,245, 34,255, 40,131,245,255, 9,159,207, 95,117,236,216,177, 6,109,219,182, 21,116,234,212, 41, 50,
- 32, 32, 32, 50, 53, 53,245, 30, 0, 4, 4, 4, 68,118,239,222, 61,210,203,203, 11,203,150, 45,211,241,249,252, 85, 47,121,146,
- 74,223,236,162,125,125,125, 23,239,222,189,123,209,184,113,227,224,227,227, 19,241,255,157,103, 39,137,164,225,187, 75,151, 90,
-133, 22, 11,239,199,197,139,157,190, 63,125,122,209,246, 29, 59, 4, 45, 90,180, 32,148, 82,220,189,115, 71,250,237,242,229,178,
- 97,253,251, 39,198,196,199, 91,247, 29, 61,106,201,124,246, 44,239, 89,118,246, 76, 74,105, 94,101,250, 22,139,229,114,220,227,
- 56,255,214, 29, 90,250,157,191,118,255,214,192,254, 61, 59, 10, 5, 60,242, 56,241,217, 13, 95, 31, 15,231, 51,167,143, 27, 44,
- 22,203,229,202,116,180, 90,109,130,213,106,117,163,148,122,158, 57,115, 6,158,158,158,200,207,207,135,197, 98,129,201,100, 50,
-233,116, 58,135,220,220, 92, 24, 12, 6, 24,141, 70, 56, 57, 57,225,238,221,187,153, 86,171,245, 84,121,154, 86,171,117,172,131,
-131,195,124, 74,169,208,104, 52,166,157, 56,113, 2, 34,145, 40,208,217,217,121,186,197, 98, 65, 90, 90, 26, 46, 94,188,184,192,
-108, 54,167, 20,239, 35, 22, 75, 60,141, 70,163,181,188, 78,238,246, 70,176, 94,150,128,128, 0,191,234,213,171, 79,158, 54,237,
-179, 90,245,234, 53, 64, 78, 78, 14, 56,142,131, 66,161,128, 78,167,131,147,147, 19, 90,182,108, 25, 61,111,222,188, 60, 74, 49,
-173, 50, 19,152,150,150,150, 27, 20, 20, 52,115,252,248,241,147,107,213,170, 21, 4, 0,161,161,161,232,218,181, 43, 14, 31, 62,
-140,216,216, 88, 20, 20, 20,216,174, 95,191,126, 32, 45, 45,141,173,237,197, 96, 48, 24,204, 96, 85,157,204,204,204,236,128,128,
-128, 35, 55,111,222,236, 61,100,200, 16,156, 57,115,230,109, 0,147, 1, 64, 34,145,188, 61,100,200, 16,220,188,121, 19,143, 30,
- 61, 58,146,153,153,153,253, 42,126, 83, 44, 22, 27, 76,166,194, 96,148,131,131,131, 67, 21,119,175, 86,212, 52, 8, 0,213, 42,
-248,172, 92,120, 2,129,111, 84,247,238,130,252, 91,183,212,107,174, 94,253,122,203,150, 45,130,214,173, 91, 19,139,217, 12, 27,
-199, 33, 36, 36,132,116,234,220, 89,190,126,203, 22, 55,155, 86,123,238,155,207, 63, 63,191,250,221,119, 11, 98, 41, 77,180, 39,
-129, 70,163,113,249, 71, 19,198,118, 57,121,250,156, 95,120,120,136,251,145,227,167,163,221,221,156,101,181, 67, 67,229,121,249,
-249,182, 25,211, 62, 19, 24,141,198, 31, 43,211,209,235,245,123, 78,156, 56,209, 63, 48, 48,208,243,222,189,123, 48,153, 76,176,
-217,108,232,212,169, 19, 40,165, 18, 0,156, 64, 32,192,163, 71,143, 96, 54,155,179,226,226,226,210, 30, 63,126, 44, 1,176,176,
- 34, 93,131,193,144, 84,250,255,160,160,160,214,189,122,245,130,213,106, 69,247,238,221,177,127,255,254,214,105,105,105,107, 74,
-109,146,244, 10,158,132, 64, 41,173,227,239,239,191,187,232, 35,187, 58,183,251,250,250,134,133,134,134,206, 91,176, 96,129, 48,
- 48, 48, 16, 28,199,193,205,205, 5, 90,173, 30,185,185,185,136,136,136, 64, 96, 96, 32,190,253,246, 91,160,112, 4,160, 93, 17,
-182,228,228,228, 4, 0, 31, 70, 68, 68,136, 52, 26, 77,164, 94,175,159,213,169, 83, 39, 68, 71, 71,227,242,229,203, 31,105,181,
-218, 60,185, 92,110,241,243,243, 27,206,227,241,228,102,179,121,127, 86, 86, 86, 22,171,162, 24, 12, 6,227, 53, 55, 88,222,222,
-222, 50, 7, 7,135, 55,223,123,239, 61, 23,142,227, 32, 18,137,162, 60, 60, 60,230,231,228,228, 20, 84,245, 71,117, 58,221,246,
- 45, 91,182,116,253,225,135, 31, 68, 61,123,246,172, 25, 16, 16,208, 20, 0, 6, 14, 28, 88,211,209,209, 17, 91,182,108, 49,235,
-116,186, 87, 54,167,145,197, 98,105,219,164, 73, 19,228,229,229, 33, 49, 49,241, 94, 85,246, 61,112,224,128, 12,133,253,174, 42,
-252,172, 34,172, 38,147,171,139,191, 63,239,217,233,211,230, 60,181,218,183,109,187,118,196, 98, 54,131,199,227, 33, 55, 55, 23,
-201,201,201,112,118,113, 33,143,226,226, 20,107, 63,251,236, 64,181,250,245,197, 54,147,201,189, 10,102, 66, 75, 8,121,251,163,
- 15, 63,216,179,117,235,111, 30, 74,165, 58,222, 65, 42, 53, 73,196, 66,239,143, 63,252,192,150,151,151, 55,138, 82,106,207,121,
- 90,184,117,235,214,238,221,187,119,191, 19, 20, 20,228,149,157,157,237,163, 84, 42,109,121,121,121,124, 20,246,165, 34, 0,112,
-250,244,105,168,213,106,171,205,102, 59, 7, 96, 46,165,212,100,111, 90,221,220,220, 28, 59,116,232,208,220,219,219, 27,106,181,
- 26, 30, 30, 30,104,216,176, 97,115, 55, 55,183,237,121,121,121,154, 87, 89,184,143, 31, 63,238, 72, 41,109, 78, 41, 69,247,238,
-221,237,218,135, 16, 50,168, 87,175, 94, 66, 30,143, 7,189, 94, 7,137,196, 1, 10,133, 19, 28, 29,157, 81,187,118,109,164,165,
-165,161, 91,183,110,230,184,184,184,205,233,233,233,127, 84, 53, 77, 42,149,170, 75,139, 22, 45,222,155, 48, 97, 2,108, 54, 27,
-250,245,235,135,148,148,148,175, 18, 18, 18, 14,120,120,120,244,127,231,157,119,220,220,221,221, 49,101,202, 20, 41,128,165,172,
-138, 98, 48, 24,140,127,184,193,170,168,205, 51, 32, 32,160,137,135,135,199, 71,142,142,142, 46,167, 78,157,146, 3, 64,235,214,
-173,193,113,220, 42, 63, 63,191,159,211,210,210, 46, 86,229, 71,243,243,243,213,190,190,190,251, 46, 95,190, 60,120,224,192,129,
- 56,126,252,248,168, 34,131,133,203,151, 47,227,233,211,167,251,242,243,243,213,175, 34,131, 1, 1, 1, 61,218,183,111, 63,176,
- 73,147, 38, 56,120,240, 32,108, 54,219,165,170,236, 95,122,196, 32,202, 24, 69, 88,252,153, 93, 98,124, 62, 8, 33,176, 90,173,
- 0,128,156,236,108,196,198,196, 32, 47, 63, 31, 70,131, 1, 90,157,206, 86,187,122,117,189,202,100, 18, 18,160, 74,109, 92,148,
-210, 36,133, 66,145,172,211,105,189,220, 60, 92,245,114, 7, 7, 40,213, 42,209,141,235, 87, 52,148,210, 39,118,106,152, 8, 33,
-237, 14, 31, 62, 60,147,207,231, 15, 81, 40, 20,152, 48, 97, 2,191,125,251,246, 16,137, 68, 48, 26,141, 80, 42,149,216,178,101,
- 75,182,213,106,173, 81,100, 72, 20,114,185,124, 35,159,207, 79, 85,171,213, 95, 86,246, 27, 18,137,164,125,223,190,125,249, 70,
-163, 17,115,231,206,197,204,153, 51,209,189,123,119,254,181,107,215,218, 3,216,255,170, 10, 54,199,113,232,210,165, 75,233, 78,
-238, 15,237,217, 79, 40, 20,214,174, 85,171, 22,178,179,179,145,157,157, 13, 79, 79, 79,248,249,249,193,219,219, 27, 75,150, 44,
-161, 75,151, 46, 61,107,179,217, 54,103,100,100,228,188, 68, 89, 28,254,246,219,111, 15, 27, 60,120, 48,180, 90, 45, 78,157, 58,
-133, 86,173, 90,225,219,111,191,245, 60,127,254,252,123, 77,154, 52,129, 80, 40,196,217,179,103, 97, 54,155,211, 88,245,196, 96,
- 48,254,109,188, 46,253,175, 42,141, 96,185,186,186, 58, 57, 56, 56,140,235,221,187,119,235,254,253,251, 99,254,252,121, 37,223,
-241,120, 60,108,218,180, 73,177,103,207,158,207, 3, 3, 3,219,113, 28,247,203,179,103,207,242,236,253, 97,142,227,246,108,221,
-186,181,103,139, 22, 45,100, 29, 58,116, 8, 41,186,249,154,182,110,221,170,227, 56,110, 79, 85, 51,242,226,164,143,254,254,254,
-245, 4, 2,193,192,222,189,123,215, 27, 61,122, 52,238,223,191,143, 45, 91,182, 60,174, 93,187,246,133, 42, 74, 39, 86, 50,138,
-112, 65,101,209, 44,190, 88,156,171,204,200,112, 81, 4, 5, 9, 93, 29, 29,211, 15, 30, 60, 24,216,185,115,103,146,146,146,130,
-252,252,124, 24, 12, 6, 92,191,126,157, 19, 0, 73, 2, 87, 87,146,116,249, 50,225,139,197,185, 85, 61, 6,129,190,174,161, 95,
- 77, 27, 95,205, 96, 48,212, 85,169, 84, 86,161, 80, 40, 12,240,113, 73,169, 98,225, 54,202,229,242,198, 0, 4, 28,199,233,220,
-220,220,100,199,142, 29,131, 88, 44, 6, 33, 4, 81, 81, 81,112,112,112, 16,201,229,242,100, 0,240,241,241, 17,175, 90,181,202,
-121,196,136, 17,231, 43,211,110,223,190,189, 32, 56, 56,184,107,237,218,181,113,233,210, 37, 60,124,248,240,217,149, 43, 87,252,
- 27, 55,110, 12,127,127,255,174,237,219,183, 63,116,230,204, 25,235, 43,186, 72, 95,170,147,187,205,102,163,132, 16,240,120, 60,
-112, 28,135,236,236,108,212,168, 81, 3, 43, 86,172,192,146, 37, 75,126,124,217, 62, 82, 17, 17, 17,162, 6, 13, 26, 12, 28, 60,
-120, 48,158, 60,121,130, 5, 11, 22,228,103,101,101, 93, 58,118,236, 88,143, 9, 19, 38,240, 91,181,106,133,220,220, 92,172, 91,
-183,206, 26, 29, 29,189, 51, 51, 51,115, 15,171,106, 25, 12, 6,227, 53, 52, 88,254,254,254,189,220,220,220,222, 27, 58,116, 40,
- 63, 44, 44, 12,153,153,153,208,104, 10, 12,245,234, 69,114, 0,143,138,197, 34,179, 92, 46,199,216,177, 99, 17, 21, 21,213,244,
-243,207, 63,111,226,227,227,179, 41, 35, 35, 99,151, 61, 63,156,153,153,169,243,245,245,221, 57, 97,194,132,133,183,110, 69,215,
- 0,128,107,215,174, 61, 77, 75, 75,155,150,153,153,169,171,162,185, 42,158,204,146, 72,165,210,171,161,161,161, 9, 61,122,244,
-112,234,223,191, 63, 60, 61, 61,113,243,230, 77,124,251,237,183,113, 38,147,105,230,171,186,129, 87, 5,171,209,152,113, 99,239,
- 94,199,246,111,190,233, 52,177, 87,175,197, 31, 76,152,240,195, 87, 95,125, 37, 8, 11, 11, 35, 58,157, 14, 87,175, 94,165,187,
-118,237,178,172,255,250,235,165,144,203,133,151,119,237, 18,155, 76,166,164, 42, 70, 71,218,245,236,222, 46,108,241, 15,203, 97,
-208, 23,224,234,165, 63,144,159,159,141, 85,171,119,135, 5, 4, 4,180, 75, 77, 77, 61, 91,133,227, 89,251,248,241,227, 94,148,
- 82,136,197, 98,204,157, 59, 23,126,126,126,112,114,114,130, 70,163,193,228,201,147,157, 63,249,228, 19,103, 0,184,127,255, 62,
- 20, 10,133, 93,186, 49, 49, 49,141,198,143, 31, 47,179,217,108, 56,114,228,136,153,207,231, 47, 62,126,252,248,162,250,245,235,
-139,218,183,111, 47, 91,191,126,125, 99, 0, 87, 94,149,193,122, 25,108, 54, 91,226,177, 99,199,162,134, 12, 25, 66, 5, 2, 1,
- 81, 42,149,112,118,118,198,138, 21, 43,116,233,233,233, 47, 61, 65, 91,110,110,174,176,110,221,186, 34,142,227,176,115,231, 78,
- 60,123,246,236,211,204,204,204,108, 63, 63,191, 35, 83,167, 78, 29, 23, 22, 22, 22,240,232,209,163,103,122,189,126,101, 90, 90,
- 90, 42,171,154, 24, 12, 6,227,245,141, 96,189,121,228,200, 17, 62,199,113, 88,189,122, 53,110,222,188, 73,115,114,114,102, 18,
- 66, 54, 58, 57, 57,217,114,114,114,222, 28, 51,102, 76,255,153, 51,103,146, 54,109,218,224,242,229,203,164, 70,141, 26, 3, 1,
-236, 42,117,163,238, 92,209, 92, 25, 42,149,234,122,102,102, 70,141, 82, 19, 75,214,144, 72, 28,174, 87,114,243,127, 78,243,197,
-201, 44,249,124, 94,179,185,115,231,106,125,125,125, 77,247,238,221,195,202,149, 43,185, 27, 55,110,156, 22,139,197,171,210,210,
-210,140,246,104,190, 10, 74,107,138,173,214,155,155,167, 78,173,211,168, 95, 63,238,189, 41, 83, 10, 68, 82,233,199,139,151, 47,
-255, 76,169,209,248,129, 16,234,238,236,156,180,122,238,220, 5,221,251,246, 45,184,127,246,172,195,173,227,199,133,158, 22,203,
-237,170,164, 51, 53, 53,245,108,104,205, 32,108, 88,243, 3,204,102, 35,210,159, 21,250,179,156, 92, 21, 42, 50, 87,101,105, 90,
-173, 86,213, 27,111,188, 33, 2, 32, 29, 57,114,164, 56, 43, 43, 11, 53,107,214, 4, 0,168,213,106,252,241,199, 31, 8, 15, 15,
- 7, 0,220,189,123,183,228,125,101,233,116,116,116,236,220,182,109, 91, 36, 37, 37,225,193,131, 7,151,158, 61,123,166,244,247,
-247,191,148,156,156,220,190, 73,147, 38,216,181,107, 87,167,242, 12, 86, 85,207,145, 61, 6,171,156,188, 47,220,179,103,207,224,
-203,151, 47,247,158, 50,101,138,160, 99,199,142, 0, 0,173, 86,107,160,148,218, 94, 70,179, 52, 22,139,165,120,210, 83, 29, 0,
- 20,153,169, 47,255,140,230,159, 45,159, 76,147,105, 50, 77,166,249,191,160,249,111, 50, 88, 86,142,227,112,230,204, 25,236,222,
-189,219,102, 50,153,166,167,167,167,199,148,250,126,125, 96, 96,224,249,129, 3, 7,126, 31, 27, 27,203,127,240,224, 1,236,185,
- 1,149,198, 96, 48, 88, 94, 92, 42,216, 96, 48, 88,254,108,166, 54,108,216,128,140,140, 12,115, 74, 74,202, 9,171,213,186,231,
- 79,142, 70,252,211,163, 8,215, 83,106,124,147,144, 19,179, 90,183,238, 50,243,248,113,201,123, 95,124, 97,124,123,244,232, 79,
-109, 38,147,133, 47, 18,113, 98,185,156,103,147, 72,132,247,207,158,117, 88,246,254,251,110,122,163,241,200,230, 42,116, 28, 47,
- 21,193,194,219,239, 77,130,190, 84, 4,235,242,245, 88, 84, 53,130,101, 48, 24,234, 2,128, 84, 42, 77, 6,224,243,214, 91,111,
-129,227, 56,232,245,122,104, 52, 26,164,165,165,169, 70,143, 30,109, 3, 0,185, 92, 46, 24, 56,112,160,147, 93, 7,178, 90, 53,
- 31, 62,159,143, 67,135, 14, 65, 34,145,156, 2, 0,137, 68,114,234,248,241,227,237,135, 15, 31,142,192,192,192,160,226, 73, 80,
- 42,210,241,142,236,191,157, 2,161, 32,168, 85,120,165,163,150, 87,100,255, 59, 4,136, 43,154,229,253, 97,195,134, 13, 1, 59,
-251, 93,149, 38, 59, 59, 91, 11, 96,157,183,183,247, 31,159,126,250,233, 91,205,155, 55,111, 51,115,230, 76, 66, 41,253,211, 11,
-163, 83, 74, 97,179,217, 88,173,195, 96, 48, 24,255,102,131, 69, 8,249,189, 67,135, 14,195, 40,165,124, 30,143,183,229, 5,115,
- 5, 0, 72, 73, 73,121, 26, 16, 16,176,186,122,245,234, 37, 11, 64, 87,241,134,147, 73, 8,249,150,199, 35,159, 21,254, 95,245,
-137, 37, 75, 45, 73,242, 25, 0,194,227,241, 55, 70, 71, 71,127,145,156,156,156, 93, 85,195, 87, 22,175, 98, 20, 33, 0,108,165,
- 52, 97, 24, 33, 71,167, 68, 70,118,238,254,254,251,168,215,189,187,147, 95,112,176, 77,111, 54,115,119, 47, 92, 32,151,118,238,
- 20,221, 58,126, 92,168, 55, 26,143,236,166, 52,185,170,233, 76, 77, 77, 61, 91, 51, 36,224,216,160,129, 61,187,134, 84,247, 3,
- 0,196, 39,164, 33, 39, 79,117,172, 42,230,234, 5,163,213,111,197,138, 21,251, 69, 34,145,160,244,146, 51,102,179, 57,175,216,
-132, 17, 66,252, 86,175, 94,253, 59,143,199, 75,170, 76, 47, 38, 38,230,216,172, 89,179,186, 63,125,250,244, 92, 74, 74, 74, 42,
- 0,196,199,199,167,250,249,249,237, 78, 75, 75,235,145,156,156,124,152,218, 17,122,122, 97,177,103,220,191,176,195, 1, 64, 84,
-241, 98,207, 47,187,214, 96,105,138, 76,249,226,128,128,128,125, 61,122,244, 24, 70, 8,201,248, 51,122, 10,133,194,170,215,235,
-173, 28,199, 9,204,102, 51, 85, 40, 20, 86, 86,253, 48, 24, 12, 70,149,104, 2,160,120,229,144,226,192,137,231, 11,239, 77, 0,
- 74, 47,229, 87,252,127, 54,128,235,165, 52, 74,127, 94,217,190, 0,144, 3,224, 78,209,103,127,206, 96,165,166,166, 30,134, 29,
-139, 57,219,187, 93, 5, 6,105, 58, 33,100, 89,177, 89,250,179, 26, 86,171,245,149,172,223,198,227,241, 18,250,244,233, 83,165,
-237, 43,219,230,119, 74,147, 62, 38,100,211,193, 31,127,108,112,100,229, 74,127,155,213,234, 78, 0,202, 23,139,115, 77, 38, 83,
-162,167,197,114,187,170,145,171,210, 60,137, 79,237, 6, 0,181,107,215,166,113,113,113,127,122, 52, 6,165,244, 54,128,192, 74,
-182, 73, 3,208,198, 30,189,148,148,148,253, 40, 99,164, 96, 90, 90,218, 1, 0, 7,236, 77, 87,201, 98,207, 0,143, 35,220,160,
-186,173, 7,239, 4,192, 21, 47,246,252, 42, 73, 77, 77,141, 7,240,245,159,213,121,242,228,137,169,122,245,234,123, 23, 46, 92,
-216,255,206,157, 59, 7, 83, 82, 82, 76, 96, 48, 24, 12, 70,149,204, 21, 33,228, 96,209,189,167,119,209, 67,254,193, 23,223, 23,
-111, 83,188, 93,233,109,138, 53, 94,252,188,162,125, 1, 96,218,180,105, 95, 44, 88,176, 64, 6,192,238,190,184,130,255,133,163,
-246, 42, 22,181,125,213, 11,227,166,166,166,174,249, 43,242,186,188,208, 64, 93,249, 43,143,103,108,108, 44,121,157,175,178,226,
-197,158, 75, 17,249, 79, 72,119, 66, 66,194,166,246,237,219,255,150,146,146,194,162, 87, 12, 6,131, 81, 53, 60,203, 50, 68,229,
-248,129,222, 21,125,255,220, 3,123, 25,219,149,245, 63, 33,228,224,130, 5, 11,122, 87, 37,193, 60,118,206, 24,140,255, 63,254,
-142, 81,172, 12, 6,131,193, 40,155, 23,163, 86,197,166,235,197,255,167, 77,155,246, 5,170,208, 60, 8, 20,206,204,221,185,156,
- 31,181,123,116, 0, 33,164,243, 75,100,234, 4,211,100,154, 76,147,105, 50, 77,166,201, 52,255, 93,154,149,105,151,179,127,175,
-242,154,244, 42,106, 46,124,241,125,101,251,218,177,237, 31, 85, 57, 16,127,217, 11, 64,103,166,201, 52,153, 38,211,100,154, 76,
-147,105, 50,205, 63,249,106, 66, 41,237,133,194, 85, 78, 40,165,180, 23,165,180,251,180,105,211,166, 23,127, 54,109,218,180,233,
-148,210, 78,197,219, 21,109, 83,178, 79,241,103, 47,254,125,241,179, 74,182,181, 59,205,255, 19,125,176, 24, 12, 6,131,193, 96,
- 48, 42,224, 58,128, 38,165,162, 75,217, 0,238, 46, 88,176, 32,191, 84,223,168,108, 0,183, 1,212, 47,218, 46,187, 40,144, 84,
-186,239,148,169,232,127, 83, 25,219,152,236,217,214, 94,152,193, 42,135, 6,190,252,175,131, 2,188, 26,151, 68,249, 10, 39,135,
- 4, 87, 52,139, 64,201,116, 2, 28, 7, 74, 41,210,178,148, 55,239,100,210,175, 94,246,247,194,252,137,155,151,131,195, 82,142,
-210,214, 69, 31,157, 85,229, 26, 39,221, 83, 81,165,189, 26,117,124, 72, 29, 7, 30, 62,229, 40,234, 1, 0,143,224,142,129,195,
-119, 15, 51,232,195, 63,123, 60, 8, 33,164,174, 39,198,138,165,178,161,206, 46,174,181,242,243,115,226,204, 6,227,142, 7,217,
- 88, 69, 95, 98,218,244,154,110,164, 57, 71,241, 5, 0,158,144,135,239, 99,115,233,105, 86,234, 24, 12,198,255, 19,252, 63,185,
-127, 89, 83, 0,253,217,193, 69,148,157, 22,187, 76,214,139, 92,179,115,187,255,119,170,100,176,234,122,145,247, 65, 48, 27, 0,
- 5,197,156,251, 89,244,151, 42,237,239, 71, 58, 59,240,249,107, 1,240, 13,102,219, 20,202,225, 92,153, 55,115, 30,218, 58,136,
-248,223, 3,224, 12, 54,219,187,247,211,236,239, 15, 22, 25, 64,186, 11, 56,222,102,142, 82,161,141,163, 27, 65,113, 80, 33,194,
-197,203,169,212, 80,149,180, 6, 5,120, 53,222,123, 45,189,235,233, 95, 38,162, 89,189,154,160, 54, 43,192, 89, 32,107,243, 41,
- 78, 46,121, 11,205,234, 4,129,114, 22,128,179, 66,209, 99, 49,122, 68, 58,191,244,197, 17,230, 79,220,130, 61,188,238,173, 89,
-179,214,199, 47, 36,130,112, 86, 51, 98,174, 29, 27,241,201,103, 51, 59, 70, 58,147, 72,123, 76, 86,125, 63,242, 94,205, 26, 97,
-159, 78,154,253, 3,223,239,255,216,187,202,240, 42,142, 54,122,230,238,213,220,184,123, 66,144, 36, 36, 4,119, 2, 4,247, 2,
-193,165,133,210, 22, 74, 41, 90,188, 64, 75,177, 22,167, 72,145,175, 5,138, 83,164, 80, 36,184,107,128, 16,146, 16, 8, 18,119,
-151,171,187, 59,223,143, 72, 3, 68,110, 2,245, 61,207,179,207,189,107,103,103,103,102,103,206,188, 51,243,142,147,171, 49,199,
-106,216,164,231,225,141,215,125, 55,255,151,134, 78,100,229,131, 4,186,205, 80, 33,229,107,139,177, 98,185,108,144,145,194,184,
- 78, 65, 65,238, 83, 78,167, 63,224,231, 36,238,190,124,197,154, 70, 1, 93,122,154,112,185, 73, 34, 61, 15,223,253,251,246,186,
-127,191, 97, 99, 79, 66,200,123,148, 82,190, 42,239,204, 83,204,136,220,249, 73, 79,137,152, 33, 62, 31,110,101, 80,133,169,175,
-165,225,107, 79,134, 17, 90,185,155, 8, 74,112, 37, 44,153,238,169,206, 51,124,236,201,255, 8,133, 23, 8, 14, 18,138,189,143,
- 82,104,138, 80,206, 9, 16,240,239,130, 72, 36,186,192,243,124,135,119,201, 73, 8,105, 73, 41,189, 41,196,238,127, 19, 85,179,
- 96, 17, 44,122, 20, 21,107, 9, 78,135,122, 94,181,190, 1, 80, 37,129,165, 96,152, 29,119,158, 36, 59,128,213, 97,235,226,241,
-251,180,122,128,213,235,192,177,122,112,172, 30, 44,171, 3,167,215,131,234, 53,152,255,227, 5, 64,155,139,166,126,158, 59, 0,
- 56, 26,250, 12, 9, 21,253, 28,124, 53,200,138,104,179,177,103,211,210,207, 99, 83,243, 62, 63, 27,146,144, 86,207,158,204, 14,
- 75,193, 79, 85, 17, 2, 23,126,152,132, 93,135,127,139, 91,251,191,252, 8,158, 82, 88,153, 25,121,143,232,253,200,117,231,209,
- 11,177,107,118,168, 35, 0,192,220, 88,230,253, 65,200, 19,183,183, 73, 4, 59,133, 98,205,230,141,223, 59, 56, 90, 27, 17,246,
-250, 50,176, 28, 7, 87,247, 94,204,236, 9, 35, 28, 23,173,222,182, 26,192,168,138,238,175,107, 79,124,189,106,251, 76,219,241,
-219,117,183,130,220, 20,109,208,174, 57, 81, 84, 3,189,131,179,143,228,155,165,171,152,185, 51, 39, 77,173,107, 79,110, 69, 36,
-211,176, 74, 10, 3,145,143, 29,142, 46, 93,182,162, 65,199, 30,189, 77,248,188, 84, 70,157,159,231,181,245,199,109, 95,213,109,
-208, 92,217,214,207, 69,154,114, 96, 28, 81,229,102, 64, 39, 82,200, 59,214,235,108,166, 26, 57, 84,191,117,251,174, 9, 0,214,
- 85,169,249, 87,170,123,154,231,171,223,154, 36, 20,109,239,223,188, 48,150, 75,184, 3,202,233, 1, 78, 87,242, 11, 78, 15,202,
- 23,254,182, 24,247, 35, 0, 84, 75, 96,137, 40,186,158,189,122,199, 49, 57, 41,177,217,234, 21, 75,102,251,218,145,147,224,240,
-115,120, 6, 46, 85, 85, 88, 10, 16, 32,224,239, 11, 66, 8, 75, 41, 21,191, 99,206,158,148,210, 19,111,201, 49, 29,192, 71, 69,
-187,219, 40,165,203,223, 65,184, 92, 0, 56, 20,237, 38, 81, 74,133, 53, 80,255, 82,129, 5, 40, 64,121,224, 96, 63, 0, 48,170,
-234,195, 40,160, 0, 97, 0,125, 62,250,246,232, 2, 27, 59, 7, 64, 95, 0,232, 10, 0,189, 10,208,231, 3,122, 21,210, 18,163,
- 1, 93, 62,240,236, 36, 88, 74,229, 85,126, 43, 77, 54, 16,121, 0,157, 26,187,193,214, 92,129, 73,125,125,109,182,156,138,220,
-182, 45,232,113,103, 0, 67, 12, 10, 43,165,104, 81,191, 14,214,110,203,143,248, 53, 56,165, 27, 0,244,106,100,115,170,133,175,
-187,235,154, 29,234,136,223, 66, 50,186, 3, 64, 15, 63,243,147,205,189, 29,221,248,183,176,238,242,148,182,117,170, 81,135,112,
-247, 55,131,207,137, 67, 78,142, 10,113, 47,118,194,210,185,137,136,227,209,190,178,251,141, 24,204,154,248,229,183,146,130,156,
-100, 45,167, 75,229,108, 68,153, 98,177,156, 39, 72,184,164,201,231,179,184,201, 31,143,228,190,152,191,100, 22,128, 17, 21, 90,
-131,236, 48, 97,229,202, 53,245,219, 52,173,107,151,244,203, 36,146,151,153, 12,150, 81,202,251,182,106, 3, 11, 79, 95, 62,249,
-226, 74, 34,171,213, 25, 22,214,181, 16,127,125, 55, 94,222, 60, 68,252, 27, 7,202,127,218, 35, 29, 89,158,192,242,180, 37,254,
-221,218, 53,223, 87,203,205,201,145, 82, 30, 60, 79, 65,121, 14, 31, 14,236,138,217,251,159,129,227, 56, 12,232,230,223,233,219,
-177, 29, 41,207,243,160,148, 71,108, 82,122,193,249, 91, 17,157,162, 50,232, 45, 67, 44, 83, 13, 91,118,240, 15, 9,190, 89, 87,
- 31,121, 12, 77, 71, 44,141, 32,192,213, 82,121,206,255,222,233,159,234, 2, 63, 86,183, 16, 34, 62,118,224, 94,158, 90, 6,183,
-118,159, 48,155,247,156,178,205, 78,141,255,224,151,157, 27, 7,110,218,188,121, 23,128,113, 66, 49, 34, 64,192,191, 3,148,210,
-119, 46,178,162,162,162, 18,223, 70,100,185,184,184,180, 3,240, 93,241, 72, 12, 66,200,119, 30, 30, 30,243,127,111,160,190,210,
-198,203,230, 56,110, 68, 92, 92,220,229,138, 56,123,247,238,237, 4,192,163, 20,167, 7, 33,196,163,172,107, 45, 44, 44,184,214,
-173, 91,191, 60,126,252,120,130,144, 67,254, 88,129, 21, 17,115, 96, 82, 99, 77, 98, 30, 0, 68, 24,144, 89, 95,233,218, 83,235,
-185,101,219,191,122,127, 89,189, 26, 86,200,205,215, 34,232,238, 75,112,156, 30, 28,203, 22, 89,178, 88,112,172, 30,221, 26,218,
-160,181,122, 28,214, 29,127, 12,150,227,151, 86,196,249, 58,116,148, 31,214,168,243,224,253, 60, 79,101,114,137, 40,219,203,213,
-218,110,218,128,134,162, 73,125,235, 65,165, 99, 7,251,218,147,243, 97,201,116,171, 65,156,252,155, 46,139,104, 89,199, 56,182,
-210,119,175,192,250,212, 98,104,239, 46,102, 84,147, 13,125,218, 51,228, 22,232,241, 44, 93,143, 36,117, 22,228, 36,209, 32, 78,
-158,162,129,179,163,163,241,181,125, 51, 95, 88,139,115,196,118, 98, 86, 34,163,172,132,227, 41,131,172, 48,141,117,221, 46,226,
-226,113, 89, 21,133,211, 72,105,250,126,187,174,189,204, 99,118,127, 66,140,188,186,193,174,177, 43, 94, 92,222,142,148,187,199,
-145,151,151, 67,228,217, 89,176,183,174,141, 30, 35,134, 96,249,144,102,200,205,201, 5,147, 24,101, 46,147,200, 45,202,227,164,
- 28, 70,172,252,118,177,163,152, 17, 21,198,103,241,198,233,161,210,104, 0,142,133, 66,204,131,208,226,115,122,112,122,157,178,
- 65,224,204,241, 0,110, 85,246,238, 97,201,116, 79, 61, 59,210, 22,188,190, 46,213,171, 64,128,171,143, 82,104,137,232,241,181,
- 39,195,154,116, 27,221,150, 18, 92,169, 78, 26,249, 89,163,119, 83, 15, 19, 99,227,156, 8,196, 29,252, 28, 81, 80, 80,251, 54,
- 31, 97,216,135, 19,148, 91,182,108,233, 67, 8,249,180,244, 24,180, 63, 98,241, 83,129, 83,224,252,167,114,154,155,155,215,172,
- 81,163,198,124,189, 94,223, 78, 42,149,218,235,116, 58,240, 60,159, 36,147,201,174,188,124,249,114, 97,118,118,246,243,191,219,
-187,135,132,132, 24, 44,178, 12,225,148, 72, 36,120,252,248,241, 83, 67, 69,214,235,156, 18,137,228,231,171, 87,175, 98,255,254,
-253, 0,128,200,200, 72,120,122,122, 26,151,117,239,139, 23, 47,140, 3, 2, 2,126,198,107, 43,112,188,206,249,240,225,195,154,
-199,142, 29,195,193,131, 7, 1, 0,143, 31, 63,134,151,151, 87,153,225,185,122,245, 42, 51,124,248,240,154, 0, 18,254,232, 52,
-250, 87, 10,172,162,245,117,201,235,255,203,192, 51, 55, 75, 89, 99,168, 57, 0,120, 86,213,135,133, 37,209,111, 27, 58, 74,186,
-159, 59,184,161,157, 66, 42,194,130,173,211, 98, 83, 51,114, 91,138, 9,120, 0, 96, 41, 68,150, 38,178, 27, 75, 63,104,232,150,
-153,167,198,175,183,227, 47, 63, 74,174,154, 41,244, 81, 2, 61, 3,192,226,247, 10,146,120,125,176,252,204,222,189,179,186, 55,
-152,210,183, 1,142, 94,127, 57, 5, 64,165, 94,218, 41,207,131,242,108,201,160,246,162,166, 2,192,179, 40, 61,166,155, 7, 45,
- 60,198, 87,205,130, 21, 64,136, 56,211, 14, 61,172,148,178,245, 99,199,126,108,166, 79,125,130, 12,173, 20,177,153,106, 36,169,
- 36,200, 19,219, 33, 62,226, 33, 39, 34, 56, 83,185,149, 5, 57,224,212, 22, 86, 50, 19,145, 95,151,241,206, 57,167,231,100,202,
- 40,203,152,245, 91,100,145,118,110,213, 75, 86,149,154, 79, 8, 42, 93, 68,219,220,220,194, 83,157,254,146,201,206, 76,131,133,
- 67, 61,116, 31,220, 27, 95,247,242, 69,110, 78, 62, 82,175,255, 70,235, 56,154,145,232, 43,187, 48,183,135, 15,210,147, 19,161,
-209, 3, 36, 95,147,161,214,170,243,202,141, 71, 17, 54, 79,254, 98,198, 48,119, 71, 91,227,226,201, 2,148,231,208,208,167, 22,
-186,180,107,129, 51, 87,175,225,206,195, 72,240, 69,147, 5, 40,207, 35, 46, 37, 51, 89,173,227,182, 87, 41, 66, 57, 22, 84,175,
- 46, 83,128,161, 26, 93,131,245,237,137,146, 3,230,181,172, 99, 58,102, 86,111,119, 83, 99, 57,129, 90,207, 65,173,213, 35,247,
-218,122, 88,215,168, 15,165, 66, 65, 26, 67, 37, 6,160, 23,138, 18, 1, 2,126,199,160, 65,131, 20,201,201,201, 23,123,245,234,
-229,219,165, 75, 23,101,219,182,109,145,159,159,143,160,160, 32,228,231,231,187,187,186,186,186, 7, 5, 5, 5,182,108,217, 50,
-204,197,197, 37,224,192,129, 3, 85, 25, 35, 43,198,239,131,212,121, 0, 44, 33, 4, 69,199, 8, 0,254,109,214,161,149,201,100,
-136,142,142,126,103,150, 44,169, 84, 10,181, 90,141,248,248,248,167,213,177,100,229,229,229, 73,157,157,157, 97,107,107, 11,142,
-227,144,159,159,143, 35, 71,142, 32, 59, 59, 27, 60,207,195,200,200, 8,139, 86,110, 69,196,189,139,184,117,235, 22,178,179,179,
-165,149,113,198,197,197,145,134, 13, 27, 66,163,209,128,101, 89,168,213,106,156, 61,123,182,100, 95, 44, 22, 99,198, 55,171, 17,
-121,247, 34,238,223,191,143,184,184,184, 63,101,117,144, 42,104,145,127,165, 5,235,173,193,113,236,236, 45, 59,246,222,152, 61,
-110, 8, 38, 12,237,236,186,112,195,161,206, 97,169,116, 7, 0,248,218,146, 15, 70,118,168,227,102,161,148,224,235,221,119, 1,
- 74,103,191,237,243, 66,211,105,100, 61, 7, 50,229,240,173,232,139,115,134, 52, 70, 45, 71, 51,207,218,181,137, 44, 42,202,128,
- 53,255,120, 22,150, 38,114,239, 94,141,108, 78,129,231, 97, 97, 42,175, 11,142,133,133,137,220,187,135,159,249, 73, 0,176, 80,
- 74,235,150,101,233, 42, 15,205,220,164,159, 40,229,226, 79,140,155, 56,186,141,234,211,197,168,103,159, 64, 35, 19, 9,139,244,
- 91, 65,200,145,184, 64,111,229, 14,141, 62, 3,113,207,163,184,115, 55,195,227,211,114, 53,211, 42, 13, 38,197,229,248,231,143,
-109,107, 54,232, 98,153,118,124,110, 74,205,209,187, 61, 68,224, 69,185,187,250, 39, 27,219, 53, 55,186,253,244,121, 30, 79,223,
-180,224,188,142,156,236,236,151,122, 14,142, 42, 78,108, 26,117,225, 39,204,234, 81, 31,153, 25, 41, 80,235, 88,100,171, 88,157,
-131,133, 66,174,121, 30, 10,141,142,133, 86,207, 67, 98,225,140,160, 27, 15,211,120,189,190,220,181, 40,163,210,232,125, 0, 38,
-165,143,213,182, 37, 13,103,154, 25,221,135, 94,133,232,184, 4,236,248,237, 70,227,162,235,170,223, 58,229,217,194,110,230, 82,
-150, 43, 66,209,182, 58,131,219,125,236, 73,115, 35,133,244,251,239,166, 12,247,109,229,101, 37,231,227,110,128,240, 58, 24,115,
- 98,168,100, 28,204, 93,107,129,215,230,210, 2,181, 58,235, 17, 32,120,102, 23, 32,160, 20,234,214,173,235, 96,110,110,254,232,
-139, 47,190,176,234,223,191, 63, 14, 31, 62,140,156,156, 28,108,223,190, 29,107,214,172,193, 87, 95,125, 5,189, 94,143, 45, 91,
-182, 40,127,249,229,151,230, 27, 55,110,140,115,119,119,175, 23, 29, 29, 93,217,130,234, 4,128, 28,128,164,168,238, 34, 0,248,
- 19, 39, 78,160,103,207,158, 56,113,226, 4, 95,116,140, 35,132,232, 41,165,154,234, 10, 44,153, 76,134,236,236,236,119, 38,178,
- 76, 76, 76, 32,147,201,144,155,155, 91,101,145,197,178, 44, 19, 23, 23,135,236,236,108,116,233,211, 7,171,151, 46, 69,135, 14,
- 29,208,165, 75, 23, 80, 74,113,246,236, 89,116,110,227,135, 33,239, 5, 32, 60, 60, 28, 44,203, 26, 20,222,164,164, 36, 36, 39,
- 39,163,123,159, 62,216,186,113, 35, 90,180,104, 1,111,111,111,176, 44,139,139, 23, 47, 98, 96,183, 54, 80,244,235,140,200,200,
- 72, 33, 83,255, 83, 4, 86,104, 10,189,233,107, 75,142, 15,237,214,188,119, 31,127, 95,108,221,119,110,177,175, 47,217, 11, 0,
-214,166,242, 69,239,119,168,133,176,152, 76,156,187,159,112, 60, 44,245,221,204,190,224, 57,216, 88,155, 41, 1, 70, 6,149,142,
-103,205,158,161,210,129,201, 60,165, 80,182,155,137,145,125,194, 92, 91,248,186,186, 22,207, 34, 52,233,185, 10, 31, 60,124,234,
-214,204,219,193, 13,156, 30,224,244, 48, 27,178, 27,248,198,184,210,112,248,215,148,159,153, 57,109, 74,235, 30,253, 6, 27,201,
-148,230,224,114, 98,161, 79,122,136,244, 39,151,145,175,244, 68, 82,244, 51,236, 63,125, 43,251, 73, 92,122,142, 72,132,160,228,
-108,205,244,168, 12,154, 87, 25,175, 90,143,165,243,231, 78,235,181,127,239, 62, 83,121, 45,127, 18,181,190,103,182, 76,204,202,
-109,107, 54, 17, 21, 40,108,232,146,237,251,204,242,181, 88, 86, 25, 79, 65,126,206,161,179, 65,167,134,212,169,233,111,250,226,
-206,111, 80,169, 53,208,232,129,122,205, 3,192,113, 84, 70, 68,132, 55, 99, 24,146,146,158, 9,162,231,146,175, 60,120,145,120,
-245,193, 51, 70, 99, 90, 57,247, 43,153,142, 48, 19,251, 4, 52, 2,244, 42,188,215,174, 62, 86,239, 58,247, 57,128,209,111,151,
-200,133, 22, 44, 10,248,215,179, 35, 63, 0,240,191,123,100, 77,221,166,253, 38,163, 42, 22, 44, 63, 91,210,195,175,182,211, 79,
-171, 23,205,180,178,118,241,100, 8,175, 7,117,104, 0,228,196, 81, 18,119, 3,230,206, 45,192, 57,181,193,150,117, 43,242,120,
-158,238,173,142,139, 10, 1, 2,254,205, 80,171,213,135,190,253,246, 91,171,222,189,123, 23, 91, 96,112,227,198, 13,108,219,182,
- 13,198,198,175,150,147, 61,123,246, 4,165,212,106,193,130, 5,135, 0,180, 42,143,179,101,203,150,125, 54,108,216,144,208,168,
- 81,163,103, 69, 34, 75, 10, 64, 20, 26, 26, 42,138,141,141, 37,150,150,150,212,201,201, 73,159,144,144,192, 3,224, 62,252,240,
- 67,198,196,196,164, 78, 94, 94,222,165,234, 10, 44,153, 76,246, 78,198,100, 73, 36,146, 18, 94,169, 84, 10, 74,105,149, 68, 22,
-199,113,226, 19, 39, 78,224,238,221,187,248,170, 81, 35, 76,113,118,134,149,149, 21, 46, 94,188, 8, 74, 41,140,141,141,145,145,
-145,129,189,123,247,162, 99,199,142, 96, 89, 86,106, 8,239,193,131, 7, 17, 28, 28,140,111,154, 54,197, 20,115,115,152,152,152,
-224,236,217,194, 94, 63,185, 92,142,232,232,104,156, 61,123, 22, 1, 1, 1, 66,166,254,163, 5, 86, 0, 33, 98, 98, 15, 7,157,
- 86, 5,202, 82,128,192,201,215,151, 72,195,194,168,174,170, 15, 21,137, 48,119,221,142,227,189, 86, 77,238, 67, 62,233,219,216,
-105,225, 79, 23, 62, 5,128, 49, 3,188,156,149,114, 49,214, 30, 13,163, 34, 17,230,190,139, 23,244,245, 37, 82,145, 8,159,118,
-105,225,141,132, 44, 45,162, 18,178,206,135, 81,106, 80,151,206,185, 85, 35,177,243,215,139,177,107,118,170, 35, 40,165,176, 48,
-145,123,127, 16, 18,229,246,211,137,224,152,149,251,213, 17,148,167,176, 80, 74,234,142, 14,111, 83,233, 44,194,102,110,210, 79,
-102,207,156,222,166,239,232, 47, 20,108,196, 1,104,163, 78,131,215,169,144,163,147, 34,139,113, 64, 92, 76, 12,150,108, 57, 30,
-155,147,175, 29, 18,154, 82, 53, 97, 25,153, 70,243,124,109, 73,255, 37, 95,207, 57,179,116,209, 2,147,130,103, 23,243, 24,194,
-170, 24,247,246,226, 69, 95,173, 34,185, 26,237,224,168, 12,154, 91, 25,143,198, 20,203,190, 93,185,174,215,199, 35, 2, 35,188,
- 60,219, 91,115, 9,207,173,213, 57, 57, 41,187, 79, 5, 59, 20,181, 12, 9, 0, 68,197,165, 35, 53, 59,159,229, 88,253, 37, 83,
- 9, 22, 62, 50,196, 26, 88,132, 90,246,196,182,127,219, 6,195,109, 77,165, 80,229,101,193,206, 84,130,110, 45,106, 15,175,101,
- 79,102, 62, 75,166,169,213, 78,104, 94, 15,170, 87,225,230,178,142,117, 41,167,175, 11, 78, 15, 93,200,207, 85,183,132, 17, 76,
-153,208,206,196,204, 82,251, 66,132,124, 99,192,200, 6,196,204, 29, 48,247, 32, 18,159,193, 72,120,246,136,253,124,248,136,244,
-231, 47,227,254,103, 99,132,229, 66, 17, 34, 64,192,171,136,142,142,126,127,246,236,217, 87, 91,180,104, 97,111, 99, 99,131,250,
-245,235,227,215, 95,127,197, 23, 95,124, 81,114, 77,163, 70,141, 64, 41, 69, 70, 70, 6,190,253,246,219,164,132,132,132,247, 43,
-226,140,136,136,120,188,115,231,206,182,190,190,190, 58,169, 84,154, 5, 64,158,149,149,165,200,200,200, 32,106,181, 26, 60,207,
-243,230,230,230, 92, 66, 66,130,126,200,144, 33,154,235,215,175,215,206,207,207,143,121, 27, 11,150,171,171,107,104,122,122,122,
- 54, 33,228,173, 92, 56, 72, 36, 18,136, 68, 34, 72,165, 82,216,216,216,216,230,229,229,241, 0, 50,171,227,194,129,101, 89, 52,
-109,218, 20,167, 47,223,195,137,115,215,145,147,240, 24,159,126,252, 62,234,215,175,143,211,167, 79, 87, 59,205, 26, 54,108,136,
- 83,103,175,226,234,221, 7,136,142, 12,193,231,159,126,140,122,245,234,225,212,169, 83, 66,134,126, 7, 2, 43,128, 16, 82,220,
- 18,127, 67,174,250,216,146,134, 78,117,100, 63, 47,232, 81,219, 71,210,101, 1,136,196, 8, 7, 60, 79,181,153,187,100,125, 68,
-125,123, 50,226, 97,114,229,179,189, 94,177, 98, 37,211, 71,245,236,200,158, 7,225,117,135,191,215,194, 21, 91,127, 85,206, 3,
-128,193,109,107,226,246,147, 84,220,138, 76,217,243, 40,133, 62,122,219,151,171,111, 79,148,160,216,243,237,196,190, 1,238, 46,
- 14,216,118,248, 42, 8,193, 33,131, 42, 90, 74,105, 11, 95,119,172,217,249,250,140, 65, 7,183,149,251,213, 17,167, 67,115,122,
- 0, 64, 87, 31,227,147,205,106, 91,186, 85,102,201, 48,146,137,199,246, 8, 28,169, 96, 35,127, 5, 94,158, 5, 97, 53, 80,233,
-120, 36,166,229,162,192,220, 21, 23,111, 60, 80,101,171,181,147, 31,165, 84,207,106, 23,150, 74,159, 53,114, 36, 49,249,249, 42,
- 71,165,109,109,181,152,240, 52, 79,205,227,118,216,203,236, 71,137,244,177, 33, 28, 81, 81, 84,219,202,133,180,253, 97,199,254,
-249, 18,169,108, 48, 67, 64,236, 44,140,109,127, 88,245, 13, 76, 77, 77,192,107,243,128,252, 84,244,255,108, 73,234,195,120, 93,
- 77, 0,240,178, 33, 38,237,106, 73,119,136, 69, 36,238,252, 83,237,151,149, 61,131,232, 49,110, 68,183, 70, 18, 94,155,143,137,
-223,238,195,230,153,125, 49,178,147,143,228,183,107,145,227, 0, 44,172,110, 90, 83,142, 5,213,171,208,106,206,229, 8, 2, 92,
-165,128,255,221,253,139,234, 2,247, 12,230,104, 66,136, 68,236, 72,124, 26,184, 25, 75,249,184,107,224,227,174, 81,198,181, 13,
-136, 91, 59, 66, 28,154,210,239,191,251, 42,127,235,214,109, 65,188, 8, 95, 87,230,242, 66,128,128,255, 42, 40,165,207, 44, 44,
- 44,186,247,236,217,243,220,233,211,167,173,252,252,252, 0, 0,119,239,222, 5, 0, 52,109,218, 20, 94, 94, 94, 72, 78, 78,198,
-208,161, 67,211, 18, 19, 19,187, 83, 74, 43, 28,211,155,155,155,251,236,224,193,131,118,121,121,121,141,231,205,155,151,236,238,
-238,158,163, 86,171, 73, 86, 86, 22,207,178, 44, 44, 45, 45,101,141, 26, 53, 66,235,214,173,243,174, 95,191,238, 17, 27, 27,155,
- 3,224, 69,117,194,223,183,111, 95, 92,190, 92, 56, 9,239, 93,248,197,146, 72, 36,240,243,243,115,126,246,236, 89,124, 81,252,
-220,172, 70,156,150,252,127,240,224, 1, 46,221,139,131, 88,171,130, 44, 53, 1, 55, 15, 31, 68,159,177,227,193,178,213, 31,173,
-240,224,193, 3, 28, 57,123, 19,198,114, 49, 30, 63,126,132,131, 7, 15,226,211, 79, 63,125, 43,206,106,162, 66, 45,242,143, 20,
- 88,148,210, 75, 40,195, 11,109,237,218, 68, 38,207,195,130,110, 77,157,103, 12,246,175,205,232,115, 18,192,115, 60, 24, 9, 96,
-103, 99,134,159,127,222, 83,115,207,190,125, 55, 26, 58, 75,214,241, 44, 59,247, 97, 50, 45,168,194,179, 23,172,218,119,117,240,
-207,211, 2,196,159,246,168,107, 5, 0, 82,177, 8,107,127,125,196, 2, 88,240, 54, 47,213,202,133, 40,242,244,248,196,193,218,
-124,222,236,143,122, 89, 5, 52,245,194,165, 91,161, 88,119,240,198,101, 89, 10,118, 26,156,169,121, 61, 94,215, 77,101,205, 34,
- 4, 95,249,120, 74,142,163, 14, 82, 99, 75,232, 94, 94, 0,116,106,168, 53, 58,196,166,115,136,205, 80, 67,172,148,226,110,100,
-156,202, 58, 9,199,171,251,206,132, 16,226, 95, 75,225, 52,111,241, 74, 23,181, 42,143,205,201, 76, 99,165,178,155, 18,165,145,
- 60,177, 42, 60, 55,226,168,186,125, 77,105, 19,128,103,100, 10, 90, 48,103,234, 40,227,248,176,211,168, 35, 74, 0,161, 20, 70,
- 62,189, 96,106,196, 72,219,122, 72, 99, 0,192,195,193, 92,246,237,215, 95,152, 79,158,249,117,165, 99,188,124, 9,145,214,111,
-230, 48,217,207,221, 18,151,131, 35,112,249, 97,244,163,203,119, 31,215,235, 80,223, 9, 94, 46, 22,147,124, 9, 89, 22, 70,171,
-110, 17, 45, 76, 24, 22,208,171, 75,102, 17,250,218,147, 97,205, 6,127, 89,230,236,193,242,224, 1,240,145, 28, 5, 97, 24,128,
-136, 10,103, 52,198, 94,131,216,162, 22,221,179,255, 72,193,182,109, 59,191, 9, 75,165,130,213, 74,128,128, 74,144,149,149, 21,
-162, 84, 42,187, 53,104,208, 96,251,196,137, 19, 77, 71,140, 24,225,244,241,199, 31,139, 0, 32, 57, 57,153, 95,179,102, 77,194,
-247,223,127,159,157,150,150, 54, 90,167,211, 61, 52,164,193, 75, 8,185,254,227,143, 63,166, 94,186,116,169, 94,203,150, 45, 21,
- 77,155, 54,229, 44, 45, 45,197,114,185,156,211,106,181,234,200,200, 72,254,217,179,103, 78, 89, 89, 89, 79, 0, 68, 85,167,251,
-190,200, 90,181,144, 97,152,249,148, 82,191,119, 49, 6, 75,169, 84, 58, 2,120, 74, 8,169, 83,213,238,193, 55, 42,108,177, 24,
-153,153,153, 40, 72,122, 4, 69,220, 19, 52, 48, 22,193,215,210, 4,102,102,102,111, 37,134,178,179,179,129,252,120, 92,189,250,
- 0, 96, 89,152,155,155,195,220,220,252, 79, 23, 88,229,105,145,127,186, 5,235, 13,212,179, 35,159, 90,202,176,102,108,175,218,
- 82, 15, 55, 23,104,226,238,226, 65,108, 30,230,182,108, 30,198,200, 77,213, 99,223,239,219, 52,112, 96, 13, 4,180,110, 70, 60,
- 28,205, 39, 45, 91,181,233,179,122,246,228,139, 71,201,116,173, 33, 15,126,148, 66,159,251,216,145,109, 23, 66,226,198,185, 40,
- 85,224,121,138, 11, 15, 19,241,240,101,230,182,240, 20,250,188, 42, 47, 81,207,137,116, 22, 67,180,143, 82,170, 48, 55, 54,206,
-109,212,176,174, 77,231, 86, 13, 69,221,219, 55,133,148, 1,174,222,126,128, 41,171, 14,221,228,121,218, 43,216,192,238,193,194,
- 25,131,175, 10,167,194, 25,131,250, 87,102, 12, 82, 74,105,225, 44,194,138,135,117, 49, 12, 73, 42,136,190,227, 32,177,246,132,
- 42,234, 2, 94,102,242,136, 78,201, 69,142,216, 1,154,248,120,128,242, 49, 23, 41,173,118,110,182,177,177,177,171,233,235, 85,
-123,253,142,131,208, 21,100,227,249,197,237,200,203, 76,196,162, 31,126,173,237,226,226,210, 62, 46, 46,238, 82, 21, 10, 25,175,
-115,199,247,216,129, 2,140, 68,142,223, 54,238, 71,154,181, 17,108,148, 82,240,170, 84,140,157, 60,194,188, 71,151, 17,230, 0,
- 16,253,248, 62,220,149, 42,131,120,117,214, 8, 28,220,193,219, 2,122, 21,118,156,186,175, 22, 1,221,119, 6, 61,138,234, 80,
-215, 66, 49,216,223,221,114, 97, 66,214, 0, 84,211, 25,104,177, 5,171,196,162, 87,141,217,131, 7, 40,229,124,108, 73,212,190,
-235, 41,198, 3,187, 52, 81, 74,197,132,208,188,120, 80, 35, 27,108,218,113, 32, 79,166,199, 22,161,234, 20, 32,192, 48, 20, 20,
- 20, 4, 19, 66,234, 79,159, 62,125,216,156, 57,115,218, 25, 27, 27,215, 4,128,252,252,252,231,122,189,254, 50,128, 61, 85,153,
-237, 87, 36,152,158, 18, 66,158,191,120,241,194, 97,247,238,221,230,248,221, 31,163, 10, 64, 54, 10, 29,102, 86,123, 6, 97,177,
-152, 34,132,204,127,135,162,225, 68, 17,103,157,234,220, 47, 18,137, 56, 66, 8, 8, 33,144,203,229,184,114,229, 10, 6,245,234,
-130,240,223,178,224,103, 97,130,230,163,199, 98,223,153, 51, 96, 24, 6,132, 16, 48, 12, 83,165,122, 68, 44, 22,227,234,213,171,
- 24, 57,116, 32,228, 98,192,220,220, 28,211,167, 79,199,209,163, 71, 33, 22, 11,171,233,253, 33, 2, 11, 4, 11,207,108, 95, 34,
- 5,167,199,177,237, 43,112, 60, 52, 79,251, 56, 21,115,189, 83,177,230, 32,114,249,212, 85, 59,199,157,185, 26,186,252,195, 33,
-189,149, 29, 59,116, 65,199,128, 14,226,122,205,218,207, 3,176,182, 84, 69,221,185, 34, 95, 25, 28,143,111,182,156,138, 24,187,
-239, 98, 36,129, 46, 23, 67,186, 54,163, 28,143,111, 42,169,252,223,224, 52, 55, 50,217,119,245,198, 13, 75,232,242,240,242,254,
-121, 69,141,154,181, 1, 78,135,167, 79,159,224,251, 29,135,249,139,183, 31,255,172,101, 49, 49, 42,131,230, 27,202, 89,168,168,
- 88,152, 27,203,188,123,248,153,159,228, 65, 97,161,148,214,165, 60, 7, 11,165,164,110, 87, 31,227,147,148, 82,106,106, 36,169,
- 75, 57,125,165,156, 42, 45,187,121,199,143,219, 86,142, 25, 51,198, 56, 45, 46, 9, 9, 57,161,200,147, 57, 67,175,116, 69,212,
-253,203,170, 2, 13, 91,105,229, 93, 81,124,166,165,165,165, 4,223,202,192,190, 31,150, 66,175,213, 32, 37,174, 80,163, 38,164,
-229,192,204,198,249, 70, 85, 56,117, 44,159, 29, 56,226, 19,169,145, 41,140, 70, 6,246,150, 69,165,107,208,216,201,180,176,176,
-200, 75, 69,248,217,171, 8,200, 47,212,107,207, 98, 69,112,111,232,100, 80, 56, 77, 21,210,137, 61,154, 56,227,121, 76, 34,174,
- 60,138,223,241, 44,157, 38,212,178, 38, 59,162, 18,178,198,245,109,233,134,213, 71,195, 62, 47, 79, 20,149,199,233,107, 79,134,
- 1,240, 47, 28,228,174, 2, 5,252,125,237,201, 48, 67,102, 14,150,197, 41,150, 98,248,202,147,209, 95, 30,184,147,214,119,198,
-240,182,102,173, 91,247,148,129,213, 34, 87,165,209,135,101,210,156,183, 73,163,183,176, 78, 10,156, 2,231, 63,146,179, 72,236,
-252, 92,180,189, 75,206,248,162,237,157,189,123,233,238, 64, 74,169,184,200,122, 85,225, 32,247,202, 56, 75,119, 7, 82, 74, 79,
- 20, 89,175, 42,180, 98,189,206,201,243,124, 66,211,166, 77,173,250,244,233, 3,142,227,240,228,201, 19, 68,199,198,162,243,184,
-207, 97, 97, 97,129,203, 33, 33,120,252,248, 49,230,207,159, 15,189, 94,143, 35, 71,142,196, 85,198, 41, 22,139,117,181,107,215,
-150,246,235,215, 15, 44,203,226,217,179,103,136,143,143,199,148, 41, 83, 96,110,110,142,224,224,224, 18,206,180,180, 52,136,197,
- 98,221,159,145,151,254, 59, 2, 11,224,192,233,145,125,102, 1,214, 94,129, 78,167, 71,221, 71, 41,180,116,159,246,166, 6,214,
-228, 88, 72,104,196,243,224,107, 29,101, 72,121, 88,120, 79, 21, 16,153, 70, 19,155,185,138,115,161,203, 53,195,179,147,120,145,
-156,155, 23,153, 70, 19,171,250, 18,148,231, 8,116, 5, 64,226, 93, 92,191,124, 9, 23,111, 62,192,157,135, 17,220,245,224,200,
-125, 34, 30,223,132,165,209, 39,213,104,117,192,164,215,106,140,122,248,212,173,153,151,189, 27, 56, 22,148,215,195,124,200, 30,
-140, 14,107,237,214,172,150,133, 91,161,229, 74, 15,203,143,206, 3, 43, 21, 21,242,221,137,209,109,241,175, 41, 31,144,155,149,
-222,178, 83,251, 86,198,230, 62, 61,144,246, 52, 18, 79, 30, 92, 85, 5,135, 70, 93,191, 19,163,123, 43,235,136,179,179,115,187,
- 78,237,189, 49,100,236,108,232, 10,178,241,236,226,143,200,203, 72,194,149, 27, 38,136,200,201,105, 5,192, 96, 11,214,245,104,
-125, 61, 0,240,247,144,198,152, 66,227,240,126,239, 62,144, 19, 53,120, 77, 14, 72, 65, 26,162,226,181,217, 3,126,136,229, 0,
- 64, 41, 39, 98, 99,154,109,102, 8,175,175,187,181,167,146,209, 99,231,153, 71,224,249,194,101,150,120, 30,155,118,158,143, 26,
-247,205,200,198,240,117,179,108, 72,138,156,159, 24, 92,104, 82,180,189,179,239,235,186,234,115,243, 0, 94,135,171,147,172,234,
-182, 93,155,209,182,186,150,176,135,241, 52, 30,192, 56, 31, 39,178,121,210,218, 83,243,154,158, 9,243,159,246, 81, 95, 51, 80,
- 97, 97,116, 1, 2, 4,252,249,200,203,203, 27, 59,122,244,232,205, 18,137,196, 22, 0,225,121, 30, 60,207,139,151, 47, 95, 46,
-225, 56, 78, 36, 18,137, 56,134, 97,216, 19, 39, 78,232, 57,142, 75, 85,171,213, 99, 43,227,100, 89, 54,106,252,248,241,181, 43,
-155,113,184,119,239, 94,136,197, 98, 29,203,178, 81, 66, 74,188, 75,129, 69,241,117,155,145, 11, 22, 0, 32,160,248,234, 53,113,
- 5, 0, 8, 73,167, 9,245,236,200,148,122,205,218, 47, 40,190,167,170, 1, 80,115,220,192,102,245,189,246, 2,128,134,114, 35,
-171,243, 18, 57, 26,213,224, 70,205, 90,237,227, 41, 21,179,148,110, 19,241,248, 69,205, 34,220,144,153,115,229, 33, 33, 37, 43,
-184,120, 1,103, 30,244,247,110,193, 34,119, 12,148, 82, 90,210, 45,184, 66,129,180,108, 77,165,126,156,174, 62,215,116,105,230,
- 38,253, 36,232,218,253,177, 28, 71, 29, 24,134, 36,169,180,236,230,183, 21, 87, 0, 16, 23, 23,119,201,215,142, 4,133, 52,180,
-239,106,163, 44,178,106, 21, 0,105, 5, 8,138, 75,201,189, 84, 29,206,204,124,125,223, 57,107,142,254, 42,147, 48, 98, 80, 90,
-232, 8,148, 82,168,117, 92, 70,177, 8,107, 96, 77,156,166, 31, 97,247, 50, 12,137,174,140,239,214,227,196,213, 67,150,157,253,
-226,209,203,204,109, 47, 50,105, 40, 0,188,200,164,161,117,172,201,188,168,164,220, 47, 66,163, 51, 87, 84,117,220, 4, 37,184,
-210,108,200,130, 55,142,189,109,124,134, 39,208, 7, 0,250,215,179, 35, 93,134, 76,251,126, 26, 33, 16,150,137, 16, 32,224, 63,
-132, 98, 43,150, 72, 36, 90,248, 14, 57, 79, 16, 66,122, 2,120, 90,133,123,110, 1,168,255,142,223, 45, 29, 64,186,144,202,127,
-145,192,122,148, 66, 55,193,128,197,156, 13,189,174,220,251, 19,232, 89, 0,214,111,243, 18, 69, 28, 86,239, 50, 98, 66,146,233,
-188, 63, 34,194,139,196,212, 31, 50,150, 39, 44,133,118, 3, 0, 47, 47, 47,250,228,201, 19,188,173, 23,220,240, 84,250, 0,175,
- 45,185, 80,150,200, 6,208,214, 16,190,200, 52,250, 13,240,102, 23,240,211,116,186, 8,192,162,106,189,115, 53, 61,181, 27,156,
-183, 82,232, 25,160,114,111,250, 2, 4, 8,248,119,138,172, 63,128,243,132, 16,179,255,113,129, 37,224,159,139,200,200, 72, 34,
-196,130, 0, 1, 2, 4,148, 11,238, 15,224, 20,156, 14, 11,120, 5, 34, 33, 10, 4, 8, 16, 32, 64,128, 0, 1, 2,222, 45, 8,
-128,206,101, 74,241, 42,204, 14, 32,132,116,174,178,212,175,132, 95,224, 20, 56, 5, 78,129, 83,224, 20, 56, 5,206,127, 31,103,
-101,220,255,154,217,137,180,212,224,229,119,189, 1,232, 44,112, 10,156, 2,167,192, 41,112, 10,156, 2,167,192,249, 95,219,132,
- 46, 66, 1, 2, 4, 8, 16, 32, 64,128,128,119, 12, 65, 96, 9, 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, 80,125,144, 42,174,
- 76, 34, 64,128, 0, 1, 2, 4, 8, 16, 32,192, 16,129, 85,180,190,110,241, 58,187,130, 23,112, 1, 2, 4, 8, 16, 32, 64,192,
-159, 43, 72,254,101, 90, 68, 16, 88, 2, 4, 8, 16, 32, 64,128, 0, 65, 96, 9, 2, 75,128, 0, 1, 2, 4, 8, 16, 32, 8,172,
-191, 55,138, 7,185, 7, 16, 66, 40,128, 0, 33,137, 5, 8, 16, 32, 64,128, 0, 1,127, 1,254, 85, 90,164,100,144,187, 96,189,
- 18, 32, 64,128, 0, 1, 2, 4,252,165,162,228, 95,164, 69,132, 89,132, 2, 4, 8, 16, 32, 64,128, 0, 1,130,192, 18, 32, 64,
-128, 0, 1, 2, 4, 8,248,123,227, 15,117, 52, 74, 8,233, 44,112, 10,156, 2,167,192, 41,112, 10,156, 2,167,192, 41, 8, 44,
- 1, 2, 4, 8, 16, 32, 64,128, 0, 1,130,192, 18, 32, 64,128, 0, 1, 2, 4, 8, 16, 4,150, 0, 1, 2, 4, 8, 16, 32, 64,
-128, 32,176, 4, 8, 16, 32, 64,128, 0, 1, 2, 4, 8, 2, 75,128, 0, 1, 2, 4, 8, 16, 32,224, 47, 2, 1, 80,230, 76, 0,
- 74,233, 89,131, 73,170, 49,155,160, 50,126,129, 83,224, 20, 56, 5, 78,129, 83,224, 20, 56,255,125,156,149,113, 87, 69,127,252,
-173, 65, 41,253,195, 54, 0,157, 5, 78,129, 83,224, 20, 56, 5, 78,129, 83,224, 20, 56,255,107,155,208, 69, 40,192, 80, 43,165,
- 61, 33,196, 94,136, 9, 1, 2, 4, 8, 16, 32,160,114,136,223, 37,153, 15, 33, 29,199, 55,176, 63,240,217,131, 36,171,202,174,
-181,179,179,219,172, 84, 42, 71, 20, 20, 20,228, 19, 66,248,210, 22, 53, 0,165,221,203, 63, 75, 73, 73,105, 91, 25,159, 92, 46,
- 95, 99,111,111,255, 81, 94, 94, 94, 1, 33,132, 18, 66, 64, 8, 41, 22, 7,175,252,114, 28, 23,151,150,150,214,244, 31, 45,120,
- 0,198,198,222,254,182,132, 97,156,171,122, 47,199,243, 47,146,147,146, 90, 85, 65, 92, 45, 37, 4, 51,138,254,127, 71, 41,157,
-253, 47, 84,144,140, 33,151,249, 1,166,145,192, 16, 78, 36,250, 92, 2,108,208,240,252, 15, 69, 25,151,171,238,163,181,183, 73,
-109, 66,209,144, 16,152, 83,138,108, 74,240, 64,214,156, 70,253, 69, 66,186,165, 68, 34, 25,108,105,105,105,154,146,146,114, 14,
-192,175, 0,222,179,179,179,235,148,153,153,153,171,215,235,247, 83, 74,111, 86,135,187, 93, 35, 50, 83, 38,149,124,168,214,233,
-191,189,122,159,254, 24,208,132, 88,179, 60,150, 41,164,226,182, 26, 45,251,221,149, 7,116, 91, 21,195, 74, 94,179,198, 87,121,
- 89,138,131, 6,166, 59, 0, 28,177,180,244,146,219,154,157,147,200,152, 23, 89,201,121, 35, 6,166,164,196, 14,124,139,116,255,
- 59,194,214,214,118,148, 72, 36, 90, 76, 41, 5,199,113,115,211,211,211,183,191,163,124, 53, 12,128,113,209,110, 62,165,116, 79,
- 21,238,141, 6,224, 86,180, 27, 67, 41,117,175,232,184,128, 42,167,205,166,195,135, 15,143,235,208,161, 3, 86,175, 94,141, 77,
-155, 54,189, 76, 77, 77, 93, 6, 96, 7,165, 84,251,103,243, 8, 2,171, 12,248, 18, 82,127, 76,247, 86,191,141, 29,212, 93,102,
-192, 71,252,191,238,221,187,143,220,177, 99,135, 36, 50, 50,210,200,195,195, 3, 34,145,168, 68, 0,149, 46, 39,107,212,168,193,
- 87,198,199, 48,204,218,254,253,251,143, 62,120,240,160, 50, 56, 56, 88,233,227,227, 83,194,199,243, 60, 94, 47,119, 61, 60, 60,
- 42,228, 51, 55, 55,191,203, 48,140, 75, 89,226,172,188,255, 28,199,197,165,167,167, 55, 53, 32, 19,118, 3, 48,203,128, 40, 93,
- 70, 41, 61, 93,209, 5, 18,134,113, 78, 72, 72,176,171,106, 90,185,186,186,234,170,240,209,216, 19,130, 25, 60, 79, 69, 0, 32,
- 18,145,153, 70, 70, 70,155, 84, 42, 85,108,241,249,162, 52, 75,174, 74, 24, 92, 92, 92,122,240, 60, 63,172,144, 83,180, 39, 46,
- 46,238,100, 85,238, 55, 51, 51,187, 43,147,201, 92,196, 98, 49, 41, 43, 93, 94,223,231, 56,142,234,116,186,184,140,140,140, 42,
- 11,235, 75, 0,233, 14,180, 99, 25,102,178,181,141, 77,219,224,160, 32, 99, 63, 63, 63, 17,195, 48,179, 1,252,240, 54,223,141,
-246, 54,169,205,233, 49, 72,165,151,247,150,187,127,229,165,137,254, 42,210, 72,162, 57,174,189, 77, 14,252,217, 34,139, 16,210,
-253,131, 15, 62, 88,242,237,183,223,218,200,100, 50,209,254,253,251, 91, 77,153, 50,229,195,213,171, 87, 59, 15, 30, 60,216, 84,
-171,213,242, 51,103,206,108, 71, 8,249,154, 82,122,180, 42,220,173, 27,145,150,222, 30,142,243, 39,140,232,136, 47,150,238,157,
-224, 95,159,164, 25, 25, 75, 55, 13,104, 91,219,162, 94, 77, 75,124,189,249,250, 68, 0,219,170, 16, 86, 34,145, 72, 26, 57, 56,
- 56,120,104, 52, 26,174,168,209, 70, 75,149, 9, 0, 0,141, 70,163,203,204,204, 60,241,182,113,243,133, 66,209,162,133,133,201,
-153, 5,195, 62, 48,202,201,204,176, 95,251,219,175, 33, 7, 97,215, 96, 32,240,242,223, 84, 33,136, 68,162,197,241,241,241,142,
-148, 82, 56, 58, 58, 46, 6,176,253, 29, 81, 27, 23,151,195,132, 16,227, 42,222,235, 86,234, 94, 55, 3,142, 87, 39,239, 43,196,
- 34,209,120,153, 68,210,149,227,184,250, 69,121,232,161, 86,175, 63,195,242,252, 6, 74,169,250, 95,172, 3,102,140, 27, 55,174,
-203,156, 57,115, 60,102,204,152,129, 25, 51,102,212,216,186,117,235,230, 37, 75,150,204, 36,132, 52,160,148,230,253,201, 60,130,
-192,122, 77, 92,185,118,107,228,117,241,243, 15, 6, 73,249,131,107, 8, 70,125, 89,161,184,106,213,180,233,135, 59,118,236, 0,
- 0,140,232,219, 23, 93,155, 55,135,169,137, 49,100,178,194,224, 16, 74, 32,149, 72,209,111,202, 84, 67, 62,140,239, 2, 3, 3,
-135, 31, 60,120,208, 4, 0, 54,109,218,132,192,192, 64, 88, 89, 89, 65,169, 84, 66, 42,149, 66, 34,145,188,242,107,128, 96,115,
-137,143,143,183, 83, 40, 20, 37,130,143,231,249, 87,182, 82,253,208, 96, 89, 22,158,158,158,134, 70,215,172,236,236,236,118,249,
-249,249, 21,246,221,214,172, 89, 19, 0, 78, 27, 66,184,120,209, 55,224,217,124,136,197, 0,203, 2, 26,157, 8,124, 25,109,121,
- 39, 39, 39,140, 31, 63, 30,111,179,254,100,239,222,125, 64, 41,221,228,236,236,124, 60, 57, 57,217,143, 16,140,173,142,101,139,
- 82,250,254,211,167, 79,149, 60,207,195,219,219,123, 36,128, 42, 9, 44,177, 88,236, 18, 18, 18, 98, 39,151,203,203,181, 84,150,
- 18,191,208,233,116,104,220,184, 49, 91,149,103,216, 3,110, 25, 34,209,199,141,154, 52,249,100,126,223,190, 70,119,239,222,149,
-139, 68, 34,176, 44,139,229,203,151,179,148, 82, 11, 95,192, 44, 12,200,169, 32,127,206, 1, 48,170,200, 42,187,141, 82,186,252,
-149,243, 20, 13, 85,122,121,239,103,121,253,154,183,168, 49, 19, 97,143, 30, 54,175,101,114, 4,166, 98, 77, 20,128, 63, 85, 96,
-153,155,155, 15, 92,189,122,181,237,182,109,219,114, 30, 63,126,172,251,225,135, 31,108,199,142, 29, 91, 87,167,211, 97,220,184,
-113,169,222,222,222,210,213,171, 87,219, 30, 62,124,184, 27,128, 42, 9, 44, 49,193, 55, 67,251,118,133, 90, 47,130, 94,207,218,
- 58,218,154,254, 60,233,131, 0, 9,165, 90,236, 60, 26, 12, 61,203,255, 88, 69,203, 85,163, 1, 3, 6,184,239,217,179, 71, 28,
- 30, 30, 46,246,241,241, 1,199,113, 37, 27,207,243,224, 56, 14, 94, 94, 94,111, 29, 47, 31, 2, 94, 54,246, 86,103, 90,245,236,
- 97,228,168,144,195, 42, 51, 21, 99,164, 98,211,237, 74,205, 46, 0,173,255, 77, 21, 2,165, 20, 98,177, 24,177,177,177,176,179,
-179, 51,178,178,178, 74, 4,240, 85, 70, 70,198,150, 63, 72,212, 87,219,178,245, 14,195,208, 92, 38, 22,255,178,243,199,181, 14,
- 45, 90,183,102,236, 29,237, 16,249, 36, 6, 98,194,117, 14,185, 19, 28,240,225,167,211, 38, 17, 66, 6, 80, 74,111,255,219, 4,
-128, 99,155,207,250, 59,250,127,190,137, 80, 30, 95,175,255, 53,119,233,119,107,148,227, 62,254,128,153, 50,101, 10, 92, 93, 93,
- 61,250,247,239,255, 29,128, 79, 43,229,105,249, 89,127,135,214, 19, 54,129, 82, 44,248,254,215,220, 37,223,173, 81,126, 90, 13,
- 30, 65, 96,189, 6, 63, 66, 44, 26,184,219, 95, 90, 52, 99,172, 9, 61,249,147,168, 32, 61, 5,229, 73, 24, 59, 59,187,205, 61,
-122,244, 24,177,125,251,239,141,162, 86,126,126,232,223,209, 31,118,214,230, 80, 26,203, 10,171, 33,158,224,193,227, 23, 6, 9,
- 1, 87, 87,215,113,191,252,242,139, 73,105, 17, 33,149, 74, 75,182,210,226,170,120,123,221,210, 81, 22, 20, 10, 5,206,158, 61,
- 11,177, 88, 12,134, 97, 32, 22,139, 75,182,210,251, 12,195,192,222,190, 74, 67,147,150,153,155,155, 55,200,205,205, 53,203,202,
-202,130,155,155, 91, 14,128,144, 82,231, 27,164,166,166,154, 85,133,144,103,243, 49,101,140, 15, 36,218,155,208, 74,154, 67, 37,
-110,131,235,119,194,113,252,244, 37,196, 39, 36,193,191,101, 35,188, 63,108, 32,206,156, 57, 3,142,227,170, 90,224, 38, 19, 66,
-190,123,239,189, 62, 51, 1,130,128,128,128,228, 73,147, 38,209,208,208,208,254,131, 6, 13,236,244,228,201, 83, 82,100,217,154,
- 65, 8, 89,107,168, 37,139, 82, 42, 5,128,203,151, 47,131, 82, 42,171, 78,222,147,203,229,184,113,227, 6,138,187,131, 69, 34,
- 17, 68, 34, 17, 24,134,193,177,167, 54,200,215,138, 80,144, 28,138,207,123,187,161,102,205,154, 16,137, 42, 31,114, 24, 0, 40,
-174, 3,253,137, 68, 50,197,209,201,201,163,125,173, 90,202,179,103,207, 50, 0,224,238,238, 78, 19, 19, 19,179,142, 28, 57,146,
- 43, 6, 54,185, 83,186,163, 34,113,229,230,230,214, 70, 36, 18, 45, 46,142,115, 66,200,119, 30, 30, 30,243, 75,210,141,231, 49,
-172,139,149,100,210,164,201,210, 22, 1,133,141,146, 22,125,246, 32,231,217, 82, 31,146, 49,199,252,207, 46, 12,178,179,179,127,
-246,242,242, 98, 82, 83, 83,207, 3,120,174,215,235,215,255,252,243,207,118, 99,198,140, 73,217,181,107,215, 4, 0,174,203,151,
- 47,239,150,151,151,183,175, 42,188,109, 27,146,158, 77, 27,249,181,116,115,117,197,165,235,183, 33,149, 73, 44,198,143,234, 13,
- 19, 19, 49, 86,108,251,141,143,142,203,152,112,229, 1,221, 81, 5,113,213, 96,224,192,129,174,123,246,236,145, 2, 64,104,104,
- 40, 82, 82, 82, 96,109,109, 13,133, 66, 81,242,205, 23, 91,177,222, 86, 92,153,187, 90,223, 58,114,228,168,145,149,149, 5,214,
- 79,157,132,247, 19,226, 96,198,136,160,215,195,227,223, 84, 25, 16, 66,188, 6, 12, 24,160,224, 56, 14,249,249,249,184,120,241,
-162,185,145,145,145,185,139,139,203, 2, 0, 6, 11, 44, 35, 35,163,100,181, 90,109, 87, 84,142,166,168, 84, 42,123, 0, 5, 10,
-133,194,168,232, 18, 85, 21, 45, 91, 49,165, 44, 84, 49, 6, 28,175,202, 59, 55,107,222,172,193,217, 67, 7,119,155,100,231, 38,
-193,194, 50, 5, 34,100, 99,203,150, 13, 48, 50, 50,195,130, 5,115,196, 47, 58,119,116,238,214,115,192, 89, 66, 72,231,127,157,
-200,162,100, 75,231, 62, 35,172,140,148,166, 69,117,137, 30,219,183, 78,130, 72, 36,194,252,249,243, 81,175, 94,189, 79, 8, 33,
- 95, 82, 74, 51, 42,166,193,150,250,237, 6, 91,201, 20,133, 85, 49,207,233,241,195,222, 47, 10,121,102,143,197,208, 62, 53, 63,
-121,176,139,156,170, 87, 11,185,133,229, 63, 84, 18, 17, 98,208,156,166,148, 74,139,246,148,210, 75,229,237,255, 35, 5, 22, 33,
-132, 82, 74, 75,119,179,188,178, 95, 17,106, 16, 34,247,180, 52, 57,189,241,171, 73, 78,204,141,223,196,170,152,167, 72, 80,115,
-176,248,189, 18,125,101,170,165, 82,169, 28,177,125,251,246, 87,244,151,155,189, 29,164, 82, 9, 36, 82, 2,139,182,189, 1, 0,
- 89, 87,142,131, 16, 90, 94,197,252, 10,103,126,126,190,250,254,253,251, 38,219,182,109,131,157,157, 29, 60, 60, 60,160, 84, 42,
- 75, 10,218,210, 91,177,208,122, 93, 96,189,206, 89,124, 94, 44, 22, 67, 36, 18,225,204,153, 51, 96, 89, 22, 3, 7, 14,124, 67,
- 92,137,197,226, 50, 5, 91,121,211, 76, 41,165,167, 9, 33, 33,148,210,118, 69, 21,111, 8,165,180,125,169,103,119,179,181,181,
-157, 5, 96,153,161,156, 12, 67,193,168,175,131,119, 89, 3,113,236, 36,104, 37, 13,113,225,106, 48,182,111, 94, 13, 0,240,168,
-219, 12,131,250,247, 46,177,190, 25,194,249, 74,235,196,209,113, 71, 74, 74,106,227, 14, 29, 58, 32, 59, 59, 91,187, 96,193, 2,
- 52,104,208, 0, 94, 94,222, 6,165, 81, 57, 5, 91,218,131, 7, 15, 28,213,106, 53, 8, 33,105, 6, 8,178,179,101,112,224,231,
-159,127,134, 90,253,166,245,222,178,253, 18,124, 17,232,142,209,159,239,192,119,143,247, 99,227,198,141, 21,190,187, 18,104,160,
- 54,175,179, 86,198,176, 13,190,157, 59, 65, 62,114,228, 72,102,244,232,209,136,137,137,193,152, 49, 99,212,103,206,156,209, 38,
- 37, 38, 30,149,241,252,122,221,171,130,184, 92, 78,185, 92,190,243,244,233,211,216,191,127, 63, 0, 32, 50, 50, 18,158,158,158,
-175, 84, 34,124,198, 1,228, 70,175,199,173, 99, 17,104,209,103, 15,110, 29, 27, 6, 46,235, 55, 73, 83, 79,100, 87, 37, 62,171,
- 97,169, 56, 91,198,177,139, 0, 46,150,138,223, 47,119,237,218, 53, 8,192, 33, 74,233,117, 0,215, 1,236,173, 10,103, 33, 17,
- 70, 15, 14,236, 7,177,212, 20, 17, 79,227,208,190, 85, 99,216,219,217, 33, 36, 60, 10,209,241, 25,201,132, 96, 84,247, 54,242,
-101, 42,149,246,203,203,247,233,255, 42,227,116,117,117,173,121,224,192, 1, 73, 41,139, 51, 24,134,121,165, 65, 85,124,172,186,
-249,179, 88, 92,153,186,152,220,250,102, 67, 27,227, 91, 15,119,193,211,189, 39,204,186,245,196,170,189,123, 16,151,150,173,102,
- 11,216, 78,127,118, 26,253, 81,156,132, 16,175,192,192,192,235,187,119,239,182,136,141,141,197,229,203,151,225,225,225,129,130,
-130,130, 74, 27,186,175,115,170,213,106,187, 82,162,169,120, 8,195, 94,141, 70, 83, 92, 80,210,170,132,179,188,177, 85, 85, 29,
-115, 85, 70, 57, 47, 83, 72,165, 7,142, 28,218,107, 18, 22,113, 25,141, 26,182,132,137,185, 47,120, 46, 9,233, 25,121,200,124,
-154,128, 69,139,190,195,130,175,230,226,215,195, 7, 77,188,125, 26,254, 66, 8,169, 83,186,187,240,159,158,238, 32,244,147,179,
-199,118,109, 34,148,135, 42, 57, 66, 46,201,127,174, 28, 49,108, 0, 51,100,200, 16,252,250,235,175,120,244,232,209,166,242,196,
- 85,105, 78, 66,241, 73,232,229,253,155, 64, 41, 84, 41, 17,114,169,234,185,242,131,225,131,152,247,135,118,197,205,243,107,209,
-181,209,243, 80, 39, 59,244,207, 44,234, 36, 20, 51, 72,151, 43,112,205,232, 54,185, 89, 74,100, 93, 44,106, 67, 21, 11,171,139,
- 40,116, 37,245,207,183, 96, 85, 69, 88, 21, 93,207, 52,145,137, 15,253,184,224, 51, 63,197,203, 80,169, 38,244, 6, 18, 52, 60,
-221, 22,195,102,174, 41,231,158,130,130,130,252,168,168, 40,163, 81,253,251,163,181,159, 31, 28,173,173, 81,199,197, 5, 70,114,
- 25,100, 82, 73,169,242,184, 74, 45, 16,234,237,237,141, 62,125,250, 64, 34,145, 64,169, 84,194,196,196, 4, 50,153,172, 76,235,
-149, 68, 34, 49,216, 84,206, 48, 12, 66, 67, 67, 17, 29, 29, 13, 11, 11, 11, 92,187,118, 13,157, 58,117,122,195,138, 85, 90,148,
- 85,197, 20,255,122,133, 95, 44,192, 96, 96,215, 96, 49, 56,142, 32,143, 54,132,226,229, 4, 20,144,198,208,104, 88,104, 52, 26,
-252,239,170, 14,183,163,242,161,211,105,161,209,104,202,125,102, 69,214, 2, 7, 7,135,254,117,235,214, 29, 49,108,216, 48,173,
- 68, 34, 65, 65, 65, 1, 10, 10, 10, 16, 30, 30,174,237,218,181,107,242,123,239,245,177, 63,126,252, 56,165, 20,223, 85,101, 28,
- 22,165, 52,211,201,201,201, 81,161, 80,128, 82,154, 89,205,214,103,137,120,121, 29,163, 86,133, 65,204, 20,166,201,166, 77,155,
-192,113, 28, 42,202,223,106, 66,206,125,181,100,165,249,183,107,126,132,185,149, 61, 46, 93,186,196,157, 58,117, 42,151, 0,145,
- 79, 30, 61, 90,245, 30,112,226, 0,160,171, 74,248, 50, 51, 51,141, 60, 60, 60,224,226,226, 2,158,231,161,215,235, 17, 18, 18,
-130,164,164, 36,164,167,167, 67,165, 82,193,202, 56, 11,181,173, 93,192,230, 94, 68, 98,232,215,112, 52,137,192,142,211, 90,125,
- 19, 47, 60,248,203, 27,183,148,158, 0,112,226,237,137,224,108,231,224, 10, 17,213, 35, 33, 37, 29,253,122,117, 5, 35, 53,193,
-139,216, 52, 52,244,173,229, 56,252,189, 54,142, 12, 97, 49, 99,217,158,241, 0,254, 87, 25, 93, 65, 65, 1, 23, 30, 30, 46,121,
-240,224, 1, 24,134,129,153,153, 89,201,112,128,210,226,202,144,225, 0,149,137,171, 37,155, 58, 25,139, 36,249,200,225,206,226,
-135,159,110,194,211,173, 19,182, 71, 60, 81,139,179,242, 58,175, 80,171, 35,255,209,221, 67,142,142, 99,121,158, 95, 64, 41,205,
- 10, 12, 12,180,223,179,103,143,101,124,124, 60,130,131,131, 49,127,254,252, 84,142,227, 88, 74, 41,161,148,126,253, 14,242, 18,
- 95,218,178,101,100,100, 84,108,217,202, 47,101,185,202,175, 70, 25, 32, 81, 42,240,185,141, 25,233, 43, 22,153,121,176, 57,121,
- 47,210,180,244,104, 1,203,127, 79, 41,213, 87,116,175, 72, 36,250,232,224,190, 77, 78, 54,182, 60, 2,108, 59, 34, 49, 89,135,
- 37, 83, 63, 64,122,122, 46,254,183,117, 41, 0, 25,116, 44,131,118, 1, 3, 96,103,231,140, 79, 62,254,196, 97,211,230, 31, 62,
- 3,176,226,223, 98,192, 74,188,182,225, 48, 33,228,172,173,173,237,163,207, 62,249,196,214,195, 99, 36, 20, 10, 5,246,238,221,
-139, 61,235,215,115,107,128, 65,155, 9,185, 48,150,210,195, 21,242,220,252,157,103,210,184,113,182, 62, 62,227, 32,151,203,113,
-254,212, 79, 80, 39,253,156,219,171, 53,116, 5,106,244,170,209,135, 90,189, 60, 70, 50, 36, 18, 60, 5, 0,137, 2,137, 18, 32,
-229, 53,186,127,188,176,122, 67, 96, 85, 21,181,164,202,235, 91,167, 14,110,108,203,171,196,218,171,199, 16,175,225,217,229, 79,
-117,186,187, 89,116, 68, 5, 25,154,119,115,115, 67,199,166, 77,209,191,109, 91,136,197, 98, 40,100, 82,152, 42,140, 64,185, 66,
-203, 85,113, 23,161,161, 90,175, 88,216, 88, 91, 91, 67, 42,149,150, 8, 43, 67,173, 87,229,113,242, 60, 15,177, 88,140,144,144,
- 16,248,251,251,195,213,213, 21,251,247,239, 71,183,110,221,222,232, 50,172,170,184, 42, 22, 88,165,187,235, 74, 13,126,175,116,
-112,251, 27,226, 64, 75,144,166,109, 8, 66,252,192,178, 0, 71, 1,141, 90, 13, 74, 1, 74, 1,189, 78, 11,181, 90, 93,242, 76,
- 67,186, 94, 93, 92, 92,156, 60, 60, 60,166,206,154, 53,163, 78,131, 6,141,144,150,150, 6,158,231, 97, 98, 98,130,130,130, 2,
-152,153,153,161,117,235,214,247, 22, 47, 94,156, 65, 41,102, 85,117,144,251, 59,232,206, 0, 0, 4, 5, 5,189,210, 61, 88,188,
-229, 39,198, 97,244,196, 93,144,137,129,144,144, 16,212,173, 91,183, 50,113, 41,234,208,174, 13,174,223,139,100,199, 76, 95,163,
-145,164, 7, 47,115,224,249,237,113, 64,242, 91, 84, 42, 72, 75, 75, 67,114,114, 50,250,246,235,135, 61,187,119,227,229,203,151,
-240,245,245, 69,135, 14, 29, 96,103,103,135,151, 47, 95,226,246, 21, 13, 52,153, 25,200,208, 6, 67,105,218, 2, 71, 46, 69,105,
-230,109,212, 70,253, 85,133, 2, 33,164, 25,128, 49,230,230,230, 53, 10, 10, 10,146,244,122,253,254, 34,209,223, 77, 34,145, 12,
- 86, 42,149, 14,217,217,217, 47, 1,252,143, 82,122,167,210, 46, 35,133,194, 90,174, 48, 3,207,106, 32, 22,139,225,234,234, 1,
-202,105,145,153,163,194,168, 33,125,112, 47, 36, 28,167, 46,220,100,245,122,126,157,161, 97,244,242,242, 66,122,122, 58, 24,134,
-129, 82,169,132,177,177, 49,188,189,189, 17, 27, 27, 91, 34,174,170,219, 69,248, 33,224,101,230,102,114,115,241,134, 66,113,149,
-148,144,136,248,151, 20,114,153, 12,155,183,108,202, 47, 72,202,108,241, 35, 16,249, 79, 47,252,121,158,255, 58, 62, 62,222, 78,
- 44, 22, 59,176, 44,139,216,216, 88,220,189,123, 23, 19, 38, 76, 72, 78, 79, 79, 15,160,148, 86,235, 29, 21, 10, 69, 74,177,229,
- 74,161, 80,164, 84,100,217,122,155, 49, 87,132,144, 90, 30, 46,166,103,182,174,158,226,214,172, 69,107,145, 82,108,150,153,247,
- 52,201,255,234,229, 75,173, 39,172,254,223,103,132,144,174,148,210,103,229,221, 47,151, 72,122,180,108,211, 70, 12,154, 12,177,
-204, 31,223,125, 59, 4,169,105, 57,200,204,200,133, 84,106, 12,173,158, 1,199, 19,180,246,111,139,159,118,236, 67,189,143,199,
- 48, 50,137,164,203,191, 73, 96, 21, 97,233,247,223,127,239,230,237,237,141,237,219,183,227,194,206,157,120, 63, 59, 27,151, 68,
- 34, 70, 47,145,216,156,208,235,183, 0, 56,108, 40, 79,189,122,245,240,227,143, 63,226,231,159,127,142, 25,209, 41,229,151, 41,
- 35, 96,167,211,161,123,240, 99, 88,213,232, 3, 4, 63,134, 85, 19,111,212, 97,197,120, 74, 8,140, 94, 75,211,246,165,127,255,
- 13, 2, 43,128, 20,246,199,149,252, 86,118,147,177,189,247,176,221, 35,187, 52,245,173,233, 34,210,239, 95,139,248, 2, 86, 61,
-255,177,142,127,156, 75, 7,132, 85, 32, 14, 68, 34, 17,101, 24, 6,166, 70, 70,176,181,176, 40,108,105,138, 68, 0, 15,240,122,
-128,112,133, 31, 31,229, 9,170, 50,249,153,231,121,200,100,178, 50, 7,180, 87,117,236, 85,105,206,220,220, 92,188,120,241, 2,
-159,124,242, 9,148, 74, 37, 0, 32, 41, 41, 9,238,238,238, 16,139,197,136,143,143,199,249,243,231, 81,179,102, 77,200,229,242,
- 42,169,172, 82,214,164, 6,132,144, 75, 0, 26, 36, 38, 38,154, 57, 58, 58,162,202, 22, 44,158,162, 64, 67,160,213,114,120,242,
-228, 9, 18, 18, 18,240,226,249, 83, 52,203,207, 1, 5, 3, 74,105,149, 44, 88,142,142,142,222,158,158,158,139,151, 46, 93, 42,
-113,117,117, 5,207,243,176,178,178, 64,126,190, 10,233,233,233,240,245,245,133,171,171, 43,190,251,238, 59,160,176,251, 40,249,
-175,202,192,197,179, 69, 75,255,138, 68, 34, 76,124,207, 13, 25, 25, 38, 96,152,223,103,147, 86, 50, 6, 75, 10, 0, 1, 93, 3,
-197,103, 78,157, 48,102,129,133, 73, 12,179, 80, 92,121, 58,234, 57,158, 87,150,119, 62, 54, 54, 22, 18,137, 4, 7, 15, 28, 64,
- 70,114, 50, 26, 54,108,136,230,205,155,227,233,211,167,184,119,239, 30,172,173,173, 97,235,210, 10,151,158,235, 16,150,160,130,
-185,185, 57,162,226, 68,127,217,212,127, 66, 72,239,206,157, 59,175, 95,181,106,149,131,131,131,131, 36, 53, 53,149,221,176, 97,
- 67,183, 13, 27, 54,132,125,246,217,103,190,159,125,246,153,165,173,173,173, 56, 41, 41, 73, 63,117,234,212,110,132,144, 89,148,
-210,189, 21,150, 23,198,166, 86,140,212, 24,132,136, 97, 97,110, 9,177,204, 24, 60, 43, 6,199, 3,102,230,182,184,126,239, 32,
-174, 61,204, 29,155,146,142, 3, 6,124, 55,212,218,218,154, 50, 12, 3,107,107,235, 87,186, 6, 1,192,222,222, 30, 57, 57, 57,
- 96, 24, 6, 18,137,164,202, 34,171, 88, 92, 45,217,208,201,132,148, 18, 87,121,105,214,184,112, 58, 60,171, 32, 41,211,255,223,
- 32,174,138,203, 56, 74, 41,158, 63,127,142,130,130, 2, 92,185,114, 5, 95,127,253,117,234,235,226,202,222,222,254, 99, 51, 51,
-179,175,242,242,242,190, 75, 76, 76, 92, 91, 25,111,145,101,234, 93,230,201,104,188,230,142,129, 16, 34,113,117, 84,156,190,119,
-101,151,187, 57,125, 64, 16,253, 9,240, 36,231,145,233, 45,187,118, 61,155,245, 18, 53,222,248, 77,141,230, 99,103,159, 38,132,
-120,151,103,201,226, 57,174,177,177,137, 41,128, 20, 4,223,189, 88, 34,174,210, 51,178,161,209, 49,208,104, 9,212, 58, 17, 58,
-118,238,142,245, 63,252,140,248,148, 12, 20,207, 48,252,183,128, 16, 98,229,231,231, 55,110,208,160, 65, 88,184,112, 33,206,174,
- 90,165,253,148,144, 28, 49, 64,127,227, 56,240,148, 18,145, 1,131,211, 95,231, 89,177, 98,197, 97, 0, 67,151, 77, 64,171,204,
- 60,140,114,234, 67,173,106,244, 41,188,118,224, 76, 10, 0, 86,169,103,223, 24,170, 67,138,123,210,170,218,163,246,183, 21, 88,
-148,210, 75,132, 16,148,254,173,232, 6, 11, 7,239,246, 95,206,156,180,166, 77,223,206,162,164, 79,253,145,149,163,209,206, 12,
-215,139,226, 10,104,255, 48, 3, 45, 47,211, 55,108,192,189,200,194,239,215,197,206, 14, 51,134, 15, 7,101,129,107,143,194,176,
-239,236, 89, 12,233,220, 25,198, 69, 51,248, 12,181, 54,149,101,181, 42,109,189,170,170,149, 41, 43, 43, 11, 7, 14, 28, 64,243,
-230,205,161, 84, 42, 33, 22,139,209,160, 65, 3,132,135,135,163, 86,173, 90, 32,132,224,200,145, 35,232,223,191, 63,158, 61,123,
-134, 86,173, 90,153, 84, 71, 96,133,133,133,153, 81, 74,219, 21, 91, 59,170, 11,141, 70,131,136,136, 8,244,233,211, 7,150,150,
-150,112,118,222,131,179,167,119, 65,233,247, 62, 8, 65,149, 4, 22, 33,100, 96,175, 94,189, 36, 34,145, 8, 42, 85, 1,228,114,
- 5, 76, 76,204, 96,106,106, 14, 47, 47, 47, 36, 36, 36,160, 91,183,110,186, 39, 79,158,252,156,152,152,248, 91, 85,195,106,111,
-111,175,204,205,205,157,228,225,225,161, 40,106,229,118,180,177,177, 89,146,150,150,150, 87,197,194,161, 68, 88, 17, 66,192, 48,
- 76,137,192, 18,139, 68,112,116,176, 43,217, 47, 26,127, 70, 42,224,202,137, 79,215,200, 1,192,205,205, 13,235, 55,255, 42,234,
-213,171, 23, 38, 77,154, 4,189, 94,143,141, 27, 55, 2, 0,134, 13, 27, 6,157, 78,135, 95,126,249,165,240, 3, 18,139, 43,236,
-115,190,123,247, 46,130,131,131,161,215,235,145,157,157,141,147, 39, 79,226,210,229,203,216,123,228, 28, 94, 62,127,138, 6,222,
-238, 24, 51,230, 67, 72, 36, 18,236,216,177, 3,254,254,254,127,105,129, 32,149, 74, 63,216,186,117,171,243,246,237,219,179,142,
- 30, 61,154,221,162, 69, 11,227, 53,107,214,216,173, 95,191,190,131, 86,171,197,228,201,147, 83,110,221,186,149,223,183,111, 95,
-243, 45, 91,182, 56,215,169, 83,231, 61,148, 49, 46,171,168,219,103, 8,128,145, 1,205,205,197, 89,185, 42,240,172, 22,207, 95,
-190, 64,118,158, 22, 60,167, 67, 76, 92, 2,242,212, 28,210, 51,114,209,160,113,215,239, 47, 94,188, 56,151, 16, 50,135, 82,122,
-188,210, 70, 5,199,225,230,205,155,184,118,237, 26, 46, 95,190,140,232,232,232,146,115,102,102,102, 56,115,230, 12, 58,116,232,
-240, 78,196, 85,110,106,161,184,202,138,201,248,215,136,171,162, 50,104,129,163,163,227, 2, 71, 71, 71, 69, 80, 80,144,121,141,
- 26, 53,192,178,172,246,117,203, 85, 64, 64,192,151, 91,183,110,117,172, 85,171,214, 4, 0,107,171,251,188,242, 44, 91, 6,224,
- 13,119, 12, 34, 17, 62,254,110,211, 56, 27, 83, 89, 76, 2,158,172, 44,242, 5,200, 0, 5, 57,192,197,221, 16,183,153,247, 98,
- 66,191,153,150,179,182, 47,252, 24,192,198,242,136,163,158,197, 98,211,166,245,152, 50,121, 20,126,250,223,119,224,121, 49, 52,
-122, 6,110, 30, 45,161,209,241, 32, 34, 49, 26, 54,110,138, 11, 23,175, 64, 34, 2, 14,108,223,244,175, 50, 93, 81, 74, 51, 8,
- 33, 27,143, 28, 57,242,249,164, 73,147,192,243,188,236,171, 77,155, 84,169,169,169, 75, 81, 5,255, 85,101,240,244,223,180,105,
- 83,228,172,245,169,135,167,140, 0,243,242, 24,201, 8,126, 12,171,129, 51, 41, 14,126, 75,208,196, 27, 25,202,178,171,248,203,
-175,253,254,227, 45, 88, 37, 99, 83, 42, 82,140, 77,188,106,125, 99,110,101,249, 97,235,102, 62,214, 83, 39,124, 44,121,150,164,
-198,233,166, 83,179,127, 93, 61,207, 36,134, 55,158, 28, 77,115,170,100,117,217,119,254,124,201,255,229,123,246,148,121, 46,113,
-224, 64,131, 91, 98,229, 89,173,170,106,185, 2, 0,165, 82,105,209,165, 75, 23,116,234,212, 9, 3, 6, 12, 40, 25,115,213,168,
- 81, 35,236,221,187, 23,129,129,129,184,127,255, 62, 28, 29, 29, 81,183,110, 93,212,173, 91, 23, 39, 78,156,168,106,198, 6,199,
-113,240,243,243, 43,158, 69,216, 32, 46, 46,206,172,186, 9,169,209,104,144,158,158, 14, 43, 43, 43,200,100, 50,180,104,209, 28,
-159, 79,108, 1, 27,199, 31,225,231,227,141,252,252,252,146,169,235,149, 65, 34,145,120,213,169, 83, 7,169,169,169, 72, 77, 77,
-133,173,173, 45,156,156,156, 96,111,111,143,213,171, 87,211, 53,107,214, 92,226, 56,238,231,164,164,164, 42, 43, 66, 23, 23,151,
-102, 54, 54, 54,159,167,164,164, 40, 74, 21,154,138,134, 13, 27,110,118,114,114,218,152,144,144,112,173, 42, 2, 75,167,211,129,
- 16,130,223,158, 59, 33, 95, 75,144, 19, 23,140, 73,239,185,191, 34,184, 36, 18,137, 33, 3,117,243,135, 14, 29,106,231,234,234,
-130,216,168, 71, 56,120,144, 98,213,170, 85,184,124,185,240, 59,143, 44,106, 16, 20,239,119,232,208, 1, 30, 30, 30, 85,114,110,
-201,243, 60, 66, 66, 66,176,231,232, 37, 56,186,251, 32,230, 73, 4,238,157, 56,134, 26,182, 86,168,215,184, 41,244,122,253, 91,
-185,208,120, 23,208,233,116, 91, 60, 61, 61,161,213,106,207, 1,216, 26, 18, 18,210, 63, 49, 49,113,245,175,191,254,234, 52,104,
-208,160,132, 99,199,142, 77, 1,112, 56, 36, 36,100,244,226,197,139, 59,233, 11,187, 15,222, 0,195, 48, 63, 77,157, 58, 53, 96,
-208,160, 65, 68, 42,210,107,131, 78,239, 16,179,172,158, 76,159,179,141,187,120,245,146,136,101,245,100,192,208,169,252,137,243,
- 15, 69, 99, 39, 46,231, 26,181,236,133,208,208, 80,135,222,189,123, 47, 2, 80,161,192, 98, 24, 6, 28,199, 65, 34,145,148, 8,
-232,178,174,169,138,245,106, 12, 80,203,204,221,228,230,146, 13,157, 77,136, 56,239, 95, 47,174, 0, 32, 45, 45,109, 51,128,205,
- 86, 86, 86,201,198,198,198,200,205,205,125, 35,255, 17, 66, 20,222,222,222, 10,153, 76,134,174, 93,187, 90, 57, 58, 58, 70,138,
- 68,162,181,241,241,241, 85, 86, 26,101, 89,182,170,235,166,193,210, 22,189, 91,180,109,108,250,216,124,161,169, 66,172,190, 95,
- 35, 82, 97, 70, 0,100,107,236,159, 95,143, 30,146, 67, 82,228,141,154,118,104, 2, 51,177,113,239,242, 4,150,136, 97,238,101,
-103,102,245,200,201,213,226,234,181, 80, 12, 29, 82, 7, 26, 29, 1,207,139,144,151,175, 1, 24, 9, 68, 0,134, 13,255, 0,148,
-136,145,145,156, 0,134, 97, 30,226,223,135,217,227,198,141,235, 49,103,206,156,154, 69,254,171,220,139,252, 87,205, 32,132,212,
-167,148, 22, 84,147,167,198,177,189,243,166, 29,189,242, 67,118,175,214,170, 39, 77, 10,231, 68, 89, 53,241, 70,134, 68,130,167,
- 98, 6,233,148,190, 50,163, 20,197, 19,190, 74, 79,252,250,199, 11,172,202,224, 89,203,165,123,251,102, 77, 39,206,157, 51,215,
-244,201,237,203,152,187,232,123,190, 78,211,110,217, 43, 15,159,202,205, 54,171,209,177, 32, 33,226,190,161,186, 2, 0,186,117,
- 8, 68, 3,223,230,111,156,244,239, 80,232, 3,242,234,133,187, 72, 78,141, 55,184,146, 45, 18, 5,101,142,185, 50,100,106,126,
- 25, 5, 65, 86,104,104,168, 93, 92, 92,220, 43, 3,218, 61, 60, 60, 64, 8,193,173, 91,183,112,243,230, 77, 12, 29, 58, 20, 98,
-177, 24, 18,137, 4,151, 46, 93,202,173,142, 5, 11, 69,179, 8, 9, 33,221, 92, 92, 92,202,156, 61,104, 8,151, 74,165, 66,118,
-118, 54, 78,159, 62,141, 58,117,234, 96,201,146, 37,112,114,180,199,220,185,211,192,243, 60,114,114,114, 74,252, 3, 25, 96, 29,
-160,197,214, 33,158,231,145,154,154,138,154, 53,107, 98,195,134, 13, 88,189,122,245,247, 9, 9, 9, 85,158,229, 98,105,105,105,
-166, 80, 40,198,246,238,221,219,191, 95,191,126,232,214,173,219, 43,231,119,237,218,101,114,248,240,225,153,174,174,174,237,121,
-158,223, 20, 31, 31,159, 97, 8,239,143, 63, 22,186, 79, 82,182, 92,128, 89,131,106, 96,228,248, 29, 88,185,242, 16,228,114,249,
- 43,149,237,194,133, 11, 43, 20, 47, 60,165,158,210,180,235, 9,211,102,174,176, 91,186,244, 44,206,158, 77,129, 72, 36,130,163,
-163, 35, 68, 34, 17, 94,188,120, 1,145, 72, 4,119,119,119,136, 68, 34,196,199,199, 23,143,249,203,132,218, 48, 31,132, 34,145,
- 8,106,181, 26,177, 49, 47, 17, 23, 21, 9,147,156, 36,216,154, 41,145,249, 40, 4, 13,198,124, 12,189, 94,255,119,104,209,158,
- 1,112,166,212,161,131,132, 16, 61, 33,100, 56,128,125,148,210, 67, 69,199,183,161, 2,199,160, 45, 91,182,108, 52,103,206, 28,
- 73,177,219, 12, 39,183,197,172, 78,167,227, 1,192,187, 65,187, 87, 84,254,211,167, 79,177,114,229, 74,228,231,231, 67, 90,133,
-145,233,157, 59,119, 46, 25, 19, 41,149, 74, 97, 99, 99, 3,157, 78, 7,150,101,171,220, 53,104,237,238,242,253,173,224, 75,220,
-131,168, 31, 84, 15, 31,159, 52,138,123,193, 35, 47,205,230, 95, 43,174, 94,183,100,185,184,184, 44,224,121,158, 82, 74,231,149,
- 42, 91,229,110,110,110, 87,130,130,130,172, 89,150,197,186,117,235, 44,146,146,146, 44,218,181,107, 55, 11, 64,185, 2,171, 28,
- 55, 13,229,161, 90,110, 26, 56, 14, 94,102,166, 22,200, 68, 28, 52, 54,250, 70, 89,214,108,198,153,196,143,239, 59, 69, 55,246,
- 53,230,244, 53, 69, 57, 90, 56, 43, 45,192, 83, 90,174, 35, 52,141, 94,127,242,126,240,189,174,110,174,117,152, 95,143, 95, 70,
-223,254,131,160,209,136,160,214, 19, 16, 70, 2,194, 72, 81,191, 65, 99,212,173,215, 0, 20,192,221,219,215, 89,173, 94,127,230,
-223,148,246, 78,254, 19,135, 58,249,127,190, 22,148,167,101,248,193,170,217,191,127,255,165, 0, 38, 86,218, 43,209,106,226, 80,
-135,214,133, 60,165,253, 96, 77,253,124, 28, 30,221,150,152, 95, 14,254, 86,218,173, 37,126, 75, 61, 75,160, 84,252, 62,139, 80,
- 34,170,158,123,141,127,141,192,114,115,115,179,176, 51, 81,254,248,217,152, 15, 77,163, 31,220, 64, 92,200, 13, 92,187, 26,153,
-185,251,151,163,241, 57,217,169, 99,170, 32,174, 74,186,243,108, 28,107,160,102, 25, 2,203,200,212, 22, 0, 80,211,183, 57,196,
- 49,230, 85,122,145,178,172, 87,213, 17, 87,165, 43,229,178,124, 96,141, 29, 59, 22, 91,183,110, 69,155, 54,109,224,233,233, 89,
-210, 82,174,170,149,236,117,107, 82,117,102, 15,150, 70,110,110, 46,220,221,221,177,101,203, 22, 60,124,248, 16,166,166,166, 24,
- 58,116, 40,114,115,115, 75,132,149,161,131,220, 57,142,123, 25, 20, 20, 84,127,240,224,193, 84, 44, 22,147,172,172, 44,152,155,
-155, 99,195,134, 13, 5,137,137,137, 23,170, 26, 54,103,103,231, 94, 86, 86, 86, 31, 13, 25, 50,132,241,246,246, 70,114,114, 50,
-204,204, 76,181,132, 16, 25, 0,152,155,155,107,141,141,141,241,201, 39,159,160,126,253,250,205,103,206,156,217,204,193,193, 97,
-103, 82, 82,210, 47, 21,229, 37, 66, 8,246,238, 45,236,157, 26,179, 54, 2, 90,109,161, 64,217,184,113, 35,138,198,178,253,222,
- 21, 16, 21, 5, 24, 48, 51,197,196,196, 4,158,158,158,101,166,125,219,182,109,113,247,238,221,194, 46, 72,177, 24,118,118,118,
-184,118,237,154, 65,211, 50,139, 29, 56,134,134,134,194,199,195, 6, 15,207, 6,193, 70, 41, 65, 67, 39, 7,184,180,109,143,200,
-200,200,191,212,122, 69, 8,233, 11,160, 55,128, 19,148,210,195,132,144,129, 0,186, 21,239,163,138,142, 69, 89,150,165, 34,145,
-136,196,198,198,234,148, 74, 37,177,178,178, 18,203,229,114,104, 52,154, 18,161,245,244,233, 83, 28, 63,126, 28,113,113,113,176,
-178,178, 18,153,155,155, 67,167,211, 25, 52,163,148,227,184, 55,220, 51, 20, 61,183,202,226,106, 20,224,183,117,241,178, 26,114,
- 17, 99,238, 99,211, 29,207, 30, 61, 85,229,165,101, 25,253, 23,196, 21, 0,100,102,102,110, 6,176,185,120,223,214,214,118, 52,
-195, 48,115,205,205,205,205, 47, 93,186,100, 97,107,107, 75,118,236,216,161,159, 55,111, 94, 22,195, 48,153,132,144,213, 21,241,
-149,227,166,225,109, 4,160,251,155,199, 16,150,150, 29,229, 46,177,116,226, 31,168,233,245,201,177,179,234,102, 74,234,216,146,
-122,126,232,159, 18,126,117, 52, 27,213, 58, 57, 49, 73, 68,193,135, 85, 80, 6,111,155, 53,103,225,244,200,136,123,110, 10, 51,
- 5,198,142,155,131,223, 78, 93, 0, 17, 73,112,229,250, 45,104,117, 28,210, 50,178, 49,100,216, 8,184, 56,218, 32,236,230,233,
- 84,150,231, 55,252,187,196, 53,191,190,107,223,209,150,114, 35,101, 81,156,112,248,249,127,211, 32, 18,173,197,252,249,243,225,
-231,231, 55,190,104,229,134,140,138,203, 15,126,125,253,246,195, 44,165,242, 66, 30,202,115,216,114, 96, 86,145, 31,172, 41,216,
-176,249,151,250,245, 60,158,127, 85,145, 31,172,255,148,192,170, 81,163,134,220, 88,130, 79,172,140,164, 51, 62, 27,222,207, 54,
- 37,234, 17,226,194,239, 21, 42,127,141, 74,159, 24,121,169,161, 1,133,118,231,215,252,111,208,138,186,168,212,234,202, 91,240,
-175,115, 22, 87,180,175, 91,175,170, 34,174,202,226, 44, 45,178, 74,251,189,114,117,117,197,210,165, 75, 43,245,131, 85,198,187,
- 23, 31,239, 6,160, 65,177,200, 66,225, 32,247,110,134,204, 28, 44,143,211,214,214, 22,233,233,233, 0,128,128,128, 0, 4, 4,
-252, 62, 79, 65,167,211,149, 88,173, 76, 77, 77,223,176, 96,149,197,201,178,236,178,195,135, 15, 15,186,113,227, 70,239,105,211,
-166,137, 59,118,236, 88,104,191,207,207, 87, 83, 3,214, 94, 43,131,115,248,169, 83,167, 24,158,231,177,101,203, 22, 4, 7, 7,
- 83, 99, 99,147,201, 38, 38,166, 59,204,204,204,184,172,172,172,225, 31,127,252,113,191,175,190,250,138,180,109,219, 22, 55,110,
-220, 32, 53,107,214, 12, 4,240, 75,101,239,126,235,214, 45,136, 68, 34,176, 25, 49, 24, 63,107, 31,140,141,196,136,136,136, 64,
- 70, 70,198, 27,206, 71, 13,137, 79,158,231, 75, 42,238,226,173,109,219,182, 37,221,141, 45, 90,180, 0,195, 48,184,127,255,126,
-153,221,173,175,113, 82,107,107,235,146,252, 33,149, 74,113,225,194, 5,124,243,205, 55,112,179,178, 64,102,248, 67, 56, 4,116,
- 68,151, 15, 63,198,208,161, 67,193, 48, 12,172,172,172, 74, 44,189,149,189,251, 91, 10,170, 18, 78, 66, 72, 31, 31, 31,159,217,
- 97, 97, 97, 46,245,235,215,247, 37,132, 4,248,249,249, 53,123,248,240, 97,241,190,132, 82,186,191, 42,156,119,238,220, 57,184,
-126,253,250,113,163, 70,141,146,242, 60,207, 69, 71, 71,235, 1, 16, 7, 7, 7,230,206,157, 59,252,175,191,254, 10,149, 74, 5,
- 23, 23, 23,145,179,179, 51, 57,115,230, 12, 31, 30, 30,126,139, 82, 58,199,208,119, 47,158, 41, 88, 60,152, 93,165, 82, 25, 36,
-174, 94,231,172, 81,215,107, 73,167,118,222,174,105, 9,247,145, 24, 31, 5,117,134,165,254,194,233,107, 85, 18, 87,127,116, 26,
-253,201,156, 11,159, 60,121,226,172,209,104, 32,147,201,176,113,227, 70,221,210,165, 75,195,210,210,210,252, 41,165,170,234,134,
-179, 42, 14, 72, 43,227,204, 78,199,111, 71,142,222,105,102,210,127, 27,198, 39,164,150, 12, 92,164,132, 88, 29,178,247,245, 87,
- 54,175, 31, 47, 58,177, 64,148,203, 21,252, 86, 30, 39,165, 84, 75, 8, 25,212, 63,112,216,185,189,123,247,152,204, 91,176, 0,
-215,110, 61, 68,122, 86, 30,120,202,128, 39, 4,115,231,206,131,131,141, 21,114, 18,158, 20,104,116,186,254,175, 47,153,243, 79,
- 79,119, 66, 68, 19,206,252,186, 99,173,136,128,207, 79,126, 44,103,114,163,148, 35,135,246, 23, 15, 26, 52, 8,135, 14, 29, 66,
-104,104,232, 15,229,137,171,210,156,148,138, 38, 60,188,180,111, 45, 1,120, 85,234, 99,185, 56,239,185,242,131,225,253,197, 67,
-135, 14,197,225,227,215,177,247,216,243, 77,123,126,165,199,240, 31, 67,185, 2,203, 84,140, 80,127,223, 90,206,109, 27,215, 83,
-136, 57, 21,226,194,163,144,145,175,198,153, 71,209, 89, 34, 42,250,169,186, 15, 44, 28, 59, 33, 69, 76,204,147, 55,206,101,101,
- 41,138,172, 49, 85, 91,246, 73, 36, 18,189, 98,189,122, 27,203, 85,233,112,218,219,219,191,178,236, 74,233, 10,187,120,140, 79,
- 53, 92, 52,204,138,137,137, 49,139,137,137, 1,165, 20,183,110,221, 50,107,209,162,197,172,183,177, 94, 77,155, 54,237,149,229,
- 65, 74,255,150,117,172, 50,164,166,166,230, 3,248,209,222,222,254,183,233,211,167,191,223,178,101,203,182,243,231,207, 39,148,
-210,234, 70, 44,203,243, 60, 46, 94,188,136, 67,135, 14,113, 90,173,118,118, 98, 98,226,227, 82,231,127,114,117,117,189,210,175,
- 95,191,149,145,145,145, 76, 88, 88, 24, 12, 17,114, 42,149, 10,158,158,158, 96, 89, 22,223,142,119, 69,110,110,125,176, 44, 11,
-142,227, 96,108,108,252,202, 58,148,134,164,147, 72, 36,122,197, 50, 82,188,221,186,117, 11, 12,195,192,223,223, 31,247,238,221,
- 43,177, 96, 85,102,113,210,233,116, 49,246,246,246,246, 11, 23, 46, 44, 9, 87,106,106, 42,130,130,130,208,178, 85,107,248,126,
- 50, 22, 9, 9, 9, 88,189,122, 53,156,156,156,176,100,201, 18,100,100,100,128,101,217, 63,219,108,222, 61, 44, 44,204,101,248,
-240,225, 41, 15, 31, 62,116, 57,126,252,184, 69,239,222,189,141,135, 13, 27,150,242,240,225, 67, 23, 66, 72, 59, 0,251,171,248,
-253,204, 38,132,156, 90,178,100,201,172,137, 19, 39,182, 24, 53,106,148, 68, 34,145,240,241,241,241,236,158, 61,123,136,167,167,
-167, 72, 42,149,146,211,167, 79,243,183,111,223,190,201,178,236,183,148,210, 43, 85,181, 50, 23,139,171,170,142,185, 42,198,100,
- 59,249, 7,166,162, 84,255,245, 27,151,138,188, 61, 92,116, 59,247, 4,197, 94,185,241,228, 25,163, 97, 39,255, 8, 60,195,127,
- 16, 12,195,236,247,241,241, 25, 61, 97,194, 4,163,110,221,186,201,191,250,234,171,236,220,220,220, 50,197, 85, 89,168,138,155,
- 6, 84,209, 1,105, 41,252,111,246, 23,199, 39, 79,173, 63,186,214, 71, 14, 53,112, 54, 63, 5,153, 98, 70,100,102, 33, 66, 99,
-119, 6,185,105, 79,109,143,157,219,254, 2,149,248, 85,163,148,222, 33,132,116,174, 87,191,209, 47,223, 46,249,214,238,203,153,
- 51, 36,191, 28, 63, 9,202,234,112,235,210, 37,152, 72, 57, 26, 30,124, 54, 89,163,211,246,251, 55, 46,149,147,112,117,221, 94,
- 66,200, 81, 43, 43,171, 7, 31,142, 26,229,233,227, 51, 12, 74,165, 18, 7, 15, 30,196,207,235,214,113,107,128,193,155, 9,185,
- 55,150,210, 10,235,252,228, 27, 37, 60,247, 63,254,240, 67,175,198,141, 63,130, 82,169,196,129, 3, 7,176, 99,205, 26,131,121,
-254, 51, 2, 11, 34,146,123,243, 73,116,222,173, 39,209,121,224, 41,229, 41,213,136, 68,136,205,215,233,150, 68, 62,139,171,150,
- 24, 40,238, 34, 92,180,120,194,187, 84,230, 37,162,167, 58,211,178,203,169, 28,226,234,212,169,131,215, 45, 90, 21,253,215,235,
-245,113, 6,210, 47,115,115,123, 99, 93,210,101,213, 13,107,113,183,159,161,226,202, 80, 63, 88, 0,144,156,156,156, 10, 96,133,
-139,139,203,209, 30, 61,122, 12, 37,132, 36, 85, 51,141,246,118,232,208, 97, 40,165,148, 17,137, 68,187, 94, 19, 87, 0,128,216,
-216,216,231, 46, 46, 46, 91, 60, 60, 60, 74, 22,128,174,136,147,231,249,231,245,235,215,215,149,149, 22,229,237,243, 60, 95,105,
- 26,101,101,101,161,121,243,230,111,172, 57, 73, 41, 69,116,116,116,177,133,169, 36,238, 43, 18,110,121,121,121, 99, 63,255,252,
-243,205, 18,137,196, 13, 0, 41, 22,183, 28,199, 49,223,127,255,189,130,227, 56, 6, 0, 17,137, 68,172, 68, 34, 81, 31, 58,116,
-136,101, 89, 54, 70,163,209,140,253,147,203,129,125,132, 16, 9,128,204,176,176,176,118, 69,150,171,184,208,208,208,179,123,247,
-238,181, 7, 42,119,159, 80, 78,222,188, 2,224, 10, 33,164,237,198,141, 27,103,143, 29, 59,182,249,208,161, 67,197, 1, 1, 1,
-248,237,183,223,184,139, 23, 47,222, 82,169, 84,203,170, 42,172, 8, 33,121,238,238,238,133, 5,152,184,226, 81, 14, 44,203, 86,
-216, 90,179,118,151,175, 31,241,169,147, 98,203,178,160,188,180, 4,237,117,125,158,118,206,118, 32, 20,255, 97, 36, 37, 37,125,
- 65, 8,153,183,122,245,234,132,134, 13, 27,202,165, 82,169,214, 80,113, 85,212,240,177,175, 66, 30,225,171,153,183, 88, 66, 72,
-207, 85, 93, 6, 30,109, 63,247,115,143, 46, 29,252,149,174, 53,236,156,195,163,146,241,244,198,111,249, 15,142, 45,126, 73, 53,
-153,125, 41,165,172, 1, 92,183, 9, 33,117,166,205,152, 86,188,216,115,131, 78,103,142,208,255,208, 98,207,139,150, 47, 95,238,
-233,227,227,131,131, 7, 15,226,204,174, 93, 24,146,150,134, 11, 12,195,136,164, 82,235, 99, 58,221, 10, 0,134, 8,163, 69, 43,
- 87,174,244,242,243,243,195,254,253,251,113,122,199, 14, 12,174, 30, 79,121,104, 6,192,182,232,127, 26,128,199, 0,154, 0, 48,
- 2,160, 1,144, 7,192,166,212,245,233, 69,231,138,207, 95, 6,240,167, 14,116, 45,183,116,122,248,228, 69,147,119,253, 48,149,
- 74,149,225,233,233, 41,169,202, 61,122,189, 62,165,146, 2, 52,174, 86,173, 90, 6, 91, 41, 12, 17, 67,233,233,233, 77,255,168,
- 8,127,219,177, 86,175, 8, 65,158,127,233,232,232,200, 23, 87,246,101,137,175,178,142, 81,224, 69, 85,158, 19, 23, 23,247, 12,
-192, 55,213, 13,103, 92, 92,220, 73, 24,176,152,179,161,215, 1, 64, 70, 70,198, 59, 95,100,151, 80, 26,255,213, 87, 95, 85, 73,
- 88,131,210,248, 10,210,250, 33,128, 22,127,247,210,149, 82,122,185,168,240, 1, 33,164, 63, 33,164, 39,128,211,148,210,131,239,
-136,191, 68,104,109,217,178,101, 50,165, 20, 57, 57, 57,107,170, 42,172, 74, 9,255,243,239,234,221, 51,146,181,231,247,252, 16,
-215, 81,149,165,155,188, 53, 79,187, 3, 2,138,211, 76,109,103,103,247,211,200,145, 35, 91, 2,216,254, 46, 56,223,194, 77, 67,
-121, 97,124, 65, 8,105,120, 97,218, 55, 31, 94,176, 48,237, 5, 78,236, 13,173,232, 24,180,233,191, 1,248,209, 16, 43,120,233,
-247, 5,176,178,104,251,207,160,200,127,213,228,209,163, 71, 99,222,188,121, 56,189, 98,133,238, 83, 66,178, 37, 0, 61, 85,216,
-192, 20, 17, 96,166,161, 60, 31,124,240, 1,230,205,155,135, 19,223,126, 91, 45,158, 74, 96, 75, 8, 57, 14, 0,179,102,205,154,
-179,116,233, 82,203,217,179,103, 55, 88,182,108,217,146,162,253, 71,197,231,139,210,180,247,236,217,179,235,149, 58,159, 11,224,
-206,159,253, 33,253, 97, 27,128,206, 2,167,192, 41,112, 10,156, 2,167,192, 41,112, 10,156,111,185,245, 42,148, 44,229,255,150,
-247,191,212,177, 63, 51,188, 16, 9,109, 53, 1, 2, 4, 8, 16, 32, 64,192, 63,212, 10,119,252,109,206,255,161, 97, 3,208,185,
- 28,203,214,217, 42,188, 96,231,106, 88,206,206, 10,156, 2,167,192, 41,112, 10,156, 2,167,192,249,223,226,172,140,187,156,251,
-123, 17, 66,142, 83, 74,123,151,247, 91, 44,168, 94,255, 95,234, 88,149, 87, 30,121, 43, 8, 93,132, 2,167,192, 41,112, 10,156,
- 2,167,192, 41,112,254, 19,186, 8, 1,208, 89,179,102,205,254, 39,116, 17, 86, 48, 5,231, 32, 19, 31, 15, 51,153, 76, 41, 5,
- 0,173,182, 64,231,236,140, 28, 96,224, 95,182, 16,173,128,127,172, 9,215,190, 72,204, 39,191,203,107, 5, 8, 16, 32, 64,192,
-127, 6,169,197,150, 41, 0,169, 0, 72,209,190,182,232, 55,181,168,238,120,253,255, 43,231,255, 76,136,203, 19, 87,105,105, 74,
- 27,177, 56,211,139,227,212,117, 1, 64, 44, 22, 69,164,165, 89, 70,218,216, 28, 76,171,142,200,178,181,183, 15,150, 48,140,179,
- 33,215,234, 57, 46, 62, 45, 57,249, 21, 87,239, 20,248,199, 11, 59, 67,197,195,219,136,140, 63, 67,160,216,218,218,218,219,219,
-219,191,103,102,102,214, 42, 43, 43,235,118,106,106,234,225,212,212,212,228,114,194,179,148, 16,204, 40,250,255, 29,165,116,118,
- 5, 97, 55,248,218, 50,238,245, 84, 42,149,227, 9, 33,126, 69,239, 31, 90, 80, 80,176,145, 82,250,228, 63, 40,104,141, 0,244,
- 19,139,197, 31,216,216,216, 52, 79, 74, 74,250,138, 82,186,186,154, 92, 98, 0,211, 44, 44, 44,134, 90, 88, 88,212,204,200,200,
-120,150,147,147,179, 31,192, 74, 74,105,165, 83,158,191,158,228,212, 42,160, 91,192,151, 23, 79, 95, 92,180, 96,109,194,141, 55,
-206,127,225,100,221,181, 75,155,121, 23,143, 93, 95, 56,123,189, 97,203, 35,149, 10,155, 8, 40, 25, 71,202, 23,181, 82,233,223,
- 56, 93, 90, 2,152, 83, 20,230,149,148,210, 11,127,243,124,100,108,111,111,255, 45,128, 62, 98,177, 56, 44, 62, 62,254, 19, 74,
-105,220, 59,226,150, 0,176, 2,144, 97, 72, 62,122, 45, 63, 54, 3,224,135, 66,119, 26,119, 12,113,197, 96, 96,185, 54, 74, 36,
- 18, 45, 46,114,125, 51, 55, 61, 61,125,251,223, 53,109,228,114,249, 26, 7, 7,135,143, 84, 42, 85, 1, 33,132,150,246,215,200,
-178,108, 92,106,106,106,211,127, 97,209,118,231,159, 22,224, 50, 5, 86,124, 60,204,196,226, 76,175,148,164,135, 67, 18, 18, 67,
- 6, 3,128,147, 99,131,253,118, 14,245,247,197,199,203,116,205,186, 4,154, 72,148,226,141, 12, 35,105,164,214,106,108, 36, 98,
- 73,154,142,213,223, 23,105,233,248,196,136, 67,101, 58, 73,148, 48,140,243,203,200, 11,118,172, 46, 3, 18,133, 19, 36, 70,110,
-229, 6,202,201,201,169, 90, 47, 99,101, 85,219, 84, 39, 87, 76,150, 72,152, 46, 60,101,253, 40, 15,136,136, 36,148,229,244,231,
-164, 26,205,170,140,140,168,220,234, 70, 84, 93, 27,226, 64,129,161, 32,232, 2,138, 51, 4,216, 27,145, 70,147,170, 80, 48, 24,
- 36, 30,222, 82,100,148,190,119, 53,165,244,139,119,157, 97, 92, 92, 92, 44, 7, 12, 24,176,230,155,111,190, 49, 50, 49, 49, 33,
- 49, 49, 49,221,102,206,156,217,206,197,197,101,106, 92, 92, 92,194,235, 98,143, 16,204,224,249, 66, 7,165, 34, 17,153,105,111,
-111,175,100, 24,230,141,197, 67, 57,142, 83, 18,130, 9, 60, 95,184,224,184, 72, 68,102, 16, 66,214, 26, 34, 20,141,140,140,134,
- 53,111,209,122,234,183,203, 87,154,216,219,217, 25,179, 28,175,123,241,242,165,241,151,179,191,104, 97,100,100,180, 86,165, 82,
-237,169,234,123, 18, 66, 8,195, 48, 67,228,114,121,111, 0, 62, 69,135,195, 53, 26,205,113,142,227,246, 25, 90,145, 59, 56, 56,
- 92,102, 24,166, 70, 85,158,205,113, 92, 76, 82, 82,146,127, 53, 43,174, 65,110,110,110, 63,182,111,223, 94,217,188,121,115,200,
-100, 50,204,155, 55,111, 26,128,213,134, 8, 41,165, 82, 57,196,216,216,184, 86, 94, 94, 94,148, 74,165,250, 69, 38,147,117, 94,
-187,118,173,107,155, 54,109, 76,147,147,147, 9,195, 48,246,199,143, 31,127,127,221,186,117,221, 8, 33,157, 42,171,220,178,163,
-232,151,242, 62, 62,109,179,163, 46,124, 9,160,199,235,231, 89,181,226, 3,202,184,246, 86,209,123,177,168,194, 20,121, 66,136,
- 72, 34,145,172,117,112,112, 24,173, 86,171,213, 0, 40, 33,132,218,219,219,151, 84, 52, 0,160,213,106, 51, 51, 51, 51,189, 43,
-252,182,235,214,189,203, 48,140, 75, 5,233, 17, 23, 17, 17,241, 46, 42,172, 25, 73, 73, 73, 61, 37, 18, 9,113,117,117,101, 0,
- 92,168,194,251,122, 1,152, 91, 84,201,108,164,148,114,132,144, 14, 64,225,247, 14,224,187, 98,193,198, 48,204, 70,111,111,239,
-247,194,195,195, 55, 81, 74, 23, 85, 55,176, 14, 14, 14,155, 55,108,216, 48,184,111,223,190, 76,106,106,170,115,195,134, 13,119,
- 3,104,251,150,194, 74, 6, 96,182,131,131,195,103,254,254,254,214,247,238,221,203, 32,132,108, 0,176,172, 34, 95, 83,132, 16,
- 23, 0,157, 45, 44, 44, 58,205,157, 59,215,164,119,239,222,216,178,101, 75,207,173, 91,183,230, 17, 66,206, 1, 56,251,182,226,
- 79, 36, 18, 45,142,143,143,119,164,148,194,209,209,113, 49,222,145,123,138,119, 13,134, 97,214, 14, 25, 50,100,244,238,221,187,
-149, 47, 95,190, 84, 58, 59, 59,151, 56,189, 38,132, 84,187,254, 20,240, 39, 9, 44,153, 76, 41,229, 56,117,221,132,196,144,193,
-237,218,127,111, 14, 0,151, 47,125, 62,216,206,161, 94,168, 76,166,140,148,155, 41, 14, 5,246,233,220,104, 96,239,246,196,197,
-209, 14,113,137, 41,246,255,219,123,186,251,241,211, 23, 14,161,208,241, 87,153, 96,117, 25, 48,210,157,197,227,171,235, 96, 19,
-144,128,245, 39,226,112,227,193, 11, 20,100,167,161,134,131, 17,150, 79,238, 10, 7, 75,101,181, 94,196,196,222,171,131, 72,161,
-220, 55,124,216, 72,243,247,250,249, 72,220, 29, 28, 64,169, 28,145, 81,121,173, 79, 6, 93,104,246,203,129, 61,227, 77,236,189,
-134,228, 37, 71, 26, 92,168, 53,113, 34, 70,249, 58,244, 19, 51,228,253,182, 45,234,117, 26,214,179,173,200,215,167, 14,194, 30,
-133,119, 61,122,254,214,114, 95,123,209, 57,150,163, 59,141,165, 56, 18,156, 80,190, 35,190,178,132, 70,167, 78,157, 26, 27, 25,
- 25,105, 75, 95,167, 82,169,100,132,160, 83,117, 68, 70,241, 51,180, 90,141, 72, 34,145, 65, 36, 34, 83, 27, 52,104, 80, 35, 45,
- 45,237,178, 72, 36,218, 21, 23, 23,151, 89,149,248,156, 72,136, 44, 83, 44,110, 34,146,203, 29, 57,173,214, 26, 0,136, 76,150,
-233, 98,105, 89,127,238,156, 57, 38, 12,195,240,233,233,233, 40, 40, 40, 32, 31,127,252,177, 34, 42, 42, 42, 16,192,186, 74,194,
-136,173, 91,183,122, 57, 58, 58,106, 95, 63,151,152,152, 40,235,219,247,189,234, 20,216, 94, 45, 91,181,153,114,250,244, 41,159,
-156,140, 76,245,214,213, 91,238,233, 21, 70,106,143,186, 94,210,141, 91,118,152,125, 50,122,196,231,132,144,251,148,210,200, 42,
-112,186, 25, 25, 25, 29, 90,177, 98,133, 95,135, 14, 29, 36,118,118,118, 72, 78, 78, 70,120,120,184,223,249,243,231,251,237,216,
-177, 99, 26, 33, 36,144, 82,106,136,199,117,207,115, 59,127,180, 51,182,178, 6,167,215,195,169, 65,227, 18,255,100, 79,207, 7,
-129,213,233,192,235,245,240,233,221,175,208, 12,195,243,240,245,245,173,150,183, 92, 66,136, 83,189,122,245,126, 94,178,100,137,
- 84,163,209,224,214,173, 91,184,112,225, 2,159,152,152,184,172, 50,113, 69, 8, 9, 90,176, 96,129,139,191,191,191,105, 90, 90,
- 26, 56,142,179, 57,114,228,200,248,198,141, 27,155,185,186,186,202,118,238,220,137,188,188, 60,176, 44,107, 85,171, 86, 45,171,
- 97,195,134,105,119,238,220, 57, 13,192,183,229, 89,174,114,162,232,151, 73,164, 86,119,239, 38, 31, 32,137,156,234, 62,181,135,
-227, 73,179,218,164,196,146,213,163,118,109,211, 90,117,141,103,154,152,213,183,202,137, 63, 59,179, 71,237,218, 91, 79, 70, 85,
-222, 8, 34,132,136, 68, 34,209,218,192,192,192,225,123,247,238, 85,134,135,135, 43,125,124,124,192,243,124,137,199,252, 98, 71,
-177,158,158,158,134, 84, 88, 46,231,206,157,179, 51, 50, 50,122,195, 41,111,126,126, 62,250,246,237,251, 71,148,183, 85, 77,227,
-175,159, 63,127, 62,232,208,161, 67, 35,102,204,152,225, 9, 96, 2,128,121,233,233,233,237, 1,192,218,218, 90, 6,224, 2, 33,
-228,195,233,211,167,127, 58,107,214, 44,244,236,217,115, 30, 33,100,113,117,172,122,132, 16,198,198,198,166,103,223,190,125, 25,
-189, 94, 15, 99, 99, 99,232,245,250,218,111, 41,174,228, 82,169,244,215, 21, 43, 86,116, 25, 54,108, 24,196, 98, 49,120,158,183,
- 10, 10, 10,154, 63,122,244,232,182,132,144, 30,101,137, 44, 66,200, 7,159,126,250,233,128,145, 35, 71,162,105,211,166, 37,206,
-101, 87,172, 88,129,133, 11, 23,154, 4, 5, 5,245,219,185,115,103, 63, 66,200, 47,148,210,106,251, 50, 43, 94, 47, 52, 54, 54,
- 22,118,118,118, 70, 86, 86, 86,137, 0,190,202,200,200,216,242, 55,178, 42,126, 55,100,200,144,225,187,119,239, 54, 1,128,229,
-203,151, 99,202,148, 41,176,183,183,135,137,137,137,160,104,254, 9, 2,171, 50, 20, 20, 20, 52,158, 61,241,125,136, 68,133,173,
-196, 58, 53,221,176,116,206, 39,228,232,241,211,141, 43,186, 79,162,112,194,227,171,235, 32,119,157, 12,141,158,197,205, 7,207,
-113,102,121, 55, 0,128, 87,143,185,208,232, 58, 21,103,116, 43,153,145,209,119, 90,142,187, 6, 7,135, 91,136,142, 78,173, 76,
- 92,217, 58,216, 31,255,225,135,111,141,252,106,123, 67,199,234, 17,159, 18, 15, 66,228,112,113, 54,197,135, 31,244,144,180,111,
-239,100,243,245,215,155,127, 51,182,245,234,159,159, 26, 89,169,163, 79,111, 91,178,189,109, 99,207,193,195,122,249,203,235,251,
-213,131, 84,110,244,187,240,106,218, 20, 77,154, 54, 21,205,202,203,237,114,251, 78,112,151,131, 65, 55, 53,222,182,100,255,227,
- 84, 58,170,162,111,163,180,208,152, 52,105,210, 27, 11, 18, 39, 38, 38,226,226,197,183,234, 53,120,229, 25,223,124,243,141, 73,
- 86, 86, 86,231,255,253,239,127,237,156,157,157, 87,196,199,199,223, 52,132,228,125, 66,106, 64, 46,239, 52,122,229, 74,190,209,
-123,239, 49, 22, 14, 14, 34,158,227, 72,194,179,103,214,171,215,173, 11,200,120,250,212, 40,223,202, 42, 35, 83,165, 42,136,140,
-140,132, 66,161, 32, 98,177,184, 89, 25, 5, 86, 50, 33,228, 59,145,136,204, 36,132, 64, 46, 87, 68,142, 27, 55,238, 94,209,233,
- 26,199,142, 29, 83,246,233,211,167, 0,192,203, 66,179,183,194,153, 97, 68, 94,133, 3, 4,241,157, 33,194,210,216,216,120,226,
-162, 37,223, 25,231,100,100,169,116,249,249,122, 59, 51, 19, 2, 19, 19, 38, 55, 39, 47, 39, 33, 41, 85, 61,247,171,133,226,177,
- 31,142,156, 8, 96,188,161,226,170, 97,195,134,183, 15, 29, 58,100,103,109,109,141,172,172, 44,164,167,167,227,246,237,219,224,
-121, 30,129,129,129,242,214, 45,154, 55,158, 51,247,203, 27,132,144, 86,134,136, 44, 99, 43, 27, 44,247,111, 4, 0,152,255, 50,
-189, 36,125,182, 12,234, 93,114,205,194,184,108, 0,128, 66,161,120,155,165,158, 90,117,234,212, 73, 10, 0, 99,198,140,201,201,
-205,205, 93, 10, 96, 55,173,192, 25,106, 17,166,125,249,229,151,206, 53,107,214,116,223,189,123, 55,242,242,242, 0,192,174,102,
-205,154,240,246,246,230, 46, 94,188, 8, 47, 47, 47,152,154,154,226,242,229,203,184,121,243, 38,154, 52,105, 98, 42,149, 74, 7,
-151, 39,176, 2,186, 5,124, 41,239,227,211,214,187,201, 7, 48, 49,115,196,214, 61,251,240, 56,120, 71, 91,141, 46,252,203,165,
- 19,156, 71,170,168,124,148,139,167,233,172, 26, 77,219, 91,215,169,247, 30,220,155,220,179, 81,115, 87,158,207,251,172,214, 50,
-177, 66,189, 99,193,138,132,244,242,196, 21,128,229,129,129,129,131,246,238,221,107, 1, 0, 15, 31, 62, 68,114,114, 50,108,109,
-109,161, 80, 40, 32,145, 72, 74,214, 15, 53, 20, 70, 70, 70, 72, 76, 76,132, 78,167, 43,182, 90, 33, 55, 55, 23, 14, 14, 14,133,
-234,230,107, 34, 90,176,192, 48,175,227,132, 16,255, 22, 45, 90,236,114,119,119,119, 45,125,188, 87,175, 94, 24, 58,116, 40, 0,
-160,125,251,246,157, 6, 14, 28, 72,139,133, 96, 98, 98, 98,222,157, 59,119,186, 80, 74,111,149, 99, 93, 81,197,199,199, 99,250,
-244,233,120,241,226,197,103,132,144,104, 0, 10,153, 76, 86,210, 46, 38,132,120,213,171, 87,111,237,148, 41, 83, 16, 21, 21,133,
-176,176,176,219,213,237, 50,165,148,114, 30, 30, 30, 79,245,122,125, 83,150,101,161, 82,169,208,191,127,127,133,149,149, 85, 50,
-195, 48, 17,105,105,105, 35, 40,165,137, 85,176, 90,185,139,197,226,245,211,167, 79,239,212,185,115,103,132,132,132,224,208,161,
- 67, 24, 54,108, 24,186,119,239,142, 21, 43, 86,180,159, 48, 97,194, 44, 0, 11,202,160,232,180,113,227, 70,112, 28,247,198,183,
-161, 80, 40,224,239,239, 15, 95, 95, 95, 28, 61,122,180, 19,128,106, 9, 44, 66,136,215,128, 1, 3, 20,197,162,250,226,197,139,
-230, 70, 70, 70,230, 46, 46, 46, 11, 0,252,109, 4,150,187,187,251,184,189,123,247,154,148,238,237,145,203,229, 40,149, 15, 4,
-252,221, 5,150, 86, 91,160, 19,139, 69, 17, 78,142, 13,246, 95,190,244,121, 73, 23, 33, 32,138,208,106, 11,116, 0,192,241, 20,
- 57, 5, 44,140,228, 34,188, 76,202,197,163,103,105,101,125,164,175, 76,181,148, 24,185, 65,222,252, 37, 40,165,208,234, 56,104,
-178,147,176,244,183, 2,132,199,169,161,205,207,132, 86, 87, 56,204,202,198,198, 70,124,250,244,201, 41,103,207,158,255,244,167,
-159,126, 98,226,204,205,195,144,157,221,184, 44, 78, 43,171,218,166, 98, 99,163,253,155,126,152,103, 68,153,103,136,140,201, 71,
- 29,151,230,176,177,112, 69, 82, 90, 62,174,133,157, 64,196,147,227,168,233,232,142,201, 19,187, 43, 22, 45,217,189,207,210,178,
-166, 91,102,230,243,156,242,194, 89,132, 15, 54,159,138, 4,155,241, 12, 92,122, 20,184,220,132, 55,133,157,173, 27,154,116,112,
-134,173,107,109,249,168,201, 11, 63, 0, 48,170, 44, 78, 74,105, 50,195, 48, 27, 69, 34, 50,158, 16, 2, 63,191,250,207,215,172,
- 89,163, 45, 43,234,253,252,234, 63,103, 24, 81,205,194,101, 88, 68,155,120,158, 75,174, 36,156,175,136, 25,153, 76, 62,163,208,
-188,239,248,236,228,201,147,218,129, 3, 7, 98,249,242,229,210, 89,179,102,125,225,238,238, 62, 33, 58, 58, 58,169,162, 52, 10,
- 36,196,205,185,118,237,174,139,175, 93,163, 18,189,158,100,220,190,157,147,149,152,200, 38,229,230,202, 14, 68, 68,244,252,232,
-139, 47,100,174,174,174,184,122,252,184,117,106,126, 62,205,210,104, 84, 89, 89, 89,148,101,217,219,229,188,251,108,123,123,123,
-229,214,173, 91,189,198,141, 27,119, 47, 33, 33, 97,118, 81,193,176, 20,128, 47,128,151,165,142,225,135, 31,246,197,127,252,241,
-199,145,201,201,201,179, 43, 10,103, 41,212,179,179,181, 85,238,217,188, 51,196,202,212, 72,100,227,226, 40,146,152,155, 75, 88,
-185, 82, 74, 41,212, 53,107,214, 86, 2,168, 87, 78,156,157,125,173,144, 37, 70, 70, 70,135,126,253,245, 87, 59,137, 68, 2,142,
-227, 96,107,107,139, 23, 47, 94, 32, 43, 43, 11,185,185,185,120, 30, 17, 14, 15, 87, 87,124, 61,107,166,227,132,153,179, 14, 17,
- 66,154,150,174,196,202, 10, 39,167,215,189, 97,201, 43,103,129,240, 87,126, 13, 73,247,215,240, 34, 38, 38, 6, 38, 38, 38,240,
-243,243, 51,185,118,237,218,149,242,196, 85,105, 78,133, 66, 49,184, 77,155, 54,166,123,246,236, 65,147, 38, 77, 96,110,110,142,
-139, 23, 47,226,225,195,135,208,233,116,162,188,188, 60,152,154,154, 98,217,178,101,112,119,119, 71, 78, 78, 14, 98, 98, 98,172,
- 37, 18,137, 77,121,156, 23, 79, 95, 92,148, 29,117,225,203, 36,114,170,251,214, 61,251,240,241,176, 33,112,160,207,174,152,215,
- 38,139,186,246,105, 51,159, 50,174,189,141, 77, 27, 88,122,250,245,129, 84,102,130, 9, 51, 22, 34, 50,244,152,101, 65,110,200,
-103,132,139,117, 5, 48,233,117, 78, 82, 24, 49, 34, 87, 87,215,143, 14, 28, 56, 96, 90,202, 2, 85,178, 14,105,233,197,217,203,
- 91,136,189,204, 52,226, 56,232,116, 58,232,116, 58,112, 28,135,180,180, 52,228,230,230,194,194,194,162,240,130, 5, 0, 1, 33,
- 20,101, 11,150,215, 56, 71,156, 61,123,214,213,216,216,248, 13, 11, 73, 90, 90, 26, 88,150,133, 82,169, 44,121,166, 94,175,135,
- 90,173, 54,241,245,245, 29, 15,224, 86, 89,156, 60,207, 79, 29, 60,120,112,155, 91,183,110,213, 90,183,110, 29,180, 90,237,242,
-164,164, 36, 12, 24, 48, 0, 60,207,163, 83,167, 78, 45, 41,165,143,231,206,157, 11, 0,152, 50,101,138, 62, 63, 63,127,156, 33,
-239, 94,142,224,240, 29, 56,112, 96,173,115,231,206,161,109,219,182,208,104, 52, 88,177, 98,133,217, 15, 63,252, 96,182,115,231,
- 78,219, 25, 51,102,252, 8,160, 91, 69,156, 69,194,106, 78,247,238,221,167,246,237,219,215, 56, 62, 62, 30, 22, 22, 22,216,183,
-111, 31,150, 45, 91,118, 89,171,213,206,217,185,115,231,210, 67,135, 14,181, 29, 54,108, 24, 86,172, 88,241, 25, 33,100, 17,165,
- 84, 95, 22,231,243,231,207, 97,107,107, 11, 51, 51, 51, 0,133, 11,217,223,191,127, 31,103,206,156, 65,221,186,117, 13, 17,141,
-229,133,211, 43, 48, 48,240,250,238,221,187, 45, 98, 99, 99,113,249,242,101,120,120,120,160,160,160,160,210,101,197,222,245,162,
-204,149,113,170, 84, 42,117, 76, 76,140,201,183,223,126, 11, 71, 71, 71,184,187,187, 67,161, 80,128, 16, 2,189, 94, 95,110,120,
- 13, 9,103, 64, 0, 17,167,197, 91,246, 53,183,176,252,140, 82, 42,206,206,206,220,172, 67,214,193,168, 40,170,253,179,222,253,
- 95, 41,176, 8, 33,148, 82, 74,138,127,157,157,145,147,150,102, 25,105,231, 80,127,159,157, 67,189,162,117,185, 68, 17, 12, 99,
- 25,105,111, 95,144, 3, 0, 58,150,226,122, 68, 22, 66,158, 38,225,225,211, 36, 24,203, 13, 91,166, 70,163, 99, 11,231, 89, 82,
- 10,117,222,239,141, 84, 93, 65, 38, 52,186,194,225, 28, 90, 77, 1,178, 83,195,200,160,254, 93, 20,159,126, 58, 22,142,142,206,
-182,229,241,233,228,138,201, 19,166,244,180,176,178,144,224,248,181, 83,104, 89,183, 63, 20,114, 9,210,179,213, 0, 1,158, 60,
- 59, 3,240,166, 8,141,140, 65,139,122, 74,116,235,234, 99,114,248,224,227, 47, 0,204, 51, 36,188,108,220,109, 72, 61,123, 64,
-194,233,161, 79,123, 12, 62, 43, 26, 48,118,128,138,152, 32, 61, 49, 26, 17, 87,126, 49,104,137, 82,142,227, 38,216,216,216,164,
-204,158, 61,219,223,203,203, 75, 59, 97,194,132,208, 23, 47, 94,204, 45,125,141,135,135,199,226,245,235,215, 35, 50, 50,242,229,
-210,165, 75,175,166,165,165,125, 83,197, 15,115, 22, 33,100, 77,145, 53, 44,237,215, 95,127,109,112,249,242,229,241,171, 87,175,
-182,253,236,179,207,164, 19, 39, 78, 28, 1, 96,121, 69,221,130,198,114,121,231,197,151, 47, 83, 54, 46, 78,243,243,247,223,203,
- 54, 92,191, 62, 87,199,243, 78, 54,118,118,164,117,139, 22,249, 74,145, 40, 45, 61, 57,153,181,173, 85,139,121,113,230,140, 53,
- 53, 50, 74, 56,121,242,100, 78, 94, 94,222, 47, 21,116,193, 20,148,213, 45, 88, 22, 28, 29, 29,181,101,141,209,170,160, 34,200,
-225, 41,213, 89,214,244, 64,215, 78,173,235, 60,125,252,236,153,220,220,130,241,244,172,225, 29, 22,241,242, 22,207,178, 26, 66,
- 72,142, 33, 92, 12,195, 12, 89,179,102, 77,125, 51, 51, 51,240, 60, 15,115,115,115,164,166,166, 66,171,213, 34, 39, 39, 7,218,
-220,108,104,179,179,241, 48,250, 5,218, 4, 4, 96, 80,247,174, 62, 59,143,252, 58, 4,192,222,138,120,157, 26, 52, 46,177, 92,
- 45,172, 97,253,123,159, 79,108, 86,137,216,250,182,177, 39,164, 38, 38,232, 50,117,214,219, 20,204,247,100, 50,217,137,192,192,
-192,158, 95,124,241,133, 40, 49, 49,241, 20, 33,164, 13,165, 52,172, 66, 11,176,137, 73,237, 98, 65, 97,110,110,142, 53,107,214,
-192,222,222, 30, 5, 5, 5,184,115,231, 14,117,113,113, 33, 23, 46, 92,128,139,139, 11,210,210,210,160,211,233,144,159,159,159,
-164,213,106,203,237, 22, 47,234, 6,236, 49,181,135,227,201,199,193, 59,218, 58,147,231,119, 6, 79,107,255,244,241,195,136,152,
-160, 51,215,190, 97,213,138,216,172,184,179, 51,107, 54,187,103,243,217,244,175,177,126,249, 2, 60,190,117, 57,195,222, 45,103,
-131, 17,209,108,111,209,165,252,240,230,231,231,171,195,195,195, 77, 67, 66, 66, 64, 8,129,185,185, 57,148, 74,101,153, 34,203,
- 80,112, 28, 87,242,155,150,150,134,212,212, 84, 68, 70, 70, 98,199,142, 29, 72, 72, 72,176, 89,109,110,150,100, 35,147,134, 72,
-179,200, 28,157,142,222,171,132,110,115,151, 46, 93,134,184,185,185,153,150, 62,216,172, 89, 51,140, 29, 59, 22,155, 54,109,194,
-245,235,215, 95, 89,239, 50, 41, 41, 41, 81,175,215,111,175, 32,109,179, 8, 33,221,251,247,239, 31,124,229,202, 21,179,109,219,
-182,129,101,217, 50,183,173, 91,183,226,230,205,155,243, 40,165, 17,213,180,230,212, 29, 48, 96,192,229, 93,187,118, 89,164,166,
-166, 34, 45, 45, 13,121,121,121,200,207,207, 7,199,113,240,246,246, 38, 44,203,122, 87,214, 29,104,107,107,123,226,210,165, 75,
- 29,188,189, 11, 47,213,235,245,184,118,237, 26,222,123,239,189, 28,173, 86, 59,128, 82,154, 78, 8,153,125,240,224,193,235, 45,
- 90,180, 64,179,102,205,172,162,163,163,173, 0,148,105,185,206,203,203, 67, 94, 94, 30, 36, 18, 9, 28, 28, 28,176,104,209, 34,
-104,181,133,197,138,151,151, 87,105, 11,231,234,186,117,235,246,143,136,136, 88, 70, 41,221, 80, 78, 57, 51,150,231,249, 5,148,
-210,172,192,192, 64,251, 61,123,246, 88,198,199,199, 35, 56, 56, 24,243,231,207, 79,229, 56,142,165,148, 18,157, 78, 23, 36, 22,
-139,163,125,125,125,157,194,194,194, 18, 56,142,155, 71, 41,253,249, 47,236, 34, 36, 18,137, 4, 99,198,140,129, 88, 44,134,145,
-145, 17,212,106, 53,244,122,125,137,136, 71, 21,187,159, 61, 61, 77,173,197,144,126,236,229,213,110,242,160, 73,189,109, 29,157,
-156, 97, 97, 38, 71,120,120, 88,155,243,231,206,124,239,235,109,251, 3,175,213,255, 16,241, 34, 43,230, 79,120,191, 87,180,200,
-191,180,139,112, 32,103, 99,115, 48, 45, 62, 94,166,147,201,148,145,197, 86,173, 66,113, 53,144, 3,246,128,213,233,139, 10, 8,
- 90,180, 25, 40,176,244, 28,158, 62, 14,197,149,160, 95, 97, 83, 16,143,180,231,141, 0,105,125,104, 85,217, 80,107,117, 69,173,
- 53, 14, 15,130,207, 33, 39, 59, 3,126, 77,123, 3, 34, 81,185, 93, 91,230,214,164,119,235, 38, 13,152,167, 49,161,104,230, 53,
- 16,181, 92,218, 34, 58, 49, 7, 89,121, 26,100,230,168,209,200,111, 22, 82, 51, 85,200, 41, 80, 35,236,233, 78, 56, 59,213, 18,
- 17,241,179, 78,134, 10, 44, 77,216, 33,104, 34,142, 66,234,222, 6, 50,239,247,192,184,251, 35, 38,228, 2, 30,156, 92,141,184,
- 71, 87, 65,121, 14,142, 94,205, 97, 96, 5,190, 57, 40, 40,168, 81,187,118,237,196,157, 58,117,242,115,113,113,241,139,139,139,
- 11, 5, 0, 23, 23, 23,191,238,221,187,251,217,217,217, 97,237,218,181, 5, 12,195,108,174,102, 37, 91,186,112,186,231,232,232,
-184,226,208,161, 67,223,141, 29, 59, 22, 14, 14, 14,190, 21,221,155, 42,145, 52, 28,181,100, 9,149, 48, 12,221,187,126,189,244,
-235, 83,167, 86,254,180,125,187,180, 99,135, 14,132, 82,138,251,247,239, 43,191, 93,191, 94, 57,188,111,223,151,209, 41, 41,236,
-165,235,215,117,137,113,113,185, 41,249,249, 95, 39, 36, 36, 36,253, 21, 25, 88,175,215,223,120,241,252,153, 75,227,230,141,108,
-239,133, 61, 15,235,214,169,117, 43,145, 72, 36,138,120, 22,125,195,214,214, 76,121, 46,232,172, 78,175,215,223, 48,132, 75, 46,
-151,247,238,216,177,163, 56, 51, 51, 19, 78, 78, 78, 72, 77, 77, 69,124,124,124,161,133, 33, 59, 19,186,236,108,232,115,178,192,
-229,231,225,249,157,219,104, 84,171,166,252, 64,225, 32,248,189,149,164, 73,153,150,169,210,150, 44,153,169, 41,100, 38, 38, 32,
- 85,236, 30, 36,132,244,181,176,176,152,153,149,149,117,130, 82,186, 72,167,211, 77,152, 57,115,102,179,117,235,214,217, 44, 94,
-188,216,236,147, 79, 62, 57, 64, 8,105, 68, 41,213,148,199,145,151,151, 23,197,178,172, 13, 0,187,115,231,206,193,206,206, 14,
-217,217,217,197,150, 21,109, 65, 65,129, 34, 61, 61, 29, 26,141, 6, 90,173, 22,102,102,102,184,123,247,110, 38,203,178,191, 86,
- 22, 62,179,218,100,145, 70, 23,254,165,181,143,113,130,142,181,108,159,146,193,103, 46, 88,145,176, 16,192,202, 30,181,107,111,
-213,241,151,159, 63, 9, 61,102,249,226,206,197,140,132, 39,249,181,182,254,246, 44,183,130,120,164,132, 16,158, 16, 66,189,189,
-189,145,150,150, 6,134, 97,160, 84, 42, 97, 98, 98,130,186,117,235, 34, 54, 54,182,218, 2,139,101,217, 18,113,117,252,248,113,
- 36, 38, 38, 98,207,158, 61,112,117,117, 21, 1,176,141,141,141,237, 50,104,208,160, 22,214,214,150, 75,211,211, 51,151, 85, 16,
-206,251, 0,204, 94, 75,167, 14, 54, 54, 54,231, 53, 26, 13,158, 61,123,134, 35, 71,142, 4, 80, 74, 47, 85,241,219,126, 70, 8,
-233,238,239,239,191,163, 73,147, 38,181, 41,165,168, 95,191, 62,134, 14, 29,138,157, 59,119,226,193,131, 7,200,206,206,230,207,
-156, 57,243, 19,128, 21, 85,173,184,139,226,215,123,192,128, 1, 87,119,239,222,109,153,158,158, 14,149, 74,133,252,252,124, 28,
- 56,112, 0,109,218,180,129,141,141, 13,118,237,218,197, 82, 74,143, 85,192,165,176,176,176, 56,113,245,234,213,128, 58,117,234,
- 32, 44, 44, 12,231,206,157, 67,141, 26, 53, 32,147,201, 48, 98,196, 8,179, 77,155, 54,125, 78, 8, 89, 38,145, 72, 22, 13, 24,
- 48, 0, 28,199,225,218,181,107,233, 0, 50, 12,248,230,145,149,149,133,172,172, 44, 24, 25, 25,149,254,198, 8,128,109,171, 87,
-175, 30, 61,121,242,100,212,174, 93,123, 17, 33,100, 83, 89, 11, 74,243, 60,255,117,124,124,188,157, 88, 44,118, 96, 89, 22,177,
-177,177,184,123,247, 46, 38, 76,152,144,156,158,158, 30, 64, 41,141, 36,132,108, 12, 12, 12,252,116,213,170, 85,112,117,117, 69,
-108,108,172,219,212,169, 83,119, 18, 66,240,103,139, 44,111,111,203,122, 50, 70, 62, 73, 42,149, 88,103,102,102,150,148, 29, 90,
-173, 22, 26,141,230, 21,203,149, 84, 42,177,110,222,216,253, 55, 85, 65,238,156, 71,145,153,229, 46, 92,238, 91,199,162,129,210,
-216,124,114,175,238,131, 70,116,237,222,143, 97,245,122,156, 62,125, 12,255,251,223, 70,116,240,247, 66,173, 58,245,241,249,196,
- 73,230, 26, 45, 59,235,204,153, 83, 51, 91, 55,175,121, 42, 55, 39,107,118, 69,156, 2,202, 16, 88,101, 43,198,129,156,179, 51,
- 50,139, 62, 24, 27, 75, 75,203,245, 28,199,117, 0, 62,134,196,196, 1, 97,119,111, 33, 35, 83, 2,141,138, 3, 79, 11, 69,150,
- 65,130, 69,163,197,229,211, 71,177,102,245, 74,164,167,167,195,191, 93, 0,242,196,174,112,115,117,131, 90, 85, 80,244,177, 0,
- 58,173, 30,182,246,238,184,119,239,129, 62, 39, 63,191,220,130, 72,170,208,249,184,217,123, 65,163,107, 5,133, 76,134,236, 92,
- 45, 50,139,196,213,174,131,131,161, 41, 80,129,213,234,192,106,245,176,117, 27,128,186,246, 29,193,115,199,234, 85, 41,150,120,
- 14,186, 23,151,161,123,113, 25, 70,173, 38,226,215,165,195, 94, 43,248, 12, 91, 16, 62, 57, 57, 57,213,197,197,229, 84,112,112,
-112,239,193,131, 7,227,226,197,139,163, 0, 76, 45,170,220, 71, 13, 30, 60, 24,193,193,193,136,136,136, 56,149,156,156,252, 78,
-124,118,200,100, 50,117,113, 43, 79,161, 80, 40, 42,185,214,185, 89, 96,160, 40,251,222,189,156,213,215,174, 45,216,186,109,155,
-180,115,167, 78, 68,207,178,224, 57, 14,117, 60, 61, 73,215,174, 93,141,119,238,223,111,205,232,245, 55,167, 79,152,112,110,211,
-200,145,185,183,242,242, 12, 29, 64, 94,163,168,107, 16, 0,106, 84,112,204, 96,104, 52,154,117,227,198,126,212,229,194,197, 75,
-174, 53,220,157, 77,131,206, 93,126, 32,147, 75, 69,181, 60,106, 49, 89, 89, 89,226,175, 22,204, 54,210,104, 52,223, 27, 72,231,
- 99, 99, 99,131,164,164, 36, 60,125,250, 20, 26,141, 6,122,189, 30,124, 65, 62,180,153, 89,208,102,103,128,168, 85,144,115, 28,
-212,105,201,168, 81,171, 38,240,251, 12,195,202, 42,176, 50, 5, 86,241,175,194,204, 12, 82, 99, 19,136, 36, 18,131, 23, 45, 39,
-132, 52,105,222,188,249,254, 95,126,249, 69,250,225,135, 31,182, 32,132,172,167,148, 70, 19, 66, 58,205,155, 55,239,246,250,245,
-235,229, 99,199,142,245, 94,177, 98,197, 7, 0,202, 21,236,106,181,122,255,111,191,253, 54,220,221,221,221,238,225,195,135, 80,
-171,213,224,121, 30, 61,122,244, 0,128,146, 60,243,248,241, 99,149, 90,173, 78, 9, 13, 13,205,137,142,142,214,194,128, 89,127,
- 11,214, 38,220,152, 58,200, 37,208,222,193,249,166,194,168,134, 7,205,187,215,127,234, 32,151,229,171, 14,196,169, 79, 70, 69,
-229,206,251,172,214,178,252,220,144,207, 44, 92,242, 54,156, 60,246,204,144, 89,190,180,120, 90,186,181,181, 53,196, 98, 49, 36,
- 18, 9,164, 82, 41, 0,192,222,222, 30,217,217,217, 21,118, 17,150, 39,176,114,114,114,144,157,157,141,136,136, 8, 36, 38, 38,
-226,198,141, 27,224, 56, 14,133,147, 20, 1, 23, 23, 23,220,190,125,219,180, 89,179,102,115,136,148, 92,160, 58,106,240,180,113,
-134, 97, 38,143, 28, 57, 18, 90,173, 22, 67,135, 14,197,214,173, 91, 39, 3,184, 84,213,252, 78, 41,189, 73, 8,241,124,240,224,
-129, 25,128,247,134, 12, 25,178,125,192,128, 1,184,116,233, 18,142, 29, 59, 22, 0, 32, 18,128, 10,192,210,162,133,149,151, 86,
- 52,193,163,200, 21,195, 70, 91, 91,219,247,234,213,171,247, 96,192,128, 1,126,187,119,239,182, 72, 73, 73, 41,158,212,128, 23,
- 47, 94,224,199, 31,127, 76,220,182,109, 91, 14,199,113,214, 34,145,232,183,172,172,172,242,102, 65, 43,140,141,141, 79, 94,189,
-122,181,125,157, 58,117,112,246,236, 89,204,153, 51, 7,237,219,183,199,158, 61,123, 80,183,110, 93,212,175, 95, 31,118,118,118,
-159,101,100,100,180,222,178,101, 75, 64,203,150, 45,177,107,215, 46, 36, 38, 38,110, 44,207,101, 67,101, 93,117,122,189,158, 0,
-104,177,122,245,234,154,147, 39, 79,198, 47,191,252,130,198,141, 27,155, 63,123,246,108, 69,113, 25,251,154,192, 2,165, 20,207,
-159, 63, 71, 65, 65, 1,174, 92,185,130,175,191,254, 58,181, 88, 92, 1, 64,239,222,189, 63, 93,181,106, 21, 6, 13, 26, 4,157,
- 78,135,169, 83,167, 98,213,170, 85, 56,122,244,232, 55, 0,254, 52,129, 85,215,211,122, 89,243,102,237,103, 58, 58,215,193,174,
-221,123,144,145,145, 81, 18, 39,197,241, 66, 41, 69,110,110, 46,146,146,146, 96,110,102,138,229, 43, 22,245, 28,255,201,104, 87,
- 20,186,179,120,179,160,171,109,181, 98,224,208,143,166, 13, 29, 62, 26, 15, 31, 4, 99,231,246,205, 8,125,120,191,132,143,213,
-235, 16, 25,126, 23,145,225,119, 97,239,224,142,174,157, 3,200,176, 97,195,122,140, 28, 62,196, 22,192, 31,230, 2,226,223,100,
-189, 42,183,139,240,181, 15,198,198,210,210,242,209,190,125,251,172,253,253,253, 25,150,101,113,234,244,105,124,246,233,251,248,
- 96,228, 44,232, 96, 9, 86, 43, 5, 47, 85, 24,244, 64,149,170, 0, 20, 20,249,249,249,184,126,253, 58, 40,207, 98,231,150,149,
-160,148, 47, 17, 88, 0,133, 86,167,131,179,155, 55, 54,110, 93,204, 66, 34, 41,183, 32,203, 73,103, 56, 61, 75, 17,159, 18,131,
-152,196, 80,152,155,186, 65, 44,113, 67,122, 86, 1,196, 34, 7,232,213,143,193, 21,153, 79, 11,242,227,160,210,189, 93,186,113,
-217,111, 90, 73, 41,207, 27,124,127, 65, 65,193,254, 93,187,118,117, 93,181,106,149,180,103,207,158,181, 93, 92, 92,154, 3, 64,
- 96, 96, 96,109, 83, 83, 83,236,218,181, 75, 87, 80, 80,176,255, 29, 90,120,218, 53,107,214, 12, 25, 25, 25,120,249,242,101,133,
- 45, 15, 78,171,181, 54,177,179, 99, 82, 46, 92,208,167,102,102,186,118,236,216,145,232, 89, 22, 34, 66,144,145,157,141,232,151,
- 47, 97, 97, 97, 65, 30, 61,126,108,242,253,231,159, 31,246,242,243, 19, 23,207, 48, 52, 4,199,142, 29, 83,162,112,220, 85,133,
-199,170,248, 65,230, 19, 66, 70,125,254,249,231,135,127,254,121,151,121, 82,114,242, 19,185, 76,206,154,152, 24, 57,142, 28, 49,
- 68,156,149,149, 53,156, 82,154,103, 40, 95,102,102, 38,158, 63,127, 14, 35, 35, 35, 72, 37, 18,240,170, 2,112,249,121, 80,103,
-164,130,209,105, 33,227, 56, 88, 41,229,112,181,183,135,155,173,141, 65,156, 79,207, 7,149, 12,104, 47,221, 45,184,188,185, 15,
-100,198, 38,144,153,154, 96,252,241,139, 69,173, 79, 41, 48,175,242,158, 97, 66,136,141,179,179,243,175,187,119,239,150,166,166,
-166,226,254,253,251, 15, 40,165,217,132, 16, 83, 0,124,120,120,248,217,208,208,208,222, 69,179,232, 42,155,253,181,242,208,161,
- 67, 93,252,253,253, 89, 15, 15, 15,227,228,228,100,183,244,244,116,146,152,248,234, 24,230, 19, 39, 78, 40, 84, 42, 85, 62,207,
-243,135, 81,232,199,169, 82,255, 67, 83, 7,185, 40,174,223,195,196,246,221,106,212, 55,179,105,128, 12,246, 94,253,155, 15, 18,
- 39, 78, 29,228,178,110,213,129, 56,181, 17,209,108, 39, 92,172,171, 88,161,222, 97, 96,122, 83, 27, 27, 27, 80, 74,113,251,246,
-109, 92,189,122, 21,151, 47, 95, 70,116,116,244,239, 86,109,115,115,156, 57,115, 6, 29, 58,116,168,202,119, 9, 71, 71, 71, 88,
- 90, 90, 98,231,206,157,216,179,103, 79,201, 64,247, 98,164,165,165, 65,169, 84, 98,213,170, 85, 38, 3, 7, 14,252, 6, 64, 87,
- 3,133,112,205, 46, 93,186,244,114,116,116, 68,122,122, 58, 28, 28, 28,224,239,239,223,135, 16,226, 65, 41,125, 81,205,172, 63,
-190, 91,183,110,139,190,254,250,107,232,245,122,140, 25, 51, 6, 79,158, 60,217,255,228,201,147, 53,110,110,110, 19,103,204,152,
- 97,111,111,111,143,193,131, 7, 27, 3, 8, 44,143,196,202,202,106,233,230,205,155,135,247,234,213, 75,164,211,233,218,157, 63,
-127, 30, 47, 95,190,132, 86,171, 5,203,178,136,138,138,194,132, 9, 19, 18,211,211,211,219, 83, 74,163, 12, 8,215,172,160,160,
-160,246, 62, 62, 62, 56,126,252, 56, 2, 3, 3, 47, 88, 88, 88,120, 53,104,208,192,209,201,201, 9, 7, 14, 28,128,153,153, 25,
-220,220,220,172, 22, 47, 94,220,177, 95,191,126, 56,126,252, 56,166, 76,153,114, 17,192,178,234, 68, 4,207,243,100,245,234,213,
-126,171, 87,175,118, 41, 22, 87, 34,145, 8,251,246,237,195,131, 7, 15,250,150, 37,176, 40,165, 11, 28, 29, 29, 23, 56, 58, 58,
- 42,130,130,130,204,107,212,168, 1,150,101,181,148,210, 72, 23, 23,151,120, 39, 39, 39, 11,185, 92,142, 57,115,230, 32, 39, 39,
-231,131,199,143, 31,239,108,216,176, 33, 29, 49, 98, 4,124,124,124,156,255,204, 74,154, 17,145, 81, 75, 22, 78,199,157,123,143,
-113,232,144, 20,119,238,220,129,189,189, 61,228,114, 57, 40,165,208,104, 52, 72, 77, 77,133, 94,167, 65,253,122, 53,177, 99,219,
- 50,164,164,164, 2, 34, 82,238,208, 26, 34, 34, 35, 70,191,223, 31, 87,174,158,198,166, 77,155,145,151,151, 95, 78,163, 91,129,
- 58, 94, 62,112,118,178, 67,108, 92, 44,136, 8, 54,127,228,187,254, 71,186, 8,127,135,133,133,197,154,189,123,247, 90,119,232,
-208,129,201,207,207, 7,207,243,104,235,239,143,137,147, 39,227,216,238,221,240,108, 49, 20, 68,107, 2, 86,105,216, 44, 6,181,
-170, 0,190,141, 91, 99,208,224, 33,136,137,142, 70,183,222, 3,160, 86, 23,148,180, 40,138, 45, 88, 90,173, 14, 54,118,174, 8,
- 10, 10, 98, 48,102,204,163,114, 69,129, 78, 22, 18, 25,165,110,147,165,186,135,235,119,118, 66,167,209,161,126,253,121,208,241,
-214,176,115,249, 4,122,253, 17,228,164,158, 47,236,174,176,238,128,184,152, 24,136, 24,233,163,234, 70, 24,159,159, 90,229,214,
-213,107, 21,120,142,163,163,227,209, 27, 55,110, 12, 10, 12, 12,196,153, 51,103, 62, 40, 18, 88,184,113,227, 6,158, 63,127,126,
- 52, 51, 51, 51,231, 93, 36,174,139,139, 75,143,128,128,128,192,102,205,154,225,248,241,227,224, 56,238,186, 65, 31,180, 68, 66,
- 69, 34, 17,120,158, 7, 1,144,158,149,133, 39, 79,158, 32, 61, 45, 13,122,189, 30,249,121,121,188,143,151, 87, 30,229,121,211,
-170,132,167,244,140, 65,148, 49,139,176,248, 88, 53, 68, 86,180,137,137, 73, 76,110, 94,158,173,153,165, 85,174, 66, 38,227,178,
-179,178,179,195, 30, 61,212, 26, 88, 41, 20, 35, 60, 52, 52,212, 47, 33, 33, 1, 49, 49, 49, 96,243,115,193,104,180, 16,105, 10,
-208,169,117, 43, 24,129, 66, 1, 30, 18, 94, 15, 9, 35, 65,110,225,108,187,240, 74, 69,185, 94,255,134, 37,139, 16, 82,216, 45,
-104,108, 12,153,137,233, 43, 22, 45, 67,242,147, 92, 46,223,125,224,192, 1, 71,103,103,103, 44, 92,184, 16, 46, 46, 46,117,235,
-215,175, 95,208,182,109, 91, 35,123,123,123,248,250,250,162,117,235,214, 56,121,242, 36, 0, 68, 85, 18,127, 44, 33,164,235,149,
- 43, 87,166, 93,187,118,109, 16, 33,132,204,154, 53, 11,221,187,119,135, 66,161, 64, 65, 65, 1, 50, 51, 51,177,101,203, 22, 66,
- 41,109, 92, 20, 86,119,133, 66,177,135, 16, 18,167, 82,169, 6,191,206,185,115,117, 3,167,148, 12,126,140,189,131,115,255,246,
-221,106,212,239,216,173, 51,106,122,118, 68,199,110, 49, 0,176,204, 74,252,114,232,242, 47,253, 14,219,184, 90,253, 24,116,234,
-204, 2,255,246, 29,231,206, 26,107,185,104,217,230,202,243, 62, 33, 4, 28,199, 65, 44, 22, 67, 36, 18,149,105,165, 18,139,197,
- 96, 24,195,134,162,112, 28, 23,215,175, 95,191,146,253,132,132, 4, 27, 87, 87, 87, 81,177,229, 10, 0,178,179,179, 17, 27, 27,
- 11,189, 94, 15,107,107,107,232,116,186, 6, 85,200, 87, 19, 63,252,240, 67,162, 82,169,240,209, 71, 31, 97,235,214,173, 24, 58,
-116, 40,185,116,233,210, 68, 0,147,171,154,223, 69, 34,209,242, 25, 51,102, 76,155, 48, 97, 2, 50, 50, 50,112,226,196, 9,244,
-232,209, 3,251,246,237,179, 61,113,226,196,146, 14, 29, 58,128, 97, 24, 28, 63,126, 28, 44,203, 62,174,136, 75, 42,149,190,215,
-171, 87, 47, 81,108,108, 44,164, 82, 41,154, 54,109,138,184,184, 56, 20, 20, 20, 32, 62, 62, 30,147, 38, 77, 74, 42,178,234, 68,
- 25,144, 46,146, 58,117,234, 76,168, 91,183, 46,206,156, 57,131,129, 3, 7, 94,210,235,245,189, 82, 83, 83, 39,100,102,102,126,
- 55, 98,196, 8,248,249,249, 33, 50, 50, 18, 93,186,116, 65,155, 54,109,112,226,196, 9,124,244,209, 71, 23,245,122,125,175, 10,
-252, 96,229,166,164,164,152,215,174, 93, 27,201,201,201,200,203,203,195,141, 27, 55,204, 46, 94,188,232,225,228,228,100,241,236,
-217, 51,250,229,151, 95, 42, 39, 79,158,140, 53,107,214,224,254,253,251,216,185,115, 39, 58,118,236,168,127,250,244,105,153, 86,
-214,180,180,180,205, 0, 54, 91, 89, 89, 37, 27, 27, 27, 35, 55, 55, 23, 38, 38, 38,159,184,184,184,196, 95,191,126,221,201,213,
-213, 21,233,233,233,248,244,211, 79,161, 82,169,224,230,230, 86,103,241,226,197,136,141,141, 69,102,102,230,159, 90, 73,243, 28,
- 15,128,135,135,171, 9, 78, 31,219,134,224, 7,207, 16,252, 32, 20, 50,121,225,224,118,149,170, 0,141,235,215, 65,139,166,205,
-145,144, 24,143,159,119,110,131,149,141,115,133,229, 8,165, 20, 82, 49, 7, 31, 47, 7,236,222,185, 25,199, 79,156,195,206,159,
-247,148,140,105, 19,139, 37,104,212,184, 5,154, 54,245,199,179,231, 81,216,182,109, 19,108,237, 92,133, 62,191,234,118, 17,150,
-254,125,173,117,208,209,223,223,159,201,203,203,131, 90,173, 70, 82, 82, 18, 94,190,124, 9, 11, 75, 11, 60, 75,120,129, 0,165,
- 14, 73,124, 14,194, 31, 60,226, 8, 35,185, 95,217, 3,123,181,111, 4,180,111,132,207, 62, 28, 90,126,226,131,194,216,204, 6,
- 26,141, 6, 58,189,254, 41,214,173, 43,183,165,204,114,250,179,167,207,156,111,254,225, 7,239, 73,130,206,111,133, 94,203, 67,
-165, 55, 71,190, 90,139,124,157, 4, 34,243, 30, 64,218, 37, 48, 98, 57, 90, 54,172,131,195,135, 78,234, 40,171, 63,103,112, 4,
-217,251,129, 77, 14, 45, 37,176, 82, 94, 57,175, 48,181, 50,184,139,176, 84,156, 30,222,189,123,119,207, 86,173, 90, 41, 59,116,
-232, 80,171,168,194,212,238,222,189,187,160,200, 58, 80, 85,213,255,138,247,118,103,103,231, 6, 98,177, 56,176,119,239,222, 13,
- 70,143, 30,141, 71,143, 30, 97,215,174, 93, 79,189,188,188,174, 86, 40,172,100,178,244,188,148, 20, 11, 19, 15, 15,177,165,169,
-105,194,201, 19, 39,220, 59,119,233, 66, 98, 98, 98,144,158,158, 14,181, 90,141,251, 15, 30, 80, 9,195,196, 17, 51, 51,209,227,
-123,247, 68,140, 76,150, 94,133,160,190,172,100, 22,225,210,234, 90,179, 92, 29, 45,107, 47,152, 61,174,166, 90,173,246,203,201,
-201, 97,197, 18,137,196,197,193, 34,186,138,221,141,199,207,158, 61,219,175,115,231,206,242,200,144,251, 96,179,179,161,205,206,
-132,148,231, 96,213,184, 33, 24,157, 6,208,234,225,236, 67,161,206, 82,226,210,173,199,122,141, 70, 83,233, 74,237,197, 2, 75,
- 84,202, 25, 32, 0,200, 76, 76, 32, 55, 53,131,220,196,228,245, 46, 68, 82, 73,122, 43,223,123,239,189, 78, 45, 91,182, 4,165,
- 20, 91,182,108,129, 78,167,147,233,116, 58,104,181, 90,232,116, 58,228,228,228, 96,231,206,157,216,184,113,227, 53, 0, 63, 25,
- 32, 82, 89,137, 68, 50,129,101, 89, 59,185, 92,174,179,181,181,149,238,223,191,191,196,109, 68,163, 70,141, 96,108,108,172, 33,
-132,232, 0,192,193,193, 65,191,125,251,118,113,223,190,125,165,101,241,121,215,175, 59,189, 38,107,217, 94, 97, 84,195,195,204,
-166, 1,106,122,118, 4, 0,116,233,253, 33,106,214,113, 67, 78, 90,136,135, 90,245,178,191, 84,156,105,249,104, 93,124,152, 81,
- 47,191,209,249, 41, 23,159, 0,216,102,224, 55,132,206,157, 59,163, 91,183,110, 37,221,129,118,118,118,208,106,181,101, 78,231,
-175, 8,197, 78, 68,191,254,154,136,176, 0, 88,109,110,150, 4,192,182,180,184,138,137,137, 65, 76, 76, 76,177, 85,184,210, 52,
- 42,149, 86, 70,158,158,158,163, 26, 55,110,140, 19, 39, 78,224,206,157, 59,241,167, 79,159,118,246,247,247,135,135,135,199,104,
- 66,200, 28, 74,203,247,161, 87, 86,151, 94,187,118,237, 62,159, 48, 97, 2, 66, 67, 67, 49,110,220,184,244,216,216,216,195,251,
-247,239,255,104,193,130, 5,162,110,221,186, 33, 49, 49, 17,203,151, 47,231,174, 94,189,186, 2,192,194, 74,210, 61, 34, 54, 54,
-214, 69,173, 86, 35, 35, 35, 3, 44,203,162,160,160, 0, 39, 79,158,196,206,157, 59,139,199, 35, 61, 53, 48,120, 86,254,254,254,
-150, 79,158, 60,193,182,109,219,160,213,106,231, 82, 74,213,132,144,159,102,206,156, 57,199,222,222,222,188, 75,151, 46,104,220,
-184,208, 23,220,190,125,251, 48,105,210,164,139, 90,173,182, 87, 37,113,176,202,193,193,225,147,113,227,198,213,157, 58,117, 42,
-162,163,163,205, 78,156, 56,209,230,250,245,235,164, 88, 8, 89, 91, 91, 99,205,154, 53,152, 50,101,202, 79, 0,146,111,221,186,
- 53, 42, 42, 42,234, 27, 74,233,166, 74,222,127,129,139,139,203, 2,158,231,149, 93,186,116, 57,185,114,229, 74, 50,104,208, 32,
-104,181,218, 18,215, 7,150,150,150, 59,100, 50, 25,218,182,109,139,105,211,166,129, 97,152, 17,127,118, 69, 77, 41,135,130,204,
- 80,112, 26, 75, 52,170,239,141, 70,126, 53,112,250,124, 48, 0,160,211, 0,127, 20,228,231, 98,251,246, 45,120,250,244, 9,196,
- 18, 9, 44,172, 28, 12,250,134,180, 57, 17,200,210, 37,162,115,135,166,232,209, 45, 0, 63,237,216, 7, 86,175,195, 71, 31, 14,
- 71,102, 86, 22,118,236,216,134,103,207,163, 32,150, 72, 96,109,227,244, 39,188,103,249, 90,228, 95,105,193, 42, 46, 80,120,158,
- 71,124,124, 60,238,222,189,139, 23, 47, 94, 64,169, 84, 66,197,114,252,166,179, 87,121, 66,164,113, 60,165,215, 40, 91,226, 85,
-248, 77, 14,142,139, 47,229, 97,214,220,210,210, 82,166,209,168,192,178,250, 82, 37, 21, 1, 8, 32, 21, 3,142, 78, 53, 17, 27,
- 19, 75, 85,106,245,197, 10, 91, 96, 26,245,154,163,135, 15, 76,104,221,198,223,166, 71,167,175,113,248,200, 60,100,230,228, 64,
-173,147, 32, 95,173, 67,129, 26,176,176,242, 66,179,250, 13,144,144,144,142,144, 59,151,242,196,154, 2, 67, 6,128, 62,249,126,
-238,135,158, 31,126, 54, 29, 70,238,109,160, 9, 63, 12, 62, 47,185,196,130,165, 48,177,132,149,155, 15,178,242, 53, 56,112, 46,
- 24, 0, 12, 94,146, 37, 57, 57,185,192,209,209,241,224,248,241,227,151,221,191,127,175, 38, 0,220,190,125,251,121, 66, 66,194,
-172,228,228,228,130,170, 36, 96, 41,239,237,196,200,200,232,150,167,167,231,139, 30, 61,122,152,245,235,215, 15,182,182,182, 8,
- 14, 14,198,183,223,126,251, 68,171,213,206,191,120,241, 98,133, 93, 58, 90,173, 54, 62,248,200, 17,179,128,247,223,183,152,222,
-167,207,242, 9, 19, 38,172, 89,184,112,161,196,211,211,147,232,117, 58, 60,124,248,144,238,222,181, 75,191,113,246,236,213, 50,
- 99, 99,241,237,163, 71, 37,172, 70, 19,255, 87,103, 98, 23, 23,151,246, 61,187,183,247, 89,177,106, 29,212,170, 60,220,186,254,
- 27, 50, 51, 83,177,121,203, 33, 31, 23, 23,151,246,113,113,113,151, 12,180,100,236,251,241,199, 31,167,181,104,220,184,113, 45,
- 87, 87, 60,140,126, 1, 25,207, 65,202,178, 96,116, 26,136, 88, 53, 92,253, 40,136,200, 20,137, 73, 57, 88,188,247, 96, 40,199,
-113,251, 42,227,173,219,243, 61, 44,140,203, 6, 33, 4, 43, 91,249, 65,102,106, 2,169,177, 9,198,255,122,190, 68, 84, 29, 95,
- 56, 27, 50, 19, 19,212,110,225,111, 72, 33, 84, 96,106,106,122,247,225,195,135,205,252,252,252, 48,109,218, 52,188,124,249, 18,
- 60,207, 35, 57, 57, 89,157,152,152, 24,159,154,154,250, 18,192, 97, 0, 91,169,129, 45, 0,150,101,237,130,131,131, 1, 64, 10,
- 0,231,206,157,131,147,147, 19,204,205,205,145,147,147,131,233,211,167,203,231,207,159, 15, 0,184,123,247,174,164,120,128,113,
- 89,120, 24, 28,190, 34, 43,151,102,210,188,123,253, 51,216,123,245, 59,118,139, 69,151,222,163,113,230,248, 79, 56,127,250, 44,
-172,196, 47, 95,192, 56,247,100,218,139,180,156,184,124,207, 31,124,154,124,196, 36,230,159,254, 97, 98, 95, 75,198,209,145, 63,
- 48,107, 99,118, 86, 37,113, 0,134, 97, 74,198, 96, 21, 15,104,175,170,184, 42,141, 5, 11, 40, 79, 64,136,141, 76, 26, 18, 27,
- 27,219,197,197,197, 5,201,201,201,136,141,141, 69, 76, 76, 12, 98, 99, 99, 81,167, 78, 29, 60,123,246, 12, 82,169,244,190,129,
-180,195, 7, 15, 30,108,170,213,106,177,103,207, 30, 22, 64,239, 3, 7, 14,220,109,214,172,153,184,123,247,238,166, 27, 54,108,
- 24, 14, 96,107, 21,130,105,108,102,102, 38,213,233,116,216,176, 97, 3, 98, 99, 99,219, 83, 74,195, 9, 33, 63, 12, 30, 60,120,
-163,159,159, 95,157,208,208,208, 39,121,121,121,227, 41,165, 33, 6,148, 69, 31, 54,109,218,244, 0,207,243,238,157, 59,119, 54,
- 94,181,106,149,217,227,199,143,225,226,226, 2,158,231, 31, 86,113,169,169,140,179,103,207,102,182,110,221,218,178,104, 64,251,
- 98, 66,200, 55, 12,195, 44, 11, 12, 12, 52,223,189,123, 55, 78,156, 56, 1,173, 86,139,136,136,136,212,208,208,208,239, 1,172,
-168,104, 2, 70, 81, 90, 63, 7, 48,147, 16,210,224,135, 31,126, 24,234,236,236, 60,252,250,245,235,228,202,149, 43, 88,185,114,
- 37, 59,111,222, 60,113,145,248,121, 14,224,163,162,252, 62,199,192, 30,133,205, 0, 54,187,184,184,196,175, 92,185,210,244,202,
-149, 43, 72, 74, 74,242, 4,208,162, 89,179,102, 59, 54,109,218, 4,107,107,107,196,198,198,162,117,235,214, 28, 33,100,132,165,
-165,229,190, 6, 13, 26, 32, 36, 36,228,207, 42,226,244, 58,157, 22,102, 86, 53,145,151, 21,131,212,216,235, 80,154, 58,160, 91,
-199,134, 40, 80,105,113,236,232, 47, 8,121,248, 0, 34,145, 8,246, 14,174,176,176,180, 65,100,228, 19, 0, 8,171,152, 83, 7,
- 83,203, 26,200,203,142,133, 54, 37, 24, 70, 38,118, 24,253,126,127, 20,168,116, 56,116,248, 23,132,134,134,128, 97, 24, 56, 56,
-186,194,220,162,144,147,208, 10, 57, 5, 84, 85, 96, 49, 12,115,225,212,169, 83, 3, 91,180,104, 33,126,250,244, 41,158, 62,125,
- 90,156, 49, 89, 2,238, 96,114,200,145, 97, 21, 84,254,157,139,125,101,148, 94, 91,208,196,212, 52,254,113, 68,184,125,102, 70,
- 50, 30,220,187,138,167,145, 15,241,226, 89, 56,116, 58, 53, 24,145, 8, 34, 70,132, 26, 53,235,225,234,181,235, 90, 45,199,221,
- 40,143, 19, 0, 50, 50,162,114, 77,236,189,134, 44, 90, 56,231,248,148,233, 95, 25, 13, 26,184, 9, 33,143,195,144,199, 58,128,
- 82,192,193,218, 24,141,106,205, 64,124, 66, 42,246,254,180,161,128,215,233, 70,148,246,129, 85, 22, 39, 0,216,167,193,119,227,
-150,159,198,108,221,185,251,171,233,159,143,181,239, 27, 56, 2,178,140, 48,232, 19,130, 81,179, 89, 15, 16,185, 5, 78, 4,157,
-199,165,187, 97,201, 60, 71,191,178, 79,199,255, 42,227, 44,141,236,236,236, 59,201,201, 73, 53, 75,121,109,175, 41,151, 43,238,
- 84, 34,166, 58,191,230, 23,232, 21, 15,241, 12, 35,106,177,112,225,194,124, 71, 71, 71,109,104,104, 40,126,248,225, 7,254,238,
-221,187, 23,100, 50,217,230,132,132, 4, 77,101,156,182,122,253,131,221,179,102,249, 54, 15, 12,164,195, 62,255,188, 0,114,249,
-196,229, 43, 87,206, 74,205,204,116,162, 60, 15, 91, 43,171,184,229,179,103, 47, 29, 56,120,112,230,163,171, 87,141,174, 31, 57,
- 98, 36, 99,217,224,202,194,249, 46, 80, 17,103, 92, 92,220, 37,207,218,110,216,190,117, 21,116, 58, 13, 18,227, 11, 13, 87,105,
-233,217,168, 72, 92,189,206, 89,212,249, 31,248,229,252,249, 55,191,156, 50,217,161, 93,167,206,136,121,112, 31,186,140, 84, 16,
- 61, 11, 9, 17, 35, 63, 69,137,148,228, 60,204,252,121,127, 74, 94, 65, 65,224,235,142, 28,203, 11,103,177,133, 74,110,102, 10,
-169,177, 9,100, 38,166,175, 88,173, 20,102,102,144, 25,155, 64, 44,147,149, 53, 24,254, 13,206,188,188,188, 1, 3, 7, 14, 12,
-185,125,251,182,229, 71, 31,125,132,214,173, 91,223, 83,169, 84, 29, 40,165,185,213,141, 79,177, 88,156,210,164, 73, 19, 59,137,
- 68,194,142, 25, 51, 70,156,150,150, 86,226, 9, 61, 47, 47, 15, 39, 79,158, 68,241,148,251, 71,143, 30,161, 94,189,122,229,114,
-126, 52,227, 97, 60,128,133, 83, 7,185, 44,191,249, 32,113, 34,128,101, 53,235,184,226,252,233,179,184,114,254,250,172,150,126,
-252,186,158, 35,154,125,163,236, 48,120,186, 79,147,143, 24, 19, 51, 71,236, 56,244, 11, 19, 30,188,109,113, 65,193,195,218, 0,
-190, 40, 47,156, 69,179,184,222,112,201,160, 82,169, 12, 18, 87, 21,229, 37, 10, 74,165, 89,100,206,160, 65,131, 90,220,186,117,
-203,212,196,196, 4, 58,157, 14,148, 82,212,174, 93, 27, 98,177, 24,223,127,255,125,126, 90, 90,218, 60, 67, 56,141,141,141, 39,
-116,235,214, 13, 17, 17, 17,184,115,231,206, 47,148,210, 16, 66,200, 47, 79,159, 62, 29,210,182,109, 91,252,244,211, 79, 19,202,
- 19, 88,229,113,242, 60, 95,218,231, 81, 70, 81,222,125, 0,160,101, 85,223,189,200, 89,104, 27, 0,176,182,182,142,181,183,183,
- 55,123,240,224, 1,220,220,220,160,211,233, 90, 84, 37, 47, 81, 74,245,132,144,245, 23, 47, 94,156,223,166, 77, 27, 76,152, 48,
-161,253,197,139, 23,219,183,105,211, 6, 62, 62, 62, 56,127,254, 60,118,237,218,117,144,227,184,241, 0,178, 40,165, 92, 85,210,
-168, 72, 48,134,212,175, 95,127,184,171,171, 43, 86,174, 92,169, 11, 9, 9,153,180,104,209,162,213,247,239,223,151,215,171, 87,
- 79, 20, 18, 18,194, 87, 39,221, 45, 45, 45, 81,204,105, 97, 97,241, 84,171,213,182,144,201,100, 24, 48, 96, 0, 52, 26, 13, 18,
- 18, 18, 56, 43, 43, 43,241, 95, 81,214, 81, 66,230,126,244,241,196, 31, 62,254,104,184,162,105,147, 70, 40,200,137,131, 42, 47,
- 25, 5,185, 73,248,126,107, 16, 8, 17,193,214,214, 17,118, 14, 46,136,142,142,193,181,223, 78,104,243, 11, 84,107,100,122,126,
- 89,197,156,159, 23,114, 54, 46,228, 44,200, 79,129, 42, 47,165,132,211,206,206,169,136, 51, 26, 87,175,159, 80,171,242,243, 87,
-105, 41,249,238,143,124,247,255,156,192,202,204,204,156, 52,118,236,216, 14, 51,103,206,180,102, 89,150,177,178,178, 66,116,116,
- 52,123,240,224,193,140,188,188,188, 73,213,122,168, 68, 18,226,233,229,221,161,111,223,190,236,123,239,245,145,142,252,176,187,
-216,214,206, 14,217, 89,233,136,140,184,143,199, 97,193,240,244,110,136, 5, 11, 87, 3, 22, 22,149,206,212,201, 75,142,188, 96,
- 98,239,213,251,235, 47,191,216,215,166,125, 87, 51,239,122, 13,165,141,106,155, 67,167,103, 17, 23, 23,135,163, 71, 30,232, 66,
-239, 94,201,225, 89,237,144,252, 84,195,150,202,185, 88, 56,128,119,115,125,123,178,107,201,242,239,167,109,216,188,125,250,204,
-137, 31, 25,183,245,239,130,135,103,127,194, 47,199,247,229,171, 53,218,229, 82, 6, 43, 31,166,209,130,170,198,129, 90,173,214,
-191, 62,116, 68,173, 86,235,223, 54, 65,183,111,223,142,164,164, 36, 93,108,108,236, 89,150,101, 15, 87,101, 54,226, 58, 74,181,
-129,132,156,253,210,223,191,251,151,167, 79, 43, 70,205,152,161, 29, 49,114,228, 23,208,104,116,144,201,168,216,216, 88, 4,185,
- 92,242,232,234, 85,163,181,159,126,106, 69,180,218, 51, 63, 85,210,250,124, 13,239,124, 22, 97, 41, 11, 22, 70,125, 52, 5,170,
- 82, 22,172, 27,119, 34, 81, 21, 11, 86, 81, 33, 30, 67, 8,105, 57,113,238,151,135,134,116,235,228,227,231, 94, 67,110,235, 81,
- 3, 38, 14, 14, 72, 79, 77,197,213, 59,143,245, 11,247, 29, 10, 45, 18, 87, 6,249,133,225,121,190,100,150, 91,167, 73, 51, 65,
- 24, 6, 40, 18, 2,197, 51,129, 60,154,181, 6, 17,139,193, 81, 30, 26,141,134, 26, 16,206, 56, 66,200,128, 17, 35, 70,156, 59,
-126,252,184,168, 91,183,110,141, 14, 31, 62,204,191, 77,222,209,235,245, 46, 69, 66, 43, 71,169, 84,138, 71,143, 30, 13,189, 94,
-143,130,130, 2,100,103,103, 35, 60, 60, 92, 51,104,208, 32,121,145,112,208, 15, 25, 50,164,210,242, 99,213,129, 56,245,212, 65,
- 46,235,172,196, 47,135,230,164,133,120, 88,137, 95,190,104,233,199,175, 91,117, 32, 78,253,245, 20,139, 69,105, 47, 47, 69, 38,
-230,159,254, 97,199,161, 95,152, 15,250, 15,224, 92, 76,158,204, 82,216,209,131, 29,251, 84, 90, 9,189,225, 84,244, 45, 60,224,
-191, 2,157,142,222,179,182,182, 92,218,188,121,243, 57,171, 86,173, 50,177,181,181, 5,203,178,120,254,252, 57,214,175, 95,159,
-159,153,153,185,152, 82,122,215, 16, 46, 47, 47, 47, 15,177, 88,140,189,123,247, 2,192,250,162,195,235, 15, 31, 62, 60,228,163,
-143, 62, 66,141, 26, 53,124, 9, 33,114, 90,133,239,136, 82, 90,210,171,240,142, 43,246,103,107,215,174,117,118,112,112, 32, 39,
- 79,158,100, 25,134, 57, 86, 13,154,165,187,118,237,106,197,243,124,167,182,109,219,162, 78,157, 58,197, 22, 79, 28, 57,114,100,
- 31,199,113, 35, 42, 18, 86,134, 32, 60, 60,252, 74,108,108,236,208,105,211,166, 73, 87,173, 90,181,122,234,212,169,242,216,216,
- 88,132,133,133,221,122, 11,206,107,177,177,177,131,139, 56,213,102,102,102,242, 37, 75,150, 96,202,148, 41, 52, 34, 34, 98,148,
-149,149,213,206,191,170,146,142,120,146,190,179,126, 45,251,211, 11, 23,173,154, 95,187,150,199,184, 49,163, 7, 51, 94,158,245,
-144,159, 29, 7,107, 27,123,184,184,214, 68,106, 74, 26, 78,157, 58,201,165,165,101,253,200,137,200,215, 79,158,164, 39,188, 13,
-167,179, 75, 77,164,164,164,224,196,137, 19, 92, 86,102,206, 22,232, 69, 11,195, 94,102, 38, 67, 64,149,251, 60, 43,221, 0,216,
- 88, 90, 90,238, 49, 51, 51, 75, 54, 51, 51, 75,182,180,180,220, 3,192,198,128,251, 58,151,252,167,148,121,101, 27, 56, 80, 1,
-133,162, 37,196,226,169, 22,150,150, 39,205,205,205,211, 3, 2, 2,180, 63,252,240,131, 58, 60,252, 17, 31, 31, 31, 75,205,205,
-205,115,138,175, 47,139,243,245,205,210,178,150,169,177, 99,189,249,230, 46,141,174,154, 56,250,230,154, 56,250,230,154,187, 52,
-188,102,236,232,251,149,165,101, 45, 83, 67,194, 89,222, 86,211, 14,182,158, 54,216,224,109, 75, 84,158, 54,216, 80,211, 14,182,
-134,190,123, 5,215, 44, 37, 4, 28, 33,224, 80, 56,157, 26, 85,229, 44,197,193, 51, 12,243,147,155,155,155, 3, 0,198,144,116,
- 45,143,115, 36, 80, 99,164, 92,254,241,129, 89,179, 70,189,184,120,113, 68,206,243,231,195,178,159, 61, 27,124,127,223,190, 33,
-235,135, 12, 25, 57, 76, 46,255,100, 32, 80,203, 80, 78, 71, 71,199,165,193,193,193,199, 13,221, 28, 29, 29,151, 86, 53, 62,107,
-213,116, 62,221,173,115, 11, 58, 97,108, 32,157, 48, 54,144,118,235,220,130,214,170,233,124,186,186,105, 4,128, 48, 12, 51, 84,
-169, 84,238, 49, 86, 42, 31, 26, 43,149, 15,149, 74,229, 30,134, 97,134, 2, 32,134,114, 90, 91, 91,223,181,183,183, 79,174,202,
-102, 99, 99,115,175, 10,225, 28,230,225,225, 17, 43, 18,137, 86, 27,154,230, 6,112,182,102, 24, 38, 27,128,174,244, 38, 22,139,
-227, 74, 93,227, 46,151,203,111, 40, 20,138,253,134,112,126, 55,183,222,252,107, 65,159,133,124, 55,183,222,252,215,207,125,222,
-207,242,195,155,231,190, 78,255,188,159,229,135,134,132,211,206,206,238,162,157,157, 93,162,157,157, 93,162,189,189,125,133,155,
-141,141,205,221,234,124,155,148, 82, 64,130,102, 54, 54, 54, 65,102,102,102,169,102,102,102, 41, 54, 54, 54,167, 1, 52,173, 74,
-124,138, 68,162,101,190,190,190,106,134, 97,254,247,218,245, 43,106,215,174,173, 22,139,197,203,171,248,189,155,181,109,219,150,
-123,240,224, 1,109,223,190, 61, 5, 96,249, 14,211,221,193,210,210,242,164,153,153, 89,140,169,169,233,247, 0,140,171,195, 89,
-212,197, 60,171, 86,173, 90, 73, 1, 1, 1,180, 86,173, 90, 49, 0, 62, 3, 32,122, 71,225,108, 18, 24, 24,168,139,137,137,161,
-148, 82, 26, 19, 19, 67, 3, 3, 3,117, 0,154,188, 5,103,179,114, 56, 71,190,109, 57, 95,213,173, 34, 78,159,154, 54,181,234,
-214,177,220, 63,124,128, 63, 31,116,116, 53, 93, 48,103, 28,237,210,190, 30,245,174,109,121,200,211,211,218,243, 93,112,206,159,
- 51,150,118,110,231,203,251,212,178,220,231, 83,211,166,214,159,249,238,255,182,141, 84,115,169,170, 42,155, 58,137, 33,222,101,
-157,156,156,144,158,222, 66, 33, 22,251,203,229,242, 14, 34,145,232,114, 70, 90,218,231,133,166,123,112,127, 69,247,211,235,168,
- 93,155,200,202, 91, 58,160, 58,156,175, 15, 80,175, 14,103, 85, 56, 12,229, 44,111,177,103, 94,163, 73,176,102,217,187,235,104,
-249,113,240, 58,167,139,139,203,199, 60,207,123, 24, 26, 38,145, 72,244, 34, 46, 46,110,107,117,226,211,203,203,139, 62,121,242,
-196,160, 65,146,127,117, 94,250, 47,113,238, 92,221,192,201,187,126,221,233, 15,131,195, 87, 20,117, 31,150,224,235,137, 86,166,
-254, 29, 3,230, 93, 61,127,241,155, 5,235, 50,114,255,109,239, 78, 8, 17,149, 53, 14,174,120, 46,122, 85, 57,165, 82,233, 15,
-205,155, 55,255,248,230,205,155,255, 99, 89,246,147,191,235,187, 23, 45,109, 36,163, 85,179,114, 27, 20, 78, 66, 72, 19,134, 97,
-166,250,250,250,182, 8, 11, 11,187,197,113,220, 42, 74,105,240,223,141,243,143,202,159,190,158,214, 77, 41, 45,113,150,189, 56,
-252,105,250,237,119,198, 73,121,142,167,204,162,199,207,210,238,253,217,239,254,159,235, 34,124,103,150,178, 34,129, 84, 33, 18,
- 18, 98, 1,196, 2, 56,240,119,141, 48, 67,196, 85, 21, 45,136,201,127, 7,142,178,186, 11, 1, 92,127, 23, 92,175,139,165, 63,
- 18,145,145,145, 68,248,172,255,126,120,127, 74, 72, 2,128,201, 77,203,112, 77, 85, 36,170,166,119,120,239, 95,219, 75,192,151,
-115,188, 90,173, 91,157, 78, 55,142, 16, 50,181, 42,179, 15,255,162,247,166, 0, 52,127, 16,119, 48,128, 97,127,119,206, 63, 10,
- 97, 79,210,239, 2,232,243,119,231,252,175, 67, 36, 68,129, 0, 1, 2, 4,252,227, 68,155, 74,136, 5, 1, 2,254,222, 32, 0,
- 58,151,243, 1, 27,108,250, 35,132,116,174, 70, 1,113, 86,224, 20, 56, 5, 78,129, 83,224, 20, 56, 5,206,255, 22,231,127,169,
- 37,244,135,109,248,147, 7, 0, 10,156, 2,167,192, 41,112, 10,156, 2,167,192,249,207,228,252,183,109, 66, 23,161,128, 63, 28,
-223, 7, 18,231,239, 3,137,243, 31,117,189, 0, 1, 2, 4, 8, 16,240,119,131,248,175, 14, 0, 33,196, 9,133, 14,242,106, 3,
-120, 12,224, 10,165, 52,243, 45,248,108, 0, 12, 38,132, 12, 42,178,208, 29, 0,176,159, 82,154,102,200,253, 70, 70, 70,201,106,
-181,218, 14, 0, 20, 10, 69,138, 90,173, 46,189,230, 0, 41,181, 1, 0, 45,222, 42, 26,176, 90,179,102,205,100,141, 70, 99,103,
-192,227,179, 41,165, 33, 34,145,232,161,137,137,201,249,199,143, 31, 31,175,202,187,119,236,216,113, 20,195, 48,139, 1,128,227,
-184,185,231,207,159,223,254, 7,166, 91, 11, 87, 39,135,159,116,122, 29,155,156,154, 49,143, 82,122,180,172,235, 54,246, 33, 75,
-197, 4,211,139,254, 47, 31,127,140,206,174,136,183,170,215, 87, 16,190,166, 18,137,100,130,189,189,125,143,184,184,184,187, 0,
-102, 80, 74, 43,245, 66,236,230,230,246,190, 88, 44, 30,193,113, 92, 45,134, 97,158,177, 44,187, 43, 38, 38,102,167, 80, 84, 8,
- 16, 32, 64,128,128, 63, 76, 96,213,181, 33, 14, 20, 24, 10,130, 46,160, 56, 67,128,189, 17,105, 52,201,208,251,123,213, 37,122,
- 61, 91,248, 76,169, 8,220,201, 40,209,150, 94,189,122,185,124,254,249,231,104,221,186, 53,110,222,188,217,234,199, 31,127,252,
-144, 97,152, 16,158,231, 47, 0,184, 73,169, 65, 46, 17,140, 1,244, 5, 48,188, 71,143, 30,157, 23, 47, 94,204,212,171, 87, 15,
- 42,149, 10, 23, 47, 94,244, 95,190,124,249, 26, 66,200, 89, 0,187, 1, 28,165,148,230,151,199,165, 86,171,237,138,181, 18, 33,
-196,110,192,128, 1,119, 74,175, 17, 71, 8,129, 72, 36, 2,165,244, 6,128, 27, 60,207,223, 56,112,224, 64,108, 93, 66, 90,140,
-245,144, 30,156,244, 92,235,242, 58,167, 70,163,177, 59,242,221, 18,136,229,114,104,114,115,208,106,244,239, 51,171,207,204,159,
- 14,194,179, 96, 64, 51, 59, 44, 90, 19, 2,224, 97, 66, 66, 66, 72,251,246,237, 95, 84, 53, 49, 25,134, 89,124,234,212, 41, 71,
- 74, 41,186,117,235,182, 24,192, 31, 34,176, 8, 33,242,150, 77, 27, 94, 56,246,203, 30, 69, 94, 70, 50,186,247, 29,178,139, 16,
- 50,138, 82,250,203, 43, 98,169, 39,177, 39, 98, 76,255,116,201,110, 6, 0, 54,206, 25, 62, 99, 77, 55,178,110,242,105,154, 68,
- 8,233, 0,148, 44,173,244, 29,165,244,194,198,158,196, 30, 12,102,126,186,100, 55, 1,128, 77,115,134, 79,223,216,147,172, 29,
-127,162,106,179, 36, 9, 33,227, 71,141, 26,181,110,241,226,197,140,163,163, 35,226,227,227,187,251,250,250,122, 17, 66,124, 43,
- 26, 28,236,225,225,177,175, 67,215,126,181, 2, 7, 13, 53,178,177,182, 68,124, 98,170,249,254, 61, 63,142,245,240,240,232,241,
-226,197,139, 33, 66,113, 33, 64,128, 0, 1, 2,222,153,192,106,226, 68,140,242,117,232, 39,102,200,251,109, 91,212,235, 52,172,
-103, 91,145,175, 79, 29,132, 61, 10,239,122,244,252,173,229,190,246,162,115, 44, 71,119, 26, 75,113, 36, 56,161,226,153, 45,122,
- 22,226,160, 35,187, 1, 0,227, 63, 28,206,220,190,125,187, 78,147, 38, 77, 74, 86, 80,239,212,169, 19, 58,117,234, 68, 54,110,
-220,216, 48, 40, 40,168,225,182,109,219,116,132,144,159, 40,165,191, 85, 80,153, 78,168, 93,187,246,242,117,235,214,201,219,183,
-111, 15,185, 92, 94,114,206,196,196, 4,125,250,244, 65,159, 62,125,152,132,132,132,110,199,142, 29,235,246,221,119,223,105, 9,
- 33, 95, 80, 74,215, 27, 18, 65,243,231,207,111, 82,198,225, 83,132,144, 40,150,101,239, 53,104,208, 32,214,155,144, 58,227,122,
-182, 62, 51,190,141,167,113,185, 17, 45,147, 97,199,168,194, 58,186,180,192,122,113,254, 36, 76,204, 76,211,149,166,166, 33, 0,
- 30, 2, 8,161,148, 62,140,138,138, 10,247, 33,164, 97, 75, 75,209, 79,219, 50,184, 6, 85, 16, 89,136,141,141,133,185,185,185,
- 81, 64, 64, 64, 34, 33,228,171, 11, 23, 46,108,121,199,249,166,197, 87,211,199, 75, 51, 95,134, 32, 41,226, 6,166, 14,242, 87,
- 78,254,254,215,111, 0,252, 82,177,240, 17,137,190,187,206,207,154, 12, 76, 2, 48, 47, 61, 61,189, 61, 0, 88, 91, 91,203, 0,
- 92, 88,125, 11, 61,167,180, 33,213,118,179, 64, 8,145, 50, 12,179, 97,199,142, 29, 31,189,255,254,251,133, 75, 60, 92,189, 10,
- 19, 19, 19, 44, 92,184,176,198,180,105,211,150,162,240,217,101, 90,174, 2,186,244,171,185,102,249, 55, 62,185, 25,217,154,205,
- 27,246,223,113,246,243,102,198, 77,152,102,186, 94,175,117,112,115,115,123, 95,176,100, 9, 16, 32, 64,128,128,119, 34,176,188,
-109,201,246,182,141, 61, 7, 15,235,229, 47,175,239, 87, 15, 82,249,239,139,187, 54,105,218, 20, 77,154, 54, 21,205,202,203,237,
-114,251, 78,112,151,131, 65, 55, 53,222,182,100,255,227, 84, 58,202,208,135, 23, 47, 22,187,184,175,125,199,252,172, 20, 5, 0,
- 24, 91,216,169,231, 28, 73, 58,223,166, 77, 27,184,184,184, 72,207,157, 59, 55, 6,192,111, 21,208,204,121,252,248,177,156, 97,
- 42,246, 99,234,228,228,132,129, 3, 7,194,219,219, 91, 22, 16, 16, 48, 7,191, 47, 91,241, 10, 20, 10, 69, 10, 33,196, 14, 0,
-172,172,172,184,175,190,250,234, 1, 45, 2, 0,240, 60,127,131, 97,152, 27, 60,207,223, 58,122,244,104, 92, 61, 66,236,122, 55,
-241,190, 50,126,228, 64, 37, 61,184,166, 92,113,160,206,201, 41,243,184,210,196, 56,213,200,216, 56, 68,174, 84, 60, 4, 16, 2,
-224,161,179,179,115,120, 61, 66, 92, 90,122,123, 4,109,156, 50,220,212,144,184,108,210,164,137, 87,135, 14, 29, 20, 28,199, 33,
- 63, 63, 31,155, 54,109, 50, 55, 50, 50, 50,239,209,163,199, 2, 0, 37, 2,203,151,144,250, 3,156,152, 79,190,138,103, 63,171,
-134,128,177,104,219,170,233,203,239,151, 45, 48,107,218,178, 45,158, 92,248, 25, 25, 25,185,200,206,202, 3,207,243,111,172,252,
- 59,254, 4, 77,222,216,135, 44,223, 56,123,248, 76, 34, 18,145,134,253,103,224, 61,135,236,137,132,144, 71, 0, 36,197,171,213,
- 3, 16, 19, 66,156,252,252,252,150,215,233,218, 22,155,230,142, 4,229,121, 10, 96,185,161,214, 43, 66,136,157,169,169,233,209,
-160,160,160, 22,205,154, 53,195,205,155, 55,241,252,249,115,140, 31, 63, 94,251,217,103,159, 73, 63,248,224, 3, 50,117,234,212,
-207, 9, 33, 7, 41,165,215,222,248, 16,196,226, 17,125, 3,135,200,242,178,114,212, 58,173, 78,107,109,109, 78,213,249,234,220,
-244,204, 28,213,224,161, 31,233, 30, 6,223, 28, 1,224, 13,129,245, 54,241, 41, 64,128, 0, 1, 2, 12, 70, 51, 0,182, 0, 82,
- 1,220,121,109, 31, 69,255, 81,198,126, 26, 10,135,245, 88,151,226, 74, 67,225,240, 30, 91, 20,250,232,188, 13, 32,243, 93, 7,
-152, 80, 74, 81,228, 80,184,216,177, 48, 41, 37,176,232,227, 84, 10, 54,227, 25,184,244, 40,112,185,111, 46,111, 68, 20, 22,200,
- 86,113,136,125, 22,142, 81,147, 23,226,113,106,249, 30,180,123,213, 37,122,115, 25,196,166, 82, 64,170,180,208, 12, 91,118,250,
-122,211,166, 77,213,115,218,139,122, 45,221, 88,104,217,154,250,201,112,180,154,114,240,244,179,103,207, 88, 39, 39, 39,188,255,
-254,251,160,148,246,174,160, 98, 77,206,189,115,221, 46,162,119,107, 52, 79, 46,123, 24, 84,100,100, 36, 46, 95,190,140,152,152,
- 24,212,170, 85, 11, 99,198,140, 73,161,148,218,151,199,217,189,123,247, 75,223,125,247, 93,187,149, 43, 87,134,236,216,177,163,
- 13,165,101,175, 53,232, 75,136,113,195, 26, 14,119,182, 45,157, 89,139,156,252, 73, 82, 16,243, 20, 22,151, 84,164, 12,113, 71,
- 19, 18,126,143,187,111,189, 28, 97,108,110, 10, 99, 51,147,228, 15,130,238,150, 88,174,138,126, 31, 55, 33,196,204,197,209,250,
-238,222,213,243,156, 69,231,247, 41,164,155,111,144,202,196, 85, 64, 64,192,245,197,139, 23, 91, 38, 36, 36,224,236,217,179,168,
- 81,163, 6, 10, 10, 10,176,106,213,170,196, 43, 87,174, 56, 21,133,215,190,185,183,123,200,166,105,163,205,165, 99,230,203,171,
-154, 89,164, 98,241,250,235,167,246,125,102, 46,167,200, 74,120,142,168,240, 71,184, 29,246, 66,191,243, 76, 8,151,163,210,244,
-162,148,158, 47,235,190, 9,254,164,206,133, 4,219, 99,167, 46,222,241,116,116,116,196,216,177, 99,145,148,148, 4, 74, 41,120,
-158, 47,153,113, 49,103,206, 28,120,121,121, 97,212,208,247, 10,228, 25,193, 1,199,194, 12, 91,239,141, 16,226,231,238,238, 30,
-116,225,194, 5,123,103,103,103, 92,185,114, 5, 73, 73, 73,112,112,112,192,185,115,231,176,108,217,178, 29,159,126,250,233,160,
-197,139, 23, 43,134, 13, 27, 22,127,250,244,105,215,215,199,204,213,168, 81, 35,252,216,233, 43, 38,231, 14,159,126,102,105,106,
- 12, 19,123, 43, 48,166,150, 42, 80,168,236,109,205,165, 67,250,117,174,253,242,229, 75,159,215,210,255,173,226, 83,128, 0, 1,
- 2, 4,188, 82,150,151,169, 69,138, 37, 4, 33,228,120,145, 30,208, 2,144,149,218, 7, 33,228, 56, 0,188,190, 63,107,214,172,
- 57, 75,151, 46,125, 84,188, 95,124,205,236,217,179,235, 45, 91,182,108, 73,171, 86,173,246, 94,191,126,253, 43, 0, 79,255, 84,
- 11, 86, 49,216,184,219,144,122,246,128,132,211, 67,159,246, 24,124, 86, 52, 96,236, 0, 21, 49, 65,122, 98, 52, 34,174,252, 82,
-168, 5, 43,193,111, 17, 84, 66, 8, 57, 23, 30, 30,142,136,136, 8,196,198,198, 66,169, 84,190,113,221,213,171, 87, 97,100,100,
- 4, 71, 71, 71,131, 94,130,106, 95,117, 22, 28,210,196, 29, 38,173,218, 35,109,216, 56,156, 59,119, 14, 41, 41, 41,144, 74,165,
-144,201,100, 96, 89,182, 82, 62,145, 72, 68,138, 18,129, 2, 40,211, 11,115, 0, 33, 98, 23, 43,147, 99, 27, 23, 76,242, 16,221,
- 56, 46, 81,197, 60, 69,130,154,131,133, 33,150, 59, 19, 99, 40,141,149,137, 70, 70,202,215,197,213,147, 38,132, 72,140, 77, 20,
-199,126, 90, 52,213,129,185,119, 78,161,122, 26, 2,105, 25, 28, 93,186,116, 25, 11, 96, 1,165, 52, 43, 32, 32,192,126,241,226,
-197,150,241,241,241, 8, 11, 11,195,254,253,251, 83,217,194, 23, 37,148,210,175, 1,160, 21, 33, 10, 55, 91,139,211,235,231, 79,
- 50,197,133,125, 50,140,153, 95,229,204, 98,238,211,231,183, 1, 31,124,250,217,186, 73,125,144,159,171,194,238, 51,247,112, 42,
- 56,234, 61, 0, 87, 43, 26,215,182,254, 42,125, 74, 8,233, 20, 24, 24,120,255,242,229,203, 54,219,182,109, 3,203,178,101,110,
-219,182,109,195,217, 43,193, 19, 13, 93, 76,151, 16,226,228,225,225,113,246,214,173, 91,182, 74,165, 18,103,206,156, 65, 86, 86,
- 86,137,229,106,212,168, 81, 36, 43, 43,107,232,166, 77,155, 6,188,124,249,114,197,149, 43, 87,210, 81,184,108,211, 43, 25,129,
- 97,152, 40,150,213,213,117,242,241,100, 6,245,105,219, 54, 47, 61, 4, 38,214, 13,112,243,126,212,241,236,172, 12, 21,195, 48,
- 81,165,175,127, 23,241, 41, 64,128, 0, 1, 2,170, 44,194,142, 83, 74,123,151, 22, 76,175, 11,173,226,255,197,215, 45, 93,186,
-180,119,105,241, 5, 0,203,150, 45, 91, 82,106,191,224,143, 8,171,248,119,189, 64, 40,128,128,178, 46,210,132, 29,130, 38,226,
- 40,164,238,109, 32,243,126, 15,140,187, 63, 98, 66, 46,224,193,201,213,136,123,116, 21,148,231,224,232,213,220,208,103,170,235,
-214,173, 11,181,186,112,232,149, 70,163,129,212,216, 82, 61,245,147,225, 10, 0,224,197, 10, 77, 41,149,105, 16,161,105,155, 14,
-104,158, 76,113,219,190, 80,240, 22, 91,178, 22,141, 30, 13,169, 84, 10,169, 84,138,226,129,234,134, 8,172,162, 53,180,138, 87,
-171,167,101,157,111, 42,151,236,222,187, 96, 66,115,249,203,135, 50, 77,232, 13, 36,104,120,122, 44,153,251,205,215,128,240, 42,
-141,149,241, 70, 74,229, 67, 35, 19,227,210, 2, 43, 10, 0,168, 68,178,243,231,175, 39, 52, 48, 78,126,102,172,190,115, 14,137,
-106, 94,103, 86, 54,205,215, 39, 79,158,180, 19,139,197, 14, 28,199, 33, 38, 38, 6,143, 30, 61,194,218,181,107,147,115,115,115,
- 3,130,131,131, 35, 75,133, 87,212,204, 72,182,127,231,194, 73, 53,197, 33,151, 20,154,168,208, 50, 69, 91, 69,176,173,223,191,
-219,123, 1, 13,127, 27, 59,114, 46,250,245,236,138, 15, 2,124,233,139,132, 12, 53,128, 51,148,210, 74,151, 65,162,148,198, 19,
- 66,186,180,107,215,110, 87,163, 70,141,124, 40,165,168, 95,191, 62,134, 14, 29,138,157, 59,119,226,193,131, 7,200,201,201,209,
- 5, 5, 5,173,161,148,254,104,224,135,166,180,180,180, 60,117,254,252,121, 91,165, 82,137,160,160, 32,168, 84, 42, 56, 58, 58,
-226,179,207, 62,147, 45, 91,182,108, 71, 78, 78,206,160,165, 75,151, 42, 94,188,248, 63,123, 95, 29, 94,197,241,127,125,102,247,
-122,238,141,187,160, 9, 9, 49, 8, 78,112,135,226, 46,197,161, 72,177, 34, 45,238, 69, 10, 20, 43,180,184, 22,119,119,119,135,
- 16, 2,129,144, 16,119, 79,174,239,206,251, 71,164, 33, 68,110,128,190,191,126,219,123,158,103,159,123,215,206,206,206,204,206,
-156,249,204,204,103, 66,215,157, 63,127,190, 34,114, 22,156,253, 36, 19,104, 52,154, 77,123,118,237, 88, 59,102,236, 56,231, 43,
-247, 2, 47,171,179, 50,204,203,149,143,200,176,177, 82, 40, 86, 45,155, 95, 78,163,209,140, 44, 58, 62,175,125, 86,124, 26, 97,
-132, 17, 70, 24, 81,148,237,162,120, 45, 82, 80, 52, 21, 22, 89,101, 17,103, 0,148,211,166, 77,155, 65, 8, 57,149,107,225, 82,
- 2,136,254, 91, 4, 22,165,244, 58, 33, 4,148,210,235,197, 94,201,115,208,134,222,128, 54,244, 6,100,254,227,113, 98, 73,191,
- 66, 47,205,127,118, 32, 58, 45,184,120, 69,173, 86, 11,118,236,216,145, 63, 46, 11, 0, 56,142,251,234,169,103,136,192, 66,238,
- 18, 66,185, 2,235,147, 64, 84,146, 40,174,111,154,216,171,190, 53,151, 45,212,220, 58,137, 40, 53,175, 95,241, 86,155,253, 48,
-149, 46,155, 81, 12,225,177, 31, 70, 34,226,230, 37,152, 40, 20, 17,195,111,188, 40,104,181,122, 14,224, 61, 0, 84,146,154, 93,
- 62, 48,169, 95, 35, 7, 17, 68,154,211, 7, 17,173,230,213, 27,194,116,219,214, 20,157,201, 64, 41,197,251,247,239,145,157,157,
-141, 59,119,238,224,240,225,195, 9,133,197, 85,110,120,175,109,253,169,127, 61,179,140, 88,145,230,225, 37, 68,171,121,181,135,
- 33,162,170,122,183,134, 34,134, 92, 32, 12, 43,107,223,216, 27, 63,124,215, 13,171,182,158,208,107,236, 26,119, 92,123,252, 76,
-239, 76,181,118,134, 33,226,170, 64,152,159, 3,240, 38,132, 72, 0, 52,239,219,183,239,153, 30, 61,122,224,250,245,235, 56,121,
-242,164, 59,128,152,220,143, 96, 1, 0,123,228,204, 46, 12, 41,230, 67, 97, 68, 34,209,190, 75,151, 46,249, 56, 57, 57,225,210,
-165, 75, 80, 42,149, 24, 61,122,180,102,236,216,177,162,193,131, 7,147,180,180,180,124,203,213,157, 59,119,146,138, 19, 87, 0,
- 16, 25, 25,121,182, 98,197,138, 13,155, 52,105,210,181,178,123, 85,179,144,140,244,120,133,137, 84,118,243,250, 85,209,227,135,
-119,215, 69, 70, 70, 62, 40, 58, 62, 47, 27, 28,159, 70, 24, 97,132, 17, 70,148, 88, 71,148,174, 69, 10, 89,162,202,200,159,119,
-159,112,201,146, 37, 47,151, 44, 89,242,145,133,235,239,178, 96,149, 9, 92, 90,248,167, 1,231,249,178,188,228, 39,199, 44, 45,
- 45,245, 50,153,236, 35,129,197, 27,200,153,124,116, 47, 66,190,255, 54,223,114,149,103,201, 66,187,193,159, 37,176,242, 44, 88,
-185,131,161, 63, 10,132,220,190,106,191,125, 3, 90, 55,244,174,236,204,232, 14,172, 65,100,182, 94, 53,247,181, 86, 21,148, 65,
- 59, 7, 22, 49,120, 58,159, 83,175,131, 84, 46,251, 32, 83,200, 11,139,171, 48, 0, 80, 56,120,244,216,217,175,121, 51,191,170,
-110,140,126,255, 74, 68,101,235, 50,167,189,210,106, 67,178,232,145, 98,226,112,110,155, 54,109,230, 90, 91, 91, 75,215,174, 93,
-107, 94,161, 66, 5,232,245,122, 77, 97,113, 37,183,175,218,111,255,224,118, 13, 61, 28, 44, 25,221,161,223, 16,161,228,178,215,
-132,232,118,110, 48, 64, 92,217,152, 43,206,111, 88,252,189,204, 68, 34,132, 74,165,194,210,223, 15,225,194,237,128,142, 9, 47,
-142,158, 7,112,254, 11,242,221,240,142, 29, 59,174, 90,176, 96, 1,116, 58, 29,134, 13, 27,134,119,239,222, 93,120,253,250,245,
-154,242,229,203, 79,249,233,167,159,156, 28, 28, 28,208,187,119,111, 17,128,193,197,112,252,178,103,207,158,142,126,126,126,184,
-126,253, 58, 82, 83, 83,225,232,232,136,177, 99,199,138,151, 44, 89,178, 51, 61, 61,189,215,226,197,139,165,239,223,191, 47,209,
-114, 85, 40,111, 44,220,184,234,251,201,117,234, 55, 98,222,190,125,163, 15,175,219,148,185,122,233,228, 13, 75, 75,203,157, 31,
-197,231,144,111,202, 28,159, 70, 24, 97,132, 17, 70,124, 53,156, 6,208,161,176, 85,171,176,248,202,179, 80, 21,220, 47,124,125,
-238,249,191,101, 81,114, 65,129, 0, 26, 60, 61,158,207, 74, 48, 72, 52, 21, 70, 7, 79,162, 27, 89, 7,130, 25, 77, 25,136,228,
-150,170, 78, 11, 46, 94, 41,238, 90,185, 92,110,176, 5,139, 87,171, 74, 19, 76,101, 18, 88, 44,203, 18, 0,231,120,158,191, 91,
- 80, 96, 89, 56, 84,109, 58,107,234,132,213,141,122,180, 99,226,190,243, 71,106,166, 90,253, 83,160,158,143,204, 46, 89, 92,229,
-168, 82, 93,168,137, 92,241, 66, 42,255,104,220, 85, 56, 0,200,236,171,212,157, 54,113,220,239, 45,250,117, 34, 9,163, 27, 33,
- 37, 85,169,158,242, 82, 79,162,148,180, 87, 32,165, 87,139,162,187,124,249,242, 70, 0, 27,155, 53,107, 22, 39,151,203,145,153,
-153,249, 73, 26,228,133,183, 97,143,118, 76,220,240,122, 72,206,210,170,127,122,169, 71,180,146,223, 87,154,184,178,181, 48, 61,
-191, 97,209,247, 38,209,145, 97, 16,137, 68, 80, 40, 20,184,120,235, 5, 18, 2,142,125,137,176, 2,203,178,243,102,204,152, 49,
-119,204,152, 49, 72, 74, 74,194,201,147, 39,209,190,125,123,236,221,187,183,194,153, 51,103, 86, 53,111,222, 28, 44,203,226,212,
-169, 83,208,233,116,193,197,164,103,183, 17, 35, 70, 76,233,209,163, 7, 30, 60,120,128,152,152,152,143, 44, 87,169,169,169,125,
-127,255,253,247, 30,161,161,161,165, 90,174, 10,161,110, 37,183,154,162,233,179,127,133, 58, 59, 94,144, 16,117,239,250,229,139,
-204,221,228,228,100, 19, 0,105,159, 27,159, 70, 24, 97,132, 17, 70, 24,108,128, 41, 78,139, 36,228,138,167,132,162,246, 11, 8,
-171,162,246, 73, 33,171,151,166,208,249,103,255,103, 22, 44,129,189, 47,244,113, 1, 5, 4, 86,252, 71,231,165,166, 86, 6,117,
- 17,234,244, 16,108,216,150,239, 7, 75,154,148,148, 36,181,177,177, 81, 21, 20, 6, 38, 38, 38,112,114,114, 66, 74, 74, 10, 54,
-109,218, 4, 0,165, 13,118,214,155,245, 24,128,186,253,134,225,161,139, 24, 84,167,205,183,100,109, 24, 50,228, 35,145, 37, 18,
-137,242,198,126,149, 86,217,222, 39,132,132,241, 60,127,151, 82, 74,107,121,184, 46,148,202,229, 67,106, 87,119,179,249,225,251,
-225,194,208,120, 53,174, 52,154,158,122,232,151,169,138, 8,170, 24,243,129,166,222, 46,133, 47,164,203, 31,187, 11, 91,174, 34,
-107,122,184,206,148,154, 72,191,171,239,235,225, 48,109,210,247,194,208, 56, 53,185, 82,247,167,244,195,203,126, 50,121, 15,211,
- 41, 17, 52,229,170, 1,201, 51,183,125,251,246,115, 41,165,148,231,249,217, 0, 80, 48,188,147,198,126, 39, 12,137, 85,225,114,
-163,153, 41,135,127,153,106, 26,129,146,195,107, 91,189, 91, 67,123, 75,179,243, 27, 22,143, 49,137,137,250, 0,137, 68, 2, 83,
- 83, 83, 68,196,165, 65, 40, 96,149, 95,146,217, 8, 33,146,166, 77,155, 78,253,254,251,239,241,226,197, 11,140, 30, 61, 58, 38,
- 60, 60,252,200,254,253,251, 71,207,153, 51, 71,208,182,109, 91,196,196,196, 96,249,242,229,186, 91,183,110, 45, 6,176,188,200,
-252, 40, 16, 12, 95,184,112, 33,141,142,142, 38,239,223,191,135,163,163, 35,198,141, 27, 39, 94,188,120,113,254,152,171,178, 88,
-174,242, 16, 25, 25,121,221,221,173, 60, 58,159, 93, 13,189, 78,125, 61, 53, 41,252, 70, 80, 72,202,117, 43,177,120,114,163, 90,
-213, 63, 43, 62,141, 48,194, 8, 35,140,248, 42,120, 88,202,254, 63, 14,165, 9,172,224,223,102, 14,117, 31, 58,230, 71,200, 42,
- 52,132,250,213, 81,240,153,113,249, 22, 44,169,194, 18, 86,229,189,144,154,165,198,193,203,143, 1, 32,184, 44, 15,207,200,200,
- 64,173, 90,181,176,126,176, 71, 11, 85, 70,146, 84, 6, 64, 45, 49, 83, 29, 19, 55,190,114,230,204,153,108,158,231,247, 1, 56,
- 83, 10,205, 60, 31, 31,159,117,191,254,250,171,216,171,223, 80,100,222,187,249,209, 73,134, 97, 32,147,201, 32,145, 72,240,252,
-249,115, 92,185,114, 69, 3, 96, 94, 41, 66,224,190, 94,175,127,118,240,224,193, 8,119, 87,151,118,205,234,212, 29, 63, 99,250,
- 52,211,192,155, 23, 48,123,241, 58,190, 74,237,182,105, 75,247, 30,203, 72, 83,148,111,153, 29, 29,244,212,128, 87,125, 86, 72,
- 92, 69,123, 85, 46,223,194,191,102,141, 31,103,207,158,105,246,242,230, 69,204, 89,182,129,186,251,181, 74, 91,118,248,120,122,
-162, 73,197, 54,202,184, 87, 15, 12,137,195,107,215,174,109, 4,176, 49,111,191,112,120,167, 45, 88,195,123,212,105,151,178,116,
-239,225,172,116,211,242,173, 74, 10,175,157,119,247, 6,229, 28,173,206,255,246,243, 40,147,216,168,112, 72, 36, 18, 40, 20, 10,
-132,199,164, 98,238,234, 3, 89, 90,158,111,247,133,249, 77, 98,106,106, 42,209,106,181, 88,191,126, 61,194,195,195,253, 41,165,
-225,132,144, 13,125,250,244, 89, 91,173, 90, 53,207,151, 47, 95, 6,103,102,102,142,161,148, 6, 21, 71, 98, 97, 97,225,111,107,
-107, 75,238,222,189,139, 81,163, 70,105,198,141, 27, 39, 26, 52,104, 16, 73, 73, 73,249, 92,203, 21, 0,192,197,197,165,105,151,
- 14, 13,208,176,245,232,235, 26, 85,234,141,208,160,157,215, 25,122, 91, 90,171, 70,245,207,138, 79, 35,140, 48,194, 8, 35,254,
-219,230,184, 98,183,166,128,192,195, 26, 35,125,156, 69,177,187,126, 25, 71, 51, 66,238, 80,229,131,141, 52,253,232,119,244,244,
-242, 65,244,204,111, 63,208,209, 29,124,168,167, 29,137,245,176,198,200,166,128,160,164,213,182,219, 87,133,174,181, 27,104,107,
- 55,208, 14, 30,208, 1,152, 81,179,102,205, 99, 99,235,130,210,192, 61,148, 6,238,161, 99,235,130, 2, 24, 5, 64, 97,232, 10,
-222, 0, 28, 1,108,170, 85,171,150,254,234,213,171,244,117,175, 86,244,137,167, 13, 29, 51,102, 12,157, 51,103, 14,253,246,219,
-111,169,173,173,173, 30, 57, 14, 55, 29, 75,227,236,220,185,179, 11,165, 20,229,202,149,179,168,237, 85, 37,246,249,229,147,244,
-198,174,181,116,235,216,238,180, 94, 53,175, 68, 7,207, 38,207,100,142, 85,107, 24,186,210,184,131,131,195,116, 74,105, 59, 74,
-169, 35,165, 20,238,238,214,138,154,158, 85,162,159, 93, 58, 73,111,238, 94, 71,183,142,237, 78,235, 87,247, 78,114,241,106, 30,
- 36,181,243,172,251,185,171,151, 23, 25, 94, 95,207, 68,251, 42, 13,158, 22, 23,222,130,156,149,235,246, 62, 30, 25, 29, 71,239,
-223,191, 79,207,156, 57, 67,111,222,188, 73,119,237, 63, 78,203,215,233,149,105, 83,173,107,195, 47, 93,101, 29,128,121,135, 14,
- 29,104,112,112, 48,253,230,155,111, 40, 0,243,207,225, 4,112, 44, 52, 52,148, 6, 4, 4,208, 25, 51,102, 80, 0, 59,190,255,
-254,123,101, 90, 90, 26,109,213,170, 85, 56,114, 38, 41, 8, 62, 39,156,174,149,156,151,118,235,212,120,222,216, 81, 61,154,126,
-105,124,254,147, 87,173, 55,114, 26, 57,141,156, 70,206,127, 26,231,191,109, 43,209,130,117, 45,167,245,191,177,154, 61,249,115,
-241,242,223, 38,175,223,184,227,199,169,227,135,203, 27, 55,106,141, 23,151,182,227,240,169,253, 89, 42,181,102,185,136,197,175,
- 47, 18,105,169,126, 36, 78, 7, 81, 97, 17,214, 34, 19, 43, 55,228,251, 80,122,155, 2, 80, 74, 55,148, 81, 36,198, 0, 24, 65,
- 8,249,181,121,243,230,139,190,107, 88,183,251,216, 6, 45,160,211,233,176,107,215, 46,124,248,240,225, 8,128,153,148, 82,131,
- 44,108, 47, 94,188, 72,244,169, 82,113,130,149, 76,244,227,152,111,187,217, 38,188, 11, 68,228,171, 39, 0, 0,181, 90,169,139,
-121,115,221,175, 44,225,147,201,100,247,109,109,109, 95,219,218,218,166,112,234,204, 17, 82,129,217,236,209,125,187,216, 37,133,
- 6, 33,226,101, 78, 15,168, 90,149,173,141,120,115,197,243,115, 68,114,197,138, 21, 37,114, 33, 70, 22, 25, 94,141, 74, 23, 27,
-252,170,134, 33, 60,217,106,205,226,249,171,118,181,249,249,199, 33, 18, 51, 51, 51, 60, 14,120,139,217, 43,247,102, 41, 53,186,
-118, 9,207,143,222,254, 90,130, 94,167,211, 25, 60,129,161, 24, 76,245,243,243,171,186,104,209, 34,247,193,131, 7,227, 75, 45,
- 87, 5,241,238,125,228,180,102,205,154,121,191,125,253,184,185,149, 76,244,231,151,196,167, 17, 70, 24, 97,132, 17,255, 93, 24,
- 52, 6,235, 69, 28,205, 6,176,192,213,158,108,152,190,104,213, 92,134,172, 30,194, 83,186, 93,207, 96,126, 72, 34, 77,248,194,
- 10, 55,187,131, 39,209,183,233,250,173, 0, 0,132, 2,232,191,128, 43, 24, 64, 15, 66, 72,157,205,183, 31,204,202, 61,252, 51,
-165,180, 76,125,181,166, 2, 4, 52,242,118,117,110, 92,211, 71,202,114, 74, 68,190,122,135,228, 44, 21, 46,190,252,144,202, 80,
-102,123, 89,195, 21, 18, 18,114, 13, 0,124,171, 84,124,213,216,219,173,124,147, 90, 62, 38, 66,162, 65,100,224, 99,164, 41, 53,
-184,240,242, 67, 26, 8,249,236,129,210, 95, 43,188,177,207,143, 61,180,173,222,173, 21, 33,228,210,140,177,253, 36,115, 87,238,
-251,170,226, 10, 64,118, 84, 84, 84, 82,118,118,182,117,116,116,180, 6,159,233,220,141, 82,250,150, 16, 82,237,135, 31,126, 88,
- 48,101,202,148, 31,127,249,229, 23,209,231,140,185, 42, 14, 41, 81, 31,142, 54,241,249,122,233,111,132, 17, 70, 24, 97,132, 81,
- 96,149, 44, 20,226,104, 2,128, 49,110,110,100,210,187,119, 84,243,181, 2, 81,148,101,235, 11, 69,219, 67, 0,157, 62,155,128,
- 33, 25,247,130, 63,100,222, 15,254,144, 9,158, 82,158, 82, 53,195, 32, 34, 75,171, 93,252, 38, 36,242,243,103,209, 17,194, 61,
-124, 27,174,124,244, 46, 66, 69,121,158,242,148,106, 8, 65,172, 78,199, 47, 14, 8, 9, 59,254, 79, 8,111,194,243,163,183, 29,
-188,187, 55,190,125, 63, 96, 82, 86,150,118, 93, 66,224,209, 59, 95, 49, 93,116,132,144,254,254,254,254, 67, 57,142,219, 64, 41,
-213,125, 1,151, 6,192, 84, 66,200,145, 23, 47, 94, 28,184,115,231, 78,204,215, 16, 87,127,107,250, 27, 97,132, 17, 70, 24, 97,
- 20, 88, 37,225,107,138,171,127, 34, 94, 4,135,214,250, 59,120, 3,130, 67,125,255, 23,194, 27, 27,120,228, 17,128,190,127, 71,
- 88, 41,165, 23, 0, 92,248,154, 98,154, 16, 82, 9, 0,251, 85,196,213,223,152,254, 70, 24, 97,132, 17, 70, 24, 5,150, 17, 70,
-252,207, 32,119,205, 72,189, 49, 38,140, 48,194, 8, 35,140,248,167,128, 0,104, 85, 76,165,117,201, 96, 18, 66, 90,125, 70,165,
-120,201,200,105,228, 52,114, 26, 57,141,156, 70, 78, 35,231,127,139,243,191,212,250,255,219, 54, 24,167,176, 26, 57,141,156, 70,
- 78, 35,167,145,211,200,105,228,252, 15,110,140, 81, 98, 26, 97,132, 17, 70, 24,241,183,117,147, 16, 34,201, 93,224,253,179,206,
- 27, 97,196,255, 42, 4,159,241,177, 84,201,181,124,189,253, 27, 63,200,177,142,142,142, 35,170, 87,175,238, 37, 18,137,152,140,
-140,140,249, 87,174, 92,153, 87,248,186, 38, 62,194, 71, 44, 3,151, 2,119, 2,132, 5, 24, 6, 28, 69,228,141,103,217,181,141,
- 73,252,143, 46,120, 43,200,204,108, 79, 16,134, 21,115,122, 45, 56,157, 22,192, 95,203, 38,241,188,254,131, 94,163,106, 91,220,
-253,142, 53,186,151,215,115,116, 41,192,255, 78,192,140,166,224,255, 32,148, 25, 77, 25,252, 78,120,140,130, 64,183, 28,122,225,
- 20,129, 72, 48, 51,250,241,193,136,127, 67,156, 29, 58,116,136,253,146,251,123,246,236, 89,228, 2,159,206,206,206,167, 76, 76,
- 76,220,138,187, 47, 43, 43, 43, 38, 58, 58,186,249,191, 60, 63, 54, 1,240, 27, 0,159, 66,167,130, 0, 76,160,148, 94,254,210,
-103, 52, 35, 68, 96, 15,140, 20, 1, 63, 1,128, 22, 88, 22, 7,108,188,246,149, 38,104,124, 13,216,217,217,221, 16, 8, 4,238,
- 89, 89, 89, 89,233,233,233,174,102,102,102, 33,114,185, 92,174,215,235,131,227,227,227,155,148, 49, 78,191, 71,238,146, 87,132,
-144, 31, 41,165,191,151,229,188, 17, 70,252,171, 5, 22, 33,196, 3, 64,211,220,173, 73,157, 58,117,236,179,178,178, 64, 8,137,
- 3,112, 3,192,117, 0,215, 41,165,111,190, 70,128, 88,150, 93,177,102,205,154,201,227,198,141,203, 95,164,249,249,243,231, 69,
- 95,203,192,229,234,169,203,118, 15,159,191, 70,157, 86, 61,115, 5, 22, 3,100,199,162,121,171, 58,159, 91,200,154, 90, 90, 90,
-206, 39,132,244, 98, 24,166,212,202,140,231,121,142, 82,122, 48, 37, 37,101, 46,165, 52,163, 44,207, 82,200,165, 58, 61,199, 21,
-249, 12, 1,203,114,153, 89,170, 98,221, 87, 88, 91, 91,223, 97, 24,166,114,193,133,172,115,195, 95,228,255,130,251,122,189, 62,
- 50, 33, 33,161,182, 1,113, 33,101, 4,162, 9,132,136, 90,131,225, 61, 0, 2, 2,230, 13,207,105, 46,242,122,237, 26, 74,169,
-234, 75,196,149, 99, 57,215,155, 19,103, 46,117, 9,120, 21,132, 25, 99,191,197, 47,191,237,192,244, 9, 67,177,102,211, 94, 76,
- 24,209, 15,222,222, 62, 37,114,112,148,204,159, 61,161,127,243, 69,107,246,212,153, 57,225, 91,249,162, 53,123,234,204,252,225,
- 91,197,162,181,123,106,207,252,161,191,226,231,181,127,214,158,245, 67,127,179, 69,107,247,104, 1, 12,251,156,112,246,247,112,
-206,130, 94, 95,116,235, 90, 32, 80,255,249, 38, 74,254,127,241,225, 14, 30, 60,184,186, 82,169,124,252,109,235,154, 75,107,120,
- 56, 71, 21,117, 77, 82,108,148,115,200,235, 39,211,132, 34, 89,173, 46,211,118, 60, 47,137, 79, 34,145, 84, 14, 10, 10,114,231,
-121, 30, 28,199, 65,175,215,231,255,106, 52, 26, 52,105,210,228,171, 76,136, 33,132,116, 2, 48, 63,231, 99,197, 18, 74,233,129,
- 47,224, 82, 8, 4,130,137, 98,177,184,169, 94,175,247, 2, 0,161, 80,248, 74,173, 86, 95,215,235,245,171, 40,165,153,101,164,
- 92, 29, 21, 21,229,173, 80, 40,160,213,106,243, 23,134,103, 89,214,179,124,249,242,235, 1,184,127,233,251,219, 3, 35, 27, 52,
-106,180,102,208,228,201,172,242,198, 13,172,217,182,109, 53,210,211, 1, 96,125,105,247, 74, 36,146,243, 12,195, 84, 40,203,243,
-120,158,255,160, 86,171,219,150,169, 82, 16, 8,220,163,163,163,237,156,156,156, 0, 0,114,185, 92, 94,112,191, 44,150, 43, 0,
-203, 41,165, 50, 0, 96, 24,102, 77,131, 6, 13,252, 9, 33,122, 0,148,231,121,134, 16,210,143,231,121, 65,238,245,203, 9, 33,
-219, 40,165,106, 99,213,108,196,191, 90, 96, 17, 66,206, 0,104, 90,167, 78, 29, 89,223,190,125,209,180,105, 83,184,187,187, 67,
- 42,149,230, 20,222, 73, 73,246, 79,159, 62,237,125,227,198,141,222, 39, 79,158, 4, 33, 68, 9,224, 22,165,180,200,143,185, 85,
-167,198,227,164, 10,201, 90, 0, 72,136, 76,138,137,124, 31,191, 54, 38, 38,102, 57, 45,176, 74, 52, 33,196,117,208,160, 65,147,
-198,143, 31,143, 83,167, 78, 97,239,222,189, 80,171,213,200,200,200,192,149, 43, 87,138,105, 90,199, 35,229,202, 82, 64, 30, 6,
-132, 95, 3, 76,236, 0,185,253,103, 71,136,165,165,229,252, 9, 19, 38,252,224,237,237,157,239,117, 92,167,211, 65,175,215, 67,
-167,211, 33, 37, 37, 5,147, 38, 77, 66,174, 21, 15, 60,207,227,236,217,179,227, 70,140, 24, 1, 0, 19,139,226,244,175, 93,254,
- 17, 67, 24,151, 60,219, 12,229,184,200,187, 79, 34,106,235, 57,142, 85,169,180, 69,174, 28, 46,149,138, 74, 20,119, 66,161,208,
- 37,240,196, 9, 59, 70, 44, 6,229, 56,128,231, 65,121, 30, 64,129,141,230, 28,163, 28, 15,170,227,192,235,121,232,149,106,212,
-253,254,123, 67, 10,199, 6, 66,177,108,111,255,239, 38, 59,212,171, 95, 95, 88,177,156, 19,244, 28,143,119,161,145, 14,143, 31,
-221,107,120,112,231,250,209,132,144,126,148,210,207,242,147, 37, 54, 49,187,176,238,143,205, 46, 15,159, 6,224,242,213, 27,184,
-116,229, 58, 0,224,252,213, 28, 58,134, 97, 74, 11,159,165,181,123,243,234,227,134,118,149,255,252,235, 22,201,184,161, 93, 5,
-127,253,110,150,140, 27,218, 69,176,104,213,102,201,184,161, 93,132, 11,151,173,171, 65, 8,177,164,148,166, 20,199, 87, 92, 26,
- 65,175,151,252, 25, 18,199, 2, 64,194,134, 13,208,197,199,195,105,238,220, 28,241,229,106,111,112,183,134,173,173,237, 35,161,
- 80,232, 82,218,117, 58,157,174, 84,241, 59,120,240, 96, 63,165, 82,249, 72,175,215, 83,129, 64, 48,237,219,110,109,142,181,107,
-236,151, 84,240,154,231,207,159, 89, 47, 94,124,162,235,129,199, 25,180,119, 45,211,199,167, 86, 12,174,221,113,202,142,103, 37,
- 84,196,140, 90,173, 70,112,112, 48, 10, 46,190, 94, 80,207,126,166, 8, 98, 0,172,177,182,182,174,151,148,148,212, 31,192,140,
-244,244,244,234, 44,203,194,202,202,106, 6, 33,228,157,185,185,249,150,180,180,180, 59,185, 86, 34,222, 64,222, 38,102,102,102,
-187,142, 30, 61,106, 89,179,102, 77, 38, 33, 33, 1,149, 43, 87, 70,114,114,114,221, 27, 55,110,212, 26, 54,108,216, 48, 66,200,
- 64, 74,233,141, 50, 4,183,170,137,137, 9, 29, 52,104, 16,225,184,191, 94,119,235,214,173,104,235,171,119, 27,213, 78,158,173,
-210,208,180,203,193,230,163, 68, 34,209,173,176,176,176,180,178,198,135, 8,248,105,208,228,201,172, 34, 44, 12,138,103,207,208,
- 63, 61, 93,240, 75,142, 53,171, 84,129,197, 48, 76,133, 93,251,182,187,139,197,226,252,114,169,184,141,227, 56,104, 53, 90, 44,
-253,121,249,103,151,133, 38, 38, 38, 38, 78, 78, 78,113, 38, 38, 38, 38, 95,163,178,145, 72, 36,130,157, 59,119,246, 19,139,197,
- 0, 0,141, 70, 3, 95, 95, 95, 98,172,134,141,248, 47, 90,176,190, 73, 79, 79, 7,199,113, 48, 53, 53, 5,203,178,133, 45, 40,
-104,221,186, 53,154, 52,105,130,190,125,251, 34, 48, 48, 80,214,183,111,223,214,197,145,125, 59,185, 35,202,185,219,231, 86, 34,
-188,227,237,211, 79,151,110, 93,120,200, 22,192,228, 2,151, 13, 27, 57,114, 36, 73, 74, 74, 66,175, 94,189,110,168,213,234,206,
-148,210,244, 98, 45, 24, 60, 34,155,247,253, 22, 60, 37,178, 85,247, 55, 17,141, 74, 73, 25,134, 81,230,117, 17,126,102,133,208,
-203,201,201, 9,251,246,237,131, 70,243,169,187, 47, 51, 51, 51,188,124,249,178,160,197, 13,245,235,215,103, 9, 33,189,138, 19,
- 88,132, 48, 46,183, 31,134,217,229,237,119,108,237, 35,242,175, 93, 33,206,214,218,148, 2, 32, 51,103,206,204, 23,108, 0, 48,
-127,254,124, 67,194, 9, 70, 40, 68,194,245,235,127, 21,192, 2, 6,140,136,128, 8, 1, 70,144,211, 91, 10, 10, 80, 14,224,245,
- 0,175, 3,164,142,229, 12,225,174,235, 92,222,253,212,226,149,191, 91,168,117, 20,251,142, 95, 70,104,232,123,176, 12, 3, 87,
- 55,119,180,105,214, 88, 88,171,142,127,185,101,243, 38,159, 36,132,124, 67, 41,125, 80,230,136,230,169,212,173,188, 13,182,108,
-125, 12, 91, 75, 5,122,117,109, 15,153, 84,130, 95,126,219,142,159,167,143,133,187,107, 5,108, 92,189,168,216,219,205,205,205,
- 23,212,172,230,233,186,253,192, 57, 52,109,210, 64,176,227,192,121, 52,107,210, 80,176,253,192, 57, 52,107,218, 88,176,227,192,
- 57, 52,107,210, 72,184,227,192, 57,212,175, 93,205,237, 78,210,243, 5, 0,198, 22,255,206,133,210,168, 77, 78, 26,185, 11, 68,
-249, 21, 64,216,232,209, 0,144, 47,176,202, 2,161, 80,232, 18, 29, 29,109, 87,218,117,165, 89, 9,114, 45, 87,143,244,122, 61,
-226,227,227, 73,106,106, 42,181,176,176,232,122,110,227,140,163,109, 27,249, 37, 3,192,179,103,207,172,150, 44, 89,220,117,255,
-163,116, 40,239,173, 35,127,158,184,206,247,239,220,244,209,241,165,131,107,245,236,217,243, 73, 81,188,106,181, 58,180, 70,141,
- 26, 52,247,191,179, 68, 34, 17, 21,202, 19, 78,238,238,238,159, 88,169, 13,232, 58, 92,115,247,238,221,177,222,222,222,240,244,
-244,188, 83,175, 94, 61, 51,185, 92,142,115,231,206,193,203,203,203,199,204,204,236,254,193,131, 7,133, 83,167, 78,245,219,182,
-109, 27, 0,140, 51, 32,127,182,106,222,188,249,190, 83,167, 78, 73, 69, 34, 17,148, 74, 37, 94,190,124, 9, 11, 11, 11,136,197,
- 98,116,233,210,133,109,216,176,161,117,179,102,205, 14,231, 54, 2, 12,158,209,164, 82,169,232,140, 25, 51, 96, 98, 98, 2, 19,
- 19, 19,200,229,114,200,229,114, 40,164, 32, 27, 38,148,151,141,223,148, 42,155, 56,119,195,210, 93,191,207,187, 90,190,124,249,
- 57,225,225,225,169,101,205, 11,202, 27, 55,160,120,246, 12, 40,240,237, 26, 10,115, 19, 43, 76,155, 54,173, 52, 11, 20, 68, 34,
- 17, 26, 52,104, 80, 42,159,181,181,245, 17,129, 64,240, 81,139,148, 82, 42,157, 54,109, 26,247,230,205, 27, 57,195, 48,114,158,
-231, 49,109,218, 52, 78,175,215, 75,237,237,237,239,240, 60, 31,151,144,144,208,189, 52,110, 74,169,154, 16,242, 35,195, 48,107,
- 36, 18,137,160, 98,197,138, 31,102,207,158,125, 55,215,122, 9, 74, 41, 83,177, 98,197,186, 50,153,172,130, 90,173,214, 3,248,
-209,104,189, 50,162, 4,212,202, 49, 2,231, 67, 3, 64,156,103,176,207,169,237, 96, 83,232, 56, 0, 36,230, 54, 16,237,139,217,
- 79, 2, 16, 8,160, 42, 0,187,220,115, 15, 1, 36,127, 21,129, 69, 8,161, 5, 62,138,252, 10,197,212,212, 20, 15, 31, 62, 4,
- 33, 4,166,166,166, 48, 51, 51,131,185,185, 57,210,211,211, 17, 24, 24,136,160,160, 32,132,133,133,129, 16, 2, 87, 87, 87,228,
-125, 56, 5,184,242, 11,182, 61,191,158,130, 84, 33, 1, 33, 64,205, 22,213, 81,189,137, 47,234, 60, 8,153,224,228,228,180, 41,
- 58, 58, 58,152, 16, 34,240,245,245, 29, 86,191,126,125,172, 92,185, 18,106,181,122,101, 81,226,170, 32,231,141,151,186,218,185,
-149,210,148,221,231,222,153, 12,104,231,150, 29, 29, 29,189,162,172,145, 80,184, 0, 78, 76, 76, 52,120,173, 60,158,231,145,146,
-146, 82, 34,103, 97,139,192,170, 53,235, 44, 50,210,226,176,240,151,221,208,233,116,152, 60,121, 50,120,158,207,223, 82, 83, 83,
- 13, 10, 39,229, 10, 25, 21,152,156,141, 48, 0, 17, 0,229,251,228,232,137,240,125,235, 64, 40, 64, 56, 0,133,222,171, 48, 39,
- 33, 68,202,138,100,251,231,253,178,214,226, 73, 80, 36,142, 95,126, 2,109,122, 20, 98,158, 29, 5, 0,184, 54,232,135, 3,106,
- 22,245,170,187,225,135,153,203, 44,103,253, 48,112, 63, 33,196,179, 96,119,161, 33, 21, 26,165, 28, 22, 46, 88,128, 77,107, 87,
- 98,217,202,181, 72, 79, 75,133, 80,104, 3, 0,208,235, 57,112,133,222,237,147,119,167,180,221,172, 41, 35,201,154,205,135,225,
- 91,197, 1, 39, 47,222, 65,109,159, 10, 56,123,229, 1,234, 87,171,132,243,215, 31,163,126,245,202,184,126,239, 37, 38,143, 25,
- 68,110,159,221,209,174, 44,105,180,122,245, 58,139,140,244, 56,156, 90,180, 19,241,235,215,227,195,216,177,168,155,123,205, 3,
- 66, 32,114,113, 1, 68,165,167, 81, 97,188,122,245, 10,106,181,186,168,214, 61,188,188,188, 74, 77,119,165, 82,249, 88,175,215,
-211,184,184, 56, 18, 23, 23, 7,185, 92, 78, 94,190, 12,224,124,124,124,187,209,160, 67,155, 1, 96,201,146,197,221, 14, 60, 78,
- 71,246,157,181, 80,222,253, 13,162, 74,207,153, 77,243, 71,106, 71,204,221,248,184, 64,229,246, 81, 56, 99, 98, 98,190,201,251,
-239,234,234, 26,244,230,205,155,170,121, 93,202,185, 93,133, 34,189, 94,239,158,215,109,168,215,235,161, 86,171,209,170, 85, 43,
-182,164,119,183,180,180,172,239,229,229,133, 39, 79,158, 96,237,218,181, 86,205,155, 55,199,219,183,111, 65, 8,193,226,197,139,
-137,183,183,183, 48, 49, 49, 17,109,219,182,197,145, 35, 71, 26,148, 22,159,132, 16, 83,185, 92,190,237,228,201,147, 82,134, 97,
-144,145,145, 1,158,231,209,168, 81, 35, 48, 12,131,128,128, 0,204,156, 57, 19, 71,142, 28,193,177, 99,199,100,181,106,213,218,
- 70, 8,241, 42,216,125, 95, 66, 26, 81,149, 74, 69, 37, 18, 9, 36, 18, 9,164, 82, 41,164, 82, 41,196, 98, 49, 50, 85,192,136,
- 85, 31,212,172,212,134,247,169,209,200,109,200,248,197,204,138,217, 67,175, 0, 56,110,104,158, 7,114,198, 92,173,217,190,125,
-109,255,180, 52, 6, 0,182, 16,194,107, 41, 93,102,200,247, 14, 0, 25,170, 84, 84,112,115,193,225,125,199,208,163,111,215, 34,
-197,149, 80, 40,130, 72, 40,132,169,149, 73,169,156, 34,145,200, 62, 40, 40,200, 90, 40, 20,230, 91,228,117, 58, 93,220,236,217,
-179,109, 59,116,232, 96,122,246,236, 89,166, 67,135, 14,188,141,141, 77,214,147, 39, 79,226,181, 90,173,117,195,134, 13, 13,206,
-243,148,210,223,107,212,168, 81,243,232,209,163, 67,167, 77,155,246,104,202,148, 41, 11, 11,158, 95,190,124,249,130, 51,103,206,
- 84,232,214,173,219,174,167, 79,159,254, 94,150, 50,228, 75,203,121, 35,231, 63,143,179, 56, 45,146, 11,123, 66,200,169, 2,231,
- 59,230,237, 79,155, 54,109,198,146, 37, 75, 94, 18, 66, 78, 21, 60,158,119, 93, 46,247,169,162,246,115,239,181,154, 62,125,186,
-239,210,165, 75, 23,251,251,251,239,187,115,231,206,251,175, 38,176,242, 94,164,224,203, 21,138, 72,164,167,167, 35, 61, 61, 29,
- 17, 17, 17,216,176, 97, 67,238,135, 44,132, 64, 32,128, 64, 32,200, 31,175, 80, 28, 46,157,188,249, 27,128,223,106,213,170, 37,
-124,113,247,224,217,159, 54,141,111, 89,187, 85, 77,246,241,229, 23, 61, 1,252, 12,224,155, 65,131, 6,217, 0,192,206,157, 59,
- 19, 1,156,253,191,144,200,148,210,131,193,193,193, 63, 56, 58, 58,230,143, 65, 41,216, 77,168,215,235, 33,149, 74,145, 55, 86,
- 69,165, 82, 97,195,134, 13,122, 74,233,193, 18, 56,241,230,229, 21, 4,191,188,154,115, 31,207,131,231,254,186,127,222,188,121,
- 5,167,190, 98,116,174,165,164, 84,113, 87, 84,156,211, 66,191,133,142,127, 34,202, 62,233,134, 16,141,239, 57,112,172, 35, 79,
- 4, 56,113,229, 41,132, 66, 33,248, 2,214, 75, 33,155,211, 58,126,249, 54, 26, 78,246, 62,232,220,111,164,195,209, 93,235,198,
- 3,248,165,172,113,237,233,231,143, 9, 63,252,128,205,155, 54, 97,230,220, 5,249,234, 92,207,113,208,151, 26, 78,134,105, 88,
-219, 27,153, 73,145, 96, 89, 22, 13,106,184,129,101, 89, 52,174,237, 1,150,101,209,168, 78, 85, 8, 4, 2, 52,171,239,141, 42,
- 85,170, 64, 32, 16, 48,165,164, 59,222,188,188,140,224,151,215, 10,136,221,156, 52,209,198,196,124,114,189, 46, 38, 6,180,188,
-117, 89,243, 22,134, 13, 27,150, 26, 17, 17,161, 45,124,174, 92,185,114,162, 27, 55,110, 88, 20,211, 61,151, 15,153, 76, 86, 75,
- 32, 16, 60, 78, 78, 78,230, 77, 76, 76, 24,158,231,120, 31, 31, 95,246,220,198, 25, 71,243,174,153, 62,125,198,209,222,181,204,
-186,237, 62,120,138,138, 42, 54, 34, 68, 40,209,127, 55,119,163, 72, 40,146, 25,228,161, 62,175,187,240,245,235,215, 40, 45, 60,
- 69, 20,130, 31, 33, 37, 37,101,144,151,151,215,141,223,126,251,205,138, 16,130,155, 55,111,130,101,217,252, 45, 36, 36, 4, 12,
-195,224,167,159,126,210,166,167,167, 15, 47,181,192, 18, 8,126, 56,124,248,176,185, 88, 44, 70, 70, 70, 70,254,119,195,178, 44,
-130,130,130,176, 98,197, 10, 12, 26, 52, 8,225,225,225,112,114,114,194,228,201,147, 21, 75,151, 46,253, 1,192, 2, 3, 94,253,
-185, 70,163,169,109, 98, 98, 2,169, 84,138, 60,161, 5, 0, 23, 94, 10, 3,178,179,179,171,217,216,216, 56,216, 94, 63,117,162,
- 65,243,206,126,214,182,142,254,121, 2,203, 80,188, 3, 54,189,215,235,103,125,115,244,168,221,237,163, 71,249,187, 39, 78, 68,
- 74, 51, 51, 55, 26, 76,160, 99,241,225, 93, 36,106,213,170,133,199,143, 31,163, 86,173, 90, 5,197, 18,196, 98, 49, 68, 34, 17,
- 68, 34, 17,108, 44, 12, 26, 42, 65, 25,134,193,237,219, 31, 47, 55,218,184,113,227,228,171, 87,175, 42, 0,224,195,135, 15,180,
- 99,199,142,169,129,129,129,112,119, 47,121, 24,154,131,131,195, 13,150,101, 43, 22,250, 86, 45,187,119,239,142,148,148,148,246,
-221,187,119,111,148,123, 44,234,208,161, 67, 3, 0, 64, 44, 22,131, 97, 24, 14, 70,252,231, 81,154, 22, 41, 40,144, 10, 11,173,
- 37, 75,150,116, 44,124,172,160,152, 42,234,127,193,123,151, 46, 93,186,184, 0,183,242,107,188,143,160,160,114, 44,173,176, 44,
- 9,165, 9,172, 60, 60,126,252, 88,231,236,236,188, 57,248,105, 88, 75,183,234,174,144,201, 37,109, 8, 33,191, 73, 36,146, 73,
- 3, 7, 14,196,189,123,247, 16, 16, 16,176,245, 75,151, 61,169, 86,173,218,121,137, 68, 82,161,152,238,144, 15, 47, 94,188,104,
- 91, 76,133, 48, 55,119, 76, 89,177,131,220, 11,142, 7, 43, 56,200,189,216, 12,193, 83,232,180, 58,100,101, 43,255,170,188,115,
- 5, 86, 86, 86, 22,250,244,233,243,145, 5, 43, 62, 62,222, 16,165,143, 21,199,143,227,226,193,131,104,239,231,135, 35, 15, 30,
- 96,233,192,111,225, 89,193, 25,148, 35,160, 4, 8,223,187, 14, 73,233,153,216,115,249, 54,146, 51,178,209,191,113, 99,184,155,
-217,148,204, 43, 20,181,174, 91,223, 95,116,233, 78, 32,132, 66, 1, 24,240,160,186,108, 56,121, 53, 3,203, 48, 48,183,175, 4,
-145, 80, 8,161, 80,128,144,136, 68,120,249,214, 17,159, 18, 75, 91,127,142,192, 42, 95,161, 50,120,142,195,160, 65,131,176,111,
-223, 62, 88, 59, 84,128,121, 57, 95,252,188,114, 19,218,183,106, 92,234,251,231,181,216, 5, 2, 1, 88,150,253,228, 55,239,191,
- 33,214, 72,202, 83,104, 11,167, 17, 79, 65, 1,184, 44, 90, 4,151, 69,139,240, 32,247,153,222, 89, 89, 80, 42,149, 64, 61,159,
- 50,137, 43,141, 70,131,136,136, 8,109, 76, 76,140,125, 17, 21, 83,156, 70,163, 41, 85,208,236,216,177,227,249,224,193,131,107,
- 91, 89, 89, 61,122,254,236,153,174,186,159,159,240,236,134, 25,199,242,186, 7, 1,192,207,207, 47,121,198,140, 25,199, 6,244,
-234,216,245,247,105,125,185,239, 23,236, 18, 72,100,178,218, 29,167,148, 60,208,189,192,247, 17, 90,189,122,117,106,200,181,217,
-217,217,177, 37,164, 81, 39, 0,243,107,214,172,105,214,188,121,115,220,184,113, 3, 61,122,244, 80,107,181,218, 96, 0,232,208,
-161,131,199,158, 61,123,196,129,129,129,176,181,181, 21,126,248,240, 97, 27, 33,164,196,129,239, 98,177,184, 89,157, 58,117, 24,
-181, 90,253,137,184, 90,186,116, 41,250,245,235, 7, 15, 15, 15,240, 60,143,204,204, 76, 52,111,222, 92,184,118,237,218,102, 6,
- 10,172, 9,158,158,158, 43,144, 51,139,176, 96, 89,248, 10,192,143,185,214,237,216,142, 61, 6,189,108,220,170,123,237,138, 85,
-124, 29, 75, 35,180,183,183,159,206, 48, 76,111,158,231,217,244,244,244, 8, 13, 33, 85,188, 43, 86,180,111,216,181, 43,210,132,
- 66,118,205,229,203, 76, 92,102,166, 2,128, 65, 93,141, 74, 93, 38, 42,184,229, 12,229,235,209,183, 43, 30, 63,126,140,158,253,
-186, 65, 36, 18, 65, 32, 16,230,124,155,162, 28, 11,150,133,141,169, 97,154, 77,167,251, 36,175, 82, 74, 97,102,102,150,223,147,
-145,119, 76,167,211,149, 88,249, 1,112, 63,176, 96,182,157,204,204, 28,156, 78, 7,159,174, 61,243,243,244,253, 45,191,203,192,
-243,178,212, 15,161, 24,119,240,164, 16, 70, 24, 81,140, 21,171, 36, 45, 82, 80, 32,125,133,103,157,154, 54,109,218, 12, 0,116,
-218,180,105, 51,242,246,151, 44, 89,162, 4, 16,245, 85, 4,214,151,138,171,188,110,132,146,208,162, 69,139,113,166,166,166,107,
- 1,160,118,237,218,136,184, 23,133,136,123, 81,240,170,234,211,176,166, 95,237,180,126,253,250,193,218,218, 26, 83,166, 76,161,
- 0,182,150,245,249, 33,111, 94, 42, 0, 80, 39, 39,167, 41, 0,224,228,228,228,247,224,193, 3,219,135, 15, 31,162, 78,157,191,
-102, 20,106,181, 90, 52,106,212,168,164,138, 48, 3, 57, 99,169, 38,126, 61, 85,206, 67,171,213, 34, 59, 91, 9,141, 70, 11,189,
-142,135, 94,175, 71, 45, 31, 83,236,218, 52, 45,231,152, 62,207, 90,150, 99, 37,115,113, 48, 69,173,106, 14, 58,134, 33,202,135,
-207, 98,204,138,226,213,104, 52,120,254,225, 3,158,133,133, 1, 0, 58, 47, 89, 86, 98, 56,118, 93,190, 1,111,111,239,210, 66,
-235,230,226,228,128,232,139,207,115, 10,109,101, 4, 30,222, 58, 0, 83, 83, 5, 0,192,167,105,127,136, 68, 57, 2, 43, 75,169,
-133, 77,213,114, 32,148, 22, 59,189, 95,110,229,120, 94, 32,146, 86,160, 28, 15, 74,121, 80,158, 3,165, 60, 36,166,214, 38, 99,
- 71, 13, 1,207,115,168, 91,183, 46, 8,203,130,211,169,209,171, 83,107,164,164,101,192,218,194,204,160,184, 21,137, 68,104,218,
-180,169,172,184,243,111,223,190, 85, 22, 20,100, 37,167,145, 14, 89, 89, 74,168,213,106,104, 53,122,104,117,122,240,149, 69, 88,
- 56,235, 91,232,181,122,100,247,245,207, 57,246, 67, 55,104, 53, 58,132,155, 48,140,159,183,173,142, 1, 81, 62, 9,140, 55, 43,
- 77, 96,229,137,130,226, 80,212,152,191, 98, 68,214,179,193,131, 7,215,170,238,231,247,184,119, 43,191, 95, 95, 4,188,140,126,
- 17,240,242,147,235, 42,120,248,133,126,191,116,223,100,161, 72, 86,203, 80,113, 5,124,220, 93,248,133,152,145,145,145, 81, 93,
-161, 80,224,205,155, 55, 96, 89, 22,132,144,183,148,210,234, 0, 48,114,228,200,119, 2,129,192,149,101, 89,172, 95,191,158, 8,
- 4,130,106,254,254,254, 51, 0, 28, 40,161, 33,231,101,106,106,250,145,245, 74, 36, 18, 97,218,180,105, 24, 48, 96, 64,190,184,
- 18,137, 68,216,177, 99, 7,106,215,174, 13,141, 70,227,101,160, 8,126, 8,160,177, 1, 22, 62,146, 43,202, 75, 21,161,122,189,
-126,112, 82,239,222, 85,112,253, 58, 26,186,186,122,215,170, 85, 11, 90,237, 95, 6,204,202,149, 43,151,203,200,200,136, 37,132,
-252, 9,224,119, 74,233,211, 18,249, 84, 20, 31,222, 69,230, 53, 86, 81,183,110,221,124,139, 85, 65,235,149, 72, 36,130, 76,164,
- 40,179,192,162,148, 34, 43, 43,139, 57,119,238,156,141,151,151, 23, 1, 0,111,111,111,114,239,222, 61, 43,153, 76,150,232,228,
-228, 84,106,195, 87,102,102,142, 29,131,251, 0, 0,230,180,106,151,223, 32, 58, 55,127, 6,132, 66, 33, 90, 78,153,241, 73,190,
-231,121,158,133, 17, 70,113,101,128, 22,249, 90,226,170,176, 5,107,201,146, 37, 47,151, 44, 89,242,137, 53,236,171, 89,176, 12,
- 49,249, 27,218, 10, 42,140,149, 43, 87,162, 90,181,106, 37, 86, 64,107,215,174,197,238,221,187, 87, 82, 74, 67,202,250,252,142,
- 45,107,250, 96,213,209,151,174, 30, 62, 4, 0, 22,252,208,137,201,202,202,194,237,219,183, 97,110,110,142,183,111,223, 26,154,
-192,166,230,230,230,243, 25,134,233,197, 22, 30,217, 95,180,176,228,120,158, 63,152,150,150, 86,172,155, 6, 74, 1,173, 78,143,
-172,108, 21, 52, 26, 13,126,248,105, 93,169,225, 88, 2, 16,173, 38, 67,208,180,137,191,172, 56, 11, 78, 93,223,166, 24, 51, 64,
-254, 73,165,205,230,184, 2, 67,141,186, 57,107, 75, 63,185, 31, 0, 74, 1,142, 3,108,236,172,176,117,223,175, 37, 70,129,158,
-227,115, 91,195, 28, 50,213, 28,188,234,119, 68,228,171,235,249, 22, 35,177, 40,167,107, 88, 36, 20,130,167, 36,199,123, 67,113,
- 2, 72, 44,171,144, 18, 19,226,190,233,212, 11,140,232, 88, 13,135, 46, 61, 71,207, 86,213,113,245,126, 32,154,215,243,198,203,
-224, 48,248,184, 87,196,250,109, 7, 65, 41, 50,254, 88,245,115,236, 95, 21,153,254,131, 33, 22,172,123,247,238, 41, 11, 91,173,
- 10,254,210,210,235,193,156,174,192, 92, 11,150, 82,165,198,148,233, 6,185,227,201, 73,163,198,245,101,134, 92, 92,146,133,202,
- 16, 1, 86,216,146,133, 82,220,172, 84, 6, 80, 27,152,250,127, 89, 96,114, 28,135,211,167, 79,231,167, 71, 81,233, 88, 48,237,
- 12, 16, 55,248,240,225, 3, 2, 2, 2,224,239,239,143,180,180, 52, 8, 25, 6,147, 95,188,128,247,192,129,208,136, 68,224,121,
- 30, 98,177, 24, 35, 71,142, 52, 56, 62,203, 88, 42,231,142, 99,227,104, 41,101,201,175, 29, 59,118,172,242, 38, 43, 11, 47,131,
-130,208,106,222, 60, 0,192,233,211,167, 63,202, 19,147, 38, 77, 18, 7, 6, 6, 14,123,244,232,209, 48, 66,200, 74, 74,233,228,
-226, 56,181, 84,149, 63, 6,171,119,255, 30,168,226, 85, 25,187,183,237,205, 63, 63,233,167, 9, 16, 10, 69, 16, 10,133,176,176,
-176, 48,232,109, 10,150,221,217,217,217,204,161, 67,135, 92,154, 53,107, 38, 26, 49, 98, 4, 1,128, 77,155, 54, 49, 91,182,108,
-145, 95,184,112, 65,100,110,110, 30, 83,170,168,212,106, 63, 73, 99, 66, 8,132, 66, 33, 68, 98, 17,192,243, 32,132,200,151, 47,
- 95,190,224,229,203,151,117, 60, 61, 61,161, 86,171, 7, 18, 66,158, 24,253, 96, 25, 81,154, 22, 41,106, 44, 85,174, 21,170, 56,
- 36, 20, 28,151, 85,156, 64, 43, 56, 38, 11,192, 87,153,108, 33, 40, 77, 84,177, 44, 91,170,117,138, 97,152, 82,187, 8, 39, 77,
-154, 4, 83, 83,211,226, 42, 30,250,226,197,139,192,152,152,152, 77,148,210,117,159,243, 34,167, 46, 63,121, 57,127, 98,183, 12,
-228,246,157, 90, 88, 88, 36,182,104,209, 34, 19,128,246,192,129,143, 27,196,106,181,186,216,138,219,220,220,124,254,150, 45, 91,
-198,119,237,218,149, 41,236, 42,160, 96, 55, 94,222,166,211,233,112,224,192,129,241, 83,167, 78, 69,113, 86,175,188,202, 59, 59,
- 75, 9,101,238, 0,231,119, 1,135, 12, 45,204,139, 61,165,176,116,130,139, 43, 87,108, 37,194,136,114,198, 8, 57, 84,240,203,
- 63,102,106, 42, 5, 87, 2, 39, 33, 76, 72, 88,120,180,115, 57, 7, 43,188,139, 72,128,125,197,106, 72,137,250, 43, 30, 4, 2,
- 22,194,220, 46, 66, 11, 51, 57, 18,226,227,193, 48,108,137,130,248,231, 61, 79,112, 63, 32, 12,135, 47, 61,133, 86,149,133, 85,
- 59,207, 65,171,206,132, 86,149, 5,173, 42,231,119,241,212,239, 64, 8, 98,181,170, 76,143, 50,101, 96,129, 0,245,234,213, 43,
- 86,224, 68, 69, 69, 25,104,193,162,249, 22, 44,165,170,140,105,100, 88, 75,169, 68, 11, 85,222,249,207, 21, 4,121,174, 27,100,
- 50, 89,237, 29, 59,138,119,199, 80, 20, 28, 29, 29,207, 42, 20,138, 74,134, 94, 95, 6,167,163,139, 45, 44, 44,230,123,122,122,
-122,173, 90,181, 74,200,178, 44, 90,182,108,233,241,221,119,223,125, 0,128,106,213,170, 57,229,149, 49,223,127,255, 61,189,119,
-239, 94, 64, 78,219,162,120,136,197,226, 32,115,115,243,218, 45, 90,180, 64, 90, 90, 26, 34, 34, 34, 32,151,203,225,253,235,175,
-120,241,253,247,240,219,176, 1, 76,139, 22, 32,132, 64, 44, 22,227,197,139, 23,144,201,100, 65, 37, 20,230,245, 0, 44, 3,208,
- 16,127,117, 11, 82, 0,183, 1,252, 68, 41,189, 95, 68,121,199, 0, 0,199,243,165, 37,214,183, 83,166, 76, 65,170, 80, 8,116,
-232, 0, 81, 72, 8,180, 90, 45,252,253,253, 81,187,118,142, 39, 14,127,127,127, 8, 4, 2, 84,175, 94, 29, 78, 78, 78, 88,191,
-126,253,183,248,120,102,245,199,101, 87,166, 14, 31,222, 69,194,223,223, 63,223, 82,213,161, 67,135,124, 11,150, 80, 40,204,183,
-100, 17,142, 53,168, 50, 43, 40,176,116, 58, 29, 17,137, 68,130, 81,163, 70,145,225,195,135, 83,157, 78,199,139, 68, 34,102,243,
-230,205,228,222,189,123, 2,165, 82, 89,106, 3,220,183, 91, 47,204,105,157, 99, 4,253,185,146, 45,132, 34, 33,196, 34, 17,166,
- 4, 69,230,167,139,217,142,125,226,165, 75,151,246,244,244,244,204,233,110, 7, 4, 70, 63, 88, 70,148, 98,224, 73, 40, 36,142,
- 52, 5,246, 19, 0,144,220,253,132, 2, 66, 42, 1, 57, 51, 2,235, 20,186, 54,239,188,166,208,111,222,249,103, 95,227,125, 74,
-106, 1, 7,223,189,123,215,189, 86,173, 90, 8, 15, 15,255,100,102, 91, 94,133, 37,151,203, 33,147,201,112,231,206, 29, 0, 8,
- 46,142,236,202,149, 43,191, 33,199, 75, 50, 0,192,201,201,201,191,121,239,102,119,234,182,171,131, 61, 75,246,166,197,196,196,
- 84,207,243,129, 67, 8, 33, 78, 78, 78, 3,132, 98, 65, 31, 87,223,242, 77,193,243,203, 46,157,184, 53,175,164, 23,113,245,240,
-201, 4,160, 44, 48,139,112,197,231, 68, 8,195, 48,189,186,118,237,202, 4, 6, 6,162, 79,159, 62,216,189,123,119,177,215, 14,
- 24, 48, 0,251,246,237, 67,215,174, 93,153,233,211,167,247, 42, 77, 96,229, 88, 71, 52, 95, 45, 51,190, 9,126,134, 93,123, 55,
- 23, 59,198,200,206,206, 22, 0, 16, 31,159,144,127,172,118,237,146, 29, 49,243,122,205,197, 39,143, 30,248, 55,104,210, 82, 20,
- 17,151, 10, 94,175,134, 42, 35,241,175, 22,110,106, 28,168, 94, 5,145,137, 21, 28,108,204,241,248,238, 5,141, 86,163,186, 88,
- 18,231,248,174, 62,248,190,147, 23, 64,121,116,155,188, 21,167,214,141,203,239,222,105,212, 99, 2, 46, 31, 88, 99,240, 24,190,
-194, 16, 10,133,120,241,226,133,178, 56,235, 21,203,178,165,250,212,250,203,202,168, 67,118,182, 18,217, 74,213, 87, 75, 35, 66,
-136,173,189,189,253, 31, 86, 86, 86,210,162, 4, 20, 33,196,214,214,214,246, 15,107,107,107,169,161, 93,132,197,137,171, 92,191,
- 88,143, 6, 15, 30, 92, 38,145, 37,145, 72, 42, 5, 7, 7,231, 59, 25, 45,233, 87,163,209,160,121,243,230, 2, 3, 11,203,147,
-132,144,247,142,142,142,183,189,189,189,205,223,189,123,135,189,123,247,138,132, 66, 97,249,188,242, 35, 35, 35, 3, 44,203, 34,
- 62, 62, 94, 7, 96,104,105, 93,100,106,181,250,250,245,235,215,107,116,234,212,137, 13, 10, 10, 2,203,178, 57,225,242,247,135,
-223,134, 13, 8,152, 56, 17, 77,195,194,160,210,106, 33,149, 74,113,254,252,121,109,118,118,246,245,226,248,100, 50,217,166,208,
-208, 80, 31,169, 84, 10,173, 86, 11,158,231,193, 48, 12, 17, 8, 4,141, 44, 44, 44,214, 2,168,243,241, 55,101,103, 55,114,210,
- 47, 85, 57,189,158,139, 9,127,151, 80, 90, 28, 36, 37, 37,225,228,201,147,168, 95,191, 62,154, 54,109,138,168,168, 40,132,132,
-132,160, 67,135, 14,249,215, 60,123,246, 12, 79,158, 60,129,155,155, 91,233, 22, 60, 86, 7, 55,207, 74, 16, 9, 69, 16,138,132,
- 57,191, 66, 97,238,150,243, 63,239, 88,158,207,194,178, 88,176, 0, 64,161, 80,228,229, 11,190, 82,165, 74, 49, 49, 49, 49,142,
- 0,216, 60, 7,172,134, 52, 86,242,234,136, 60,113, 37, 18,139,242, 45, 89, 0,144,154,154,170,234,218,181,235,159,106,181,122,
- 8, 62, 99, 69, 17, 35,254,147,120,248,127,116,239,223, 34,176,218, 55,104,208, 96, 67,191,126,253, 90,174, 94,189, 26, 10,133,
- 2, 49, 49, 49,249, 21,161, 88, 44, 70,185,114,229,144,156,156,140,141, 27, 55, 34, 50, 50,242, 10,128,145,134, 62, 56, 38, 38,
-230,222,219,167,193, 73,205,123, 54,176,246,105, 80,213, 34, 34, 56,178, 62,128, 59,185,226,106,107,191, 73,237,135, 52,239, 94,
- 23, 34,177, 16, 17,111, 99,255,191, 69, 8,203,178, 44, 33, 4,125,250,244, 49,232,250,190,125,251,226,250,245,235, 40,169, 59,
-145,207,179, 96,101,171,144,165,252,122,141,179, 49,227, 7, 96,204,248, 1,249, 34,194,144, 46,150, 28,113,187,191, 4,129,165,
- 93,125,106,255,198, 17, 53,235,250, 87,168,237, 83, 9,247, 31, 61,197,158, 13,127, 25, 21,182,253,182, 0,191,108,187,130,114,
-246,150,208,170,179,112,246,208,230, 88,173, 58,123,245,103, 26,225,114, 68, 45, 33, 48,208,191,228, 71, 86,211, 60,129,229,235,
-235, 91,172, 5, 43, 57, 57, 89, 89, 90,133,144,159, 70, 26, 29, 50,179,148, 80,102,127, 29,129, 69, 8,241,107,212,168,209,197,
-131, 7, 15, 90,219,217,217, 33, 58, 58,250, 35,129, 69, 8,241,107,216,176,225,197,131, 7, 15, 90,219,219,219, 35, 34, 34,194,
- 96,247, 32, 69,136, 43, 36, 36, 36,144,148,148, 20,222,210,210,178, 76, 34,139, 97, 24,168,213,106,188,122,245,202,208,199, 26,
- 60,227,203,220,220,124,199,190,125,251,204, 19, 19, 19,193,178, 44, 94,189,122,245,209, 44,194,188,109,235,214,173,162,110,221,
-186,109, 1, 80,163, 36, 62,189, 94,191,114,192,128, 1,195,162,162,162, 44,237,236,236, 16, 19, 19, 3,177, 88, 12, 74, 41, 72,
-243,230,104,252,254, 61,180, 28, 7,153, 76,134, 55,111,222, 96,211,166, 77, 89,106,181,122,101, 49,233, 35, 54, 49, 49,113, 23,
-137, 68,232,223,191,255, 71,231,118,238,220,137,206,181,217,218, 35, 90, 75, 50,245,144,170,227,100,223,156,101, 89,150,140,156,
-178,204,163, 94,147, 14,190,175, 3,238,191, 75,136,139,188, 93,202,235,235, 52, 26, 13, 60, 61, 61,241,240,225, 67, 92,186,116,
- 9, 45, 90,180, 64,211,166, 77,241,252,249,115, 92,184,112, 1, 79,158, 60, 1, 33, 4,214,214,214,121,195, 44, 74, 28,107,161,
-201,210, 35, 62, 42,233, 19,107, 85,225,125,145, 72, 4,181, 88,107, 80, 26, 5, 5, 5,225,225,195,156,250, 39, 59, 59, 27, 2,
-129, 64, 63,101,202, 20, 48, 12, 67, 3, 2, 2, 96,103,103, 71,127,250,233, 39, 78, 32, 16,232,195,195,195, 13,205,251, 57,214,
-170, 92,113, 37, 16, 9, 63, 18,102, 60,207,103, 60,123,246,108, 4, 33,228, 57, 33, 36,207, 27,170,209, 15,150, 17,255, 42, 8,
- 74,104,133,188, 7,208,138, 16,242,237,177, 99,199, 86,174, 93,187,214,182, 99,199,142, 72, 73, 73, 65,133, 10, 21,224,232,232,
-136, 83,167, 78,225,204,153, 51,137, 28,199, 77,166,148,238, 46,226, 35,107, 85,156,175, 12, 74, 41,117,114,114, 58,168,206,204,
-252,190, 86, 83, 47, 92, 57,112,115,137,163,163,227, 72,103,103,231, 31, 6,207,232, 50,164, 89,215, 58,120,243, 36, 20,247, 46,
-188, 64, 92,120, 34, 6, 55,254,169, 68,206,194,131,220, 45, 44, 44,134,153,152,152,136, 1,104,139,104, 5,127, 52,139,176, 32,
- 39,199,113,156, 70,163,193,254,253,251, 13, 18, 89,123,247,238,133, 74,165, 2, 87,168, 31,181, 32, 39,229, 41, 17, 8, 37,112,
- 42,231, 9,173, 54, 11, 60,255,121,214,154,130,156,132, 16, 48, 12,131,119, 98, 49,236, 18, 19,113,255,254,125,131, 56, 10,182,
-156,139,138, 79, 74,169,138, 16,210,127,205,162, 41,167,198, 78, 91,102,209,162, 65, 13,204,249,117, 39,180,218,109, 96, 88, 6,
- 50,137, 8,181,234, 54, 4, 11, 53,254, 88,250, 99,106,118,122, 74,255,194, 75,230,124,194, 89, 82, 79, 10, 5, 56,158,199,165,
- 27, 15, 12,126,247,252, 90,158,227, 32, 16, 8,240,246,237, 91,101, 81,179, 7, 89, 54,167, 59,147, 97,152, 34, 91,221, 31,167,
- 17, 79,132, 34, 41,202, 85,240,134, 70,157,249, 85,210,200,206,206,238,199,163, 71,143, 90,231,185, 60,120,254,252, 57, 8, 33,
-175, 10, 88, 67,126, 60,122,244,168,181, 82,169, 68, 64, 64, 64,222,146, 80,175,202,242, 29,229, 89,174, 18, 18, 18, 72, 76, 76,
- 12, 76, 76, 76,152,231,207,159,171,171, 87,175,254, 8, 37,175,212,144,207,169, 82,169,194,138, 27, 31,169, 82,169,156,165, 82,
-169,176,208,189, 78,238,238,238,111, 10,119, 21, 22, 21,206,180,180,180,251, 83,167, 78,173,213,174, 93, 59,252,248,227,143,201,
-150,150,150,166,127,252,241,135,128,101, 89, 50,118,236, 88, 46, 62, 62, 62,115,243,230,205,230,199,142, 29, 67,106,106,234,157,
-210,222,157, 82,154, 65, 8, 25,209,160, 65,131,157,231,206,157, 51,113,119,119, 71,122,122, 58, 40,165,216,177, 99, 7,198,142,
- 29, 11,169, 84,138, 55,111,222,160,115,231,206,217,217,217,217, 35, 10,143,141, 44,192, 73, 8, 33,148,231,121,204,158, 61, 59,
-223,169,104,158,147, 81, 83, 25,193,166, 73,149,229, 19, 54,167,201,191,157,179,121, 32, 0,112,122, 61,247, 58,224,254,187, 29,
-235,230, 92, 21,137, 68, 55, 74, 73,163,153, 19, 38, 76,248,163, 67,135, 14, 50,133, 66,129,228,228,100,220,190,125, 27,119,239,
-222,197,189,123,247,160,209,104, 96,109,109, 13, 75, 75, 75,196,196,196, 32, 40, 40, 72, 9, 96,102, 73,156, 98,185, 16,174, 85,
-243,102,242,254,101,189,202,223, 23, 9, 33, 20,252, 53,147,208,144,188,212,164, 73, 19,212,171, 87, 47, 79,248,112, 31, 62,124,
-136, 81,171,213,164,128,216,143,202, 19,226,229,203,151,215,111,221,186,149,150,196,121,111,211,122,156, 91, 56, 19, 98,145, 8,
-147, 95, 69,228,139,173,157, 45,106, 66, 40, 22,193,171, 83,143,130,245,192,239,132,144,109,185,255,213,134,228,249, 47,104,240,
- 24, 57,255,225,156,255, 25,129, 85,224, 3,216, 67, 8, 57,251,221,119,223, 45,245,243,243,251,110,213,170, 85, 68, 36, 18, 97,
-222,188,121, 52, 58, 58,122,123,110,171, 35,229,115, 30, 78, 41,221,126,237,200,157,209,131,166,117, 37,147, 86, 15,110,244,232,
-114, 64, 80,181, 6,238,168,214,192, 29,143,174, 4, 98,221,140,189,187, 57, 29, 55, 59, 38, 38,166,180,102,147,186, 85,195,170,
-133, 7,185, 91, 95,191,122,217,186,172,179, 8,121,158, 63,184,119,239,222,241,221,187,119,103, 30, 60,120,240,201,152,171, 60,
-103,124, 60,207,227,226,197,139,208,106,181,216,190,125, 59,207,243,124,241,126,176, 64,143,175, 89,189,116,208,246, 93,199,197,
- 98, 17,193,221, 27,135,145,150, 82,178, 85, 78, 36, 18, 98,235,142, 35, 90,145, 72,248,186,168,243, 90,173, 54,226,242,229,203,
-246,109, 57, 78,200, 48,204, 39,194,169, 56, 28, 60,120, 80,199,243,252,135, 82,210,229, 14, 33,194, 78, 63,255, 56,116,111,135,
-222,223,217, 55,104,208, 72,104, 99,103, 15, 66, 8,226,227,226,241, 38,224,129,238,236,225, 45,113, 89,217, 25, 6, 45,149, 51,
-116,197,181,252, 49, 87, 0,208,113,236,218,252,241, 87, 0,208,105,240, 84, 52,175,239, 3, 98,136,169,233, 47,113,197,235,245,
-122,200,229,114,232,245,250, 34, 93, 53,152,155,155,203, 84, 42,149,146, 82, 10,142,227, 74, 52, 13, 81,224,171,167, 17,199,113,
- 94, 41, 41, 41,200,202,202,194,221,187,119,233,162, 69,139, 18, 18, 18, 18,242, 7, 99,234,116, 58,175,228,228,100,100,102,102,
-226,206,157, 59,116,233,210,165, 9, 73, 73, 73, 51,202,242, 13,201,100,178,218, 2,129,224, 81, 74, 74, 10,111, 98, 98,194,232,
-116, 58, 93,245,234,213, 37, 50,153,204,224,133,206,163,163,163,219, 21,119,206,205,205, 45, 56, 56, 56,184, 10,199,113, 5,215,
- 40, 20,169, 84, 42,247, 6, 13, 26, 24,210,181, 51, 97,219,182,109, 56,114,228, 72,221,244,244,244, 1, 31, 62,124,216, 9,160,
-174, 64, 32,192,211,167, 79, 95,169, 84,170,126,221,187,119,223,145,146,146,114, 31,192, 4, 3,203,141,115,132,144,254, 94, 94,
- 94,219,230,207,159,175,104,218,180,169,192,201,201, 9,117,234,212,193,155, 55,111,112,250,244,105,221,239,191,255,158,149,157,
-157, 61,148, 82,122,177,228,100, 7,209,235,245, 16,139,197,249,155, 68, 34,129, 72, 36, 66,134,146, 98,248,175, 33, 74, 61,100,
-202,149,243, 70,156,166, 0,137,141, 8, 73,140,143,141,184, 79, 8,185, 17, 29, 29,157, 86, 76,156,137, 85, 42, 85, 13, 71, 71,
- 71, 1, 33,100,181, 86,171, 29, 50,110,220, 56,135,197,139, 23,163,106,213,170, 72, 76, 76,132, 92, 46,135,187,187, 59, 18, 18,
- 18,240,224,193, 3, 46, 59, 59,123, 3,128, 5,148,210, 18,187, 29, 83, 19,210,225, 98, 95,254, 35, 75, 39,165, 20, 84, 15,232,
- 56, 14,156,150, 66, 67,116, 16, 10,117, 16,137, 68,134, 84,146,148,231,121,164, 56, 58, 34,234,252,121,228,174, 42, 81,172, 21,
-237,212,169, 83, 6, 36, 16, 15,177, 68,252, 81,183, 32, 33, 4, 34,177, 24, 66,177,232,147, 25, 49, 70,171,149, 17,255, 89,129,
-149,251, 1,164, 2, 24, 73, 8,217,217,172, 89,179, 83,148, 82, 33,128, 14,148,210,155, 95,242,240,152,152,152,199, 78, 78, 78,
-211,237, 93, 44,151,126, 51,160, 17,170,214,168, 0, 78,207,225,246,153,167,216,190,248,216,190,168,136,168,193,134,172, 77,198,
-243,252,213,134,181,171, 50, 40,224, 91,219,201,201,137,255,156, 89,132,105,105,105,115, 39, 79,158,140, 31,127,252,177,204,179,
- 8,139,187,230,249,171,248,145,126, 94,182, 46,157,190,105,220, 22,132,161, 26,141,186,132, 2, 15,249, 30, 71, 69, 34,225,235,
- 7,207,162,171, 23,117, 93, 66, 66, 66,219, 33, 67,134, 92, 20, 8, 4,149,202, 18,231, 60,207,127,136,139,139,107, 89,122,154,
-235,110, 19, 66,220, 79,238,219, 56,241,220,145,109,109,121,158,115, 35, 0, 88,129,232,157, 78,171, 61,175, 86,166,175, 50,116,
-177,231,229, 35,253, 49, 97,205, 5,172,255,177, 19,198, 45, 61,128, 45,179,135, 99,250,175,123,177,236,199, 9, 88,180,246, 79,
-204,153,208, 31, 61,191, 29,194, 83,194,220, 50,244, 61, 88,150, 61,183,113,227,198, 65,195,135, 15,207,159,140, 64, 41,253,168,
- 64,215,233,116, 74,158,231,177, 97,195, 6, 30,192,185,146,248, 62, 78, 35, 66, 75, 26, 15,101,104, 26,165,167,167, 15,245,247,
-247,223, 1, 64, 66, 41,125,155,146,146, 50,138, 82,154,191,132, 83,102,102,230,208, 6, 13, 26,236,160,148, 74, 8, 33,159,156,
- 55, 4,185, 46, 27,106, 91, 90, 90, 62,202,181, 92, 73, 62,103,160,123, 73, 81, 93, 66,247, 33,103, 64,217,193,163,192,242, 55,
-132,144,197,117,235,214, 45,184,216,243, 43, 0,181,203, 26, 40, 74,233, 69, 66,136,207,236,217,179, 39, 74,165,210,230,217,217,
-217, 30, 0, 32,151,203,223,168,213,234,171, 74,165,114, 85,110,185, 85, 18,135,198,196,196,228,141, 94,175,247,181,181,181,205,
-153, 33,155, 43,178, 0,224,196, 35,238, 17,165,250, 50,175, 26,127,230,204,153,138,150,150,150,109, 8, 33, 61, 41,165,158, 25,
- 25, 25,234, 89,179,102,221, 61,114,228, 72,106,133, 10, 21,190,233,208,161, 3,177,178,178,194,195,135, 15,105, 82, 82,210, 97,
- 0, 51, 12,153, 57,205,243,252,135,229,203,203,182,182, 96,105,141, 41,173, 86, 27,123,230,204, 25,155,118,241,241, 2, 43,158,
-255,104,134, 99, 81, 19, 46, 94,191,126, 13,181, 90, 93,162, 19, 70,117, 90, 10, 90, 76,156, 10,228,206,230,204, 67,142,229,138,
-130,106,140,122,202,136,255, 6,200,223, 50,141,185,140, 38, 68, 39, 39,167, 62, 82,185,100, 76, 5, 15,199,234,209, 33,241,129,
- 25,105,217,187, 99, 98, 98, 54, 82, 74,185,207,229, 44,139,163, 81,163,153,247,239,227,252,203, 15, 22, 7, 74, 57, 80,158,130,
- 82, 30, 60,207,229, 44, 68, 77,121, 80,142, 35,132,224,150, 58, 59,109,184,161,225, 36,132, 88,218,216,216, 44,160,148,182, 99,
- 89,150, 41,104,252, 42,248, 63,215,114,117, 46, 33, 33, 97, 78, 97, 75,235,255, 98,124, 30, 58,116,168, 72,209,111,232, 44,194,
-158, 61,123,114,101,252, 54,175,202,229,242, 34, 29,106,102,101,101,133, 71, 71, 71,183,249, 39,196,103,158,245,147, 26, 80,160,
- 21,234,106, 47,243, 44,194,210, 56, 43, 86,172, 40,209,106,181, 53, 1,120, 0,176, 0,144,172,211,233,206, 37, 36, 36,196, 17,
- 66,106, 3,152,157,123,219, 66, 74,233,163,255,203,239,157, 16, 34,179,177,177,217,198, 48,140,139, 33,247,235,245,122, 77,114,
-114,242,160,130, 13,129,130,156, 54, 54, 54,143, 4, 2,129,139, 1, 60,145,137,137,137,181,141,229,167,145,243, 63,111,193,250,
-187, 17, 29, 29,189, 31,192,254,175,201, 89,156,167,118, 35,254,255, 34, 43, 57,230,111, 73,135, 92,177, 52,246,191, 22,159,121,
- 2,169,136,227,143, 1,144,191,225,219,108,254,191, 16, 47,244, 51, 91,138,185, 2,170,241,215, 12, 75, 88, 88,152, 26,192,157,
-220,173,240,243, 30, 1,232,244, 15,138, 55, 37,128, 62, 95,139,175, 36,209,100,132, 17,255, 53, 48,198, 40, 48,194, 8, 35,140,
- 48,194, 8, 35,140,248,186, 32, 0, 90, 21,211,178, 49,216,244, 71, 8,105,245, 25, 45,167, 75, 70, 78, 35,167,145,211,200,105,
-228, 52,114, 26, 57,255, 91,156,255, 25,228, 57,124,252, 59, 54, 0,173,140,156, 70, 78, 35,167,145,211,200,105,228, 52,114, 26,
- 57,255,107,155,177,139,208, 8, 35,140, 48,194, 8, 35,140, 48,226, 43,195, 96,129,165,112,240,242,178,173,232,183,195,170, 92,
-245,231, 86,229,170, 63,183,173,232,183, 67,225,224,229,245, 95,140, 52, 66,136,140, 16,242,173, 80, 40,188,232,232,232,152, 78,
- 8,153,248, 47,125, 79, 51, 66, 72, 79, 66,200, 2, 66, 72, 55, 66,136,201,215,228,111, 70,136,160, 47, 33, 99, 6, 17, 18, 62,
-136,144,240,190,132,140,105, 70,200,191,110,217,140,249, 19,156,252,111,158,235,127,118,254, 4, 39,255, 34,207, 79,113,178,190,
-127,177,247,154, 37, 99,157,173,190, 82,186,153,218,219,219,111,114,112,112, 8,179,183,183,255, 96,111,111,191,141, 16, 98,110,
- 44,238,140, 48,194, 8, 35,254,255, 65,144, 91, 32, 55, 5,112, 13, 64, 51, 74,233,245,194, 23, 89, 85,168, 54,220,203,179,234,
-143, 63,207,155, 73,108,109, 44,101, 58, 29,167,141,136,140,241,158,251,243,146, 67, 86, 21,170,173, 76,254,240, 98,203,103, 84,
- 2,132,101,217, 62, 18,137,164, 35,128, 60,161,246, 74,173, 86,159,226, 56,110,191,161,179,130, 28, 28, 28,110,176, 44, 91,177,
- 44,207,230, 56, 46, 60, 54, 54,182,209,103, 86, 94,189,202,151, 47,191,173,105,211,166, 38,117,235,214,133, 88, 44,198,236,217,
-179, 39, 3, 88,101, 40,135,149,149,155,169, 86, 34,253, 65, 32, 22,183,166, 58,141, 47, 5, 5, 24, 73, 0,175, 87, 95, 22,169,
-213, 43,147,147,223,101, 24, 24,150, 25, 0, 6, 35,103, 90,249, 22, 74,233,242, 47,201, 12,131,107, 18,157,142,203,201, 19, 34,
- 1, 56,115,115,243,107, 51,103,206, 20,116,236,216, 17, 91,182,108,105,180,105,211,166, 17,132,144,203, 0, 78, 80, 74,223,125,
-105,230,179, 7, 70, 54,104,212,104,205,160,201,147, 89,229,141, 27, 88,179,109,219,106,164,167, 3,192,250,178,230, 37,145, 8,
- 61,109,108,132, 29, 41, 69, 77, 2, 16, 2, 60, 77, 72,226,207,104,181,220,126, 90,214,117,120, 62,230,254, 22, 31, 79,171,223,
- 83, 86,142,180,119,116,150,164,147, 87,227,180,119, 87,103, 1,248,166,240,121,189, 74, 58,136,178,229, 58, 42,233,147, 8, 0,
-191,126,161,184, 50,177,181,181,125,126,252,248,113,151,186,117,235, 10, 0,224,209,163, 71, 3, 59,118,236,216,130, 16,226, 75,
- 41, 77,255, 63, 18,235, 82, 1,195,140, 17, 11,133,173, 57,142,171, 6, 0, 44,203,190,208,232,116, 23,245, 60,191,222, 80,159,
-106, 70, 24, 97,196,191,218,120, 81,162, 22,249,159, 20, 88, 0,174, 81, 74, 9, 33,132,162,208, 84,111,133,189,167,183,143,143,
-215,228,115, 71,119,150, 75, 75, 78, 85,253,246,235,174, 39,153,172, 40,203,195,203, 93,252,219,170,229, 22, 99, 38, 76,250, 65,
- 97,239,121, 63, 51, 46, 40,176, 12,145, 88, 94, 38,147, 29, 89,177, 98,133,111,243,230,205,133,118,118,118,136,139,139,195,171,
- 87,175,124,175, 92,185,210,117,231,206,157,147, 9, 33,221, 41,165,134, 44,124,229,126,121,215, 54, 59,185,149, 53, 56,157, 14,
- 78,213,107,230, 59,200,123,123,229, 2,244, 90, 45,120,157, 14, 94, 29,187, 2, 0,120,158,135,183,183, 55,251,153,137,239,228,
-227,227,179,123,241,226,197, 34,181, 90,141,251,247,239,227,234,213,171,124, 76, 76,204, 82, 67, 57, 20,246, 30,205, 25,153,124,
-127,159,254,223,153,119,233, 88, 89, 88,222,222, 22,128, 9, 94,135,234, 27,156,189,112,165,206,209,253,219,191, 87,216,123,244,
-201,140,123,115,181,100,145,102, 85,159, 16,178, 40,207,163, 51, 33,100, 89,165, 74,149,230, 20,188,166,240,186,118,148, 82, 8,
- 4,130,184,140,140,140, 62,137,137,137, 79, 10,115,234, 56, 8,246,236,201,209, 15,179,198,124,203,222,186,117, 75,238,237,237,
-173, 6,128,229,203,151, 99,193,130, 5,226,243,231,207,183,223,181,107, 87,123, 66,200,106, 74,233,137, 47,201,124, 34,224,167,
- 65,147, 39,179,138,176, 48, 40,158, 61, 67,255,244,116,193, 47,192, 79,101, 17, 88,132,144,202, 14, 14,194, 67,147, 39, 13,241,
-114,117,171, 47, 18,137,108,114, 22,215,214, 36,122,132,135, 63,233,185,244,151, 77,211, 8, 33, 61, 40,165,111, 13,228, 19, 0,
-152, 15, 64, 10, 96, 22,128,217, 9, 9, 9,238, 28,199,193,193,193, 97, 54, 33,228, 24,128,159,109,109,109,105, 66, 66,194, 84,
- 74,169,190, 36,203, 85,250, 59, 58, 43,150,184,182,171, 90,107, 16, 98,201,185,118,147,190,113, 60,107,230, 70,126,158,187, 38,
-250, 46, 0,124,227,230,102,234,234, 41,159,170, 48,171,102,149, 30,117,105,234, 55,110,110,155,207,190, 51, 76, 96, 23, 22,153,
- 0,224,228,228,180,124,215,174, 93,229,234,213,171,151,159,199,107,212,168,193, 46, 95,190,220,121,226,196,137,171, 1, 12, 49,
-144,207,195,214,214,246, 60,199,113,234,164,164, 36,143,188,227,118,126,221, 27, 88,155,202, 91, 38,164,100,220, 72,124,121,236,
-186,129, 92,117,165, 34,209,225, 19,187,215, 56,214,168,231,207, 40,108,236,160,138,138, 70,166, 78,219,234,234,237,123,205, 70,
-140,249,105, 66,110, 26, 61, 48, 86, 49, 70, 24,241,159, 70,177, 90,228,127, 89, 96, 33,247,133, 62,129, 68, 34,158, 54,119,230,
- 84,146,154,148,170, 84,103,100,106,244, 42,149,146, 17,242,170,231,175,222,199, 51, 2, 54,117,210,248,241,166, 83,103,204,156,
- 6,160,191,161,226,202,207,207,239,193,145, 35, 71,236,172,172,172,144,150,150,134,164,164, 36, 60,120,240, 0,148, 82,116,239,
-222, 93, 82,175, 78,157,154,179,102,207,190, 75, 8,241, 55, 68,100,201,173,108,176,188, 81,206, 26,177,115,194,146,242,158,131,
- 77,189, 58,230, 95,179, 32, 50, 13, 0, 32,149, 74,243, 23, 10,254, 12,248,183,108,217, 82, 4, 0,195,134, 13, 75,207,200,200,
- 88, 2, 96, 15,165, 52,202, 80,113,101,227,232,116,234,143, 13,203,101,213,220,220,161,213,233,241, 33, 54, 26, 2,161, 5, 92,
- 92, 68, 24,210,191,181,176, 73, 3, 43,155, 69, 11, 55,157,150,219,122,116,203, 74,120,115,190, 56, 46, 11, 11,139,157,251,247,
-239,199,129, 3, 7, 0, 0,111,222,188,129,187,187,187,188,180, 48, 4, 4, 4,184,118,238,220,121, 31,128, 42,165, 93, 91,216,
-145,189, 68, 34, 65,163, 70,141,224,237,237,141,227,199,143, 55, 3,112,226, 75, 51,160,242,198, 13, 40,158, 61, 3,174,151,189,
-177, 66, 8,169, 92,171, 86,133,123,103, 78,239,182, 57,125,230, 21,126,253,117, 27,222,189,203, 49,172,185,186,186,226,219,126,
-189,132, 47, 94,220,241,233,217,243,219, 59,132,144, 70,148,210, 55, 6,208,206,223,188,121,243,140, 74,149, 42,161,103,207,158,
-189,124,124,124, 28,204,204,204,176,113,227, 70, 56, 58, 58,186,106, 52,154,183,199,143, 31,119,138,141,141,197,248,241,227, 1,
- 96,114,113, 68,205,218, 54,155, 37,233,228,213,184,106,173, 65, 80,152, 57, 98,243,222,253,120,253,120,103, 99,181,246,213,172,
- 37, 99,157, 7, 40,169,100,176,139,187,233,180,138,181,155, 90, 87,241,233,140, 10,181,158,216,168,184,155,239,103,143,113, 93,
- 42,144,170,118,206, 93, 17,157,244,201, 59,247, 58,196,250,166, 7, 89, 5, 92, 68, 18,165,115,249, 92, 97,149, 95, 16,113, 20,
-157,155, 52,105,146,159,112, 97, 97, 97, 80,171,213,240,242,242, 98, 52, 26, 77,115, 3,227,213,163, 77,155, 54,183,206,156, 57,
- 99,237,225,225,241,209,210, 45, 14,214, 22,109,175, 31, 89, 61,126,209,154, 63, 61,237,188,187,165,198, 7, 30,125, 81,154,184,
-106, 88,191,214,165,179, 71,118, 43, 72,102, 4,196, 22,137, 0,159,132,144,125, 91, 65, 76,172,208,103,244, 36, 65,243,150, 45,
-156, 91,127,211,227, 18, 33,164, 37,165,244,161,177,142, 49,194,136,255,180, 21,139,254, 91,222, 69, 80,192,186, 65,138,122, 49,
-158,242,213, 29,236,172,101,171, 87,236,120,200,106, 53, 26, 19, 11, 51,173,185,153, 57,133,169, 25,171,213,105, 51,203,187, 87,
- 18,241,148,175, 94, 20,121,225,169,154,132, 16, 34,147,201,142,156, 56,113,194, 78, 40, 20,130,231,121,216,218,218, 34, 52, 52,
- 20,169,169,169,200,200,200,192,187, 87,175, 80,169,124, 57,204,155, 54,213,113,252,212,105, 71, 8, 33,181, 11,118, 23, 22, 53,
-253,147,211,105, 11, 39, 80,113,139,251,126,244, 91, 18,103, 49, 8, 13, 15, 15,135, 66,161,128,175,175,175,226,246,237,219, 55,
-139, 19, 87,133, 57,173,172,220, 76, 5, 10,217,129,223,255,152, 45,211,234, 2, 16, 24,146,140,170,149, 26,195,222,186, 60,162,
-147, 53,184,247,224, 4, 2,158,239,129,155,115,121,140, 29,221, 66,186,116,249,161,253,150,150,149,203,167,164,188, 79, 47,138,
- 51, 61, 61, 93, 81,185,114,101,148, 47,159,179, 46, 25,199,113, 8, 12, 12, 4,199,113,249,251, 5,127,119, 28,190, 2,125,250,
- 7, 12, 26, 56, 16, 73, 73, 73,138,162, 56,133, 44,244,147, 70,124, 43,144, 9, 1,177,220, 74,147,153,153,153,111, 13,212,106,
-181,120,250,244, 41,252,253,253,155, 30, 60,120,176, 68, 53,100,104,124,106,129,101,107,182,111, 95,219, 63, 45,141, 1,128, 45,
-132,240, 90, 74,151, 25,154,151,236,236,132,135,207,157,221,101,195, 50, 65,176, 50,255, 5, 15, 30,124,128, 86,155, 19,222,164,
-164,120,140, 27,147, 14,145,208, 20,199,143,255,105,237,229,213,232,112,110, 23, 25, 95, 74, 56,165,103,207,158,197,184,113,227,
- 16, 24, 24,232,196,178, 44,238,223,191, 15,153, 76,134, 21, 43, 86,176, 94, 94, 94, 78,114,185, 28,231,206,157, 67, 92, 92, 28,
- 41, 41,156,215,206, 95,251, 57,237,221,213, 89,177,228, 92,187,205,123,247,227,187,126,125,224, 64, 67,110,154,187,145,159,219,
-116,106, 56,135,178,229, 58,202, 77,171, 91,186,251,118,130, 72,172,192,216,159, 22,224, 77,192, 73,203,236,140,231, 99, 8, 23,
- 81, 14,185,107,243,125,180,216,241,193,158,220,218,189,119,106, 93, 44,255,176,130, 83,173,145,247, 1, 60,255, 75, 96,185, 10,
- 8,195,153,231, 89, 43,223,190,125,139,119,239,222, 65, 32, 16, 64,169, 84, 66,175,215, 23, 25, 78,103,103,231,145,122,189,126,
- 78,110, 58,239,112,116,116, 28,186,123,247,110,235,130, 2, 59,207,114,149,156,154,158,114,231,225,203,215,147, 70,246,108,118,
-227, 94, 64,132,133, 95,215,240,212,103,199,210,138, 73, 35,169, 76, 44, 62,124,238,232,159, 10,221,251, 43,144,123, 53,131, 80,
-225, 14, 78, 23,133,236,148, 44,100,188,139,129,250,143,117,168, 49,102, 34, 78, 30, 59,164,240,169, 86,251, 32, 33,196,157, 82,
-170,249,140,111,211, 96, 24, 57,141,156, 70,206,127, 38,103, 73, 90, 4, 64, 45, 0,246,185,255,147,144, 51, 52,198, 6, 64, 34,
-114,150,237,178, 7,160, 1, 32, 46,112, 79,225,253,130,215, 22,222, 47,248, 63, 41,247,191, 93,238,239, 67, 0,201,159, 45,176,
-138, 87,147, 76,186,158,231, 37, 98, 91, 91,245,208,222,173,124, 47, 92,122,244, 84,110,109, 46,104,211,188, 86,211, 7, 47,222,
-221,101,192,232, 8, 97, 12, 26,215,193,178,108,159,213,171, 87, 87, 51, 51, 51, 3,207,243, 48, 55, 55, 71, 66, 66, 2, 52, 26,
- 13,210,210,210,160,206, 72,135, 54, 35, 29,207, 34,194,208,176,105, 51,244,104,215,198,235,207, 99, 39,250, 0,216, 87, 18,175,
- 83,245,154,249,150,171, 5, 21,173,255, 50, 69, 68,164,230,139,173, 95,106,186, 67,164, 80,160,245,164,105, 95,146,240, 79,196,
- 98,241,217,238,221,187,127, 51,101,202, 20, 38, 38, 38,230, 28, 33,164, 33,165,180,212,238, 81,173, 68,250,195,247, 63,116,180,
-180, 84, 80, 28,188,120, 2, 77,106,246,131,137,152, 69, 82,186, 22,132, 0,175, 94, 30, 1, 33, 86,120,254, 38, 6,141,107,152,
-161, 77, 91, 47,197,177, 67,175,166,224,175,241, 63,159, 36, 77, 74, 74, 10,226,227,227,161,211,233,160,211,233,208,179, 87, 47,
-236,218,185, 19, 89, 89, 89, 80, 42,149,208,104, 52,224, 56, 14, 12,195,224,226,169,131,136,120,255, 10, 13,252,253, 81,156,233,
-117,199, 19, 42, 36,132,220,123,253,250, 53, 94,189,122,133,200,200, 72, 72,165, 82, 56, 56, 56, 96,193,130, 5, 80,171,115,214,
- 16,235,213,171, 87, 83, 0, 47,190,244, 67,122, 7,108,122,175,215,207,250,230,232, 81,187,219, 71,143,242,119, 79,156,136,148,
-102,102,110, 52,228, 94,145, 8, 61,151, 47, 27, 93, 85, 46,151, 35, 50,124, 53, 60, 61, 69,152, 60,209, 26, 75,126, 73, 4, 0,
-140, 31,231,130, 58,181,109,144,158,122, 8, 54,118, 51,176,118,237, 4,183,193,131, 87, 14, 4,176,163, 20,234, 89, 39, 78,156,
-232,225,238,238,238,252,228,201, 19, 34, 22,139, 33,147,201, 32,147,201, 32,149, 74, 17, 31, 31,143,208,208, 80,186,124,249,242,
- 40,228,116, 33, 22,139,220,110,192,111, 38,125,227,120,246,245,227,157,141,157,217,247,207,122,140,109, 20,246,252,222,147,140,
- 11, 23,111, 47,212,171,164, 17,169,145,151,166, 86,174,243,196,102,204,143,243,177,110,249, 92,188,190,127, 35,217,190,124,250,
-122, 25, 81,239,168,215,186, 8,171, 88,179,249,130, 49,179,123,235, 71, 14,238, 97,113,210,254,206,200, 51, 2,146, 16,155,248,
-120, 5, 66,159, 40, 37, 85,106, 14,240,112,101, 52, 87,174, 92,145, 53,105,210, 4, 42,149, 42,223, 18,185,123,247,110, 94,175,
-215, 23,217,237,172,213,106,231, 68, 69, 69, 57, 42,149, 74,180,107,215,110,252,138, 21, 43,228,121,107,200,113, 28,247,145,229,
-234,231, 85,187,206,255, 48,103,253,213,243,251,126,113,250,121,218,208,102,253,199, 46,186,138, 98,214,121, 20, 48,204,152,147,
- 71,183, 57, 72, 45,117,144, 89,181,129, 42, 78,137,215,155,190, 67,118,186, 10,117,126,158, 15, 64, 12,141,142,193,198, 78, 61,
- 33,180,118,194,220,225, 67,157,102,110,220, 60, 26,192,106, 99, 59,222, 8, 35,140, 40, 4,123, 66,200, 41, 0,152, 54,109,218,
-140, 37, 75,150,188, 36,132,156,162,148,118,204,109,208,157,162,148,118,204,187, 38,183,206,254,100, 63,239,218,194,251,133,255,
- 79,159, 62,221,103,233,210,165,139,253,253,253,247,221,185,115,231,253,231, 8, 44, 38, 79, 49, 22,252,253,200,130,197,243, 55,
-222,134,132,101,183,109, 93,223,249,228,181, 23,143,134, 12,233,208,178,119,231,198,109,222, 71,196, 7,185, 85,112,176, 9,120,
-249,204,140,231,249, 27,134, 60, 76, 34,145,116,108,209,162,133, 32, 37, 37, 5, 38, 38, 38, 72, 72, 72, 64, 84, 84, 20,180, 90,
- 45, 84,105,169, 80,167,165, 66,149,154, 2,109, 90, 10,222, 61,122,128,234,110,174,146,220, 65,240,165, 9,159, 34, 45, 83, 5,
- 45, 89, 98, 83, 83, 72, 76, 77, 65,202,216, 61, 72, 8,233, 98,105,105,121,143, 16, 50, 43,183, 50, 26, 51,117,234,212, 68,158,
-231,177,104,209, 34, 51,133, 66,113,144, 16, 34, 41,141,199,212,150,237,232, 95,195,151, 9, 10,125,142, 70,126,131,224, 81,185,
- 61, 66,227,148, 72,204,208, 34, 62, 85,139, 58, 77,126, 67, 69,191,249, 40, 87, 99, 9, 94,125, 72,134,147,179, 59, 3,129,164,
-196, 69,153,227,226,226, 62,218,223,183,119, 47,178,179,179,225,230,230,134,126,253,250, 97,234,212,169,232,215,175, 31,156,156,
-156,208,191,119,103,204,157, 59, 23,241,241,241,165, 5, 85,237,225,225,161,174, 80,161,130,186, 66,133, 10,106,173, 86,139,204,
-204, 76,164,166,166, 22,142,239, 9,101,254, 58,236,237,167, 59, 58, 58, 62,183,183,183,127, 41,149, 74,207, 60, 37, 36, 72, 93,
-177,162,125,195,174, 93,137,119,239,222,108,184,137, 9,185, 14, 40, 12,225,178,177, 18,118,104,222,226, 27,113,106,202, 54, 0,
- 57, 70,169,161, 67,108,113,235,186, 15,110,223,172,141,113, 99,220, 64, 24, 41, 8, 35, 70,118,214, 21,212,171,235, 47,178,176,
- 32, 29, 75, 73,235,111, 1, 60,109,216,176,161,211,216,177, 99,137, 68, 34,193,248,241,227,181,195,135, 15, 15,238,215,175, 95,
-240,229,203,151,185, 10, 21, 42,160, 92,185,114,164, 92,185,114,142, 0,158,230,222, 83, 34,204,220,200,207,106,237,171,155, 22,
-238,242,247, 28,108, 26,100,234, 36, 61,231,174,136, 78, 90,184, 62,228,215,208,215,217,174,175,239,223, 72, 10, 14, 56,201,135,
- 62,188,150, 24, 29,156,225,186,112,125,200,175,211,215, 69, 21,249, 49, 95,191, 14,254,200,169,235,218,236,172,108, 65,215, 78,
-205,179, 71, 14,235,227, 97,165,240,217, 13,231, 54,126, 21,203,187,244,159,187,120,173,118,248,232, 31,180, 91,182,110,163, 25,
- 25, 25, 72, 79, 79,199,218,181,107,245, 39, 79,158,140,226, 56,238,135,226,218, 62, 0,160,211,233, 48,114,228, 72,185,153,153,
- 25, 34, 34, 34,242, 45,160, 0, 16,147,144,244,226,246,195,128,160, 73,163,122, 53,205, 82,171,213,231,175, 61,122,229,237, 94,
-193,133, 16, 90,236, 4, 19,177, 80,216,186,118,189,122, 44,165,169, 32,130,242,120,183,115, 57,210, 99,147,145, 30,159, 12, 86,
- 40,135, 30, 18,232,120, 49, 44,170,215,197,155,135, 79,224,108,107, 47,144, 8,133,198, 37,174,140, 48,226, 63,138,146,180, 72,
- 65,145,180,116,233,210,197, 37,157, 47,240,171, 41,180,159, 47,160, 10,139,175,130,255, 1, 96,233,210,165,139, 41,165, 29,239,
-220,185,179, 23,128,242,115,222,167, 84,181,193,170, 52, 75,166, 76,157, 5,115, 51,153,121,189,154,238, 14,199,206, 93,123,124,
-227,206,163, 87, 21, 93,108,108,169, 78, 99,185,108,229, 58, 23,146,173, 52,116,144,183,151,141,141, 13,180, 90, 45,222,190,125,
-139,200,200, 72,104,181, 90,232,179,178,160, 78, 77,133, 42, 37, 5, 92, 86, 6, 68, 28, 7,101, 66, 60,172, 77,164,192, 95, 51,
- 12, 75, 19, 66, 69, 10,172,188, 95,169,153, 25, 36,166,102, 96,132,194, 34,187, 15,139,225,172, 85,183,110,221, 3, 1, 1, 1,
-245, 90,181,106,181,144, 16, 98, 78, 41,253, 16, 21, 21,213,114,246,236,217,106,123,123,123,140, 28, 57,178, 42,128, 65,165,138,
- 75,177,198,171,130, 67, 85,120,184, 14, 66,197,114, 45,144,154,165, 67, 66,186, 14,241,169, 90,108,252,205, 31,135,183,212,197,
-173,195,141, 17,112,190, 53, 82,117, 14, 80, 56,117, 1,229, 52, 62, 37,113,222,185,115, 7, 27, 54,108,192,134, 13, 27,240,199,
- 31,127, 96,221,186,117, 72, 73, 73,129,175,175, 47,194,195,195,113,246,236, 89,196,196,196,192,198,198, 6, 79,159, 62,197,198,
-141, 27,241,224,193, 3, 67, 50,185, 65,215,148,181,175, 92,175,215, 15,142,233,218,181, 90,156,149,149,119,205,154, 53,191, 25,
- 63,126,188,107,195,134, 13,243,207, 87,174, 92,185,188, 76, 38,139, 37,132,108, 33,132,212, 40,137,139, 7,106,218,218,250, 66,
-163, 14,202, 77, 43, 33, 8,145,162, 69,235, 87,104,216,248, 17,180, 58, 17, 24, 34, 1,195, 72,161,215, 39,193,210,210, 9,148,
- 18,223, 82,130, 56, 59, 33, 33,193,253,210,165, 75, 76,104,104, 40,164, 82, 41, 0,132,205,155, 55,111,221,175,191,254, 26,104,
-109,109,205,157, 58,117, 10,199,142, 29, 67,199,142, 29,217,225,195,135,187,151, 43, 87,110, 67,105,239, 61,119, 77,244,221, 61,
- 43,207,246, 21,234, 44,107, 72,101, 21, 43, 33, 75,209,101, 76, 51, 91, 57, 0,156,125,247, 46,195,174,124,250,210,172,140,231,
-225, 22, 46,153,191,148, 54,192,157,210,185,252,227,224,160,123,123,142,158, 75,139,143, 75, 17,214,172,230,163, 92,178,224, 71,
- 81,197, 74, 85,150,205,157, 58,202, 33, 42, 93,154,218,122,252,217,160, 35,231, 30,100, 14, 24,242,157,126,216,136,177,170,179,
-231, 46, 30,229,121,190, 90,113, 51, 8,121,158, 71, 76, 76, 12, 94,190,124,137,144,144, 16, 36, 36, 36, 32, 49, 49, 17, 25, 25,
- 25,249,221,138, 38, 25,233,167,215,109, 63,249, 76, 46,147,153,212,171,230, 94,254,254,147,192,120,185, 76,102,226, 94,169,188,
- 7, 33,243,139, 44, 71, 56,142,171, 38, 53,145, 1, 32, 72, 13,184,129,204,148, 76,100,166,102, 34, 35, 57, 19,106, 45, 11,149,
-154,129, 82,195,160, 66,211, 54,200,204, 82, 33, 51, 41, 13, 60,199,249, 25,171, 25, 35,140, 48,162,132,122,249,212,180,105,211,
-102, 24,120,185,193,221,152,133, 5,215,180,105,211,102, 16, 66, 78, 77,159, 62,221, 7, 6,140, 89, 46, 10,165,186,105, 72, 76,
-124,147,105,102,235,221,125,226, 79,115,206,238,221,186,222, 86,163, 81,134,219, 88, 42, 56, 83, 19,137,229,240,145,139,144,145,
-153,210, 45, 51,217,240, 89, 79, 41, 41, 41,120,255,254, 61,100, 50, 25, 68, 66, 33, 56,165, 18,156, 50, 11,202,148, 36, 48, 90,
- 53, 68, 28, 7, 43, 19, 25, 42, 56, 57,160,162,189,131, 65,156,111,175, 92,200, 31,208, 94,176, 91,112,121, 93, 47,136,229, 10,
-136, 77, 21,248,254,212, 53, 0,128, 72, 36, 2,102, 47, 52, 36, 17,109,156,157,157, 79,236,217,179, 71,148,144,144,128,167, 79,
-159, 62,163,148,166, 17, 66, 76, 1,240,175, 94,189,186, 20, 16, 16,208,209,221,221, 29, 0,220, 74,227, 75, 79,100, 56,157,158,
- 34, 34, 54, 12,161,145, 79, 96,101, 94, 25, 66, 19, 15,196,167,106, 33,145, 85,134, 78,253, 87, 47,163, 42,253, 3,148, 90,195,
- 38, 58,106,181, 90,104,181, 90,232,116, 58,168,213,106, 12, 24, 48, 0,183,239,220,193,190, 99,151,241,254,221, 27, 84,173,228,
-128,129, 3, 7,160, 70,141, 26,120,248,176,228,241,195,131,107, 18,221,204, 38, 16,172,252,134,129, 88, 97,173,174, 63,245,252,
-125, 67, 68, 86, 73,173,141, 2,241,249,107,199,142, 29,171,188,201,202,194,203,160, 32,180,154, 55, 15, 0,112,250,244,233,252,
-107, 52, 26, 13, 38, 77,154, 36, 14, 12, 12, 28,246,232,209,163, 97,132,144,149,148,210,162, 7,145, 83,224,244,233,187, 24, 53,
- 42, 16, 9, 9, 57,227,176,247,239,253, 75,143,134,190,215,162, 93,135,156,158, 43, 11, 11, 11,172, 92,233,107, 80,124,114, 28,
-135, 77,155, 54,229,119, 11, 2,128, 64, 32,104, 56,105,210,164,238, 69, 93, 95,165, 74, 21, 81,105,156,147,122,185, 72,159,126,
-144,141, 49,175, 82,209,199,204,166, 58,146,116, 79,124,159, 68,197,140,155,212,203,101,245,202,131,145, 42, 25, 81,239, 32, 92,
- 68, 57,129, 84,181,211,144, 48,190, 59,187, 86, 99, 81,113,200,206,216,132,244,153, 99,191,251,214,218,204,194, 46,107,203,186,
- 37,150, 12,203,208, 19,143,180,169, 62,174,214, 22, 93,234,175,201, 28, 53,113,246, 19,141, 62, 98, 44, 34, 78,188, 41,201, 85,
- 5,199,113,136,142,142, 70, 66, 66, 2,194,195,195,145,152,152,152,251,237, 39,126, 50, 19,181,140, 5, 33,148,225,225,248,112,
-116, 11, 42, 14, 24,128, 58, 11, 23,128,227, 5, 80,102,115, 88,217,160, 37, 82,210,148, 80,243, 4, 78,181, 26,224,187, 51, 55,
-193, 80, 14,216,184,222, 88,131, 24, 97,196,127, 87, 60, 21,171, 69, 10, 11,161, 37, 75,150,116,252,218,207, 47, 40,178,150, 44,
- 89,242,114,201,146, 37, 95,244,172, 82,221, 52, 0, 64,122, 66, 96,136,117,133,234,209, 89,202, 76, 19, 59,123, 27,141, 66, 42,
-225,211,210,179,216, 39, 47,158,105, 51, 99,222,190, 46,195,243, 94, 5, 4, 4,248, 70, 71, 71, 35,252,195, 7,232,149, 89, 96,
-212, 26, 80, 85, 54, 90, 53,106, 0, 41, 0, 41, 67, 32,226,181, 16,176, 98,100,100,166, 3,192,171, 82, 43, 69,157,238, 19, 75,
- 22, 33, 4, 98, 83, 83,136,229,114,136, 21,166, 31, 89,180, 12,177,208, 72, 36,146, 61, 7, 15, 30,116,116,118,118,198,130, 5,
- 11,224,226,226,226, 89,173, 90,181,236,198,141, 27,203,236,237,237,225,237,237,141, 6, 13, 26,224,236,217,179, 0, 80,170, 79,
- 40,157, 94,250,252,117, 24, 26, 38, 38,223,193,205,107,127, 64,163, 84,163,102,211, 63,160, 21, 84,132,173,207,124,240,111,119,
- 35, 59,246,120,142,181,192,161, 19, 34,195,195, 64, 88,241,203, 50,102, 14, 60,127,254, 28,123,143, 95,135, 99, 5, 47,132, 7,
- 7, 33,232,234, 37,220,182,181, 70, 69,111, 31,232,116,186, 18,223, 93,199, 65,240,243,250,124, 55, 13,146,228,228,100,137,149,
-149,149, 58, 47,238, 28, 29, 29,191, 68,100,125, 59,101,202, 20,164, 10,133, 64,135, 14, 16,133,132, 64,171,213,194,223,223, 31,
-181,107,215, 6, 0,248,251,251, 67, 32, 16,160,122,245,234,112,114,114,194,250,245,235,191, 69, 49,179,244, 24,130,167,122,125,
-146,167,171,171,107,190,192,218,185, 43, 1, 79, 30,181, 6,129, 24,107,215,253,229,149,161,124,249,242,136,141, 9, 1, 33, 52,
-160,148, 48, 46,116,112,112,152,237,232,232,232,250,235,175,191,178, 82,169, 20,163, 71,143,174,156,153,153, 89, 49,215,100,140,
-233,211,167,231, 88,165,230,206,197,188,121,243,160, 86,171,179,139, 35,219,181,170,186, 83,124, 50, 63,204,222,193,185, 91,115,
-155,138,213, 90,180,109,133,202,238, 45,208,162,109, 56, 0, 44,182, 18,132,245, 94, 62,203,247,168, 77, 57,171,109, 23,206, 93,
-156,219,168,105,139,153,211, 70, 90,254,188,116, 99, 74,169, 99, 26,211, 62,236,200,120, 45,238,179,234,183, 13,187, 86,205,153,
- 62, 65, 26,158,160, 73,137, 74,161,153, 10,137, 64,225,102, 79, 20,227,126, 90,248, 62, 58, 58,100, 50, 34,206,149, 58,115,146,
-231,121,132,132,132,228,143,217, 83,169, 84,200,202,202, 66, 68, 68, 68,126, 23,161, 82,110,214,110,236,144, 78,126, 89, 74,101,
-246,253, 23,193,225,179,198,247,247,207, 82, 42,179,131, 67,195,223, 80,186,166, 72, 21,198, 48,204,139,236,140,236, 86,217,169,
- 42, 36, 60,125, 13,151,150, 21,160,211, 19,104,244, 28, 18,146, 50,160,214, 3, 28, 35,132, 79,239,129,224,136, 0,137,209, 81,
- 96, 88,246,153,177,154, 49,194,136,255, 44, 74,117,211, 64, 8, 57,229,239,239,191,175,160,149, 41,239, 63, 0, 53,128,146,134,
-236, 36, 20, 20, 81,121,221,134,197, 61,167, 16,239,103, 11,172, 18,187,123, 8, 33,196,175, 90, 5,167,229,115,191,117,225,245,
-250,170,241,137,113,122,129, 64, 34, 44,103,174,140, 41,203,195,212,106,245,169, 75,151, 46,117,109,221,186,181, 36,248,197, 51,
-104,210,210,160, 73, 75,133,144,215,195, 74, 86, 27,140, 86, 13,162,209,192,217,147,135, 42, 67,134,235,183, 3,116,106,181,250,
-148,161, 2,139, 97,217,143,199, 93, 41, 20,144,152,154, 65,162, 80, 20,238, 66, 36,165,168,104,147,206,157, 59,183,172, 95,191,
- 62, 40,165,216,180,105, 19,180, 90,173, 88,171,213, 66,163,209, 64,171,213, 34, 61, 61, 29,187,118,237,194,239,191,255,126, 27,
-192,246, 82, 43, 49,189,230,210,249,139, 87,234, 14,237,223, 81,120,230,212, 74,232, 53, 28,148,196, 5, 89, 89, 58,100,106, 76,
-192, 89, 15, 0,226, 78,131, 21, 72,225, 95,189, 50,142, 31, 58,162,133, 94,125,217, 16, 81, 85, 16, 42,149, 10, 17,225, 97,136,
-124,247, 6,138,244, 88,216,154,153, 32, 59,228, 13,106, 12, 28, 4,141, 70, 83,230, 12, 82,174, 92, 57,240, 60,143,230,205,155,
-231, 15,154,254, 92,145,149,148,148,132,147, 39, 79,162,126,253,250,104,218,180, 41,162,162,162, 16, 18, 18,130, 14, 29, 58,228,
- 95,243,236,217, 51, 60,121,242, 4,110,110, 37, 27, 5, 19,147,117,103, 34, 35,158,246,234,210,165,139,232,222,189,123,160,148,
-194,221,221, 12,102,166,114, 16, 70, 2, 47, 47, 59, 0, 57,218,191, 89,179,102, 72, 79, 15,209,167,164,208, 51,165,196,229, 30,
- 66,200, 49,141, 70,243,182, 73,147, 38, 78,239,222,189,195,196,137, 19, 5,251,247,239,207, 51, 25, 99,218,180,143, 39, 73, 40,
-149,197,119,205, 87,173,230,249, 99,101,189,101, 83,169,172, 98, 37, 51,155,234,168,236,222, 2, 0,208,186,227, 80, 84,174, 82,
- 30,233,137,207, 43,169,148, 97,221, 68,130, 20,203,231,107,163, 2,101, 29,124,135,168,226,175, 5, 3, 48,196,113, 47, 85, 6,
-239,143, 11, 23, 14, 56,112,236,196,217,145,237, 59,118, 22,234, 56,189,222,183,130,208,226,224,209,211,241, 81, 31,194,215, 32,
-252, 92,192, 95,246,190, 18,173,118, 92,122,122, 58,228,114, 57, 2, 2, 2,212, 29, 58,116,144, 48, 12,131,183,111,223,230, 11,
- 44, 59, 27, 43,239,134,117,124, 61,127, 94,181,235,188, 92, 34,145,180,109, 86,219, 43, 48,248, 67, 36,165, 36,172, 56, 94,141,
- 78,119,241,197,211,103,205,109,157,170,176, 33,215,238,193,186,113,123,168,213, 12,148, 26, 30,106, 61,160,103, 69,112,172, 81,
- 15, 22,110, 94,160, 0, 30,222,187,173, 83,235,116,231,141,117,140, 17, 70,252,167,173, 88,180, 36,113,148,251, 63, 25, 64,216,
-146, 37, 75, 18, 11, 88,151, 18, 0, 60, 3,224,151,123, 93, 66,161,251, 18,144, 51, 27,176, 78, 1,158,132, 2, 66,171,224,127,
- 77,161,107, 62,171,225, 87,170,155, 6, 0,176,177,177,177,171, 89,179,182,219,230,173, 7, 64, 41,197,235, 39, 43,144, 18, 31,
-132,217,139,239,186,185,184,184, 52,141,140,140,188,110,200,195, 56,142,219,191,109,219,182,201,245,106,213,172, 89,201,197, 5,
-207,194, 66, 33,162, 28, 68, 28, 7, 70,171,134,128,211,192,197,151, 3, 67, 20,136,142, 78,195,210, 61, 7, 2, 56,142,219, 95,
- 26,175,103,251,206, 88, 16,153, 6, 66, 8,126,245,247,133,216, 84, 1,145, 92,129,239, 79, 92,201, 23, 85,167, 22, 76,135, 88,
-161,128, 91,189,210, 29,184, 83, 74,179, 77, 77, 77, 31,189,120,241,162,142,175,175, 47, 38, 79,158,140,176,176, 48,240, 60,143,
-184,184, 56, 85, 76, 76, 76, 84, 66, 66, 66, 24,128,163, 0, 54, 27,226, 41, 92,164, 86,173, 62,117,120,231, 88,255, 70, 77,109,
-186,116,251, 29,199, 14, 77, 66,106, 90, 58,178,245, 50,100,169,244,200, 82,179,176,178,174,134,122,213,171, 35, 58, 42, 30, 47,
-239,157,207, 20,168,179, 87,148,197,122,197, 48, 12,158, 61,123, 6, 87, 39, 83,188,185,121, 29, 54, 38, 66,248, 57, 57,192,169,
- 97, 35,132,132,132,148,202, 33,100,161,255,246,219,111,243, 61,185,183,105,211, 38,116,192,128, 1,142,147, 38, 77,194,214,173,
- 91,113,251,246,237, 79, 6, 94, 55,109,218, 20, 55,110,220,152, 15, 96,110,105, 70, 60,141, 70, 3, 79, 79, 79, 60,124,248, 16,
-151, 46, 93, 66,139, 22, 45,208,180,105, 83, 60,127,254, 28, 23, 46, 92,192,147, 39, 79, 64, 8,129,181,181, 53,116, 57,162, 89,
- 87, 28,153, 86,139,131,191, 44,219, 54, 99,213,170,223,125,250,247,239,143,195,135,247, 97,232,144,170, 32,140, 4,132, 72,208,
-185, 83, 85, 44, 88,248, 16,245,234, 53,131,141,141, 16,171, 86, 30,127,175, 84,114,187, 12,136,202,159, 47, 92,184,224,164, 82,
-169,144,154,154, 74, 21, 10, 5, 73, 74,202,153,161, 90,148, 5, 43, 59, 59, 91, 90, 28,209,139,199,175, 86,164,102,208, 20,154,
-249,164, 91,178,254, 73,181, 22,109, 35,208,186,227, 16, 92, 60,181, 29, 87,206, 95,130,149, 32, 44, 20,242,140,179,137,161,137,
-233, 49, 89,238, 27,188,106, 13,103, 35,179,206,111, 24,223,197,146,117,116,228, 15, 78,251, 61, 45,181,132,244,166,132, 16,146,
- 28,184,251,196, 81,138,206, 13,252,235, 85,241, 45,239, 40, 78, 73,140,167,135,142,159, 13,208,134, 30, 62,153, 39,172, 74, 91,
- 21,129, 82,186, 96,218,180,105,115,114,255,239,152, 53,107,214,240,165, 75,151,218,198,198,198,230,143,193,138, 79, 76,190,210,
-160,195, 56, 46, 41, 53, 77,179,109,213, 79, 61,101, 82,137,120,214,210,109,215,116, 44,238, 21,199,171,231,249,245,189, 39,206,
-158, 16,252,250,137,115, 69,153, 24,199,127,154,139,103, 23,174, 66,199,136, 48,234,210,125,168,181, 28, 82, 19,147,112,121,216,
- 24, 40,236, 45,241,251,181,195,113, 60,207,255, 97,172, 98,140, 48,226,191,139, 18,180, 72, 81, 99, 92,226, 12,184,238,161, 1,
- 60,127, 11, 12,154, 82,151,152,152, 24,127,227,198,125, 92, 59,245, 51,174,159,250, 25, 47,159, 60, 67,116,148, 6, 81,113, 42,
-152,153,153,221, 45, 65,137,182, 42, 92, 41,100,103,103,119,159, 53,123, 78,172, 84,102,130, 38, 45, 91,194,193,214, 14, 38, 34,
- 33, 88, 61, 15,150, 8,145,153, 96,129, 55,207,179, 49,117,219,238,248,204,236,236,238,133, 43,135,194,156, 5,142,131, 16, 2,
-137,153, 41,196, 10, 83, 72, 76,205, 62,234, 46,148,154,153, 65,106,106, 6,129, 88, 92,212, 96,248, 79, 56, 51, 51, 51,123,244,
-236,217, 51, 37, 45, 45, 13,195,135, 15,199,245,235,215,159,156, 63,127,222,236,217,179,103,178,248,248,248, 42,148,210, 54,148,
-210,141,197,137,171,194,156,201,201,239, 50,168, 94,221,103,201,156, 31,148, 42,189, 53,122, 13,218, 15, 57, 19, 1, 61,199,131,
- 2,112,178, 18,163, 97,171,133,136,215, 52,192,254, 13,139,178,121,173,170,127, 65, 31, 88,133, 57, 41,165,212,218,218,250,163,
-119, 97, 24, 6,215,174, 93, 67,175,158, 61,208,182, 91, 87,216, 86,114,133, 93,171,246,104, 59,124, 20, 54,110,220, 8,134, 97,
- 96,101,101,245,145, 69,163, 32,231,142, 39, 84,184,231, 57, 37,123,158, 83,178,253, 49, 21, 0, 24,184,123,247,238, 95,252,252,
-252,174,222,190,125,123, 5,128, 62, 5,227,187, 64, 88,230, 21,180, 94, 21,147, 70, 51, 39, 76,152,160, 12, 14, 14,134, 92, 46,
-135, 94,175,199,237,219,183,241,251,239,191,227,215, 95,127,197,147, 39, 79, 96,109,109, 13, 55, 55, 55,168,213,106, 60,124,248,
- 80, 9, 96,102, 9,121,137, 79, 72,208,247, 88,187,118,105, 82,199,142,141,177,109,219, 58, 56, 56, 52,128, 80,224, 0,129,208,
- 22,114,133, 39,182,108,254, 5,223,124, 83, 19, 39,142, 31, 72, 78, 76,210,247, 40,236,117,189,152,112,170,238,223,191,143, 13,
- 27, 54,160,103,207,158, 81,189,122,245,226,210,210,210,242, 45, 88,121,171,164,207,203, 29, 67,166, 86,171, 37,197,113, 14,255,
-233, 69,212,143, 63, 7, 44,136,139,141,170,127,253,234,221,111,175,156,191,132,247,193, 87,112,229,252, 37,220,188,114,103, 90,
- 92,108, 84,253,154,117, 61, 68,221,135,143,253,113,231,145,195,172,194,204, 17, 59,143, 28,102,251,141,251, 97, 81,237,182, 45,
-102,150,150,231,115,211,145,102,198,199, 77, 95,188,226,183, 76,189, 86,197, 44, 95,179, 62, 90,153, 16, 51, 19,121, 83, 43,139,
-177, 94, 21,228,204,206,206,222,168, 84, 42,157,148, 74,165,147, 74,165,154, 25, 22, 22,214,100,242,228,201, 9, 28,199,229, 91,
- 72,227, 95, 30,191,251,234,230,246,197,118, 54,150,178, 6,117,124,170,174,220,120,232, 90,120, 68,220,159,121, 62,176,138, 73,
- 35, 85,166, 82,213,163,107,247, 1, 89,169, 41,106,248,255, 48, 13,188, 84, 1, 53, 7,232, 40, 11, 61, 17,224,197,207, 43, 33,
-179, 50,197,158,208,199,217,105, 58,109,143,130, 62,176, 74,121,247, 47,105, 33, 27, 57,141,156, 70,206,127, 32,231,191, 13,130,
- 60,197, 88,240,183, 48,156,157,157,155,116,233,220, 10,205, 58,206, 2,165, 20, 65,143,151, 33, 37,225, 53,156, 29, 36, 8, 9,
- 79,247, 7,112,221,208, 7, 82, 74,195, 9, 33,245, 39,204,156,117,164, 87,155,150, 94,190,149, 42, 73, 42, 86,172, 0,185,157,
- 29, 18, 19, 19,112,235, 94,160,110,209,222,131, 1,185,226,202,144,165,114,192,243,124,206,224,117, 0, 45, 39, 76, 5, 97, 89,
- 32,215, 29, 67, 94,133, 88,169, 78, 3, 16,129, 0, 28,229,161, 86,171,169, 1,225,140, 36,132,244,232,223,191,255,229, 83,167,
- 78, 49,109,219,182,173,113,244,232, 81,254, 75, 34, 59, 51,238,205, 85,133,189, 71,199, 69,211, 71,238,175,223,162,171,153,187,
- 79,109, 81,237,138, 44,180, 58,130,232,168, 15, 56,117,228,129, 54,240,254,249,116,170, 87,245,201, 74, 40,121,169, 28,173, 86,
- 27,110,111,111,111, 63,127,254,124,232,245,122,232,245,122,112, 28,135,196,196, 68,220,189,123, 23,213,234,212,131,215,144, 97,
- 72, 72, 72,192,218,181,107,225,226,226,130,197,139, 23, 35, 57, 57, 25,122,189, 62,220,192,180,226, 0,156,207,221, 62, 18,178,
-121,173,140,210,186, 7,221,220,220,196, 42,149,170,134,163,163,163,128, 16,178, 90,163,209, 12,153, 62,125,186,195,226,197,139,
- 81,181,106, 85, 36, 38, 38, 66, 46,151,195,221,221, 29, 9, 9, 9,120,240,224, 1,151,157,157,189, 1,192, 2, 74,105, 66, 41,
-225,123, 75, 8,169, 63,126,252,247, 71,126, 89, 58,210, 93,165,110, 38,182,178,106, 4, 74,245, 72, 72, 8, 67, 70,250,109,237,
-194, 5,219,223,197,197,235,186, 83, 74,131, 13, 76,166,185, 99,199,142, 5,114,151,202, 9, 9, 9,121,234,229,229,229, 94,156,
- 5,203, 16,172, 60, 24,169, 2,176,119,249,196, 6, 19,211, 19,159,187, 91, 9,194, 66,235,251,242,107, 87, 30,140, 84,205,159,
-104,241,115, 98,216,245, 55, 49, 89,231, 55,236, 60,114,152, 29,212,173, 7,231,162, 8,158, 38,181,163,135, 90,116, 42, 53,125,
-104,141, 26, 53,202, 17,146, 92, 57, 62,233,245,163,161,195, 71,246, 54, 23, 41,207,248,185, 36,185, 49,229,107, 74,159, 60,121,
- 18,106,232,154,158,133,120,223, 16, 66,154, 76,159, 62,253, 60,165,244,163,177, 7,241,137,201, 87,252, 59,142,165,169,169,105,
- 79,227, 3,143,191, 48,128,235, 1, 33,164,165,111,181,154,135,127, 89,188,212,190,217,132,201,130, 55, 87,175, 1,156, 14, 31,
-174, 95, 3, 39,209,240, 43,239, 92,140, 75,211,106,187, 25,189,184, 27, 97,132,209,122, 85,146, 22,249,159, 20, 88,165, 33, 50,
- 50,242,186,155,171,203,133, 55,111,154,180, 41,239, 98, 11, 0, 8, 9,141, 70, 84,156,250,130,161,221,131, 69,136,172,218,187,
- 79,158,233, 35,145, 72, 58,146, 92, 87, 12,244, 51, 22,123,214,235,245,145,149, 42, 85, 42,230,108,209,174,154, 56,142,139, 51,
- 48,156,215, 8, 33, 3,220,220,220,150,126,248,240,225, 8,165, 52,235, 75, 35, 60, 51,238,205, 85, 43, 43, 55,215, 59,151, 14,
-255,112,239,218,169, 86, 84,175,169, 6, 0, 68, 32, 46,211, 98,207,153,153,153, 35, 71,143, 30,189, 81, 40, 20,150, 71,238,152,
-178,188, 25, 95, 28,199,177, 90,173, 86,202,113, 28, 11,128, 48, 12,163, 23, 10,133,170, 35, 71,142,232,245,122,125,184, 90,173,
- 30,249,165, 31,128,161, 56,115,230, 76, 69, 75, 75,203, 54,132,144,158,148, 82,207,140,140, 12,245,172, 89,179,238, 30, 57,114,
- 36,173, 66,133, 10,237, 58,116,232, 64,172,172,172,240,240,225, 67,154,148,148,116, 8,192, 76, 74,105, 72, 25,194, 19, 66, 8,
-241, 27, 57,234,143,190, 86, 86, 27, 59, 80, 10, 63, 80, 16,194,224, 69, 90, 26,127, 38, 59,155,251, 51, 87, 40, 26,202,167, 47,
-100, 57, 91, 24, 16, 16,176, 29,128,176,168, 49, 88,101,130, 73,230, 9,149, 50,172, 7, 81,100, 31, 93,185, 38, 82, 5, 0,115,
- 87,165,166, 1,216, 50,190,155, 21,255,234,241,150,101,206,102,193, 63,173, 57,154,188,205, 16,186,154, 53,107,186, 50, 12,211,
- 7,128,175,157, 36,181,138,173, 56,141, 35,132, 54, 39,132,177, 1,240,220,219,219,251, 20,128,200,207, 76,231, 55, 0, 42, 20,
- 62, 30,255,242,248, 93, 0,119,203,200,245,128, 16, 82,101,226,148, 73, 99,196, 66, 97,107,112, 92,245,133,199, 14, 82,227, 98,
-207, 70, 24, 97,196,191,222,130,101, 8,222,133, 68,182, 5, 0, 15, 15, 15, 26, 28, 28,252,197, 10, 51, 87, 64,237, 67, 41, 94,
-218, 75, 67, 98, 98, 98,237,191, 89, 81,239, 5,176,247,107,114,230, 10,168, 5,185,219,231,134,235, 5,128,122,255,215,173,141,
-220,190,242,249,197, 93,211,166, 77,155, 15, 90,173,246, 82,110, 69,111, 1, 32, 89,167,211,157,211,104, 52,113,132,144,218, 43,
- 87,174,204,243, 84,191,144, 82,250,232, 51,195,193, 3,216,147,187,125,237,119,220,227,228,228, 52,201,218,218,218, 77,165, 82,
-137, 85, 42,149,168,160,246,151,201,100, 9,134,114, 89,152,146, 29, 34, 65,138,181,133, 41,249, 68, 64, 89, 57,227,176, 50, 43,
-160,170,149, 51, 14, 27,202,247,228,201,147,144, 26, 53,106,236,102, 24,166, 18,165,212, 30,160,230,148, 34,129, 82,154, 40, 16,
- 8,162, 2, 3, 3,163,254, 41, 5, 77,174,128, 90,145,187, 25, 97,132, 17, 70, 24, 5, 86, 97,188,121,243,134, 24,163,205,136,
-130, 34,171,164,243, 97, 97, 97,106, 0,119,114,183,194,247, 62, 2,208,233,159,254,142,209,209,209, 53,191, 6,207,240,159, 94,
- 68, 1,248,161,118, 17, 75, 46,207, 93,155,156, 1,224,199,230,157,203,198,249,244,233,211,112, 0,225,198,156,104,132, 17, 70,
- 24,241,207, 2, 99,140, 2, 35,140, 48,194, 8, 35,140, 48,194,136,175, 11, 2,160,200,153, 0,101, 89, 41,251,115,102, 19,148,
-198,111,228, 52,114, 26, 57,141,156, 70, 78, 35,167,145,243,223,199,249,159, 65,222, 44,187,191, 99, 3,208,202,200,105,228, 52,
-114, 26, 57,141,156, 70, 78, 35,167,145,243,191,182, 9,140, 18,211, 8, 35,140,248,175,226,208,161, 67, 6, 45,250,217,247,167,
- 45, 29, 21, 10,203,217,153,233,105, 75,247,173, 24,122, 52,239,120,207,158, 61, 57, 99, 44, 26, 97,132, 17, 69,161, 88,129,229,
-234, 90,206,155,225,248,134,148, 50, 44,101,168,142,164, 43,247,191, 75, 78,254,200,125, 64,249,242,229, 45,132, 12, 58, 17, 74,
-229,132,240, 28,207, 50,183, 67, 66, 34, 2, 13,125, 56, 33, 68,108,105,105, 57, 86, 36, 18,181,210,104, 52, 46, 12,195, 68,170,
-213,234, 75,217,217,217,235, 10, 59, 28,252,191, 68,213,170, 85,251, 93,187,118,205,162, 81,163, 70,106,153, 76,166, 87, 42,149,
-130,115,231,206, 73,190,249,230,155,212,183,111,223,126,214, 12, 67,103,103,231, 22, 91,182,108,169,220,182,109, 91, 84,169, 82,
- 37,171, 79,159, 62, 34,127,127,127,209,240,225,195,223, 71, 69, 69, 93, 41, 11, 23, 33,196,155, 16,178,139, 16,194,242, 60, 63,
- 48,119,134,225, 87, 7, 33,132, 1, 48, 2, 64, 87, 0,174, 0, 66, 0, 28, 3,176,201, 16,111,246, 69,240,245, 0,208, 30,128,
- 95,238,161,103, 0,206, 80, 74, 15,127, 65, 24,123, 0,104, 79, 8,169,145,107,161,125,250,181, 56,133, 66, 97, 13, 0,208,233,
-116, 79,255, 41,225, 36,132, 12,145,201,100,223, 1,128, 82,169,220, 76, 41,221, 94,230,192,108,244,162, 0,224,189, 44, 8, 0,
- 16,248,147, 39, 12,221, 15,124, 95,198,217,196,197, 60, 11, 35, 95,145, 47,136,203,246,253,251,247, 95,252,231,159,127,206,165,
-148, 30,255, 59,242,190,131, 67,185,117,191,174,217,228,244,195,216, 97, 75,145,179,130, 67,137,240, 33,164,181,152,101, 59,107,
- 56,238,102, 32,112, 16,128,192,202,202,170,159, 88, 44,110,162,209,104, 28, 5, 2, 65,140, 70,163,185,145,150,150,182,151, 82,
-170,251,226, 0, 6, 17, 75,109, 54, 28, 8,255,215, 58,108,148,129, 90,100,130, 88,120,210,148,146,110,101, 89,118,133,179,179,
-243,136,212,212,212, 76,134, 97, 40,201, 65,110,212,230, 59,107, 38, 60,207, 71, 37, 39, 39,215,254,204, 52,146, 2,152,135,156,
- 53,221,214, 80, 90,114,152,138, 9,231, 15, 78, 78, 78,221,210,211,211,179, 89,150,165, 5,194, 71, 0,128, 97, 24,194,243,124,
-124, 82, 82,210, 64, 99,213, 94, 60,156,156,156, 24,145, 72, 52,136, 97,152,149,122,189,190,114,120,120,120, 10, 0,216,217,217,
-249,197,199,199, 27,215, 2,253,218, 2,171,128, 91,250,102,148,210,235,174,174,229,188,123,118,237,190,120,212,200,209,132,101,
- 25, 4,188,124, 41,248,118,224,144, 54, 86, 86, 86,206, 10,181,218, 11,132,240,217, 82,105,128, 78,167,141, 58,184,247, 79, 83,
-207,170, 85, 57,142,227,177, 97,227, 31,223,184,186,150,155, 97,136,200, 34,132,120, 56, 56, 56,236,154, 54,109,154, 67,231,206,
-157, 89, 7, 7, 7,132,133,133, 89,236,219,183,175,234,111,191,253,214,155, 16, 50, 48,215, 23, 79, 89, 63,228,198, 14, 86, 76,
- 27, 83, 25,105,137, 12, 14, 25, 58, 92,142, 85,226, 2,165,244,230,231, 70, 82,118,118,246,184,236,236,236,122,117,234,212,161,
- 91,183,110, 37,131, 7, 15,166,132, 16,162, 84, 42,119,224, 51, 93, 56,200,229,242,245,109,219,182,117,119,119,119, 15,121,247,
-238, 93,251, 3, 7, 14,156, 25, 52,104,144,171, 92, 46, 15, 6,224, 81, 70,186,237, 73, 73, 73,126, 74,165, 18, 46, 46, 46, 91,
- 1,212,250, 27,196, 21, 1,112,216,202,202, 74,181, 96,193,130,205,205,154, 53,115,142,142,142,230,166, 78,157,218,240,233,211,
-167,237, 8, 33, 93, 13, 21, 89,132, 16, 75, 0, 27, 20, 10,133,201,212,169, 83,111,180,110,221, 58, 84,161, 80, 72,159, 63,127,
- 46,156, 58,117,234, 8, 66, 72, 47, 0,163,202, 82, 8,231,113,218,218,218, 90,204,157, 59,247, 69,131, 6, 13,174,139, 68, 34,
-209,235,215,175,133,211,166, 77, 27,243, 37,156,238,238,238,166,115,230,204,121, 88,163, 70,141, 56,169, 84, 42,122,247,238,157,
-112,198,140, 25,163, 88,150,237,197,243,252,103,113, 90, 89, 89,153,205,152, 49,227, 81,211,166, 77, 19, 36, 18,137, 56, 48, 48,
- 80, 48,125,250,244, 81,101, 9,167,181,181,117,115,107,107,235, 77,177,177,177, 2, 0,112,116,116,172,235,230,230,246, 91,158,
- 63,180, 92,225,134, 92, 81,152,161, 82,169,250, 39, 37, 37,125,226,192,214,123, 89, 16,126,156,179,163,223,143,115,114,246,119,
-230, 30, 47,109, 31, 24,108,112,222,247,174,156, 83,198,140,153,242,251,128,156,223,156,227,127,228, 6,117,125,101, 66,203, 34,
-214, 8, 33, 93, 90,180,104, 49,239,202,149, 43,127, 52,107,214,108,234,238,221,187,237, 34, 34, 34,126, 33,132,148,235,219,183,
-239,224,203,151, 47, 47, 73, 72, 72, 56,244,181,242,191, 88, 36,145, 16,134, 64, 38, 53, 49, 51,228,122, 33,195,116,188,211,165,
-203,119,155, 95,191,174,249, 91, 80, 80,229, 44, 71,199,122,227,199,143,183,239,222,189, 59, 83,174, 92, 57,188,125,251,214,122,
-247,238,221, 94,155, 55,111,238, 70, 8,153, 64, 41,253,240, 37,226, 42, 43, 21,213,212, 26,212,164, 20, 22,127,197, 17, 82, 37,
- 90, 60,145, 7,145, 23,197,137, 44, 66,200,170, 46, 93,186, 12, 60,118,236,152, 98,247,238,221,138, 6, 13, 26,192,222,222, 30,
-132, 16,112, 28, 7,158,231,193,243,124,238, 90,159,238, 95, 50,131,124,245,205,155, 55, 71,188,125,251, 22,195,135, 15,103, 1,
-204, 42, 99,249, 51,169, 91,183,110, 29,142, 28, 57, 34, 59,120,240,160,172, 78,157, 58,112,112,112, 0,128,252,240, 81, 74, 81,
-185,114,229,127, 93, 37,237,234,234, 74,197, 98, 49, 88,150, 5,165, 20, 60,207, 67,167,211, 65,163,209, 68,168,213,234,110,241,
-241,241, 79, 12,229,178,183,183,103,164, 82,233, 96,153, 76,182,149,101, 89,232,245,250,171,110,110,110, 45, 56,142,131, 68, 34,
-185, 10,252,149,127,254, 47, 80, 88,139,252,107, 44, 88, 5, 87,176,102, 56,190,225,168,145,163, 73,159,126,125, 99,223,134,188,
-231, 5, 66,113,191,115,231,207,155,120,123,123, 51,234,117,235,160, 79, 72,128,110,226,196, 6,151, 46, 93,210,245,234, 55, 64,
- 41,100,201,118,215,202,149, 76,246,239,221,231,112,228,240,161,134, 0, 2, 75,179, 92, 57, 56, 56,236,186,118,237,154,115,229,
-202,149,145,154,154,138,176,176, 48,100,101,101,161,119,239,222,194,134, 13, 27, 58,247,236,217,115, 23, 33,164,145,161,150, 44,
- 66,136,125, 21, 23,193,169, 95,231,244,246,248,166, 77, 67,185,115, 57, 55,208, 88, 21, 34,222, 5,213, 57,117,237,222,120,119,
- 11,230,205,219, 52,218,145, 82, 26, 87,214, 72, 74, 76, 76,252,169, 91,183,110,135,155, 55,111,110, 43,145, 72,224,228,228, 68,
- 58,119,238, 28, 31, 29, 29, 61,255, 11, 50, 18,114, 91, 93, 92,193,223,194,203,248, 24, 8, 23, 75, 75, 75, 88, 90, 90, 2,128,
-243,151,100,136, 94,189,122,177,225,225,225,223,241, 60,239, 85,240,184,157,157, 93, 85,142,227, 82, 62,124, 8,175,170,212,104,
-189, 70,143,157, 49,175, 79,207, 86, 22,119,238,220,225,219,182,109,171,190,113,227,198, 8, 0, 27, 12,124,204,134,234,213,171,
-191, 91,189,122,181, 58, 56, 36,180, 82,192,171, 96,200,165, 34,174, 92,185,114,146,192,192, 64,245,236,217,179,179,214,172, 89,
-179, 1, 64,175, 50, 4,125,195, 55,223,124,147, 50,107,214,172,248, 55,239, 66, 29,159, 5,190,161, 10,137, 72,103,111,111,199,
- 62,122,244, 72,245,203, 47,191,240, 75,150, 44, 41, 51,231,128, 1, 3,162,167, 78,157, 26,154,144,148,234,156,146,154, 65,197,
-217,217, 90, 23, 23, 23,193,213,171, 87, 51,127,255,253,119,245,212,169, 83,203,204,217,172, 89,179,216,133, 11, 23,134, 7, 5,
-135, 56, 61, 9,120, 13,133, 68,168,115,112,176, 99,159, 60,121,146,189,100,201, 18,237,178,101,203, 12,226,148,203,229, 59, 15,
- 28, 56, 32, 56,126, 60,199,104,115,247,238, 93,198,213,213,213,164,224, 53, 74,149, 26, 12, 1, 18, 19, 19, 77,252,253,253,119,
- 2,112, 41,142,111,208,160, 65,177,101,201, 43,131,212,203, 12,182, 90,229, 9,171,209,163, 71, 23,231,155,107,128,119, 25, 68,
- 86,251,246,237,103,158, 62,125,218,109,247,238,221, 43,247,236,217,163, 1, 0,169, 84,106,179,111,223,190, 37,189,123,247, 70,
-239,222,189,103, 3,248,106, 2,139,163,156, 22, 0, 36, 82,137, 36, 40, 40,136,120,122,122,150,232, 8, 89,203,243,143, 54,191,
-126, 93,251,123, 79,207, 58,201, 60, 95, 69,244,205, 55,153,147, 38, 77, 74, 76, 79, 79, 71, 88, 88, 24,180, 90, 45, 6, 15, 30,
-204, 54,107,214,204,169,119,239,222,107, 9, 33, 61, 40,165, 90, 3,172, 56, 43,156,157,157, 71,164,165,165,101,230, 89,113,188,
- 42,153, 10,154,212,208, 75,170, 87,209,137, 69,172, 94,212,105, 34, 79, 46,172, 35, 89,158,149,113, 11, 0, 68,217, 72, 16, 1,
- 41, 69,148, 65,203,186,116,233,210,251,216,177, 99,150, 0,112,232,208, 33,100,103,103,163, 66,133, 10, 16,137, 68, 16, 10,133,
- 16, 10,133,249,255,203, 82, 54, 17, 66,166, 40, 20,138,246,153,153,153,199, 40,165,107, 1,184, 55,106,212, 8,174,174,174, 0,
-208, 48,247,154,129, 44,203,246,229, 56,110, 19,165,244, 88, 9, 92,227,187,116,233,210,250,200,145, 35,166,121,225,212,233,116,
-112,117,117,133, 72, 36,130, 88, 44,206, 15,231,191, 17, 98,177, 24, 82,169, 20, 2,129, 0,148,210,188,245, 65,175,233,116,186,
-241, 0,222, 91, 90, 90, 50, 41, 41, 41,134, 54,110, 89,129, 64,176,178, 64,218, 86,227, 56,110,187, 94,175, 47,175,213,106,205,
-255, 9,239, 91, 80,139,252,175,167, 29, 83, 72, 57, 54,203,121, 65,134,101, 89, 6,239, 67,194,116,205,155,183, 28, 20, 30, 30,
-174,168, 87,175, 30, 35, 20, 10,145,117,229, 10, 84, 15, 31, 66,161, 80,160, 91,183,110,194, 27, 55,110,152,153, 41,204,134,135,
-190, 15,205, 96, 89, 6,148, 50,165,142,105,176,180,180, 28, 59, 99,198, 12, 7,119,119,119,232,245,250,124, 15,228,122,189, 30,
- 17, 17, 17, 80, 40, 20, 24, 56,112,160,157,137,137,201, 88, 3, 51, 77, 69, 15, 87,187, 39,215,206,108,172, 53,105, 84,123,185,
-135,201, 69,200, 35, 38, 64,113,232,123,120, 69,159,195,180,174,245,228, 23,214,207,174,233,230,100,245,132, 16, 82,177,172,145,
-164, 82,169,110, 5, 4, 4, 12,191,126,253, 58, 15, 0, 87,175, 94,165,175, 94,189, 26,249, 37,173, 78,158,231,145,154,154, 10,
-158,231,217,220,253,188,223,255,179,204,208,171, 87, 47, 54, 34, 34, 98,164,151,151,151,199,253,251,247,113,226,196, 9, 92,186,
-116, 9,231,207,159,135, 88, 44, 46,223,179,103,207,132,132,164, 84,203,212,212, 52,105, 76,228,187,186,251, 54,109,114,138, 14,
- 13,189,243,231,159,127,102, 34,167,219,208,144,180,234,161, 80, 40,100, 43, 87,174,204, 50,181,112,232, 80,175,126,227, 58, 66,
-169,153,141, 72,162,176, 77, 75, 75,215, 62,123,246, 44,104,249,242,229, 30, 85,171, 86,181,204,237, 70, 51,136,211,198,198,198,
-124,230,204,153, 90, 19, 83,219,198,117,234,213,247, 21, 75,205,172,132, 98, 19,171,134, 13, 27,118, 11, 10, 10, 10,157, 59,119,
-174,115,141, 26, 53,236,202,194, 89,185,114,101,211,169, 83,167,170,205,204,173, 90,123,123,121,215,108,224, 95,183, 79,173, 90,
-181, 6, 10, 4, 2, 46, 46, 46, 46,120,210,164, 73,206, 77,155, 54,181, 46, 11,167,165,165,165,233,194,133, 11, 53,149, 92,171,
-246,232,212,169, 99,115,169,137,133,149, 88,102,106,165, 84, 42,185, 87,175, 94,189, 93,176, 96,129,179,159,159,159,141, 33,156,
-217,217,217, 66, 27, 27, 27,248,250,250,194,219,213, 21,105,105,105, 56,114,228, 8,182,111,223,142, 45, 91,182, 96,239,222,189,
-168,221,168, 13, 76, 77, 77, 17, 29, 29,141,244,244,116, 97, 81, 60,249,221,116,127, 7, 54,122,209, 63,248,177, 3, 70,143, 30,
- 29, 85,130,184,194,232,209,163,163,198, 76,249,125, 64, 94, 23, 98, 73,150,171,150, 45, 91, 62, 63,115,230,204,187,221,187,119,
-195,219,219, 27,109,219,182, 21, 3,192,216,177, 99,197,189,123,247,198,129, 3, 7,112,232,208,161, 64, 15, 15,143,219,132,144,
- 46,134, 4,115,224,192,129,141,122,245,234,117,179, 87,175, 94, 79,251,244,233,179,105,228,200,145, 78, 5,207,199, 68, 71, 62,
-210,104, 52,240,171, 89,199,100,225,214,251,253, 75,227,123, 5,236,222, 20, 20,180,125,233,203,151, 31,102,123,123, 91, 84, 8,
- 13,181,218,177, 98,133, 77,222,226,217, 58,157, 14, 17, 17, 17,176,180,180, 68,255,254,253,109, 36, 18,201, 64, 3,242,207,170,
- 46, 93,186, 12, 9, 15, 15, 87,108,222,188,217,241,233,211,167, 78, 49, 49, 49,142,151, 47,157,183,253,113,242, 88, 83,115,133,
- 88, 28,157,144, 35, 80, 67,163, 33, 15,122,143, 70,148,194,162, 96,183,225, 71,173, 50, 23,151, 17,199,142, 29,115, 40, 80, 46,
-127, 36,168, 10,255, 7, 67, 25, 43, 31,178,173, 98, 23, 18,111,225, 77,126, 40, 33,156, 29, 14, 30, 60,184, 60, 52, 52,180,105,
-199,142, 29,215, 16, 66, 42, 20,113,141,109,243,230,205, 55,191,126,253,186,109,151, 46, 93,142, 18, 66,218, 20,219,122,116,113,
-233,118,236,216, 49,235,188,125, 27, 27, 27, 72,165,210, 79,196,149, 72, 36, 2,195,252,251, 60, 15,177, 44, 11,129, 64,144,159,
- 14, 2,129, 0, 44,203, 94, 96, 24, 38,130, 97, 24,173,161,226, 42, 87,188,176, 28,199,245,227,121, 62,147, 16, 2,161, 80, 8,
-137, 68,210, 81, 44, 22,251, 10,133,194,127,196,251, 22,212, 34,255, 26,129,149,235, 48,242, 26, 0, 80, 66,178,158, 7, 4, 8,
- 89,177,120,192,159,123,246, 72, 68, 34, 17, 62,124,248,128,192,192, 64,100, 95,190, 12,229,157, 59,136,139,139, 67,102,102, 38,
-236,237,237,177,113,235, 86,185,134,163, 67, 95,191,121,195, 82,230,175,241, 4,197, 77,213,148, 72, 36,173,186,119,239, 94,172,
- 16,139,142,142, 70,251,246,237,133, 44,203,182, 42, 34,131, 92, 42,148, 24,196,201,150,156,188,124,120,161,163,163, 56, 16,120,
- 59, 9,200,120, 2, 80, 53,160,215, 0, 81, 47,128,211,243, 81, 33, 51,136,156, 95, 56,200,193,217, 68,112,146, 20,106,138, 25,
- 48, 77,213,213,211,211,115,203,128, 1, 3, 24, 0,104,209,162, 5,241,244,244,220, 68, 8,113, 45, 33, 35, 95, 42,165,114,188,
-151,146,146,130,222,189,123, 91,187,185,185, 93,234,221,187,183,117,222,241,207,229,204,235, 57,242,241,241, 73,146,201,100,123,
- 9, 33, 18, 3, 62,184,124,206,240,240,240,239, 60, 61, 61,171,108,222,188,153,101, 89, 22,155, 55,111,198,254,253,251,113,235,
-214, 45, 36, 37, 37, 41, 38, 77,154,100,126,234,210,189,115,183,111, 61, 56,177, 98,214, 20,235,110, 45,155,185, 90,166, 37,164,
- 59, 59, 59,183, 66,206,152, 44, 67,194,217,126,220,184,113, 23,158,190, 10,177, 99,133, 34,145, 88, 40,144,217,218, 88, 84,112,
-176,181,172,226,108,109, 89,197, 84, 44,180, 72, 79, 79,127,127,224,192,129, 76,228,140,207, 50,136,115,206,156, 57,207,130, 66,
- 34,172, 25,161, 64, 32, 18,136,196, 22,230, 10,235,206, 29,219, 52, 7, 0, 25, 75, 36,233,233,233, 17, 59,119,238,204, 42, 11,
-231,236,217,179,239,198, 36,164,216,137,164, 82, 86, 34, 17,230,199,165,165,153,194, 94, 46,145,200,178,179,179, 63,108,217,178,
- 37,173, 44,156,211,167, 79,127,248, 50,248,131, 13, 97,192, 50, 32, 66, 75, 75, 83, 59, 91, 11, 83, 7, 59, 51,133,131,148,129,
- 52, 61, 61, 61,108,231,206,157,233,134,112,106,181, 90, 97,124,124, 60,130,130,130, 80,174, 78, 29, 92,186,116, 9,229,203,151,
- 71,239,222,189,209,183,111, 95,200,100, 50,180,240,175,134, 25, 51,102,224,221,187,119,208,235,245,226, 50,230, 37, 56, 57, 57,
- 93, 43,238, 92,222, 56,170,226, 56,189, 43,147,124,113,101, 8,119, 81,215, 21,230,108,223,190,253,204,203,151, 47,187,237,218,
-181,171,243,192,129, 3,111,237,218,181, 11,245,235,215,199,171, 87,175, 80,169, 82, 37,236,216,177, 3,125,251,246,189,181,118,
-237,218,206,143, 31, 63,246,171, 92,185,242,140,210, 56,251,244,233, 51,166, 70,141, 26, 87, 98, 99, 99,253,147,147,147,125,143,
- 28, 57, 50,180, 91,183,110,239,251,245,235,215, 50,223,130,165,211,237, 57,125,226, 48, 58,116,238,142,170, 62,190, 27, 6,207,
-216, 93,173, 36, 78, 74, 41,125, 9,108,218, 30, 19,147,176, 71,165,202,238, 45, 20,154,152,220,191,111,117,232,143, 63,108, 10,
-174, 4, 16, 21, 21,133, 78,157, 58, 9, 69, 34, 81,227,146,194, 73, 8, 89,214,181,107,215,222, 71,142, 28,201,183, 54,221,185,
-115, 7, 47, 94,188, 64, 88, 88, 24, 82, 83, 83,209,114,100, 38, 70, 47,201,225, 30,189,132,162,205, 88, 42, 47,137, 51, 51, 51,
- 83,121,244,232, 81,244,234,213, 11, 35, 70,140, 64,229,202,149,243, 69, 86, 97,113,117,253,193, 69,136,125,147,173, 26,109,194,
-144,214,199, 97, 43,119,193,244, 98,194, 41,106,213,170,213,198,206,157, 59,131,227, 56,168, 84, 42, 30, 64,114, 81,186,161, 82,
-165, 74,194,114,229,202,225,231,159,127,134,133,133,197,106, 66, 8, 91, 20,103, 86, 86,150,250,204,153, 51, 24, 56,112, 32, 38,
- 76,152,128, 42, 85,170,228,135,115,231,238,253, 54,125,135,142,242,168,213,168,137,159,119,173,250,213, 51,212,108, 29,145,137,
-213,119,164, 8,115,219,223,225, 58,224,255, 7,103, 94,183, 96,222, 70, 8, 1,203,178, 75, 89,150,237,201, 48, 12, 45, 11, 39,
-207,243,122,189, 94,127, 95,175,215, 15,206, 19, 89, 44,203,130,101,217, 50,139,211,191,203, 21, 67, 65, 45,242,175,233, 34, 44,
-184,228,137,142,199,201, 1,131,134,118,186,116,249,178,137, 88, 44, 70,104,104, 40,226,226,226,176,127,239, 94,238,160,157, 93,
-182, 80, 40,164,253,183,111, 55, 29,246,221,119, 68, 40, 20,194,211,211, 19, 61,123,246,148,245,232,221, 47,222, 86, 40,220,111,
-128, 66,117,204,235, 63, 31, 58,116, 40, 86,173, 90,245,209,249, 31,127,252, 17,123,247,238, 5, 33,196,193, 16,195,203,248,249,
- 93, 93, 44, 43, 91,196,209, 39, 59,133,132, 53,177, 2,107, 2, 48, 34, 64,202,230,136, 44,134,133,250,241,149,100,166,254,129,
-244,238,141,179,157,215,156,219,216, 11,192, 1, 67, 35,201,201,201,105,246,149, 43, 87,108, 39, 77,154, 68,211,211,211, 73, 76,
- 76, 12, 93,188,120,177,237,152, 49, 99,102, 3, 24,244, 57, 17, 31, 29, 29,189,176, 67,135, 14,109, 79,159, 62,109, 63,104,208,
- 32,115, 0,232,208,161, 67, 92,116,116,244,194, 47, 73, 80,145, 72,196,190,124,249,210,106,229,202,149,125, 39, 79,158,236,227,
-235,235,235,144,154,154, 26, 22, 21, 21,213,179, 52,139, 27,207,243, 94,155, 55,111, 6,203,230,148,115, 12,195, 64, 44, 22, 67,
- 44, 22,195,204,204, 44, 37, 36, 36,132,175,104, 47, 19,103,197,197,164, 89, 10, 44,133,196,209,193,218,194,193,177, 89, 82, 82,
-210,125, 0,134,154,151,253,218,181,107,247,252,206,211,183,220,168, 65,205,171,152,136, 24,161,169, 76,202,202,196, 66, 66, 40,
-229,180, 58,141,255,250,157, 87,183,121,120,120,120, 27,106, 34, 38,132,212,168, 95,191,254,229,167,175, 62,224,233,139,119,145,
-182, 86, 38,214,237, 90, 52,172,154,119,190,122,221,250,125, 11, 92,158,106,208,135, 33, 16,248,213,169, 83, 39, 50, 46, 57, 11,
-118, 86,230, 31, 9,105, 75, 27,187, 86, 0,144,149,150,182,190, 92,185,114,158, 2,129,160,146,161,225,108,220,184,113,204,227,
-192,112, 56,216, 90, 89,229, 30,254,104, 76, 79, 98, 76,204, 6,119,119,119, 79, 67, 44,173, 26,141, 70,114,236,216, 49, 60,126,
-252, 24, 11,125,124,240, 99,197,138,176,181,181,197,229,203,151, 65, 41,133, 66,161, 64,106,106, 42, 14, 28, 56,128,150, 45, 91,
- 66,163,209,200,139, 19, 74,121,227,171,138, 19, 66,209,209,209,127, 75,139,178, 48,183,247,178, 32, 4,150,176, 82,230,153, 51,
-103,118,239,222,189,123,137,183,183, 55,126,248,225,135, 70,171, 87,175,190,229,235,235,219,168, 69,139, 22,184,114,229, 10,134,
- 14, 29,122,107,237,218,181,141, 70,141, 26,133, 13, 27, 54,224,253,251,247, 91, 75,122,126,159, 62,125,230, 13, 31, 62,124,214,
-186,117,235,144,215,130,239,218,181,107, 94,217,184,173, 87,175, 94, 73,121,215, 30,220, 18,121,167,178,171,123,131, 49,227,167,
-136,199,142, 26, 56, 13, 64,223, 82, 42, 10,234,228,228,148,161,111,210, 36,249,192,221,187,232, 35, 18,153,236,121,250, 20, 39,
- 85, 42, 52,238,214, 45, 17, 0,166, 79,159,142, 93,187,118, 1,128,125, 73, 92, 46, 46, 46, 35,142, 30, 61,154,159, 87,172,173,
-173, 33, 22,139,115, 68,144, 64, 8,150, 99,113,105,131, 28, 33,225,217, 24,189,132,226,143,233, 4,149,156,144, 85,163,106,137,
-249, 17, 13, 27, 54, 68,122,122, 58, 88,150,133,169,169, 41,172,172,172, 62, 18, 87,233,153,169, 88,190,117, 30,226,171, 94, 67,
-235, 19, 96, 8, 11, 60, 91, 4,100,188, 45,118, 73,167, 78, 43, 87,174,116, 84,169, 84,184,122,245, 42, 46, 95,190,252, 27,165,
- 52,179,176,222,161,148,198,178, 44,187,125,217,178,101, 67,157,156,156, 48,122,244,104,143,197,139, 23,119, 5, 62,229, 37,132,
-160,118,237,218, 80,169, 84, 16, 10,133, 48, 51, 51,131, 70,171, 23,246, 26, 48,194,181,130,155,175,100,241,138,197,140,189,149,
- 0, 2,198, 10,193, 31,148,230,107, 86,253,188,230,222,205, 27,195,136,137, 77, 55,154,157, 24,243,191, 94, 73,115, 28, 7,157,
- 78,151,183,238,170,107,158, 40, 18, 8, 4, 91, 88,150, 77,181,177,177, 57,150,152,152,104,144,208,226,121,158,227, 56, 46, 83,
-167,211,165,232,116,186, 44, 66,136,130,101, 89,112, 28, 7,142,251,103, 76,136, 45,109,249,181,255, 57,129, 85,120,185,147,240,
-240,240, 84, 43, 43, 43,231,170, 85,171, 50, 26,141, 38,167,235,225,208, 33,110,203,182,109,167, 85, 42,213,120, 0,162,117,191,
-255,190,193,217,197,165,249,128,129, 3,137, 78,167, 67,135, 14, 29,196,167, 78,157,178,126, 23, 23,151, 97, 64, 4,126,244,188,
-193,131, 7, 99,245,234,213, 0,128,113,227,198,229,155,208,137, 1,157,254, 10,115,180,111,219,177,182, 89,132,252, 55, 51,109,
- 3, 93,102,197,119,166,247,228,153,178,218, 96,196, 2, 72, 89,240, 90,157, 62, 56,190,219,163,119,193, 94,222,178,228,164, 74,
-173,124,154, 98,203,197, 93,237,203, 34,176, 76, 76, 76,234,154,154,154,226,209,163, 71,201,181,107,215, 78,165,148,154, 47, 92,
-184,208,198,196,196,164,238, 23,168,244, 80, 66, 72,147,134, 13, 27,142,101, 24,166, 21,207,243,151,226,226,226,214, 81, 74, 67,
- 13,204,132,163, 1,204, 69,129,113, 38, 26,141, 6, 12,195,128, 82,138, 62,125,250, 96,250,244,233,222, 47, 94,188,192,149, 43,
- 87,172, 90,181,106,117,143, 16,146, 10, 96, 24,165,180, 88, 43, 89, 82, 82, 18,254,248,227, 15,176, 44, 11, 11, 11, 11,152,154,
-154, 66, 42,149,162, 81,163, 70,177, 75,151, 46,245, 58,124,248,112,118,106,124, 60,145,101,164,169,137,181,181, 20, 78,229,219,
- 13,238,214, 61, 0, 57,179, 9, 13,130, 92, 46, 55, 17, 67,157,193,112, 42,102,249,188,245, 2, 19,145,136, 72, 69, 2, 72,248,
-108,118,198,210,159,169,148, 80, 97,174,117,149, 26,202, 41,149, 74, 69,114, 49, 85, 11, 37,140,206,132,161, 95,165,159, 85, 44,
- 22,139, 36,194, 44,101,177, 98,150, 33, 44,203,178,146,178,112,202,100, 50,145, 66,204,169,139,125, 15, 6, 44,195, 48,197,114,
-246,242, 33,244,224,216,252, 46,189,252,176,233,245,122,212,173, 91, 23,251,142, 95,197,153,203,119,144,248,225, 57,198,143, 30,
- 10,119,119,119,156, 63,127,254,139,226, 33, 58, 58,186, 72,145, 85, 98,215, 98,238,184,171,146,186, 5, 63,226,158, 99, 94,234,
-172, 68, 66, 72,151,198,141, 27,143,217,179,103,143,166, 93,187,118,226, 62,125,250,192,215,215,183,209,144, 33, 67, 0, 0,173,
- 90,181,194,234,213,171, 27, 13, 25, 50, 4,251,247,239,199,145, 35, 71,212,205,154, 53,155, 74, 8,137,162,148,158, 41,166,194,
-233,180,113,227,198,194,150, 65,232,245,122,232,116, 58, 71,189, 94,239,152, 91, 22, 97,205,154,181,137, 23,206,159,194,212, 25,
-243, 97,103,235, 80,195,192,238, 29, 50,120,202,148,196, 29, 43, 86, 96,197,254,253,152, 82,169,146,201,174,192, 64, 92, 80,169,
-112,224,202,149,196,220,231,148, 58,190, 41, 43, 43, 75,121,230,204, 25,179, 3, 7, 14,192,194,194, 2, 85,170, 84,201, 23, 67,
- 12, 43, 3, 43,178, 68, 85,159,186, 0, 30, 0, 0, 42, 57, 33,203,179, 50,110, 17,130, 84,202, 64, 93, 66,126,132,131,131, 3,
- 4, 2, 1,158,190,126, 0,211, 84, 51,212,242,169, 7,161, 80,136,140,172, 52,140, 89,209, 19,238, 63, 39,160,154, 39,160,140,
- 3,238, 79,130, 46,246, 14, 86,102, 71, 96,125, 49,148, 53,203,151, 47, 15,181, 90,141,205,155, 55,211,220, 50,170,184,202,126,
-230,175,191,254, 58,104,206,156, 57,108,157, 58,117, 0,160, 70, 81, 2, 43,183,204,128,179,179,115,190,240,235, 51,104,148,235,
-200, 73,163,100,221,218, 52,135, 64, 96,131,212, 44, 29,146, 50,116,176,180, 81, 96,234,164, 94,210, 75,181,157,235,108, 92,251,
-231, 9, 66, 72, 29, 90,208,100,248, 63, 8,173, 86, 11,158,231, 79, 51, 12, 51,139,101,217,159, 5, 2, 65,135,220, 83, 25, 12,
-195,196,179, 44, 75,202, 82, 86,242, 60, 63, 64,175,215,175,212,104, 52,102,121, 22, 49,142,227,160,209,252,223, 79,220,255,210,
- 53,142,255,177, 22,172, 79,186,241,116,186,170,234, 13, 27,144,117,233, 18,196, 23, 46,224,128,147, 83,166, 74,165,154, 76, 41,
-141,200, 45,236,126,216,190, 99,199,237,206,119,239,154,105,130,130,224,250,226, 5,132, 22, 22, 53,202, 26,128,109,219,182, 33,
- 61, 61, 29,105,105,105, 0,128,223,126,251, 13,233,233,233,121, 3,249, 74,127, 1, 17, 26, 57,216, 85, 66, 44,130,193, 11, 24,
- 69, 88,213,236,250, 10,149,105,180,115,184,125, 86, 26,227,140,160, 15,245,228,202, 36, 77,125,194,106,160, 74,204,134,115,195,
- 42, 16, 64,208,168, 44, 97,204, 51,157, 10, 4,130,228, 55,111,222,116,242,240,240, 56, 9,192,230, 75,251,251, 41,165,111, 1,
-140,255,156,123, 89,150,157,251,254,253,123,187,173, 91,183,142, 93,184,112, 33, 45, 40,176,242,254,231, 13,138, 52, 55, 55,135,
- 80, 40,180,191,115,231,142,125,189,122,245,214,231, 22,100,197,137, 73,216,219,219, 67, 40, 20,194,220,220, 28, 89,233, 41,242,
- 63, 22,207,106,102, 98,105,111, 53,101,202, 20,102,240,224,193,239,214,175, 95, 95,222,161,106, 85,207,231,207,159,127,232,220,
-179,215,227, 51,103,206, 0,192, 38, 3,131,254,236,197,139, 23, 98,119,183,138, 2, 94,167,228,229, 34, 64,250,108, 13, 47, 54,
-117,128,148,101, 33, 32,160, 50, 19,185,221,219,176,176,104, 0,241, 6,198,227,211,224,224, 96,161,139,147,189, 32, 35, 75,149,
- 42, 23,240,226,247, 15, 31,188,170, 92,167,174, 23, 0,168, 30,222, 57, 42,169,234, 99,250, 62, 62,193,204,213,213, 53,204, 16,
- 78,189, 94,255, 44, 52, 52, 84,228,236,236, 44, 12, 14,126,251,167,181,153,169,147,149,189,125, 51, 0,208, 36, 39,220, 32, 74,
- 85,180, 80, 40,116,142,142,141, 77,208,235,245,209,134,134,243,205,155, 55, 34, 23, 39,123,193,201,211,103,246, 57,200, 77, 28,
- 45,100, 18,115, 41, 3, 34,165,124,154, 88,175,143,149,153,200,157,222,135,135, 39, 82, 74, 35,139,227,249,131, 31, 59, 32, 39,
- 15, 76,217, 82,240,248,173, 91,183,112,245,209,123,152,179, 28,132,186, 44,220, 59,114, 0,221,199, 77, 44,245, 91, 10,252,201,
- 19, 80, 47,219,235, 93,121,240, 71,194, 41,167, 11,208,177, 72, 33, 84,170,192, 42, 13, 27,189,174, 21, 18, 89,136,142, 46,185,
-112,237,223,191,255,252,221,187,119,231, 79,226,120,245,234, 21, 90,180,104, 1, 0,152, 63,127, 62,218,182,109,139,122,245,234,
-225,213,171, 87,112,119,119,199,149, 43, 87, 36, 44,203, 74, 6, 12, 24,176, 24,192,153,210,130,180,105,211, 38, 12, 29, 58,180,
-168, 1,211,239, 0,168,136,165,103,230,244,165, 59,109,146,147, 18, 17,159, 16,251,180, 12, 45,114, 12,158, 50, 37,113,163, 70,
-131, 61,247,239, 99,160, 92,110,178,227,237, 91,116,168, 87, 15,213, 90,180, 72, 52,164,172, 43,202,138, 99,109,109, 13,145, 72,
- 4, 86,232, 4,129,216, 15,140, 72,132,154,141,253,176, 98,178, 60,123,208, 55, 88, 75, 8, 82, 37, 98, 60, 17,153, 32,182, 56,
- 78,189, 94, 15,161, 80,136, 3,231,118,224,185,197,159, 64, 6,112,251, 73, 23, 76, 28, 58, 19, 63,173, 30, 1,143,197, 9, 48,
-247, 0,226,239, 1, 15, 38, 49,124, 90, 40, 63, 92,157,128,179,148,210,164, 98, 4,155,151, 76, 38, 67, 86, 86, 22,130,131,131,
- 63, 80, 74,211, 75,248, 30,226, 90,181,106, 21,207,178,172,163,179,179, 51, 0,148, 47,174, 65,206,243,124,254, 56,171, 93,123,
- 14,218,212,104,226, 42,109,221,200, 27, 59, 79, 46,194,247,189,214, 66,200, 18,112,156, 22, 43, 87,119, 4,167,206, 68,175,206,
- 35, 72,211, 86,238,126,151, 78,106,134, 3,216,252,191, 92, 73,107, 52,154,227, 90,173,118, 34, 33, 36,131,101,217,241, 66,161,
-208,158, 97, 24,119,142,227, 6, 18, 66, 94,136, 68,162,138,142,142,142,201, 49, 49, 49,105,165,113, 37, 37, 37, 81, 0,219,114,
- 55, 35,254,102, 48,185, 25,184, 41, 33,132, 18, 66,154,230,171, 92, 74,121,125,114, 50,168, 58,167,241, 35, 20, 10, 41,128,130,
- 51,148, 76, 44, 44, 44,136,208,197, 5, 68,146,211,224,166,192, 87,179, 49,234,116,134,185,134,225, 57,176, 32, 90,208, 2, 2,
- 62, 75, 74,176,200,166, 37,198,139,103, 35, 86,108, 81,240,139, 6,244, 20, 28,120,182,140,193,161,153,153,153,208,235,245,150,
-110,110,110,167,245,122,189,101, 94, 23,192,255,161,217, 56,132,101, 89,140, 29, 59, 22,200,237, 74,211,104, 52,136,141,141,133,
- 90,173,134, 70,163,193,251,247,239,145,150,150, 6,141, 70,131,151, 47, 95,162,114,229,202, 96, 89,214,177,148,214, 13,108,109,
-109,225,232,232, 8,117, 86,186,252,240,166,213, 29,150,205,159,110,211,207,141, 50, 91,215,254,202,187,184,184, 36,249,248,248,
- 56, 72, 36, 18,109,173, 90,181,212, 39, 79,158,188, 0,160,123, 25,252, 96,157, 89,176, 96, 65,189,122,245,234, 85,180, 80,200,
-181, 18, 49, 11,137, 62,139, 74,212, 73, 84,160, 76,164, 21, 92, 42,106, 33, 87,212,237,211,167,143,216,144, 74, 49,143,243,167,
-159,126,170,226,229,229,101, 99, 97, 38, 79, 23, 48,136, 18,113, 92, 84,202,163, 59, 23, 1, 64,100, 99,167,132, 92, 81, 55,119,
- 12,157,193,156, 83,167, 78,245,113,118,118,182,102, 24,146,170,215,106, 63,228, 23,248, 42,101, 28, 43,145,102, 65, 34,109, 60,
-108,216, 48, 97, 25, 57,189,170, 87,175,110,109,105,110,150, 42,100, 72,184,136,211, 71,200, 40, 23, 41,214,105, 19, 36,118,246,
-153,144, 43, 26,246,235,215, 79, 80, 28,103,158,245,170,176,101, 72, 32, 16, 32, 42, 42, 10,217,209,207, 33,138, 10,130,159, 66,
-136,250, 14, 54,144,203,229,165, 55, 86, 70,190, 34, 24,249,138, 4,190,167, 36,240, 61, 37, 5,247, 63,177, 54, 45, 72,195, 71,
-215, 21,131,194,227,179, 62, 17, 87,133,238,205, 21, 89, 37,126, 79,127,254,249,231,140,230,205,155,199,183,109,219, 86,115,250,
-244,105, 16, 66,112,229,202, 21, 68, 69, 69,161,109,219,182,160,148,226,222,189, 28,227,236,211,167, 79,209,170, 85, 43, 77,147,
- 38, 77,162,254,252,243,207,185,134, 36,206,208,161, 67,161,211,233,144,153,153,137,228,228,100,156, 58,117, 10,126,126,126,212,
-196,196,164, 59, 91,174,205,162, 94,195,103, 52,240,173, 94, 3,235,215,174,208,136, 5,194,165,101,236,246,192,160,201,147, 19,
-211,106,214, 76,222,149,149,149, 61,216,204,204,196, 45, 34,194,234,209,249,243, 54, 90,173,214, 32,142, 60, 43,142,139,139, 75,
-190,184, 18,137, 68, 16,136,109,193,202,171, 65,108,221, 22, 38, 14,221,113,245,137, 68,109, 46,199, 81, 83, 5,206,201, 45,240,
-162, 4, 63, 88, 68,175,215, 67, 36, 18,225,218,227,179,240,155, 9,248,205, 4,162,235, 30, 71,223,137,237, 96, 51,254, 13,204,
- 61,128,216,155, 64,234, 10, 63,232,222,155,167,171, 19,112,160, 56,113, 5, 0,106,181, 90,197,113, 28, 8, 33, 16,137, 68,226,
- 2,167,110, 95,187,118, 13,151, 47, 95, 6,128,224,188,131, 41, 41, 41,148, 97, 24,200,229,114, 0,144,151,212, 77,150, 55, 30,
-236,218,189, 27,214,125,123,116, 36,119,158, 93, 68, 67,191,126, 72,202,212, 34, 46, 77,139,212,108,192,167,206, 44,248,182, 58,
-138,231,239, 51, 80,163,186, 47,203,138,229,131,240, 63, 14,141, 70, 51, 82,173, 86, 39,168, 84,170, 12,149, 74,149,152,157,157,
- 61, 76,169, 84,118,210,235,245,183, 4, 2,129,167, 84, 42,125,108, 98, 98,114,188,124,249,242, 12, 0, 56, 59, 59, 51, 78, 78,
- 78, 59,254, 23,223,181, 40, 45,242, 63, 47,176, 0, 92, 43, 60,176, 76, 47,145,188,212,143, 25, 3,139, 19, 39, 32, 12, 14,198,
-144, 65,131,204, 76, 76, 76,214, 18, 66,106, 17, 66, 26, 42, 20,138,245,243,230,205, 51,181, 89,178, 4, 78, 55,110, 32,236,212,
- 41,232,132,194,135,159, 19, 8,165, 82, 9,129, 64,144,111,121,145,203,229,121,253,193,165, 10, 24, 78,143,187, 81,113, 65, 16,
-163, 34,120,208,204,115,233, 77,238,247, 11,153,101,119, 42,189,178,251,219, 44,145,251, 2,219,250,118,107, 43, 52,186,159, 69,
- 4,153, 98, 11, 41,194,195, 35,192,129,191, 91,150,240,169, 84,170,180,172,172, 44,212,168, 81,195,250,209,163, 71,110,126,126,
-126, 86,185,199, 31,124, 97,102,242,119,118,118, 62,232,226,226, 18,234,236,236,124,144, 16,226, 95,134,219,183,222,188,121, 19,
- 44,203, 98,222,188,121,200,200,200,128, 86,171, 69, 82, 82, 18,194,195,195,161,209,104, 16, 25, 25,137,215,175, 95, 67,163,209,
- 32, 44, 44, 12,106,181,218, 32, 97,107,106,106,138,212,164,120,249,254, 63,126,237,176,104,254,108, 89,218,219,199,136,140,142,
- 3,207, 41,163,151, 47, 95,254,218,221,221,253,178, 86,171, 45,199,243,124, 83, 74,233, 70, 67,133,102,174,163,210, 91,158,158,
-158,245,150, 47, 95,222,116,246,210, 45, 18, 83, 54,131,138, 77, 37,188,216, 84, 76,197,158,245, 49,124,238, 58,233,210,197, 11,
-159, 62,123,246, 44,217, 16,167,155,121,156,245,235,215,247,137,141,141,109,228,231,231, 87,195,161,138,135, 84,226,236,148, 40,
-118,170,144, 68,149,217,151,152,242,149, 58,173, 93,187,246,209,189,123,247,226,202,194,233,236,236, 92,237,247,223,127,175, 83,
-190,124,249, 58, 82,115,115, 89,102,106,234, 38,117,106,242, 22,161,141,131,140,177,182,233,181,107,215,174,187, 23, 46, 92, 72,
- 44, 11,167,183,183,183,239,226,197,139,107,213,172, 89,179,150,163, 71, 85,169,204,217, 37, 65,228, 92, 33, 94, 86,189,182,148,
-169,224,218,115,245,234,213,247, 31, 62,124,152, 96, 8,167, 64, 32,224, 24,134,129, 80, 40,132, 92, 46,199,245,235,215,209,175,
-123, 59, 56,216,153,193,163,106, 85, 52, 27, 57, 14,167, 79,159,134, 88, 44, 6,195, 48, 96, 24,230,139, 29, 90, 26, 34,132, 74,
- 67,113,226,171, 52,110, 74,233,153,107,215,174,253, 50,120,240, 96,113,251,246,237,113,255,254,125, 12, 29, 58,244,214,145, 35,
- 71, 0, 0,247,239,223,199,196,137, 19,111, 93,190,124, 25,163, 70,141, 66,139, 22, 45,196, 55,111,222, 92,111,136,243, 81,189,
- 94,143,109,219,182, 65,175,215, 67,161, 80,192,202,202, 10, 29, 59,118, 68, 64, 64,192,168,237,219,183, 7,177, 66,225,183, 29,
- 58,247,192,233, 19, 71,240,250,101,192,168, 29,139, 7,148,217,153, 47,195, 48,104, 63,104, 80, 98,162,143, 79,242,142,244,244,
-236, 97,150,150, 38,158,177,177, 86, 87, 15, 30,180, 49, 32,255, 16,142,227,242, 69, 85,158,216,200,159, 89, 38,182,133, 64,238,
- 11,129,105, 29, 60,127, 43,210, 9,235,210, 39,162,218,244, 85, 73, 78, 70, 9, 33,224,121, 30, 66,161, 16, 53,171, 52,196,219,
-221, 57,199,171, 12, 0,106,237, 76,130, 93,131,156,110,193, 15,203,237,240,227,176,249, 16,178, 34, 93,105,110,115,120,158,127,
-153,148,148, 4,129, 64, 0, 15, 15, 15, 7, 66, 72,158, 85,106,101,243,230,205, 23, 12, 28, 56,112, 25,128, 31,114,159, 95,161,
- 87,175, 94, 78, 90,173, 22, 79,159, 62, 5,128,199, 37,164,125,254,172,193,228,244, 48, 73, 37,167,106,240,243, 26, 9, 75,203,
-234,136, 74,214, 32, 58, 89,131, 45,127,116,197,227,155, 63,227,209,133,129,248, 16, 27, 11,153, 67, 55,112,122,181,239,255,122,
- 37,157,144, 3,101, 66, 66,130, 94,171,213, 42, 53, 26,205, 91,173, 86,251,144, 82,234, 42, 20, 10, 47, 74,165, 82,115, 19, 19,
-147, 38,114,185,124,187,135,135,135, 64, 38,147,109,151, 72, 36, 69, 10, 75,115,115,115, 98,110,110,206,154,155,155, 11,138,218,
-242,174,115,117,117,165, 94, 94, 94,212,215,215,151,250,248,248,208,170, 85,171,210,138, 21, 43,166, 59, 58, 58,142,180,182,182,
-102,255,198,215,189,246,111, 26,228, 94,216, 77, 3, 0,192,205,202,202, 84,167,211, 70, 94,188,120, 81,203, 48, 12, 76, 76, 76,
- 48,120,232, 80,230,143,223,127,111,220,207,223,255,202,136,214,173,207, 94,185,124,185,102,189,122,245, 64, 41, 5,195, 48,216,
-191,127,191, 82,165, 82, 38,149, 47, 95,222,194,144,194,162,224,135,147,158,158,158, 47,176,210,210,210, 96,111,111,111,112, 23,
- 97, 86, 58, 46, 93, 62,247, 56,133,114,223,135,183,127,187, 74,187, 52,182,107,189, 84,158, 19,164,113, 58,164, 41, 41, 50, 84,
- 16,220,103,172,234, 13,118,239,166,125,223,170,222,235,235, 65,119,146, 84,156,170, 76,179, 31,226,227,227,103,246,234,213, 43,
-201,209,209,145,152,153,153,193,217,217,153,233,210,165, 75, 98, 68, 68,196,130,207,141,120, 27, 27,155,190,205,155, 55, 63, 25,
- 21, 21,213,243,250,245,235, 21,111,220,184,209,179,121,243,230, 39,109,108,108,250, 26, 72,113, 96,198,140, 25, 89, 98,177, 24,
-245,235,215, 71, 70, 70, 6, 52, 26, 77,169, 91,169, 22, 65,158,135, 84, 42,197,193, 45,171,219, 44,154, 63, 91,150,244,234, 46,
-158,223,186,136,115,161,234,236,185, 75,215,220,147, 74,165,159,245,190,238,118,242,106,213,156, 76, 95, 77, 28,218, 39,122,250,
-180,105,166, 47, 94,188,144,141,159,240, 3,194,226, 82,169,184,253, 74, 22, 77,103, 51,207,178,108, 72,135,111, 90,224,151,197,
-115,154, 2, 24, 85,106, 69,109, 39,175,230,235,100, 26, 56,101, 68,191,144, 9, 19, 38,200,150, 46, 93,170,170, 91,183,174, 46,
- 38, 38,198, 92, 97, 99, 87, 91,104,109,227, 31, 26, 27,103, 81,187, 78,157,183, 19, 38, 76, 80,149,149,115,206,156, 57, 38,183,
-111,223, 22,181,108,217,146,198,199,199, 91,138,100,178, 6, 66, 83,243,166,209,137,137, 86,173, 90,181,122, 59,100,200, 16,238,
-115, 56,223,188,121, 35,170, 93,187, 54,141,137,137,177, 52,177,182,173, 47,178,182,109,242, 62, 38,214,178, 70,205,154,193, 19,
- 39, 78,212,149,196,217,107,221, 95,226, 68,161, 80,196,248,249,249, 97,238,220,185, 88,184,112, 33,122,247,238,141,208,176, 80,
- 52, 29, 50, 2,149, 7,143,194,169,123, 15, 16, 29, 29,141,153, 51,103,194,221,221, 29, 66,161, 48,248,107, 20, 26,134,136,172,
-226,186, 15,189, 43,147,107, 37,141,179, 42,141,187,103,207,158, 99,242, 92, 49, 12, 27, 54,236,214,218,181,107, 27, 13, 27, 54,
- 12, 0, 80,191,126,125,252,252,243,207,141,102,205,154,117,107,209,162, 69,104,217,178, 37, 92, 93, 93, 75,245, 39,198,113, 28,
-244,122, 61,250,245,235, 7,189, 94,143,132,132, 4,188,121,243, 6,155, 54,109, 2,165, 84, 10, 0,142, 78, 46,181,197, 98, 49,
-158, 61,121,152, 61,123, 88,189, 63,203,208,136, 34, 5,191,173,204,204, 76,244, 28, 61, 58, 49,178, 74,149,228, 13,137,137,217,
-195, 45, 45, 77, 42,125,248, 96,101,170,209, 56,151, 52,230,180,160, 24, 42,232,150,160,240,150, 55, 65,197, 80,228,113,142,234,
- 55, 17,210,115,141,243, 69,150,162, 2,192,235,129,199,211,132, 24,219,109, 46,252,170,213,128,129, 51,214,238,221,191,127, 31,
- 98,177, 24, 19, 39, 78, 36, 44,203,174, 38,132, 16, 74,105, 10,165,116, 46,165,116, 42,165, 84, 69, 8, 33, 18,137,100,227,208,
-161, 67,161, 86,171,113,235,214, 45, 0,184, 92,156, 48,165,148,230,191,123,102, 50, 1,199,139,113,251,201, 57, 92,184,113, 8,
-161, 81, 9,248, 16,175, 2, 4,230, 80,101, 69, 66,171,140,130, 38,245, 9,210,213, 38,255,186, 46,167,228,228,100,158,227, 56,
- 13,199,113, 90,158,231, 43, 2, 48, 19, 8, 4, 16,137, 68,144,201,100, 3, 77, 76, 76,158,200,100,178,129, 98,177,184,200,251,
-211,210,210,104, 90, 90, 26,151,150,150,166, 47,106,203,187, 46,207,247,150, 76, 38,131, 68, 34,129, 72, 36,138, 21, 8, 4, 3,
- 9, 33, 7,240, 55,251,167, 42,168, 69,254,215, 81,148,163, 81, 80, 51, 89,159, 67,235,255, 48,239,213,111, 64,150,159,159,159,
-165,179,179, 51, 8, 33,232,218,173, 27,105,126,253,186,169,208,201, 9,214,181,106,229,123,207,189,116,241, 34,206,157, 59,151,
-117,250,216, 81,231,161,195,135,119, 66, 65,103,207,159, 70,158,192,205,205, 45,255,185, 49, 49, 49,121, 9, 8, 0, 72, 79, 79,
-135,173,173, 45, 98, 98, 98, 96,160, 97,100,215,244,105,247,166,197,215,155, 89,185,158,169,144,156,205,138, 5, 71, 41,132,132,
- 3,148, 20, 58, 14, 80,235, 40,106, 87, 98,173, 46, 40,245,150,167,238, 31,121, 15, 96, 87, 25, 45, 88, 87, 9, 33, 35,121,158,
- 63, 4,128,185,126,253, 58, 31, 24, 24, 56,198,208, 1,233, 69,193,196,196,228,167, 43, 87,174, 88,253,244,211, 79, 41,167, 78,
-157, 74,235,216,177,163,249,166, 77,155,172, 90,180,104,241, 19,128,125,165,246, 89, 82,170, 36,132,236,140,136,136, 24, 83,167,
- 78, 29, 36, 39, 39, 67,171,213,226,241,227,199,112,119,119,199,163, 71,143,224,225,225,129,135, 15, 31,162,106,213,170,121, 83,
-166,193,243,124,169,221,184,209, 17, 31, 20, 38,234, 20,179,232,251,103,240,250,249, 35,156, 9, 81,103, 47,223,182,255, 76,181,
- 26,181,179,202, 90,128, 3, 64, 85,123,185,143,179,157,245,133,165,243,231,216,133, 93,221,143, 35,219,214,241,215,206,158,245,
- 22,155, 98,100,179,190, 19,122,104,116, 40, 15, 64,210,160, 94, 29,250,141,197, 27, 94, 86, 17,177,151, 95,150,236,201,188,170,
-189,220,199,201,214,250,252,242,165, 11, 77,223,157,221,142, 3, 27, 87,210,195,187,247,250,169,128,122,213,170, 85,107, 79, 8,
-113, 4,160,207, 77, 35,131,150,160, 41,138,243,242,169, 83, 53, 85, 64, 61, 55, 55,183,246, 66,161,176, 98,174,149, 47,234,107,
-112, 86,175, 94,189,125,110, 11,159,230,142,185, 42,211, 82, 57,195,134, 13, 91, 49,101,202,148,137, 58,157,206,186,128, 5,146,
-221,180,105,147,128,227, 56,134, 82,170,101, 24, 70,123,254,252,121, 78,175,215, 71,171, 84,170,209, 95, 90, 96,244,232,209, 3,
-247,238,221,155,143, 18, 6, 47, 23,170, 16, 4, 86, 86, 86,250,210,132,151,161,220,215,175, 95, 95,248,237,183,223, 78,223,183,
-111,223,155,181,107,215,118, 30, 53,106, 20,246,239,223,143, 42, 85,170,224,217,179,103,152, 57,115, 38, 0, 52,154, 53,107,214,
-137,173, 91,183,186,134,133,133,173, 48,196,106,171,215,235,177,119,239, 94,116,237,218, 21,182,182,182,112,114,114, 2, 33,228,
-234,240,225,195,127, 7, 0,150,176, 34, 0, 80,171,212,106, 79,207, 58, 6, 91,108, 93, 93, 93,243,203,186,216,216,216,252,153,
-127,109,190,253, 54,113,203,210,165,248, 83,169,196,112, 75, 75,147, 72, 23, 23,199, 19,239,222,141, 32,132,108, 42,206, 34,156,
-103,197, 41, 77, 92,149,193,162,140,188,177, 77,246,246,246,152, 53,118, 9,150,252, 49, 11,111,113, 13, 85,250, 3, 47, 87, 1,
- 93, 93,199,161,142, 95,125, 56, 57, 57, 25,154, 69,174,126,255,253,247, 15, 3, 3, 3,235, 84,175, 94, 29, 11, 22, 44,232, 50,
-111,222,188, 11,132,144, 17,121,179,152, 9, 33,149, 88,150, 93,125,241,226,197,214,102,102,102,120,245,234, 21, 14, 30, 60,248,
- 22,121, 35,244,139, 8,103, 94,165, 47, 20, 10, 81,190,156,135,234,117, 88,166, 73,124,212,109,220,186,121, 12, 85,252,126,128,
-204,161, 19,172, 60, 23, 65, 27,180, 6,154,164, 11,176, 42,215, 17,145, 97,239,192, 10, 36, 1,255, 54,145,149,146,146, 66,173,
-173,173,121,142,227,206,115, 28, 55,147,227,184, 69, 2,129, 32,111,252,173,175, 94,175,255,226, 25,129,121,190,183,242,120, 41,
-165,114,129, 64,144,206,178,172,146, 16,242,183, 78, 55, 44,168, 69,254, 53, 22,172,143, 50, 52, 79,132, 85, 61, 60, 56, 17,131,
-237, 93, 59,117,202,126,250,244,105,126, 43, 79,245,224, 1,178,206,157, 3,199,113,160,148,226,198,245,235, 24, 56, 96, 64,166,
-144, 37, 91, 42, 85,170, 72, 9,253,203,247, 10, 33,228, 19, 63, 86, 34,145,168, 87,175, 94,189,242, 11,157,136,136, 8,200,229,
-114,136,197, 98,240, 60, 15,189, 94, 15,150,101, 97,110,110, 14,189, 94,175, 41,226, 99,107, 85, 40, 49,116, 92,114, 86,207,173,
- 29,250,199, 56,101,106,233, 72,139, 74,168, 32,146,229,127,148, 14,102, 4,157,253,132,176, 17,196,211,203, 43, 90, 71,243,234,
-164,158,133,215,254, 42, 42,156,133,206,123, 84,175, 94,253,247,129, 3, 7, 50, 0,208,170, 85, 43,166,122,245,234,191, 17, 66,
- 60, 74,184,167, 68, 78,169, 84, 42, 1,128,147, 39, 79, 38,191,121,243,166,221,201,147, 39,147, 11, 30, 55,144,115,211,178,101,
-203, 96, 98, 98, 2,189, 94, 15,141, 70,147, 63,254,170,224,175, 86,171,133,141,141, 13, 78,159, 62, 13,142,227, 78,151, 22, 78,
- 47,223,234,153,105, 2,139,184, 29, 39, 46,227,108,152, 54,179,172,226,170, 32,103, 21, 71, 69, 85, 7, 27,235,139,203, 23, 47,
-180, 77,121,251, 24,145,145,145,244,252,185,211,119,149,148, 70,165,166,211,217, 41,153,180,106,182,154,202,234,186, 34,252,226,
-198,169,116, 86, 19,232, 64, 62,237, 26, 46,200,233,227,168,168,234,108,107,125,126,229,138,165,166,169,193,143, 16, 19, 27,139,
- 51,167, 79, 62, 85, 82, 26, 69, 41, 61, 76, 41, 29,194,243,124, 53,158,231,171, 81, 74,135, 20, 39, 90,202,202,169,213,106,171,
-105,181,218,175,202, 89,214,112, 22,152, 65,136,249,243,231, 7, 71, 70, 70,142,138,139,139,235,145,183, 37, 39, 39,119,205,200,
-200,232,152,157,157,221, 94,185,170,162,121, 86, 86,150, 93, 70, 70,134,163, 82,169,172, 77, 41,125,108,104,254, 44,140,130, 21,
-108,116,116,244,188,232,232,104, 82, 98,254, 28,249,138,172, 95,241,253,238,131, 7, 15,218,127, 9,119,225,112, 38, 36, 36, 28,
-218,187,119,111,141,202,149, 43,187, 14, 25, 50, 4, 27, 54,108,192,218,181,107,213, 0,176,117,235, 86,117, 1,203, 85,185,208,
-208,208, 58, 69,117, 15, 22,228,100, 24,102, 87,155, 54,109,232,141, 27, 55,208,181,107,215,124, 7,160,155, 55,111,134, 94,175,
- 79,111,217,178, 37, 15, 0, 74, 85,118, 58,229, 41, 52,218,162,251,217,139,138, 79,177, 88,252, 77, 65,127,127,121, 78,148,197,
- 98, 49, 40,165,168,218,168, 81, 98,170,159, 95,242,182,180,180,236,121,213,170,153,141,240,244, 28,226, 5, 12, 40,138,147, 16,
-242,145, 21,167,240,246, 57,223,102, 30,242, 56, 92, 92, 92,176,112,242, 74,184, 60,232,129,171,141,173, 81, 35,105, 8,218, 54,
-238,140,170, 85,171, 26,204, 73, 41,165,241,241,241,163,230,204,153,195,139,197, 98,124,247,221,119, 56,114,228, 72,171,142, 29,
- 59,134, 57, 59, 59,135,249,248,248,196,142, 25, 51, 38, 36, 49, 49,177, 99,253,250,245,145,156,156,140,209,163, 71,107,147,147,
-147,123, 21, 28,199, 89, 56,156,121, 78, 49, 69, 34, 17,186,116,104,149,252,199,111, 43,249,150, 77,199,192, 68,102, 6,157,176,
- 28,146, 51,117, 72,201,162,208, 72,234, 65, 44,146,160,173,191, 15,238,157,223,145,205,105,178,118,126,110,158,255,220,248,252,
-255,193, 73, 41,165, 28,199,169,244,122,253, 86,158,231,103,231,245, 36,229,249,179, 42,108, 12, 45,107, 56,121,158,207,119,221,
-144,203,173, 16, 8, 4,199, 89,150,245,201,155, 72,245,119,188,251,191, 13, 31,185,105,200,251, 37,132,231, 56,142, 71,165,202,
-149, 76,195, 66,195,215,245,238,221,107, 88,251,246, 29, 76, 58,116,232, 32,245, 9,202,233,162, 56,121,242, 36,142, 28, 57,146,
-125,225,194,133,116,137,144,221, 90,174,124, 57,123,142,227, 65, 72,201, 22, 18, 83, 83,211, 9, 51,102,204,144,165,165,165, 97,
-237,218,181,124,141, 26, 53, 24,185, 92, 14,173, 86,139,173, 91,183,234,124,124,124,132, 12,195, 32, 45, 45, 13, 12,195,188, 54,
- 80,241, 62, 39,132,180,253,189,121,247, 35,117,198, 14,181,246,110,222,192,178, 89, 57,103,232,106, 81, 68, 71,132,226,205,229,
- 11, 41, 47,207,175, 78,130, 42,174, 59,165, 52,176,172,145,228,228,228, 52,247,194,133, 11,118,227,198,141,163, 42,149,138,132,
-135,135,211,197,139, 23,219,125,247,221,119,115, 81,138, 47,156,146,190,163,212,212, 84, 16, 66,248,220,204,154, 87,184, 24,108,
-126,165,148, 6, 16, 66,142,119,235,214,173, 75,203,150, 45, 17, 20, 20,148,223, 21, 88, 80, 96,229,205, 38, 92,178,100, 73, 42,
-240,151,131,192,226, 32,145, 72,176,249,208,185,179,209,145, 31, 76, 42, 85,114, 83,153, 91, 90,242,159, 99,185, 2, 0, 49,195,
-204,251,101,225, 28,187,196, 87,247, 72,192,221, 43,252,193,231,113,241,122,142, 22,237,161, 63, 35,154,230,170,254,146, 91, 47,
- 12, 59,111,217,146,133,230,121,221,151,251,158,196,164, 19,142,142,251,178,166,198,255, 8,231,255, 1,114,102,248, 69, 19, 39,
- 39, 39,154,215,133, 87,148,192, 42, 13, 69,117, 15,126, 46,247,251,247,239, 23,215,170, 85,107, 74,112,112,240, 65,111,111,239,
- 81, 0,202,171,213,234,212, 89,179,102, 45,223,186,117,235, 48, 67, 44, 87, 0,176,127,255,254,213, 67,135, 14, 61,215,169, 83,
-167,169, 60,207, 87, 47, 80, 33,189,183,179,179,203,247,200,149, 16, 23, 59,109,228,176,126,211, 50, 51, 83, 12,246, 83,167, 80,
- 40, 70,204,154, 53, 75,154,149,149,133,245,235,215,243, 62, 62, 62, 76, 94, 99,104,247,238,221,122, 15, 15, 15, 65,175, 49, 99,
- 18, 87,197,198,226,231,155, 55,179,166,249,250,214,216,246,230, 77,237,162, 44,236,121, 21,102, 81,150,171,188,225, 21,159, 81,
-145,127, 36,176,242, 68,214,220,137, 75, 17, 21, 21, 5,145, 72, 4,119,119,119, 20,215,221, 84, 66,185,244,140, 16,210, 47, 60,
- 60,124,231,250,245,235,197,245,235,215, 71,221,186,117, 33, 20, 10, 43,228,133, 87,163,209,224,249,243,231,152, 49, 99, 6,125,
-240,224,193,119, 37, 45, 80,207,113, 92,188,135,135, 71,126,247, 17, 33, 36, 41, 93, 77,204, 15,120,213, 83, 12, 25,121,144,220,
-122,120, 7,209, 90, 30,106, 29,143, 74,149,107,162, 89,187, 85, 56,113,246, 5, 23, 29, 22, 24,168, 83,166,108,249, 55, 86,220,
-201,201,201,212,206,206, 78,159,107,148,104,152, 55,164, 38,111,102,232,151, 90,176,114, 27,236, 33, 60,207,199, 49, 12,211, 48,
-215,247,150,153, 64, 32,184,204, 48,140, 13, 0,253,223,241, 94,133,181,200,191,166,139,240, 35,245,202, 50,183, 55,108,252,227,
-155,253,123,247, 57,176, 44,227,240, 46, 36,228, 97,231,238, 61,163, 46, 94,188,104, 37, 50, 55,175, 11,128,215,140, 26,117, 87,
-171, 86, 38,159, 58,126,188, 66,165, 74, 21,253,114, 23,123,166, 60,203,220, 46,233,129,153,153,153, 89, 55,111,222,204,158, 62,
-125, 58,137,136,136,216, 99,111,111,223,231,236,217,179,138,238,221,187, 43,131,130,130, 14, 59, 56, 56,116,105,222,188,185,233,
-148, 41, 83,212,153,153,153,235,202,144, 48,129,132, 16,175, 7,115, 86,124,251, 96,217, 31,173, 33, 96, 27, 66, 45, 4,120,221,
-109,104, 51, 46, 2,216, 67, 41,253,172, 76, 33,151,203,253,228,114, 57,158, 62,125,154, 82,175, 94, 61,141, 74,165, 18, 45, 90,
-180,200, 90, 46,151,251,125, 65, 70,162, 41, 41, 41,224,121, 94, 0,128,228,254,130, 47,251, 90, 57,125, 59,119,238,124,252,192,
-129, 3,109, 58,116,232, 0, 87, 87, 87,232,116, 58,120,120,120, 64,163,209,192,221,221, 29,106,181, 26,243,231,207, 71, 90, 90,
-218, 36, 67, 22, 17,150, 74,165, 16,139,197,168,234,229,155, 45,149, 74,241,185,226, 10, 0,228, 66,198,245,245,169,109,136, 79,
- 74,228, 15, 60,139,139,203,214,114,109,131,227,179, 94, 22,190, 46,155, 67, 86,243, 33,227,163, 0, 64,205, 35,179, 68, 78, 49,
- 92, 95,159,218,132,184,248, 68,236,127, 18,147,154,165,229,219,189, 46,130,179, 76,225,252, 31,225,236,181, 46, 8,205,190, 55,
-252,218,131, 35,191,172,128,248, 28, 33,149,135,192,247,148, 96,163, 23,197,198,117, 69,250,184,250, 18,238, 92,203,212,241,220,
- 74, 37,162, 95,191,126,211, 66, 67, 67, 23,230,250,187,218, 88, 22,174,109,219,182, 5, 3, 24, 90,210, 53,251, 86, 12, 61, 10,
-224,104, 89,120, 51, 50, 50, 84,143, 31, 63, 86, 77,153, 50,133, 68, 68, 68,156,117,112,112,104,115,238,220, 57,147,238,221,187,
-171, 3, 2, 2, 46, 59, 57, 57, 53,105,213,170,149,226,204,253,251, 81,217,239,222,157, 58, 21, 26,234,162,227,249, 83, 37, 9,
-162,175, 37,174,242,248, 10, 90,134,242, 68,150,147,147, 19, 42, 84,168,240, 69,223, 61,165,244, 0, 33,228, 85,163, 70,141,142,
- 12, 25, 50,164, 74,189,122,245,224,225,225,129,228,228,100, 68, 70, 70,226,214,173, 91,216,180,105,211,125,165, 82, 57,174,160,
-101,181, 40, 36, 37, 37,125,178,140, 16,145, 89, 59,237, 88, 63,239,228,195, 91,117, 61, 26,119, 24, 44,243,117,226,241,255,216,
-187,238,248,166,170,247,253,156,123,111,246,106,186, 7, 45, 45,171, 20, 1,129,150,189, 17, 20, 4,148, 33,227,167, 40, 75, 11,
-136, 95, 69,144,161,236, 45, 8,130,202, 16, 4, 4, 68, 16,112, 34,160, 50, 4, 89, 2,130, 34,101, 83, 40,208, 61,210,149, 54,
-205,186,247,252,254,104, 18, 67,233, 72, 74,193,130,121, 63,159,243,105,146,155, 62, 57,251, 60,231, 61,239,121, 95,147,153,226,
-206,173,235,152, 61,125, 93, 97,202,173,171, 23,204, 86,115,191, 71,221, 7, 86, 5,210,132,231,249,111, 45, 22, 75, 77,155, 54,
-182,202,124, 90,153, 76, 38,189,213,106, 29,198,113, 28, 47, 18,137, 54,177, 44, 91,207, 22,214,110, 30,165,148,123, 80, 4,235,
-177,212, 96,149,148,248,248, 59, 23,234,212, 9,123,239,155,175,119,182,163,148, 97, 41, 33, 5, 90,173,247,174,219,183,111,223,
-229, 5,187,174,143,143,122,196,107, 35, 6, 19,129,136, 8, 17,120,129,101,142,197,199,223,185, 80, 65,195,141, 26, 60,120,240,
-199, 10,133, 98,154, 78,167,251, 83,171,213,254,213,180,105,211,185,148,210,233, 6,131,225,123,181, 90,125,178,109,219,182,243,
-195,195,195,151, 83, 74,255,112,115, 80, 91, 81,108,255,181,169,138, 85,182,115, 0,120,113, 28,151,251,247,223,127,111,141,138,
-138,122,145, 82,234, 69, 8,201,173, 44,102, 81, 81,209,255,114,114,114,252, 98, 99, 99, 45,107,215,174,141, 26, 54,108,216,148,
-184,184, 56, 81, 81, 81, 81,188,155,101, 54, 18, 66,250, 12, 26, 52,104,157, 72, 36,234,202, 48, 12, 17, 4,129, 58, 61, 7,165,
- 20, 60,207,255, 80, 81,189,136, 68, 34,253,179,207, 62,171,170, 80, 43, 37,145,232, 93, 94,100, 76,252,184,213, 7,227, 22, 22,
- 89, 40,181, 10,116,212,229,180,130, 82,175,144,157,186, 76, 27,185,140, 89, 36,140,251,248,231, 11, 11,141, 22, 65,176, 10,116,
-116, 89,152,110, 45,134,143, 8, 38, 0,140, 97, 86,124,129, 53, 43, 28, 6,239,246, 99,195,146,239,171, 90,236,154, 38,184,227,
-101,217,230,142,225,194,168, 7,128, 93, 10,217,114, 87, 6, 12, 24,240,192,236, 73,204,102,243,212,231,159,127,126,174, 86,171,
-253, 32, 35, 35,227, 79,173, 86,123,161, 65,131, 6,227, 4, 65, 88, 94, 88, 88,184, 75,173, 86, 63,215,162, 69,139,241, 17, 17,
- 17, 27, 19, 40,221, 88, 30, 22,207,243, 73,118, 45, 14, 0,106,215, 62,217, 9,132, 51,145,176, 88, 44,137,174,228,143,231,249,
-164,166, 77,155, 18,103,109, 86,201,191,206,226, 42,110,137, 77,111,131,185,115,231,182, 5,240, 20,128,166, 0,242, 0,220, 2,
-112,130, 82,250, 83,165, 9,156, 33, 43,153, 16, 18,115,241,236,145,209, 87, 46,156,125,201,126, 91,144,101, 37,231,121,115,225,
- 38,139, 33,123,221, 99, 78,174,144,158,158,254, 39,128,240, 7,129,109, 52, 26, 95, 36,132, 92, 98, 89,150,138, 68,162,151, 88,
-150,253, 85, 16,132, 15, 76, 38,211, 22,190,186,184,124,127, 4,132, 60,200, 62, 72, 8,233, 86,213,241,138, 60,152, 30, 76, 15,
-166, 7,211,131,233,193,244, 96, 62, 56, 76, 95, 95, 95, 5, 0, 19, 33,132,178, 44,171,100, 24,198,155, 82,106,224,121, 62,215,
-106,181, 90,178,179,179,133, 7,145,207,255,132, 6,203, 35, 30,241,136, 71, 60,226, 17,143,252, 55,133,231,249,162,156,156, 28,
- 1, 0,124,124,124, 10, 8, 33, 38, 74, 41, 79, 41,229,179,179,179, 5, 79, 13,185, 72,108, 1,148,122, 19,192, 29,102, 90,153,
-219, 4, 21,225,123, 48, 61,152, 30, 76, 15,166, 7,211,131,233,193,124,252, 48,255, 51, 98,183,209,121, 16, 9, 64, 55, 15,166,
- 7,211,131,233,193,244, 96,122, 48, 61,152, 30,204,255, 90, 98, 60, 20,211, 35, 30,241,136, 71, 60,226, 17,143,120,164,106,197,
- 99,131,229,166,216, 98,202,189, 14, 96, 0,128,186, 0,174, 3,216, 9, 96,149, 27, 1,143,157,241, 52, 0,166, 0,104, 7,160,
- 54,128, 27, 0,142, 0,120,159, 82,170,247,212,120,233,226,239,239,255,158, 72, 36,210, 2,197, 78,241,236,127,157, 95,243, 60,
-159,147,155,155,187,224, 1,245, 3,150, 82,202,187,147, 87,231,188, 57,255,181, 88, 44, 15, 44,159, 30,169,182,243, 72,125, 31,
- 31,159, 45, 58,157,110, 8,165,244,138,167, 70, 60,242, 56, 73, 64, 64,192,104,179,217, 60, 77, 44, 22,207, 79, 79, 79, 95,253,
-159, 39, 88,132,144,195, 0, 64, 41,237, 4, 0,106,181,250, 56,195, 48,181,109,207, 0, 0, 78, 30, 92, 75,253, 43, 8,194,141,
-172,172,172,182,101,253,152, 66,161, 56,206,178,108,109, 66,136, 61,248, 44, 24,134,129,197, 98, 81,179, 44,155, 95, 6,102,162,
- 78,167,107, 94, 77, 38, 69, 2,224, 71,111,111,239,162,185,115,231,174,234,220,185,115, 88,114,114,178,117,210,164, 73, 29,255,
-250,235,175, 94,132,144,103,221, 33, 89,132,144, 54,132,144,141,205,154, 53,251,118,232,208,161,219, 91,181,106, 37,201,202,202,
- 82,239,220,185,179,198,166, 77,155,206, 16, 66,134,184,235,170,226, 17, 88, 88,184,178,252,145,149,247,172,164,136, 68, 34,109,
- 98, 98,162,218,214,103, 29,158,135, 45, 22, 11, 44, 22, 11, 10, 10, 10,208,180,105,211, 42,207,127,112,112,112, 52, 33,100, 69,
-100,100,100,243,144,144,144,211, 0,198, 38, 39, 39,255,229, 78, 94,173, 86, 43, 40,165,142,124, 54,108,216,208, 51, 35,187,215,
-135, 94,149, 72, 36, 61, 34, 35, 35, 91, 26,141,198,236, 27, 55,110,156,226,121,126, 6,165, 52,181,138,240,189, 0,204,144, 74,
-165,173,234,214,173, 27,118,245,234,213, 59,102,179,249, 36,128, 57,148,210,220,170, 32, 87,157, 58,117, 58,186,114,229, 74,223,
- 49, 99,198, 28, 37,132,180,247,144, 44,143,252, 91, 82,179,102, 77,109, 65, 65,193, 58, 0,209, 34,145, 40,200, 22,131, 48, 85,
- 42,149,254, 41,151,203, 71, 30, 61,122, 52,199, 93, 76,158,231,103, 36, 36, 36, 4,181,110,221,122,113,227,198,141,103,103,102,
-102, 22,153,205,230, 3,217,217,217,227, 41,165,121, 21,140,143,187,184,200, 35, 79,176,108,113,127, 58,223,245,128,227, 66, 19,
- 18, 18, 2,212,106, 53,120,158,119,104, 7,236,139,153,179,123, 7,155,159, 37, 52,104,208,192, 92,193, 66, 19,150,152,152, 24,
-160, 82,253,227,106,201,108, 54, 35, 40, 40, 72, 72, 74, 74, 10, 40, 25, 72,216,100, 50, 33, 52, 52,180, 58,249, 50,121,221,199,
-199, 39,247,246,237, 59, 77,139,140,230, 57,175,253,239,221,247,134, 12,120,218,251,248,241,227,194,179,207, 62,107, 60,124,248,
-240,235, 0, 92,114,142, 74, 8,241, 34,132,108,154, 52,105,210,108,153, 66,227,123,240,248, 5,227,166,157,187,147,154,213,175,
- 69,198,143, 31,207,190,249,230,155,191, 69, 71, 71,111, 33,132,196,184,163,201, 82,171,213, 63, 73,165,210, 8,150,101, 97, 54,
-155,111,235,116,186,103,170,209,194,216, 12,192, 89, 66, 72, 52,165,244, 79, 87,159,149, 39, 89, 89, 89, 48, 24, 12,247,164,134,
- 13, 27,162,170, 93,144, 16, 66,184,176,176,176,239, 23, 46, 92, 88, 35, 53, 37, 5, 31, 46, 91,214, 26,192, 42, 0,173, 93,249,
-255,244,244,244,123,242,217,160, 65, 3,120,196,173, 54,152, 50,123,246,236,133, 47,189,244, 18,120,158,135,193, 96, 8,185,118,
-237, 90,163,105,211,166,245, 35,132,180,164,148,198,223, 39,190,127,100,100,228,165,113,227,198,249,180,108,217, 18,182,168, 18,
- 33, 71,142, 28,105,189,126,253,250, 87, 8, 33, 13, 40,165, 25,247,243, 27, 62, 62, 62, 91, 62,251,236, 51, 95,133, 66,129, 31,
-126,248,193,183,107,215,174, 71, 8, 33, 29, 42, 75,178, 8, 33,140,175,175,239,155, 0,158, 18, 4, 65, 2,224,100,118,118,246,
- 60, 74,169,217,211, 99, 60, 82,158,248,249,249,189,154,159,159,191, 82, 42,149,138,189,189,189,161, 80, 40,236, 49, 8,107, 74,
-165,210,154, 82,169,180,231, 83, 79, 61, 53,246,224,193,131,229,122,196,111, 27, 29, 52, 28, 12,153,195, 18,134, 5,128,134,145,
-190, 26, 47, 47, 47,204,153, 51, 71,217,167, 79, 31, 37, 0, 28, 61,122,116,232,176, 97,195,186, 18, 66, 26,151, 69,178, 74,227,
- 34,143,133, 6,139, 82,122,184, 68, 65, 33,151,203,177,125,251,118,176, 44,123, 87, 20,247,210, 94,215,172, 89,179,194, 31,179,
-107,192,118,237,218, 5,141, 70, 3, 47, 47, 47,199, 2, 35,149, 74,113,224,192, 1,136, 68, 34,112, 28, 7,145, 72,132,230,205,
-155,163,156, 0,243, 15, 68, 6, 54, 42, 14, 50, 89,154,243,198, 14,117,229, 24,240,230,172,193,133, 69,230, 22, 0, 10,114,178,
-179,179, 79,127,243, 77,114,179,250,245,197, 91,182,108,105, 89,163, 70,141, 1,174, 18, 44, 0, 83, 98, 98, 98,190,102,229, 94,
-126, 67,135, 13, 31, 58,146, 99,204,175,140,122,103,254,157,148,204,130,216,216,216,111,126,248,225,135,161,139, 22, 45,186, 56,
-113,226,196, 41, 0,166,186,154,127,137, 68, 18,113,237,218,181, 72, 65, 16,240,228,147, 79, 86,155,112, 3,118, 2, 69, 41, 5,
- 33,228, 46, 34, 85,222,179,138,196,174,177, 42, 45, 85,181,212,168, 81,163,193,203, 47,191,236,167,203,204,196,135,203,150,217,
- 63,110, 94,209,113,161,253, 40,208,100, 50,225,133, 23, 94,120,153,231,121,206, 78,254,140, 70,163, 41, 55, 55,183,200,233,166,
- 78, 6,165,244,105, 23,234,179,182, 82,169,252, 0, 64,180,193, 96,168, 1, 0, 74,165, 50, 73, 16,132,111, 11, 10, 10,166, 82,
- 74, 13,149,108,167, 48, 0,141, 80,118,200, 38,186,112,225,194,171, 83,166, 76,137,127,216,152,132,144,136,192,192,192, 5, 3,
- 7, 14,196,238,221,187,177,103,207, 30,139, 92, 46,231,134, 13, 27, 70,198,142, 29,235, 61,110,220,184,158, 0, 62,186,207,102,
-238, 57,123,246,108,159, 39,158,120, 2, 59,119,238,196,185,115,231, 12,145,145,145,242,206,157, 59,131,227, 56,159,247,222,123,
-239, 89, 0, 27,239,231, 7,116, 58,221,188,119,222,121,103,211,214,173, 91,213, 55,110,220,192,138, 21, 43,252, 6, 15, 30,124,
-152, 16,210,201, 85,146, 69, 8,145, 2,120, 19, 64, 23,150,101, 59, 12, 27, 54,204,250,191,255,253, 79,196, 48,140,101,217,178,
-101,254,235,215,175, 31,236,231,231, 23,157,153,153,233, 49, 51, 40, 71, 88,150, 53, 11,130, 32, 2, 32,163,148, 26, 43,122,255,
- 56,149,221,215,215,119, 76,118,118,246,170,160,160, 32, 4, 6, 6,222,179,214, 26,141, 70,200,100, 50,113, 80, 80,208,103,125,
-251,246, 21,125,247,221,119,101, 30,245, 17,150,204,248, 97,219,220, 26, 62,222,106, 0,192,242, 79,127, 46, 4,128,239,190,251,
- 14,201,201,201,240,246,246, 70,227,198,141,217,185,115,231, 6,143, 31, 63,254, 67, 0, 35,203,194, 42,201, 69, 30, 11,130, 85,
-214,194, 96, 15, 36,106, 39, 82,118,242, 83,242,181,157,148,149,168,168,253, 37, 38, 5,162,215,235, 29,228, 74,163,209,192,182,
-168,194, 98,177,220,131,203,243, 60, 74, 70,213,118,229,250, 39, 33,100, 12,128, 3,148,210,235,174, 84,130, 51,230,142, 55, 26,
- 96,147,116,210,139,118,151,231, 61,223, 41,254,187, 9,192,241,155, 35, 87,172,236,212,169,198,155,211, 63,158,101,200, 74,206,
-124,239,229,231, 34, 34,131,124,229,202,156,244, 92,159,168,168,238,112, 10, 31,224, 66, 62, 59, 14, 29, 58,116,243, 47,191, 39,
- 16,153, 76, 44,230, 88, 86,212,254,201,250,190, 97, 94,172,151, 26,240,186, 19,127,245,248,240,225,195,159,156, 56,113, 98, 7,
-119,202,206, 48, 12, 52, 26, 13, 54,111,222, 12,198,206,104, 93, 44,123, 85, 73, 41,237,206,217, 9,148, 78,167,195,238,221,187,
-209,171, 87,175,179,132,144,104,219, 87,206, 82, 74,145,151,151,135,148,148, 20, 4, 7, 7,159, 37,132,136,156,143, 11, 75, 98,
-218,181,168,118, 50, 53,108,216,176,151,173, 86, 43,231, 52, 57,148, 36, 46,247,144, 23, 87,203, 30, 18, 18,242, 11,128,167, 89,
-150,133,169,168,200,244,193,210,165,206,143,255,112, 38, 87,101, 97,218,243,202,243, 60,119,246,236, 89,145,125,204, 0, 16, 1,
- 80, 2,240,179, 5, 85,253,219,133,250,108,160, 80, 40,142,239,218,181, 75,211,188,121,115, 34,145, 72, 96,181, 90,113,254,252,
-249,176, 69,139, 22,141,218,191,127,255,179,132,144,134, 37,131,154,187,216,238,141,142, 28, 57, 82, 80,167, 78,157, 82, 9, 99,
- 94, 94, 30, 87,191,126,253, 78, 0,226,255, 5,204,196,180,180,180,190, 79, 63,253,244,232,212,212,212, 75, 86,171,117, 50,128,
-198,126,126,126,103,251,247,239, 15,185, 92,222,197, 21,130, 85, 94,187, 7, 4, 4,244,105,219,182, 45, 86,172, 88,129, 69,139,
- 22,117,163,148, 30, 32,132,116,205,203,203,219,255,252,243,207, 67,171,213,246, 45,141, 96,185,218,151, 8, 33,245, 59,118,236,
-248,217,156, 57,115,212,187,119,239, 70,100,100, 36,242,243,243, 49, 97,194,132,128,153, 51,103, 30, 34,132,116,182,147,172,178,
- 48, 9, 33, 13,165, 82,233,198,173, 91,183,170,234,212,169, 83, 71, 44, 22, 51,117,234,212,129, 78,167, 67, 81, 81,145,116,254,
-252,249, 79,202,229,242,191, 62,250,232,163,141, 0,250, 63,236,241, 94, 34,175,185, 0, 52, 0,180,238, 28,175,150, 83,246, 92,
- 0, 82,199,224, 17,137, 32,147,201, 32,147,201, 32,149, 74,113,245,234,213,233, 18,137,100, 25, 74, 9,229, 82, 26, 38,249,103,
-209,106, 74, 8, 57,197,178,108,185,239, 75,154,128, 60,236,250,180,229, 57,148, 16,178, 28, 64,151,226, 41,159, 57,236,231,231,
-247, 86,106,106,234, 45, 87, 49, 67, 66, 66,124,245,122,253, 71,193,193,193, 8, 12, 12,116,172, 29, 53,106,212,128,197, 98, 65,
- 90, 90, 26, 40,165,200,201,201,129, 66,161, 64, 72, 72,200, 71,163, 70,141,218,185,102,205,154,172, 82, 49, 5, 44,122,126,240,
-180, 25, 44,203, 50, 0,192,114, 42,213,184,119,129,136,136, 8,180,111,223, 30, 69, 69, 69,200,205,205, 69,163, 70,141, 56, 66,
-200, 80,134, 97, 52,148,210,213,148,210,131,143, 51,129,183, 47, 72,179, 75,158,123, 18, 66, 32, 8, 2, 56,142,187,139, 96,149,
- 76,118, 50,100,235,167,164, 34, 85,182,201,100,114,144, 43, 47, 47, 47, 7, 57,179, 90,173,101, 17,172,202, 48,243, 38,130, 32,
-212, 38,132,172,113,149,100,149,148,161, 67,135,222, 99,207, 49,126,252,248,196,244,244,116,250, 66,247,166,202, 75,123,147, 83,
-234,122,171,228,254,106,117, 45,153,183,143, 54, 43, 43,235, 4, 0,173, 27, 63, 81, 47, 38, 38, 70,190,233,155, 35,137,175,189,
-189,112,110,243, 58,190,154, 38,161,126,222, 65, 94,114,137,138, 33, 5, 50,171, 37,209,199,199, 39,178, 18, 59, 50, 0,128, 86,
-171, 5,199,113,213, 66,131, 69, 41,181, 18, 66,162, 9, 33,103,119,239,222,141, 86,173, 90, 57, 72,150,157,124,228,230,230,226,
-252,249,243,232,216,177, 35, 0, 68,187, 98,139, 37, 8, 2,204,102, 51,204,102,179,131,184,136,197,226,123,136,139,253,187, 44,
-203,254, 93,201, 34,204,245,246,246,238,216,165, 75, 23,201,182,237,219, 37,148,210, 2, 20, 7,164,214, 83, 90, 70,224,234, 18,
- 98,181, 90, 29, 90, 53,145, 72,132,219,183,111, 59,180,192,118, 77,112,201, 35,242,178, 68, 42,149,190,243,213, 87, 95,105, 90,
-182,108, 73,178,178,178, 32, 8,130, 99,114, 92,181,106,149,108,192,128, 1, 53,206,156, 57,243, 30, 42, 17,118, 6, 0, 41,139,
- 8, 1,128, 70,163,177, 2,110,223, 62, 46, 21,211,106,181,146,118,237,218, 77,204,204,204,124,210, 96, 48,204,119,165, 31, 1,
-248,193,150,236,115,202, 95,151, 46, 93, 50, 12, 26, 52, 72, 94,171, 86,173, 86,247,219, 87,235,215,175,223, 70, 36, 18,225,228,
-201,147, 70, 0,246,157,244,225,115,231,206, 25,251,247,239, 47, 13, 11, 11,107,227,134,230,174,126,131, 6, 13,246, 5, 4, 4,
-200,237, 26,203,129, 3, 7,138,214,174, 93,171, 78, 74, 74,130,217,108,198,148, 41, 83,208,187,119,111,248,249,249, 97,252,248,
-241,129,139, 23, 47,222, 2, 32,166, 28, 76,153, 68, 34,217,124,237,218,181,200,224,224, 96,249,239,191,255,142, 38, 77,154, 32,
- 51, 51, 19,169,169,169,208,235,245, 72, 77, 77,197,200,145, 35, 3, 62,252,240,195,144,106,180,214,228,136,197, 98, 40, 20, 10,
-109, 78, 78, 78,238,125,224, 72, 1, 72,156,201,149, 84, 42,133, 84, 42,133, 76, 38,131, 32, 8,143, 69,144,224,114,218,191, 6,
- 33,228,130, 88, 44,150, 42, 20, 10, 49,195, 48,144, 74,165,221,125,124,124,226,158,121,230,153,198,191,252,242, 75,130, 43, 56,
- 69, 69, 69,155,165, 82,169, 40, 32, 32, 0, 0, 16, 25, 25,137, 38, 77,154,160,160,160, 64,200,205,205,133, 86,171,101,110,221,
-186, 5,131,193,128,148,148, 20,132,135,135,139, 24,134,217, 12,224,217,210,240,142,157, 73,249, 20,192,167,246,247,254,254,254,
-105, 0,228,246,247, 50,153, 12, 53,106,212, 64, 82, 82, 18,212,106, 53, 59,115,230,204,254,219,183,111,239, 71, 8, 25, 74, 41,
-253,194, 9,106,246, 99,103,131, 69, 41,157, 69, 8,233, 84,218, 2,102, 59,143, 45, 83,115,101, 79,174, 16, 33,123, 32,202,192,
-192, 64, 40, 20, 10, 40, 20, 10, 71,192, 81,158,231,239,193,183,237,232,221, 46,148, 82,169,196, 75, 47,189, 68, 87,175, 94, 61,
-218, 70,178,174,185,250,191, 3, 87, 92,114,104,173, 74, 74,195,134, 13,143,191,247,222,123,125,126,253,245,215,164,230,117,106,
-113,202,228, 91,122,153, 70,171, 69,104,205, 94,195,250,246, 63,135,226,219,132,174,202,181,252,252,124,121,221, 80,133,137, 97,
-138, 72, 77, 41,167, 14, 86,138,165, 65,222,222, 53,196, 38, 99,186,198,219, 91, 98, 52, 26,115, 0,148, 27,156, 89,163,209,252,
- 44,149, 74,195, 89,150, 5,203,178,240,243,243,243,162,148, 66,171,213, 34, 52, 52, 84, 21, 21, 21,117,133,227, 56, 48, 12, 3,
-189, 94,127,235,230,205,155,221, 43,202,152,183,183,247,207, 82,169, 52,220, 30, 60,148,101, 89,199,133, 4,251,107,150,101, 65,
- 8, 65, 97, 97,161, 75,152,148,210, 63, 9, 33,209,189,122,245,114,144,172,189,123,247,162, 71,143, 30,200,201,201, 65, 92, 92,
-156, 51,185,114,233,120,208,217,168,157, 82, 10,177, 88,140,203,151, 47,223,117,116,109, 79,106,181,186,210,131,196,199,199,231,
-232,192,129, 3,241,217,103,159, 81, 91,148,119, 37, 33,164,137,151,151,215,229, 11, 23, 46,184,100,231, 66, 41,133,217,252,207,
- 87,237,125,220,121,124,185, 65,162,187,199,196,196,144,220,220, 92, 59,113,116,108,132, 88,150,197,202,149, 43,229, 45, 91,182,
-156, 38,147,201, 38,138,197,226, 60,139,197,178,173,168,168,104, 62,165, 52,167, 58, 77, 62, 29, 58,116,120,251,206,157, 59,189,
-195,195,195,119,221, 7,121,167, 45, 90,180, 48, 1,144,179, 44, 43,170,130, 5,140,181,245,173, 34, 59,201,167,148, 90, 99, 98,
- 98,138,108,139,187,203, 17,144,253,252,252,182,236,217,179, 39, 52, 60, 60, 28, 22,139, 5, 86,171, 21,122,189, 30,135, 15, 31,
-134,209,104,132,213,106, 69,100,100, 36,102,204,152, 81,244,214, 91,111,201,214,172, 89,147,174,215,235,135, 84, 0,251,214,206,
-157, 59,149,193,193,193,114,131,193,128,248,248,120,196,196,196, 32, 63, 63, 31, 5, 5, 5, 40, 44, 44,132,217,108, 70, 94, 94,
-158,150,231,121, 83,181, 89,104, 56, 14, 82,169, 20, 98,177, 56, 39, 60, 60, 28,132, 16, 89, 66, 66, 66,101,142,220, 52, 0,242,
- 68, 34,145,196,153, 88, 73,165, 82,156, 60,121,114,170, 76, 38,251, 16,110, 4, 34, 46, 25,175,176,162,247,213,128, 96, 45, 23,
-139,197, 82, 31, 31, 31,177,211, 58, 45, 86,169, 84, 8, 8, 8, 88, 1,160,167,139,229,110,230,227,227,227,152,223,155, 54,109,
-138, 59,119,238,124,155,155,155,251, 74,122,122, 58, 24,134,217,204, 48, 76, 63, 59, 15,200,206,206, 70, 88, 88, 88,179,178,240,
-218,197, 4,143, 6,161, 14, 13, 86,195,122, 62,170, 18,235, 20, 52, 26, 13,110,222,188,137,130,130, 2,122,245,234, 85, 50,102,
-204, 24, 98, 50,153, 62, 39,132,156,160,148,222, 40,143,139, 60,234, 26,172, 82,207, 61,237, 71,132,165, 17,170,146,132,203, 21,
- 34,100, 50,153, 84, 49, 49, 49,130,125,225,182, 39, 0,164, 44,130,101,211, 20,184, 45, 34,145, 72, 61,102,204,152,252,213,171,
- 87,143, 34,132,172,165,148, 94,173,108, 37,237,250,122,107,224,162, 25, 83,102,248,132,212,170, 59,113,226,116,238,185,231,158,
-251,125,211,166, 77,188,207, 19, 61,187, 30,252,249,139,192,143, 38, 76,218,187,103,207, 30,160,216,224,217, 85, 57,250,227,143,
- 63, 6,141,127,115, 44,102,188,243,214, 79,154, 72, 63,137,138,248, 40,101,198,130, 12, 21,168, 65, 90,175, 65,239,111,118,237,
- 74, 1, 80,110,164,121,185, 92, 30,126,245,234,213, 72,103, 2, 97, 54,155,161,213,106,177,105,211, 38,127,181, 90,237,175, 82,
-169,192,113, 28,154, 52,105,226,170,134, 36,252,202,149, 43,145,106,181, 26,133,133,133, 48, 26,141,176, 88, 44, 16, 4, 1,132,
- 16,136, 68, 34, 72, 36, 18, 40,149, 74,183,110,234, 57,147,172,189,123,247,162, 81,163, 70,200,206,206,198,165, 75,151,220, 38,
- 87,206, 90, 33,103,123, 43,142,227,176,165, 78, 29,188,150,156,236, 32, 46,203,189,188, 48, 67,168, 92,116,135, 39,159,124,146,
- 30, 59,118, 12, 63,253,244, 19,158,127,254,121,242,253,247,223,155,121,158, 23, 39, 37, 37,185,172, 13, 19, 4,193,145, 87,251,
-124,237, 76,172,220, 37, 88, 86,171, 85, 45,145, 72, 80, 84, 84,228, 56,194,119, 78,181,107,215,134, 78,167,227,242,242,242,184,
-228,228,100,197,188,121,243,254,119,232,208,161, 96, 0, 47,254,155,147,205,234,213,171,195, 95,123,237,181,219, 28,199,209, 30,
- 61,122,188,124,235,214,173,190,193,193,193, 7,126,253,245,215,165, 0,234,187,139,231,239,239,255, 7,199,113,161, 42,149, 74,
-188, 99,199, 14, 75,126,126,190, 56, 32, 32, 32,205, 78,104,237,117,109,177, 88, 18,115,115,115,155,187,130,231,239,239, 47,254,
-228,147, 79, 44, 89, 89, 89,226,160,160,160, 52, 59,142, 82,169, 20,239,216,177,195,146,151,151, 39,214,106,181,127,228,228,228,
- 84,136,151,153,153, 57,100,232,208,161, 71, 14, 28, 56,224,199,178, 44,110,221,186,133,172,172, 44,104,181, 90,108,222,188, 25,
-225,225,225,216,185,115,167, 78,167,211,189,250,193, 7, 31, 76,211,235,245,174,184,108,232,216,170, 85,171,240,156,156, 28,104,
-181, 90, 20, 20, 20,224,143, 63,254, 64,195,134, 13,145,156,156, 12,134, 97,160,213,106,177,106,213,170, 66, 66,136,174, 58, 44,
- 50, 44,203, 58,180, 76, 78,164,168,168, 77,155, 54, 56,120,240,224,100,119, 72, 17,165,212, 36, 18,137,238, 34, 86,246,215, 98,
-177,216,234,110,222,120,158, 23,219,108, 64,137, 43,239,171,129,116,146,203,229,226,146, 31, 22, 22, 22,138,131,131,131, 59,184,
- 65,120,125,229,242, 98, 5, 83,120,120, 56,114,115,115,121,147,201, 52,120,243,230,205, 22, 0,136,137,137, 25,204,243,124,145,
-213,106,101, 37, 18, 9, 10, 10, 10, 16, 16, 16,224, 91, 38, 32,131,201, 63,108,155, 23, 84,210, 6, 43, 56, 56, 24,209,209,209,
- 48, 26,141, 72, 73, 73,193,225,195,135, 45, 60,207,127,185,122,245,106,193,223,223,127,196, 11, 47,188,192,158, 57,115,230, 13,
- 0,111,151,199, 69, 30,105,130,101, 99,140,135, 0,116,182, 23,206,249,136,176, 60,205, 85, 9, 13, 22,169, 96,160,229, 36, 38,
- 38, 42,149, 74,165,227, 51,139,197,130,144,144, 16, 65, 16, 4, 82,242,119,236,249,168,172,136, 68, 34,245,187,239,190,155,179,
-106,213,170, 87,224,162,161,248,142, 55, 26, 96, 83, 9,114,245,233,162, 57, 43, 62, 89, 60,207,231,250,222,207,177,238,227, 37,
- 60,207,227,204,147, 79, 62,217, 65,175,215,115, 94, 74, 11, 50,115,176, 23,197,126,176, 92, 34,131, 54, 95, 90, 27, 78,157, 58,
-117,166,103,207,158,199, 54,124,245,141, 79,114,124,252, 9,105, 94,102,138,166, 94, 36, 39,174, 17,222, 47,191,168, 72, 60,120,
-240, 96,127, 0, 47,148,135,197, 48, 12,226,227,227,145,144,144, 0,149, 74, 5,181, 90, 13,149, 74, 5,141, 70, 3,181, 90, 13,
-181, 90,237,118, 29, 50, 12, 3,158,231,241,245,215, 95, 67,161, 80, 64,169, 84,222,149,236,228,234,126,218,166, 71,143, 30,208,
-233,116, 80,169, 84,142, 99, 77,119,196,110,131,101, 50,153, 96, 50,153, 96, 54,155,121, 0, 34,142,227, 48, 50, 49,209,161,213,
-113,135,184,148,148, 38, 77,154,208, 19, 39, 78,224,216,177, 99, 40, 40, 40,192, 39,159,124,130,224,224,224,167, 0, 76,119, 99,
-199, 89, 39, 40, 40,168,199, 51,207, 60, 19, 98,177, 88,160,215,235,153,191,255,254, 27, 50,153, 12, 44,203, 34, 49, 49, 17, 91,
-183,110,197,205,155, 55,237,218,195, 80, 66, 72, 45, 74,233,205,242, 22, 5,142,227, 28,187, 79,123,114,214, 98,177, 44,139,192,
-192, 64, 4, 5, 5,225,211, 79, 63, 21,215,170, 85,171,247,191, 57,209, 44, 94,188,184,222,242,229,203,215,111,218,180,105,239,
-144, 33, 67,182,159, 63,127,126,184,151,151,215,223, 7, 15, 30,156, 39,149, 74,133, 74,142,239,208,228,228,228, 0,231,143, 4,
- 65, 80, 88,173, 86, 7,161, 45, 44, 44, 68,227,198,141, 93,198,187,112,225,130, 2, 0,230,205,155, 39, 2,160,176,187,255,176,
- 99, 22, 22, 22,138, 26, 54,108, 24,234, 34, 25,184, 66, 8,233,208,173, 91,183,227,251,246,237,243, 14, 15, 15, 71, 82, 82, 18,
-146,146,146, 80,175, 94, 61, 44, 88,176,160, 32, 47, 47,175,157,141, 84,125,239, 98,177, 67,188,189,189, 69,183,111,223,134,213,
-106, 69,179,102,205,176,106,213, 42, 12, 30, 60, 24,141, 27, 55, 70, 94, 94, 30, 46, 92,184,128,141, 27, 55,122,139,197,226, 23,
-254,237, 5,198,118,132, 85,102,170,140, 88,173, 86,141, 76, 38,203,147, 74,165, 18,187,253,213,225,195,135,221,214, 94, 57,111,
-252,220,121, 95, 29,200,106, 73,145, 72, 36, 8, 10, 10,114, 25, 71, 42,149, 18,251,220,104,181, 90,145,155,155,203, 7, 7, 7,
- 59,142,241,207,158, 61,203, 71, 68, 68,240, 44,203,178, 18,137, 4,132, 16, 40, 20,138, 50, 39,124,202,211, 57,207, 13,158,238,
-184, 69,200,136,148,154,113,239, 22,111,246,207,158, 61, 11,179,217,140,195,135, 15, 91, 62,248,224,131,228,156,156,156,113, 0,
-184,159,127,254,121,232,164, 73,147,216,128,128,128,110, 78,243,229, 61, 92,228,113,208, 96, 29,162,148, 18,155, 65, 57,177, 19,
- 27, 74,233, 61,164,170, 44,194,101,211, 96,145,138, 6, 27,203,178,248,233,167,159, 28, 68,192,126,139,144, 82,138,170, 38, 88,
-190,190,190, 5,173, 90,181,210,220,185,115,103,107,101, 53, 87,159, 46,154,179,226,253,121,179,124,178, 46,158, 64, 98,114, 10,
-116,233,150, 51, 71,255,190,249, 45,128,111, 1, 0,107,158, 56,132, 81, 23, 87,186,138,249,132,191,162,233,147, 33,234,111,159,
-238,217, 59,108, 80,236,219,204,235,175,191,222,126,232,208,161,185, 67,134, 12,121, 83,165, 82,213, 55,155,205,217,223,236,222,
-157, 48,104,208,160, 90, 60,207, 15,173,200,103,136,197, 98,185,213,191,127,127, 71,221, 6, 5, 5,105,182,109,219, 22,168, 86,
-171,241,242,203, 47,103, 36, 36, 36, 56,142,133,242,243,243,111,185,146, 71,179,217,124,171,105,211,166,101, 30, 11,218, 53,144,
-238, 96,218,218,210,113, 91, 48, 43, 43, 11,151, 47, 95, 6,199,113,104,221,186, 53,142, 30, 61,138,246,237,219,187,117,131,176,
-168,168, 8,225,225,225, 40, 42, 42, 66, 65, 65, 65, 33, 0,233,230, 90,181, 0, 0,111,100,101,225,143, 15, 62,192,239, 11, 23,
- 86,170, 31, 53,109,218,148,158, 60,121, 18,127,255,253, 55,140, 70, 35, 94,125,245, 85,216,142, 7, 1,224, 25, 23,203,219,184,
- 65,131, 6,251, 15, 30, 60,232,175, 86,171,161,215,235,161,215,235, 49, 98,196, 8,140, 30, 61, 26, 22,139, 5,171, 87,175,198,
-119,223,125, 7,141, 70, 3,189, 94,143,130,130, 2,239, 94,189,122, 29, 39,132,116, 44,235,104,155, 82, 74,110,222,188,137,247,
-223,127, 31,130, 32, 96,210,164, 73,136,140,140,116, 16,171, 91,183,110, 97,222,188,121,224,121, 30, 51,103,206, 68,189,122,245,
- 96,177, 88,100,238,248, 25,171,106, 25, 63,126,252,245,111,191,253,118,239,157, 59,119,158, 93,180,104, 81, 39, 66,136, 48,113,
-226,196,247, 53, 26, 13,127, 63,184,217,185,249,184,124,237,150,131, 0,149, 76,254,126, 62,110,227, 93,141,191,227,248,127,158,
-119,198,227,225,235,227,237,110, 22, 11, 45, 22, 75, 65,191,126,253,180, 95,127,253, 53,169, 87,175, 30,110,220,184, 97,223,148,
- 22, 86,194, 53, 67,146, 78,167,139,100, 89, 86,124,237,218, 53, 68, 68, 68,160, 85,171, 86,152, 63,127, 62, 50, 51, 51, 97,181,
- 90, 17, 16, 16, 32, 88, 44,150,179, 38,147,233,183,127,123,129,113,214, 50, 57,167, 95,127,253,117,178, 76, 38,163, 0, 78, 2,
-112,139, 96, 83, 74, 77, 53,107,214,188, 11,187, 50,218,171, 7, 72,130, 30,216,205,196,224,224,224,195,106,181,186,119,118,118,
-246, 93, 90,172,118,237,218,153, 3, 3, 3,143,184,138,163, 82,169,178, 89,150,245, 5,128,164,164, 36, 40,149, 74,113,124,124,
-252, 66, 66,200, 20, 0,168, 85,171,214, 66,157, 78, 39,174,101,155, 79,131,130,130, 96, 50,153,202, 52, 87, 57,126, 54,245,115,
- 0,159, 59,173,189, 41,185,185,185,242, 37, 75,150,232, 23, 46, 92,104,224,121,222, 8,224, 96, 78, 78,142,195, 15, 86, 68, 68,
- 68,174, 72, 36,242,209,106,181, 53,156,160,238,225, 34,143, 3,193,186,231,182,158, 51,233,113,133,100,185,162,133, 32,132,192,
- 96, 48,220,165, 13,177,223, 34, 44,141, 96,217, 22,242, 74, 29, 17,218,200,149,124,219,182,109, 95,126,252,241,199,199, 92,253,
- 63,103, 27,172, 53, 75,231, 46,178,147,171,115, 71,247,225,251, 75,185,153,147, 22, 46, 91, 94,217,202,110,232,175,108, 18, 20,
-232,119,232,131,133,115, 53,215,247,126,142,237,107, 62,164,231, 78,159,110,121,250,244,233, 87,198,142, 29, 91,211,214,161,116,
- 0,254, 2, 48,200,149, 91, 55, 25, 25, 25,119,217, 63, 69, 70, 70, 94,209,106,181,129, 50,153, 12,241,241,241,250,184,184, 56,
-183,143, 94, 74, 98, 86,133,148, 36, 87,113,113,113,232,210,165, 11, 0,224,232,209,163,104,215,174,157, 91, 36,203, 98,177,228,
- 60,241,196, 19, 14,109, 86,110,110,174, 0, 0,177, 41, 41, 88, 27, 28, 12,142,227,240,251,194,133,152,106,177, 96,190,200, 61,
-211,156,102,205,154,209,211,167, 79, 35, 33, 33, 1, 86,171, 21,125,250,244,113, 38, 87, 46, 75, 80, 80,208, 59, 7, 15, 30,244,
- 95,187,118,173,113,203,150, 45, 70, 65, 16,152,102,205,154,169,163,163,163,177,124,121,113, 55, 26, 52,104, 16, 38, 77,154,132,
-184,184, 56, 40, 20, 10,116,232,208,129,159, 53,107, 86,192,184,113,227,222, 64,241, 53,252,210, 22, 24,218,189,123,119, 28, 57,
-114, 4, 44,203,162,101,203,150,200,202,114, 92,238, 65, 96, 96, 96,105,207, 88,219,120,255, 87, 22, 34,142,227,232,225,195,135,
- 23,117,234,212, 9,119,238,220,121, 54, 38, 38,230,147,225,195,135, 39,221, 47,174,183,151, 26, 77, 27,214,129,209,104,132,209,
-104, 68, 72, 72, 8,242,243,243,113,253,250,117, 24,141, 70, 4, 6,104,221,198,139,110, 92,207,129, 23, 16, 16,128,130,130, 2,
-220,188,121, 19, 38,147, 9,126,126,222,238,244,249,176,238,221,187,255,250,229,151, 95,250,110,220,184,209,212,185,115,103,201,
- 39,159,124, 66, 52, 26, 13,210,211,211, 43, 91,228,195, 71,143, 30, 13,239,214,173, 91,212,197,139, 23,113,248,240, 97,152, 76,
- 38, 68, 71, 71,227,234,213,171,104,211,166, 13,244,122,253,201,211,167, 79,255, 80, 29, 22, 24,251,241,157, 61, 29, 57,114,100,
-170, 70,163,177, 0, 88,118, 63,125,241,246,237,219,210, 38, 77,154, 24,101, 50,153,196, 70,214, 62,252,183,250,118, 41,237,126,
- 95, 55, 19, 43,152, 83,198,249,249,249,117,171, 93,187, 54,210,210,210,196, 18,137, 4,237,218,181, 51,183,104,209,194, 28, 20,
- 20,244,134, 27,237,114, 81, 44, 22,119, 44,222, 68,240,184,125,251, 54, 40,165,147, 26, 55,110,252, 86,126,126, 62,178,178,178,
- 36, 26,141,198,177,153,142,138,138,130,209,104,188,232, 6,201,156, 19, 17, 17, 49, 77, 44, 22,207,207,200,200, 88, 93, 74, 29,
- 73,154, 54,109,170, 17,139,197, 48,155,205,198, 18,207,170,149,221, 91,149, 16, 44, 39,214, 88, 82,109, 94,225,241,160,171, 54,
- 88,132, 16,152, 76, 38, 40,149, 74,199,209,147,179,231,246,210, 8, 86,101, 36, 44, 44, 12,173, 90,181,146,111,223,190,125,203,
-146, 37, 75,142, 87, 6, 99,231,151, 95, 4,123, 9,133, 97,201, 39,247,224,242,185, 63,240,237,133,156,204, 73, 11,151,189,249,
-220, 11, 47,166,149, 36,100, 59, 70, 85,140, 87, 63, 64,217,184, 70,160,239,161, 15, 63,120, 95,147,117,241, 4, 82, 82, 83,177,
-231,228,233, 51, 38, 74, 47, 0,152, 84, 85, 13,234,124, 27,173,186,116, 84,103, 55, 13,153,153,153,184,112,225,130,157, 92, 69,
- 3, 64,251,246,237,207,218, 73,214,153, 51,103, 16, 19, 19,115,143,155,134,123, 52, 13,217,217, 11, 74,252, 70, 55, 0,126,118,
-162,207,113, 28,218, 77,155,230, 54,185, 34,132, 80,158,231,161,211,233,236, 59,195, 74,145, 43, 27, 86,187,194,194, 66,108,217,
-178, 37,243,218,181,107, 97,181,107,215, 30,247,249,231,159, 47, 83, 40, 20,119,171, 56, 10, 11,209,173, 91, 55,140, 25, 51, 6,
- 51,102,204, 16,134, 15, 31,206, 50, 12, 83,102, 4,123,158,231,197,181,106,213, 58, 0,224,169,139, 23, 47, 2,192,113, 74,105,
- 59,251,243,242,158,185, 32, 66,126,126,190, 72,173, 86,151,234,226, 65, 92,124, 77,211,221, 35, 61, 7,230,177, 99,199,222, 95,
-186,116,233,183, 19, 38, 76,184,118,159,152,165,106,176,122,247,238,141, 34,163, 5,137,105,185,224,121, 43, 12,230,116,183,241,
-156, 53, 88,189,123,247,134,161,200,132,219, 41, 58, 88,173, 60,242, 13, 86, 87,219, 94,241,244,211, 79,255,188,109,219,182,160,
- 19, 39, 78,128,231,121,225,234,213,171, 55,251,245,235,167,153, 56,113,162,175,147,141,169,187,242,241,139, 47,190, 56,224,216,
-177, 99,186,168,168, 40,159,147, 39, 79, 34, 61, 61, 29, 86,171, 21, 79, 61,245, 20, 36, 18,201,237,133, 11, 23,138, 1,124, 92,
- 93, 8,150, 84, 42,197, 31,127,252, 81, 37,196,202, 89, 36, 18, 73,165,143, 25, 31, 85, 57,121,242,100,210,216,177, 99, 27,106,
- 52,154,229, 29, 58,116,232,226,235,235,203,120,123,123, 31,174, 81,163,198, 91, 77,154, 52,113,249, 52, 65, 36, 18, 13, 87, 42,
-149,215,173, 86, 43,107,211,156, 3, 0,172, 86,171,132, 97, 24,212,170, 85,203,161, 52,105,217,178, 37,130,130,130,248, 75,151,
- 46, 13,119, 21, 63, 61, 61,253,174, 91,133,165,200,168,118,237,218,113, 70,163, 17, 9, 9, 9, 71, 75,106,232, 31, 23,146, 85,
-166,129, 10,195, 48,160,148, 66,214,188, 57, 82,246,237,195,215, 95,127, 93, 46,208,154, 53,107, 80, 82,165, 71, 8,233,230,236,
- 43,195,126, 91,240,181,215, 94,115,124,231,204,153, 51, 14, 99,247, 62,125,250,220,133,121,234,212,169,123, 72, 86, 73,204, 50,
- 26,247,226,142, 29, 59, 78, 47, 94,188,248,164,139,147,161, 3,211,110,131, 53,224,165,151, 83, 86,188, 63,227,252,198, 31, 14,
- 52, 78, 49,208,148, 73, 11,151, 77, 40, 73,174, 92,197,124, 34, 72,245, 68,104,128,239,225,165, 31,188,239,101,215,134,109, 59,
-155,154, 11, 43, 29,229, 78, 99,185, 82,118,103, 77, 34, 33, 68,168, 10,204, 74, 16,139,187, 48,157,221, 52,164,164,164, 56,200,
-149,147,163,209,232,246,237,219,159,181,145, 43,251, 51,107,101,242,201,113, 28, 38,232,245,224, 56, 14,157,103,207,198, 83,115,
-231,186, 93,118,158,231,193,113, 28, 34, 35, 35,221, 38, 87,206,152,148,210, 99,231,207,159,143, 24, 54,108,152, 58, 50, 50, 50,
-158, 16, 34, 26, 49, 98,132, 16, 28, 28,204,252,254,251,239,160,148,162,125,251,246, 72, 75, 75,131, 32, 8,216,188,121, 51,134,
- 13, 27, 70,254,250,235, 47, 42, 8,194,254,242,242,153,144,144, 48,170,107,215,174,107,138,138,138,184,172,172,172, 81,174, 62,
-171,168,236, 59,118,236,184, 22, 25, 25,217, 9,101,187, 98, 16, 0,156,184, 31, 76,155,246, 46,234,126, 48,203,210, 96,125,245,
-213, 87, 16, 4, 1, 97, 65, 90, 24,141, 70,148, 36,179, 21, 97,150,212, 96,109,223,190, 29,130, 32,160,102,176, 15, 76, 38, 19,
-236,134,193, 21, 97,250,250,250,126,184,105,211,166,208, 75,151, 46, 33, 49, 49, 17,203,150, 45,187,149,147,147,211, 51, 39, 39,
- 71, 58,107,214,172, 67, 47,189,244, 82,160, 32, 8, 70,119,199, 38,165,212, 72, 8, 25,222,182,109,219,205,243,230,205,187,209,
-160, 65,131,154,237,218,181,211,102,101,101,101,252,249,231,159, 55,215,172, 89,163,178, 90,173,195,203, 58,122,122, 24,227,221,
- 89,146,146,146,102,219,214, 25,183,136,149, 43,249, 60,117,234,212,187, 54,236, 83,174, 96, 63,172,178,223,239,205,196,138,242,
-185,114,229,202, 68,148,240,111,230,110, 62, 79,157, 58,149,208,173, 91,183,185,129,129,129,179,100, 50, 25, 50, 50,138,131, 19,
-216, 53,141,246,245,186,121,243,230,232,222,189, 59,174, 92,185, 50,119,218,180,105, 9,247, 83,159,182,141,118, 29, 0,175,116,
-237,218,117,226,128, 1, 3,176,114,229, 74, 80, 74,215, 63,174,132,216,238,166,129, 56,255, 5, 0,139,197,114,231,250,245,235,
-193,245,178,179,217, 16, 66,208,178,101, 75, 56,199, 16,180,219,229,216, 13,229,126,251,237, 55,171, 32, 8,229,250,156,226,121,
-254,206,177, 99,199, 2,247,237,219, 39,178, 55,164,205, 88, 83, 72, 78, 78,102, 14, 29, 58,228,208,134,113, 28,135,195,135, 15,
- 91,205,102,243,109,119, 11,117,229,202,149, 42,217,189,253, 22,151,240,214,207,123,190,243,107,221,170, 67,142,198,199,167,212,
- 1,108,247,248, 94,110,199,226,152,249,139, 23,206,213,218,201,213, 87,103, 83,115,138,140,124,151,139, 25,133,231,170,186, 65,
-243,243,243, 19,236,183, 5,245,122,253,237,234,210,209,236, 55, 8,131,131,131,207,162,196,109, 65,251,179,152,152,152,123,158,
-185,165, 38, 17, 4,120,121,121, 57, 38, 7,119,237,174, 8, 33,212,126,100, 93,114, 60, 84, 70, 82, 83, 83,151, 76,155, 54,237,
-153, 5, 11, 22,248,239,221,187, 87, 99,195, 68,255,254,253,211,207,159, 63,223, 1,128,180,160,160, 96,255,130, 5, 11,252,157,
-226, 17,114,189,122,245, 74, 75, 75, 75, 91, 81, 65,125,222, 0,208,213,221,103, 21,201,128, 1, 3,226, 81,138,195,207,251,145,
- 7,129,105, 23, 93, 78, 30,226, 19,146,108,177, 40, 5,240,183,210, 28,118, 83, 22,139, 21,186,188, 44,183, 53, 88,215,111, 38,
-217, 66,131,241,224,249,100, 27, 94,177,161, 59,205, 46,116, 69, 59,208,126,249,242,229, 61, 25,134, 97,126,255,253,119,227,226,
-197,139,239,100,100,100,244,161,148,222,182,245,179,206, 27, 55,110,220,226,130, 75,134,178,218,254, 2, 33,164,205,228,201,147,
-223, 4,208, 30, 64, 77, 0,183, 1, 28, 5,240,113, 53,243, 56,190,236, 17,197,174,180, 60, 42, 55, 19,247,239,223, 63,187,111,
-223,190, 92,120,120,248,123,225,225,225, 76,118,118, 54,244,122, 61, 24,134, 65, 80, 80, 16, 26, 53,106,132,160,160, 32,225,226,
-197,139, 11, 38, 79,158, 92,161, 79,189,134, 13, 27,214,177, 88, 44,117, 25,134,169, 3,160, 14,165,180, 14, 33,164, 14, 0, 31,
-155, 38, 76, 19, 17, 17,193,181,110,221, 26,173, 90,181,194,161, 67,135,176,115,231,206,207, 41,165, 63, 59,107,175,170, 98,238,
-173,246, 26,172,236,236,236,238, 61,123,246,220,199,178,108,173,210, 22,172, 82,130, 50, 39,164,165,165, 61, 91,238,228,149,157,
-221,253,173,183,222,218,199,178,108, 45,187,102,202,106,181, 26,117, 58,221,235,157, 59,119, 94, 37, 18,137,164,206,184,130, 32,
-220, 74, 75, 75,123,168,177,244, 74,250,193,234,222,179,111,230,253, 98,170,196, 76,221,203, 63,174, 69, 90,122, 38,190, 58,155,
-154,157,111,226, 59, 95,201, 40, 56,255, 32,242,159,144,144,208,163,186,118, 54, 27,145, 42,245,232,175,188,103, 46, 74,134, 11,
-142, 68, 51, 42,200, 31,177,145, 44, 82, 69,229, 61, 79, 8,105, 59,118,236,216,233, 10,133,162, 37, 0, 20, 22, 22,254,158,156,
-156, 60,215,126, 75,176,162,231, 30, 41, 91, 44, 22, 75, 98,163, 39,162,236,117,125,151,107, 6,231,215, 86,171, 53,209, 29,188,
-210,112,156,223,243, 60,159, 88,129, 22,121, 66,171, 86,173,216, 9, 19, 38,164,237,221,187,215, 30,224,182,208,169, 95, 92, 65,
- 57,206, 68, 93,236, 91, 70, 0,139,109,201, 35,213,112,174,115,231,253,191, 37,223,125,247,221,244,193,131, 7,111,244,241,241,
-249,162, 78,157, 58, 81,129,129,129, 26,185, 92, 14,163,209,152,111, 50,153, 46, 95,185,114,101,200,180,105,211,110,184,130,181,
-113,227, 70, 22,128, 88, 16, 4, 25,195, 48, 74, 0, 26, 66,136,183,157, 96, 17, 66, 96, 54,155,145,144,144,128,169, 83,167,242,
- 7, 14, 28,248, 0,192, 76, 55,178,219, 2,128,191,211, 60,238, 15,192,132, 98,199,179, 25, 0, 78, 63, 50, 4,203,230,173,186,
- 77, 21,119,186,242, 48,195,171, 75,165, 12, 53, 46,222,138, 53,139,239,138, 67,104, 39, 95,165,190,175,224,160, 47,215, 96, 29,
-251,241,207,113, 75,140, 86, 42,152,173,194,136, 43,233, 5, 23,254,195, 19,143,181, 50,207, 92,192,125,186,138,242, 71,170,184,
-188,241, 0,134, 86,246,185, 71,202, 97,203, 25, 25,205,171, 35,158,201,100,122,171,109,219,182, 31,241, 60,191,212, 98,177, 28,
-245,180,148, 71,170,179,124,245,213, 87, 55,236,235,242,192,129, 3, 89, 0,216,177, 99,135,219,183,123,135, 13, 27,198,219, 2,
-140, 23, 1, 40, 0,144,135, 98, 71,217, 4, 0, 10, 10, 10,178,147,147,147, 47,242, 60,127, 17,192,150, 74,220,160,245, 39,132,
-252, 72, 41,237,109, 35,108, 63, 82, 74,123, 59,127,246,200, 16,172,255,170,236,136,251,103,129, 45, 73,156, 42,122, 95,150, 92,
- 78,213, 31,190,223, 29,171, 71, 60,226,145, 71,102, 19,113, 27, 64, 31, 79, 77,120,228,145, 91,255, 42, 65,172,236,114,225,194,
-133, 7,102, 10,240,168, 10,227,169, 2,143,120,196, 35, 30,241,136, 71, 60,226,145,170, 21, 2,160, 91, 25,187, 48,119,110, 7,
-116,171,196, 46,111,191, 7,211,131,233,193,244, 96,122, 48, 61,152, 30,204,255, 22,102, 37,165, 87, 5, 71,132,187,171, 29,195,
-114, 54,226,172,234, 4,160,155, 7,211,131,233,193,244, 96,122, 48, 61,152, 30, 76, 15,230,125,166, 46, 83,166, 76,121, 23,197,
-241,137,233,148, 41, 83,222,165,148,246, 42,166, 49,180,215, 67,206,139, 75,201, 99,131,229, 17,143,120,196, 35, 30,241,136, 71,
-170,187, 28, 95,184,112, 97,225,194,133, 11,237, 6,237, 25, 0,136, 77,123,149, 81, 29, 51,252,175, 17, 44, 66, 72, 8,195,137,
- 95, 22,137,165, 93, 64,133, 70, 0, 0,134,141,227, 77, 69,191, 90,173,230, 47, 40,165,201, 46, 96,148,122,227, 43, 10,120, 34,
- 82, 43,255,222,200,243,226,219,249,166,129,151,139, 29,209,149,166,189, 43,215,225,219, 64, 66,218,201, 36,146, 95, 36, 90,109,
-169,222, 5, 77, 57, 57,134, 34,147,233,153, 29,148, 30,243,244,125,143,120,196, 35, 30,241,200,163, 32,132, 16,165,183,183,247,
- 1,134, 97,194,157, 62, 67,105,175, 1,128,231,249, 20,157, 78,247, 12,165, 52,243, 97, 98,150, 92,114, 81,198, 90, 94, 93,133,
-179, 21,220, 78, 52, 42,140, 96,221, 32, 88,213, 33,170, 78,248,151,201,169,105,103,243,138, 76, 35, 47, 39,229,235,220,254, 81,
-177,236, 53,173, 95,208,252,255, 27,254,150,111,100,253, 40, 18, 22, 86, 3,160,192,237, 59,137,129,215,175, 93,237,186,125,211,
-199,227,197, 50,217, 84,115, 81,209,103,238, 98, 71, 2,202, 8,149,244,200,103, 83, 94,210,114,176,226,197,121, 95,238, 21,244,
-230,154, 87,139,175,141,186, 44, 3, 9,105,231,237,227,243,243,226,125,251,228,234,102,205, 74, 18, 51, 8,130, 0,253,217,179,
-242, 41, 61,122,252, 60,144,144,238, 30,146,245, 88, 78, 66, 65, 26,141,102,156, 72, 36,234,108, 54,155,195, 37, 18,201, 29,158,
-231, 15,103,103,103, 47,167,148, 38,121,106,200, 35, 30,169,112, 12,149, 25, 96,252,223, 12, 62, 14, 0,106,181,250, 15,134, 97,
- 66,157, 23,127,187,127,198,146,126, 30,157,252, 61,222,200,202,202,106, 91, 78,121,235,248,248,248,172, 2,208,162, 34, 71,199,
-182,253,253,105,157, 78,247,186,205, 93, 75,105,120,106,111,111,239,217,132,144,129, 12,195, 84, 24,240, 87, 16, 4,158, 82,186,
- 35, 59, 59,123, 38,165, 52,191,172,239,121,123,123,239,191,116,233, 82,139,128,128,128, 10,221,210, 88,173, 86,220,190,125,219,
-191,101,203,150,191, 1,104,240, 32, 49,221,225, 34,143, 12,193,178, 53,182, 75, 17,172, 5, 1, 47,111,152,255,122,141,148, 91,
-215,106,140, 90,176,181,126, 3, 63, 69,231, 75,153,133,169,174,254,160, 68,174,254,161,253, 83,189,187,140,121,115,130,242,207,
-243,151,241,203,161, 19,200, 43, 48,130,101, 24,104,213, 10,212,175, 95,151, 44, 91,251,181,223,231,159, 46, 91, 42, 87,105,123,
- 25,244, 57,207,187, 83, 32, 47, 5,247,222,164,126, 45,149,190, 62, 60, 32,240,120,167,103, 83,229,123, 63,158,125, 15,133,214,
-247,220, 38, 87,251,247, 43,210,211,210,240,129,175, 47, 56,139, 5, 50, 66, 32, 39, 4, 50, 0, 42,169, 20, 29,190,252, 18,243,
-119,239, 86, 76,237,213,203, 67,178, 30, 51, 81,171,213,195,235,215,175,191,120,221,186,117,190,181,107,215,134, 82,169,132, 78,
-167,243,187,114,229, 74,179,183,223,126,123,168,151,151,215,180,220,220,220, 53,158,154,242,136, 71,202, 36, 27,205, 0,148, 26,
-188,189,188,103, 15, 75, 24,134, 9, 77, 74, 74, 10, 80, 40, 20,224,121,222,230,189, 95,112,108,160,157, 15, 56,108, 14,102,209,
-160, 65, 3,115, 5,243,198,202,244,244,244,110,206, 33,203,202, 59, 40, 73, 74, 74,234,214,176, 97,195,149, 0,158, 41,131,180,
-204,126,243,205, 55,199, 53,110,220,216,174,245,177, 69, 45, 40,254,155,153,153,137,177, 99,199, 58,126, 67, 16, 4,236,219,183,
-239,205,225,195,135, 3,192,219,229,148, 61, 60, 32, 32,128,140, 26, 85,190,175,161, 89,179,102, 97,214,172, 89,248,248,227,143,
-137, 72, 36,210, 86, 80,159, 85,130,233, 42, 23,121,164, 8,150,203,157,146, 10,123,230, 45, 95, 55,114,206,176,246,100,195,219,
-221, 34, 71,127,188,255, 68,195, 16,121,199, 11,201,134, 59, 46,104,174, 70,180,238,248,108,231,177,227, 38, 41,183,126,119, 16,
- 87, 46,158,195,165,163,219,238,250, 78,243,103,134, 35, 53, 51, 31,195,199,188,163, 34, 44,215, 89, 44, 83,140, 48, 23, 21,110,
-112, 37,111, 81, 64, 96,184, 84,242,191, 54,173, 26,137, 80, 51, 17,160, 64,251,152,122,162,176,159,255,254, 95, 62,172, 31, 95,
- 6, 42,140, 37, 88,146, 92,109,125,225, 5,244, 48, 24, 16,136, 98,159, 22,246, 84, 8,224,114,223,190,104,240,237,183,152,253,
-253,247,138,153,125,250,184, 77,178, 20, 10,197,231, 6,131, 97, 81, 37, 28,174,253,155,147,102,125,181, 90, 61, 53, 47, 47,239,
-229,106,148,167, 96, 0, 25,165,196, 47, 20, 3,208, 82, 74,221,138,248, 43,147,201, 94,123,241,197, 23,151,173, 88,177, 66,145,
-150,150,134,228,228,100,240, 60, 15,153, 76,134,200,200, 72,178,127,255,126,223, 73,147, 38, 45,209,104, 52,210,188,188,188,143,
-220,200, 39, 35, 18,137,134,249,248,248,244, 13, 12, 12, 12,200,200,200,200,200,206,206,222,101, 52, 26, 55, 84,118, 39,111,195,
- 28, 18, 17, 17,209, 55, 36, 36, 36, 48, 41, 41, 41, 51, 49, 49,241, 7,163,209,248, 57,165, 84,184,207, 58,109, 2,192,215,246,
- 81, 74, 68, 68, 68,220,205,155, 55,211,171, 16, 51, 57, 34, 34,226,130,187,152,132, 16, 37,128,237, 0, 66, 42,248,106, 50,128,
- 65, 54, 7,199, 30,249, 23,200,149, 45,244,212, 93, 68,170,188,103, 15, 91,228,114, 57,182,109,219, 6,145, 72, 4,145, 72,132,
-236,236,108,132,134,134, 58,222,139,197, 98,199,235,154, 53,107, 86,136,199,243,124, 75,150,101,161,215,235,193,243,188, 35,229,
-228,228,128, 82, 10,169, 84, 10,158, 47, 14,187,228,244,188,101, 57,245, 56, 48, 36, 36, 4, 91,183,110,133,201,100,186,231,185,
- 70,163,193,249,243,255, 4, 5, 97, 89, 22,173, 90,181, 98, 8, 33, 3,203, 35, 88,118, 77, 81,108,108, 44, 88,150,117,132,190,
-179,191,182, 39,158,231, 49,107,214, 44, 56,135, 16,123,152,152,143,252, 56,176, 21,146,150, 22, 38,164, 65,144,234,245,238, 93,
- 90,127, 32,151,138,229,130,213, 2,222,106, 6,111, 49,129, 35, 60,158,105, 18,140, 54,181, 21,200,208,229, 97,212,154, 83,121,
- 73, 73,198, 86,231,179,242,175,148, 83,249, 33,106,109,192, 95,159,110,254,206,239,151, 19,151, 16,119,238, 44,206,238, 93, 85,
-234,119,187,189, 56, 5, 13,155,180,192,147,245,130, 48,113,244,128,204,172,244,228,166,165,217,100,149,180,193,106,171, 22,111,
- 94, 49,164,203,139, 77,154,105, 25,116,178,173, 87,251,173, 56,115, 34,149,127,235,135, 63,183,158,200, 55, 15, 45,193,148,239,
-217, 90, 12,149, 74, 11, 63, 57,113, 66,158,158,158,142,173, 47,188,128, 24,131, 1,153, 34, 17,158,176, 88, 28, 36, 43, 7, 64,
- 22,199, 33,200,106, 69,145, 70,131,160,175,191, 6,207, 48,152,210,163,135, 97,179,201,164,112,181,242, 85, 42, 85, 6,203,178,
-124, 94, 94, 94,231, 71,129,100,217,200,213, 33, 66,136, 56, 55, 55,215,167, 26,228,135, 1, 48,103,228,200,145, 35,142, 28, 57,
-114,253,250,245,235,221,108,158,132, 65, 8,225,234,214,173,123,176, 67,135, 14,117,214,175, 95,255, 25,128, 57,174, 16, 14, 66,
- 72,141,218,181,107,255, 25, 23, 23,231,119,245,234, 85,232,245,122,136, 68, 34, 12, 25, 50, 4, 95,127,253, 53,196, 98, 49,164,
- 82, 41,196, 98, 49, 58,118,236,152,121,243,230,205, 22,148,210, 91, 46,224,178, 94, 94, 94,159,175, 90,181,170, 94,159, 62,125,
- 56,163,209, 8,158,231,177, 99,199, 14,203,204,153, 51, 19,178,178,178, 94,113,151,100, 17, 66,152,224,224,224, 13,159,125,246,
- 89,253,167,158,122,138, 51, 24, 12, 16, 4, 1,187,119,239,182,188,247,222,123, 55, 82, 82, 82,134, 82, 74,249, 74,212,107, 51,
-133, 66,209,240,245,215, 95,207,232,211,167,143, 25, 0, 78,159, 62,205,156, 59,119, 78, 83,187,118,237, 91,211,167, 79, 63, 91,
- 9,204, 24,181, 90, 29, 53,106,212,168,204,222,189,123, 91,196, 98,177,112,236,216, 49,238,202,149, 43,154,136,136,136,248,247,
-222,123,239,156, 27, 88,123,142, 31, 63,222, 41, 52, 52, 84,176, 77,234,212, 62,193, 51, 12, 67,109,127,113,249,242,101,174, 83,
-167, 78,135, 40,165,207,195, 35, 15,115, 92,114, 0, 44,148, 82,232,116, 58,156, 60,121, 18,189,122,245, 2,128,104,219, 87,206,
- 82, 74,145,151,151, 7,131,193,128,224,224, 96, 0, 16, 61,236,227, 66,173, 86,155,150,145,145, 17,240,253,247,223, 67, 36, 18,
- 97,223,190,125, 88,189,122, 53,182,109,219, 86, 42,201, 10, 14, 14, 70,100,100,100, 98,114,114,114, 88, 57,115,122,174, 94,175,
-215,228,230,230,130,231,121,156, 60,121, 18,235,214,173, 67, 64, 64, 0,252,252,252,224,239,239,143,150, 45, 91, 66,169, 84, 58,
- 72, 86,135, 14, 29,242,244,122,189, 87,105,120,190,190,190,201, 19, 38, 76, 8, 62,115,230, 12, 44, 22, 75,169, 4,107,220,184,
-113,206, 90, 36, 40, 20, 10,180,105,211, 38, 37, 43, 43,171,204, 13,136,191,191,127, 74, 70, 70, 70,208,185,115,231,238, 34, 63,
-165, 17, 34,150,101,161, 86,171, 81,171, 86,173,180,148,148,148,160, 7,137, 89, 22, 23,121,228, 53, 88,182,137,170,243, 93, 26,
-161,136,160,169,139,199, 13,148,131, 55,131, 90, 12,128,185, 16, 48,235, 33,152, 10, 65,196,114,192, 98,128,191, 84,135,237, 99,
-162, 52,147,183,198, 95,124,194, 95,211,235, 98, 70,222, 79,165,106,190, 56,241,144,129,195,222,244, 77, 76,207, 67, 82, 90, 46,
- 88,230, 31, 31,167,209,221,134,129, 99, 25,156,250,185, 88, 81,197,176, 44,114, 11,140,200,209,155, 49, 96,216, 56,159,207,150,
-205, 24, 2, 96, 81,121, 5,105, 4, 68, 54, 82,169,250, 53,110, 20,206,160, 94, 10, 72,157, 93,197, 36,234,200,115,104,150, 29,
-192, 54,248, 69,210, 79,159,111, 94, 16, 7, 92, 45, 15, 71,162,213,202,213,205,154, 97,177,175, 47,122, 26, 12,184,206,113,120,
- 81,167,195,111,227,198,129,219,176, 1, 28, 0,227,136, 17,104,183,124, 57,206,251,248, 32, 36, 47, 15,230, 17, 35, 32, 57,115,
- 6, 98, 47, 47,185, 59,149, 47, 22,139,205,235,214,173, 11,121,245,213, 87, 15, 17, 66,170, 53,201, 34,132,212,247,241,241, 57,
-244,254,251,239, 7, 78,159, 62, 61,165,138, 48, 3,149, 74,229,142,130,130,130,113,238,238, 96,109,228,106,222,154, 53,107, 70,
-199,198,198,106, 95,125,245, 85,122,253,250,117, 45, 0,187, 54,196,191, 67,135, 14,117,215,173, 91, 23,212,162, 69,139, 55, 71,
-141, 26, 37, 38,132, 76,171,136,100,169, 84,170, 49,235,214,173,243,203,204,204,116,144, 43,145, 72,132,196,196, 68,200,229,114,
- 71,176,115,145, 72,132,247,223,127,223,119,204,152, 49,227, 0,140,171, 40,191, 82,169,116,216,170, 85,171,234,117,239,222,157,
- 75, 72, 72, 0,195, 48,144, 74,165,120,233,165,151, 68,133,133,133,225,115,230,204,137, 5,176,202,157, 58, 16,137, 68, 67,214,
-174, 93, 91,191, 93,187,118,220,165, 75,151,208,166, 77, 27,156, 58,117, 10, 47,188,240,130, 40, 63, 63,191,214,164, 73,147, 70,
- 2, 88,235,174,150, 73,161, 80, 52,254,245,215, 95,239,132,133,133, 57, 54, 32,181,106,213,226,123,245,234,165,187,116,233, 82,
-212,137, 19, 39,178,218,180,105,115,219, 13,204, 26, 10,133,162,193,158, 61,123, 82,230,204,153,211,117,205,154, 53,125, 0,160,
-101,203,150, 63,204,157, 59,247,160, 78,167,107,116,228,200, 17, 93,135, 14, 29, 18, 93,132, 12, 9, 14, 14,230,199,142, 29,171,
- 42,239, 75,235,215,175,207, 1, 80,147, 16, 82,219, 22, 0,219, 35, 15, 65, 40,165, 86, 66, 72, 52, 33,228,236,238,221,187,209,
-170, 85, 43,236,222,189, 27,189,122,245, 58,107,123,142,220,220, 92,156, 63,127, 30, 29, 59,118, 4,138, 3,188,255, 43,182, 88,
- 60,207,131,227, 56, 36, 38, 38, 98,253,250,245, 88,176, 96, 1, 34, 35, 35, 97,177, 88, 28, 99,159,227, 56,136, 68, 34,187,182,
-197,165, 69,223,106,181,226,244,233,211,248, 98,243,102, 76,155, 58, 21,106,181, 26, 0, 96, 54,155,161,203,206,134, 76, 38,115,
-104,176, 42,168,203, 29,215,174, 93, 27, 23, 26, 26,122,215,209,160,253,175,109,206,130, 32, 8,176, 90,173, 40, 42, 42,194,178,
-101,203,172,148,210, 29, 21,140, 73,135,198,107,220,184,113, 48, 26,255,137, 15,222,164, 73, 19, 0, 64, 68, 68, 4,154, 54,109,
-234,120,207, 48, 12,117, 21,243,179,182,141, 97,112,250,118,212,172, 37, 0,128,208,208, 80, 68, 69, 69,217, 73,117,169,152,165,
-113,145, 71,154, 96,149,197, 20, 47,222, 76, 93,244,234,164, 37, 75,148, 50, 86,244, 86,223, 39, 81, 83, 43, 6,228, 62, 16,119,
-156, 12,162, 13, 47,238, 0,186, 27,192, 47,147,177,180,159,142,137,221, 82,244, 93, 93, 31, 31,255,235, 58,221, 61,198,117, 34,
-177,172, 75,157,122,245,201,237, 20, 29, 56,142,131,210,203, 15,109,251,190, 13,150,101,160,210,250,129,240,134,127,212,156, 12,
- 11,142,229,160,203, 55, 32,162,118, 61, 70, 42,147,119,169,136, 96,121,121,137, 86, 78, 28,220, 86,198,200, 50,129, 16,137,211,
- 84, 44, 1,227,155,143, 9, 61, 34,229,177, 63,252,189, 18,185,150,174, 46, 85,140, 93, 99,101,181,226,183,113,227,208,117,237,
- 90,252, 14, 64, 4, 32,102,237, 90, 92,142,141, 69,128,197, 2, 41, 0,214,104,132,181,196,153,189,139, 11, 15,250,246,237,139,
-204,204,204,192,169, 83,167, 86,154,100,201,229,242, 47, 8, 33, 61, 69, 34,145,153, 16, 2,134, 97, 28,193,185,237,175,205,102,
-179,152,101,217, 61,153,153,153,110, 31,237, 17, 66,234,123,123,123, 31, 58,126,252,120,160, 82,169,196,172, 89,179,170,132, 92,
-169,213,234,223, 71,142, 28, 89,243,139, 47,190,248,137, 16,210,195, 85,146, 85,146, 92,173, 93,187, 54,103,253,250,245,159, 57,
- 31, 5, 82, 74, 83, 8, 33, 27, 90,180,104,241,122,108,108,172, 22,192,232, 81,163, 70,161, 34,146, 37,149, 74, 59,215,169, 83,
- 7, 58,157,206, 49,193, 74,165, 82, 0,128, 82,169,132,151,151, 23,196, 98, 49,140, 70, 35,162,163,163,137, 68, 34,105,239, 74,
-158,213,106,117,207,126,253,250,113,199,142, 29, 67,106,106, 42,188,188,188,160, 84, 42,193,243, 60, 94,123,237, 53,241,242,229,
-203,159,117,151, 96,133,133,133,245,233,218,181, 43, 23, 23, 23,135,155, 55,111,194,104, 52,226,202,149, 43,208,104, 52,120,229,
-149, 87,196,139, 23, 47,126,206, 93,130, 5,160,113,108,108,108,154, 51,185,178,139, 82,169, 36,245,235,215,215,249,250,250,198,
- 0,184,237, 14,230, 27,111,188,145,190,112,225,194,142,251,247,239,159,108,255,112,255,254,253,147, 0,224,163,143, 62, 58,226,
-239,239, 31, 3,192, 85,130, 5, 74,169,240,127,255,247,127,183, 36, 18, 9, 68, 34, 17, 36, 18,201, 93, 73, 44, 22,131, 97, 24,
-181,125, 74,121,140,181, 69, 45, 0,124,136,226, 27, 86, 83, 41,165, 39,171, 9,201,250,147, 16, 18,221,171, 87, 47, 7,201,218,
-187,119, 47,122,244,232,129,156,156, 28,196,197,197, 57,147,171,127,203, 6, 11,130, 32, 64, 36, 18, 97,201,146, 37, 48,155,205,
-216,178,101, 11,118,238,220,121,215, 28,170,209,104,240,241,199, 31,187,117,156,197,243, 60, 54,110,220,136,201,147, 38, 57,200,
-149,109, 83,141,160,192, 64,248,250,249, 33, 62, 62,190, 66,130,149,157,157, 61,115,215,174, 93, 40,207,200,125,215,174, 93,142,
-215,206, 70,238,174,228,147,101, 89, 24,141, 70, 60,253,244, 63,161, 92,223,120,227, 13,199,107,157, 78, 7,150,101,237,117, 65,
- 92,197, 52, 80,160,175,236,159,207,122, 78,152,224,120,157,153,153, 89, 38,230,227,160,181, 42, 85,131, 85,154, 92, 77, 47, 88,
-193,145,148,166, 11,199, 62, 51,172,102,128, 23,168, 62, 13,226,167,102,226,175, 12, 57,150, 44,219, 3, 0,120,231,165,230,104,
-210,109, 30, 76,159, 63,131,113,109, 88,201,203,137,198,137, 0,166,223, 59,224,132, 6,161, 53, 66,240,215,245,243,224, 88, 22,
- 18, 47, 63,120,249, 4, 66,176,154,144,155,126, 19,135,190, 89, 9, 0, 88,179,113, 7, 24,134, 1,199,177, 48,154,120, 68,214,
- 12,129, 32, 8, 13,202,203,231, 19, 64,219,206,129,126,173, 34, 34,124, 8, 26,230,224,158, 8, 64,205,164,136, 76, 86,145, 54,
- 42,121,203,236,220,188,182, 23,129,227, 21, 85,140,204,134, 18, 12, 64,188, 97, 3,126, 7,208,122,109,241, 90,117, 37, 54, 22,
-170, 13, 27,160,180,125, 71, 74, 8,242,120,190, 82, 3, 28, 0,162,162,162,176,102,205,154,192, 49, 99,198, 84,138,100, 21, 21,
- 21,205,215,104, 52, 93, 55,108,216, 16,216,175, 95,191,123,158, 95,191,126, 29, 29, 59,118, 76, 75, 77, 77,157,127, 63,228, 74,
-171,213,226,206,157, 59,247,125,110,110, 39, 87,251,246,237, 11, 15, 13, 13, 69,116,116,180,255, 59,239,188,227, 14,201,154,238,
- 76,174, 70,141, 26,245, 55,128, 0, 66, 72, 73,130, 66,108,207,158,116, 34, 89,185, 0, 22,151,179,243, 12, 87, 42,149, 72, 79,
- 79,199,176, 97,195,112,245,234, 63, 10,207,144,144, 16,199,206, 46, 62, 62, 30,254,254,254, 32,132, 4,184, 82,102,127,127,255,
- 64,147,201,132, 17, 35, 70,224,206,157,127,204, 21,107,212,168, 97,175, 83, 63,119,235, 49, 48, 48, 48,208, 96, 48,160, 67,135,
- 14, 40, 42, 42, 2, 0, 12, 26, 52, 8, 34,145, 8,233,233,233, 16,137, 68,126,149,104, 30,191, 94,189,122,149,233, 34, 69,163,
-209,152,189,189,189,159,112, 19,211,247,185,231,158, 75, 90,187,118,237, 61, 71,117,167, 78,157,122,222,199,199,103,191,143,143,
- 79,125, 55, 49, 5,103, 50, 37, 22,139,239, 34, 88, 34,145, 8, 12,195, 8,120,252,229, 3, 0,246, 91,109,171, 1, 52,173, 70,
-154, 44, 7,201,218,187,119, 47, 26, 53,106,132,236,236,108, 92,186,116,233, 95, 39, 87, 78,132, 4, 28,199, 57, 54,199, 50,153,
- 12,209,209,209, 14,114, 69, 8, 65, 97, 97, 33, 56,142,179,207,215, 46, 77,126, 57, 57, 57, 8, 14, 10,130, 90,173, 70,189,200,
- 72, 92,179,205, 35,246,215, 82,169, 20,132, 16, 88,173,214,138,234, 48, 31,197,182, 84,111, 87,117,243,216,201, 80,185,170,226,
-144, 16, 8,130, 96,159,243,105, 85, 96,250,249,249, 65,175,215,187,138,249,232, 19, 44, 66, 72, 39, 0,135,224,116, 53,146, 16,
-194, 60, 17,168, 90,191,112, 76,215, 97,207, 52,242,131, 33,227, 38,100,106, 63, 16,109, 4,150, 44,219,131,184, 27, 89, 0,128,
- 37, 95,254,129,173,115,122, 2,114, 31, 68,121,101, 34, 72,205,245, 43,141, 96, 17, 80, 34, 80, 10,142, 45, 62,143,229, 56, 22,
- 44,203, 64,151,145,130,229, 51, 71,219,200,213, 78,236, 62,114, 9,161,117, 26, 57,206,105, 65, 8, 64,203,239,212,254, 94,226,
- 53, 99,250,183,150, 19,109, 14,160, 21,221,251, 5,111, 49, 72, 4,131,177,157, 67, 21,167,119, 21,173,185,152,107,110, 88,161,
- 86,136, 16,135, 65, 59, 7, 64,236,244, 76,108,211,100, 49,246,173,177,237,214, 73, 37,136,134, 67,197, 27, 24, 24,136, 5, 11,
- 22, 4, 78,153, 50,101, 11,220, 12, 12, 77, 41,189, 66, 8,233,252,218,107,175, 29,202,202,202, 10,140,138,138,130, 74,165,130,
- 74,165, 66, 90, 90, 26, 6, 12, 24,144,150,154,154, 90, 89,237,216,230,145, 35, 71, 6,138,197, 98, 92,191,126, 29, 62, 62, 62,
- 14, 98, 88, 89,114,165,209,104,126,223,191,127,127,120,221,186,117,113,249,242,101, 60,241,196, 19,216,190,125,187,255,139, 47,
-190,232, 18,201,146,203,229,125,109,132, 9,177,177,177,218,216,216,216, 78, 0, 58, 85,244,219,177,177,177,218,183,223,126,251,
-185,242, 8,150, 72, 36,186,163,211,233,130,228,114, 57,190,249,230, 27,168, 84, 42, 40, 20, 10,132,132,132, 64,167,211, 65,161,
- 80,128, 82, 10,139,197, 98,159, 36,178, 92, 41,119, 70, 70, 70, 26,207,243, 97, 63,253,244, 19, 50, 50,254,241,137, 23, 30, 30,
- 14,155,189, 70,166,187,117,153,156,156,156, 70, 8, 9,251,235,175,191,144,144,144,128, 30, 61,122,224,187,239,190, 67,243,230,
-205, 1, 0, 38,147,169, 50,206,247,120,150,101,105, 57,237, 71, 0,120, 87, 37,166,109,209,114, 11, 83, 16, 4,193, 78,174,156,
-255, 58,147,174, 10,126,243,113, 17, 47,231,253, 65,117,205,100,143, 30, 61,160,211,233,160, 82,169, 42, 92,128, 31, 54,193, 18,
-137, 68,152, 61,123, 54, 70,143, 30,141,192,192, 64, 76,158, 60, 25, 28,199, 57,146,243, 73,128, 59, 18, 16, 24, 88,238,115,187,
- 13, 86, 5,243,165,218,203,203,107, 54,195, 48, 3, 89, 23, 42,142,231,121, 94, 16,132, 29,185,185,185,229,186,105,176, 27,164,
-187,210, 22,206,117, 80, 65, 94,239, 27,179, 52, 46,242, 40,139,189,116,135,108,170,185, 67,206,228,234,253,209, 93,134, 61,211,
-200, 27, 63, 28, 56, 9,177, 57, 7, 48,229,151,211,178, 22, 16,177, 18,129, 94,162,208, 82, 43,159, 97, 47, 39, 38, 37,195,215,
- 91,101, 35, 87,182,196, 48,104,210,168,120,243,186,251,200, 37,132,214,110, 4,142,101,193,177, 44, 84,114, 41,210, 82, 83,192,
-113,204,229,178,126,182, 49,139,254,253,235,135, 69, 4, 6, 72,128,198,229, 12,128, 24, 53, 66,131, 37,232,238, 43, 11,111,204,
-162,127, 5,132, 5, 82, 27,193,202, 7, 96, 26, 49, 2,209,107,215,226, 74,108, 44,110,198,198,162,214,218,181,192,136, 17, 16,
-240,207,173, 66,190, 18, 26, 44,123, 71,180, 19,161,233,211,167,167,101,101,101, 13,169,228,110,241, 74,118,118,118,231,169, 83,
-167,166,101,102,102, 66,161, 80, 32, 37, 37,229,190,200, 21, 0, 24, 12,134, 87,214,174, 93,155,118,232,208, 33,168, 84, 42,168,
-213,234, 74, 19, 44,187,230,106,230,204,153, 53,195,194,194, 16, 31, 31, 15, 47, 47, 47,248,250,250,162, 73,147, 38, 56,118,236,
-152,127, 88, 88,216, 79,182, 91, 70,229,229,233,251,181,107,215,230, 0,192,218,181,107,115, 8, 33,135, 9, 33,159, 18, 66, 86,
-151, 72,159, 18, 66, 14, 59,127,215, 96, 48,124, 91, 30,182,201,100, 58,124,233,210, 37,170, 80, 40,192,178, 44,204,102, 51,100,
- 50,153,163,189,236,134,185, 0, 96, 51, 60, 61,234, 74,217,243,243,243,247,126,254,249,231,150,176,176, 48, 60,249,228,147,136,
-137,137, 65,155, 54,109, 16, 30, 30,142,217,179,103,155, 10, 10, 10,246, 86,130, 96,237,222,190,125,187, 37, 44, 44, 12, 49, 49,
- 49,144, 74,165,104,210,164, 9, 66, 66, 66,176, 96,193, 2, 83,110,110,238,222, 74, 52,211,237,243,231,207,179,229,144, 91, 13,
- 92,184,141, 91, 66,238,156, 62,125,154,109,221,186,245, 15, 37, 31,180,108,217,242, 7,149, 74,229, 5,192, 93,187, 62,234, 76,
-170,164, 82,169, 35,217, 63,231, 56,238,191,160,193, 26, 7,224,111, 0,241, 0, 38, 87,167,140, 57,223, 22,204,202,202,194,165,
- 75,151,112,230,204, 25,180,110,221, 26, 71,143, 30, 5,138,221, 52, 52,251, 23,243, 7, 74, 41, 68, 34, 17,162,162,162,240,246,
-219,111, 99,207,158, 61,184,114,229, 10, 44, 22,139,131, 0,217,109, 46,221,209, 96,137,197, 98, 4, 6, 6,194, 98,177, 56,180,
- 87, 0,112,237,234, 85,112, 28, 7, 65, 16, 96, 50,153, 42,212, 96,121,121,121,205, 94,183,110,221,155,153,153,153,193, 25, 25,
- 25, 1,206, 41, 45, 45, 45, 32, 37, 37, 37, 32, 41, 41, 41,224,206,157, 59, 1,183,110,221, 10,184,121,243,102,240,162, 69,139,
-222,244,242,242,154,237,234, 26,212,164, 73, 19,188,241,198, 27,142,180, 98,197, 10, 71, 58,116,232,208, 63,202, 14, 55,214,181,
-168, 89, 75,208, 51,131, 58,210, 30,127,226, 72,113,239,140, 42, 15,243, 46, 46,242, 88,104,176,156,217, 39, 0, 52, 8, 82,204,
-123,255,181,142,195,158,126,194, 11,223, 31,248, 3,115,190,189,113, 57,114,152,127, 84, 93,239, 12, 8, 25,151,240,206, 75,205,
-177,228,203, 63, 0, 20, 31, 17, 10,233,113,160,217,241,160,234, 48,220,212,101,150,122,188, 96, 53, 21, 29,188,113,253,106,151,
-168,198, 45,152,212, 76,253, 93, 55, 12,162, 59, 15, 0, 33, 4, 53,106, 55, 2,203,113, 96, 89, 6, 28,203, 66,171,145,225,210,
- 95,127, 9, 70,131,225, 96,105,152,209, 0,231, 43,151,124,242, 82,247, 38, 50, 4,235, 1,185,244,159,217,247,198,128, 18, 43,
- 3, 7, 52, 86, 99,120,146,175,252, 96, 90,209, 39,162, 2,243, 15, 0, 44,101,237,106,212, 82, 41, 10, 1,100,138, 68,104,179,
-124, 57,174,198,198, 66,189, 97, 3, 88, 20, 91, 81,251, 47, 95,142,252,205,155,193, 88,173,160, 50,217,125,105,176,210,210,210,
- 48,104,208,160,251, 34, 66,206,154,172, 49, 99,198, 28, 90,176, 96, 65,224,244,233,211,171, 12,115,242,228,201,135,190,252,242,
-203,192, 90,181,106, 85,186,179,169, 84,170, 73,130, 32,104, 23, 47, 94,156,186,116,233, 82,148,180, 23,179, 17, 28,169, 86,171,
- 93, 2,160, 75, 57, 80,115, 70,141, 26, 37, 6, 48,218,166,201,122,114,212,168, 81,199, 41,165,211, 74,212,239,172, 53,107,214,
- 12,114, 58, 74,252, 20,192,242,242,242,152,151,151,183,250,237,183,223, 30,241,219,111,191,249,201,100, 50, 16, 66, 32, 22,139,
- 81,175, 94, 61,155,230,181,216,224,149, 82,138, 9, 19, 38,100,166,167,167,187,228,166,193,104, 52,110,156, 51,103, 78, 23,131,
-193, 16, 62,124,248,112,177,183,183, 55,210,210,210,240,225,135, 31,154, 54,110,220,120,167,160,160,192, 93, 91, 41, 88, 44,150,
-141, 51,102,204,232,172,215,235,107,191,250,234,171,226,220,220, 92, 24, 12, 6, 76,156, 56,209,180, 97,195,134, 68,131,193,224,
-182,163,222, 54,109,218, 92,191,117,235, 86,251,194,194,194,108,133, 66, 81, 82,187, 71,148, 74,101, 11, 0,155,221,193,140,142,
-142,142,191,125,251,118,235,121,243,230, 29,182, 88, 44,162, 83,167, 78,245,177,147,171, 79, 62,249,228,144, 76, 38,235, 10,247,
-141,241, 5,169, 84,122,151,198,170,228,107,142,227, 30,123, 13, 22,165,244, 16,138, 93, 95, 84, 43, 41, 73,174,226,226,226,208,
-165, 75,241,144, 62,122,244, 40,218,181,107,135,163, 71,143,162,125,251,246,255,170,155, 6, 59,193,226, 56, 14, 47,190,248, 34,
-186,117,235,134,154, 53,107, 58,198,185,179,145,187, 59, 36,195,106,181,162,113,227,198, 48,154, 76, 16,139,197,142, 35, 72,142,
-227,224, 31, 16,128,235,215,175,187,164,193, 98, 24,102, 96,223,190,125,153, 11, 23, 46, 96,240,224,193,248,226,139, 47,202,252,
-238,203, 47,191,140,109,219,182,161,111,223,190,204,187,239,190, 91,174,155, 6,187,113,185, 43,101,178,175,211, 21,105,240,170,
- 10,211,153,139, 60, 54, 4,203,201,185, 23,106,251, 43,134,119,171,199,225,251,131,127, 96,206,247,183, 55,242,148,126,243,205,
-217,236, 31, 39,183, 3,204, 59, 94, 66,147, 1,155,139,143, 5, 1, 8,233,113, 48,239,120, 25, 68,225,135, 35, 73, 34,228, 26,
-204,187, 75,239,112,230, 47,190,219,178,242,237,214,171,218,251, 7, 7,120, 65,151,107,112,144,172,179,135,118, 2, 0,250,143,
-154, 15,142, 45, 62, 58,212,168,100,144,139, 89,124,189,233,163, 76,179,185,168,212, 94, 37,136,152,209,175,182,173,231,229,229,
- 69,129,134,226,187, 27,169,246,206,123,137, 86, 51,111,248,197,101,227,165,186, 42,205,242, 11, 57,163, 1,124,114,143, 6, 35,
- 39,199,144,127,230,140,188,195,150, 45,184,212,175, 31,106,228,231, 35,206,219, 27,254, 86, 43, 84,118,109,213,134, 13,200,255,
-226, 11,200,172, 86,192,203, 11, 89, 43, 87,194,122,254, 60,172,121,121, 6,119, 9,214,181,107,215,238, 91,203, 84, 26, 33,154,
- 50,101,202,150,172,172,172, 33, 85,137,249,202, 43,175, 28, 58,112,224, 64, 96,101,113,242,243,243,199, 3, 24, 95, 5,249, 17,
- 8, 33,211,108, 14,237, 70,199,198,198,106, 79,159, 62, 61,130, 16,178,138, 82,154, 98,171,219,128,145, 35, 71,190, 86,130, 92,
- 85,120,139,144, 82,122, 91,165, 82,205, 29, 63,126,252,252,165, 75,151,170,236, 6,237,231,206,157,131,213,106,133, 72, 36, 2,
-207,243, 24, 57,114,164, 62, 43, 43,107, 73, 89, 30,152, 75,193,181, 18, 66, 94,158, 63,127,254,200,143, 62,250,168, 55,203,178,
-254, 60,207,103, 24, 12,134,159, 12, 6,195,218,202,220,162,178,213,195,208,233,211,167, 15, 93,182,108, 89, 95,134, 97, 2,172,
- 86,107,102,126,126,254, 46,131,193, 80, 41,223, 90,199,143, 31,207, 88,181,106,213,141,140,140,140, 6,161,161,161,185, 42,149,
-202,100, 50,153, 88,185, 92,174, 81, 42,149,209, 0, 78, 0,184,232, 14,230,153, 51,103, 82, 63,253,244,211, 4,163,209, 24,245,
-233,167,159, 30,209,104, 52, 7, 8, 33, 68, 44, 22,123,203,229,242, 46, 0, 14, 3,184,230,150,234,157, 97, 4,103,109, 85, 73,
-251, 43,137, 68,242, 95,177,193,170,118, 98,115,211,112,150, 82,138,204,204, 76, 92,184,112,193, 78,174,162, 1,160,125,251,246,
-103,237, 36,235,204,153, 51,136,137,137, 57, 75, 8,121,232,110, 26,156, 53, 88,118, 34, 85,179,102, 77,199,123,231,228,100,131,
-229,146,240, 60, 15,177, 88, 12,142,227, 16, 28, 18,226,248, 45, 74, 41,174, 95,191, 14,157, 78,231, 18,193, 98, 89,150, 37,132,
- 96,240,224,193, 46,253,238,255,253,223,255,225,240,225,195, 96, 93,100,131, 44,203, 34, 34, 34,194,165,147, 22,184,104, 47,197,
-178, 44, 66, 67, 67, 43,141,233,204, 69, 30, 27,130,229, 44,241,233,134,121, 47,127,120,236,221,139,169, 69,223, 92, 74, 43,124,
- 27, 0,221, 17,167,248,165,137, 63,251,204, 51,245, 19, 97, 92,219, 30, 68, 83,236,116,141,234, 83, 64,148,129, 72, 20,106, 96,
-214, 15,151, 83,173, 32,139,203, 88, 12,146,197, 50,197,180, 77,235, 62, 89, 58,114,204, 4, 85, 92,124, 26,114,245, 70,176, 44,
-227, 60,105,130,227, 88,104,148, 50,132, 5,121,225,203,207, 62,204,207,207,203,153, 94, 86, 92,194,112,181, 56,182,107,139,186,
- 82, 4, 21, 0, 69, 50,160,232,159,206, 74,255,234, 99, 91,213, 75, 40,169, 26,105,241,236,237, 2,217,119,183, 11, 98, 75, 35,
- 88, 69, 38,211, 51,239, 62,251,236,207,243,126,252, 81,209,224,155,111,144,246,194, 11, 8,201,203,131, 20,184,203, 38,139,177,
- 88, 0, 47, 47,100,126,241, 5, 10,121, 30, 75,135, 15, 47, 44, 50,155,187,187,169,129, 16,119,234,212,169,202,200,149, 51, 33,
-130,155,118, 92,174,146,172,110,221,186, 29,162,148, 74,171,193,206,221, 78,178,204,167, 79,159,126,237,200,145, 35,241,184, 59,
-224,103,206,145, 35, 71,226, 95,125,245, 85,178,126,253,250, 13, 0,102,184,234,120, 83,175,215,127,162,213,106,209,177, 99,199,
- 25, 11, 23, 46,244,109,222,188, 57, 2, 2, 2,144,159,159,143, 51,103,206, 96,220,184,113,186,188,188,188,133,217,217,217, 75,
-221,204, 51,111,211,212,172,173,202,122, 0,240,185, 45, 85,137,188,254,250,235,231,226,227,227,179,252,253,253, 91,137,197,226,
- 39, 81,108,231,147, 10, 96,131,187, 68,200, 46,163, 71,143,254, 43, 62, 62, 62,179, 70,141, 26,173,109,152, 90, 0, 73, 0,214,
- 85, 2, 51,249,143, 63,254, 8,109,209,162, 5, 35, 18,137, 40,203,178, 16,137, 68,148,227, 56,106,179,155,161, 0,176,107,215,
- 46, 41, 0, 29, 60,242,176,199,166,195, 77, 67, 74, 74,138,131, 92, 57, 57, 26,141,110,223,190,253, 89, 27,185,178, 63,179,254,
- 75,121,197,156, 57,115,176,102,205, 26, 84,228,129,220,118, 91,143, 84,132,103,215, 96,241, 60, 15,179,217,140,184,184, 56, 16,
- 66,192,243,188,227, 88,208,238,162,193,106,181,150,123,251,156,231,121,222,100, 50,225,171,175,190,114,137,100,109,221,186, 21,
- 69, 69, 69,224, 43, 96,110,206, 46, 21,154, 54,109, 10,157, 78,231,184,196, 19, 29, 29,237,248,158,217,108,118,139,176,218, 49,
-163,162,162,144,153,153, 9, 63,191,226,123, 54, 97,175,196,254,163,108, 41,248,239,248,253, 37,174,186, 22,104,170,213,122, 25,
- 37,150,111,159,111, 36,237, 60, 48,218, 11,181,131,212, 16,137,101, 72,206,179, 98,255,197, 60,172, 59,148,122,199, 96,225,123,
- 95, 73, 47, 56, 95, 30,142, 76,233,245, 83,243,182,221,218,189,242,218, 56,165,222,200, 35, 33,225, 22, 50,210, 83,192, 16, 6,
-193, 53, 66, 17, 30, 30, 1,185,132,193, 23,107,151, 22,156, 61,126,224, 88,126,158,174, 71, 89, 88,189,181,146,227,203, 94,104,
-215,186, 78, 29, 53,129,213, 2,240, 22,192,106, 1, 4,219, 95,251,103,194,221,125,237,194,133, 28,250,238,159,186,223,127,204,
- 49,149, 26, 83,106, 32, 33,237,188,189,189,127,158,243,253,247, 10,193,100,130,105,196, 8,200,141, 70,200, 9, 1,161, 20, 12,
- 0, 34,147, 33,107,229,202, 98,114, 53,108, 88, 97, 78,110,174,219,161,114,252,253,253, 63,207,204,204,124,228, 60,185,251,250,
-250, 78,173,140,187,135, 7,152,167, 0, 0, 57,118, 39,163, 37,118,210,254,118,173, 86, 37,112, 35,252,253,253,223,101, 24,166,
- 13,165,212,151, 97,152,108, 65, 16, 78,164,167,167, 47,162,148, 94,247, 44,165,255, 90,123,219, 61,185, 87,116, 94,157, 14,224,
- 45, 0,249,148,210, 4, 79,205, 61,244,118,106, 6,224, 44, 74,185, 45, 88,222,179,135, 37,190,190,190, 39,127,254,249,231,230,
-181,107,215,102,156,205, 21,236,190,238,236,199, 88, 28, 87,172,135,248,237,183,223,172,131, 7, 15, 62,145,154,154,218,177, 44,
- 76,141, 70,243,203,223,127,255,253,116,110,110,238, 61, 68,202,217,179,187,253,125, 65, 65, 1,198,140, 25,179, 47, 47, 47,175,
-212, 80, 57, 90,173,118,217,210,165, 75,223,236,223,191, 63, 99,119, 43,225,156,236, 97,125,236,201,108, 54, 99,243,230,205,194,
- 71, 31,125,244,113, 78, 78, 78,153, 71,132, 33, 33, 33,119,146,147,147, 67,237, 46, 19,202, 74,206, 18, 17, 17,145,146,144,144,
- 16,242, 48, 49,255, 51, 4,203, 54, 40, 72, 84,128,114, 16, 5, 6, 50, 16, 26, 51,132, 72,172, 20, 87, 64,241,139,130, 43, 92,
-117, 38,153,186,116, 68, 38, 86, 40,198,170, 85,222, 51,251, 15,121,195, 55,162, 78, 36, 9, 12,174, 1, 2, 6,105,169, 73,184,
-117,227, 42,253,118,203,202,172,130, 60,221,236,194, 66,253,202,242,112, 26, 16, 82,183,142, 70,188, 93,194,163, 62,236,229, 40,
- 17, 63,234,158, 29, 6, 0,179,136,185,124, 35,223, 50,248, 82, 57,139,164,157,100,205,216,185, 83,193, 53,108,120,143,131, 55,
- 65, 16, 96, 61,127, 30, 75,135, 15,175, 20,185,242,136, 71, 60,114,223, 11,120,109, 84,236,227,202, 2, 32,241,223, 12, 42,252,
- 31,111,163,106, 27,236,153, 16,162,244,241,241, 57,192,178,108,184, 93, 3,227,108, 19, 84, 74,160,231,132,180,180,180,174,148,
-210,194,114, 48,235,168,213,234,149, 60,207,183,116, 37,216, 51,203,178,167,242,243,243,199,150, 23,236,249, 65,220, 34,244,243,
-243,187,126,235,214,173, 58,246, 91,209,206,107,101,201,122, 0,128,107,215,174,161, 83,167, 78,183, 82, 82, 82, 34, 30, 38,230,
-127,138, 96, 85,113,231, 14, 17, 75, 85, 67, 37,114,217, 83,130,197, 26, 5, 2,112, 34,209,101, 83,145,225,160,209,160,223, 84,
-214,177, 96, 73,194,119, 63,121,160, 21, 20,126, 32, 33,237,164, 98,241, 47, 98, 47, 47,121,105, 95,181,230,229, 25,138,204,230,
-103, 60,228,202, 35, 30,241,136, 71, 60,242, 8, 17,223,250, 62, 62, 62, 63,139, 68, 34,169, 51,137, 44,249,218,177,214, 89,173,
- 69, 25, 25, 25, 61,202, 59,109,121, 16,152,143,188,216,153,166,171,201,206, 75, 92,252,110, 55, 87, 49,109,169, 83,117,199,124,
-128,101,167, 85,136,217,201,134, 57,235, 17,201,103,167,234,138,233,196,195, 93,194,117, 7,211,213, 62,229,102, 62,105, 85,231,
-243, 65, 97, 86,213, 56, 42, 37,159,244, 1,180,251,172, 71, 36,159,157,170, 27,102,201,254,227, 10,174,187,152,174,244,169, 74,
-228,147, 86,117, 62, 31, 20,230,253,142,163,114,242, 73,239,183, 47,149,209,246,179,220,229, 30,143, 98,226,220,100,189,244, 1,
-145, 60,226,132, 79,170, 43,166,115, 61, 84,165, 75,255, 7, 16, 30,224, 80, 85, 99,150,168,207,170,146, 89,182, 27, 35,135,225,
-130,163, 80,119,202, 94, 21,237, 94,162,172, 85,130,235,140, 89, 85,117,233,140, 83, 85,253,254, 65, 99, 86,213, 88, 42,137, 89,
- 21,253,190,180,118,127,128,109, 84, 85,249,172,146,177,244, 32,250,124, 41,253,231,190,113, 75, 98, 86,197, 88, 42,137, 89, 21,
-253,254, 97, 96, 86,197, 88, 42, 13,179, 42,250,125, 89,109,255, 95,209, 20, 50,149,169,172, 7,164,178,172,242, 0,143, 15, 34,
- 34,247,131, 32,153,132, 16,106,243, 96, 91,237, 49,171,184,141,102,217, 48,103, 85, 33,102,231,170,106,163, 7,209,223,157, 49,
-171, 10,191, 36, 78, 85,180, 83,105,152,247,155,223, 50,242, 89,229,101,191,223,126,255,176, 48,171,184,141,170,100, 44,149,192,
-236, 92,197,155,128,206, 78,239,103, 85, 37,102, 85,141,165, 82,242,121,223,237, 84, 26,230,253,230,183,140,124, 86,121,217,171,
- 98, 13,121, 80,184,143,130,112,213, 33, 19, 15,130, 8,217, 7, 93, 85, 98, 63, 8, 45,206,131,210,180, 85,149, 22,167, 20,220,
-195, 85, 8,119,168,170,243,105,203, 31,121,156,156,213,121,198,146,103, 44, 61,202, 99,169,180,126, 67, 41,157, 69, 8,153, 89,
-157,250,121, 73,204,170, 34, 66,165,148,253,190,198, 82,201,255,173,138,177, 84, 1, 38,121, 16,229,175,234,241, 84, 29,133,169,
- 46, 25,177,177, 90,250, 0,240, 58, 87,231, 6,120, 64,249,236,252, 40,148,253, 65,228,147, 16, 50,235, 1,149,253, 81,169, 83,
-207, 88,242,140,165,106, 55,150, 74,244,201,206, 85,165, 25,170,234,141, 84, 73,204,170,248, 13,103,140,170,234,163, 15,186,236,
- 85, 57,150, 30, 68,219, 63, 42,242,255, 3, 0, 76, 61, 50,167, 83, 88, 95, 69, 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, 90, 0, 0, 2,128,
+ 8, 6, 0, 0, 0, 68,254,214,163, 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, 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, 3, 39, 3, 73, 68, 65, 84,120,218,236, 93,119,152, 19, 69, 31,126,103,179,233,185,222, 27, 28,119,244,
+222,145,222,139,210,145,206,135, 32, 98,161,136, 21, 4, 11, 74,145,162, 72, 85, 16, 59,160, 72, 85, 16, 84,138,210,123,239, 85,
+234,221,113,189,167,151,157,239,143,203,198, 92, 72, 46, 57, 56, 16,113,222,231,217, 39,217,246,238,204,238,148,119,126,243,155,
+ 25, 66, 41, 5, 3, 3, 3, 3, 3, 3, 3, 3, 67,217,131, 99,175,128,129,129,129,129,129,129,129,225, 17, 17, 90,155, 55,111,
+246,217, 4, 70, 8,233,232, 43,167,125,107,243,168,115, 62,192,184,211, 50,228,108, 99,231,252,224, 95, 18,206, 54,143, 42,167,
+ 24, 95, 95,121, 75,195,233,107,154, 42,101, 56,105, 89,135,243, 65,113,150, 85, 62,114, 19, 78,250, 0,190,251, 7,255,146,112,
+182,121,212, 56, 93,211,143, 47,188,165,229,244, 37, 77,221, 67, 56,105, 89,135,243, 65,113,222,111, 62, 42, 33,156,244,126,211,
+146,135,111,255, 1,254, 67,224, 31,148,200, 42, 13,186,117,235, 70,156,248,201,163,202,233,252, 30, 68,254,178, 12,107, 25, 98,
+103, 89,115,186,188,207,178,194, 7,221,186,117, 35,155, 55,111,222, 5,160, 77, 89,198,189, 44,190,187, 75, 92,203,132,183,180,
+ 34,171,180,156,101,149,238, 31, 52,103, 89,229, 37, 87,206,178, 72,247,238,190,251, 3,252, 70,101, 21,206, 50,201, 75, 15, 34,
+205,187, 73, 63,247,205,235,202, 89, 22,121,201,149,179, 44,210,253,195,224, 44,139,188,228,142,179, 44,210,189,167,111,207, 44,
+ 90, 15, 87, 16,184,102,240,182,143,178, 32,122, 80, 98,211, 87, 11,204,163,192, 89,198,223,232, 3, 59,103, 89,182,110,218,150,
+213, 55,122, 16,233,221,153,179,172,248, 93,121,202,226, 59,185,227,188,223,240,122, 8,103,153,199,253,126,211,253,195,226, 44,
+227,111, 84, 38,121,201,133,179,109, 25, 55, 6,218, 58,237,127, 80,150,156,101,149,151,220,132,243,190,191,147, 59,206,251, 13,
+175,135,112,150,121,220,203,162, 14,121, 80,188,143,173, 69,235, 65,138,172, 7, 85,169,149, 37,247,131,176,234, 60, 40,203, 91,
+ 89, 89,117,220,240,238, 42, 67,186,157,101, 29, 78,123,248,200,131,178,190, 62,234, 96,121,137,229,165, 71, 45, 47,185, 75, 55,
+221,186,117,251, 96,243,230,205,239, 63,106,141,104,103,206,178, 18, 68,110,226,126, 95,121,201,245,222,178,200, 75, 94, 56,201,
+131,136,127, 89,231, 39, 38,180, 74, 97, 41, 42,227,150, 9,202,216, 2,243,192,226, 93,198,225,108,251, 32, 44,132, 15, 0,101,
+ 30, 78,123, 75,249,253, 7, 16,247,127,203, 59,101,121,137,229,165, 71, 46, 47,185,164,201,182,101,104, 41, 42, 83,203,179, 43,
+103, 89, 60,195,153,163,172,210,232,131,142,123, 89,230,165, 7,241,237,255,117,160,148, 62,176, 13, 64, 71,198,201, 56, 25, 39,
+227,100,156,140,147,113, 50,206,255,234,198,166,119, 96, 96, 96, 96, 96, 96, 96, 96,120, 64, 32,108,194, 82, 6, 6, 6, 6, 6,
+ 6, 6,134, 7, 3,143, 62, 90,177,177,177,155,212,106,117, 37, 79,231,181, 90,237,157,148,148,148,118,236, 21, 50, 48, 48,120,
+109,209, 17,194,225,239, 81,206, 2, 0, 74, 89, 43,143,129,129,225,191, 44,180, 20, 10, 69,226,133, 11, 23,170, 8,130, 0,155,
+205, 6,171,213,234,248, 53,153, 76,104,221,186,117,169, 29,233,163,162,162,118, 75, 36,146, 10,165,185,199,102,179,221, 74, 77,
+ 77,109, 89, 66, 1,190, 31, 64, 34, 33,196,249, 88,137,191, 0, 82,204,102,115,131,146, 56, 9, 33,137,174,124, 30,184,196,255,
+ 37,114, 6, 5, 5, 29,229,121, 62,206, 29,151,167,255,130, 32, 92, 75, 79, 79,111,206,146,233,195, 65, 84, 84,212,110,158,231,
+ 75,157, 62,239,220,185,227, 49,125,198,196,196,156,224, 56, 46,166, 20,148, 18, 65, 16, 46,221,185,115,167,165, 39, 33, 34,166,
+121, 47,194,166,216,127, 66, 72,146,213,106,109,228, 45, 31,149,196,229, 38,141,150,200,233, 44,178,120,158,159, 21, 17, 17, 49,
+ 74,167,211, 25, 0, 80,137, 68, 66, 67, 67, 67,197,176, 1, 0,172, 86,107, 70, 78, 78, 78,109,150, 18, 25, 24, 24,254, 19, 66,
+ 75, 16, 4,206,104, 52,226,242,229,203,240, 80,222,219,238,225,121, 85,142,253,177, 45,194, 63, 34, 18, 86,179, 25,154,176,112,
+ 7,119,218,249,179,176, 90,204,176,154, 76, 40,223,184,169, 88,137,161,102,205,154, 18, 47,156,113,179,103,207,142,240,247,247,
+135,193, 96,128,193, 96,128,209,104,132,193, 96,128,201,100,130,201,100,130,217,108,134,217,108,134,213,106,133,209,104,196,246,
+237,219,189,133, 61,238,195, 15, 63,140, 8, 8, 8,112,240,137,155,200, 41,242, 90, 44, 22, 24, 12, 6,252,249,231,159, 37,114,
+242, 60, 31,151,146,146, 18, 33,147,201, 64, 41,133, 32, 8,238,156, 11,139,161, 98,197,138,102,150, 68, 31, 42,170,124,184,114,
+115, 68,160, 74, 1,171, 32,160,123,221,138,142, 19,215,190, 90, 3,106,181, 65,176, 90, 81,121,236, 80,160,200, 36,131, 26, 53,
+106,148,152, 62, 41,165,241, 31,174,220, 28,228, 43,103,102,102,166,190,122,245,234, 41, 40, 26,250,236,201,226, 19,167,215,235,
+ 35,196, 48,184, 10, 34,142,227,138,109, 91,182,108, 65,247,238,221,189,197, 61,238,181,215, 94,139,176, 88, 44, 48,153, 76, 48,
+ 26,141,176, 88, 44,176, 90,173,142,205,102,179, 57, 54,147,201,132, 67,135, 14,249,106,201,154,221,169, 83,167, 17,155, 55,111,
+214,252,252,243,207,154, 10, 21, 42, 64, 38,147, 65, 34,145, 64, 34,145,128,227, 56,240, 60,143, 39,158,120,130,176, 36,200,192,
+192,240,159, 17, 90, 70,163,241,122,253,250,245,169,253,127,172, 66,161,144,185, 20,160, 49, 85,170, 84,185,228,122,159,183, 46,
+ 69,255,136, 72, 76, 42, 23, 2, 0,152,124, 51,203, 81, 65,124,212,188,158,227,154,169,201,121, 0, 0,149, 74, 5,226,220,140,
+246, 0,141, 70,131, 78,157, 58, 65, 46,151,163, 81,163, 70,144, 74,165,110, 55,153, 76, 6,169, 84,234, 75,229, 0, 63, 63, 63,
+ 76,153, 50, 69, 20, 73,208, 40, 21,120,185,121, 35, 40, 65,241,197,217, 43, 48, 9, 20, 60,207, 59, 54, 95, 56,101, 50, 25,206,
+156, 57, 3,158,231, 33,145, 72, 28,191,226,255,141, 27, 55,162, 95,191,126,224,121, 30, 42,149, 10,248, 15,205, 51,242,168, 32,
+ 80,165,192,176, 37, 63, 1, 0,110,207, 27,235,248,118,135, 70, 79,118, 92, 19,255,194, 0, 16, 66, 32,149, 74,193,113, 92,153,
+113,102,103,103,235, 7, 13, 26,180,215,223,223,127, 75,126,126, 62,188, 8, 56,220,190,125, 27, 60,207,123, 76,239, 28,199, 97,
+238,220,185,184,122,245,170, 79,113, 55, 24, 12,248,242,203, 47, 97,179,217,138,241,138,255, 93,143,249, 40,178,166,119,238,220,
+121,232,230,205,155,131, 9, 33,248,244,211, 79, 33,147,201,208,181,107, 87,132,134,134, 98,235,214,173,144,201,100,152, 48, 97,
+ 2, 75,124, 12, 12, 12, 37, 65, 10,160, 30,128,112,187,161,167, 0, 64,144,211,249, 12,251,111,184,211,254, 17, 55, 60,141,237,
+215,136,231,197,125, 19, 0,185,155,227, 89, 0, 84,246,205, 8, 96, 63,128, 90, 78,207, 17,239,131,167,231,242, 64,209,250, 67,
+ 0,118, 2,104, 43, 78,162,119,231,206,157,167,156, 44, 43, 23, 46, 93,186, 84, 77,212, 60,246, 46, 68,153,213,106,173, 34,118,
+ 39,138,214,162,142, 29, 59,150,216,194,183,154,205,119, 9, 16,119, 90,202, 93,119,133, 39, 1, 99, 54,155, 49, 96,192,128,162,
+ 47,225,161,210,113,222,124,208,110, 48,153, 76,224,121, 30, 85,203,133,227,189, 46,245,209,132, 90,160, 45, 36,176,230,105,209,
+203,207,130, 11, 53, 26, 96,233,173, 12,220,204, 47, 4,207,243, 62,113, 10,130,224, 81,100, 73, 36, 18, 44, 89,178, 4,131, 6,
+ 13,130, 68, 34,241,137,143,161,236, 97, 21, 4,183,233,208, 83,154,245,229, 59,249,194,153,157,157,173,239,222,189,251, 65,133,
+ 66,177, 44, 50, 50, 50, 37, 41, 41,201,171,208,114, 21, 63,174,141,138, 79, 62,249, 4, 11, 23, 46, 68,187,118,237,124, 10,167,
+209,104, 4, 33, 4, 75,151, 46,189,235,220,180,105,211,238,122, 94, 73,156,246, 6, 18, 23, 19, 19, 51,250,247,223,127, 15, 16,
+175, 13, 11, 11,131, 84, 42, 69,237,218,181,225,239,239,143,189,123,247,194,102,179,249,156, 47, 25, 24, 24, 30, 95,184,211, 34,
+ 78,104, 61,105,210,164, 70,179,102,205,154,209,172, 89,179, 31,247,239,223,191,146, 16,178,201,169, 76,236,110, 47,123, 54, 57,
+237, 55,118, 17, 61, 82, 0,225,132,144, 77,226,245,206,251, 78,199, 59, 2,144,139,251,147, 38, 77,170, 53,107,214,172, 25, 19,
+ 39, 78,124,123,230,204,153,178, 73,147, 38,213,153, 53,107,214, 12,241, 57,238,194,225,206,162, 85,226,172,194, 98, 55,226,197,
+139, 23,225,205,127,149, 82, 90, 98,105,169, 9, 11,119, 88,178,166,198,135, 58,142, 79, 73,202,117, 84, 96,139, 26, 86,130, 70,
+163, 65,151,169, 31,251,100, 41, 50,153, 76, 72, 79, 79,119, 88, 25,188,109,190,114,170, 85, 74,108,127,173, 54,110,103,201,241,
+193,129,108,108, 62,121, 21, 82,169, 20, 79,214,168,141,167,100,254,120, 55, 94,142,215,174,220,128,197, 71,159, 94, 74,169, 91,
+129, 37,254, 23,187, 80,152,208,250,231,208,189,110, 69,135,213,233,144,127, 7,199,241,126,218, 51,142,111,242,198,146,143, 0,
+ 0,237, 26, 60, 1, 95,252,185,189,113,102,101,101,233, 91,118,104,187,203,166, 55,125, 55,116,232,208,235, 59,118,236, 80,249,
+212,188,115, 35,180, 68,171,173, 40,178,120,158,135,201,100,242, 41,238, 38,147,201, 99,254,144,201,100,165,182,104, 1,128, 86,
+171, 53,109,216,176, 1,139, 22, 45, 66,104,104, 40, 58,119,238,140,232,232,104,172, 89,179, 6,148, 82,140, 29, 59, 22, 42,149,
+ 74,180, 94,179, 4,200,192,240,223, 70, 73, 90, 68, 49,107,214,172, 25,174, 66,198,121,223, 89, 64,185,136, 41,103,177, 86,203,
+ 75,253,191,201, 85, 60,137,207, 37,132,108,154, 57,115,102,119, 47,225,200,240, 36,180, 74,156,190,223,104, 52, 94,175, 91,183,
+174, 79,106, 66,167,211,165,122, 19, 27,238, 90,245,206, 86, 2, 63, 63, 63,104, 2,252,192,249, 88,238, 90, 44, 22,135, 80,217,
+182,109, 27, 84, 42, 21,186,118,237,122, 95, 22, 45,179,217, 12,185, 76, 10, 46, 44, 18,195,230,237, 64, 86,129,222, 81,193,236,
+188,118, 29,199,211,210,241, 90,179, 14,208,168,210, 81,104, 50,249,100,121, 19, 4,225, 46,145,197,243, 60, 6, 12, 24,224,176,
+ 38, 56,251,173,128,117, 29,254, 99,112,151, 62, 93,143, 11, 46,150,170,123,225,204,202,202,210,119,239,222,253,160, 77,111,250,
+ 46, 57, 57,249, 32, 0,101,147, 38, 77, 74, 45,180, 68,129, 37,149, 74, 49,119,238, 92, 44, 92,184,208,113,222, 87,161,101,181,
+ 90,139, 9,168, 43, 87,174, 20,123,150,171,176, 43,169,219,148, 82, 74, 9, 33, 2, 0, 33, 49, 49,209,113, 79, 84, 84, 20,130,
+130,130, 32, 8, 2, 4, 65,128, 82,169,132, 74,165,130, 76, 38, 99,137,142,129,129,161, 36, 45,162,159, 56,113,226,219,132,144,
+ 77,118,203,210,217, 18, 4,149, 59, 52,118, 17,107, 25, 30,202,174,238,238,196,150,243,127, 17,147, 38, 77,170,229, 38, 28, 71,
+ 60, 10, 45,151,105,247,139,193,185, 27,177,172, 42,177,146, 42, 50,191,160, 0,168, 52, 26, 72, 36, 28, 8, 33,212, 27,151,217,
+108,118, 20,252,163, 70,141, 42,209,111,197, 87,127, 42,179,217, 12,142,151,224, 78, 84, 2,108,220, 30,199,189,226,198,241, 82,
+220,140,170, 6,201,197, 19,144,250, 88,225,186, 90,180,198,142, 29,139, 47,191,252, 18, 28,199, 57,222, 9,207,243,168, 92,185,
+ 50,174, 95,191,206,114,220, 35, 34,178, 60, 29,183,217, 4,159,173, 48,238,174,203,202,202,210,247,239,223,127, 87, 94, 94,222,
+119, 53,107,214,188,130,162,233, 15, 56, 95,249,120,158, 47, 38,176, 68,145,181, 96,193,130, 98,162,200, 98,177,248,212, 16,176,
+ 88, 44,119, 9,158, 57,115,230, 20,251, 5,128,230,205,155,251,100, 25, 6, 64, 57,142,163, 50,153, 12,157, 58,117, 66,157, 58,
+117,240,243,207, 63, 67, 16, 4,140, 25, 51, 6, 42,149, 10,243,231,207,135,213,106,197,236,217,179,153, 69,139,129,129,161, 36,
+ 45, 98,156, 57,115,230,217,153, 51,103, 58, 44, 75,174, 22, 45, 79,148,118, 81, 21, 46,138, 52, 20,249, 90, 29, 41,161,174,238,
+238, 73,128, 57, 31,155, 53,107,214, 12, 55,225,112,237,174,124,248,107, 29,166,158, 59,131,143, 91,212, 7, 80,188,187,112,201,
+ 19,213,160,241,211, 64,227,239,135,254, 27,247, 0,128,189,208,159,232,147, 69, 75, 20, 90, 89, 89, 89, 37,138,172,210, 88,180,
+ 56, 57,143,181,113, 57,160,114, 41,120,147,165,152,208,146,240, 82,220, 14, 77, 0, 39,149,129,183, 89,125,226,164,148,222,213,
+ 85, 56,124,248,112, 16, 66, 28, 35,196,234,214,173,235,204,197,106,158,135,157, 62,143,126,133, 11,235, 70, 3, 0, 90,106,181,
+142,111,241, 97,221,191,199,119,204, 59,179,203, 97,125,156,138, 55,239,137, 51, 43, 43, 75,223,164,122,173,131,178,144,192,239,
+110,221,186,117, 16, 0, 55,112,224,192,160,186,117,235,250,148, 39,197,193, 21,174, 34,203,217,146, 37,254, 90, 44, 22,159,226,
+ 46,250, 74,121,131,216,141,232, 45,205, 83, 74,105, 72, 72, 8, 56,142, 67, 64, 64, 0,252,252,252, 28, 35,110,149, 74, 37,212,
+106,181,195,191,211, 71,225,198,192,192,240,223, 69,176, 40,116,236, 98,169,152,165,137, 82,218,221, 89, 12,121,234, 66,180, 91,
+160,118,123, 51,172,217, 5,154, 91,136,150, 53,151, 50,121,147, 39,145,198,139, 10,210,249, 55, 58, 58,250, 55, 63, 63,191, 4,
+ 95, 99, 95,154,201, 75,109, 22,243, 93,150, 45, 66, 8,252,252,253,160,242,211, 64,229,239,231,209,234, 85,146,208, 18, 45, 69,
+ 98,165,179,108,217, 50,248,249,249,225,217,103,159, 45,181,143,150, 67,104,201, 56,108, 85,252, 9,137,156, 47, 38,178,120,158,
+135, 68, 42, 69,170, 95, 52, 56,169, 20,188,213, 55, 43, 89, 94, 94, 30,120,158,199,123,239,189,231,104,193, 59,139,172,210,196,
+153,225,193,128,218, 44,119, 89,161, 60, 89, 95,239,149, 83,180,100,201, 66, 2,191,171, 86,173,154,195,146,165, 86,171,197,209,
+166, 94,193,113,156, 91,145,229, 58, 66,144,231,249,162,180,236,101,116,164,179, 69,107,230,204,153, 14, 94,103, 75,150,136,210,
+228, 35, 49,172,187,118,237,194,241,227,199, 49,106,212, 40,168, 84, 42, 44, 92,184, 16, 86,171, 21,211,166, 77,131, 74,165,130,
+ 92, 46,103,137,143,129,129, 89,179,138,105, 17, 23,100,184,248, 65, 17, 23, 81,147,225, 78, 96, 57,119, 19, 58,253,183,184,225,
+ 53,185,116, 41,186, 30, 23,127,179,102,206,156,185, 67,180,100, 57, 29, 47, 22, 14,175, 22, 45,133, 66,145,112,249,242,101,199,
+100,165, 37,253,154, 76, 38,180,107,215,206,103,203,152, 56,234,144,231, 37,197,132,133,218,223, 15,234, 0,127,168,252,252, 92,
+ 5, 7,241, 86,136,139, 45, 98,103,161,245,254,251,239,131,231,121,124,249,229,151, 0,128, 55,223,124,211,103, 31, 45,145, 19,
+ 54,130, 36,250, 23,234,207,235, 7,211,247, 22,164,237, 59, 5,158,231, 17,209,244, 41, 8, 77,250, 65,167,242, 3,111,179,250,
+ 60,234, 48, 59, 59, 27,215,175, 95,135, 68, 34,193,235,175,191, 94,108,174, 35,215,145,108,219,182,109, 99, 22,173,127, 66,104,
+ 9, 86,159, 68, 85,105,172,142,206,156,162, 79, 86, 94, 94,222,119,183,110,221, 58, 4,128, 27, 58,116,104,144, 90,173,198,215,
+ 95,127,173, 3, 32, 95,179,102,141,202,155, 40, 18,211,141, 55,145, 37,149, 74,139,210,178, 47,113,167,197,167, 44,241,230, 24,
+239, 75,154, 23,195, 74, 8,129,205,102,131, 74,165, 42,102,201, 82, 42,149, 80, 40, 20, 44,225, 49, 48, 48,120,195,145, 82, 92,
+219,216, 73, 52, 29,185, 71,222, 35,101, 21,112,222,147,208, 48, 26,141, 56,127,254,188,175, 60, 62, 79, 94, 90,174,209, 19,152,
+154,156, 7, 66, 8,190,104, 94, 19,154, 0, 63,168, 53, 26,244,253,121,151,163,224, 62, 51,227, 77, 40, 52,126,136,105,213,217,
+167,130, 92,236, 58,116, 22, 90,185,185,185,144, 74,165,152, 62,125, 58, 56,142,195,236,217,179, 17, 27, 27,139, 59,119,238, 96,
+205,154, 53, 62, 89,180, 36, 54, 9,162,159,169, 14,245,240, 64, 4, 60,211, 26,193,157,222, 71,178,137,199,126,131, 26,173, 13,
+231, 32,223,186, 0, 38,193,230,243, 8, 44,171,213,138, 93,187,118,185, 58,188,131, 82,234,152,117,223, 98,177,192,108, 54, 99,
+246,236,217, 96, 43,148, 60,124, 68, 55, 29,139,240, 70, 47, 1, 0, 54,206,124,206,113,252,189, 51,127,167,207,185,223, 23, 45,
+ 0, 80,173, 66,231, 82,113,102,101,101,233,159,108,215,124,183, 65,144,126, 91,187,118,237, 98,150, 44,165, 82, 73,236,251, 62,
+137,107,142,227, 32,145, 72,238,234, 46,244, 36,182,124,241,209,178, 90,173,142,137, 68, 75,242,103,188, 23,139,214,115,207, 61,
+135,232,232,104,135, 37,107,234,212,169, 80,169, 84,152, 52,105, 18, 44, 22, 11, 22, 44, 88,192, 18, 31, 3, 3,195, 63, 33,202,
+ 30, 56,220,150,164, 6,131,225, 70,157, 58,117,224,225, 92,172, 82,169,148,186, 20,210, 49, 85,170, 84,185,228,218,133, 72, 8,
+233, 72, 41,221,238,174, 80, 39,132,192, 63,192, 31, 74, 63, 13,212, 46, 86, 44,165,127, 0, 20,126,126,224,100, 82,119, 21,194,
+ 93,156,162,111,137,179,208, 18,183,188,188, 60, 72,165, 82, 44, 90,180, 8, 1, 1, 1, 48, 26,141, 94, 57,197, 74, 71, 34,145,
+ 64,119,187, 0, 23,102,108,135, 92,185, 31,149, 58, 15, 66,180, 84, 5,217,222,245,208,219, 44, 37, 78, 88,234,142,179, 74,149,
+ 42,152, 60,121,242, 93,211, 58,120, 66,108,108,172,215,184,223, 47, 24,167,123,206,146, 70,197,138, 16,168,205,221,117,110, 57,
+ 69, 75,150, 65,144,126,123,253,250,117,209,146, 21,168, 86,171,241,249,231,159,235, 0,112,211,166, 77, 83,199,199,199, 75,124,
+ 73, 75, 18,137, 4,243,230,205,115,235,147,229, 78,116,149, 38, 31, 57,223,219,166, 77, 27,183, 19,150,186, 19,111,238, 56,197,
+176,134,134,134, 58, 44, 89, 54,155,205, 49,218, 80,156,125,222, 83,163,130,165, 79,198,201, 56,255, 59,156,143, 43,220,214,242,
+ 41, 41, 41, 79,122,186,161, 82,165, 74,151, 47, 95,190, 92, 89, 92,138,195, 94,112,202, 12, 6, 67,149,230,205,155,123, 53,237,
+ 8,130, 0,133, 66, 1, 74, 41,218, 79,158, 5,194, 1, 28,138, 87, 98, 17, 45, 58, 64, 34,225, 33, 20, 45,245,225,117,212,161,
+ 94,175, 47, 86, 57,184,219, 10, 11, 11, 97, 52, 26,125,158,205,219, 96, 48, 20,155,130,129, 80, 1, 55,255, 88,125,215,232, 67,
+113,243,213,111, 71,169, 84, 22,235,250, 41, 9,222,230, 36, 99, 40,123,136, 3, 22, 0,160,106,243,174, 16, 4, 27,168,205, 86,
+108,153,164,234, 9, 79, 66,160, 54,152, 45, 58, 24,141, 70,111,102, 71,146,153,153,169,239,223,191,255, 46, 0,223,244,234,213,
+235, 18,138, 70,188, 80, 63, 63, 63,133, 84, 42, 21, 0,100, 3,160, 57, 57, 57,129,201,201,201,130,193, 96, 40,239, 45,156,155,
+ 55,111,198,249,243,231,209,170, 85,171, 98,203, 65,137, 86, 81,231,217,221,125, 73,159, 98,119,185,187, 25,225, 61, 9, 57, 95,
+ 33,145, 72, 16, 24, 24, 8,153, 76,134,233,211,167, 67, 38,147, 65,173, 86, 3, 0, 22, 44, 88,224,152,124,149,129,129,129,225,
+ 63, 35,180,188,149,155, 37,116, 43,150,216,133,104,181, 90,147,226,227,227, 75,245, 48,155,205,150,230, 69,184, 37,173, 89,179,
+ 70,230,108,133,240,246, 75, 41, 77,243, 82,217, 38,109,220,184, 81,230,206,186,225,105,129,105,111,156, 54,155, 45,169, 66,133,
+ 10, 30, 45, 38,238, 96,177, 88,146, 89, 18,125,120,176,217,108, 37,164,207,119,238, 53,125, 94,169, 90,181,106,114, 80, 80,208,
+175,145,145,145, 89,251,246,237, 11,109,220,184,113,168,243, 53,141, 27, 55,142,118,185,205, 4,207,235, 28,130, 16,146,212,171,
+ 87, 47,183,105, 94, 20, 77,110,210,103,146,183, 52,127,248,240, 97,153,243,253,158,248,157,242, 81,146, 15,194,245,102,253,250,
+245, 57,103, 30, 79,105,223, 98,177,100,176, 84,200,192,192,240,159, 23, 90,122,189,254,118,157, 58,117,172, 30,206,221, 42,233,
+222,204,204,204, 70,101, 29, 1,179,217,220,252,223,192,153,145,145,209,136, 37,183, 71, 27, 15,226, 27,165,165,165, 53, 41,107,
+ 78,171,213, 90,230,233,211, 98,177, 52,127, 16,239, 52, 43, 43,171, 25, 75, 89, 12, 12, 12, 76,104,149, 2,190, 78,227,192,192,
+192,192,192,192,192,192,240, 95, 7,199, 94, 1, 3, 3, 3, 3, 3, 3, 3,195,131, 1, 65,209, 42,213,119,161, 52,163, 9, 8,
+ 33, 29, 75,251, 96,111,252,140,147,113, 50, 78,198,201, 56, 25, 39,227,124,252, 56,189,113, 63,118,163, 25,197,209, 84, 15, 98,
+ 3,208,145,113, 50, 78,198,201, 56, 25, 39,227,100,156,140,243,191,186,177,174, 67, 6, 6, 6, 6, 6, 6, 6,134, 7, 4,158,
+189,130,127, 6,132, 16, 9,165,212, 86,134,148,193, 0, 60, 45, 24,103, 2,144,115, 47,193, 4, 32,179,111,226, 68, 71, 22, 0,
+102,251,230,195,212,245, 83,184,148,148,224, 90,212, 38,109, 76, 9,145, 10, 2, 78,150, 47, 95,238, 4,240,164, 9, 0,252,162,
+106,212,240,211,168, 58, 26,205,166, 4,133, 84,126, 62, 87, 91,184,205,144,118,233, 6, 75, 33, 12, 12,255, 72,185,212, 3,192,
+ 20,123,222,159, 73, 41, 93,205,222, 10, 3,195, 3, 18, 90,254,254,254, 71, 57,142,139,243, 54, 63,143, 83, 6,133,205,102, 75,
+202,206,206,110,228, 99,134,230, 1,244,247,243,243,107, 39,149, 74, 91, 0,128,197, 98,217, 87, 88, 88,184, 3,192, 26, 74,169,
+245, 30, 11,138, 0, 0, 3, 0, 12,177, 31,250, 1,192,106, 74,105,254, 61,242,213, 9, 12, 12, 92, 39,149, 74,105,102,102,102,
+ 83, 0, 8, 13, 13, 61,104,177, 88, 72,126,126,126, 95, 74,233,233, 82,242,113, 82,169,116,110,171, 86,173, 90, 19, 66,190,161,
+148, 46, 42,163,111,169,224, 56,206,173, 64, 17, 4,161,194, 61,240,201, 0, 4, 46, 90,180, 40,116,197,138, 21,245,147,146,146,
+106, 3, 64, 92, 92,220,153,161, 67,135,158,120,249,229,151,179, 0,228,217, 5,151, 71,164,164, 4,215, 74, 79,189, 54, 42, 45,
+253,252, 0, 0,136,138,174,189, 90, 34,225,100,177,177,199, 15,168,195,134,132, 85,173, 86,241,165, 31,191, 94, 36,171,144, 80,
+ 14,127,238, 63, 94,239,229, 87,222,174,165,140,172,250, 9, 19, 91, 15, 15, 1, 1, 1, 71, 57,142,139, 43, 41,143,187,203,243,
+ 54,155, 45, 41, 43, 43,171,145, 39, 78,158,231,227, 74, 42, 47,220, 29, 19, 4,225, 90, 70, 70,134,219,169, 38, 2, 3, 3, 15,
+240, 60,159,224, 43,151,248,107,181, 90,147, 60, 77, 45, 19, 24, 24,120, 84, 34,145,196,149, 20, 79,119,231, 4, 65,184,150,158,
+158,238, 41,156,119,197,189, 44,194,121, 47,156, 37,133, 83, 44,143, 0, 44, 8, 13, 13,125, 34, 43, 43,235,127, 0,222,206,207,
+207,175, 43,145, 72, 16, 18, 18,242, 54, 33,228,106, 96, 96,224, 87,121,121,121,251, 1,188, 66, 41, 21, 88,142, 97, 96, 40, 35,
+161,197,113, 92, 92,114,114,114,132, 70,163, 1,240,247,122,124,226, 98,210,130, 32,128, 82,234,248,181, 90,173,168, 94,189,186,
+175, 98,163,118, 64, 64,192,218, 73,147, 38,149,239,223,191,191, 92, 92,106, 38, 37, 37,165,202,186,117,235,254, 55,125,250,244,
+247, 9, 33,253, 40,165,103,124, 21, 47, 0, 58, 0, 24, 94,191,126,253,167,167, 78,157, 42,107,223,190, 61,108, 54, 27,126,253,
+245,215, 86,211,166, 77, 91, 68, 8, 89, 15,224, 59, 0,127,248, 90, 88, 16, 66, 90, 70, 69, 69,173,220,187,119,111,244,245,235,
+215,109,253,251,247, 95, 5, 0, 71,143, 30, 77,180,217,108,164,105,211,166,155, 9, 33,131, 41,165,123, 75,241,206,159, 30, 55,
+110,220,192,177, 99,199, 70, 60,251,236,179, 35, 0, 44,178, 63,139,216,223,115,105, 23, 56,116, 88,178, 40,165,178, 18,174,139,
+ 42,133,101, 75,115,253,250,245,224,230,205,155,143, 78, 79, 79,127,205,153, 55, 45, 45, 13,199,142, 29, 51,207,152, 49, 99,222,
+254,253,251, 23, 39, 36, 36,228, 0,208,122, 34,162, 54,105,227,180,244,243, 3, 90, 55, 91, 20, 8, 0,107, 54,142, 30,116,248,
+ 68,134,255,166,223,151,254, 79,174,148, 25, 87,124, 49, 79, 86,185, 82, 5,236, 60,122, 5,135,206,103,147,218, 45,187,243,121,
+155,150,119, 2,176,148,101,207,135, 3,137, 68, 18,155,148,148, 20,161, 86,171,221, 46, 28,239,226,151, 33, 78,128,138, 42, 85,
+170,120, 46, 88,120, 62, 46, 57, 57, 57, 66,169, 84, 58,202, 14,215, 50, 67, 44, 87, 28,105,133, 82, 84,173, 90,213, 92, 66,153,
+ 20,127,235,214,173, 8,181, 90,237,224,113, 23, 62, 87,193, 81,181,106,213,146,226, 94, 44,156,190,112, 82, 74, 81,185,114,101,
+155,183,184,139, 43, 96,120,139,183,200,153,144,144, 64, 75,195,233, 75, 56, 43, 86,172,104,246,242,249, 23, 92,186,116,105,108,
+185,114,229, 80,185,114,229,253, 79, 60,241, 68,128, 70,163,193,239,191,255,142, 26, 53,106,212, 10, 8, 8, 56,180,102,205, 26,
+233,132, 9, 19,234,125,251,237,183, 0,240, 50,203, 49, 12, 12,101, 36,180, 8, 33,208,104, 52, 88,181,106,149,199,229, 56,156,
+255,151, 47, 95,222,167, 7, 18, 66, 26, 37, 36, 36,236,218,187,119,175, 42, 58,250,239, 9,177, 77, 38, 19,130,131,131, 49,102,
+204, 24,121,143, 30, 61, 42,119,238,220,249, 32, 33,164, 13,165,244,168, 23,190,167,195,195,195, 63,125,239,189,247, 34, 7, 14,
+ 28,136,208,208, 98,147,110,163,127,255,254,232,219,183,175,236,210,165, 75,131,150, 45, 91, 54,104,201,146, 37,169,132,144,151,
+ 41,165,235, 75,226, 85,171,213,189, 42, 85,170,244,249,222,189,123, 35, 34, 34, 34,144,152,152,200, 77,152, 48,161,114,149, 42,
+ 85, 84,113,113,113,220,157, 59,119,240,243,207, 63,199, 14, 30, 60,120,173, 92, 46,127,201,100, 50,109,240, 33,238,242,208,208,
+208,183, 95,122,233,165,176,252,252,124,235,177, 99,199, 46,139,199,229,114,249,180,102,205,154, 53, 38,132,124, 79, 41,253,234,
+ 94, 44, 89,118,171,157,235, 90, 38, 22,241,188,143,150, 45,249,201,147, 39, 67,154, 53,107,182,222,104, 52, 54, 24, 53,106,212,
+173, 25, 51,102,168, 2, 2, 2, 2, 0,144,252,252,252,156, 41, 83,166,152,230,207,159,255, 86,141, 26, 53, 58, 28, 56,112,224,
+233,122,245,234, 89,236, 34,238,110,161, 69,136, 35, 60,183,147, 51,176,107,191, 32,159, 60,233,205,184,143, 62, 76,184,121,228,
+220,109,129, 87, 5,224,151,221,103,145,150, 85,136,223, 14,156, 67, 84,168, 63,145, 41,164,181,130,226,106,181,201, 75, 62,183,
+155,178,149,181, 31, 56, 8, 33, 80,171,213,248,229,151, 95,238, 90,186,202,221,178, 86, 60,207, 35, 40, 40,200,235,234, 6, 74,
+165, 18,219,182,109,115,187,246,162,187, 37,125, 2, 3, 3,129, 18, 22,213, 38,132, 64,169, 84, 98,223,190,125,224, 56,206,237,
+210, 64,174,199, 52, 26, 13,184, 18,214,186, 18, 57,119,239,222,237,149, 75,252,245,243,243, 3, 0, 73,137,153, 82,161,192,222,
+189,123, 61,198,217,245,191,159,125,189, 87,111,156,251,246,237, 43,182,244,151,235,146, 96,206,251, 26,141,198,209,128,243,216,
+ 74, 11, 14,110, 26, 23, 23,135,195,135, 15, 99,205,154, 53, 33,181,106,213,194,149, 43, 87, 64, 8,193,140, 25, 51, 72,205,154,
+ 53,165,169,169,169,104,213,170, 21,126,250,233,167,230, 44,183, 48,252,131,144, 2,168, 7, 32, 28, 69,171,208, 20, 0, 8,178,
+215, 61,114, 0, 89, 0, 84,246,205, 8,160, 16, 64,152,253,222, 76,123,217,226, 44, 16, 50, 80,124,241,233,198,118,110,113,133,
+138,112,167,115,226, 51, 92,247, 93,127,221,114,243, 0,176,121,243,102,177, 50,107,219,173, 91,183, 93,197, 98,230,131,200, 18,
+215, 41,115,205,211,110, 22,152, 85,104, 52,154,117, 7, 15, 30, 84,133,135,255, 29, 7,163,209,136,130,130, 2, 20, 22, 22,162,
+160,160, 0,254,254,254, 88,179,102,141,170, 67,135, 14,235, 8, 33, 85, 40,165, 70, 79,156, 0,230,221,185,115, 39,210,106,181,
+ 66, 46,151,123,106, 9,163,122,245,234,120,251,237,183,209,165, 75,151,168,118,237,218,205, 3,176,190, 4, 78,168,213,234,207,
+143, 29, 59, 22,161, 86,171,113,249,242,101, 36, 37, 37,225,141, 55,222, 40, 39, 8, 2,110,223,190,141, 43, 87,174, 32, 57, 57,
+ 25,203,150, 45,139,232,221,187,247,231, 0, 54,148, 20,119, 59, 70,189,246,218,107,213,130,131,131,185,143, 63,254, 56, 87,171,
+213,126,102, 63, 62,121,225,194,133,207,180,110,221, 58, 98,228,200,145,148, 16,178,130, 82,122,151,112,113,225,116,103,201,178,
+ 1,184,224,114, 91,117, 23, 75, 87,148, 61, 17,230,186,225, 36, 0, 2, 59,119,238,252,186,209,104,108,176,119,239,222,171, 45,
+ 90,180,136, 7,112, 71, 76,124,129,129,129,154,121,243,230, 69,118,239,222,253, 82,251,246,237, 27,116,238,220,249,245,140,140,
+140, 25,246,243,212,149, 83, 16,112, 50, 42,186,246,234,221, 7, 94, 30,176,115,159, 73,246,230, 43,239,223, 42, 95,174, 66,222,
+201,203,217,182,115,215, 50, 80,160,183,162, 79,251,162, 5,204,155,214, 46,143, 79, 87,237,197,152, 87,223,145,174, 95,189,188,
+239, 85, 10, 13,128,205, 37,188,207,251, 2,227,252, 91,108, 8,130, 0,169, 84,138,167,158,122, 10,132,144,187,214,242,148, 74,
+165, 56,112,224, 0,218,183,111, 15,169, 84,138,231,158,123,206, 39, 78,158,231,209,185,115,103,199, 58,138,206,124,174,162,193,
+157, 38,112,141, 59,165, 20, 60,207,131,227, 56,143, 11,105,187,114,122, 43,151,196,112,150,196,229,124,206, 91, 56, 69,107,146,
+175, 34,203, 87, 78, 49,156, 60,207,163,121,243,230, 56,113,226, 68,137,162,203,157,190,116,141,123, 78, 78,206,176, 42, 85,170,
+236, 94,180,104, 81, 8, 0,100,101,101, 57, 22,188,151, 72, 36,184,120,241, 34, 76, 38, 19, 62,248,224, 3,115,126,126,254, 72,
+150,143, 24,231,131,228, 44, 73,139, 0,104, 61,105,210,164, 70,179,102,205,154,209,172, 89,179, 31,247,239,223,191,146, 16,178,
+137, 82,218, 93,252,157, 52,105, 82,173, 89,179,102,205,152, 56,113,226,219, 51,103,206, 60, 75, 8,217, 4, 0,174,251,246,240,
+119,119, 17,113,225, 34,143, 61,207, 21,187,214,221,190,235,175, 7,238,191, 45, 90,221,186,117, 35,246, 72, 18,231, 66,205, 87,
+161,229,203,218,125, 60,207,143,157, 49, 99, 70,100, 73, 34,171,176,176, 16, 41, 41, 41,136,143,143,199,115,207, 61, 23,185,104,
+209,162,177, 0,230,148, 64, 43,147, 72, 36, 56,124,248, 48,210,211,211, 81,167, 78, 29, 36, 36, 36, 20,187,224,175,191,254,194,
+175,191,254,138,220,220, 92, 52,108,216, 16, 40,242, 63,114,139,122,245,234,125, 80,189,122,245,206,157, 59,119,182,170, 84, 42,
+156, 60,121, 18, 13, 26, 52,192,170, 85,171, 80,190,124,121,168,213,106, 92,186,116, 9,117,234,212,193,174, 93,187, 16, 30, 30,
+142,250,245,235, 91, 27, 54,108,184, 39, 59, 59,123,199,141, 27, 55, 62,240,208,114,150,197,198,198,190,255,226,139, 47,202, 83,
+ 82, 82,132,239,190,251,110, 47,165,116, 47, 33,100,236, 59,239,188, 51,162, 75,151, 46, 17,199,143, 31,207, 59,114,228,200, 33,
+119, 34,203, 71, 75,150,213,181, 82,178,217,108, 70,189, 94,111, 50, 26,141, 22,142,227,110, 16, 66, 76, 54,155,205, 83,159,143,
+114,248,240,225, 21, 51, 51, 51,199,188,250,234,171,215,237, 34,235, 34,138, 28,224, 1, 0, 86,171,213, 88, 88, 88,152,223,172,
+ 89,179,248,193,131, 7, 95, 93,185,114,229,152,225,195,135,175,249,238,187,239, 10, 1,232, 93, 9,203,151, 47,119, 66, 34,225,
+100,218,130,144,107,107,215,124,245,218,175, 27,199,150,187,125, 59,185,114,104, 88,184, 86,230, 23,158,178,230,135,111,143, 2,
+ 48,165,100,228,227,244, 95,169,144, 74, 37, 56,127, 59, 15,173,159,236, 47,189,122,249,195,150,162,208, 98,120,160,160,226, 34,
+212, 59,119,238, 44,209,162,117,224,192, 1, 72,165, 82,168, 84, 42,204,159, 63,191, 68, 82, 81, 24,136,214, 34,111, 98,134,227,
+184, 18,203, 17, 81,108,136, 11,189,187,110,159,125,246, 25, 94,125,245,213, 98,207,176,139, 13,226,141,211, 83,248,226, 43, 84,
+ 64,122, 90, 90,177, 99,190, 44, 74,111,179,217, 32,149, 74,241,229,151, 95,162,123,247,238,216,180,105, 83,137,191, 79, 61,245,
+ 20, 56,142,163,190,188,207,230,205,155,195,108, 54, 59,194,124,241,226, 69,183,188, 75,150, 44,241,102,201,236, 1, 96, 74,131,
+ 6, 13, 2,218,181,107,135,221,187,119,163,111,223,190, 70,179,217,124,217, 94, 39, 84, 93,180,104,145,252,216,177, 99, 8, 13,
+ 13,149,222,186,117,235, 27, 66, 8,115,144,103,120,160,112,167, 69,196, 58,111,214,172, 89, 51, 92, 69,140, 51,196,243,132,144,
+ 77, 51,103,206,236,238, 44,138,156,247,157,172, 78,206, 34,174,150,179, 69,202, 89, 68,121, 18, 80, 46,245,173,243,245, 25,110,
+133,150, 61, 98,109,157,173, 64, 98,225,235, 77,100,121,106, 57,186, 34, 48, 48,176,107,159, 62,125, 28, 34,199, 96, 48, 56, 4,
+150, 40,178,196,253, 75,151, 46,161, 81,163, 70,178,192,192,192,174, 94,132,150, 40,226, 16, 19, 19,131,204,204, 76,156, 57,115,
+ 6,241,241,241,176, 88, 44,216,178,101, 11,242,242,242, 32,149, 74, 33,147,201, 96, 54,151,236,178, 80,189,122,245,167, 86,172,
+ 88,209,104,249,242,229, 57, 98,139,238,135, 31,126, 0,165, 20,225,225,225,208,233,116, 72, 75, 75,195,142, 29, 59, 96,181, 90,
+225,231,231,135,196,196, 68,121,175, 94,189, 90, 78,153, 50, 69, 10,224, 3, 15,212,205,251,246,237, 27, 24, 16, 16,128, 87, 94,
+121,133,154,205,230,153,132,144,230,125,251,246,125,255,229,151, 95, 14,189,113,227,134,233,249,231,159, 63,108, 54,155, 63,182,
+ 23,130, 82, 74,169,197, 75,139,194,163, 37,203, 98,177,136,239,244,122, 97, 97, 33,194,194,194,226,189,248,112, 1,128,108,223,
+190,125,205, 1, 72,166, 77,155,166, 4,144,230, 44,178, 76, 38, 19, 10, 11, 11,161,213,106, 45,121,121,121,233,227,199,143,183,
+174, 92,185, 82, 98,191,231,188, 59,161, 5, 60,105,170, 89, 83, 35,167, 84,242,206,210,165, 75,253,186,116,233,194,249,249,249,
+161,160,160, 32,224,183,223,127,247,235,208,174,101,226,140, 89, 31,109, 13,136,171,147,182,239,228, 53, 36,167,230,193,100,177,
+ 32, 49, 58,176,200, 30,198,240,192, 97, 31,200,226,176,104, 57,139,138,221,187,119,227,201, 39,159,116,228,117,153, 76, 86,204,
+242,229,141,147,231,121, 60,249,228,147,119, 89,120,118,238,220,233,214,250,228, 13,206,162,200, 85, 28,185, 19, 96, 28,199,193,
+ 91,239,179,104,205,115, 39,182,156,173,250, 46,226,205, 91,107, 31, 60,207,227,229,151, 95,134, 84, 42,197,132, 9, 19,192,243,
+ 60,234,215,175, 15,158,231,209,172, 89, 51, 72,165, 82,180,111,223,190,212,113, 63,120,240, 32, 26, 52,104,224, 8, 83,253,250,
+245,209,184,113, 99,240, 60,143, 86,173, 90, 65, 42,149,162,115,231,206,190,112,190, 93, 80, 80, 80,215,207,207, 15,151, 46, 93,
+130, 68, 34, 1, 33,228, 10,165,180, 46, 0,188,248,226,139, 87,117, 58, 93, 69,131,193,128, 23, 95,124,145,152, 76,166, 58, 19,
+ 38, 76,120, 7, 0, 19, 90, 12, 15, 12,174, 90,196, 9,250,137, 19, 39,190, 77, 8,217, 36, 90,168, 92, 45, 79,238,246,221,148,
+ 77,162, 24, 18,187,246, 26,187,136, 56,177,219,175, 91, 9,247,154, 92,132,149,107,215,225, 17,159, 45, 90, 98,225,235,171,208,
+242, 6,131,193, 80, 47, 34, 34,194,163,200,114,254, 53,153, 76, 72, 72, 72,128,193, 96,168, 87,218, 74, 35, 58, 58, 26,102,179,
+ 25, 95,125,245, 21,100, 50, 25,100,178,191,245,133,201, 84,178,177,232,220,185,115,215, 15, 30, 60,216,160, 97,195,134,193, 63,
+253,244, 83, 70,155, 54,109,194,187,116,233, 2,149, 74, 5,189, 94, 15,139,197,130,166, 77,155,162,122,245,234, 72, 74, 74,194,
+111,191,253,150, 89,165, 74,149,176, 67,135, 14, 9,169,169,169, 55, 75,160,238,212,161, 67, 7, 16, 66,240,251,239,191,103, 82,
+ 74,143, 40,149,202, 95, 63,252,240,195, 96,147,201, 36, 12, 29, 58,244, 86,118,118,246,171, 0,204, 10,133, 98, 97,231,206,157,
+155, 73, 36,146,239,109, 54,219,252,210, 38, 84,215,119,171,213,106,161, 84, 42,125,153, 74, 66,154,157,157, 93, 27, 0, 52, 26,
+ 77, 8,128,171,142, 20,174,215, 23, 19,195, 38,147,201, 16, 18, 18,162, 1, 0,251, 61, 82, 15,223, 35, 92,173, 86,175,189,121,
+243,154,191,179,255, 92, 80, 80, 16,134, 12, 30,204,181,104,222, 92, 94,183, 94,189,206,239,126,178,124, 85, 76,104,128, 41, 49,
+ 38, 20, 22,155, 5,219,183,110, 17,168, 96,217,202,138,157,135, 35,180, 68,177,225,106,209,146, 74,165,216,181,107,215, 93,199,
+100, 50, 25,190,248,226, 11,159,132,129, 40,170, 60,117,157,185,116,117, 17,111, 2, 70, 42,149, 66, 34,145,224,203, 47,191,132,
+ 32, 8,120,237,181,215,138,117, 39, 58,243,251,216, 5,226,184,167,250,251, 2, 0, 19,146,230, 42, 28,247,187,134,215,126,143,
+ 79, 86,178, 69,139, 22,249,100,209,234,214,173,155, 87,225,234,220,195,224, 28,174, 19, 39, 78,184,229, 93,186,116,169,215,247,
+105,179,217,176,121,243,102,135, 72, 21,241,222,123,239,189, 24, 23, 23, 23,185,103,207, 30,164,166,166, 66,171,213,162,176,176,
+ 16, 77,155, 54, 77,236,216,177,227,201,212,212,212, 27,231,206,157,235,195,114, 15,195, 67,180,104, 25,103,206,156,121,118,230,
+204,153,110, 45, 86,174,150,165,146, 44, 79, 78, 2,235, 8,236, 93,134, 19, 39, 78,124, 27, 69,110, 53, 71,124,184, 87,238,218,
+117, 88,162, 33,200, 69, 69, 78,113, 87,248,250,210,125,232,163, 57,157, 39,132,192, 96, 48,184, 21, 88,206,226,192,108, 54, 35,
+ 59, 59, 27, 54,155,237,158,231,250,114,215,146,245, 38,180,206,156, 57,243,236,136, 17, 35, 82, 2, 3, 3,235,102,100,100,164,
+ 11,130,208,254,192,129, 3,225, 60,207, 35, 32, 32, 0, 1, 1, 1,248,245,215, 95,161, 86,171,241,242,203, 47,167,219,108,182,
+221,254,254,254,161,122,189,254, 84,106,106,234,187, 30, 21,140, 84,218,185, 85,171, 86, 56,118,236, 24,114,114,114,182, 17, 66,
+234,143, 28, 57,242,201,114,229,202,145, 15, 63,252,208,240,215, 95,127,205, 7,144,174,209,104, 86,172, 88,177,162, 93,195,134,
+ 13,253,135, 14, 29, 10, 66,200, 82, 74,169,193,215, 56,107,181,218, 98, 2, 43, 63, 63, 31, 5, 5, 5,208,104, 52, 86, 31,223,
+153, 20, 69,190, 86,162,191,149,227,219,216,173, 89,226,247,161, 60,207,211,162, 75,168,212, 19,159, 70,163,153,182,124,249,114,
+149,235, 32, 5,155,205,134,180,180, 52, 4, 4, 4,224,189,119,223,149, 77,125, 99,100, 3,137, 95,228, 1,142, 35, 48,153,105,
+ 46, 21, 76, 91,180,105, 3,247,176, 98,231,225, 64, 20, 6, 61,123,246,188,171,187, 80, 38,147, 97,219,182,109,232,221,187,183,
+163,225,210,176, 97, 67,175,141, 43, 81, 24,244,232,209,195, 97, 25,218,178,101,139,219,110, 63,209, 34,229,139, 32, 20,175, 29,
+ 55,110, 28,120,158,199,167,159,126,138,215, 95,127, 29, 28,199, 97,238,220,185,224, 56, 14,147, 39, 79,246, 89,100, 58, 11,152,
+ 27, 31, 21,253,198,189,158,143,172, 37,145, 0, 0,255,128, 0, 49, 66,165, 42,123,120,158,119, 88,178,234,213,171, 7,169, 84,
+138,102,205,154,129,231,121,135, 37,171,107,215,174,206,239,145,250,194,201,243, 60, 46, 95,190,236, 8,115,179,102,205,138, 89,
+178,120,158, 71,183,110,221,124, 9,230,140,160,160,160, 41,213,171, 87,175, 49,111,222, 60,169, 68, 34, 65,135, 14, 29,170, 62,
+255,252,243, 55, 67, 67, 67, 67,167, 77,155,166,118,115,143, 10, 64,221, 26, 53,106,104, 88,174, 97,120,128, 22,173, 41,110, 78,
+ 5, 59,251, 92,149,162, 33,185,201,249,122,145,195, 85, 28,217, 45,100,187,189,113,185,187,215, 27,120, 81, 65,150,100, 82,247,
+ 69,104,217,205,206, 37, 62, 76,173, 86,159, 78, 79, 79,111,166, 82,169,138,137, 44,119,130, 75, 34,145, 32, 53, 53, 21,106,181,
+250,116, 89,126, 68,111, 93,135,118, 81,243,134,211,139,237,216,181,107,215,239,182,109,219, 22,189,125,251,118, 28, 58,116, 8,
+225,225,225, 88,180,104,209,157,180,180,180,103, 41,165,219,124,121,110,197,138, 21,107,251,249,249, 97,223,190,125, 0,176, 11,
+192,200, 49, 99,198, 16,139,197,130, 37, 75,150,104, 1,252, 30, 20, 20,180,121,205,154, 53, 13,234,214,173, 43,223,190,125,123,
+254,161, 67,135,254,240, 81,100,217, 4, 65,184, 75, 96, 57,191, 83,127,127,127, 95, 44, 90,150,192,192,192, 51,249,249,249,253,
+245,122,125,190, 66,161,240,207,207,207, 55, 58, 11, 44,145,159,231,121,233,229,203,151, 83, 0, 36, 6, 6, 6,158,129, 83, 23,
+ 99,177, 4,198,243, 29, 58,116,232,192,187,126,131,180,180, 52,164,166,166,194,108, 54,163, 97,195,134, 68, 66, 44,146,236, 91,
+167, 94,100,197,204, 63, 98,209,162, 98, 94, 23, 71, 9,186, 27,105,184,101,203, 22,199, 62,199,113,176, 15,247,247, 42,138,182,
+109,219, 86,162,195,186, 75,215,161, 87,211,184,120,253,226,197,139,139,150,183,176, 91,178, 56,142,195,196,137, 19,161, 80, 40,
+240,225,135, 31, 98,226,196,137,224,121,222,107,215,161,179,128,169, 48, 65,231,220, 56, 42,202, 20,118,127, 40, 66,136,179,216,
+ 34,190,138,183,146,172,121,190,244, 4, 56,115,138,247, 41,149, 74,143,142,240, 46,156,164,132,120,255, 66, 8,185, 22, 29, 29,
+189,175, 89,179,102,129, 71,143, 30,197,220,185,115,101, 70,163,177,252,246,237,219, 29,207,117,247,190,180, 90,173,138,229, 28,
+134, 7, 97,205, 42,225,116,134,139,127, 21,113,238,198, 43,225,215,245,122, 56, 29,115,230,205,112,169,199,156,143,187,138, 43,
+215,103, 56, 95,147,225,209,162,229,173,176,240, 38,184,124,177,104,233,116,186, 63,126,255,253,247,198,131, 7, 15,230, 75,234,
+ 54,212,106,181,136,140,140,196,217,179,103,173, 58,157,238, 15, 31, 44,101,101, 38,180,220, 20, 42,219,163,162,162, 36, 22,139,
+ 5,149, 43, 87, 70,108,108, 44, 12, 6, 3,114,115,115, 37,190,138, 44, 66,136,172, 81,163, 70, 18, 0,200,205,205, 5,138,134,
+154, 86,173, 82,165, 10,142, 29, 59,134,236,236,236,245, 0,186, 76,153, 50,165, 97,211,166, 77,101,171, 86,173,210,141, 26, 53,
+106,189,197, 98,249,192, 71,107,132,201,106,181, 38,112, 28,103,206,205,205, 77,118,126,159,145,145,145, 33, 26,141,134,164,165,
+165, 89,124, 17, 90,117,235,214, 61,124,235,214, 45, 76,155, 54, 45, 99,198,140, 25, 85, 10, 10, 10,114,242,242,242,172,206, 98,
+203, 96, 48,112, 97, 97, 97,138, 37, 75,150,168, 0,160,110,221,186,135, 61, 9, 45,173, 86, 91, 78,173,254,187, 97,108, 52, 26,
+145,154,154,138,212,212, 84,164,165,165,161,160,160, 0,137,137,137,208,233,116,241,172,152,249,199,132, 86,177,238, 51,231,252,
+237, 92,145,151, 38,175, 59, 11,152,158, 61,123, 58,124,187, 68, 11,153,184,173, 93,187,214,213,193,220, 39,161,181,120,241, 98,
+140, 27, 55, 14, 74,165, 18,243,230,205, 43,214,117,232, 42, 14, 4, 65, 32,190,196, 61,225, 45, 61, 82, 23,134, 64, 42,149, 34,
+116, 84, 90,177, 46, 58, 55,130,195,167,112,206,152, 49,163, 76,186, 14,157, 57,227,227,139,178,202,151, 95,126,137,254,253,251,
+ 99,207,158, 61,247,220,117, 88,171, 86,173, 31, 54,109,218, 20,120,238,220, 57,228,231,231, 35, 35, 35, 3, 70,163, 17, 73, 73,
+ 73, 30,123, 5,236,101,185,146,229, 28,134,135,140, 35, 15,153,183,204,158,199,123,169,192,125, 22, 90,190, 88,180,140, 70,227,
+188, 87, 94,121,101, 76,199,142, 29, 67,252,253,253,145,146,146,114,151,200, 42, 44, 44,132,159,159, 31,244,122, 61, 54,110,220,
+152,111, 52, 26,231,121, 19, 7, 22,139, 5, 17, 17, 17,200,204,204,132,224,193,127,154,227, 56,168, 84, 42, 20, 22, 22,194,147,
+ 40, 40,169,194, 48,155,205,176, 88, 44,176, 88, 44, 48,155,205, 40,229,244, 78,106,113,226, 87,173, 86, 11, 0,218,152,152,152,
+202, 74,165, 18,215,175, 95, 7,138, 70,246,117,124,242,201, 39,165, 89, 89, 89,244,249,231,159,223, 75, 41,125,209,203,236,248,
+166,221,187,119, 39, 0,128, 74,165,186, 4, 0, 73, 73, 73,150,220,220,220, 98,150, 66,181, 90, 77,123,247,238, 29, 77, 41,197,
+238,221,187, 19,100, 50, 25,133,135, 57,175, 0, 24, 54,108,216,112, 46, 48, 48,112,229,172, 89,179, 6,119,239,222,253,108,237,
+218,181, 19,180, 90,109,186, 94,175,215, 27, 12, 6, 42,145, 72,100,193,193,193,202,173, 91,183, 94, 61,112,224, 64,199,128,128,
+128,149, 27, 54,108, 56, 7,192,173,229, 77,163,209, 36,233,116,186, 10,226, 55,117, 22, 89,169,169,169,160,148,226,218,181,107,
+ 80,171,213,183, 88, 57,242,207, 65,108, 84,185, 90, 94, 92,143,249, 42,178,156,133,193,214,173, 91, 75,156, 67,203, 87, 78,103,
+ 81,244,250,235,175, 99,225,194,133,119, 89,180, 62,252,240, 67, 0,192,187,239,190,235,179,143,150,104,189, 74, 93, 24,130,168,
+113,217,197,194, 14, 0, 68, 12, 95, 41,167,116,227,121, 30,211,166, 77,187,203, 73,221,185,107,207,199, 46,190, 98,225, 76, 79,
+ 79, 7,207,243, 8, 9, 9,193,144, 33, 67,208,185,115,103, 71, 23,100,105,121, 47, 92,184,176,239,173,183,222,170, 83,171, 86,
+ 45, 76,159, 62, 61, 59, 40, 40,200,255,133, 23, 94,224,115,115,115, 73, 73, 22, 45, 38,180, 24, 24,202, 64,104,137, 25,204,215,
+ 81,135,238, 10, 75, 66, 72, 71,231,185, 54, 40,165,121,132,144, 33,157, 58,117,250,105,245,234,213,170,138, 21, 43,226,194,133,
+ 11,200,206,206,134,201,100,130, 76, 38, 67,116,116, 52,114,115,115,241,237,183,223,234,117, 58,221, 16, 74,105, 94, 73,156, 0,
+222,105,212,168,209,231,115,230,204, 81,214,175, 95, 31,217,217,217, 40, 44, 44, 44, 54,139,117, 64, 64, 0, 84, 42, 21, 14, 31,
+ 62,140, 45, 91,182,232, 1,188,227,133,211,157,154,131,217,108,118, 8, 46,111, 66,203,133, 83, 35, 90,117,116, 58, 29, 0, 88,
+202,149, 43, 23, 5, 0,215,174, 93, 3,128, 27,137,137,137, 83, 42, 86,172, 72, 86,172, 88, 65, 41,165, 91,220,137, 44, 23,206,
+236, 86,173, 90,229, 0,136, 50,153, 76, 50, 0,200,203,203, 51,135,133,133, 69, 40, 20, 10, 65,165, 82, 9, 74,165, 82, 72, 73,
+ 73,177, 90,173, 86, 25, 0,180,106,213,202, 4, 32, 21, 78,190, 32, 46,156, 2,128,252,165, 75,151, 78, 25, 58,116,104,179,230,
+205,155,215, 26, 61,122,244,153,231,159,127,158,139,141,141, 13, 46, 40, 40, 48, 92,185,114, 37,231,147, 79, 62, 41, 56,120,240,
+ 96, 71,169, 84,122,115,233,210,165, 83, 0,228,219,239,189,139,211,106,181,254,177,125,251,246,103,187,119,239,206, 39, 39, 39,
+ 35, 45, 45,205, 33,178,210,210,210, 80,189,122,117, 28, 56,112,192,102, 54,155,183,151,226,125,150,149, 37,135,113, 22, 53, 66,
+168,152,215, 61, 9, 44,177, 49,229, 43,167,179, 40,234,223,191,127, 49, 43,150, 76, 38,195,186,117,235,220,150, 27,110,102, 56,
+239,232, 58,159,148, 24,166,183,222,122,171,152,104,123,239,189,247, 60, 6,205,219,251, 20,121,242,190,140, 45, 62,234,208, 67,
+ 62, 47, 41,156, 98,217, 41,149, 74,241,222,123,239,249,108,209,130,139,143,150, 59, 78, 49,238,109,218,180,129, 78,167,115, 8,
+ 89, 79, 22, 45,111,239,211,102,179,141, 91,184,112, 33, 13, 8, 8,120, 34, 63, 63,255,127,183,110,221, 90,166,211,233,154,228,
+229,229,149,104,209, 50, 26,141, 10,150,143, 24,231,131,152, 75,235, 63, 37,180,236,149, 36,202,149, 43, 87,108,237, 44,142,227,
+138,109,165,241, 51,176,103,220,173,132,144,167, 91,180,104,241,253,184,113,227,252,235,215,175, 47,173, 80,161, 2,180, 90, 45,
+174, 95,191,142,179,103,207, 90, 55,108,216,144,175,211,233,254, 71, 41,221,234, 3,223,114, 66,200,150, 46, 93,186, 76,110,218,
+180,233, 75,239,191,255,190,164,106,213,170,200,203,203, 67,112,112, 48, 34, 34, 34,112,241,226, 69,108,220,184,209,150,153,153,
+249, 57,128,169,148,210,140,210, 54,248,205,102, 51, 6, 13, 26, 4, 65, 16, 48,127,254,124, 16, 66, 74,211,188, 53,155,205,102,
+ 10,128,100,102,102, 2,128,206, 62,187, 52,174, 92,185, 2, 0, 55, 19, 18, 18,252, 1, 96,251,246,237, 4,128,175, 75,250, 80,
+103,203, 86,245,234,213,175,187, 22,142,162, 37, 75,180,130,193,251, 66,208,134, 1, 3, 6,164,235,116,186, 46,175,191,254,250,
+228,197,139, 23, 15, 94,188,120,241, 93, 23, 5, 4, 4,172,156, 59,119,238,212, 1, 3, 6,164,123,178,102,217, 45,120,239, 14,
+ 27, 54,108,192,233,211,167,253,149, 74, 37,180, 90, 45,178,178,178, 96, 54,155,145,152,152,136,244,244,116, 44, 95,190,188, 64,
+175,215,127,192,178,227, 63, 3,103, 97,224,201,170,229, 77,100,149,100,213,249,229,151, 95,220,206, 81, 85, 90, 78, 87,177,225,
+235,220, 86, 37, 53,138,196,105,105,220, 77, 25, 81,154,114,205, 29, 47,207,243,248,248,227,143, 29,147,182,186,179,100,149,198,
+162, 37,114,134,132,132, 20,153,201,237, 75, 38,117,235,214,237,158,121,237,203,145,189,236,244,140, 25,227,199,143,159, 82,189,
+122,245,170, 0, 20,206,239,128, 45,210,192,192, 80,198, 66,203,102,179, 37, 85,171, 86,173, 88, 1,231,109, 49, 83,139,197,146,
+228, 99,230,222, 66, 8, 73,156, 59,119,238, 43, 26,141,166,163, 78,167,171, 99, 47, 56, 78,107,181,218,237, 70,163,113, 65,105,
+ 22,129,182, 11,167,177,132,144,249, 93,186,116,249,176,125,251,246,253,222,120,227, 13, 66, 41,197,146, 37, 75,232, 95,127,253,
+181, 22,192, 59,148,210,191,238,229, 37,133,132,132,156,251,246,219,111, 35,127,250,233, 39, 88, 44, 22, 44, 88,176, 0,254,254,
+254,231, 74, 17,190,116,158,231,191,107,222,188,249, 51, 7, 14, 28, 88, 78, 41, 61, 37,151,203,151,181,108,217,114,216,129, 3,
+ 7,126,160,148,158,229,121,126, 89,211,166, 77,135, 29, 57,114,100, 13,165,244, 68, 41,130,231,176,108, 89,173,238,123, 26,221,
+ 89,178,188, 32,127,196,136, 17,230, 17, 35, 70,188, 49, 96,192,128,175,142, 28, 57,210, 36, 55, 55,183, 14, 0, 4, 5, 5,157,
+110,220,184,241,225,213,171, 87, 95,180, 91,178, 12,222,190, 13, 33,164,119,157, 58,117,214, 79,159, 62, 93, 83,171, 86, 45,190,
+114,229,202,184,113,227, 6,206,156, 57, 99,253,230,155,111, 10,245,122,125, 79, 74,105, 14,203,142,255,156,208,162,148, 34, 40,
+ 40,168, 88, 35, 74, 28,242, 95,218,238, 66,231,138, 89, 92,170,199,149,215, 19,103, 73,211, 38,136,240,243,243,115, 76,110,234,
+139,203,130, 32,148, 60, 31, 27,165,212,193, 41,110, 62,136, 44,175, 35, 4,237, 75,224,248,204,233,203,244, 14, 26,141, 6, 22,
+139,197,193,235,195,200, 79, 82,202,111,246, 11,128, 95, 42, 87,174,124, 5, 64, 37, 38,174, 24, 24, 30,160,208,202,206,206,110,
+244, 32, 31,108, 23, 82, 83,237, 91, 89,113,254, 5, 96, 0, 33,100,206,159,127,254, 41,246, 35, 76,243,182, 94,162, 55, 92,184,
+112,161,187, 84, 42,253, 98,229,202,149, 77, 41,165, 8, 12, 12, 60,120,227,198,141, 23, 74,195, 97,181, 90, 71, 16, 66,198,136,
+163, 8, 77, 38,211, 8, 66,200, 43,148,210, 66,167,243,142,253,210, 70, 29,128,145, 82, 26,227,225,188,177, 20, 34,203, 97,217,
+ 2, 96, 90,189,122,117, 33,128,147,248,123,158, 44,139,125, 51,192,169,187,208,203,119,217, 65, 8,169,252,222,123,239,205,144,
+ 72, 36, 29,180, 90,109,172, 70,163,185,109,181, 90,255,208,233,116,239, 80, 74,179, 88, 86,252,231, 96, 50,153,146,171, 85,171,
+198,187,107, 64,149, 84,145,151,212,176,178,217,108, 73, 85,170, 84,241,218, 56,115,195,153, 92, 66, 58,186,153,152,152,200,249,
+202, 37,194,108, 54,167,151, 20,206,196,196, 68,148,150,211, 91,220, 19, 18, 18,220,198,221,139, 32, 76, 46,161,252,184, 39,206,
+146,222,103, 73,208,235,245, 57,225,225,225,133, 6,131, 65,106, 52, 26,165, 86,171,181,152,249, 81,165, 82,101,176,156,195,192,
+112,159, 66,235,223, 12,187,176,234, 81,134,124, 70, 0,207,148, 1,143,193,101,191,176,164,253, 82,226, 65, 88,132, 4, 0,186,
+ 50,122,135,153, 0,158,103, 89,238,209, 67,102,102,230, 19,101,205,153,149,149, 85,230, 13,181,140,140,140,102, 15, 32,238,141,
+254,171,156, 37, 33, 57, 57,249, 9,150, 51, 24, 24,202, 6, 28,123, 5, 12, 12, 12, 12, 12, 12, 12, 12, 15, 6, 4, 64, 71,119,
+ 39, 74, 51,154,128, 16,210,177,180, 15,246,198,207, 56, 25, 39,227,100,156,140,147,113, 50,206,199,143,211, 27,247, 99, 55,154,
+145, 82,250,192, 54, 0, 29, 25, 39,227,100,156,140,147,113, 50, 78,198,201, 56,255,171, 27,235, 58,100, 96, 96, 96, 96, 96, 96,
+ 96,120, 64, 96, 66,139,129,129,129,129,129,129,129,129, 9, 45, 6, 6,134,127, 35, 8, 33, 85,203,151, 47,127,190, 90,181,106,
+201,132,144,225, 15,248, 89, 67,154, 53,107,150,165, 84, 42,183, 18, 66,170,178,183,207,192,192,192,132, 22, 3, 3,195, 99, 45,
+178,234,212,169,179,247,194,133, 11,213,183,111,223, 30, 19, 27, 27,251,209,131,124, 94,163, 70,141,102,239,217,179, 39,228,247,
+223,127,239, 20, 21, 21,181,251, 94,196, 22, 33,164,106,124,124,252,249,106,213,170, 37, 17, 66,134,148,241,251, 24,222,188,121,
+243,108,133, 66,177,133, 9, 65,134,255, 64,254,175, 77, 8,169,195,132, 22, 3, 3, 3,195, 3, 20, 89,251,247,239, 15, 53, 24,
+ 12,184,112,225, 2, 50, 50, 50, 78, 60,200,103, 94,186,116, 41,103,255,254,253,136,139,139,195, 15, 63,252, 16,158,144,144,176,
+167, 52,130, 70, 12,243,249,243,231,171,111,223,190, 61, 54, 34, 34,226,147,178, 12, 95,147, 38, 77, 62,220,179,103, 79,240,214,
+173, 91, 59,135,135,135,239,102, 98,139,225, 49,204,247, 10, 66,200, 51, 28,199, 29,174, 93,187,246,233, 90,181,106,157,226, 56,
+238, 0, 33,164, 63, 33,132,255, 79,190, 19,113,137,133,205,155, 55,239, 2,128,110,221,186,181, 97, 73,133,129,129,225, 62, 11,
+219, 90,181,106,213, 58,120,240,224, 65,181, 94,175,199,154, 53,107,240,254,251,239, 91,178,179,179,247, 0,208,186,185,229, 8,
+128,207,124, 89,122,139, 16, 18, 0, 96, 12,128,198,110, 78,107, 66, 66, 66, 90, 77,153, 50, 69,250,228,147, 79,194, 96, 48,160,
+111,223,190,134, 75,151, 46,213,167,148, 94,242, 85, 24,234,245,122, 28, 61,122, 20, 61,123,246,220,106,177, 88,186,148,213,123,
+ 9, 12, 12, 60,251,203, 47,191,212,140,137,137,193,181,107,215, 48,108,216,176,140,180,180,180,214,222,194,198,192,240, 47,200,
+243, 21, 0,188,228,231,231, 55,178,109,219,182,193, 61,123,246, 68,104,104, 40,172, 86, 43,110,223,190,141, 77,155, 54, 97,255,
+254,253, 41, 38,147,105, 33,128, 47, 41,165,185,238,120, 30, 71, 45, 66, 40,165,216,188,121, 51, 5,208,214, 30,185, 93, 44,201,
+ 48, 48, 48,220,103,161,187, 95,167,211, 53,211,233,116, 40, 40, 40, 64,185,114,229, 32,149, 74,221, 94,155,158,158,142,125,251,
+246,225,229,151, 95, 62,151,154,154,218,186,164,117, 47, 9, 33,193, 13, 26, 52,216,191, 99,199,142,170,254,254,254,142,227,130,
+ 32,192,108, 54,195, 98,177,192,108, 54,195,104, 52,194,104, 52, 66, 46,151, 67,165, 82, 33, 36, 36,228, 12,165,180,142,175, 34,
+235,248,241,227, 24, 58,116,104, 70, 86, 86, 86,153,138, 32, 66, 72,213,136,136,136,221,203,151, 47, 15, 79, 76, 76,196,173, 91,
+183,240,220,115,207,101,222,188,121,179, 21, 19, 91, 12,255,226,252, 62,241,233,167,159,254, 48, 50, 50,146,171, 93,187, 54,162,
+163,163, 97, 52, 26,161,215,235, 65, 41, 5,207,243,160,148, 34, 47, 47, 15,187,119,239,198,142, 29, 59,140, 57, 57, 57,223, 2,
+ 88, 64, 41,189,236, 36,178, 30, 75, 45,226, 16, 90,221,186,117, 35, 44,185, 48, 48, 48,148, 81,193,123, 58, 47, 47,175,182,209,
+104,132, 86,171,245,233,158,107,215,174, 97,248,240,225,231, 82, 83, 83, 91,184,179,108, 17, 66, 2, 26, 52,104,112,104,247,238,
+221, 85, 13, 6, 3,242,243,189,175, 59, 47,151,203,161, 84, 42, 17, 26, 26,122,128, 82,218,220, 83, 75,188,118,237,218, 71, 15,
+ 28, 56, 16,162,215,235,113,226,196, 9, 12, 25, 50,196,156,157,157,189, 23,238,173,111, 0,144,141,162,117, 84,111,186,225,139,
+ 7,240, 10,128, 10, 30,238,213,132,135,135,183, 92,177, 98,133,172, 98,197,138,208,233,116,232,223,191,127,246,165, 75,151, 26,
+ 83, 74,175,179,212,195,240, 47,204,239,151, 46, 92,184, 80,197,102,179, 33, 51, 51, 19, 70,163, 17, 58,157,206, 33,180, 36, 18,
+ 9, 40,165,176, 90,173,142,134,209,177, 99,199,176,125,251,118,122,237,218,181,247, 41,165,211, 68,161,245, 56,106, 17,158, 37,
+ 17, 6, 6,134, 7,128, 1, 77,154, 52, 57,241,219,111,191, 41,229,114, 57, 54,110,220,232,177,235, 48, 50, 50,178,214,178,101,
+203, 18, 18, 19, 19,177,104,209,162,154,125,251,246, 29, 3, 96,134, 27,206, 49, 59,118,236,168,106, 48, 24,112,226,196, 9, 12,
+ 27, 54,236,122, 90, 90,218, 89, 87, 17,147,144,144,208,234,147, 79, 62,145, 54,108,216, 16,249,249,249,232,212,169,147, 14,192,
+ 75, 37,132,117,236,206,157, 59, 67,244,122, 61, 10, 10, 10,208,182,109, 91,100,101,101,201, 0,180,247,116,131, 94,175, 71,133,
+ 10, 21,170, 2,184, 75,188,133,134,134,126,125,235,214,173,118, 42,149,170,196, 23,100, 54,155,145,148,148,132,160,160, 32,108,
+218,180, 41,164, 82,165, 74,239, 2, 24,193,146, 14,195,191, 17, 38,147, 9, 63,254,248, 35, 26, 52,104,128, 26, 53,106,160,176,
+176,208, 33,186, 76, 38,147, 67,100, 1, 0,199,113,104,220,184, 49,170, 84,169, 66, 94,123,237,181, 33, 0,166, 61,206,239, 70,
+ 20, 90, 83,152,143, 22, 3, 3, 67, 89,129, 82,122,137, 16, 82,191, 99,199,142,123,214,174, 93, 27,214,181,107, 87, 84,170, 84,
+ 73,218,167, 79,159,112,173, 86,219,193,165, 53, 28, 60,108,216,176,163,183,111,223, 78,176, 31,106,236,129,182,177,191,191,191,
+232,219,116, 61, 45, 45,173,145,107, 55,163, 66,161,216,114,242,228, 73,169, 92, 46,199,145, 35, 71, 48,124,248,240,204,235,215,
+175,123,235,150, 11, 50,153, 76,144, 72, 36, 0,128,164,164, 36,175,241,187,117,235, 22, 4, 65, 48,186, 59,199,113,156,226,216,
+177, 99,136,137,137, 41,145,131,227, 56,200,100, 50,231, 67,185, 44,229, 48,252, 75, 97, 49,153, 76,104,212,168, 17,174, 95,191,
+142, 99,199,142, 57, 4, 87,102,102, 38, 82, 82, 82,138, 93,124,248,240, 97, 28, 63,126, 28,173, 91,183,118,229,121, 44,181, 8,
+111,143,208, 7,155, 55,111,102, 2,139,129,129,161,172,197, 86,171, 30, 61,122,236, 94,190,124,121,120,185,114,229,224,239,239,
+ 31,224,230,186, 28, 66,200, 89,169, 84,154,224, 43,119, 90, 90,218, 89,119,190, 92, 81, 81, 81,245, 77, 38, 19,142, 31, 63,142,
+ 33, 67,134,100,216,125,190,188,249, 62, 77,239,208,161, 67,143,173, 91,183,134, 40,149, 74,156, 61,123,214,151,174,195, 27, 0,
+ 22,184, 59,145,145,145, 49,164,117,235,214,239, 1, 8,241,112,175,166, 74,149, 42, 45,143, 30, 61, 42, 35,132,224,198,141, 27,
+232,223,191,127, 54,128, 79, 89,170, 97,248,151, 98,242,211, 79, 63,253,205,152, 49, 99, 2,155, 54,109,138,164,164, 36,135,224,
+170, 95,191, 62,234,214,173,139,191,254,250, 11, 91,182,108,193,241,227,199,161, 80, 40, 80,169, 82, 37, 20,206,249, 4,248, 4,
+ 22,145,228,113,213, 34,142, 81,135, 12, 12, 12, 12, 15,164,144, 33,164,170, 76, 38,155, 31, 30, 30, 94, 47, 57, 57,249,117, 74,
+233, 15, 46,231,131,251,245,235,119,118,213,170, 85,209, 55,110,220, 64,197,138, 21, 55, 82, 74,123,185,225,217, 64, 41,237,121,
+237,218, 53,180,104,209,194,173, 69,139, 16, 50, 60, 42, 42,106,106, 65, 65, 65,158, 78,167,235,239,171,131, 57, 33,164,106,229,
+202,149,247,108,220,184, 49, 76,173, 86,227,252,249,243, 15,204, 25,190, 90,181,106,123, 15, 31, 62, 28, 42,149, 74,113,228,200,
+ 17, 12, 27, 54,140, 57,195, 51, 60, 14,249,220, 31,192,248,196,196,196, 55, 71,141, 26,165,168, 89,179, 38,146,146,146,144,145,
+145,129,156,156, 28, 28, 60,120, 16, 0, 16, 27, 27,139,216,216, 88, 92,188,120, 17,251,246,237,203, 47, 44, 44, 28, 65, 41,253,
+233,177,126, 55, 76,104, 49, 48, 48, 60,228, 2, 57, 30, 78,206,226,253,250,245,107,180, 98,197,138,232,172,172, 44, 28, 58,116,
+ 8,125,251,246,125,135, 82, 58,195,205,125,111,167,166,166,126, 8, 0,103,206,156,113,245,209,242,232,156, 94, 26, 17, 84,161,
+ 66,133, 61,107,214,172, 9, 11, 13, 13,197,133, 11, 23,208,191,127,255,179, 90,173,182,118, 89,197, 93,173, 86,111, 77, 77, 77,
+237, 36,147,201,112,224,192, 1, 12, 25, 50,132, 77,239,192,240,184,229,239, 8, 0,239,214,172, 89,243,165,145, 35, 71,242,241,
+241,241, 72, 78, 78,198,159,127,254,137, 74,149, 42,225,246,237,219,216,177, 99,135, 41, 35, 35, 99, 62,128, 89,148,210,188,199,
+254,165, 60,200, 21,171,193, 86, 54,103,156,140,147,113,222,125,221,150,115,231,206, 81, 17, 54,155,141, 38, 39, 39,211,173, 91,
+183,210,168,168,168,179, 0, 2,220,113, 2, 8,168, 81,163,198,133,139, 23, 47,210, 91,183,110, 81,179,217,236,224,184,112,225,
+ 2, 5,176,235,126,195, 9,160,106,108,108,108,250,206,157, 59,233,197,139, 23,105, 84, 84,212,237,178,140,123,133, 10, 21,210,
+ 51, 50, 50,232,159,127,254, 73,195,195,195,211, 1, 84,101,105,137,113, 62,142,156,246,134,212,138,134, 13, 27,218, 22, 46, 92,
+ 72, 95,122,233, 37, 26, 31, 31,111, 3,240, 53,128,216, 7,169, 61, 30,181,141,141, 58,100, 96, 96,120,216, 80, 28, 60,120, 16,
+ 10,133,194,113,224,212,169, 83,206,243,104,229,123,104, 20,230, 19, 66, 90,116,237,218,117,207,194,133, 11,107, 88, 44, 14,215,
+ 14,236,220,185, 19, 0,140,101,208,240,188, 68, 8,105,221,165, 75,151, 5,161,161,161,245, 82, 83, 83, 39,151,101,196,111,220,
+184,241,122,157, 58,117,102, 20, 20, 20,228,151,166,107,147,129,225, 95,104,196,185, 1, 96, 40, 33,228,163, 99,199,142,189, 3,
+128, 2,152, 78, 41, 61,255, 95,123, 23, 76,104, 49, 48, 48, 60,108, 12,127,254,249,231, 93,157,197,125,154, 25,222,238, 56,223,
+188, 91,183,110,174, 51,195,123,116, 78,191, 23,177, 5,160,243, 3,170,124,126, 0,240, 3, 75, 2, 12,255, 33,193,117, 22,192,
+192,255,242, 59, 96, 66,139,129,129,225, 97, 23,188, 55, 1, 60,119, 31,247,231,195,253, 60, 91, 12, 12, 12, 12,143, 28,216,162,
+210, 12, 12, 12, 12, 12, 12, 12, 12, 76,104, 49, 48, 48, 48, 48, 48, 48, 48,252,187, 64, 0,116,116,119,130, 82,186,221,103, 18,
+ 66, 58,150,246,193,222,248, 25, 39,227,100,156,140,147,113, 50, 78,198,249,248,113,122,227, 46,141,254,248, 87,192,199, 97,156,
+132, 13,125,101,156,140,147,113, 50, 78,198,233, 11,167,189, 17, 79, 80,212,107,194,137,251,143,248,116, 4,228, 81,141,251,127,
+133,243, 63, 57,189, 3, 33,196,241,178, 8, 33, 2, 0,129,150,193, 12,167,132, 16,241, 67,148, 9, 31,195, 3, 48,117, 22,125,
+ 35,242,183, 30,103,223,137,129,129,161, 84,101,135,196,169,178,181, 1,176, 17, 66,240,168,149, 37,101, 89,207, 61,136,184,255,
+151, 57, 31, 23,240, 37,189, 48,137, 68,178, 53, 44, 44,172, 93,102,102,166, 96, 63, 14,185, 92, 14,142,227, 32,149, 74,245, 5,
+ 5, 5, 1,247,240, 49,190,142,140,140, 28,158,149,149, 37,112, 28, 7,165, 82, 9, 66,136,131, 51, 55, 55, 55,224,159,126, 41,
+ 21, 42, 84,200,209,235,245,126,174,199,149, 74,165,225,230,205,155,254,255,133,130, 82, 38,147, 61, 29, 18, 18, 18,148,145,145,
+ 65,197,197,111, 37, 18,137,184, 16,174, 53, 55, 55,247, 59, 95,249, 66, 66, 66, 14,135,132,132, 4,137,247, 19, 66,144,149,149,
+149,155,150,150,214, 4, 0, 84, 42,213, 62,141, 70, 19,202,243, 60, 36, 18, 9, 36, 18, 9,116, 58, 93, 86,102,102,102, 11, 86,
+109,253, 59,177,118,237, 90, 73,151,216,231, 42,241, 84, 95,151,227,104,160, 32,144, 60, 43, 81,157,218,146,252,245, 85, 95,238,
+239,215,175,159,141,189,197,135, 7,133, 66, 49, 63, 50, 50,114,100, 97, 97,161,142, 16, 66, 9, 33, 40,170, 6,112,215,175,205,
+102, 75,202,204,204,108,228,165,178,149,202,229,242,185, 81, 81, 81,195,116, 58,157,206,206, 71, 9, 33,136,142,142, 46,198, 7,
+ 0, 22,139, 37, 41, 35, 35,163,145, 47, 97,141,136,136, 88,170, 82,169,254,167,211,233,180,118, 97,228,220, 67,227, 92,153,255,
+149,145,145,209,202,155, 48,144,203,229, 11, 34, 35, 35,159,181,199, 29,132, 16, 26, 30, 30,126,223,113,143,140,140, 28,166,213,
+106,139,197, 61, 34, 34,194, 45,167,167,184,187,227,116, 14, 39, 33, 4,225,225,225,247, 29,206, 71,145,243,177, 23, 90, 0, 56,
+ 66,200,134, 22, 45, 90,180,221,181,107, 23,119,225,194, 5,174,122,245,234,176,217,108, 16,132,162,116, 29, 23, 23,167,190,135,
+ 10,124, 89,171, 86,173, 6,237,222,189,155,219,176, 97, 3,215,184,113, 99, 16, 66, 96,179,217, 96,179,217, 80,187,118,109,213,
+125, 10, 4, 63,158,231, 95,147,203,229,109,172, 86,107, 13, 0,144, 74,165,231,141, 70,227, 46,171,213, 58,143, 82, 90,232, 11,
+143,217,108, 86,167,167,167,223,245,110, 18, 19, 19,229,247, 26,182,128,128,128,253, 28,199, 37, 58, 94,176, 93,112,184,203,204,
+226, 47,165,244, 90, 70, 70, 70,115, 79,156,193,193,193, 14, 78, 79, 28,174,199, 4, 65,184,150,158,158,222,220,139,200,234,219,
+170, 85,171,192,237,219,183,147,219,183,111, 19,149, 74, 5, 65, 16, 96,179,217, 96,177, 88, 80,179,102,205, 82, 77, 11, 18, 20,
+ 20, 20, 48,113,226,196, 74, 79, 61,245, 20,214,173, 91,135,103,158,121, 6, 45, 91,182,188, 44,158,215,104, 52,161,231,206,157,
+171, 18, 18, 18, 2,157, 78,135,188,188, 60,116,234,212,233, 95,159,185,154, 54, 40, 55,157,112,196, 49, 87, 20,181,218,178, 15,
+158, 76,126,247,126,121,131,130,130,142,203,229,242, 72,241,187,114, 28,231,246, 91, 59, 31, 51, 24, 12,105,153,153,153, 13,188,
+228,159, 10, 0,122, 72, 36,146,202, 60,207, 87, 3, 80,193,106,181, 70, 2,128, 76, 38, 75,147, 72, 36, 55, 44, 22,203, 69,147,
+201,116, 5,192, 47,246, 9, 9,221,162, 75,236,115,149,136, 85,215,175,192, 40,116, 85, 87,156, 85, 85,247,215,196, 75,106,133,
+238,215, 46,177,207,173,245, 85,108,253,131, 13,141,170, 0, 86,163,104, 65,233,151,236,243, 0,221, 15, 95, 44,128,158, 0,170,
+202,100,178, 4,179,217,156, 9,224, 24,128,237,148,210,203,132,144,248,240,240,240, 31, 4, 65, 48,102,101,101, 61,231,110, 25,
+161,102,141,202, 31,229, 56, 46, 14,118, 25, 33, 80, 91,210,129,163,183,203,164,130,146, 72, 36, 11,250,244,233,243,236,218,181,
+107,213,199,142, 29, 83,215,168, 81,195, 81, 62, 9,130, 0, 87, 67, 68, 66, 66,137,107,127, 19, 0, 60,199,113,243,251,245,235,
+ 55,120,197,138, 21,234,155, 55,111,170, 99, 98, 98, 28,156,206, 34, 78, 68, 76, 76,140, 79, 97, 13, 13, 13,253,250,169,167,158,
+ 26,186,124,249,114,233,198,141, 27, 85, 97, 97, 97, 8, 13, 13,133, 76, 38,187,235,218, 22, 45, 90, 8, 94,232, 56,142,227, 22,
+244,234,213,107,232,170, 85,171,212,135, 14, 29, 82,215,174, 93, 27, 18,137,228,190,227,222,187,119,239,193, 63,254,248,163,250,
+244,233,211,234,202,149, 43,131,227, 56,112, 28,119, 23, 31,199,113, 40, 87,174,156, 79,156, 61,123,246, 28,188,122,245,106,245,
+241,227,199,213,213,170, 85,115,188, 79,167,110,187, 82,135,243, 17,231,124,124,133,150,221,140,186,162, 69,139, 22, 93,118,237,
+218, 37, 1,128,227,199,143, 35, 59, 59, 27,177,177,177,240,243,243,131, 66,161,128,193, 96,160,165, 44,108,190,182,139, 44, 41,
+ 0,172,255, 95,111, 92,147, 2, 47,167,155, 32,147,201,240,215, 95,127, 65, 34,145,208,251, 40,204, 90, 7, 4, 4, 44,255,233,
+167,159,130, 27, 52,104,192,101,102,102, 34, 33, 33, 1,217,217,217, 77,118,239,222,221,240,185,231,158,123,142, 16,242, 12,165,
+116,183,175,156,191,254,250, 43, 52, 26, 13,212,106, 53, 52, 26, 13, 76, 38, 19,185,231, 23,205,243,113, 55,110,220,136,240,243,
+243,131, 32, 8,142,205,165,127,219, 1, 65, 16, 80,165, 74, 21,179,151, 2, 50,238,230,205,155, 17, 42,149, 10,148,210, 98,124,
+ 54,155, 13, 10,133,194,185,229, 0,155,205,134,196,196, 68,179, 55, 75,150, 40,178, 0, 96,229,202,149,136,138,138, 66, 68, 68,
+ 4, 52, 26, 13, 84, 42, 85,177,138,221,199,130, 28, 93,186,116,193, 7, 31,124,128, 89,179,102, 97,252,248,241,197, 10, 90,169,
+ 84,138,144,144, 16,252,254,251,239, 8, 8, 8, 64,124,124, 60,164, 82,233,191,223, 50,200,145,144, 3, 71,111, 57, 44,180, 79,
+182,175,206, 55,109, 24,191,216,254,133,193,113,128, 32, 20, 85,157,132,128, 90, 45, 66,206,145, 83,201,147,125,120,159, 49, 55,
+111,222,140,112,158, 89,189, 36,216,108, 54,196,198,198, 74,188,228,159,174,181,106,213, 90, 63,122,244,104, 89,229,202,149,137,
+ 76, 38, 3,207,243,224,121, 94, 76,143,241,148,210,120, 65, 16,218,166,165,165,209, 69,139, 22,125, 68, 8,233, 67, 41,253,213,
+109,122,167,250,186, 5, 70,161,235,158, 19,104,210,175,227, 91,248,125,205,196, 38,173,234, 11,240, 87,235,175, 2,120,100,133,
+ 22, 33,164,106,173, 90,181, 78, 28, 58,116, 72,105, 54,155,209,180,105,211,131,132,144,134,247, 50,131, 59, 33, 36, 24,192, 39,
+147, 38, 77, 26, 58,122,244,104, 73, 80, 80, 16,228,114, 57, 10, 10, 10,112,245,234,213, 97,223,125,247, 29, 37,132,124, 6,192,
+255,198,141, 27,205, 14, 31, 62,140,118,237,218,189, 2,224,181,187, 21,129, 36,110,223,225,235, 17,226,126,207, 46,117,100,205,
+ 27,199,167, 21, 53,200, 92,175,166, 16,108, 66,210,161, 19, 73,141,124, 8,227, 71, 79, 63,253,244,144,181,107,215,250, 1,192,
+146, 37, 75,240,244,211, 79, 35, 36, 36, 4,106,181, 26, 50,153, 12, 82,169,180,216,175, 23, 11,145, 4,192, 71, 3, 7, 14,236,
+183, 98,197, 10,127, 0, 88,177, 98, 5,122,247,238,141,208,208, 80,248,251,251, 67, 46,151, 67, 34,145,148,250,219,132,134,134,
+126,221,178, 73,147, 17,203,151, 47, 7, 0,188,243,234,171,120,234,137, 39,224,167, 86, 65,173,146, 67,124, 23,114,137, 20, 79,
+190, 60,206, 91,188, 57, 0,115,158,126,250,233, 1,171, 86,173,242, 7,128, 99,199,142, 33, 61, 61, 29,145,145,145, 80,169, 84,
+144,203,229,142, 56, 19, 66,160, 82,169,124,138,251,211, 79, 63,221,239,199, 31,127,244, 7,128,101,203,150,161, 75,151, 46,142,
+184, 43, 20, 10,200,100,178, 98,155,171,232,116,199,217,167, 79,159,126,171, 87,175,246, 7,128,239,190,251, 14, 29, 59,118, 68,
+112,112,176,227,125,138, 92,165,249, 70,143, 50,231, 99, 45,180, 68,223,169,200,200,200, 1,123,246,236,225,156, 68, 2, 20, 10,
+ 5, 20, 10, 5,228,114,185,163,251,176, 20, 5, 14,137,140,140, 28,190,123,247,110,199, 77, 38,122,151,233,186,212, 21,184, 19,
+127,199,118,237,218,253,184,105,211, 38,165, 76, 38,131, 94,175,199,217,179,103, 17, 24, 24, 8,185, 92,142, 94,189,122, 73, 90,
+180,104, 17,218,182,109,219,117,132,144,193,190,140,104,160,148,194,207,207,175,152,208,186,223, 46,102,149, 74,133,141, 27, 55,
+ 66, 34,145,184, 45,192,156,255, 71, 68, 68,248, 18,111, 40, 20, 10,236,223,191, 31, 18,137, 4, 82,169, 20, 60,207, 67, 42,149,
+ 98,243,230,205,120,227,141, 55,144,153,153, 9, 66, 8,164, 82, 41,252,253,189,246,122,146,144,144,144, 32, 81,100,137, 34, 72,
+165, 82, 65, 42,149, 18,158,231,137,216,181, 71, 8, 33,190,246,185,115, 28,135,239,191,255, 30,179,103,207,198,132, 9, 19,176,
+116,233, 82,212,173, 91,215, 89,132, 34, 63, 63, 31,193,193,193, 8, 14, 14,134, 82,169,188,231,180,240, 40,193,245,237,204,157,
+183, 80, 13,129,162,200, 9, 68, 0, 4,128,130, 66,160, 2,210,146,175,226,253, 15, 62,246,185,246, 81, 40, 20,216,183,111,159,
+ 67, 12,241, 60, 15, 66, 8,156, 5,146,184, 69, 69, 69,121,229,147,201,100, 83,126,254,249,103,249,247,223,127,143, 85,171, 86,
+ 57,210,150, 70,163, 65, 80, 80, 16, 66, 67, 67, 29, 91, 92, 92, 28,249,230,155,111,100,117,235,214,157, 2,224, 87,247,223,156,
+ 6,170, 43,206,170,218,175,227, 91, 0,128,126,111, 81,228, 92,254,176, 30,151, 59, 57,240, 81, 22, 89,117,234,212,217,187,127,
+255,126,165, 78,167,131, 32, 8,248,245,215, 95,213, 29, 59,118,220, 67, 8,105, 85, 90,177, 85,161, 66,133,141,251,247,239,111,
+ 17, 30, 30,142,188,188, 60,228,231,231,195, 98,177, 64, 34,145, 32, 62, 62, 30, 31,125,244, 17,233,213,171,215,216, 97,195,134,
+ 25, 84, 42,149,104,217,168,224,169, 60,114,198,162, 79, 23, 7, 81, 90,148,126,168, 64,139,253,102,167,223,192,171,175,191,239,
+ 83, 24,203,149, 43,247,210,186,117,235,252,156, 45, 75,206, 34,192,185,140, 18, 55, 79,194,192,110,213,224,202,151, 47, 63,226,
+135, 31,126,112,112,134,133,133, 57,202, 37,158,231,193,113, 28,246,236,217,131,153, 83, 38, 33, 56, 60, 6, 11, 63, 93,226, 53,
+156, 17, 17, 17, 75,187,118,237,250,191,101,203,150, 57,142,213,169, 88, 17,221, 90, 60,129,136,176, 0,132, 5, 23,149,109, 84,
+ 32, 56,117,241,186,215,250, 8, 0, 87,174, 92,185,231,214,172, 89,227,231,220, 32, 20,227, 10, 0, 58,157,206, 97,197, 55,153,
+ 76,104,212,168,145, 79,113,119,230, 20,173,109,162,104,115, 45,235,197,134, 76, 73,156,229,202,149, 27, 33, 10, 97, 0, 8, 9,
+ 9, 41,198, 33,149, 74,177,230,247,229,119,213, 13,247,203, 89,218,239,238,202,121,227,198, 13,204,152, 49,195, 81, 38,137, 86,
+ 61, 66, 8, 98, 99, 99,177,112,225,194,146, 56,221,161, 49,128,112,167,125, 19, 0,185,211,111, 6,138, 86,152,112,189, 78, 60,
+ 46, 5, 80,207,126,206, 6,160, 0, 64,144, 27, 62, 79, 60,153, 40, 90, 70, 40,220,229,122,215,231,184, 23, 90,155, 55,111,166,
+ 0,176,113,227,198,118, 61,123,246,220,151,153,153, 41, 92,184,112,129, 59,118,236, 24,164, 82, 41, 34, 34, 34,208,184,113, 99,
+177, 91, 13, 82,169, 20, 26,141,134, 4, 5, 5,165,137, 21,175,248, 18,157,251,218,157, 4, 13,151,157,157, 45,108,219,182,141,
+ 91,209,167, 51, 76, 20,168,255,222, 76,116,233,222, 29, 91, 98,229,144, 0,104,114, 33, 19,106,181,154,151, 74,165, 22,241, 99,
+136,156,206,190, 91,174, 34,137, 16,226,175,209,104,190,249,229,151, 95,148, 28,199,161,160,160, 0,130, 32,160, 69,139, 22,224,
+ 56, 14,103,206,156,193, 59,239,188,131,245,235,215,227,231,159,127, 86, 53,104,208,224, 27, 66, 72, 13, 74,105,129, 83, 33,182,
+221, 93, 34,245,247,247,135, 90,173,118, 8, 45, 49,206,206, 38,112,241,122, 74,105,114,102,102,102,195,146, 56,109, 54, 27,122,
+247,238, 13, 66, 8, 36, 18, 73,177,194,199,249, 87, 38,147,225,204,153, 51,119, 37, 66,119, 2, 81, 16, 4,180,108,217, 18, 0,
+160, 86,171,225,231,231, 39,174,251, 6, 0,168, 95,191, 62, 76, 38, 19,194,194,194,112,254,252,121,119, 5,120, 49,206,140,140,
+ 12,154,146,146, 66, 86,172, 88, 1,169, 84,138,208,208, 80,168,213,106,178,124,249,242, 73, 50,153, 44,206, 96, 48, 8, 38,147,
+ 9,114,185,124,161,104,221,226,121, 94,155,151,151, 23,234,137, 83, 34,145, 96,244,232,209,120,243,205, 55,177,116,233, 82,188,
+248,226,139,119, 89,188, 12, 6, 3,194,194,194, 28, 98,203,151,184,223,191, 16,122,192,156, 2,197,217,227, 91,112,238,244,118,
+ 8, 54, 1, 54,129,130, 82, 27, 4, 43,112,108,219,193, 42,119,174,165,196, 82, 80,192,222,193,161,200, 43,180,182, 13, 83, 84,
+ 3,176, 97,103,166,113,190,183,244,201,243, 60, 44, 22, 11,126,249,229, 23, 92,189,122, 21, 91,183,110,133, 94,175,119,188,199,
+102,205,154, 97,196,136, 17,110,133,150, 43, 39,165,116,217,237,219,183,235,183,108,217,146,228,230,230, 34, 55, 55, 23,122,189,
+ 30, 54,155, 13, 86,171, 21, 60,207, 67,169, 84, 66,165, 82, 33, 50, 50, 18, 6,131,129, 26,141,198,101,158, 56, 5,129,228,233,
+254,154,120,233,247, 53, 19,155,244,123,139, 98,237,108,130, 74,229, 21,186, 63,142,250,143,216,176,119,124, 39, 0, 84,176,107,
+ 7, 14,160, 22,155,144,249,230,164, 79,198, 62,244,111,116,183,200, 10,213,235,245, 40, 40, 40, 42, 30,228,114, 57,214,174, 93,
+ 27,214,163, 71,143,221,132,144,214,158,196,150, 59, 78,127,127,255,120,137, 68,130, 51,103,206,224,243,207, 63,199, 31,127,252,
+129,180,180,180,156,152,152,152,192,182,109,219,114,175,190,250, 42,234,215,175,143,111,191,253, 86,233,141,147, 82,138, 27,151,
+247,224,198,149,189, 16, 4,234,100, 21,119,255,159,250, 24,119,173, 86,107, 56,113,226,132,223, 87, 95,125,133,136,136, 8, 36,
+ 36, 36, 64,173, 86, 67,169, 84, 22,171,100,157, 43, 94,111,121, 83,175,215, 27,110,220,184,225,247,227,143, 63, 34, 52, 52, 20,
+ 21, 42, 84,128, 90,173,134, 92, 46,119, 52, 8, 86,172, 88,129,149, 31, 12,193,141,139,167,209,187, 91, 39,175,225, 84,171,213,
+255, 91,182,108, 89, 49, 19, 72,100,112, 48,120, 41, 7,137,148, 32,184, 67, 31, 0, 64,206,159, 63,121,156, 29,210,133,147, 20,
+ 20, 20, 24, 14, 29, 58,228,119,244,232, 81, 8,130,128, 10, 21, 42, 64,167,211, 33, 32, 32,192, 17,255,109,219,182,161, 87,175,
+ 94,248,254,251,239,209,172, 89, 51,175,113, 47, 44, 44, 52,156, 62,125,218,239,135, 31,126, 64, 72, 72, 8,202,149, 43,231,136,
+187,184, 73,165, 82, 72, 36, 18, 36, 38, 38, 34, 47, 47, 15,126,126,126, 94,191,209,177, 99,199,252,126,248,225, 7, 4, 7, 7,
+ 35, 46, 46,206, 97,113, 19,197,209,236,197, 31, 20,227, 80,146,232,251,230, 44,237,119,119,229,236,221,187, 55, 42, 85,170,132,
+128,128, 0,104, 52, 26, 7,119, 73,156,162, 22, 1,208,182, 91,183,110,187, 92, 62, 97, 56, 33,100,147,211,243,187, 19, 66, 54,
+ 57,255,122,186,206,254,183,245,164, 73,147, 26,205,154, 53,107, 70,179,102,205,126,220,191,127,255, 74, 79,124,158,120, 38, 77,
+154, 84,107,214,172, 89, 51,156,175,119,243, 28,207, 22,173,110,221,186, 17,123, 36,121, 0,168, 94,189, 58,178,179,179,161, 80,
+ 40,208,184,113, 99,100,102,102,194,207,207, 15, 50,153, 12,148, 82,140, 29, 59, 86, 50,126,252,248, 8,142,227, 96,181, 90, 29,
+ 5,191,135,190,118,129,227, 56, 52,111,222, 28,103,237, 61, 66, 93,186,119, 71, 92, 92, 28, 68, 39, 15,165, 82,137,177, 99,199,
+146, 55,222,120,131, 23,173, 25,148, 82,232,245,122, 68, 71, 71,171, 74,232,146,123,117,221,186,117,129,162, 73, 94,236, 58,147,
+ 72, 36,184,112,225, 2,230,204,153,131, 97,195,134,225,214,173, 91,136,137,137,193,155,111,190,233, 55,107,214,172, 87, 1, 76,
+245, 86, 32,251,249,249, 57, 68,150, 90,173,198,171,175,190,202,183,104,209, 34,194,207,207, 15,254,254,254, 16,187, 1,109, 54,
+ 27, 42, 86,172,232, 85,154, 11,130,128, 45, 91,182,128,231,121,175, 22, 45,123, 2,244,137,243,208,161, 67, 14,145,230,220, 74,
+ 34,132,224,236,217,179, 14, 81,231, 3, 39,229, 56, 14, 26,141, 6, 81, 81, 81, 80,169, 84, 80,171,213,228,199, 31,127,124, 55,
+ 33, 33, 33,250,141, 55,222,224,242,243,243,185,230,205,155,227,233,167,159,230, 5, 65,128,217,108, 70,173, 90,181,188, 90,222,
+118,237,218,133,207, 63,255, 28, 47,190,248,162, 91,139,150,232, 44, 25, 16,240,143,143,133, 40, 51, 8, 0,204, 86, 11,116,133,
+122, 71,215,174,205,102,195,233,157, 39,171, 92, 59,121,185,214,166, 31,191,151, 2,128, 97,231, 79,206,183, 69, 63,189,120,117,
+213,182, 33,178, 67, 59,179,205,135,188, 89, 10,199,141, 27,135,201,147, 39, 99,224,192,129,216,182,109, 27,222,121,231, 29, 60,
+247,220,115,197, 44, 90,190,192, 98,177,124,241,204, 51,207,188,184,118,237,218,106,111,189,245, 22, 39, 90,180,212,106,181,232,
+227, 5,163,209, 8,189, 94,143,139, 23, 47, 10,207, 63,255,252, 37,147,201,244,133, 39, 62, 43, 81,157, 82, 43,116,191, 86,140,
+227, 42,105,175,127,236,223,242,137, 10,122,162,106,152,215,167,106, 71,218,117,120,133, 96, 80, 10, 42, 0, 2, 5,140, 70, 45,
+198,142,125, 69,242, 79,125, 39,103,145,101, 48, 24,112,226,196, 9,180,107,215, 14,183,111,223,198,249,243,231, 81,165, 74, 21,
+ 44, 95,190, 60,124,240,224,193, 37,138, 45, 87,156, 62,125,122, 82,189,122,245, 22, 20, 22, 22,102, 23, 22, 22, 46, 0,176,146,
+ 82,154, 75, 8,169,113,245,234,213, 69, 91,182,108,105,245,254,251,239, 75, 92,124,116, 36,158,204,163, 22,139, 21,122,189,177,
+ 68,129, 37,238, 83, 42,248, 26,119, 90,173, 90, 53,244,232,209, 3, 82,169,212,209, 88,115,238, 54,115, 21, 92, 37,149, 31, 0,
+ 4, 66, 8, 98, 98, 98,208,181,107, 87,200,100,178, 98,156, 98,197,218,181,107, 87,140,155,250, 30,190, 24,215, 30,159, 63, 83,
+ 5, 29,167,167,149, 24, 78,157, 78, 87,184, 99,199, 14,213,155, 47,190,136,122,149, 43, 35, 44, 32, 0,229, 35,195,161, 82,200,
+ 33,115, 14, 19,241,110,100,167,148, 82, 66,136, 32,145, 72, 80,187,118,109,164,165,165,225,250,245,235,184,126,253, 58, 56,142,
+ 67,203,150, 45, 29, 86,152, 43, 87,174, 96,234,212,169, 48, 26,141, 62,199,189,114,229,202,104,223,190, 61,228,114, 57,212,106,
+117,177, 46, 67,241,157, 22, 20, 20,160, 82,165, 74,216,176, 97, 3,170, 86,173,234,149,179,122,245,234,104,211,166, 77,177,247,
+169, 82,169, 28,245, 6, 0,220, 62, 84,232,120, 70,108,108,108,169, 56,183, 30,190,133,175,182,237,128,209, 36, 32, 95,103, 41,
+118, 67,116, 88, 0,246,254,240,150, 79,113, 23, 57,191,252,242, 75,228,230,230, 58,202, 32,209,104, 34, 26, 41,202,149, 43,135,
+ 37, 75,220, 91, 50,157,180, 8,241,240,253,186,251,216,160, 18,175, 19, 19,151, 98,214,172, 89, 51, 92,239,247,198,231,124,222,
+229,126,147,139, 56, 75,243,169,235, 80,172, 31,196,204, 16, 27, 27, 11,209, 15, 68,204, 40,142,130,212,106,197,250,245,235, 17,
+ 17, 17,225,216, 2, 3, 3, 61, 38,108,209,143,104, 92, 70,145,139,208,239, 49, 50,220, 0,208, 45,131, 58,252, 72,108, 54, 27,
+214,173, 91, 7,103, 33,227,239,239, 95, 98, 55,146, 92, 46,111,219,184,113, 99,206,104, 52,222, 37,178,102,205,154,133,193,131,
+ 7,163,106,213,170, 16, 4, 1,133,133,133,104,215,174,157,116,225,194,133,109, 75, 35,180,212,234, 34,191,127,147,201,132,157,
+ 59,119, 34, 56, 56, 24,161,161,161, 8, 9, 9,129,191,191,191, 56,114,146,122, 19, 27,148, 82,244,238,221,219,145,248,156,173,
+ 88,174,162,107,255,254,253, 62,117,201, 81, 74,241,196, 19, 79, 64,163,209,192,207,207, 15,126,126,126,216,178,101,139,227,154,
+ 38, 77,154, 64, 16, 4, 68, 68, 68,224,192,129, 3, 37,118,127, 82, 74,169, 76, 38,115, 92, 47,149, 74,201,242,229,203, 39, 37,
+ 38, 38, 70,191,254,250,235,156, 68, 34,193,241,227,199,113,238,220, 57, 84,168, 80,193,103,159,173,220,220,220, 59,147, 38, 77,
+178, 77,154, 52, 9, 0, 80,171, 86, 45,228,230,230,166,139,231,243,243,243,179, 58,119,238, 92,204,111, 35, 51, 51, 51,235, 95,
+ 47,180, 4, 1, 86,179, 21, 58,131, 1,133, 5, 58,135,117, 40, 61, 37, 45,232,173, 55, 94,147,206, 25,251, 44, 0,224,141,249,
+159,162, 96,233,223, 5,217, 79,111, 12,138,232,243,201,170,137, 0,122,121,169,124, 96, 52, 26, 17, 31, 31,143,195,135, 15,163,
+160,160, 0, 29, 59,118, 44,102, 49, 21,223,169, 55, 19, 61,165,212, 68, 8,105,209,189,123,247, 35,243,230,205,171, 88,163, 70,
+ 13,162,213,106,161,211,233,224,252,123,250,244,105,186,114,229,202,107, 58,157,174, 57,165,212,228,137,111, 75,242,215, 87,187,
+196, 62,183,246,143,227,146,238, 17,149, 46, 5, 36,231, 84,180,102, 37, 43,180,249,250,139, 6, 27, 61, 7,106, 3,108, 16, 64,
+173, 2,108,246,110,175,127, 10, 42,149,106,209,222,189,123, 67, 13, 6, 3,142, 29, 59,134,161, 67,135,154, 50, 51, 51,229, 0,
+240,191,255,253,207,180, 98,197, 10,121,165, 74,149,176,124,249,242,240,167,159,126,122, 13,128,218, 62, 22,244,223, 3,248,222,
+245,120,104,104,232,194, 91,183,110,181,117,246,249, 17, 27,171, 0,220, 54, 42,169, 0, 88, 44, 22,232,245, 70,228,229, 21,192,
+100,182,216,203, 76, 1, 54,155,213,254, 43,192,106, 47, 71,229, 50,222,191, 97,157,232, 66, 74, 41, 56, 66,114,143,158,190, 83,
+206, 83,185,228,169,139,203, 23,107,150, 27,216,196, 81,102,161,161,161,144, 74,165,248,254,251,239,113,106,223, 22,200, 37, 20,
+ 54,171, 5, 86,139, 25, 54,139, 9, 82,137, 4,127, 28,191,142, 78,213,189, 15,228, 38,132,208,176,176, 48,116,107,214, 12,221,
+155, 53, 43, 26,222,198,243,240, 83, 40,160,150, 41,139, 44, 89, 0,168,141, 3,124, 75, 74,130, 24,206,200,200, 72, 28, 61,122,
+ 20,227,198,141,195,236,217,179,161, 82,169, 28,163,159, 47, 92,184,128,213,171, 87,163, 83,167, 78,165,142,187,104,193,155, 56,
+113, 34, 82, 82, 82, 48,127,254,124, 52,108,216, 16, 82,169, 20,185,185,185,104,222,188, 57,210,210,210,124,226,116,238,222,147,
+203,229,197,172, 79,162, 0, 44,237, 55,114,230,124,182,119, 52, 54,238, 91, 9, 2,130,131, 63,188, 86,172, 46, 90,178,106, 79,
+169, 57, 39, 79,158, 92, 44,156,190, 88,179, 74,209, 48,218,228,139,216,114,186,238,152,104,108,157, 56,113,226,219,132,144, 77,
+ 19, 39, 78,124,123,230,204,153,103,125,225,243,112,126,179,168, 11,157,142, 29,243, 89,104, 81, 74,169, 92, 46,135, 32, 8,197,
+196,149,171,227,173,104, 10,116, 54, 53,122, 19, 5,130, 32, 56, 18,133,107,179, 77, 34,145,224,192,129, 3, 56,112,224, 64,177,
+227, 95,125,245, 85,137, 21,185,213,106,173,225,239,239, 95,204,154, 37,147,201, 48,113,226, 68, 12, 29, 58,212, 33,178,100, 50,
+ 25,190,251,238, 59, 52,106,212, 8, 38,147,169,134, 23,127, 21, 93, 84, 84, 20, 39, 22, 68, 26,141,134,140, 27, 55, 78, 98,181,
+ 90, 29,239, 68,220, 68,223, 53,111,137, 70, 28,197,178,117,235, 86,159, 44, 90,190,250, 40, 81, 74,113,242,228,201, 98,226, 77,
+ 28, 53, 3, 0, 39, 79,158,116,248,111,249,194, 41,145, 72, 96,179,217,160, 82,169,136, 76, 38, 35, 50,153, 44, 78, 20, 89, 18,
+137,196,241,189,157,125,246,188,197, 61, 57, 57,185, 93, 73,231,211,211,211, 31,219,105, 28,204, 22, 11,244, 58, 19, 10, 10,245,
+152, 50,243,219,162,131, 83,112, 8,192,161, 22, 47,141,195,232, 46,157,218,187,248, 1,248, 82,208, 56, 42,199,117,235,214, 65,
+ 42,149, 98,195,134, 13, 8, 8, 8, 64,207,158, 61, 17, 16, 16,128,183,222,122, 11, 3, 7, 14,244,217,162,101, 79, 75,121,132,
+144, 22,175,190,250,234,145,143, 63,254,184,124,185,114,229, 96, 50,153, 96, 54,155, 97, 50,153,112,245,234, 85,172, 92,185,242,
+182, 78,167,107, 65, 41,205,243,198,183, 37,249,235,171,235,119,191,145,210,113,224,211,250, 11,105,191, 35, 53, 53, 11, 86,107,
+ 50, 4,155, 21,102,107,209, 8,102,155,213, 10,171,213, 6,153, 76, 18,240,241,135,175,109, 19, 64,193,113,196,212,175, 95,191,
+167, 30,214, 55, 10, 10, 10,170,149,145,145,129,203,151, 47, 99,216,176, 97,169, 89, 89, 89,231, 1,116, 0,128,172,172,172,189,
+ 67,135, 14,173,177,108,217,178,168,132,132, 4,248,249,249, 5,248,240,125,252, 0,140, 6,208,217,238, 7, 34, 34, 27,192,180,
+240,240,112,197,177, 99,199,238,178,254,239,222,189, 27, 0, 14,185, 55, 25,216, 45, 90, 6, 3, 50,178,114, 48,242,165,119, 29,
+166, 4,128, 22, 19, 23, 20, 20,163, 94,134, 18, 0, 50,211,174,226,217,145,227, 20,222, 26, 4,238, 42,194, 82,248,232, 56, 91,
+138, 28,105,212,207,207,175,168,251,109,195, 74,108,254,228, 37,192,102, 6,181,232, 1,179, 14, 48, 23, 66, 48,233, 64,100, 42,
+192,162,247, 73,104,249,249,249,193, 79,165, 66, 68, 80, 80,209, 36,144, 18, 9,164, 82, 30,130, 5, 32, 54,226, 16,164,130,205,
+167,180, 78,195,194,194, 32, 8, 2, 84, 42, 21,110,220,184,129,209,163, 71,195,108, 54,163,119,239,222, 48,153, 76, 48, 24, 12,
+208,235,245, 72, 76, 76,132, 78,167,243, 41,238, 98, 57, 47,246,254,188,246,218,107,104,212,168, 17,166, 78,157,138, 9, 19, 38,
+ 32, 49, 49, 17,163, 70,141,194,202,149, 43, 81,171, 86,173, 18,121,157,223,167,200, 41,126, 23,215, 46, 62, 0,165,254, 70,174,
+156, 69,227, 3,112,215,119,127,229,153, 14,165,230,156, 53,107, 22, 50, 50, 50,238,178,100,137,255, 99, 99, 99,177,120,241,226,
+123,237,250, 23,173, 71,145,238, 12, 98,110, 44, 81,141, 81,228, 59,101,156, 57,115,230,217,153, 51,103,118, 39,132,108,154, 57,
+115,102,247, 18, 44, 90,221,188, 88,188,186,161,200, 39,203, 39,240, 46,125,163,109,157, 45, 37, 98, 69, 42, 86,232,206,133,188,
+ 90,173,198,250,245,235, 33,142, 0,113,190,166, 36,161,245,107,184,221,116,108,183,100, 57,239,247,232,209, 3, 9, 9, 9,197,
+172, 89, 42,149,170,196,196, 35, 8, 2,110,222,188,137,179,103,207,162,105,211,166,200,203,203,131,148,227,240,198,233,211,168,
+249,204, 51, 48,217, 45, 52,114,185, 28, 47,190,248,162, 79, 14,237,215,175, 95, 15,118,222, 15, 11, 11, 75,106,213,170, 85,236,
+225,195,135, 29, 14,242,246,110, 53,135,224,240, 69,196, 80, 74,209,183,111,223, 98, 86, 44,103,145,229,188,253,254,251,239, 62,
+117, 29, 82, 74,209,170, 85, 43,135, 53,203,223,223, 31, 63,255,252,179,227, 91,181,110,221,186,200,159, 33, 50,210, 39, 78, 49,
+ 30,118, 7,120, 24, 12, 6,161,160,160,128, 59,118,236, 24,228,114,185,195,130,167, 82,169,160, 84, 42,161, 80, 40,238,105, 4,
+209,127, 1,148, 10, 48, 89, 44,208,235,245, 40, 44, 44,154, 89,228,234,153,117,197,133,152, 49,255,158,249, 69,171, 85, 65, 65,
+ 1,254,248,227, 15,252,244,211, 79,104,216,176,225, 93,206,240,190, 88,180,156,210, 83, 6, 33,164,229,248,241,227, 15, 78,159,
+ 62, 61, 38, 36, 36, 4,102,179, 25,183,110,221,194, 55,223,124,147,162,211,233, 90, 82, 74, 51,124,127, 9,128,197, 98,133, 65,
+103, 68, 94,126, 1, 62,248,240, 59,143, 73, 15, 0,178,211, 47,162, 71,207,254,242,135,249,157, 82, 82, 82, 94,111,217,178,229,
+135, 5, 5, 5,185, 58,157,174, 63,128, 57,206,134,195,172,172,172, 86, 61,123,246,156, 23, 18, 18,210, 48, 61, 61,253,109, 31,
+ 40, 39,222,184,113,227,237,248,248,248, 98, 7,237,214,199,170,233,233,233, 67, 90,183,110,253, 30,128, 16,167,211,254, 0,182,
+ 2, 88,236, 41, 45,137, 93,135,133,133,122, 4, 4, 69, 35,249,250, 46,175, 1,145, 73, 12,160,130,224,181, 1,232,206,138,229,
+ 92, 62,149, 34,253, 80,209, 39, 80,172,176,159,234,251, 12,158, 26, 61, 11,106, 41, 48,227,217, 22, 72, 12, 2,160, 10,129,172,
+245, 91, 32, 65,246,119, 52,250, 23,159,248, 39,124,254, 57,142, 95, 46,154, 25, 38, 46, 60, 28,227, 7, 14, 4,181, 0,251,207,
+157,195,170, 29, 59, 48,176, 93, 59,168,149, 74,159, 27, 44, 98, 35,252,234,213,171,216,191,127, 63,170, 87,175,142, 43, 87,174,
+ 20,155,134,130, 82,234, 83,252, 41,165, 84, 28,196,164, 80, 40, 32,149, 74,145,154,154,138,238,221,187, 59, 26,250,187,118,237,
+194,248,241,227, 49, 98,196, 8,180,109,219,214,173,223,172, 43,103,120,120,184,195,128,224, 58, 80,193,185, 59,183, 52,223,200,
+ 29,167,136,123,253,238,206,156,211,167, 79,119, 59,160,194, 23, 78,103, 45, 82, 2,142,185, 88,147, 32,250, 75,137,194,200,117,
+ 31, 64,176,120,108,226,196,137,111,251,122,159,243,190,104, 17, 43, 77, 23,166, 67,104,117,235,214,141,184,171,108, 69, 51,178,
+ 59,104, 52, 26,140, 25, 51, 6,147, 39, 79, 70, 88, 88,152, 87,223, 26, 81,201,150,132, 95,126,185, 59,179,109,216,176,193, 91,
+215,225,133,192,192,192, 70,237,218,181, 67, 94, 94, 30,110,223,190, 13,141, 70,131,154,159,124,130,211,163, 71,163,222,231,159,
+131,107,223,222, 49,217,234,233,211,167,161, 82,169, 46,148,214,130,224,239,239,143,224,224, 96, 71,159,187, 40,184,156, 44, 90,
+212,135,196,136, 95,127,253,213,109,171,241, 94,124,180,196, 66,224,224,193,131,197,252,179,156,133,207,193,131, 7, 29, 22, 45,
+241, 54, 95,186,188, 84, 42, 21, 21,249,212,106, 53, 66, 66, 66,160, 80, 40,160, 82,169,138,137, 44, 95,172,121,222, 38, 36, 85,
+169, 84,135, 53, 26, 77,144,120, 94, 42,149,162,160,160, 32, 55, 43, 43,171,201,191,186,235, 16, 20, 86,179, 21,122,189, 1,133,
+ 5,250, 50,231, 23, 7,166,172, 95,191, 30, 79, 60,241,196, 93, 34, 75,124,215,247,208, 98, 76, 34,132,180, 93,176, 96,193,161,
+185,115,231, 6, 23, 22, 22,226,219,111,191,205, 43, 44, 44,108, 75, 41, 77, 42, 21,151, 64, 97, 49,155,161, 51, 24,161, 45, 44,
+122, 7,127,157, 93,247,136, 9, 98,186, 18,192, 74, 87,139,161,211,249,191, 0,116, 47, 5,229, 19,241,241,241, 72, 77, 77, 45,
+118,240,230,205,155,176,217,108, 70,251, 60, 89,207, 57, 61, 79, 66, 41,181,121, 43, 59,204,246,174,195,194,194, 34, 43,136, 65,
+155, 89, 54,233,212, 46, 54, 60,249,100,221, 75, 23,143, 56,210, 89, 34,145, 96,236,216,177, 56,125,234, 20, 58,196,228, 35, 49,
+202, 31, 52, 63, 25,178,246,239,227,100,134, 10,115,230,253, 90,106,238,213, 78,131,125,230,172, 94,237,246,220, 95,189,122,149,
+ 42,238,151, 46, 93,130, 74,165,130,205,102,187,171,190, 41,109,252,157, 5,204,188,121,243, 48,126,252,120,124,247,221,119, 56,
+125,250, 52,234,213,171,135,142, 29, 59, 34, 61, 61, 29,167, 78,157,130,209,104,244, 57,156,206,126,115,151,174,157,195,246,253,
+191,225,102,210,117,164,164,222,190,231,239,238,204,233, 42,180,214,111, 63,129,190,157, 26,220, 19,231, 7, 31,124,128,244,244,
+244, 98,150, 44,231, 1,100,158, 44, 90,174, 90,196, 5,153, 46,190, 80,226,190,201, 69,244,184,238,187, 94, 15, 0,233, 0, 36,
+ 94,238,115,221,207,156, 57,115,230, 78,209, 18,102,231,149,120,243,207,114,219,117, 40,138, 34, 49,163,184, 90,170,196,255, 26,
+141, 6,254,254,254,240,247,247, 71, 64, 64,128, 87, 75,145, 40,180, 90, 93, 43, 40,230,235, 37, 90,182, 0, 96,196,136, 17,119,
+ 89,180,156, 39,246,116, 7,163,209,184,107,215,174, 93,245,123,244,232, 33,185,112,225, 2, 36, 18, 9, 4, 65,128,169, 89, 51,
+212,251,252,115,156,121,237, 53,180,185,113, 3, 6,179, 25, 74,165, 18, 91,182,108, 49,235,116,186, 93,165, 45, 55,156,133,150,
+ 70,163, 65, 96, 96,160, 67,104,248,162,210,197,204, 91,146,255,131,184, 57, 15, 6,240, 37, 83,139, 21,170,179, 95, 14, 33, 4,
+122,189,222,225,212,233,139,213,209,185,235,208, 57, 3,114, 28,135,160,160, 32, 71,225, 33, 90,180,124,181,230,121,155,144, 84,
+173, 86, 7, 92,188,120,177,146, 56,253, 68,102,102, 38,218,183,111,127,249, 95,111,210, 18, 0,179,213,134, 66,189, 1,133,122,
+ 93,153,209,138,105,237,251,239,191,199,213,171, 87, 97, 54,155, 49,115,230,204,187, 4, 86,105,156,225,221,164,171,171, 13, 26,
+ 52, 16,158,124,242, 73, 28, 60,120, 16, 10,133,194, 66, 41, 45,245,252, 87, 2, 21, 96,182, 90, 97,208,235, 81,168,213,254, 87,
+140,153, 14, 85,125,254,252,121,152, 76, 38, 76,157, 58,213,118,228,200,145,157, 0, 94,178,127, 67, 14,192,144, 54,109,218, 76,
+235,214,173, 91, 16, 33,228, 21, 74,233,119, 37,229,115,139,213, 46,218,203,240, 61,138,105,201, 83,153,116, 47,211,172, 56, 87,
+172,130, 32,224,133,231,159, 71,199,152,124,244,105, 24, 14,237,157,203, 80, 7,134,131, 4, 85,192,156,121,191,226,236, 53,159,
+ 93, 49, 41, 0, 60,217,166, 23,234, 86,191,123,122,176,150, 29,138,218,100,123,255, 56,140,180,204,148, 82,199, 93,171,213,122,
+180, 92,249,106,209, 18, 57,197,105, 86,164, 82, 41,234,215,175,143, 42, 85,170, 96,231,206,157,104,208,160, 1,174, 92,185,130,
+ 43, 87,174,224,198,141, 27, 56,125,250, 52,114,114,114, 74,253,141,126,222,186, 10, 57, 5,217,144,203,228,200,206,205,196,205,
+228,235,136, 12,141,186,239,239, 46,162, 90,183, 15, 0, 0, 49,225,129,165, 18, 90,206,156, 31,125,244,209, 93,226,189, 12,166,
+236, 57,236,101,191,180,247, 63, 52,240, 30,172, 68,250,144,144, 16,149,115,255, 42,199,113, 8, 12, 12, 36,179,103,207,150,112,
+ 28, 7,127,127,127, 4, 6, 6, 66, 52, 23,122,131, 92, 46,215, 87,168, 80, 65, 37, 38, 68, 49, 35, 6, 4, 4, 72,102,207,158,
+ 77,190,250,234, 43,143, 86, 46, 47, 62, 90,115,135, 14, 29,250, 92, 82, 82, 82,112, 68, 68, 4,238,220,185, 3,185, 92, 94,148,
+ 57,218,181, 67,171,107,215, 96, 46,242, 57,194,165, 75,151,240,197, 23, 95,104,141, 70,227,220,210,190, 40, 63, 63, 63,132,134,
+134, 58,186, 12, 69,139,142,147,104,244,201, 5,179, 36, 19,189,216, 2,188,151, 46, 36, 87,177,245,210, 75, 47, 21, 19, 93,190,
+ 66, 38,147, 89,197,153,223, 57,142,131,217,108, 70,131, 6, 13,144,158,158,238,200, 52,206,150, 60, 95,132,150,183, 9, 73,121,
+158,135,201,100, 66,235,214,173, 65, 8,193,167,159,126,250,120,116, 71, 10, 2,241,243, 11, 69, 76, 76, 85,132, 71, 24, 32, 8,
+101,183,170,140,213,106,197,168, 81,163,138, 89,176,196,145,141, 98,215, 63,165, 20, 22,139,229,158, 39,127, 21,243,245,253,204,
+ 31, 71, 1, 71,151,151, 86,107,248,215,125,194,136,136,136,166,132,144, 13, 46,135,179, 1, 76,115, 55,131,187, 29,142, 15,125,
+251,246,109,116,233,210, 5,191,253,246,155,228,167,159,126,234,176,113,227,198,115,149, 42, 85,186, 61, 96,192,128,114, 47,190,
+248,162,162,117,235,214,200,204,204, 68,195,134, 13,167, 0, 40, 65,104,217,223,163,193, 8,173,182,236,173,163, 37, 53,248,238,
+ 71,192, 77,158,252, 30, 58, 70,231,162,119,189, 64, 44,219,180, 15, 67,234,171, 0,147,162,212,124, 98, 88, 66, 98, 18, 80,161,
+ 86,211,187,206, 43, 2,138,186,236, 42,212,106, 10,238,246,149, 82,199,221, 57,204,174,229,229,189, 88,244,156,223,231,200,145,
+ 35,241,214, 91,111,161,115,231,206,184,114,229, 10,118,239,222,141, 43, 87,174, 96,220,184,113,168, 85,171, 22,234,213,171, 87,
+ 42,206,141,219,215, 34,191, 48, 15, 28,225,144,157,151, 5,131, 81,143, 9,163, 38,223,247,119, 23,113,125,251, 76, 0,192,186,
+109,199,239,153,243,157,119,222, 65,106,106,106, 49, 75,214,253,248,101,253,219,225, 86,104,101,101,101,185,237, 7, 12, 15, 15,
+ 79,235,212,169, 83,196,157, 59,119,224,231,231,231, 85,100, 17, 66, 58,138,115,109,164,166,166,186,229,244,247,247, 55,119,234,
+212, 73, 26, 29, 29, 93,108,180,161, 70,163,185, 43,147,185,114,218, 43,129, 2, 66,200, 11, 45, 90,180, 88,246,251,239,191,171,
+171, 84,169,130,252,252,124, 80, 74,241,221,119,223, 97,236,216,177, 80, 42,149,184,116,233, 18,122,246,236,169,211,233,116, 47,
+ 56,207,161,229,142,211, 83, 11, 77,156, 21,223,141,200, 42, 49,238,206,153,117,193,130, 5,152, 49, 99, 6,222,126,187,100, 87,
+143,165, 75,151, 2, 46,221,124,238, 56, 41,165,152, 51,103, 78,153,113,102,101,101,125,231, 98,141,250,180, 79,159, 62,252,237,
+219,183,139,137, 43,231,205, 77,193, 84,140,211,219,132,164, 18,137, 4,145,145,145,152, 62,125, 58, 66, 67, 67, 17, 21, 21,117,
+151, 37,198,219, 55,186,199,202,224,129,114,218,168,112,236,227, 89,239,181,252,118,197, 70,169, 66, 14, 28,216,189, 14,249, 57,
+197,187,147,140,230,191,135, 82,203, 27,116,128,233,248, 31, 62,133,211,104, 52,226,163,143, 62,194, 7, 31,124,128, 15, 62,248,
+192,151,239,126, 95,113,247, 69,108,185,229, 20, 40, 81,107,130,161,212,196,160,102,173, 96, 8,212,250, 72,125, 35, 15, 56,114,
+248,240,225,158,161,161,161, 72, 74, 74, 10,151, 74,165, 61,139,153,171,244,122, 84,168, 80,161, 42,128,230,222, 56,199,141, 27,
+103,124,247,221,119, 21,131, 6, 13, 66,159, 62,125, 48,104,208, 32,133, 76, 38,171, 76, 41,133,217,108, 70, 82, 82, 18,254,248,
+227, 15,100,100,100, 92, 40, 41,156, 2,165, 68,165, 14,130, 82, 19,141,154,181,131, 32, 8,214, 50,137,187, 88, 9,186, 90,179,
+ 74, 57, 33,181,219,178, 14, 0,142,252,177, 1,147, 95,171,141,239, 54, 31,194,194,195, 64,221,160,116,212, 12,207,128,144,113,
+ 1,111, 14,105,132, 57, 63, 28, 5, 0,236,222,229,245, 27,149, 56, 63,178, 65,111,190,175,184, 59, 91,174,156,159,227,205, 71,
+203, 29,167,216, 72, 44, 40, 40, 64,110,110, 46,150, 45, 91,134,103,159,125, 22,233,233,233,184,113,227, 6, 46, 95,190,140, 31,
+127,252,209, 49,154,189,180,223,232,141,231,223,193,187,115, 94, 7, 5, 69,181, 74, 53, 49,113,244, 7,104, 92,183,217,125,127,
+119, 87,120,179,102,149,196, 57,127,254,252,123, 74, 75,255, 41,161, 85, 82,171,130,227, 56,132,133,133, 57, 18,137,115, 2,188,
+151,150,175, 68, 34,129,213,106,117,248,254,136, 27, 0,244,232,209, 3,191,252,242,139, 47, 35, 41,126, 39,132,252,175, 70,141,
+ 26,223, 76,153, 50,197,175, 77,155, 54,124, 76, 76, 12, 26, 55,110,140, 75,151, 46, 97,243,230,205,150,197,139, 23,107,117, 58,
+221, 8, 74,233,182,123, 41,159,196, 37,109,156,183,210,180,122,204,102,243,237, 43, 87,174, 68,207,153, 51, 71,194,113, 28,230,
+207,159,239,200,148,226,132,175,206,216,189,123,183, 85, 16,132, 18,187,106, 44, 22,203,237, 43, 87,174, 68,127,242,201, 39, 18,
+ 66,136,131,147,227, 56, 56, 47,224, 92, 26, 78,119, 34, 83, 28, 24,225,110,115, 23,118,119,223,184,164, 9, 73,121,158,199,165,
+ 75,151, 48,121,242,100, 16, 66,176,110,221,186,199, 34,115,157,190,144,249, 85,189,154, 17,193, 61,158,106, 89, 7,132,192,108,
+186,123, 54, 4,191,156, 66,135,200,234,243,201, 42,252,244,198, 64, 95, 68,207,213,189,123,247,134,124,244,209, 71,188, 68, 34,
+193,188,121,243,138, 77, 26,236,250,221,247,236,217, 99,189,151,110, 63, 49, 63,155,205,102,232,245,247,102, 69,161,148,238,159,
+249,225,187,157,150,127,255,171,148, 16, 19, 14,236, 90,135,188, 92,247,238, 12,114, 41,143,175,150,173,183,202,164,146,219,255,
+240,167,251,172,119,239,222,131, 22, 45, 90, 84,211,221,201,219,183,111, 67, 16,132,146,156,107,110, 24, 12, 6, 36, 39, 39, 67,
+167,211,173,157, 52,105,146,249,215, 95,127,125,238,233,167,159, 70,189,122,245, 16, 29, 29,141, 59,119,238,224,234,213,171, 88,
+182,108, 25,221,183,111,223, 90, 0, 99,188,188,199, 13,179, 62,124,119,216,178, 31,126,149,115,196,140, 3,187,215, 33,207, 69,
+180,223,109,157,150,226,235,239,214,155,101, 50,233, 69,111,229,186,179, 53,171, 44, 43,198,158, 67, 71,163,207,130,133,168,216,
+184, 11,102,205,238,136,175, 63,236,143,185, 79,202, 96, 94, 51, 4,117,251, 45,199,202,169, 93, 1, 0, 49, 95,251,104, 45,225,
+101,184,229,198, 98,149,155,167,180,139,155,210, 89, 77,197,184,151, 84,134,151,214,162,197,113, 28, 18, 18, 18, 80,177, 98, 69,
+180,104,209, 2, 13, 26, 52, 64,187,118,237,112,234,212, 41,156, 58,117, 10,227,198,141,243, 40,178,124,249, 70,109,155,119,194,
+161, 86, 23,239,251,219,184,126,247,178,128, 47,105,105,244,232,209, 0,240,159,178,110,241,247,242, 18,197,132,121,191, 75,210,
+136,156, 38,147,201,209, 37,231, 60, 47,147,232, 28,239,227,136,190,109,132,144, 90,239,189,247,222,107, 74,165,178,157, 78,167,
+171,106,183,200, 92, 50, 26,141, 59,244,122,253, 60, 74,105,238,253,132,213,121, 58, 7,119, 65, 40,233,222,156,156,156, 46, 93,
+186,116,217,198,243,124,130,235,130,191,238, 50,178, 32, 8, 55,210,210,210, 74, 28,226,158,149,149,213,165,115,231,206,110, 57,
+221, 21, 16,190,112,186,251, 62,130, 32,120, 20, 89,190, 20, 68,222, 38, 36,229,121, 30, 26,141, 6, 63,255,252, 51,194,194,194,
+ 30,171, 12,118,242, 92,250, 71, 37,157,111, 27,166,216, 5, 32,188,207, 39,171,110,237,204, 52,197,183, 13,147,223,252,233,141,
+129,229, 75,186, 39, 51, 51,179,243,179,207, 62,251, 27,207,243, 9,174,239,223,221,183,176, 90,173,215, 83, 83, 83, 75, 61, 93,
+ 2,165, 20, 23, 47, 94, 20, 70,142, 28,153,153,145,145,209,255, 94,226, 63,113,242,194,185, 51,166,140, 13,125,178, 83,211,198,
+224, 0,147,103,231, 95, 74, 0,202, 75, 37,183,199,191, 61,255,249,127,242,155, 81, 74,243, 9, 33, 45,250,246,237, 59, 6, 69,
+ 67,195,239, 18, 82, 0, 22,148, 64,177,160, 92,185,114,181, 37, 18,137, 2,192,100, 74,233, 77, 66,200,103,251,246,237,235, 12,
+224, 9,137, 68, 18,109,179,217,146, 81,180,230,227, 42, 74,233, 73,239,233, 40,237,197,122, 53,194,227,158,236,248, 68, 23, 16,
+ 66, 77, 38,163,151, 6, 18, 40, 40,165, 50,153,244,226,225,147, 41,117,189, 89,235,237, 43,112,148,121,151,253,152, 49, 99, 48,
+102,204, 24, 71,122,250,244,211, 86, 88,123,102, 47,250,213, 77,130,241,139,150, 32, 1,229,125,110,240, 1,192, 59,239,141, 44,
+ 75,203,102,177, 65, 90,101,229,163, 37,145, 72,144,153,153,137, 75,151, 46, 33, 45, 45, 13, 58,157, 14,231,207,159,135,217,108,
+ 70, 78, 78, 14,106,215,174,125,207,225, 44,171,111,244, 79,114,254, 23,187, 15, 75, 37,180,172, 86,107,146,183, 85,214, 45, 22,
+ 75,169, 70, 37, 73,165, 82, 67,149, 42, 85,136,187,209, 9,226,127,141, 70,163,247,177,128,204, 5, 48, 25,192,100,251,122, 86,
+200,206,206,190,111, 53,104,179,217, 82,226,227,227, 37,158, 4,140,253,221,164,121, 9,155, 22, 64,179, 50,174, 16,202,156,211,
+205,247,209, 86,175, 94,221,225,235,229, 58, 39,138,125,177,213, 18,189,115,189, 77, 72,170,213,106,239,116,233,210,197,230,124,
+222,121, 66,211,199, 26,132,222,236, 58,232,185,248,157,153,166,120, 0, 16,197, 22, 60,251,255,128, 82,170, 7,208,230, 65, 7,
+237,218,181,107,166, 39,158,120,226,251,130,130,130,209,148,210,123,246,230,127,251,253, 79,223,254,183,125, 22, 74,105, 62,128,
+ 25,247,120,239, 77, 0,237, 93,142,157, 4,112,242,126,194,116,242,124, 70,153,207, 45,102,181, 90,147, 42, 86,172, 88, 42,203,
+141,183, 50,222, 98,177,148, 88, 79,156, 69, 32,222, 62, 8, 20, 45, 19,151,229, 19,167,193, 96,200,110,214,172,153,180,148,113,
+ 75,247, 53,238,209,209,209,136,137,137,113,252,138,112, 61,238, 45,156, 86,171, 53, 41, 46, 46, 14, 97, 97, 97, 30,103,124,119,
+245,201,242,133,179,172,191, 81, 73,156, 49, 49,203,203,156,179,172,244,194,127, 66,104,137,107, 24,150, 37,210,210,210, 30,200,
+154, 43,180, 44,204,109,127, 91,142, 26,227, 63,138,172,172,172,208,251,229,240, 54, 33,105, 90, 90, 90,187,255,234,251,221,153,
+ 97, 26,126,215, 49,187,232,250,167,161,213,106,203,123,155,118,192, 19,250,245,235,103, 3,195, 35,143,204,204,204, 50, 47,211,
+ 31, 68, 61,145,157,157, 93,231,191, 26,247, 7, 17,206,127, 11,231,227, 2,230,165,198,192,192,224,169,177,194,196, 18, 3, 3,
+ 3,195,125,130, 0,232,232,161,144,245,121,164, 15, 33,164,227, 61, 20,226,219, 25, 39,227,100,156,140,147,113, 50, 78,198,249,
+223,226,244,198, 93,214, 35,141, 31,133, 86,235, 3,219, 0,116,100,156,140,147,113, 50, 78,198,201, 56, 25, 39,227,252,175,110,
+172,235,144,129,129,129,129,129,129,129,225, 1,129, 9, 45, 6, 6, 6, 6, 6, 6, 6, 6, 38,180, 24, 24, 24, 24, 24, 24, 24,
+ 24,152,208, 98, 96, 96, 96, 96, 96, 96, 96, 96, 96, 66,139,129,129,129,129,129,129,129,225,193,129,148,225,188,158, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 78,224, 1, 96,243,230,205, 14,181,213,173, 91, 55,194, 94, 11, 3, 3, 3, 3, 3, 3,195,195,196,227,
+170, 69,120, 38,176, 24, 24, 24, 24, 24, 24, 24, 30, 5, 60,142, 90,132,115,167, 36, 25, 24, 24, 24, 24, 24, 24, 24, 30, 54, 30,
+ 71, 45,194, 61,206, 42,146,129,129,129,129,129,129,225,223,131,199,222,162,197,172, 90, 12, 12, 12, 12, 12, 12, 12,255, 20,254,
+173, 90,132, 16, 66, 9, 33,212,121,223,241,159,141, 58,100, 96, 96, 96, 96, 96, 96, 96,184, 55,129, 69, 41, 37,158,126, 1, 54,
+143, 22, 3, 3, 3, 3, 3, 3, 3,195, 61, 65, 20, 83,206,251,206,214,172, 7, 46,180, 8, 33, 29, 25, 39,227,100,156,140,147,
+113, 50, 78,198,201, 56,255, 43,130,139, 82, 74,156,247,121,246,122, 24, 24, 24, 24, 24, 24, 24, 24,238, 91,124, 82,119,194,139,
+ 9, 45, 6, 6, 6, 6, 6, 6, 6,134,251, 20, 89,206,226,138,249,104, 49, 48, 48, 48, 48, 48, 48, 48, 60, 4, 48,139, 22, 3,
+ 3, 3, 3, 3, 3, 3,195,125,192,213, 9,158,117, 29, 50, 48, 48, 48, 48, 48, 48, 48,148,177,216,114,119,156, 0,232,232,225,
+134,237,190,146,223,203,232, 3,111,252,140,147,113, 50, 78,198,201, 56, 25, 39,227,124,252, 56,189,113,151, 70,127, 60, 42, 32,
+132,180, 1,176, 19, 64, 91,251,239,223,194,139, 82,250,192, 54, 0, 29, 25, 39,227,100,156,140,147,113, 50, 78,198,201, 56, 31,
+231,173, 72, 78,253,253,235,188, 49,103,120, 6,111, 42,157, 39,132,240,247,122,254, 97,113, 50, 48, 48, 48, 48, 48,252,195,245,
+ 37, 21,127,157,253,181,120, 15, 23, 87, 6,240, 54,128, 64,167,195,135, 41,165, 51, 93,174,251, 1,128,218,233,144, 22,192, 84,
+ 74,233, 21, 31,194, 36,179,243, 43,236,155, 0,192, 0,192, 8,160, 0,128,133,125,182,127, 60,209, 52, 3,208,221,254,127, 19,
+165,244, 64,105,206, 63, 44,206,135,133,152,152, 24, 85,112,112,112,231,227,199,143,203,207,159, 63,143, 61,123,246,208,175,190,
+250,202,156,147,147,179, 53, 37, 37, 69,207, 82,204, 99,145,230,187, 0,152,104,223,157, 69, 41,221,114,159,124, 68,173, 86,143,
+211,104, 52, 93, 21, 10, 69,140,213,106, 37, 58,157, 46, 69,171,213,110,179, 90,173,159, 80, 74,133,123,224,236, 21, 18, 18,242,
+ 92,181,106,213, 42,223,184,113, 35, 57, 37, 37,229, 7, 0,107, 0,244,143,137,137, 25, 82,161, 66,133,216,139, 23, 47, 94,201,
+206,206,254,154, 82,186,225,159, 10, 39, 3,195,127, 9,158,252,179, 60, 10, 45, 0,147, 41,165, 67, 92, 50,226, 93, 23,181,111,
+223,190,231,214,173, 91,213,130, 32, 64,220, 84, 42,149, 21,192,112, 47, 97, 10,221,191,127,127,252,232,209,163,251,164,164,164,
+ 52, 42, 40, 40,104, 2, 0,106,181,250, 80, 68, 68,196,145, 5, 11, 22,252,216,185,115,231, 36,187,224, 42,149,165, 68, 42,149,
+ 62, 27, 28, 28,220,213,106,181, 54,160,148, 66, 42,149, 30,207,201,201,217, 98,177, 88,190,166,148,150, 90,188, 17, 66,228, 60,
+207,143, 81, 40, 20, 93,172, 86,107, 29, 0,224,121,254,180,209,104,220, 98,181, 90, 63,163,148,154,238,129, 83, 41,151,203,199,
+ 4, 4, 4,116, 50,153, 76,117, 0, 64, 46,151,159,206,207,207,223,102, 50,153, 62,163,148, 26, 30,129, 10,135, 7,208,157, 82,
+ 42, 5, 0,137, 68,210,171, 89,179,102,241,132, 16, 65,156, 31,132,227,184,250, 54,155,141,179, 95,223,157, 16,114,132, 82,106,
+ 45, 13,231, 19, 79, 60, 81,142,231,121,106,159, 73,151,227, 56,174,110,105, 56,203, 10,225,225,225, 51, 4, 65,136, 41,233,154,
+192,192,192, 70,199,143, 31,175,182,122,245,106,219, 23, 95,124,145, 59, 98,196, 8,191,209,163, 71,243,159,126,250,233,103, 0,
+ 94,113,189, 62, 44, 44,108, 46,199,113, 97,190, 60, 95, 16,132,204,204,204,204,215, 89,113,245,143, 99,226,226,237, 5,173, 41,
+ 5,198,116,242,231, 0,220,151,208,138,141,141, 93, 54,108,216,176, 65,117,234,212,225, 41,165,176, 88, 44, 48, 26,141,213, 14,
+ 28, 56,208,118,221,186,117,141, 0,244, 47,101,190,124,254,173,183,222,154, 62,109,218,180, 48,169, 84, 74, 44, 22, 75,165,213,
+171, 87, 55,120,241,197, 23, 95, 93,186,116,105,185, 1, 3, 6,248,139,199, 39, 79,158,220,152, 16,146, 72, 41,253,228, 97,135,
+147,129,225, 63,216, 72,107,131,226, 62, 90, 83, 40,165, 31,148, 36,180, 52,246, 27,211, 0, 28, 22, 45, 90,174, 23,253,249,231,
+159, 27,121,158, 23, 45, 90, 77,180, 90,109,164,139, 21,204, 29, 42, 12, 29, 58,180,217,218,181,107,103, 12, 24, 48, 32, 85,173,
+ 86, 87,121,250,233,167, 11, 8, 33,146,213,171, 87,215,175, 88,177,162,170, 71,143, 30, 67,219,183,111,255,198,111,191,253,182,
+ 7, 64,134,143,145,172, 25, 18, 18,178,254,163,143, 62,138,239,210,165,139, 44, 44, 44, 12,148, 82,164,164,164,196,110,222,188,
+249,201, 41, 83,166,188, 65, 8,233, 77, 41, 61, 87,138, 23,215, 88,165, 82,173,157, 50,101, 74,244,147, 79, 62,201, 71, 69, 69,
+193, 96, 48,224,252,249,243, 29,183,108,217,210,122,233,210,165,175, 16, 66,250, 81, 74,143,148,130,179, 73, 96, 96,224,186,111,
+223,122, 43,178,233,179,207,242, 33, 33, 33,160,148, 34, 35, 35,163,227,222,229,203,219,142,250,232,163, 87, 8, 33,125, 41,165,
+135, 31,165, 68, 36,151,203,185, 21, 43, 86,212,147,203,229, 0, 0,147,201,132, 90,181,106,145,251,225,148, 74,165,220, 39,159,
+124,210,128,231,121,152,205,102,161,160,160,128, 62,253,244,211,220, 63,148, 73,226, 82, 82, 82, 2,101, 50,153,219,243, 54,155,
+ 13,173, 91,183, 78,144,201,100,248,228,147, 79, 44,153,153,153,245, 23, 45, 90,116,124,229,202,149, 97,159,125,246, 89, 63,119,
+ 66,139,227,184,176,164,164, 36,183,156, 54,155, 13,102,179, 25, 86,171, 21, 38,147, 9, 53,106,212, 96, 37,213,163,129,120, 0,
+248,245,148, 1, 0, 66,238,151, 76,163,209, 84, 31, 60,120, 48,159,145,145, 1,169, 84, 10,179,217,140,212,212, 84,212,170, 85,
+ 75,242,253,247,223, 87, 45, 45, 95,165, 74,149, 70,204,154, 53, 43,252,215, 95,127, 53,175, 88,177,194,212,169, 83, 39,233,136,
+ 17, 35, 2, 90,183,110, 93, 35, 46, 46,142,251,230,155,111,140,219,182,109,179, 12, 29, 58, 84, 62,115,230,204,240,205,155, 55,
+247, 0,240,201,195, 14, 39, 3,195,127, 16, 59, 93, 23,149, 6, 80,162,208, 18,113,152, 82,218, 11, 0,100, 50, 89,253,114,229,
+202, 45,179, 90,173, 81,118,171, 78,170, 84, 42,253,196,108, 54,159,176, 87, 84, 27, 4, 65,232,233,205,146, 53,116,232,208,102,
+191,253,246,219,156, 3, 7, 14,228,101,101,101, 69,109,220,184,209,240,198, 27,111,220, 0,128,107,215,174, 37,246,232,209, 35,
+118,236,216,177, 73,157, 59,119, 94,208,174, 93,187,151,119,236,216,177, 13, 69, 93,146, 37,138,172, 90,181,106,237,223,189,123,
+183,127, 80, 80, 80,113, 85, 87,161, 2, 94,126,249,101, 89,207,158, 61, 43,118,232,208, 97, 31, 33,164, 21,165,244,140, 47,130,
+168,114,229,202,219,255,252,243, 79,191,224,224, 96,228,230,230, 34, 53, 53, 21, 58,157, 14, 1, 1, 1, 24, 48, 96,128,172, 77,
+203, 22,229,198,142,123,101, 59, 33,164,163, 47, 98,139, 16,210,164, 69,205,154,219, 87,206,156,233,103,185,117, 11, 42,149, 10,
+133,133,133, 0, 0,127,127,127, 52, 74, 72,224,143, 46, 95, 30, 59,100,194, 4,145,243,161,139, 45, 66,136,194,110, 6, 53, 18,
+ 66, 54, 73, 36,146, 94,114,185,156,235,213,171, 23,182,111,223, 78, 12, 6, 3, 15, 0, 74,165,210,218,171, 87, 47,168, 84, 42,
+152, 76, 38, 1,192, 38, 79,150, 39,119,156, 82,169,148,107,215,174,157,238,240,225,195,217, 34,167, 90,173,182,180,107,215, 46,
+ 84, 46,151,171,172, 86, 43, 45,137,243, 1,137, 73, 92,189,122,181,216,177,130,130, 2,100,100,100, 32, 43, 43, 11, 70,163, 17,
+185,185,185, 16, 4,129,168, 84,170, 12, 65, 16,192,113, 69,198, 55, 79,156, 50,153, 12,151, 46, 93, 42,118,204,106,181, 66,171,
+213,194,104, 52,194,108, 54,163,160,160, 64,229,239,239, 95,185,102,205,154, 73, 0, 54,100,103,103,127,146,154,154,122,147,149,
+ 91,255, 8,110,109, 58, 97, 40, 15,192, 4,224,122, 25,240, 9, 0,176,103,207, 30,164,165,165, 33, 51, 51, 19, 25, 25, 25,136,
+139,139,195,189,116,199, 93,189,122,117,113,237,218,181,201,217,179,103,183, 0,248,116,245,234,213,195,179,179,179, 39,142, 31,
+ 63, 62,228,227,143, 63,206,158, 48, 97,194, 44, 0,223,173, 94,189,250,165,234,213,171,119,189,112,225,194,210,127, 34,156, 12,
+ 12, 15, 0,141, 1,132,219,255,103,218,203,221, 80,167,253, 83,246,124, 43, 94,103, 2, 32,119,243, 43, 66,220,207, 0,112,196,
+233, 62,113,255, 94,234, 79,234,252,235,104,116, 3,192,230,205,155,169,184,185,187, 57, 50, 50,114, 92,251,246,237,231, 28, 59,
+118,172,198,157, 59,119,130,239,220,185, 19,124,236,216,177, 26,237,219,183,159, 19, 25, 25, 57, 78,188,206,238,113, 15,167,125,
+231, 33,154,178,253,251,247,199,175, 95,191,126,214,246,237,219,243,234,215,175,111,250,243,207, 63,173,157, 59,119, 78, 7, 96,
+ 5, 96,237,220,185,115,250,142, 29, 59,108, 77,155, 54, 85,253,246,219,111,183,247,237,219, 55,119,237,218,181,145, 0, 36, 30,
+ 56, 65, 8,145, 6, 5, 5,253,188,107,215,174,187, 68,150, 51,202,149, 43,135, 77,155, 54, 5, 4, 5, 5,109, 32,132,200, 74,
+ 8, 39, 8, 33, 74,165, 82,185,110,199,142, 29,126,254,254,254, 72, 79, 79,135, 84, 42, 69, 68, 68, 4,242,242,242,144,122,231,
+ 14,110, 94,190, 12,206,100,194,188, 15,167,249,171, 84,170,181,132, 16,185, 55,206,192,192,192,117, 43,103,204,240,203,218,190,
+ 29, 39,167, 79,135,217,108,118,116,185,154,205,102,236, 27, 61, 26, 25,127,252,129,111, 38, 79,246, 11, 12, 12, 92, 71, 8, 81,
+150,196, 89, 22,112,230, 36,132,140, 6,144, 13, 32,155, 16, 50,154, 82,122,160, 86,173, 90,199,206,159, 63,143, 86,173, 90, 97,
+205,154, 53,117,199,143, 31, 63,122,252,248,241,163,215,172, 89, 83,183, 85,171, 86, 56,127,254, 60,106,213,170,117,204,217,151,
+202, 23,206, 93,187,118,161,125,251,246, 57,107,214,172, 73,156, 60,121,242,140,201,147, 39,207, 88,181,106, 85,197,246,237,219,
+231,204,159, 63,223, 88, 18,231,131,136,187,179,165,201,121, 19,132,191,235,152,152,152,152,244,245,235,215, 99,192,128, 1,156,
+ 92, 46,191, 51,112,224, 64,197,222,189,123, 41,128, 77,165, 9,167,193, 96,128, 94,175,135, 86,171,197,181,107,215, 84, 31,125,
+244, 81,203, 15, 62,248,160,210,246,237,219, 99,223,126,251,237, 81,225,225,225,199,163,162,162,226, 31,118,220, 25, 39, 0, 32,
+ 21,128,217,222,184,187,121, 63,156, 29, 58,116,168, 93,169, 82,165,200,213,103,131,145, 35,171, 6, 65, 22, 4, 65, 22, 4, 91,
+104, 99, 92,149, 63,133,242,229,203, 71,250,251,251, 55, 43, 13, 39,165,116,197,153, 51,103,158,160,148,126, 64, 41,205,162,148,
+206,153, 48, 97,194, 20, 66,200,158, 9, 19, 38, 76,163,148,206,177, 31,159,126,254,252,249,166,148,210,149,255, 68, 56, 89, 90,
+ 98,156,247, 2, 47, 90, 36,156, 16,178,137, 16,178,105,210,164, 73,237, 0,132,186,236, 55,119,190, 14,128,220,221,175,184, 57,
+ 29, 15, 7,208,205,233,190,240,123,124, 31,196,117, 43, 38,180, 0,160, 91,183,110,164, 91,183,110,226,137,195,132,144,141, 0,
+ 14,203,100,178,250,245,234,213,235,245,251,239,191,251,135,135,255,253,252,240,240,112,172, 93,187,214,191,102,205,154,189,100,
+ 50, 89,125, 0,135, 3, 2, 2, 54,194, 77, 23,163, 29, 65,163, 71,143,238,243,204, 51,207,228,215,175, 95, 31, 0,114,207,157,
+ 59,167,110,218,180,169,214,106,181, 18,171,213, 74,154, 54,109,170, 61,119,238,156,218, 98,177, 20, 52,110,220, 88,211,161, 67,
+135, 27,175,191,254,250, 80, 0,202, 18,226, 55,120,246,236,217,113,193,193,193, 37,189, 0, 20, 20, 20, 32, 50, 50, 18,163, 71,
+143,142,146, 74,165,207,149,244,194,120,158, 31, 51,123,246,236,136,160,160, 32,228,228,228, 32, 46, 46, 14, 38,147, 9,151, 46,
+ 93,130, 65, 91, 8, 75, 65, 62, 44,249,185,200,248,235, 10,130,164, 60,134,246,236, 30,201,243,252, 24, 47,214,146, 49, 95, 79,
+152, 16,105,186,113, 3,215,214,172,129,205,122,183,161,198,106, 54,227,244,151, 95,194,144,148,132, 89, 35, 71, 70,202,229,242,
+ 49, 15,217,146,245, 49,165, 84, 69, 41, 85, 17, 66, 22, 52,111,222,252,123,149, 74, 53,122,230,204,153, 93,182,110,221,250,228,
+238,221,187,219, 90,173, 86,169,213,106,149,238,217,179,167,149,193, 96,224, 21, 10, 5,120,158,167,190,114, 54,107,214,108,153,
+ 74,165, 26,181,100,201,146, 46, 59,118,236, 24,122,244,232,209, 49, 54,155, 77,110,179,217,228, 71,143, 30,125, 81,175,215, 75,
+ 41,165, 54, 79,156, 15, 27, 82,169, 20, 50,153, 12, 42,149, 10, 45, 91,182,252,235,171,175,190,178,196,197,197, 73,215,173, 91,
+ 23, 28, 19, 19,163,249,244,211, 79,115, 11, 10, 10,102,251,202,103, 54,155, 97, 52, 26,161,215,235, 97, 48, 24,240,231,159,127,
+ 38,140, 29, 59,150, 55, 24, 12,182, 30, 61,122,100, 91, 44, 22,227,132, 9, 19, 2, 66, 66, 66,222, 96, 13,216,127, 4, 86, 0,
+133,118,161,101,116, 78,203,132,144, 58,162,117,214, 23,228,230,230, 46,253,250,235,175,227, 56, 69, 16,246,154,186,226, 71, 97,
+ 10,182, 6,126,138,244,248, 55, 17, 17, 87, 9,131, 6, 13,138,160,148,126, 90, 6, 21,222, 34, 74,105,107, 74,233,130,123,185,
+255, 65,135,147, 16, 18,239,231,231,183, 38, 32, 32, 96,175,159,159,223, 26, 66, 72,252,253,198,185,115,101,210,177, 87, 13, 73,
+ 82,231, 74,132,246,170, 33, 73,234, 92,185,244,115, 61, 49, 60,154,112,209, 34,206,200,160,148,118,167,148,118,159, 53,107,214,
+ 12,167,244, 47,238,171,124,204, 47,221, 41,165,221, 93,210,232,166, 50,168, 67,169,235,230,208, 20,206, 74, 82,140,156,243,232,
+194,114,229,202, 45, 91,182,108,153,191, 43,233,157, 59,119,144,159,159,143,119,223,125,215,255,153,103,158,121,229,246,237,219,
+195,188,132, 67,158,154,154,218, 96,200,144, 33, 74,179,217,156, 35, 8, 2,151,159,159,207, 7, 6, 6,218,196, 11, 2, 3, 3,
+109,121,121,121, 82,173, 86, 43,177,217,108,198,103,158,121, 70, 62,114,228,200, 70,206, 22,173,187, 36,110,120,120,167,174, 93,
+187,202, 61,157,183, 88, 44,208,106,181,208,106,181, 48,155,205,104,217,178,165,226,171,175,190,234, 12, 96,137,167,123, 20, 10,
+ 69,167, 78,157, 58, 73,179,179,179, 17, 24, 24,136,155, 55,111,226,250,245,235, 48, 22, 22,194, 92,152, 15,115, 97, 1,172, 5,
+249,160,249,121,200,186,114, 17, 77,171, 87,147,253,160, 80,116, 1, 48,215, 19,103, 64, 64, 64,167,166,195,135,243, 26,141, 6,
+109,135, 20,141, 51,248,173,122,117, 80,155, 13,130,205, 6,155,213,138, 46,151, 46,193, 98,177,128,227, 56, 52,206,206,230, 3,
+150, 47,239, 4, 96,206, 63,145,216, 21, 10, 5,191, 98,197,138,193,114,185, 28,148, 82, 98, 50,153,176,117,235,214,251,230, 92,
+190,124,249, 80,145,211,108, 54,211,218,181,107,223,149,161,140, 70, 35,125, 84, 50,189, 92, 46,135, 82,169,132,217,108, 70,133,
+ 10, 21,244, 67,134, 12,217,255,225,135, 31,150,231, 56, 78, 35,147,201,126,207,202,202,154,145,146,146,114,205, 87, 62,139,197,
+ 2,147,201, 4,147,201, 4,189, 94,143,191,254,250, 43, 42, 33, 33,129,140, 30, 61,218,166,211,233, 18, 23, 46, 92,120,117,235,
+214,173,234,217,179,103, 63, 13,224,101, 86,236, 62, 60,216,173,210,129,229, 67,121,173, 84,130, 66, 0,254,118, 81,240, 52, 33,
+164,105,141, 26, 53,130,207,159, 63,159, 67, 8, 57, 8,224, 71, 74,233,157,146,248, 4, 65, 32,130, 32,224,197, 38,185, 24,221,
+ 76, 2,139, 37, 15,121,121,121,184,121,243, 38,206,157, 59,135, 67,135,206,221, 83, 56,149, 74,229,115,126,126,126,157,149, 74,
+101, 5,171,213,202, 21, 22, 22,222,212,233,116,219, 5, 65, 88, 74, 93,187, 21,124,192,131, 10,167, 8,141, 70,243,209,219,111,
+191,221, 34, 48, 48, 16, 39, 78,156, 72, 92,181,106,213, 71,184, 79,231,122,165,148,251,102,238,252, 79, 99, 99, 35,130,112,106,
+247, 47,177, 51, 62, 95,253, 13,128, 56,150,138,255,253,112,214, 34, 46, 56, 2,160,155,125, 52,122,247,251,200,231,247,117,127,
+ 73, 22, 45,215,133,165,239, 18, 90, 30, 34, 6,171,213, 26,229,108,201,162,148,226,206,157, 59, 72, 78, 78, 70, 70, 70, 6,130,
+131,131, 97, 54,155,163,124,169,103, 11, 10, 10,154,132,134,134,234,164, 82,169, 81,175,215, 67,173, 86, 11, 82,169,148,218,159,
+ 67,236,163, 22,109, 70,163,145,240, 60,111,241,247,247,247, 51, 26,141,213, 80,130, 47, 25,165,180, 73,104,104,168,219,115, 70,
+163, 17,133,133,133,208,106,181, 40, 44, 44,132,209,104, 68,100,100, 36,172, 86,107,131, 18,155,180, 86,107,157,240,240,112,164,
+164,164, 64,165, 82, 33, 41, 41, 9,166,194, 2,152, 11, 10, 96,213,230,195,150,151, 7, 33, 63, 31,130, 54, 31, 22,147, 14,177,
+ 85,170, 67, 28,145,232, 9, 38,147,169, 78,104,104, 40,180,218,191,221,205,168, 93, 96, 89,173, 86, 88,237,206,209, 98,119, 98,
+ 88, 88, 24,196, 17,137, 15, 3,118,255,169,241, 28,199, 45, 80, 40, 20,252,168, 81,163,112,231,206,157, 98,105, 98,212,168, 81,
+ 14,159,172,214,173, 91,239, 81, 42,149,214,140,140, 12, 24,141, 70,169, 47,156, 21, 42, 84,184,249,238,187,239, 30, 54,153, 76,
+113, 49, 49, 49, 65, 70,163, 81, 95,181,106,213, 24,149, 74, 21,105, 50,153,108,141, 26, 53, 90,170, 82,169, 44,133,133,133,212,
+106,181,146, 71, 33,211, 19, 66, 64, 8, 41,250, 70, 86, 43,194,194,194,180,153,153,153,135,114,114,114, 6,223, 11,159,197, 98,
+ 17, 71,116, 65,175,215,131, 82,138, 19, 39, 78, 64,169, 84, 74,109, 54,219, 89,171,213,170,150, 74,165,224,236,206, 95, 12, 15,
+237, 59,183,173, 22, 36,159, 59,179,105, 68, 80,189, 30, 26,173, 90, 46,209, 10, 55,235, 85,248,246,227,115,171,158, 25,250,156,
+255,212,169, 83,227,195,194,194,148, 87,175, 94, 53, 76,155, 54, 45, 97,197,138, 21,196, 91, 35,232,214,173, 91, 63,189,253,246,
+219, 33, 93,187,118, 77, 84, 40, 20, 36, 47, 47, 15, 25, 25, 25, 72, 75, 75,195,245,235,215,233,169, 83,167,254, 50, 26,141,107,
+ 74, 19,206,152,152,152,175,198,142, 29,251, 76,195,134, 13,165,162,133, 84,171,213,214,223,181,107, 87,207,223,126,251,173, 21,
+128, 82,167,203,219,183,111,175,121,231,157,119, 52, 79, 61,245, 84, 53,133, 66,193,149, 69, 56,157,193,113, 92,164,159,159, 31,
+182,111,223,142,160,160, 32,112, 28, 23,121,191,223,203, 96, 22, 98, 99,162, 66, 97,216, 55, 23,213,194,227, 97, 48, 11,177, 44,
+ 21, 63, 62, 22, 45, 15,167, 26,139, 22, 41, 47, 98, 73, 63,113,226,196,183, 9, 33,155, 38, 78,156,248,182, 59,139,150,253,175,
+205,249, 58,167,235,141,101, 45,182, 74, 53, 41,164, 32, 8, 72, 78, 78, 70, 74, 74, 10,146,147,147,145,149,149, 5,142,227, 74,
+156, 63,194, 57, 12,132, 16, 97,219,182,109,193,251,247,239,215, 54,110,220, 56, 87,244,127,177, 90,173,196, 98,177, 16,187, 95,
+ 12,185,121,243,166,108,239,222,189, 65, 23, 46, 92,136, 68,145,195,154,224, 37,114,119, 29, 19, 5,150,243,102, 48, 24,160, 84,
+ 42,125,138,171, 88, 17,158, 56,118,172, 72,100, 21, 22,216,187, 12,243, 96,203,207, 3,213, 22, 64,110,179, 64, 14, 10, 98,208,
+249,252,254,156, 33,138, 44,179, 93,104,153, 76, 38, 88, 44, 22, 8,130, 0,171,213,250,208, 19, 56,165,116,113,253,250,245, 27,
+252,244,211, 79, 35,146,147,147,239, 58,223,187,119,111,188,252,242,203, 24, 59,118,236,133,110,221,186,157,250,229,151, 95, 48,
+102,204, 24, 8,130, 80,143, 16,146, 71, 41,253,173, 36,206,137, 19, 39, 30,189,125,251,246,206,203,151, 47,143,138,136,136, 80,
+212,169, 83,231, 74,157, 58,117, 36, 63,253,244, 83,228,243,207, 63,127,236,201, 39,159,188,241,199, 31,127,132,108,223,190, 93,
+ 41, 8, 66, 67, 66, 72,242, 63, 61,143,150,209,104,116, 88,160, 12, 6, 3,204,102, 51, 80,130,243,187,183,180, 41,126, 91,171,
+213, 42,114,147,159,126, 90,143, 61,123,246,112,231,206,157,141, 27, 53,106,180,232,112,207, 74,220,135, 35,176,158,146,115,228,
+139,241,245, 66,149,111,212, 13,213,202,121, 82,120,233,139,183, 11,175,151, 15,208, 70,150, 83,155,226, 18,130, 98,102,204,248,
+ 48,250,194,133,139,198,119,223,125,247,252,192,129, 3, 35,222,120,227,141, 26,235,214,173,107, 69, 8,249,154, 82,154,235,129,
+ 87, 57,124,248,240,131, 17, 17, 17, 9,159,127,254,121,250,237,219,183,131, 45, 22,139,198,108, 54, 11, 90,173,246,186, 94,175,
+223,110, 54,155,183, 83, 74,143,149, 38,188,254,254,254,117,135, 15, 31, 46,205,205,205,133,125,180, 46,210,211,211,209,162, 69,
+ 11,201,198,141, 27,107,222,203, 59,200,206,206,158, 75, 8,217,185,114,229,202,206, 1, 1, 1, 13, 21, 10, 69, 20, 0, 91, 65,
+ 65, 65,154, 86,171, 61,121, 47,225, 44, 86,206,217,108,105,199,142, 29,171, 24, 16, 16,128, 91,183,110,193,102,179,165,221,239,
+119, 83,202,184,219,167,119,111, 44, 87, 61, 44, 1,123,247, 31,132, 82,198,221,102,169,249,177,135,232, 67, 5,103, 1,229, 70,
+ 32,237,159, 57,115,166,106,214,172, 89,152, 57,115,230, 89,119, 22, 45, 81,112,205,156, 57,243,172,120,157,211,245,187,239,163,
+ 60,241,108,209, 42, 65, 65,130,231,249,212,140,140,140,224,160,160, 32,135,192, 74, 73, 73, 65, 74, 74, 10,228,114, 57,110,222,
+188, 9,185, 92,126,199,151, 70,136, 74,165, 58, 90,191,126,253,170,215,174, 93,147, 77,155, 54,173,220,177, 99,199, 2, 90,180,
+104, 81, 91,165, 82,217, 40,165, 48, 24, 12,220,249,243,231,253,230,204,153, 19,219,164, 73, 19, 83,147, 38, 77,142,175, 94,189,
+ 90,143, 18, 38, 47, 37,132, 28,190,115,231, 78, 98,133, 10, 21, 68,209, 86, 76, 92, 57, 11, 46,160,168,203,147,231,249,227, 37,
+ 5,148,231,249,211,151, 46, 93,234,168, 86, 42, 96, 42,200,135,185, 48, 31,214,130, 2,216, 10,242, 96,203,203, 3,180,249,144,
+ 91,173,144,218, 44, 80, 41,149, 72, 78, 74, 2,207,243,167, 75,226,148,203,229,167,211,210,210, 58, 6, 5, 5, 57, 42, 81,139,
+213, 90,180,217,108, 48, 89,173, 14,139,150, 84, 42,197,237,219,183, 33,151,203, 79, 63,236,148,204,113,156, 77,156,194,193, 67,
+ 60, 16, 25, 25, 41, 52,109,218, 20, 99,198,140,129,205,102,179,127, 6,210,150, 16,178,151, 82, 90,232,137, 83, 16, 4,238,252,
+249,243,125,174, 94,189, 42,145, 74,165,220, 19, 79, 60, 81,171,101,203,150, 38,185, 92, 14,153, 76,198, 23, 22, 22,250,111,223,
+190, 93,105,177, 88,136,157,243,161,205,163, 37,166,157,187,154, 70,118,167,117,189, 94,143,194,194, 66,228,228,228,240, 42,149,
+170,106,237,218,181, 15,154, 76,166, 53, 86,171,245,155,107,215,174,229,123,226,180, 11, 51,135,232, 18, 4, 1,148, 82,216,108,
+ 54, 88, 44, 22,200,100, 50, 97,215,174,221,152, 51,239, 35, 44,251,102, 5,237,217,179, 39,217,184,113, 35, 4, 65, 72, 98,229,
+234, 67,193, 39,185, 63,126,168,132,213,166, 53,238, 90, 89,248,253,229,124,237,212,239,231, 31, 53,201, 37,249,141,218, 68,214,
+ 73, 76,168, 42, 9, 10, 10,230,150, 44, 93,144,245,195,138,181, 87,111,221,186,149,255,217,103,159, 53,171, 90,181,106,224,201,
+147, 39, 99, 1,184, 21, 90,106,181,186,242,115,207, 61, 55, 60, 39, 39, 71,182,108,217,178,213,119,238,220, 57, 10,224, 28,165,
+ 84,235, 84,118,117, 35,132,124,135,162,145, 79,145,246,114,110, 47,165,116, 90, 73,237, 53, 66, 8,118,236,216,113,215,232, 64,
+225,254,212,121, 80,165, 74,149, 6, 92,187,118,109, 79,106,106,106, 95, 55,249,126,106,149, 42, 85,186,156, 61,123,118, 10,165,
+244,215,210, 16,235,116,186, 9,107,215,174,253, 88, 34,145,196,216,108,182, 20,189, 94, 63,225,190, 45, 90, 22, 97,228,204, 37,
+171,190,212,155,108,229, 85,114,201, 45,131, 69,120,158, 37,229,199,218,154, 5,216,125,180,196,255, 0,136,203,254, 73,251,127,
+147,211,181, 25, 78, 86, 44,147,139, 21,204,221,185, 12,220,227,100,233,238, 70, 28,138,162,203,211,204,240,147, 0, 52, 1,112,
+ 88, 42,149, 46,120,230,153,103,230,252,240,195, 15,254,249,249,249, 72, 75, 75, 67,122,122, 58,120,158, 71, 64, 64, 0, 22, 47,
+ 94,172, 79, 75, 75, 91,224,124,143,235, 12,242, 98,222, 8, 11, 11, 59,186, 98,197,138,168, 47,190,248,130, 31, 54,108,216,205,
+110,221,186, 85, 91,188,120,241, 53,153, 76, 70,109, 54, 27, 49, 26,141,228,197, 23, 95,172, 56,111,222,188, 27, 18,137, 68, 61,
+ 96,192, 0,162,209,104, 14,163,200, 65,213,253,155,207,200,216,246,243,207, 63,247,121,253,245,215, 21, 38,147,201,173, 37, 75,
+ 60, 22, 20, 20,132,125,251,246,153,114,114,114,182,122,177, 98,108,251,253,215,205,173,255, 55,112,160,204, 82,144, 15, 75, 65,
+ 62,172,249,249,176, 21,228,130, 20,230, 67,106,179, 66, 37, 19, 16, 21,167,132, 85,239,135,205, 71, 78, 90,140, 70, 99,137, 19,
+ 27,230,231,231,111,219,187,108, 89,219, 38,241,241,252,190,113,227, 96,182, 88,240,212,165, 75, 14,113,101, 54,155,177,161, 78,
+ 29,216, 8, 65,189, 23, 94,192, 21,171,213,154,159,159,191,237, 81,204, 12,167, 78,157, 74, 31, 50,100,200, 49, 65, 16, 26,148,
+198,186, 35,194,207,207,175,160,176,176, 16,153,153,153,182,172,172, 44, 3, 0,164,167,167,231,108,220,184,241,188, 32, 8, 77,
+238,133,179, 44, 96,177, 88,238,178, 70,217,108,182, 34,171, 99,145,229, 64,190,121,243,230,214,231,207,159,151,157, 57,115, 6,
+123,246,236,169,247,195, 15, 63, 76,138,143,143,175,115,243,230,205, 84,111,226,205,221,164,191,176,251, 31,174, 94,185, 6, 47,
+189,244, 18, 73, 77, 77,197,143, 63,254, 8,111,147,167, 50,148, 25,180,176,218, 84,166, 93, 43, 11,187,253,122,171,224,192, 29,
+253, 52, 0, 91,168,222, 74,203,149, 43,119,170, 97,195,224, 48, 0, 48, 26,108, 81,149, 43, 87,110,195,243,188,220,158,134, 27,
+134,134,134, 46, 6,208,210, 77,249, 41, 25, 56,112, 96,211,136,136,136,250,191,253,246,219,201, 59,119,238,156,165,148, 30,114,
+189,174, 98,197,138,239, 94,184,112,161,177, 84, 42, 37, 94,210, 8, 0,160,109,219,182, 85,227,227,227, 67,127,189, 28,136,124,
+ 89, 37, 80, 73, 30,192, 43, 97, 11,170,139,155,178, 26,136,139, 59, 24, 26, 20, 20, 84, 47, 55, 55,247,100, 41, 43,136,118,125,
+250,244,249,102,217,178,101,113,109,218,180,161,132, 16,206,117, 74,135,138, 21, 43,118, 62,112,224, 64,131,231,159,127,254,115,
+251,232, 97,159,157,135, 41,165, 55, 1,244, 43,203,143,182,245, 10,221, 14,251,156,103, 12,255, 25, 28,121, 64,215,150, 9,238,
+101,102,248, 38,130, 32,244,228, 56, 14,102,179,121,102,100,100,228,134, 1, 3, 6,244,158, 52,105,146, 95,104,104,168,195,146,
+181,120,241, 98,253,245,235,215,215,153,205,230, 19,132,144,201, 41, 41, 41, 61, 99, 98, 60,214, 15, 5, 11, 23, 46, 92,213,163,
+ 71,143, 97, 47,188,240,130,190, 78,157, 58, 1,213,170, 85,211,237,223,191,223,175, 83,167, 78,249, 18,137,132,238,219,183,207,
+191, 98,197,138, 6, 66,136,226,143, 63,254,200, 58,120,240, 96,197,153, 51,103,126,141,162,225,214,158,176,114,250,244,233,239,
+246,236,217,179, 98,104,104, 40,242,243,243,139,137, 45,241,191, 82,169, 68,106,106, 42,214,175, 95,127,199, 98,177,124,237,197,
+178,241,217,167,139,151,188,210,174,233, 19,177, 1,106, 21, 82,147,110,194,150,151, 3,104, 11, 33,183, 90,160,146, 83,196, 86,
+ 82,131,151,104,112, 53,181, 16,203,246, 31, 73,181, 90,173,159,149,196,105, 50,153, 62,123,121,222,188, 87, 14, 44, 89, 18, 27,
+223,191, 63,206, 45, 95,238,232, 42, 20,133,150,141, 16,148,239,208, 1, 92, 96, 32,102,124,254,121,154,201,100,250,236, 97, 39,
+ 22, 65, 16, 36, 38,147,169,164,120, 64, 16,132,164,115,231,206,173, 34,132, 20, 16, 66,218,218, 79,237,116,103,205,114,230,228,
+ 56, 78,168, 81,163,198, 79,145,145,145,125, 0,104,107,212,168,241,147, 66,161,104,111, 50,153,158, 16, 4, 33,233,196,137, 19,
+235, 9, 33,169,132, 16,177,213,241, 80,231,209,178, 88, 44,152, 60,121, 50,102,205,154,133,137, 19, 39, 58,226, 43,118, 31,230,
+230,230, 38,236,221,187, 87,182,107,215, 46,250,249,231,159,103, 13, 27, 54, 44,232,133, 23, 94, 8,250,226,139, 47, 94, 3, 48,
+193, 19,231,132, 9, 19,240,249,231,159,227,165,151, 94,186, 91,101, 73, 36, 66, 82,210,109, 24, 12, 6,186,112,225,194, 20,169,
+ 84, 26,252,245,215, 95,171,158,127,254,121,194,202,213,135,130,119, 84, 67,222,123,213, 94,198, 44,160,148,238, 20, 79, 4, 4,
+ 4,168,126,250,233,103, 30, 0,214,173, 93, 47,165,148, 6,138, 19,204,126,255,253,247,202, 22, 45, 90, 68,120, 40,112,109, 74,
+165,210, 56,123,246,236,208,145, 35, 71, 62,249,231,159,127, 6, 19, 66,154, 2, 56, 10, 32,205, 46,174, 35, 0,156, 11, 11, 11,
+ 11, 88,189,122,117,108,231,206,157, 53,222, 2, 90, 80, 80,240,245,170, 85,171, 42,204,219, 27,136, 95,181,125,112, 91,232, 15,
+ 26, 68, 17, 18, 81,128, 26,126,183, 48,120,240,224,152, 5, 11, 22,124, 9,160, 97, 41, 68,214,224,222,189,123,207, 90,182,108,
+ 89,204,200,145, 35, 83,143, 31, 63,158, 6, 96,153, 27,193,151,249,204, 51,207,220, 89,190,124,121, 52,165,116, 9, 33, 68, 78,
+ 41, 93,199,146, 15, 3,131, 35, 47,181, 65,209,140,240,119,137, 47,226,206,191,137, 16,178,193,106,181,246,228,121,126,163,243,
+132,165,145,145,145,175,152, 76,166,104, 66, 8,149,201,100,169,105,105,105, 11,156, 39, 44, 77, 74, 74,234, 25, 23, 23,231,184,
+199, 62,233,166,243, 92, 27, 1, 79, 61,245, 84,199, 3, 7, 14, 44,218,180,105, 83,122, 65, 65,129,223,218,181,107, 85,179,102,
+205,186, 41, 8, 2,125,235,173,183,226,187,116,233,162,179,217,108,119, 94,120,225,133,138, 9, 9, 9, 47, 92,184,112, 97,187,
+179,208,114,195, 9, 66, 72,205, 74,149, 42,237, 91,183,110, 93, 64, 80, 80, 16,210,211,211,145,157,157, 13,173, 86, 11,155,205,
+ 6,169, 84,138,140,140, 12, 76,155, 54, 45, 63, 37, 37,229,174, 9, 75, 61,112, 54,169, 16, 27,187,109,193,148,201,254, 65, 60,
+135,172,139,231, 97,205,201,130,212,106, 65,185,154,129,144,201, 85,184,114,169, 0,175,173, 92, 95,112, 43, 59,247,174, 9, 75,
+ 61,113, 54,170, 92,121,251,231,227,199,251, 25,110,223, 70,244,179,207, 66,167,211,193,108, 54,131,227, 56,252,181, 96, 1,100,
+225,225,120,119,245,106,237,217, 91,183, 58,184, 78, 88,234,142,179, 12, 18,135,131,147, 16, 50,154, 16,226,112,134,239,221,187,
+119,177,107,127,254,249,103, 44, 89,178, 4, 70,163,209, 74, 41,125,133, 82,186,152, 16,226,103, 79, 80,133,222, 56, 43, 84,168,
+112,171, 86,173, 90, 71,108, 54, 27,111, 23, 25,244,220,185,115, 13,175, 95,191, 94,206,133,147,183,115, 90, 31, 86,220, 67, 67,
+ 67, 23,252,246,219,111, 21, 34, 34, 34,136,243,140,237,118,161, 8, 0, 24, 51,102, 76,135,131, 7, 15, 42,234,215,175,111,204,
+204,204,108, 28, 30, 30,254,231,138, 21, 43,194, 6, 12, 24,144,114,246,236,217, 88, 87,206,176,176,176, 57,235,214,173,171, 84,
+169, 82, 37, 78,180,138,185,118, 79,142, 24, 49,162,227,138, 21, 43,228,125,250,244, 49,106,181,218, 72,127,127,255,171,235,214,
+173, 11,235,213,171, 87,234,217,179,103,163, 31, 70,220, 25,167,123,212,170, 85,235,202,217,179,103, 43,137,251,122,189, 30, 25,
+ 25, 25,200,204,204, 68, 80, 80, 16, 58,117,234,244,215,245,235,215, 43,185,227, 36,132,212,239,215,175,223,148, 47,191,252,178,
+163, 70,163,145,237,222,189, 91,187,125,251,118,195,205,155, 55,173, 22,139,133, 70, 71, 71,243, 45, 91,182, 84,118,237,218, 85,
+163, 80, 40,184,247,222,123, 47,243,195, 15, 63, 12, 35,132,172, 20,151, 63,115,229,108,208,160,193,161,223,127,255,189, 9, 33,
+ 4, 18,137, 4, 38,147, 25,185,185,185, 72, 78, 78,194,185,115,231,112,224,192, 1,108,221,186,245,100, 97, 97, 97,125, 31,243,
+123, 40,128,221, 70,163,177,154, 92, 46,247, 89,216,219,108, 54,240, 60,127, 17, 64,103, 74,105, 18, 75, 75,140,147,225,111,255,
+172, 82, 57,195,219, 5, 88, 19, 66,200, 6,251,161,195,174, 83, 56, 16, 66, 38, 17, 66, 38, 59, 89,193,188,133, 37,255,183,223,
+126,219,211,177, 99,199, 49, 29, 58,116,152,215,185,115,231, 59,119,238,220, 73,156, 59,119,110,156,213,106, 53,159, 59,119,142,
+187,122,245,234,205,163, 71,143, 86,170, 82,165,202, 11, 23, 46, 92,216,229,197,154, 37,134,245, 28, 33,164, 69,187,118,237,214,
+191,240,194, 11,229,155, 54,109, 42, 15, 10, 10, 2,207,243,184,118,237, 26, 78,158, 60,105, 90,189,122,117, 82,110,110,174,207,
+ 75,240, 80, 74, 15, 19, 66, 58, 13, 24,251,202,186, 23,122,247, 8,123,162, 90, 85,121,116,116, 52,160,215,227,226,173, 84, 28,
+188,120,210,252,213,158,131, 25, 70,163,177,175,175, 75,240,216, 57, 59,182, 31, 63,126,221,212,255,253, 47, 18,119,238,240,209,
+209,209,144,203,229,184,126,253, 58,174, 10,130,117,246,210,165,105,249,249,249, 15,125, 9, 30,113,206, 43, 65, 16,120, 0, 80,
+169, 84,120,249,229,151,225,188,228,206,146, 37, 75,160,215,235, 1,128, 39,132,124, 76, 8,249,198,147, 21,203, 3,103,249, 95,
+127,253,181,188, 51,103,245,234,213,221,113, 26, 31,118, 38,201,206,206,126,247,169,167,158,154,201,243,188,199, 89,111,131,131,
+131, 81, 80, 80, 0,171,213,106, 75, 78, 78,190, 24, 28, 28, 12,169, 84, 10, 74,169,219,124,148,149,149,245,110,223,190,125,167,
+115, 28, 23,225,137, 51, 32, 32,224,230,159,127,254, 89,249,249,231,159,231,190,253,246,219,107, 35, 71,142, 84,252,249,231,159,
+ 54, 74,233,122, 86,116, 61, 90,112,110,148,218, 27,113,180,132,107, 79, 16, 66,230, 29, 61,122, 52,124,204,152, 49,137,255,251,
+223,255, 2,218,181,107,231,231,124,141, 94,175, 23,126,249,229, 23,237,146, 37, 75,242,246,236,217,115, 99,196,136, 17, 77, 81,
+228, 95,226, 22,183,110,221,218, 60, 99,198,140,192,174, 93,187, 86, 1,224,240,207,202,200,200,192,205,155, 55,113,230,204,153,
+155,102,179,121, 99, 41,226,147, 69, 8,153, 58,104,208,160,143,151, 47, 95, 30, 51,114,228,200,212,213,171, 87,159, 65,209, 4,
+195,174, 8,234,221,187,119,157,229,203,151, 71,143, 28, 57, 50, 21,192, 52, 74, 41,243, 35,100, 96,248, 27,109, 93,253,180, 74,
+244,209, 2,144, 39, 8, 2, 12, 6, 67,164, 32, 8, 61, 5, 65,128,159,159,159,187,235,154,164,164,164,244,116, 94, 84, 26, 94,
+150,203, 1,144,177,125,251,246,109, 43, 87,174,236,240,214, 91,111,253, 47, 55, 55,183,201,169, 83,167,154, 2,128, 84, 42, 61,
+160,209,104, 14,205,156, 57,243,217, 9, 19, 38,100,248, 34,178, 92,196, 86,141, 57,115,230,148,217,162,210,118, 97, 84,249,179,
+ 53,235,199,124,173, 80,116,114, 89, 84,122,155,125, 81,105,195,189,112,142,255,242,203, 49, 1,107,214, 60,178,139, 74, 27,141,
+ 70,107,159, 62,125,190,230, 56, 78,176,183, 98,121,163,209,248, 44, 74, 57, 82,213,149,179,119,239,222,223, 74, 36, 18,171,221,
+ 82,196, 25,141,198,231,238,135,179, 12, 43,209, 66, 0, 99, 75,186,166,118,237,218, 43, 54,110,220, 56,164,103,207,158, 54,179,
+217,156,222,163, 71, 15,254,208,161, 67,148,227,184,237, 30, 56,141, 0,222, 44,137, 51, 42, 42, 42,254,211, 79, 63, 61, 62,110,
+220,184,128,149, 43, 87,134,236,221,187,215,182,112,225,194,252,236,236,236, 79, 88,185,245,104, 65, 42,149, 66,173, 86,195,100,
+ 50, 33, 35, 35, 3,222,166,172,162,148,238, 32,132,116, 29, 63,126,252,211,227,199,143,239, 26, 21, 21, 85,177, 66,133, 10,106,
+142,227,144,156,156,108, 77, 73, 73, 73,183, 88, 44,219, 0,172, 7,128,138, 21, 43, 62, 3,224, 43, 79,124, 89, 89, 89,211, 9,
+ 33, 59,150, 47, 95,222, 77,163,209,212, 80, 42,149, 33, 22,139,133, 43, 40, 40,200,214,235,245,231, 13, 6,195, 38, 74,233,254,
+ 82,166,251,213,132,144,204, 97,195,134,125,179,108,217,178,184,107,215,174, 21, 28, 61,122,244, 41,215,235,106,212,168,177,119,
+249,242,229,209,207, 63,255,252,157,213,171, 87,151,202, 71,139,129,225, 63,210, 16,219, 5, 15,254,197,158, 42,184, 25,114,185,
+156,135,125,113,105,209,162,229,230,186,195, 46, 62, 89,121, 0,102,248, 16, 38,237,224,193,131,175, 15, 30, 60,248, 99,123, 24,
+ 36, 40,154,194,193,138, 34,143,127, 51,188, 76,233,224, 33,162, 86, 0, 95,218,183,178,122,121, 6, 20,205,151, 51,231, 81,230,
+ 44,131, 48, 25, 9, 33,227, 9, 33, 31,219, 15,141, 63,113,226,196, 98, 23, 11,213, 41,231,243,222, 44, 79,238, 56, 79,158, 60,
+233,202,121,166, 52,156,255, 36,114,115,115, 95,249,244,211, 79, 15, 79,156, 56, 81, 49,124,248,112,156, 57,115, 6,179,102,205,
+ 50,230,230,230,174,188, 87,206,212,212,212,155, 81, 81, 81, 13,230,207,159,255,198,188,121,243,122, 17, 66,216, 90,135,143, 8,
+244,122,253, 95,117,235,214, 5, 41,114, 88,162, 86,171,213, 49, 90,212, 62,195,255, 95,190, 88,141, 0, 44,181,111, 32,132,132,
+160,104,148, 97, 22,165,212,181, 33, 57,222, 7,190, 3, 0, 14,148,113,222,223, 65, 8,121,246,234,213,171, 51,254,250,235, 47,
+183, 66,237,202,149, 43, 59, 91,182,108,233,127,234,212,169,119, 40,165,155, 89,234, 96, 96,240, 29,188,135,140,119, 5,192,255,
+124,200,160, 51,239,227,217, 54, 31,172, 95, 12, 15, 87,108, 45, 38,132,124,227,100,141, 41,213,249,135,197,249, 79, 33, 41, 41,
+ 41, 7,128, 99, 41,146,196,196,196,187,252,216,238, 85,108,161,104, 22,120, 54, 19,252, 35,132,107,215,174, 61,245, 0,242, 88,
+246, 35,154,247,119, 2,104,234,233,188,197, 98,153, 12, 96, 50, 75, 21, 12, 12,165, 7,155,125,154,193,181,192, 53,150, 36,120,
+188,157,127, 88,156, 12, 12, 12, 12, 12, 12,143, 10,220,172,117,216,198,113, 14, 64, 71, 15,149,223,246, 82, 60,160,212, 11,122,
+122,227,103,156,140,147,113, 50, 78,198,201, 56, 25,231,227,199,233,196, 61,207,195,169,139, 46,124, 95,252, 27,133,151, 99,244,
+ 33,165,244,129,109, 0, 58, 50, 78,198,201, 56, 25, 39,227,100,156,140,147,113,222,227,115, 94,120, 24,207, 41,227, 48, 83, 0,
+109,196,125, 30, 12, 12, 12, 12, 12, 12, 12, 12, 12,101, 2,159,230,209, 90,187,118,173, 68,252, 63,104,208,160, 17, 54,155,205,
+ 49,236, 93, 34,145,124,250,227,143, 63,126, 83,210, 67,250,245,235,103, 43,137,211, 29,188, 61,199, 29,103,173,170,129,163, 66,
+ 3,213,175,228,230,233,230, 95, 75,177,237, 49, 24, 12, 53,196,115, 74,165,242,252, 55,223,124,115,185,172,195, 57, 98,196,136,
+ 42,174,207,169, 16, 39,109, 27,226,175,124, 57, 59,183,112,238,153,203, 5, 95,176,100,246, 96,209,191,127,255, 82, 93,127,253,
+122, 16,142, 35, 26, 1, 26, 25, 10,181, 22,216,142, 61, 30, 62,189,209,209,209,213, 2, 2, 2,134, 2,168,169,211,233, 34,212,
+106,117, 58,128,115,249,249,249, 43,238,220,185,115,209, 87,158,182, 9,228, 38,128,242,246,221, 91, 59,175,211,120, 95,206,121,
+ 67,151, 74,196, 64, 1, 5, 33, 48,111,185, 66, 29, 11,104, 62, 89,153, 24, 4,122,247,241, 46,149,137,137, 82,200, 8, 96,220,
+114,149, 42, 31,151,244, 74, 8, 9, 0,208, 9, 64, 45, 0,167, 0,108,165,148,234, 88, 78,102, 96,120,124,224, 58, 81,169,243,
+ 62,239, 65, 76,180,150,241,100, 17, 5, 13, 2,104,168,209,104,148,202,229,114,152, 76, 38,168,213,170,207, 94, 28, 57, 98, 10,
+ 56,228, 90,172,120,249,155,111,190,185,231,149,174, 75,243,156,126,253,250,237,112,189, 63, 56, 64, 53,125,231, 47,111, 5,183,
+238, 54,123,150,233,122,230,132,130,130, 2, 78,161, 80,192,104, 52, 34, 48, 48,176,197,168, 23, 94,104,200, 73,169, 73, 38,211,
+236,159, 55,111, 94,234,189,134,243,181,215, 94,139, 50,155, 13,205, 5, 65,144,155, 76, 38,133,235,115, 2,213,154,217, 59,127,
+121, 75,221,166,251,172, 41, 0,152,208,122,132, 80, 36,178,162,240,234,224, 39,240,209,184,142, 8,106, 59,251,113,200,208,146,
+196,196,196, 49,241,241,241, 3,151, 46, 93, 42, 75, 76, 76,132, 82,169,132, 94,175,143,254,235,175,191,162, 71,141, 26,213,166,
+ 98,197,138,171,174, 93,187,246, 25,165,212,230, 3,101,249,157,223,189, 7, 0,104, 49,116, 90,121, 66,200,155, 0,116, 0,208,
+166,194,223,231,218, 14,159, 86,158, 16, 50, 30,197, 71, 11,223,161,148,186,157, 36,147, 2,242, 77,203,231,160,231, 51,111,242,
+132,144, 81,226,241,174, 85,128,223,191, 95,128, 39, 7,189, 82,236,120,151,138,224,127, 89, 62, 7,221,159,121,211,227,170,230,
+ 79, 86,225, 44,130, 64, 61, 90,226, 57,142, 88,183, 92,161,238, 22, 24, 78,163,148,110,113,243, 46,187,160,104, 65,103,183,215,
+119,175,206,167,153, 45, 54,183, 19,206,202,164,146,244, 77, 23,172,119,221, 59,188, 1,177, 88,108, 69,101,171,140,135, 45, 48,
+ 48,112,231, 59,239,188,195,119,239,222, 29, 95,125,245, 85,203, 47,190,248,226, 5, 66,200, 31, 0, 54, 82, 74,175,178, 92,202,
+192,240,248, 10, 46,143, 66,139,151,224,243,141,235,190,169,148,150,158,137, 97,207,191,129,149, 43, 87, 34, 39, 39, 7,193,193,
+193,144,203,100,210,249, 31,191, 23, 21, 16,160,137, 26,246,194,132,207, 1, 84,187,215, 0,149,242, 57,149,239,138,144,125, 66,
+ 83, 94,194, 73,229,114, 57,183,106,213, 42,228,230,230, 34, 40, 40, 8,114,185,148,155, 55,107,146, 42, 32,192, 79,245,220,232,
+137, 45, 1,172,185,215,112,154, 76,133, 45,127, 90,249, 77, 64, 70, 70, 6,134,191, 52, 1,174,207,145,201,100, 54,177, 98, 97,
+201,236,159, 67,102,102, 38, 0, 32, 44, 44,204, 69,100, 53,197,188,215, 59,227,181,185, 91,161, 51,152,254,245,241, 76, 76, 76,
+ 28,211,191,127,255,129,211,167, 79,151,113, 92,209,192, 97,173, 86, 11,189, 94,143,216,216, 88,236,220,185, 83,246,238,187,239,
+ 14,252,249,231,159, 1, 96, 97,105,249,207,158, 61, 91,161,124,249,242, 6, 0,232, 81,199,223,245, 92,188,120, 14, 0,252,253,
+253,189,242,133, 6,105,140,103,207, 30,172, 41,222, 55,166, 67,172,205,195,113, 3, 0,117, 73, 92,130, 64,249,173,139, 70,121,
+ 60,255,252,244, 31,172,167,214,236,169,150,152,152,168,119, 62,238, 97,194,101, 0,136, 44, 44, 44, 44,239,122, 80,188,222,108,
+177, 69,120,122, 94,231,151,151,184, 21, 96, 22, 27,248, 31,126,248, 1, 0,240,201,155, 67, 36, 95, 30,202,228,121,190,168,168,
+253,248,227,143, 49,117,234, 84,249,150, 45, 91,186, 46, 95,190,188, 43, 33,100,190, 39,161,202,192,192,240,239, 19, 89,206,191,
+ 37, 10, 45,142, 16,255, 0,127, 63,244, 27,252, 34,126,251,237,119,180,110,221,218,113, 46, 33, 33, 1,253,251,246,194,143,223,
+205, 3, 0,255,251, 9,212,253, 62, 39, 39, 79,251,254,147, 3, 23, 77,187,149, 90,120, 96,211,166, 77,104,213,170, 85,177,251,
+ 7, 15,232,135,239,191,254, 24,148, 82,217,125,189, 60,202,201,252, 3, 52, 24, 52,236, 37,184,123,206, 11,195,123,111,234,210,
+127, 65,199,180, 44,237, 60,150,212, 30, 46, 46, 92,184, 0,163,209,136,128,128, 0, 72,165, 82, 40,130,202, 35,133,111,130, 12,
+146,136,244, 8, 29, 94,239, 24,137, 79, 94,109,135,215,230,110,197,252,149, 7,209, 0,169,255,234,248, 70, 71, 71, 87,139,143,
+143, 47, 38,178, 10, 10, 10, 80, 88, 88,136,252,252,124, 20, 20, 20,128,227, 56, 76,152, 48, 65,182,107,215,174,129,209,209,209,
+219,125,232, 70,188,213, 98,232,180, 34,177, 33,145, 22, 78,158, 60,217, 24, 17, 17, 97, 84,171,213,148,151, 41, 10,218, 14,159,
+230, 15, 0, 28, 47, 43,152, 63,127,190, 41, 54, 54,214,192,243,188,252,149, 87, 94,241,105,122, 24,163,209, 72,157, 57, 77, 38,
+163,227,248,236,217,179, 77,145,145,145, 70,181, 90, 77,205,102,223, 69,240,233,235,217, 80,200, 36, 80,200, 36, 80,202,165,240,
+175,208, 24,138,156, 51,176, 90,173,248,232,163,143,204, 81, 81, 81, 38,181, 90, 77,229,114,185,108,220,184,113, 94,195, 57, 98,
+196, 8, 26, 20, 20,100, 86,171,213,178,169, 83,167,222, 53,187,243,159,167,146,161,146, 75,161, 86,240,168,156, 16, 7, 5,213,
+251, 28, 86,137,164,184, 55,130, 66,161, 64,203,150, 45, 81,179,102, 77,108,216,176,161, 45, 0, 38,180, 24, 24,254,229,112,181,
+ 98,221, 37,180, 54,111,222,220, 6,246, 85,167,187,117,235, 86,180,218, 52, 40,198,143,233,139,231,134, 15,130,205, 38, 56,150,
+155, 32, 28,193,232,103,187, 66, 16,108,190, 60,216,235, 16,207,210, 62,199,153,147, 18, 78, 2, 0,149,226,163,233, 11,207,253,
+ 15, 54, 65, 40,154, 6, 21, 0, 36,192,139,195,159, 44, 58, 86, 6,225,148,192,134, 55, 70, 61, 13,119,207,169, 86, 41,134,179,
+154, 13, 32, 78,139, 61, 62,136,197, 54, 25,103,113,236,223,191, 31,106,181, 26, 67,134, 12,193,184,113,227, 96,227,131,176,246,
+ 64, 22,222, 90,124, 0, 58,163, 25,131,219, 85,192,235,255,171,131,215,231,255,233, 16, 89, 9, 9,185,255,234,184, 7, 4, 4,
+ 12, 93,186,116,233, 93, 34, 43, 45, 45,141, 43, 44, 44,132,217,108, 22, 10, 10, 10, 96,179,217, 48,113,226, 68,233,187,239,190,
+ 59,148, 16, 50,213,206, 99,116,199,185,243, 58,141, 39,132,140, 63,123,246,108,252, 59,239,188, 99,110,223,190,253,173,132,132,
+ 4,173, 68, 34, 65,116,116,244,130, 78,157, 58,133, 76,159, 62,221,220,181,107,215, 27, 18,137, 4,149, 43, 87,214,158, 57,115,
+ 38, 30,128,202,215,184, 59,115,126,243,231,167, 98,171, 15,157, 58,117,186, 89,185,114,101,173, 68, 34,193,229, 95,102, 83, 95,
+223,167,148,231, 80, 37, 54, 80,108, 70, 2, 42, 63, 32,167,104,183, 83,167, 78, 73,213,170, 85, 43,228, 56, 14,167, 79,159,142,
+ 3,160,244,198,169, 82,169, 44,131, 7, 15,190,117,241,226,197,187,174, 7, 0, 94,194,161,105, 53,187, 1, 43,182, 1,144,180,
+215, 99, 56,165, 18, 88,223, 29, 51,132, 15, 82, 2, 10,255, 48, 99,126,126, 62, 2, 2, 2,138, 44,100,102, 51, 78,156, 56,129,
+102,205,154,181, 89,179,102,205, 46,150,223, 25, 39,227,252, 27,238,180,200,191,205,154, 37, 10, 46,119, 62, 90, 59, 93, 35,101,
+179, 89,145, 80, 62, 18,179,223, 27, 1,155, 77,128,205,102,131,213,254,107,179,217, 96, 49,155,203, 36,112,247,243,156,224, 0,
+213,244,223, 87,189, 28,220,190,247,199, 29,102,190, 51,124,155,205, 6, 8,130, 5, 22, 11, 96, 19, 44, 16,108, 54, 88, 44,101,
+211, 85,100, 17, 4,196,199, 69, 97,230, 59,195,225,250,156, 21, 63,174,233,241,231,198, 9,234,214,221,103,189, 1,224, 35,166,
+237, 31,142, 37, 75,173, 86, 99,197,138, 21,104,220,184, 49, 0, 96,207, 37, 43,222, 90,124, 0, 91,102,182, 64,139,154,161, 72,
+207, 53,226,149,207, 78,226,183, 3,233,119,137,172,127, 49,106, 38, 38, 38, 22, 19, 89,115,230,204, 9, 91,188,120,113, 44, 0,
+244,237,219, 55,185, 67,135, 14,153,151, 46, 93, 66,116,116, 52,201,204,204,236, 6,224, 21,123,198, 31, 79, 41, 93,236,129, 87,
+ 91,190,124,121, 67,120,120,184, 81, 20, 68, 28,199,129,231,121,148, 47, 95,222, 16, 17, 17, 97,172, 92,185,178, 86, 38,147,129,
+227, 56,136, 66,207,199, 2, 8, 18,137, 4, 34,167,171,181, 71,228, 44, 13,164,188,211,245,244,110, 11, 18,199,113,110,159,231,
+ 9, 74,165,146, 2,240,120,189,132,115, 42, 30,249,146, 61, 4,190, 59, 78,165,132,144,157,148, 82, 28, 63,126, 28,215,174, 93,
+131, 76, 38, 67, 84, 84, 20,166, 78,157, 10,163,177, 72,239,246,239,223,191, 13,128,211, 44, 55, 51, 48, 56,176,243,223, 38,176,
+ 92,173, 90,238,124,180, 56, 55,106,210, 33,128,138,196,142, 27,241, 99,177,194, 98, 49, 3, 94, 22, 85,245, 85,104,121,122,142,
+205, 38,148,248, 28,209, 71, 75, 16, 40,239, 86,100, 9, 2,172, 22, 75,153,188, 64,193,102,129, 32, 88,224,238, 57,132,112, 54,
+123,129, 47, 99,249,228,225,192,104, 52, 98,208,160, 65, 14,145, 5, 0,153, 5, 22,232,140, 22,180,168, 25,138,134,237,250, 35,
+ 34, 72,129,213,187,147, 17, 17,164,126, 92, 68, 22,116, 58, 93,132, 82,169,132, 86,171,117, 88,178, 22, 47, 94, 28,107, 50,153,
+ 56,147,201,196,173, 94,189, 38,110,229,182, 75,229, 86,108,185, 84,110,233,250, 99,229,114,114,242,106, 82, 74, 85,148, 82, 21,
+128,143, 9, 33,138,146,248,101, 50,153, 67,160, 56, 11, 32,133, 66,113, 79, 2,198, 81,208,216,197,153, 76, 38,115,123,220,181,
+123,205, 27,100,206, 66, 11,180,200,170,229, 34,182, 36, 18, 9, 68,223, 40,111,144,203,229,142,184,187, 3, 47,113,122,158,164,
+244,174,152,102,179, 25,133,133,133,200,205, 45,102, 81,133, 40,130, 25, 24, 24,220,107,145,127,171,216, 42, 86,126,184,170, 73,
+216, 87,159,182, 90,204,110,197,207,154, 95,246,225, 86,170, 22, 81, 97,135, 65, 61,172, 84,237, 9, 3, 7, 14,252, 46, 58, 58,
+218,177,158,150, 66,229, 23,250,194,203, 31,192,106, 53,195, 95,197,225,249,161, 79, 22, 19, 89, 69, 22, 45, 19, 60,201,185,156,
+ 60,237,251, 79,246, 95, 56, 45, 48, 32,244,128,171,248,153,185,236, 88,191,156,124, 99, 28,199, 29, 65, 14,137,182,245,127,241,
+131, 17, 78,133,251,169, 85, 75, 38,191,238,243,139, 35,156,180,223,168, 5, 47, 80,222,175,134,154, 43,216,253,214,240, 39,126,
+114, 22,115, 33, 33, 33,155, 58,247,155,223, 49, 45,155,249,104, 61, 44,200,229,114,140, 27, 55,174,216,177, 48,127, 41,212, 10,
+ 41,246,157,203,196,177, 29,107,176,231,108, 38,148, 50, 9,194,233,181,199, 38,222,106,181, 58, 93,167,211, 69,235,245,122,228,
+231,231, 35, 63, 63,191,184, 32,144, 74,201, 11, 47,141, 13,147,202,228,176,152, 77,248,109,197,135, 94, 57,219, 38,144,155,109,
+ 42,160,124,143, 58,254,144, 72,229, 5,231, 18, 19, 23,240, 60, 15,142,227,240,203,103,111,189,178,126,238,203,254, 0,112,106,
+211,103,249,131, 38,124,186,144,227, 56, 24,141, 70, 69,105,194,125,251,246,237, 56,163,209,104,176, 11, 52,209,180,142,235,215,
+175,151, 51, 26,141,122,231,227,190, 64,165,246, 7,130, 18, 0,117,196, 93,214,179, 27, 55,110,196, 88, 44, 22, 29,207,243, 48,
+153, 76, 62,169, 34,142,227,100,167, 79,159,142, 19, 4,193,237,245, 53, 43,198, 0, 81,117, 0,121, 96,105, 10, 92,159,174,113,
+215, 2,102, 96,248,175, 91,182, 80, 74,125,241, 40, 8, 44,119,255,157,133, 86,219,205,155, 55, 83,231, 22,162,213, 98,177,139,
+172,191, 69,143,205, 38, 32, 37,195,128, 75,151, 46, 99,254,252,249,216,119,240,205,192,233,211,167, 43,222,125,247, 93,227,192,
+129, 3,231, 10,130, 80,151,227,184, 83,253,250,245,115,219, 74, 19, 4,161,220,177, 99,199, 18,197,125,139,197, 2,127,127,127,
+248,251,251,163, 90,229,184,187, 68,150,205,102,131,185,132,174, 67,209, 71,139, 80,129, 90, 44, 54,216, 4,193, 33,126,114,242,
+141,113, 27,183, 31,175,228,116,121, 85,241, 79,203,198, 53, 60,139,193, 81, 83, 29,241, 88,181,100,242,235,211,191,250, 74,145,
+ 99, 11, 31, 55,168,223,115,181,250, 15, 26,138,193, 79, 63,213,198,104, 50,109,144,112, 84,176, 56,158, 7, 14, 20,197,124,180,
+ 24, 30, 28, 50, 51, 51,161,215,235, 17, 20, 20, 84,172,194,138,214,104, 49, 97, 64, 21,116,122,107, 47, 12,102, 27, 20, 82, 14,
+175,244,138,199,161,159, 87, 35,211,152,233, 24,141,248, 47,199,185,171, 87,175, 70,151, 43, 87, 14,249,249,249,176, 90,173, 66,
+223,190,125,147,121, 94, 26,199, 75,165,164,251,160,177, 66,106,106,138,133,227, 36,160,212,134,167,250,143, 34, 10,165, 74,102,
+ 54,153,172, 0,198,123, 88, 83,210,121, 10, 7,255, 78,157, 58,133,136, 35, 1,215,207,125,217,223,233, 92, 64,195,134, 13, 67,
+156, 71, 29,250, 40,138,201,192,129, 3, 85,229,203,151, 39, 0,112,100,197, 59,162,245,140,244,232,209, 67, 89,190,124,145, 31,
+254, 31,159,249,190,166,118,152,154, 2,121,215,129,188, 27,119, 89,178,122,244,232,161, 72, 76, 76, 44, 85, 94,180, 59,192,123,
+156,187, 75,195, 91,129,212,227, 62,113, 13,111, 64, 44,239,180, 6, 63,247, 41, 14,114,191, 80, 99,211,183,182, 28, 98, 98,139,
+129,193, 39,184,104,145,127, 15,236,107, 27,238, 4,208,214,254,139, 98, 62, 90,221,186,117,219, 85, 76, 61, 82,192, 98, 53,223,
+ 37,178,108, 54, 27,164,196,136,249,243,231,227,213, 87, 95, 5, 0,217,235,175,191,254,211,244,233,211,251, 8,130, 80,151, 82,
+218,138, 16, 82, 82,171,113,103,116,116,116, 26,165, 84,202,113, 92,171,207, 62,251, 44,164,107,215,174,240,247,247, 7, 21,232,
+ 93, 34,203,102, 19, 96, 54,155,224,201,164, 21, 28,160,154,254,251,154,113,193,237,123,125,220,193, 38, 8,219, 68,145, 37,216,
+108,128, 80,116, 83, 86,122, 50,182,254,182, 1,159, 47,249, 60, 7,132, 94, 0,133,192,113,220, 41, 79, 97, 20, 4,161,238,222,
+ 35,231, 91,181,108, 92, 3,211,191,250, 74,113,246,216,157,159,198,190,246,118,173,254,131,134, 98,205,143, 43,192, 89,115,143,
+ 59,139, 44,155, 69, 64, 94, 78,102,143, 29,204, 71,235, 31,131,197, 98, 65, 78, 78, 14, 44,133, 57,104, 20,173,197, 7,253, 35,
+144,150, 99,128, 84,208,161,122, 64, 58,118,100,223,128, 90,173,126, 44,226,154,159,159,191, 98,212,168, 81,109,118,239,222, 45,
+227, 56, 14,249,249,249,104,215,174, 93,102,134, 16,171,124,225,165,177, 97, 41, 41,201,214, 0, 21,111,148,201,164, 72, 79, 79,
+ 23,218,116, 29,162, 31, 52,226,213,152, 87,223,153,185, 52,101,223,226,197,190, 60,195,121, 36,160,235,185, 47,191,252,210, 20,
+ 27, 27,107, 80, 40, 20,242,225,195,135,251,212,127,104, 50,153,232,236,217,179,141,174,163, 11, 77, 38, 19,157, 63,127,190, 41,
+ 46, 46,206,168, 82,169,168,197,226,221,239,147,227,136,245,249,233, 63, 88,173, 86,107, 49, 43,150, 40,178, 44, 2, 41, 92,180,
+104,145, 57, 46, 46,206,164, 86,171,169, 66,161,144,249, 18,206,177, 99,199,210,224,224, 96,179, 70,163,145, 77,152, 48,225,190,
+ 70, 29, 90,108,224,167,127,230,152,222, 65,225,239,239,143,130,130, 2, 71, 88,163,163,163,153,216, 98, 96,112,131,187,180,200,
+191,204, 10,231,201, 71,203,173, 3,131, 0, 20,166,165,103, 70,132, 69, 86,128,213,106,181,111, 22, 88, 45, 22,140,123,113, 16,
+230, 46, 89, 4, 0,162,216,234,244,250,235,175,255, 4, 23,127, 47,119, 88,181,106,213,180,215, 95,127, 61, 32, 45, 45,109,203,
+119,223,125, 23, 50,100,200, 16,140, 31, 63, 30, 31,127,252, 49,164,114, 37, 66,194,203, 57,158, 35, 62, 55, 51, 35, 27, 20,180,
+208,173,130,180,251,104, 81, 10, 62, 52, 60, 30, 22,155, 5,130,197, 2,139,197, 2, 34, 41,138,218,214,223, 54, 96,200,179, 99,
+ 33, 85, 4, 4,127, 58,255, 35,125,173, 70,209,125,222, 29, 57,210,232, 93,158,130, 59,123,236,206, 79, 99, 95,157,208, 73, 20,
+ 89,235, 86, 44,185,240,201,196, 94, 43, 21,114,222,241, 28,139, 32,128,227, 36,204, 71,235, 33, 34, 44, 44, 12, 25, 25, 25,200,
+205,205,133, 70,163, 65, 86, 86, 22,178,179,179,145,155,155, 11, 99,126, 14, 66,109,185, 32,214,108,240, 60,143,244,219, 69, 62,
+128,143,137, 53, 11,119,238,220,185, 88,177, 98,197, 85,111,191,253,246,160,137, 19, 39, 74, 5, 65,192,165, 75,151, 0, 66,168,
+ 84, 38, 7,199,113,144, 74,121,228,229,229, 11,106,191,160, 59,102, 42, 81,255,159,189,171, 14,143,226,120,195,239,236,185,228,
+114,113, 39, 33, 88, 18, 18,188, 56, 65, 74,144,162, 45,238, 80,138, 21, 43, 20,135, 98, 45,133, 98,165, 88,145, 82,160, 56,252,
+104,241, 34,197, 29,130,135, 32,129,184,187, 93,114,186,243,251,131, 92,122,164,145,187,132,150, 66,247,125,158,125,246,110,118,
+247,221,153,217,221,217,119,191,249,230, 27,129, 80, 4,134, 39, 44,109,152,112, 84,235,161,175,194, 59, 48,124, 97,182,113, 36,
+160, 80, 40,196,245,253,203,179, 90, 15,253,218, 26, 0,132, 98,105,122,251,246,237, 35,107,214,172,153,123,251,246,109, 47, 20,
+ 25,117, 88,204,243,169,255,120,232, 52,158, 76, 42,201,109,215,174, 93,148,145, 51,226,244,218,172, 65,159,207, 38,132, 39,202,
+237,210,165, 75,100, 64, 64, 64, 46,143,199,195,227, 67, 75,179, 62, 30, 58, 77, 66,254, 28,211,251, 23,156,124, 78, 71,220,223,
+127,201,119,209,162, 69,186, 78,157, 58, 69, 27,253,197, 34, 34, 34,220, 58,119,238, 44,254,254,251,239,117,157, 59,119,142,169,
+ 85,171, 86, 14,195, 48, 8, 14, 14,246, 40,205, 82,101,132, 84, 42,213, 13, 31, 62, 60,234,225,195,135,229, 26,117, 88, 22, 42,
+ 85,170, 4,150,101,209,166, 77, 27,228,231,231,115,150, 45, 14, 28,222, 67, 20,141,163, 85,106,100,120,157, 94, 55,110,212,196,
+ 5,107, 1, 98,101,210, 10,252,105, 88,162, 32, 83,166,124, 41, 7, 32, 53,138,173, 73,147, 38,165,151,149, 9, 19,145,245,193,
+128, 1, 3, 48,115,230, 76,172, 88,177,194,176,108,217, 50,222,147,103,225,218,161,159,207,203, 40,114, 30, 80,208, 28, 86,199,
+142, 43,142, 47, 61, 51,119, 94, 96,231, 37, 11, 98, 19, 85,151,135,142,153, 83,216,122, 25, 0,100, 17, 87, 3, 0,108,248,241,
+199, 92,129,216, 90,222,187,223, 32, 0,104,183,118,213,210, 95,191,193, 79,101,139, 45, 74,252,198, 77,154,102,107, 20, 89,235,
+190, 95,244, 80, 73, 18,215,140,255, 50, 68,103,122, 30, 0,176, 83,224,215,192,206, 75, 58, 36,165,229,254,192,221,106,255, 12,
+ 52, 26, 13, 86,175, 94,141, 57,115,230, 32, 45, 45, 13, 41, 41, 41, 72, 79, 79, 47, 92,114,114,114,224,226,226,130,223,127,255,
+253, 47,126, 76,239, 58, 94,190,124,185,238,240,225,195,184,112,225, 66,223, 25, 51,102, 8, 92, 92, 92,136, 82,153, 72,116, 90,
+ 13, 0, 74,147,147,147, 89,153,149, 77,188,131,179, 71, 84, 92, 66,146,159, 78,171, 1,107,208,150,232,109, 94, 16,222, 97,202,
+163, 71,143, 42, 47, 95,190, 92, 99, 58, 18,176,223,180,181,171, 27, 52,104, 96,183,102,205, 26, 77,151, 46, 93, 34,141,206,235,
+230, 56,195,159,122,129,137,143, 30, 61,240, 47,202,217,122,228,242, 45, 70, 78,211,209,136, 93,191,220,184,165,122,245,234,118,
+ 1, 1, 1,145,165,241, 86,169, 82, 37,207,213,213, 85,227,235,235,155, 35, 16, 8, 94, 89,178,116, 58, 85,149, 42, 85, 88,103,
+103,103, 77,205,154, 53,115, 44,117,218,151, 74,165,212,104, 21, 43, 14,150,140, 58, 20,240,160, 31, 48, 96, 64, 97,100,248, 41,
+213,171,199, 15, 26, 52,200,117,242,228,201,216,178,101, 11,174, 92,185,146, 86,244,152, 86,173, 90,225,226,197,139, 11, 0,204,
+227,158,110, 14, 28,222, 61,148, 25, 71,171, 40,182,110,221,241, 7, 76,124,154,138,195, 55,223,124, 35, 46,176,100,181,251,226,
+139, 47,144,151,151,103, 91,140,186, 11, 50,198,218, 40, 78,100, 45, 93,186,116, 55,165,212, 3, 64, 11,131,129,189,177,249,167,
+173,109,204, 80,140,133,156,148, 48, 60,134, 33, 57, 34, 1,189,251,227,166, 45, 59, 77,247, 43,112,126,247, 1,193,253,181,171,
+150,230, 1,104, 87, 84,108,245,234,213, 75, 85,148,211,136,209, 99, 70, 23,138,172,181,171,150,158, 14,248,192,243,147, 57,159,
+125, 93,172, 56,251,122,222, 40, 57,195,144,102,166, 62, 90,197,113,190, 1,181,204,113, 22, 64, 44, 22, 99,207,158, 61, 8, 12,
+ 12, 68,157, 58,117,144,150,150,134,156,156, 28,228,228,228, 20, 90,189, 30, 63,126,140,200,200, 72,136,197,226,247,170,236, 5,
+211,234,172,118,117,117, 61, 51,119,238,220, 65, 41, 41, 41,157,211,211, 51,236,143,110,253, 26, 29,123,143, 33,173, 58,245,207,
+213, 80,190, 36, 38, 62,209,247,252,241, 93,118, 39,246,174,131, 86,163, 25, 69,200,143,161,198,240, 14,197,228, 83,101, 12,227,
+224,235,235,155,107, 42, 84, 60, 61, 61,243,221,220,220,212, 1, 1, 1,133,233,197,141,230, 43,174,236,150,114, 22,248,127,229,
+150, 85,159, 70,209, 86, 52,108,132, 76, 38,131, 81,124, 89,146, 79,211,209,150,197, 54,148,101,140, 58, 52,229,220,118,135, 10,
+ 76,183,109, 35,132,183, 99,199,142,160, 29, 59,118,124, 0,224, 46,128, 83, 0,116, 5,199, 21, 58,205, 83, 74,231, 3,152,207,
+ 61,239, 28,231,127,149,243, 29,183,102,181, 66,129,111, 86, 1, 90, 83, 74, 47,148, 40,180,202,130,209,241, 29, 0, 51,105,210,
+164,244,188,188, 60,219, 65,131, 6,149,122, 76, 66, 66,194,150,237,219,183,191, 38,178,122,244,232, 49,236,192,129, 3,103,146,
+146,146,202, 85, 48, 91,107,233, 55, 23,142, 76,183,109,213,101,201, 23, 0,150, 21, 47, 51,193, 6,124,224,250,201,218, 85, 75,
+127, 45, 34,182,126, 1,208,163,184,250, 2,128,246, 31,117,199,174,173,107,141,190, 93,210,135,183, 99, 79,244,189,179,176,216,
+209,138, 54, 86,226,133, 5,249,152, 12,206, 71,235, 31,129,159,159, 31,174, 94,189,138, 49, 99,198,160,109,219,182,232,222,189,
+ 59, 42, 85,170, 4,177, 88,140, 23, 47, 94,224,210,165, 75,120,249,242, 37, 84, 42, 21,234,212,169,243, 94,214, 65,124,124,252,
+147,130, 96,164, 19,141, 95, 83, 98,137, 84,216,255,211, 47, 60, 10, 71, 29,238, 93, 7,117,126, 30, 0,240, 9, 33,203, 8, 33,
+ 63,151,224, 16,255, 74, 80,240,249,194,123,247,238,121, 25,173, 86, 90,173, 86,108, 76,191,125,251,182,151, 49,182, 86,126,126,
+190,217,163, 14,255, 46,206, 7, 15, 30,120, 24, 71, 71, 26, 71, 23,242,249,124, 97,112,112,176,135,145, 83,173, 86,155, 53,234,
+ 80, 36, 18, 9,239,221,187,231, 97, 48, 24,222,216,168,195, 34,194,248,100,193, 98,108,148,141, 34,203,232,211,193,117, 27,114,
+224,240,110,227,124,209, 73,165,141,122,162, 92, 66,203,232,248,110,129,210,227, 87,174, 92,185,125,191,126,253, 94, 19, 89,189,
+122,245, 50, 28, 60,120,240,188,171,171,107, 34,195, 48, 79, 44,205, 71,161,143, 22, 32, 40,186,141, 97,152,251, 45, 26,214, 4,
+195, 48,247,231,124,246,153,250, 27,252,244,154,216, 58,244,235,190, 14, 37,181,139, 0, 96,239,228,142, 1,195,198, 97,192,176,
+113,182, 0,154, 3, 37,143, 86, 44, 45, 31, 28,254, 62, 52,107,214, 12,161,161,161, 56,125,250, 52, 46, 94,188, 8,149, 74, 5,
+ 66, 8,164, 82, 41, 52, 26, 13,196, 98,241,123, 43,178, 74,130, 86,171,213,207, 88,176,124, 59,143, 47,212,179,172,150,104,181,
+218, 79, 45,121,206,103,204,152,193,160, 24,223,171,241,227,199, 23,155,254,182, 56,103,205,154, 85,236, 40,193,241,227,199,151,
+ 58,122,176, 36,124,249,229,151,111,108,212,161,153,226,139, 19, 84, 28, 56,188,127, 86,173, 98,135,238,149, 75,104, 49, 12,115,
+191,152,209,133, 4, 0, 45,110, 68, 31,165, 84,207,227,241, 22,216,216,216,140,202,205,205,253,189, 71,143, 30,147,122,245,234,
+101, 0, 94, 57,200,151,183, 80,233,153,185,243, 90,119,253,110,114, 70,142,122, 77,209,109, 69, 45, 79, 70,177,181,238,135,165,
+235,127, 61,176,167, 87, 66, 92,204,250,146,202, 86,146,160, 42,105,180, 98,102, 86,222,130,214, 93,191,251, 34, 61, 43,143,243,
+209,122, 11,150, 45, 35,138, 78, 42,253, 95, 0,165, 84, 77, 8,153, 74, 8, 49, 90,116,167,190, 60,247,195,250, 63, 31,252,213,
+ 15, 76,183,149, 98,205,138, 55,103,130,232,226,142, 43,109,219,223,192,153, 88,202, 4,209,165, 33,209, 66,190, 68, 0, 16, 10,
+120, 73, 37, 77, 30, 45, 20,240,146,222,208, 53, 52, 6, 56, 92,192, 61,209, 28, 56,188,179,109,177,101, 62, 90, 70, 17, 84, 18,
+ 74,138,147, 85, 26, 12, 6,195,119, 0,190,123,147, 5,123,248, 44,123, 19,128, 77,230,238, 95,224,147, 53,164, 96, 41, 62,159,
+169,143, 44, 46, 91,175, 94,189, 54, 0,216,192,221,106,255, 12,246,239,223,207, 85,194,235, 15,248,122, 66,200,207, 70,225,101,
+238,182, 34,251, 29,254, 27,242,245,119,112,158,252, 39,249,142,134,234,157,223,118, 35,205,129, 3,135,127, 63,138,179,102,149,
+ 58,234,144, 3, 7, 14,239,156,216, 82,151,103, 27, 7, 14, 28, 56,112,120,115, 31, 75,197,249, 90, 18, 0, 65, 37, 28,100,246,
+104, 2, 66, 72, 80, 57, 50,117,134,227,228, 56, 57, 78,142,147,227,228, 56, 57,206,255, 22,103, 89,220,166,199, 19, 66, 70, 82,
+ 74, 55,225, 29, 64,137, 3, 90, 40,165,127,219, 2, 32,136,227,228, 56, 57, 78,142,147,227,228, 56, 57, 78,142,179,156,231, 25,
+249, 79,156,231, 13,228,147, 22, 93,140,219,184,174, 67, 14,127, 59, 60, 60, 60,192,178, 44, 24,134, 65, 76, 76, 12, 87, 33, 28,
+ 56,112,224,192,225,189,130,197,206,240, 28,138, 49, 9,122,125, 60, 7, 44,102,189,250,131,165, 52,234,183,249,239, 91, 25,123,
+247,238,205,179,100,255,240,112, 27,230, 14, 92, 87, 88,203,133, 93,115,114,117, 43, 12,193,115,215, 20,183, 31,203,178, 56,114,
+228, 8,186,118,237,106, 52,175, 2, 0, 92, 93, 93,113,228,200,145,194,253, 26, 52,104, 80, 24,188,145, 3, 7, 14,127,115,155,
+102,235, 95, 9,132,124, 10,208, 63,135, 93,178, 52,132,102, 60,222,250,218,126, 54, 53,135,129, 33,254, 38, 73,121,160,216, 76,
+211, 67,162, 75,232, 62, 49,190,112,108,194,194,194,188,170, 85,171, 22, 9, 32,163,200,110,127,217, 70, 75,121,248, 9, 33,196,
+161, 74,253,193, 50,137,236,115,141, 70,227,109,165, 80, 36,165,165, 38,111, 72,139,122,176,206,100, 55,235, 27, 55,110,184, 54,
+110,220, 56, 14, 64,118, 89,156, 28, 56,188,209,231,233,175, 1, 75,223,156, 51, 60,169,209,211, 27,122,102, 8, 40, 6,130,224,
+ 30,125,185,191,103,185,120,170,245,112, 7,203,111, 4,160, 62, 64,235,203,165,146,122,121, 26,109, 18, 75,233, 96, 26,182,247,
+174,197,124, 85,122, 31, 3,208,169,132,173, 11,232,203,125,150, 9, 37,150,206,190,117,241,160,216, 70, 70, 80,173, 65,143,105,
+ 48,137,224, 92,129, 11, 35, 5, 48,148, 16,210, 86, 38,147,213, 80,169, 84, 17,148,210, 7, 0,214, 83, 74,227,202,201,201, 0,
+ 24,110, 37,151,119,244, 82,136,234, 71,165,100,198,102,235, 12,151, 0, 44,163,148,166,191,169,155,234,149,200,114,217,244, 69,
+255,198, 67,151, 78, 8,130, 77,235,239,166, 1, 88, 83,218, 49, 12,195,140,112,115,115,243,118,119,119, 15, 95,219,173,238,230,
+113,135,239,161,123,247,238, 0, 48,130,101, 89,111,119,119,247,112, 66,200,102,115,219, 70, 66,136, 43, 0, 62,165, 52,186,224,
+191, 28, 64, 0,128, 42, 0, 94, 2,120, 68, 41,205,173,224, 53,122, 39, 56, 61, 60, 60,220, 88,150,253,204,217,217,185,115, 98,
+ 98,226, 49,134, 97,126,138,137,137,137,123,203,109,207, 70,163,127,133,185,107, 0,163, 44, 57,129, 84, 42, 77,204,207,207,119,
+ 2, 0,137, 68,146,148,151,151,247,183,141, 18,252, 39,207,245,207,188, 25, 48,226,212,229, 71, 29, 77,147,218,183,240, 47,230,
+193, 37,254,167, 46,135,180,124,125,191, 0, 67,113,109, 96, 65,244, 85, 44, 88,176,128, 44, 92,184,112, 88,213,170, 85,171, 51,
+ 12,243,116,238,220,185,175,133,190, 41,186,109,222,188,121,127, 70,110, 45,134,211,195,167,217,161,190,253,122,183, 30, 59,114,
+168,149,187,163, 21,226, 83,114,237,127,220,178, 99,249,142, 29,187,186,124,214,183, 93, 71, 0,248,250,235,175, 63,174, 84,169,
+ 82,101, 30,143, 23,254,213, 87, 95,253, 82, 26, 39, 7, 14,127, 3, 44,155, 84,186,204,231,211,191,183, 28,249,180, 23, 64,134,
+182,106,218,160,197,168,193, 93, 9,229, 73,208,127,196,116,189,197, 92,149,135,137,193,203,251,166,118,128,255,164,222, 93,131,
+152, 15, 2, 42,195,213, 81, 9, 48, 2,108, 60, 30, 97,191,102,233, 87,235, 1, 52, 46, 71, 54, 59,189,184,182, 27,241, 25, 6,
+ 16, 2, 16, 2, 48, 4,200,201,103,209,254,227, 33,243, 44, 23, 74,132,177,145, 17, 76,218,157, 15, 0,188, 10,183,113,132,212,
+119,116,116, 92, 55, 97,194, 4,219,218,181,107,187, 74, 36, 18, 89, 94, 94, 94,245,176,176, 48,239, 57,115,230,180, 35,132, 44,
+161,148, 30,180,144,211,179,154,135,219,190, 53,147,134, 55,170, 83,197, 11, 2, 77, 14, 88,117,110,165,103, 97,207,155,142, 94,
+191,127, 4, 33,164, 95,121,166, 76, 72, 73, 73, 33, 0,224,224,224, 64, 95, 23, 89, 77,134,126, 63,185, 61, 38,173, 60, 5, 85,
+190,102,103, 73,199,199,197,197, 25, 45, 91,222, 71,142, 28,241,239,218,181, 43, 26,121,123,224, 70,215,100, 52, 60, 20, 3, 0,
+133,233, 22,148,117, 33,128, 89, 5,237,240, 46, 30,143,119, 58, 40, 40,200,251,179,207, 62, 35, 13, 26, 52, 64,112,112,112,149,
+221,187,119, 7,241,249,252,112,131,193,240, 0,192, 83, 74,169,206, 76,110, 1, 0, 31, 30,143, 87,251,223,204,233,230,230, 38,
+213,104, 52, 67, 60, 60, 60, 70,118,235,214,173,118,215,174, 93,137,143,143, 15,158, 60,121,210,224,196,137, 19,243,234,214,173,
+251, 32, 38, 38,102,147, 72, 36,218, 30, 23, 23,151,247, 22,190,240, 70, 2,112, 43, 48,112, 44, 48, 99, 29, 7, 96, 1,165, 52,
+222,220,115,228,231,231, 59, 25,223,163,132, 16,167,191,179, 60,150,156,139, 16,242,152, 16, 98, 87,240, 27,165,173, 25,134,129,
+ 94,175,207,213,235,245, 85,203,224,244, 1,192, 88,144,101, 74, 41, 45, 45, 16,180, 20, 0,218, 55,247, 79, 3, 65,136,209,162,
+ 85,204, 71,102, 72,161, 0,163,240, 63,117, 37,196,238, 53, 43, 88, 17, 44, 88,176,128,204,155, 55, 15,243,231,207,239, 10, 32,
+144,101,217, 75,126,126,126,171, 95,163,100,217,194,109,243,230,205,251, 97,193,130, 5, 4, 64,177,130,200,174,114,221, 65,159,
+124,210,189,245,162,217,227,173, 98, 83,181,184, 23,158, 7, 59, 43, 33,230, 77, 29, 35, 82,171,117, 77,215,255,178, 99,228,218,
+ 37,211, 55, 27, 12,134, 15, 1,124, 96, 48, 24,110, 3,248,165, 52, 78, 14, 28,254, 6,180,182,104, 82,233, 18, 30,114,130,170,
+ 61, 91,194,128,161, 94,149,156,123, 77,248,172,143, 52,192,175, 26,242, 97,133,136, 20, 3,142, 31, 61, 1, 0,123, 45,179, 58,
+245,253,128, 47,196,246,165,243,167,250, 6, 54, 10,192,195, 88, 29,110,199, 26,160, 10,215,129,199,232, 96, 96, 41, 64,145, 95,
+222, 82,199,164,235,113,249,169, 6, 12, 1,120, 12,192, 48, 4, 60,166,156,100,172,230,217,215, 91,239, 4,164, 36,178, 0,171,
+121, 86,193, 23,208,135, 53,106,212, 88,181,112,225, 66,151,196,196, 68,187,219,183,111, 67, 44, 22,195,214,214,150,239,230,230,
+230,187,106,213,170,204,241,227,199, 79, 37,132,220,165,148, 70,152,201,233,215,233,131,218, 87, 55, 45,253, 90,169,187,113, 2,
+ 25,123,254, 7, 30, 67, 33,148, 91,193, 91, 42,197,137, 79,170,217,245, 58, 26,126,144, 16,226, 71, 41,141, 45,139, 47, 52, 52,
+148,167, 86,171,251, 89, 91, 91, 55, 17, 8, 4,206, 98, 27, 79, 54,142,223, 40, 53,153, 84,121,153,228,164,106, 57, 57,200,185,
+227,138, 47,218, 96,210,202, 83, 88,181,251,250,182,250, 72,152,107, 73, 29,100,220, 58,135,123,233,127,189,180, 46,114,129, 57,
+101,181, 5, 48, 93,163,209, 48, 66,161,144, 72, 36,146, 65,139, 22, 45,210,246,239,223,191,208, 1, 44, 48, 48, 16,129,129,129,
+ 36, 59, 59,187,202,185,115,231,170,236,216,177, 67, 79, 8,121, 76, 41, 61, 84,178,197, 66, 22,149,159,159, 87, 73, 34,149,170,
+126, 92,191,126, 69,203,150, 45, 89,211,121, 18,203,195, 9, 0, 54, 54, 54,155,107,212,168, 65,102,206,156, 25,247,166, 56,189,
+189,189, 79, 5, 6, 6,182,105,223,190, 61,191,121,243,230,112,115,115, 43,220,230,224,224,128,192,192, 64, 18, 29, 29, 93,231,
+210,165, 75,235, 79,157, 58,181,218,219,219,251, 92,120,120,120,251,127,178,213, 41,176, 84,193, 2,225,180,169,152, 64,200,239,
+166,177,136, 16,171,141, 27, 55, 58, 25,231,100,212,233,116, 48, 24, 12,133,107,227,194,178, 44, 12, 6, 3, 22, 45, 90,100, 48,
+179, 78,115, 81, 16, 28,218,100, 97,139, 91,139, 68, 34,243, 34,247, 18,132,184,138, 51,106,202,229,114, 47, 0,157,106,212,168,
+ 49,221,116,115,117,199, 87,235,220,220,220,200,120,181, 77, 8,128,150,165,221,238, 11, 23, 46, 28, 50,127,254,252,238,248,115,
+206,202,218,189,123,247, 62, 87,100,191,218, 5,235, 92, 66,200,121,134, 97,142, 0,216, 10,224, 47, 86,119,153,204,106,212,132,
+207, 63,179,138, 73,209,226,155,131, 41,216,122, 49, 11, 67, 2, 21,152,244,145, 18, 3,250,247,149,239,255,223,129, 81, 0, 54,
+155, 28,242,196,207,207,143,132,134,134,114, 34,235,253, 66, 67, 0,142, 38,255, 53, 0,140, 83,102,165, 20, 60, 23,246, 69,210,
+ 77,247, 51,174,147, 11,210, 29, 11,142,163, 38,188,201, 0,110,149,179,189,187, 80,144,135,191,128, 15, 0,199,142, 29,163,157,
+ 59,119, 38,198,117,241, 45,123,175,227,195,251,119,235,216,185,109, 51, 48, 18, 91, 60, 75, 2,174, 69, 81,240, 25, 29, 24, 80,
+220,184,114,142,130,207,110, 47,114,226, 18,173, 39,196,187,215,151,181,107, 5,124,247,211,210,137,188,199, 73,124,108,189,164,
+130, 54, 63, 7,201, 9, 81, 72,138,139, 68,124,204, 75,196, 70,189,124, 0,144,121,230,114,254,181,224,128,129, 45,248, 6,100,
+ 81, 80,159,197,142,188, 44,155, 83,155, 27, 90,197, 39, 32, 32, 93,100, 0,180,185,161,102, 84,250,153, 18, 26,224,118,213,170,
+ 85, 91, 54,123,246,108,143, 71,143, 30, 89,231,230,230,230,158, 56,113,226, 66,100,100,164,179,139,139, 75,244,152, 49, 99,154,
+185,187,187, 59,125,252,241,199,178,125,251,246,205, 6,240,153, 25,156, 1,221,154,212,187,182,101,245,247,242,212,253,107,160,
+ 9,187,143,227,241,185,184,146,168,162, 85,148, 98, 50,174,142, 35,172,196,124,124,221,220,205,170,211,175, 97,223, 1, 24, 80,
+ 26,231,213,171, 87, 93,101, 50,217,202, 1, 3, 6,184, 77,152, 48, 65,100,224,219,240, 15, 92, 75, 85, 78, 95,127,205, 77,165,
+214,242,250,183,169,140,201, 3,107, 99,242,170,179, 70,145, 53,210,219, 59,131, 45,142,211,195,195, 99, 4,203,178,222, 5,127,
+ 43, 27,215,109, 47,103, 47, 54, 57,101, 97, 58, 81, 56, 44,118,115,115, 3,195, 48,225, 49, 49, 49,155,205,189, 70, 18, 73,241,
+179,167,216,218,218,162, 85,171, 86,240,243,243,227,183,108,217,178, 54,128, 67, 37,113,106,181, 26, 87,150,165, 80, 40, 20, 82,
+123,123,123, 91,133, 66,145,170,213,106, 43,196, 9, 0,118,118,118, 61, 91,181,106,197,223,189,123,119, 74,120,120,248,141,254,
+253,251,191,180,182,182,126,205,250, 43,151,203, 81,189,122,117,124,245,213, 87,252,142, 29, 59,150,201,233,236,236,220,110,199,
+142, 29, 32,132, 20,190,180,139,194,203,203, 11, 46, 46, 46,232,212,169, 19,191,103,207,158,237,202,251, 28, 89,208,208,156, 41,
+198,162,181,224,117, 49, 91,114,247, 91,113,251,155,113,221,147,140,214, 37,137, 68,146, 84,158,124, 22, 65,137,221,157, 98,177,
+184,208, 10, 85,244, 92,197,113, 50, 12,131, 57,115,230,128, 16, 2,129, 64, 0,161, 80, 88,236,186,117,235,214,150,230, 51,154,
+ 16,194, 8,133,194,233,124, 62,255, 51,181, 90,237, 33,145, 72,226, 12, 6,195, 54,181, 90,189,168,192, 34,106, 83,220,189, 91,
+ 18,167, 92, 46,247,122,246,236, 89,141,146, 42, 69,173, 86,163,118,237,218,128, 26,143, 75,227, 12, 11, 11,243,170, 90,181,170,
+ 15, 0,227, 20,109, 23, 41,165, 45, 77,254,155,226, 34,165,244,163,130,223, 79, 95,188,120,225,101, 20, 90,166,156, 58,173,214,
+219,195,201, 26,247, 34,242,176,245, 98, 22,254,152,237,134,182,139,226,208,163, 62, 31,126,158, 86,208,107,117, 62,189,123,247,
+222, 14,192,167,224, 37,249,113,239,222,189,125,121, 60,222, 89, 0,191, 1,200,252,167,238,121,142,179, 98, 40, 67,139, 56, 18,
+ 66,142,154,156,191,139,241,255,140, 25, 51,102, 45, 94,188,248, 17, 33,228,168,105,186,233,126,166,235,130,246,230, 40,165,180,
+203,204,153, 51, 3,150, 44, 89,242,173,113,223,191, 67, 33, 90,210,117,104,157,156, 47,199,165, 40,107,240,121, 6,240, 25, 2,
+ 62, 15, 0, 37,136,140, 8, 67,118, 86,198,101,250,242,127,225,230, 89,178,122, 55,175, 91,175,246,210, 93,171,166, 49, 63, 95,
+ 82, 33, 35, 55, 31,161,119,207,227,214,249,223, 18, 12,122,195,111, 32,244, 54,192, 4,227, 37,251,132,210,253,134,242,223, 8,
+120,101, 21, 3, 41, 34,182,222,218, 87,238, 71,190,190,190,139,231,204,153,227,117,247,238, 93, 69, 86, 86, 86,242,206,157, 59,
+159,168,213,234,187, 0,126,136,138,138,106,245,195, 15, 63,200,150, 47, 95,222,190,118,237,218, 62,251,247,239, 87,153,193, 89,
+103,234,208, 1,215, 62,155,240,133,228,241,190,117, 16, 61, 14,198,156,251, 41,134, 63,226, 85,179, 1,172, 66,116, 78,243,228,
+124,253,233,239, 91, 85, 98, 42, 43,132,168,102, 35,106, 93,150, 37, 75, 38,147,173,220,177, 99,135, 87,195,134, 13, 25, 0,184,
+244, 84, 47,158,190,254,154,219,201,197,205, 73,115,127,123, 36,101,168, 49,113,221, 61,156,184,150,244,123, 81,145,245, 23, 67,
+ 96, 65,119,161,105,218,145, 35, 71,100, 0,254,226, 12, 98,154, 94, 90, 55, 34,165, 52,157, 16,242,157, 72, 36,154, 67, 8,161,
+ 13, 27, 54,188, 87,171, 86,173, 28, 91, 91, 91,228,229,229, 65,173, 86, 67, 40, 20, 34, 47, 47, 15,145,145,145,184,113,227, 6,
+108,109,109, 45,186, 86, 57, 57, 57, 80, 40, 20, 96, 89,182,194,156, 6,131,129,108,216,176, 65,254,232,209, 35,249,129, 3, 7,
+156, 39, 77,154,148, 90,179,102,205,219,125,251,246,125,238,228,228,164,190,127,255, 62,174, 94,189,138,244,244,116, 52,105,210,
+196, 44, 78,141, 70, 3, 62,159,143,188,188, 60,136,197, 98,240,249,124,232,245,122,176, 44, 91, 40,190,114,114,114,144,150,150,
+ 6,161, 80, 8,141, 70,243,143,223,239, 70,139,150, 41, 74,235,126, 43,110,255,178,240,166,253,164, 74,235,238,204,200,200,144,
+218,216,216, 76, 55,199, 66, 71, 8, 1,143,199,131, 80, 40, 4, 33, 4, 45, 91,182,196,240,225,195, 81,191,126,125,132,133,133,
+ 97,207,158, 61,184,117,235, 22, 4, 2, 65,225,254,102,247, 79,180,110,205,147, 72, 36, 87,187,117,235, 22, 48,123,246,108, 73,
+229,202,149,241,248,241, 99,207, 37, 75,150, 76, 63,115,230, 76,119, 66,200, 7,148, 82,182,108, 43,125, 65,151,224,171,238,194,
+ 78,106,181, 26,143, 31, 63,182,228,152,191,160, 90,181,106,145, 12,195, 60,103, 89,246, 18,128,218,148,210,150,132,144, 19, 0,
+228, 69,118,205,165,148,126, 68, 8,201, 2,240,128, 97,152,167, 44,203, 70, 22,231, 78,165, 80, 40,146, 99,146,178,156,237,173,
+ 36, 24,220,194, 10,109, 23,197,161,215, 7, 98,136,133, 4, 79,194, 19, 80,173,106,101,114,239,242,161, 15, 10, 68, 86,195,248,
+248,120, 0,248, 0, 64,120,116,116,180,171, 81,104,113,120, 63, 80, 84, 12, 25, 5,212,226,197,139,187, 20, 39,174,138,121, 54,
+ 95, 75, 95,178,100,201,183, 38,255,211, 43,208,118,180,194,235,206,240,173, 11,172, 92,127, 10,173, 99,199,142,149,174, 64, 88,
+244, 56,122,112,247,245,182, 90,226, 21,208,160,133,137,117,136, 34,248,198, 85, 0,116,155, 89,153,113,235, 42,101,100,242,109,
+ 27,190, 29,207,108, 60,175, 66,116, 92, 18,174, 30,223,134,228,248,136,173, 0,157, 68, 95,238,207,170,112, 99, 89,165,119,128,
+147,131, 61,242,181, 20, 44, 5,240, 23,177,245, 86, 68, 86, 87, 31, 31,159,133,215,174, 93,243,202,207,207, 87, 92,185,114, 37,
+ 99,199,142, 29,207, 53, 26,205, 79,148,210,157, 5,251, 28, 78, 73, 73,249,154, 82, 10,133, 66,193, 23, 8, 4,210,210,156, 57,
+ 9, 33,245,167,126, 54,228,242,119, 27,182, 72,158, 63,188,135, 31, 14, 28, 71,134, 74,101, 56,159,148,247, 49,165,244,104,193,
+ 62,103,239,164,228,197, 82,208, 74, 2,134,192, 85, 46,112, 33,132, 72, 40,165,249, 37,124,185,246, 31, 48, 96,128,155, 81,100,
+ 1, 64, 74,182,142,175, 82,235,120,205,253,237,209,160, 77,111, 4,159,219,143,125, 23, 99, 81,213, 81,118,209, 91,158, 81,106,
+141, 50, 12, 19,110, 34,154, 42, 31, 57,114, 68,214,181,107, 87, 21, 0,211, 46,209,191,164, 51, 12, 19, 94,198,195, 54,151, 16,
+226,188,125,251,118, 70,167,211,229,132,133,133,193,197,197, 5,206,206,206, 80, 42,149, 8, 13, 13,197, 31,127,252,129, 39, 79,
+158,128,101, 89,212,173, 91,215,162,235,149,154,154,138,251,247,239,163, 83,167,206,147,146,147,147,172,109,237,236,115, 47, 95,
+186,184,188, 60,156, 44,203, 18, 0, 8, 8, 8, 64, 64, 64,128, 36, 54, 54,214,227,232,209,163, 78,223,124,243, 77,148,151,151,
+215,174,188,188,188,215, 44, 7,230, 10,173, 2,225, 82, 40, 2, 37, 18, 9,132, 66, 33,178,178,178,144,152,152,136,236,236,236,
+ 87,125, 57, 54, 54,111, 69,104, 21,103,161,122,147,251,255,157,226,176, 56, 49, 69, 8, 25, 8, 96,186,153,101,129, 94,175,135,
+ 80, 40, 68,227,198,141,177,102,205, 26,220,186,117, 11,191,253,246, 27, 60, 61, 61, 49,116,232, 80, 48, 12,131, 71,143, 30, 89,
+154, 69,246,218,181,107,211, 63,254,248,227,128,237,219,183, 75, 34, 35, 35,241,228,201, 19,216,216,216, 96,205,154, 53,226,145,
+ 35, 71, 86, 59,119,238,220, 92, 0,203,202, 44,171,201,232, 66, 55, 55,183, 62,181,107,215,254,203, 62, 46, 46, 46,202,147, 39,
+ 79, 58, 25, 5, 88,209, 17,137,197, 32, 99,238,220,185,223,251,249,249,173, 42,232, 46, 12, 4, 32,167,148,182, 62,112,224, 0,
+ 1,128, 94,189,122, 81, 66,136,241,133,244, 96,255,254,253,109, 66, 67, 67,233,252,249,243,139,109,231,146,147,226, 55,124,191,
+102,227,247,223, 45,152, 42,154,220, 73,137, 94, 31, 8, 32, 17, 18, 88,203, 4, 88,180,122,179,238,206,141,139,247, 93, 93, 93,
+143, 2,248, 56, 62, 62, 30,174,174,174, 57, 0,158,242,120,188,112,131,193, 16,199,249,194,191, 91, 40, 78,139, 20, 88,149,227,
+139, 19, 74,229, 17,106,166, 22, 47, 35,102,206,156, 25,176,120,241,226,155, 21, 17, 89,166, 78,240,132, 16, 74, 8,105, 77, 41,
+189, 80,248, 50, 45,177,203,176,208,246,197,184,186, 56, 59,216,205, 24,218, 28, 44, 11,232, 13,128,222, 64,145,171,202,195,227,
+135,183, 84,144,144, 3,102,229, 72, 44, 90,250,205,236, 47,170,220,139, 97, 16,151,174,197,133, 67, 27,105,114,124, 68, 79,250,
+114,223,167,111, 74,100,185, 56, 57,156,223,189,241,107,220,122,169,129,129,125,165,179, 88,150, 22,254,126, 11, 47,156,234, 14,
+ 14, 14,203,175, 95,191, 94, 89, 44, 22, 43,158, 61,123,102,216,191,127,127,156, 70,163, 89,111, 20, 89, 5, 24,216,160, 65, 3,
+157, 92, 46, 71, 78, 78,142, 90,171,213,230,148, 34,178, 60, 90,215,175,115,241,187, 13, 91, 36,249, 26, 13, 50,243,212,224,217,
+ 59,189, 38,178, 10,208,172, 77, 13,119,119, 34, 81,128, 2,136,200,210,198,149, 36,178, 0, 64, 36, 18, 5, 77,152, 48,193,180,
+127, 27, 14, 10,129, 94, 38, 22, 24,174,132,164,176,193,231,246,227,210,163, 20, 86, 34,228, 25, 28,233,203, 42,101,149, 61, 38,
+ 38,102,115, 92, 92,220,204,184,184,184,153, 38,226, 42, 2,192,204,154, 74,225, 95,210,253,109, 68, 51,227,226,226,102,178, 44,
+187,217,140,170,141, 27, 48, 96, 64,140,191,191,127,166,159,159, 95,102,106,106, 42, 66, 66, 66,144,158,158,142, 31,126,248, 1,
+143, 31, 63, 6,203,190,210,129,197,117,163,152, 33,144,144,158,158,102, 69, 41, 69,122, 90,170,124,246,236,217,202,242,112, 26,
+ 12,134,215,158, 45,119,119,119,140, 25, 51, 70,168, 82,169,108,162,162,162,172, 77,183,153,203,169,209,104, 10, 67, 97, 80, 74,
+161,209,104,144,153,153, 9,141, 70,131,231,207,159, 23,138,172,130,243,191, 53,139,150,241,183, 84, 42, 77, 52, 58,136, 74, 36,
+ 18, 16, 66,138,235,126,123, 35,209,159,141,231, 34,132, 80,169, 84,154, 88, 14,113, 88,102,121,204,188,238, 16, 10,133, 24, 62,
+124, 56,110,222,188,137,176,176, 48,240,120, 60,228,230,230, 66,165, 82,161, 93,187,118, 16,137, 68,150, 90,180,168, 80, 40, 28,
+ 56,107,214, 44, 73,120,120, 56, 82, 82, 82,140,206,244, 48, 24, 12,152, 52,105,146, 84, 44, 22, 15,180,212,116, 31, 23, 23,215,
+225,217,179,103, 62, 69,151,132,132,132, 76, 83,159,194,242,226,192,129, 3,164, 87,175, 94,180, 87,175, 94,212, 40,184,204, 69,
+ 70, 76,200,134,223, 14, 31, 61,253,229, 87, 75,115, 84,185,217,168,234, 38, 69, 78,118, 38, 22, 45,254, 78,119,237,218,165,243,
+211, 39,141,110,186,127,255,254, 37, 0,158, 22, 28,242,116,255,254,253, 67,190,250,234,171, 95, 80, 16,230,129,195,187,131,226,
+180,136,233,179,247, 38,186,247,138,227, 40,232, 62,148,150,147,210, 56,226,176,149, 81,120, 21,136,174,243,175, 89,180, 74,109,
+124,170,245,173,231,236, 96,127,110,251,218, 5, 86, 71, 31, 2, 49,209, 17, 72,142,143,196, 7, 77, 91,227,241,195,123, 96,117,
+134,131,244,217,254, 50,135,167, 19,239,222, 53,252,106,250,127,222,170,105, 45, 44, 61,154,131,103,193, 39,145,145, 28,191,150,
+134,239, 59,248, 38, 46, 16,169,210, 59,192,217,209,225,252, 47,235, 22,218,157, 8, 97, 16, 29, 29,129, 67,191,172,130, 78,251,
+ 23, 93,113,220,226,198,155,213,136,114, 50, 18,161,201, 54, 64,194,168, 36, 22, 94,212,231,142,142,142,219,191,255,254,251,209,
+ 77,155, 54,149,245,239,223,255, 89,122,122,250, 55,148,210,125, 38, 13,252,135, 62, 62, 62, 83,214,174, 93, 91, 45, 58, 58, 26,
+127,252,241,199, 51, 0,183, 75,225,140,225,241,120,235,255,248,101,243, 84,105, 21, 95,252, 48,235, 75,253,129, 91, 33,221, 40,
+165, 39, 76, 56,253,130,106,215, 56,250,205,148,177, 12,123,231,119,220,143, 76,196,203, 76,245, 31, 37,113,166,164,164,144,188,
+188,188,202, 54, 54, 54,166,231,129,171, 60, 87, 61,173, 79,141,184,118,211, 47,187,229,107, 13, 16, 11, 24, 58,177,187, 87,220,
+141,223,246,217,167,168, 83,136,113, 52,162,165,120,150, 99, 0,159,207,135,147,211,159, 61, 72, 33,233, 22,141,125,176,186,121,
+243, 38,195,227,241, 94, 19,232,166, 22, 34, 75, 45, 69,150,192, 92,206,162, 66,203, 8,189, 94, 79,202,203,169, 86,171,139,141,
+ 57, 86,156,175, 22,203,178,127, 75,249, 45,177, 80,153,118, 25, 26,253,233,242,243,243,157,164, 82,105,162,177,251,239, 77, 89,
+180, 42, 50, 18,177,180,238, 75, 75,242,199, 48, 12, 88,150,133, 80, 40, 68,221,186,117,113,244,232, 81,216,217,217,193,218,218,
+ 26,214,214,214,144, 74,165,176,183,183, 47, 20, 90, 12, 99,246, 40, 29,170, 86,171, 61, 61, 61, 61,241,252,249,115, 72, 36,146,
+194, 69, 44, 22, 35, 32, 32, 0,185,185,185,238,111,207,118,255,247, 96, 68,223,160,238,235,118,252, 58,248,232,209, 99,159,107,
+213,249,181,124,125,125,232,237,107,231,238, 79,159, 52,186, 35, 39, 77,254, 91, 48, 90,163, 76,125,173,102,204,152, 49,171,188,
+124, 51,102,204,152, 85,156,133,171,188,130, 11,175,186,250,140,107, 20, 10, 45,163,130, 44, 78, 73, 26, 69,214,214, 53,243,173,
+127,189, 11,196,196,132,227,244,190,213,217, 58,173, 38,157,101,117, 94, 47,159,220, 3, 24,108, 51, 43, 11, 12,109,212,189, 83,
+ 27,114,250,145, 6, 89, 25,201,120,122,251,100, 4,242, 68, 51,223,164,200,218,190,110,129,221,145,135, 4,209,209, 17, 56,177,
+103, 85,166, 78,175,253,144,190,220,127,183, 34,220,131, 68,162,238,125,107,218,116,249, 44, 48, 14, 6, 98,192,192,199,161, 31,
+185, 5,146,238,113,151, 74, 31, 25,102,138,228,228,228, 69, 86, 86, 86,204,178,101,203, 62,205,207,207,159, 79, 41, 61, 96,114,
+227,180,171, 90,181,234,210, 13, 27, 54,120, 68, 69, 69,137, 46, 95,190,156,118,254,252,121, 10, 96,113, 25, 47,240,105,132, 16,
+ 94,253,202,238,227,239, 68,196,118,163,148,254,110,194, 25,208,165,129,255,149, 45,139,231, 42,116, 87, 14, 32, 39, 62, 26, 51,
+175,196,100, 1, 48,187,190,117, 58, 29,210,211,211,161,203, 73,215,127,224,154,155, 57,191,183,147, 58, 49, 61,159, 47, 96, 85,
+122, 63,235, 36,245,185,180, 8,158, 76, 38, 43,119,189, 10, 69, 34,232,116, 58,184,187,187, 23,166,101,101,231,128, 16, 2, 87,
+ 87,215,178, 30,182,133, 0, 38, 53,107,214,140, 52,110,220,248,198,170, 85,171, 78,149, 38, 86,202, 99,209, 42, 11,230,114,178,
+ 44,203,148, 80,191,164,188,156,166, 22,173,178,132,214,219,180,104, 21, 39, 90, 76, 69,162,169, 16, 42,143,143,214,223, 41, 14,
+ 45, 17, 97,197,240, 20, 90,180,238,221,187,135, 74,149, 42, 65,171,213, 66,161, 80, 64,161, 80,192,202,202, 10,217,217,217, 16,
+ 8, 4,176,176,204,172, 68, 34,137, 10, 9, 9,241,113,116,116,132,193, 96,120, 77,108, 61,123,246, 12,114,185, 60,214, 82,139,
+150,155,155,219,201,130, 81,135,175,193,197,197, 69,249, 38,234,213,212,146,213,171, 87,175,114,125,152,173, 91, 60,117, 7,128,
+ 29,189,123,247,222,254,224,218,177, 15, 92, 93, 93,143,249,249,249, 17, 0,224, 70, 24,190, 95,214,172, 18,122,216,146,139, 88,
+162, 52, 38,255,147, 1,144,130,255,201, 38, 66,204,244,183,166,152,180,212,197,139, 23,159, 51,241,239, 74,174, 96, 17,140, 33,
+ 30, 94,243,133,230,151,101,201,114,178,183, 59,247,211, 15,243,173,247, 5, 3,177,209,225,184,112,112, 77,166,222,160,253, 16,
+ 44,141,191,118,230,224, 1, 16,168,240,242,192, 5, 96,159, 25, 77, 4,234,215,175,233,133,223, 30,233,144, 28,243, 12,148,178,
+ 91,105,226, 47,170, 10, 55,142, 5, 34,107,235,154,249,118,191,222, 35,136,137, 14,199,233,125,171, 51,245, 6,237,135,229, 9,
+118,106,196,103,132,216,242,228,146,245,131,219, 55,236,227, 85,213, 3, 44,213,129, 21, 82,244,152,230,192,127,122, 71,245,155,
+103,123,222, 62, 54,135,253, 60,230,154,121,129, 64,115,114,114,190, 38,132,252, 74, 41,125,108,210, 32,127, 84,173, 90,181,111,
+127,252,241,199,202,177,177,177,138, 59,119,238,100,109,218,180, 41,156,101,217,133,148,210, 50, 71, 81, 81, 74,191, 36,132,252,
+100, 26, 47,135, 16, 82,103,234,167, 3,174, 13, 24,246,153, 36,252,204, 14,216,134, 63,198,148, 43,113,134,167,233,154,254,148,
+210,132,146,184, 28, 28, 28,104,114,114,114, 68, 70, 70,134,143, 92, 46, 71,106,106, 42,210,210,210,144,145,145, 1,117, 86,186,
+222,222,144,145, 75,244,105,224,243,249, 72,138,214,195, 96, 48, 36,148,101,205, 42,105,212, 33,128,197,121,121,121, 70,145, 85,
+152,110,109,109,189,216,218,218,218,232,163,181,185,132,151,152, 49,188, 3, 41, 8,239,208,228,247,223,127, 15,237,216,177, 99,
+ 76,113, 98, 69, 44, 22, 35, 63,223,178, 40, 33, 37,141, 98, 44, 15,103, 73, 22,173,162,233,150,112, 26,187, 47,141, 78,240, 69,
+211,141,224,241,120, 96, 89,246, 47,233,255,180,104, 49, 29, 29, 88, 30,145,243,154,117,185,140,192,161,229, 25,137,248,166, 45,
+ 90,198,107, 33, 20, 10,113,248,240, 97, 12, 27, 54, 12, 6,131, 1, 50,153, 12, 86, 86, 86,144,203,229, 56,120,240, 32,140,225,
+ 31, 44,201,162, 78,167,219,185,120,241,226, 89, 27, 54,108,144, 82, 74, 33, 18,137, 10,133,214,252,249,243,243,180, 90,237, 78,
+115,132, 86, 97,196,119,150,134, 84,119, 44,125,212, 97,113,199,148,224,175,101,179,112,225,194, 33, 44,203,118, 71,145, 16, 14,
+ 69,246,123, 45,244, 67,105,225, 29, 0,216, 46, 92,184,112, 4,203,178,198, 1, 52,175,141, 46, 52,217,207,248, 46,241,233,221,
+187,247,246,162,163, 14, 57,188,243,184,245, 47,206, 91,107,147, 64,165,164,160,189, 40, 20, 92,252,146, 69, 86,111, 63, 39,123,
+135,115,155, 87,205,183,222,117, 19,136,139,126,137,171,135,215,102, 26, 88,157,169,120,105, 97, 97,203, 91,223,205,201, 6,105,
+215,243,144,149, 18, 5, 80,220,169,184,200,234, 91,221,201,193,254,252,150,213,243,237,246,223,101, 16, 27, 21,142,243, 5, 98,
+176, 34, 34,107,144, 72,212, 61,160,134,199,150,126, 31, 53,183, 85, 18, 61,244,145,161,248,105,104, 31, 4,119,213,162,121, 95,
+ 37, 26,117, 82,160, 90, 61, 73,159,227,155,211,218,186, 5,146,207,204,181,110, 21, 17, 89, 93, 43, 87,174,188,224,198,141, 27,
+ 94, 44,203, 42, 46, 92,184,144,189, 97,195,134,151,249,249,249,171, 41,165,199, 44,120, 57,152,138,172,250, 51, 70, 14,189,252,
+237,143, 63, 73, 66,130,111, 97,233,206, 35,200,211,105, 12, 39, 99,114,122,155,118, 43,150, 98, 41, 57,179,122,245,234,202,115,
+230,204, 17,165,165,165, 33, 37, 37, 5,233,233,233,133, 75, 78, 78, 14, 92, 92, 92,240,251,239,191,107,179,178,178,174,155,241,
+178,121,227,163, 14,139,131, 66,161,128, 80, 40,132, 86,171, 45,180,104,137,197, 98, 40,149, 74,164,166,166, 98,239,222,189, 0,
+144, 86,170,133, 77, 40,138,103, 24, 82, 73, 42,147,169, 37, 18, 9, 91,156, 85,205, 82,206, 2,196,124,244,209, 71, 30, 11, 23,
+ 46,148, 52,104,208,224, 47, 22,173,242,112, 82, 74, 85,237,219,183,151,173, 94,189, 26, 94, 94, 94,208,104, 52,175, 9, 42,134,
+ 97, 32, 20, 10, 17, 29, 29,141,111,190,249, 6,148, 82,213, 63,221,242,152,138, 22, 83, 49, 84,224, 67,245, 23, 33,100,174,197,
+168,172,174, 65, 75, 71, 34,154, 10, 55,177, 88,140,140,140, 12, 41, 33,100, 96, 9, 17,236,205,182,104, 25,133,214,227,199,143,
+177,125,251,118,116,234,212, 9,182,182,182, 72, 79, 79,199,190,125,251, 16, 26, 26, 10,145, 72, 4, 66,136, 37, 86, 45,182,113,
+227,198,223, 93,186,116,169,107,255,254,253,253,167, 76,153, 34,173, 85,171, 22,158, 62,125,138,133, 11, 23,230, 7, 7, 7,135,
+229,229,229, 45,132, 57,129, 77, 11, 34,190, 27,131,145,154, 53,234,176,200, 49, 69, 81, 66,120,135,143, 74, 96, 51, 13,253,240,
+ 90,120, 7, 83, 92,189,122,213,187,114,229,202,126,120, 53,146,208,248,194, 53, 29, 93,248,218,203, 56, 62, 62,190, 33,184, 81,
+135, 28,254,217,182,238, 2, 33,164, 48, 96,169, 81,124,253,101,212,225, 95,143, 36,147,250, 15, 29,105,189,243, 38, 65,116,100,
+ 24,110, 31, 95, 95, 84,100,153,211,216, 4,153,198,218,144, 72,229,181, 88,242,106, 56,115, 86, 74, 52, 64,121, 22, 11,173,162,
+156,160,236,151,253,135,140,180,219,125,155, 32, 46,250, 5,174, 28, 90,103,177,200, 50,229, 28, 36, 18,125, 37,224,145, 57,157,
+ 91,214, 23,182,168, 87, 3,242,164, 8, 36,196,196, 97,239,227,228,180,176,116,245,103, 87,136, 22,145, 47,212, 63,117, 26, 97,
+103,103,235, 34, 64,151,209,246,118,215,143,100,253,230,254, 33,163,165, 90,186, 56,238, 50,157, 95,108, 62,255,122,206,234,214,
+214,214,203,130,131,131, 29, 37, 18,137,245,237,219,183, 13, 27, 55,110,140,206,207,207, 95, 78, 41,221, 99, 86,217,255,186,221,
+163, 97,141,170, 23,190, 93,183, 89,146,147,171, 66,174, 70, 11,177,179,171,225,215,107, 15,123,150, 20, 0,179, 40,167, 88, 44,
+222,189,103,207,158, 78,129,129,129, 94,117,234,212, 97,210,210,210,144,147,147,131,156,156, 28,163,213, 11,143, 31, 63,102, 35,
+ 35, 35, 99,197, 98,113,153,249,124, 83,163, 14, 77, 57, 77,194, 59,204, 2,192, 16, 66,110,221,187,119, 47,167, 99,199,142,144,
+ 74,165,200,205,205,133,167,167, 39,244,122, 61,142, 31, 63,142,224,224,224, 92,150,101, 47, 0,184, 87, 90,217,243,242, 84,158,
+132, 16, 38, 79,165,170, 59,100,200,144, 86,147, 39, 79,126,109, 72,186,147,147, 19,236,236,236, 44,226, 4,128,180,180,180,154,
+191,255,254,251, 23,247,238,221,251,178, 83,167, 78,202, 89,179,102,137,189,189,189, 97, 48, 24,152,242,114,166,167,167, 43,239,
+220,185,179,188, 69,139, 22, 99, 59,118,236,200,255,246,219,111,161, 84, 42, 97, 48, 24, 32,149, 74,145,149,149,133,133, 11, 23,
+226,242,229,203,122, 74,233,186,204,204,204, 41,150,220, 75,229,180, 96,189,198, 89,146, 5,168, 36, 33, 84,220,254,255, 68, 62,
+139, 8, 55,216,216,216, 76, 7, 48,189,132, 8,246, 48,247,217, 52, 10, 45, 30,143,135,136,136, 8,108,220,184,241, 47,113,180,
+140,225, 31,138,227, 46,161,236,244,252,249,243, 6, 66, 72,211,219,183,111, 79, 31, 60,120,240,103,185,185,185, 30,114,185, 60,
+ 78,167,211,109,203,203,203, 51,198,209, 18, 90,210,134,228,230,230, 70, 22, 55,234,176,232, 62,128, 77,169,156, 69,194, 59,188,
+ 22,194,161,200, 97,175,133,126, 40, 26,222,193,148,179, 89,179,102,225, 12,195, 60, 41,232,130,127,130, 34,163, 11, 77, 56,125,
+226,227,227, 27,186,186,186, 94, 0, 32, 43, 58,234,240,159,184,151, 56,206,255,182,216, 66,105, 1, 75,139, 63, 10,146, 51, 55,
+ 34, 32,146,166,225,254, 31, 91, 45, 22, 89,197, 65,157,175, 10,155,187, 59,170,158, 70,157,143,220,204,196,167, 52,124, 79, 82,
+197,175, 54,228,103,110, 69, 66, 34,207,192,221, 51, 63,103, 24, 12,249, 31,210,176,255,221, 43, 63, 29,102,254,120,226,128,144,
+ 40,237,112,255,139, 97,136,203,200,197,137,151,233,251,168, 74,253,249,142,130,185, 2, 61,154,146, 75, 91,102, 39,172, 15,236,
+161,236,227,224, 46,192,202,169,219, 32,153, 97, 47,108,212,182,165,217,115, 32, 26, 29,228,127,248,225,135, 49,129,129,129, 86,
+125,250,244,121,150,150,150,246,154,131,124, 57, 46,116, 12, 33,228,199, 99, 27, 86, 76,181,175,221, 4,107,191,154,102,216,125,
+237, 97,209, 81,136,165,194,207,207,207,112,245,234,213,201, 99,198,140, 89,217,182,109, 91,247,238,221,187, 11, 43, 85,170, 4,
+177, 88,140, 23, 47, 94,224,210,165, 75,218,151, 47, 95,198,170, 84,170,201,117,234,212, 41, 51,198, 89, 76, 76,204,102,145, 72,
+132,144,144, 16,180,106,213,106,113,129,197, 42,226,234,213,171, 51,179,178,178,144,149,149,133,126,253,250, 21,166,143, 27, 55,
+110,102,213,170, 85,145,150,150, 86, 86, 89,231, 18, 66, 54,224,213, 92,135, 9, 59,118,236,104,122,232,208,161,166,147, 38, 77,
+ 18,118,234,212, 9,215,175, 95,199,233,211,167,181, 90,173,246, 26,128,107,230, 78,107, 83, 16,127,232, 14, 33,228,225,210,165,
+ 75,155,242,120,188,194,136,247, 33, 33, 33,216,186,117,107,121, 56,245, 0,150, 19, 66,126,220,177, 99,199,220, 51,103,206,124,
+ 58,100,200, 16,107,157, 78,135,199,143, 31,227,231,159,127, 46, 47,231, 23,142,142,142,115,142, 31, 63,190,237,212,169, 83, 31,
+ 15, 26, 52,136,153, 48, 97, 2,214,172, 89,131,255,253,239,127,172,193, 96, 56, 36, 16, 8,134, 36, 39, 39,231,190,165,134,103,
+ 83,193,180, 58,155, 44,152,243,176, 76,222,138,116, 13,154,153,239,248, 10, 55, 75, 5,229,104,221,186,117,161,149,145, 82,250,
+154, 95,157, 81, 96, 89,218,117, 8,192,166,224, 62, 93,135, 87,243,139,154, 70,133,231,225,207,200,241,230, 50,250,199,171,109,
+ 66,160,198,227,210, 39,149,182, 1, 40,252,203, 96,203,152, 59,119,238,247,243,230,205,251,190,104, 8, 7,211,157,138,134,126,
+ 88,176, 96, 1, 74, 10,239, 0, 32,125,238,220,185,223, 21,180, 79,164,160,187,240, 3, 20,140, 46, 52,225,220, 94,144, 46,155,
+ 63,127,254, 96, 0,165,113,114,224,240,143,161, 20, 31, 45, 58, 43,228,210,110, 29, 0,123, 16,102, 38,125,177, 55,164,194, 13,
+ 24, 75,103,156,221, 53,127, 13, 40,210,169, 65, 63,253,141,148,128,229,205, 14,185,180,139, 5,136, 13, 8, 51,131,190,248, 95,
+133,243, 73,148,118,200, 94, 56, 6,255,123, 20, 71, 19,114,117,159,236,208,104, 94,179, 6, 21,248,100,245,117, 11, 36,123,109,
+221, 4,191,126,241,161, 61, 57,150, 54,216,226,243, 36, 39, 39,127,107,101,101,197, 91,190,124,249,167,121,121,121,175, 57,200,
+ 87,224, 37, 49,141, 16,194,107, 84,221,107,252,205,231,145,221,205,233, 46, 44,138,102,205,154,197,135,134,134, 14, 56,125,250,
+116,255,139, 23, 47, 6,169, 84,170,202,132, 16, 72,165,210, 8,141, 70,115, 70, 44, 22,239, 54, 71,100,153,190, 80, 76,167,136,
+ 1,128,172,172, 44,100,103,103,191, 22,134, 0,120,229, 95,149,156,156, 12, 79, 79, 79, 75, 95,136, 23, 9, 33,193, 11, 23, 46,
+108,185,112,225,194,186, 5, 86,161,139,229,237, 50, 43, 16, 60, 23,165, 82, 89, 28, 33,196, 67, 40, 18,231, 94,189,122,245, 76,
+ 5, 57, 85, 5,150,146,149, 43, 87,174, 92, 36,151,203, 27,134,132,132,252, 81, 17,206, 2, 17,213,211,222,222,222,109,251,246,
+237,251,183,108,217,210,132,207,231, 95, 39,132,244,206,200,200,120,219,147, 74,143,130,121,115, 28,150,105, 49, 50,199, 34, 86,
+ 94,252, 29,194,205, 96, 48,228,204,153, 51, 39,169,168,240, 42,106,189, 50,254,215,106,181,249,102, 62, 75,150,140,162, 44, 67,
+100,144, 28, 0,120, 53,119,225,171,105,117,204,157, 84, 26, 64,137,115,103,206,155, 55,143, 46, 88,176,128, 48, 12,115, 8,192,
+ 83,134, 97,158, 23,117, 86, 55,221,182, 96,193, 2,204,155, 55,143,206,159, 95,242, 55,170,145, 51, 52, 52,148,242,120,188, 63,
+ 0,132,243,120,188, 8, 83, 94,211,116,227, 49,165,113,114,224,240,214,133, 22,125,185, 63, 26,192,176, 55,250,165, 24,190,255,
+ 12, 94, 57, 50,190, 57,206,136, 61,145, 0, 6,189, 41, 62, 22, 88,246, 89,163,214, 83, 1, 16, 10,172, 44, 42,178, 76, 17,119,
+137, 30,114,109, 78, 22, 55,106,219,114, 82,129, 53,236, 91, 75,207, 87,156,131,252, 27, 16, 91,127,113,144,183, 20,126,126,126,
+ 6, 0, 59, 0,236, 40, 58,169,116, 57, 94, 58,144, 74,165,133,221,136, 12,195,132,103,100,100,192,104,209, 50, 77, 47,168, 19,
+ 40,149,202,242, 10,153, 19,132,144, 83,148, 82,195,155,168,203,188, 60, 85,165,130, 23, 28,239, 77,113, 22, 12,114,248,236, 77,
+114,166,166,166,198, 1,104, 86,173, 90, 53, 81, 88, 88,152,230,223,210,192,188, 9,235,208,223,141, 55, 45,220, 10, 62, 24,106,
+254, 13,117,249,244, 13, 19,254,220,190,133, 63, 15,166,177,131,202,154, 84,218, 40,208, 40,126, 46, 33,143,148,188, 82,146, 20,
+192,246, 23, 47, 94,120,177, 44, 27, 89,140,101,233,181,109,243,231,207, 71, 73, 49, 3,139,112, 2,192,111,209,209,209,110, 6,
+131, 33,190, 8,239,107,233,165,113,114,224,240, 47,177,104,253, 55,177, 83,163,153, 7, 96,158,185,251,199, 95,161,179, 1,204,
+174, 96, 3,250,248, 77,151,163, 60, 34,107,255,254,253,134,191,163, 78,117,186, 87,189, 97,166,115, 23,154, 98,240,224,193,155,
+223,112,217, 13,127, 67,125,190, 19,156,255, 38,145,197,225,223, 13,154, 30, 18, 13,224,171, 50,247, 43, 59, 26,252, 95,132, 81,
+193,207,116, 0,233, 37,104,157,210,182,149,198, 9, 0, 89, 0,178,138, 57,182,164,116, 14, 28,222, 42, 24,174, 10, 56,112,224,
+192,129, 3, 7, 14, 28,254, 30, 16, 0, 65, 37,124, 65,152, 61,154,128, 16, 18, 84,142,175,249, 51, 28, 39,199,201,113,114,156,
+ 28, 39,199,201,113,254,183, 56,203,226, 46, 58,122,249, 77, 77,207,245,143,138, 43,211,124, 27, 71,194,252, 29, 11,128, 32,142,
+147,227,228, 56, 57, 78,142,147,227,228, 56, 57,206,114,158,103,228, 63,113,158,191,115,225,124,180, 56,112,224,192,129, 3,135,
+119, 8,237,124,136, 43,223, 0,230, 68, 24,141,125, 19,124, 31, 85, 35,238, 0,240,166,248,254,139, 32,132,184, 2,232,108,146,
+116,204, 56, 24,136, 19, 90,239,238, 69,173, 14, 96, 22, 0,165, 73,242, 77, 74,233,226, 34,251,237, 2, 96, 58, 33, 97, 46,128,
+133,148,210,231,150,156,143,199,227, 45,110,217,178,229,231,151, 47, 95, 94,161,211,233, 22,150, 35,191, 94,174,174,174,223, 17,
+ 66, 26, 0, 16, 16, 66, 94, 36, 38, 38, 46,214,233,116,103, 42, 80, 7, 85, 92, 92, 92,150, 0,168,199, 48,140,128, 16, 18,150,
+152,152,248,141, 78,167, 59, 95, 1, 78,133,179,179,115,115, 74,169, 11, 0,158, 64, 32, 72,141,141,141,189, 81,222,209,115,189,
+ 23,132, 10,179,114,245, 2, 0,176,150,243,117,251,231,249,105,205, 77,227,238,114, 14, 28,254,243, 13, 61,175,104, 82,135,170,
+ 88, 68, 40,166, 24, 0,210,161, 10, 89,125, 50, 28, 83, 74, 60,190,184, 1, 55, 69, 56, 59, 84,197, 34, 74, 95,113,116,168, 70,
+150,159,124, 81,198,224, 46, 51, 56,141,216, 4, 48, 35,205,153,224,252,111, 24, 24,244, 22,208,217,180,139,179, 32, 0,243,166,
+ 50,133, 86, 63, 31,226,106,224,131,191, 63,132, 70, 27, 95, 66, 0,234, 2,168, 14,224, 57,128,123,148,210,236, 10, 10,134,119,
+130,243, 95,136,185,148,210, 1, 69,202,253,151,157, 62,252,240,195,110,167, 78,157,146, 25,167,103, 97, 89, 22, 82,169, 84, 15,
+ 96,168, 5,245,233,212,191,127,255, 25, 63,253,244, 19,250,244,233, 51,135, 16,242, 61,165, 52,199,220,227,237,236,236,122, 85,
+169, 82,101,205,230,205,155, 29,155, 52,105, 74, 68, 34, 17, 94,188, 8,243, 24, 53,106, 84, 45,103,103,231, 67,137,137,137,159,
+ 89, 90,120,123,123,251,129, 85,171, 86, 93,185,113,227, 70,135, 22, 45, 90,128, 16,130,224,224, 96,143, 47,190,248,162,174,139,
+139,203,158,132,132,132,177,150,114, 58, 56, 56,212,168, 90,181,106,155,181,107,215, 74,155, 55,111, 14,137, 68,130,123,247,238,
+ 89,141, 30, 61,218,197,197,197,229,113, 66, 66,194, 5, 75, 69,214,131,224, 35, 31,235,181,234,165, 0,192, 23,138,167, 53,253,
+ 62,235, 72, 90,240,197,174,101,165,245, 94,128,223, 56,177,197,129, 3, 7, 83, 12,116,131, 11,165,152,122,234,231,175, 24, 0,
+104,255,233,215, 19, 6,186, 97,197,206, 56, 36,188, 33,190, 41, 67,220,177,102,123, 44, 18, 43,146,207, 77, 0,243, 5,159, 63,
+161, 81,227,198, 14,227,174, 92, 9,211, 2,219,254, 35, 6,144,145,197,165,151, 40,180,122,249,147,133,224, 99, 22, 0,242, 81,
+117,178,231,116, 56,239, 82,187,118,237,170, 13, 31, 62,156,212,175, 95, 31,193,193,193, 53,246,236,217,211,153,207,231,135, 25,
+ 12,134, 96, 0,143,204,141,106, 77, 8, 17, 0, 8,224,241,120, 13,254,205,156,255,114,200, 11,202,157, 8,224,166,209,162, 85,
+116,167,179,103,207, 30,230,243,249, 70,139, 86,163,220,220, 92,231, 34, 86, 48,115, 80, 89,167,211,225,201,147, 39, 96, 24, 70,
+ 0,192, 27,127,157, 82,163,164,235,226,225,225,225,177,254,218,205, 96,123,194,151, 34, 61, 31, 64,190, 22, 34, 43,103,252,180,
+117,135,221,228,137, 99,123, 90, 91, 91, 95,202,202,202,250,197,130,155,217,219,211,211,243,251,251,247,239,219,203,100, 50,176,
+ 44,139,236,236,108,184,184,184, 96,243,230,205, 54,147, 39, 79, 30, 32,149, 74,207,231,229,229,253,207, 18,113, 94,181,106,213,
+ 54, 15, 31, 62,148, 26, 39,148,214,104, 52,240,240,240,192,174, 93,187,196, 19, 38, 76,168, 41, 22,139, 99,212,106,245, 75,115,
+ 57,179,114,245, 2,189, 86,189,116,251,186,249,149, 0, 96,200,216,249, 75, 69,217,214,199,205, 73,203,202,213, 31, 3,192, 9,
+ 45, 14,255,244,139,162,129,131,131,195,129,148,148,148, 11, 0, 62,123, 19, 33, 72, 8, 33,110,124, 62,223,155, 82,106, 83,240,
+ 63, 67,175,215,135, 83, 74,203, 29, 80,215,161, 90,155,174, 16,203,134,129,178,117, 25, 0,132, 97,238, 25,180,170,173, 41, 79,
+207, 29,169, 16,167, 72,250, 41, 64,235, 50, 0, 75, 24,230, 62,171, 87,109, 78, 14, 61,119,226,223,114,125,174,103,194,167,170,
+139,249, 19, 99,190, 9,190,126, 85,224,202,176, 96,118, 69,192,236,110,197,241, 64,167,137, 19, 39,186,140,253,252,115, 50,108,
+232,208,234, 23, 46, 95, 38,173, 44,153,173,224, 29, 68,105, 14,251,197, 10,173,222,254,196, 22,192,244, 61,107,102, 49,124, 30,
+143,244,159,184,120,192,150,117,203,153,118, 93,123, 23,118,159, 4, 6, 6, 34, 48, 48,144, 44, 93,186,180,250, 31,127,252, 81,
+125,215,174, 93,122, 66,200,125, 74,233,222,146, 78,214,177, 26,201, 99, 1, 73,103, 95,126,110,255,175,126,217,216,184,113, 99,
+136,197, 98, 84,132, 19, 0,218, 87,231,189,236,212,184,218,253,254,227,231, 70, 54,105,210,140,190, 9,206,119, 8, 55, 41,165,
+221, 11, 26, 48, 91, 79, 79,207,230,122,189, 94, 2, 0,124, 62, 63, 31,192,120, 90, 48,117, 16, 33,228, 16,203,178,221, 44,104,
+ 32, 25, 0,243,186,117,235, 54,103,220,184,113,240,244,244,196,132, 9, 19,160,211,233,130, 9, 33,115, 1, 44, 41, 43, 32,160,
+147,147,211,220,245,235,215,219,241, 69,114,212,159, 30,142,248, 12, 61, 0,192, 74, 12, 28, 30, 67, 49, 97,194, 4,235,219,183,
+111,127, 3,192,108,161,229,228,228,180,112,243,230,205,118, 50,153, 12,148, 82,228,228,228, 32, 59, 59,187,112, 78,198,177, 99,
+199, 90, 63,126,252,248, 59, 0,102, 11, 45,103,103,231,230,107,215,174,149, 74, 36, 18,228,228,228, 8,181, 90, 45,201,206,206,
+134, 74,165,162, 26,141, 70, 59,126,252,120,241,163, 71,143, 90, 3,120, 9, 14,255, 22, 81,192, 3,240,137, 64, 32,232, 81,173,
+ 90,181, 15,158, 63,127,126, 87,175,215, 31, 4,112,176,162, 31, 83,132,144,182,110,110,110,139,226,226,226,214, 82, 74,119,252,
+ 87,234,212,217,217,249,224,213,171, 87, 43,173, 95,191,126,232,138, 21, 43,142, 91,242, 12,149,240,241,219,180, 81,163, 70, 14,
+ 61,122,244, 16,184,184,184, 64,165, 82, 33, 44, 44, 76,118,230,204, 25, 71,137, 68,146,170, 86,171,175, 89,114,173, 28,124,154,
+ 91,129,111,189,167,105,155,160, 22,125,122,126,162,112,182, 87, 34, 79, 99,192,243,200,120,207,223,143, 31,110,229, 86,171,243,
+ 85,173, 54,179, 95,202,211, 43, 57,150,114,182,233,216,165, 69, 80,219,182, 10,165,141, 18,153,185, 90,188,136,136,245, 58,119,
+250, 72,160,107,173,206, 23, 89,162, 27,148,248,224,148,234,109, 94,155, 9, 0, 63, 87, 98, 95,167,110,179,250,183,219, 15,255,
+230, 3, 74, 41, 24,138,213, 69,173, 89, 19, 0,254,106, 64,111, 41, 31, 40,165,132, 96,185,169, 53,171,176, 91,145, 1,233,224,
+141,210,187, 41,141,239, 99, 64,108, 99,103,215,120,244,200,145, 36, 59, 43, 11,247,238,221, 83, 21, 21, 89,223,187, 67,120,145,
+ 65,229, 67,209,120,246, 62, 89,179,138,118, 29, 26,255,155, 29, 71, 75, 38,147, 21,155,174, 84, 42,209,166, 77, 27, 44, 94,188,
+152, 15,160, 65, 17,133,247,250, 36,171,128,248,232,134,153, 80,202,197,140,167,167,167,194,218,218,186,194,156,175, 18, 89,239,
+102,158,244,163, 91,191,204, 26,122,102,215,202,128,220,236, 12, 65,209, 93,172,172,172,224,227,227,131, 57,115,230,152,199, 89,
+113,117,251,143,114,186,186,186,250, 6, 6, 6, 54, 56,123,225,130, 77, 92, 92,156, 56, 46, 46, 78,124,234,236, 89,155,166, 77,
+155, 54,112,117,117,245, 53,225,176, 36,159, 95,175, 91,183,110,238,161, 67,135,152,192,192, 64,216,218,218,162, 77,155, 54, 56,
+126,252, 56,127,197,138, 21,223, 2,152, 83, 86, 62, 25,134,105, 17, 24, 24, 72, 64, 41, 18, 50,245,184,177,216, 23,247,150,251,
+ 33, 59,159, 34, 45, 51, 11,121,121,249,144,201,100,146,130,238, 94,115,203,222,172,105,211,166, 4, 64,161,184,202,206,126,181,
+228,228,228, 66,163,209, 66, 44, 22, 43, 8, 33, 18,115, 57, 41,165, 46,205,155, 55, 7, 0,104,181,218,194, 47,188,140,140, 12,
+146,153,153, 9,141, 70, 3,129, 64, 32, 36,132,240,205,229,180,150,243,117,124,161,120,218,144,177,243,163,135,140,157, 31,205,
+ 23,138,167,105, 20, 89, 6,115,210,172,229,124,221,219,188, 63, 9, 33,142, 60, 30,239,231,106,213,170, 61,230,241,120,219, 9,
+ 33, 46, 21,225, 36,132, 52, 36,132,124, 43,147,201,206,212,172, 89, 51, 90, 46,151,159, 37,132, 44, 33,132, 52, 45, 15, 39, 33,
+ 68, 36,147,201,206,126,251,237,183,251,239,222,189,219,231,143, 63,254,240,126,240,224, 65,207,165, 75,151,238,177,178,178,186,
+ 68, 8,145, 85,228,217,244,246,246,222,114,227,198,141,134,205,154, 53,251,137, 16, 34,126, 19,207, 59, 33,132, 71, 8,169, 71,
+204,156,107,232,159,190,238,132, 16,183,250,245,235, 87,146, 72, 36, 8, 10, 10, 2,128,214, 21,228,108, 58,122,244,104,151,201,
+147, 39, 11,238,221,187,135,159,126,250, 9,135, 14, 29, 66, 82, 82, 18,186,116,233, 34,252,240,195, 15, 93,196, 98,113, 83,139,
+ 56,249,214,123, 38,126, 49,169,227,212, 9, 35, 20,247,163,180,216,122, 38, 10,191, 93,139, 71,146, 74,132,174, 61,135, 40, 59,
+116,239,219, 65, 36, 86,238,177,148,115,198,244,233, 29, 71,126, 58, 64, 17, 18,207,226,240,245, 4, 92,127,146, 9,189,192, 6,
+157,122,126,102, 91,183,121,199,206,124, 8,182,189,237,107,180, 25,104, 50,113,226, 68,199,105,203,119, 94,113,107,248,201,234,
+228,116, 4,154, 10,159, 26,128,141,157, 92,254,201,147, 86,173, 70, 72, 95,205,249, 88, 42,231,107,124, 13,186,175, 73, 74, 71,
+ 75, 83,255,172,150,118,168, 94,208,173,200, 59,245,243, 87, 12, 37,152, 48,208, 13, 46,101,229,243, 60,208,103,226,164, 73, 2,
+165,173, 45,214,173, 91, 7,117,110,238,107, 62,179,109, 43,161,227, 25, 25, 63,166,138,159,199,227, 54, 94,228,210,123,248, 1,
+ 56,178, 68,139,214,177, 99,199,104,231,206,157, 9, 0,236, 15,161,233,189,252,201,119,125,199,125, 59,135, 48,132, 86, 14,104,
+ 22,226, 94,213, 63,215,222,222, 30, 42,149, 10,106,181, 26, 66,161, 16,249,249,249,136,138,138,194,245,235,215, 97,107,107,107,
+ 81,102,178,178,178, 96,101,101, 5, 43, 43,171, 55,194, 57,115,104,144,248, 69,116,178,248,228,245,243,173,126,248,252,127, 77,
+170,214,107,253,160,109,223, 9, 15,173, 29,221,242, 31, 60,120,128,171, 87,175, 34, 61, 61, 29,141, 27, 55,126, 95,174,231,205,
+130,246,250, 38, 33,196, 54, 48, 48,208,227,228,153,139,182, 57,249,172,117, 68,162, 78,192,178, 44,100, 50, 87,253,222, 3,135,
+ 51,251,244,236, 74, 8, 33, 73, 0,110, 22,136,219,155,101,220, 40, 18, 0,190,189,122,245,154,241,249,231,159, 35, 44, 44, 12,
+ 35, 70,140,200,187,121,243,102,106,179,102,205,236, 55,111,222, 44,157, 60,121, 50, 46, 92,184, 48,143, 16,242, 43,128,112, 74,
+105,126, 9,141,134, 80, 40, 20, 66, 95, 32, 27,180, 6,182, 80,223,103,101,101,129,230,165, 67, 40, 20,242, 0, 56, 2, 48,203,
+143,142,101, 89,161, 64, 32, 40, 20, 89, 81,137, 89,136, 74, 82, 33, 43, 71,131,188, 60, 61, 52,121, 20, 60,153, 61, 31,136,112,
+ 6, 16, 97,102,125,242, 36, 18, 9,244,122,125,225,252,139, 70, 75,153, 70,163, 65,102,102, 38,120, 60,158, 21, 0,107, 0,105,
+230, 16,190,114,114,199,111, 5,221,128,184,181,179,155,195,243, 99, 51,181,189,230, 63, 46, 76,179,150,243,117, 7, 38,215,228,
+217,123,212,189, 92,175,207, 54, 63, 99,218,219,244,207, 34,132,136, 29, 29, 29,207,237,223,191,191,102,245,234,213, 17, 30, 30,
+238,215,187,119,239,198,132,144,122,150,206,201, 72, 8,145, 49, 12,243,221,176, 97,195, 62,239,223,191, 63,169, 81,163, 6,248,
+124, 62,244,122,189, 71, 88, 88, 88,155,125,251,246, 77,231,243,249,155, 13, 6,195,151,230,250,253, 17, 66, 24,145, 72,180,119,
+227,198,141, 45, 27, 55,110,140,237,219,183,227,230,205,155,108,195,134, 13,153,193,131, 7,195,203,203,171,241,224,193,131,127,
+ 35,132,116, 42,143,101,139, 16,226, 53,112,224,192, 74, 60, 30, 15,205,154, 53, 19, 94,189,122,181, 62,128,171, 21,172, 83, 43,
+ 15, 15,143, 11,173, 91,183,174,119,230,204,153, 59,132,144,214,150,248, 57, 18, 66,186,187,185,185, 45, 85, 42,149,182, 22,180,
+177,170,216,216,216, 41, 22,204,161,218,164, 65,131, 6,136,140,140,132,175,175, 47,132, 66, 97, 83, 66,200, 40, 0, 29, 1,204,
+182,100, 6, 11, 66,136, 91,211,166, 77, 29, 90,183,110, 77,150, 44, 89, 2, 0, 16, 8, 4, 48, 24, 12, 96, 24, 6, 2,129, 0,
+126,126,126,228,229,203,151,118,132, 16, 55,115,186, 17, 29,170,181,233,218,172,109,199, 22, 45, 27,215, 97, 86, 28,120, 14, 3,
+107, 0,143,232,193, 39, 44, 88,157, 24, 98, 33, 15, 53, 2, 62,224, 61,121,116,191,177,131, 79,187,174, 41, 79, 79, 31, 49,135,
+179, 99,215,110,129, 53,125,107, 48, 63,252,246, 2, 25,177,143, 13,177,161, 23, 83, 24, 30,131,154, 13, 62,116,168,225, 95,143,
+ 87,175,113,107, 65, 92,248,163, 54,118,213, 91, 5,165, 61,191,112,230,109, 60,147, 11, 0,158,135,187,195, 39, 93,218,181, 22,
+198,199,197,229,238, 59,112,228,161, 74,135,235, 0,112, 1, 32,157,128, 58,181, 27, 53,106,181,121,201, 18,123, 87, 87, 87,193,
+160,254,253,245,155,238,220,185, 51, 18, 48,148,196,231,224,226, 18, 52,122,244,104, 94,124, 92, 28,221,119,240,216, 3, 35, 31,
+ 0,200,128,218,117, 60,252,186, 32,247,137, 69,221,148, 93, 1,145,179,139, 75,205, 81,163, 70, 33, 33, 46, 14,219,119,236,200,
+201, 7,174, 25,173, 88,135,121, 88,235, 95,213,101,216,180,207,186,145, 74,174, 14, 24, 61,111, 83,211, 54,218,164,170,231,240,
+167,101,203, 84,139,188,171, 34,171,168,216, 42,241,235,252, 64, 8,157,107, 45, 34,222,251,246,237,102,146,179,181,185, 97, 97,
+ 97,112,112,112,128,171,171, 43,148, 74, 37, 66, 66, 66,112,246,236, 89, 60,125,250, 20, 44,203,162,110,221,186, 22,101, 40, 37,
+ 37, 5,247,239,223,135,173,173,237, 27,227,172, 90,201, 17,227, 42, 57, 10, 19, 83,179,132,103,110, 62,109,188,105,102, 79,127,
+198,175,231,150,252,252, 63, 53,128, 70,243,126,204, 80, 98, 58,186,208,211,211,179,249,214,173, 91,133,106, 61, 20, 53, 70, 93,
+ 91,150,155,111,144, 3,128, 92,194,203, 13, 94,234,243,229,215, 95,127,157,251,233,167,159,250, 69, 69, 69, 45, 46,139, 87, 36,
+ 18, 45,250,232,163,143,166, 82, 74, 5, 19, 39, 78, 4, 0, 12, 25, 50, 36,235,250,245,235, 53, 40,165, 73,132, 16,183,225,195,
+135, 63, 59,119,238,156,108,210,164, 73, 60,189, 94, 31,194,231,243, 41, 33,100, 33,165,116,126, 81, 62,134, 97,110,223,185,115,
+167,178,155,151, 15,188,236, 25, 4,206,121, 53, 93,155,189,140, 69, 76,196, 11,132, 62,184, 9, 23, 23, 23,165,171,171,235, 99,
+ 95, 95, 95,109,108,108,236,244,156,156,156,245,165,229, 81, 40, 20,222, 11, 14, 14,118,245,242,242, 66, 78, 78, 14, 98,146, 85,
+152,112, 80,134,172,188, 87, 70, 12, 1,242, 80,175,146,143, 66,202,104,110, 58, 59, 59,107, 53, 26,205, 87, 25, 25, 25,165, 78,
+ 35, 34, 16, 8, 82, 31, 60,120, 96,229,233,233,137,252,252,124,154,150,150, 70,114,115,115,145,157,157, 77,142, 29, 59,246,113,
+124,124,124, 67,111,111,111,226,225,225,177,176,122,245,234,121,177,177,177, 35,204,241, 1,219, 63,207, 79, 75, 8, 49,240,249,
+252, 21, 35, 71,142,236,243,235,175,191,222, 62, 48,191,102,119, 74,169,182,224,129, 84, 6, 4, 4,156,172, 83,199,223,109,199,
+242,218,171, 41,165,203,254, 5,183,215,176, 89,179,102,213,180,179,179,195,232,209,163,177, 96,193, 2,204,157, 59,183,250,232,
+209,163, 71, 2,248,222,130, 70, 71,234,226,226,114,235,135, 31,126,240,107,222,188, 57,142, 31, 63,142,221,187,119,227,229,203,
+151,122,111,111,111,126,227,198,141, 49,111,222, 60,116,232,208, 97,196,248,241,227, 91, 17, 66,234,155, 41, 62, 62,157, 55,111,
+ 94,247, 22, 45, 90, 96,232,208,161,234,243,231,207,247, 1,112,234,244,233,211, 31, 94,184,112,225,192,206,157, 59,165,223,126,
+251,109,208,228,201,147, 71, 3, 88, 83,142,242,127,220,178,229,171, 57,148, 91,180,104,129,165, 75,151,118,168,136,208, 34,132,
+136,236,237,237,143,109,223,190,189,158,143,143, 15, 6, 13, 26, 84,191, 79,159, 62,199, 8, 33,237, 40,165,102, 53, 72,238,238,
+238,223, 29, 58,116,168, 90, 73, 61, 11,197, 65,173, 86,219,125,242,201, 39, 75, 0, 88, 36,180,118,237,218,133, 41, 83,166,160,
+110,221,186,117,154, 52,105,178, 97,212,168, 81,232,213,171, 87, 91, 66,136, 51,165, 52,215, 28, 34, 62,159,239,221,165, 75, 23,
+193,193,131, 7, 95, 89, 71, 90,182, 68, 80, 80, 16, 30, 62,124,136,203,151, 47,131,199,227, 65, 46,151,163,121,243,230,162,184,
+184, 56,111, 0,101, 10, 45, 70, 44, 27,214,189, 75, 39,197,225,235,241, 48,176,122,124, 80,205, 26,141,253,156,240, 36, 38, 11,
+193,143, 99, 96,208, 8, 97,109,103,143,166,173,218,219, 37,196,190, 28, 6,160,108,127, 45,177,108, 88,143,238,157,173, 14, 95,
+139, 67, 70, 92, 40,125,126,243,215,179,186,252,220, 17, 0,112,251,143, 61, 27, 92,236,165,237,106, 52,248,128,215,186, 93, 55,
+219,131,187, 19,134, 1,120, 43, 66,235, 66, 37,108,244, 18,164, 12,153, 54, 32,144, 10,108, 61,110, 42,116,186,181,198,109, 29,
+128,246,211,103,205,106,242,217,200,145, 18,150,101,177,243,151, 95,178,238,223,185,243,164,180,209,126,107, 1,175, 62,221,187,
+139, 21,214,214,248, 98,194, 4, 40,116,186,115,133, 85, 2,180,253, 98,234,212,230, 99,199,142,149,110, 88,248,249,237, 14,195,
+191,105,192, 82, 74,138,235,166, 44,138, 51, 64,195,225,221,187, 67, 97,109,141,137, 19, 39,130,104,181, 39,141,219,142,242,113,
+238,211,143, 3, 27, 15,232,218, 2, 4, 4,187,143, 94,198,243,200,228, 7,231,226,241,226, 61,121, 39, 91,230,163,101, 68,182,
+ 22,137,109, 59,247,196,157, 59,119, 0, 0,169,169,169, 72, 77, 77, 69,181,106,213,176,102,205,235,237, 87,121, 4, 12,203,178,
+111,156, 19, 0,156,237,173, 49,168, 83, 35,254,229,251,187, 37,185,201,201, 18, 43, 43,171,252,247, 77,104,153, 66,175,215, 75,
+188,189,189,145,149, 7,146,169,210, 89,165,236,121,101,241,119,232,119,222, 74,163,209, 48, 86, 86, 86, 80,171,213, 18, 51, 94,
+ 8,130,238,221,187, 79,221,187,119,175, 32, 52, 52, 20, 85,171, 86,133, 86,171,197,245,235,215, 99, 10, 38, 66, 6,165, 52,142,
+199,227,197,177, 44, 91,189,110,221,186, 88,188,120, 49,252,252,252, 72,167, 78,157,166, 23,136,173,215, 30,238,248,248,248,239,
+ 70,141, 26,245,225,190, 3,191,218,109,236,155,135,172,204, 44,228,228,228,224,222,221,219, 72, 75,204,199,166, 77,155, 32,145,
+ 72, 9, 0, 97, 82, 82,162,112,210,164, 73,171, 61, 60, 60, 58,198,196,196,116, 41, 41,159,113,113,113,139,198,142, 29,219,116,
+207,158, 61, 54,217,217,217,200,203,203, 71, 90,174, 12,143, 87,189,154,199,183,230, 23,143,177,110,237,122,166,118,101,185,131,
+ 74,165,194,231,159,127,190,210,205,205,173,121, 92, 92,220,240,146, 56, 99, 99, 99,111,140, 27, 55,206,121,231,206,157, 18,141,
+ 70,163, 53, 24, 12,200,203,203, 99,246,236,217, 51,189,114,229,202,182,155, 55,111, 38, 18,137,180, 96,223, 24,225,152, 49, 99,
+246,186,184,184,236, 76, 72, 72, 24, 90, 86,119, 17,143,199, 91,181, 99,199,142,193,125,251,246, 85,196,199,199,251, 31, 58,116,
+ 72, 12, 32,175, 96, 23,215,118,237,218, 85, 94,190,124,185, 99, 64, 64,192,116, 66,136,128, 82,250,237,219,188,159, 28, 28, 28,
+198,119,239,222, 29, 75,150, 44,193,145, 35, 71, 38,219,217,217,173, 92,176, 96, 1,220,220,220,198, 17, 66, 86, 89, 48, 81,239,
+178,239,191,255,222,207,207,207, 15, 67,134, 12,209,156, 57,115,102, 22,128,223, 0, 68, 94,186,116,201,115,219,182,109, 93,247,
+238,221,187,228,135, 31,126,144,172, 89,179,166, 90,207,158, 61, 87, 1, 24, 94,230,243,237,236, 60,169,127,255,254, 88,190,124,
+ 57,206,159, 63,223,147, 82,122,188, 96,211, 9, 66, 72,215,111,191,253,246,143, 57,115,230,224,251,239,191,159,104,169,208, 34,
+132, 88,213,172, 89,243,171,142, 29, 59,226,210,165, 75, 8, 12, 12, 68,211,166, 77, 39, 19, 66, 86, 83, 74, 83,202, 33,178, 24,
+ 43, 43,171,189, 91,183,110, 13,172, 92,185, 50,190,249,230, 27, 76,157, 58, 21, 91,182,108, 9, 28, 52,104,208, 94, 66, 72,143,
+162,207, 76,113, 80, 42,149, 86, 50,153, 12,211,167, 79,167, 47, 95,190, 76, 47,107,255, 74,149, 42,217,174, 92,185,146,216,218,
+218, 42,205, 21,197, 18,137,164, 89,173, 90,181, 48,111,222, 60,156, 62,125, 26,115,230,204, 65,173, 90,181, 16, 25, 25,137,126,
+253,250,201,102,207,158,221, 11,192, 86, 51, 95, 58, 74,123,123,123, 36, 37, 37, 65, 32, 16,160,121,243,230,248,237,183,223,160,
+ 86,171,225,228,228,132,140,140, 12, 52,106,212,200, 40,202,148,102,190,202,106, 57,216, 41,145,244, 40, 22,124,232,209,160,134,
+ 3,206, 61, 76,133, 86,199,194,201,222, 6, 9, 73,137,104, 82,203, 3, 26,141, 39, 40,101,107,153,195, 40,226, 49, 13,196, 18,
+ 41,210,178, 83, 16,251,248,124,170,214,160, 30,149,241,242,114, 52, 0,216, 85,109, 57,234,246,229,211,183,123,119,110,233,148,
+147, 91, 9,132,178,141,222,198,243,216,219, 19,149,228, 18,254,144,163, 27,103, 18, 61,203,226,163,225,139, 26,118,116,134, 10,
+137,128, 35,224,221,187, 95,191,102, 95,126,249,165,232, 89, 88, 24, 59,105,194,132,140,187,183,110,157,255, 29,184, 93, 26,103,
+ 14, 80,189, 93,187,118, 96, 0,252,126,234, 84,110, 10, 16, 3, 0,206, 64,165,110,159,124,210,114,214,140, 25,162, 23, 17, 17,
+236,245,176,156,195, 47,146,232,226,102,118,184,191, 39,242,213, 62,165,193, 0,212, 54,242,158, 60,121,146,230, 21,228,163,117,
+ 37,140,235,208, 60,160,241,224,238, 45, 17,147,144,138,165, 63, 29,198,131,103,241, 39,237, 89, 12,124, 95,222,195,165, 69,176,
+103,204,120, 96,254,146,166, 82,253,181,247,160,162, 2,230,239,224, 44, 14,239,163,208, 50,194, 56,121,179, 70,199, 66,163, 99,
+141, 95,181,200,203,203, 51, 87,145,235, 78,158, 60,185,125,194,132, 9, 88,185,114, 37,158, 61,123, 6,161, 80,136, 90,181,106,
+185, 18, 66,172,140, 22,152, 6, 13, 26, 56, 49, 12,131, 39, 79,158, 96,197,138, 21,248,244,211, 79,233,213,171, 87,183, 20,247,
+194,160,148,222, 77, 75, 75, 91, 59,106,196,167, 25,233,137, 81,208,229,165, 35, 41,246, 5,212,185, 25,248,102,241,119, 80,233,
+248, 72,200,212, 34, 33, 83, 11, 70,108,135, 13,155,183,242,106,214,172,217,145,207,231,119, 41, 37,159,215, 19, 19, 19, 55,143,
+ 25, 51, 38, 35, 33, 33,161,176,124, 26, 29,133, 70,247,250,253, 42,147,201,176,106,213, 42,101,141, 26, 53,186, 11, 4,130, 54,
+165,112,198, 71, 71, 71,135,142, 25, 51, 70,147,152,152,136,204,204, 76, 28, 62,124,184,107,229,202,149,109,151, 44, 91, 73,114,
+181,124, 36,100,104,145,144,161,133,200,202, 9,123, 15,252,202,243,241,241, 25, 32, 16, 8,154,150, 37,178,118,238,220, 57,184,
+111,223,190,138,101,203,150,165, 29, 58,116,104, 29,165,212,244,130, 60, 89,181,106,213,190,189,123,247,102, 79,157, 58,213,110,
+233,210,165,147, 9, 33,179,222, 98, 99,209,166,111,223,190,190, 44,203, 98,255,254,253, 15, 40,165,223,255,250,235,175,183,212,
+106, 53,250,245,235,231, 93,208,141,100, 14, 79,195, 1, 3, 6,124, 30, 24, 24,136, 47,190,248, 66,123,230,204,153, 6,148,210,
+149,148,210, 8,250, 10,145,148,210,213, 23, 46, 92,168, 59,126,252,120,117,163, 70,141, 48,116,232,208, 79, 9, 33,129,101,240,
+ 54,235,223,191,191, 31,203,178,216,179,103,207,125, 19,145,101,188,142,103, 15, 28, 56,112, 93,163,209, 96,224,192,129, 85, 8,
+ 33, 31, 90, 80,118,161, 88, 44,222,255,245,215, 95,219,196,198,198, 98,240,224,193,234, 39, 79,158, 96,254,252,249, 82,165, 82,
+121,220,248, 12, 88, 2,177, 88,188,233,199, 31,127,236, 94,187,118,109,140, 25, 51, 70,179,126,253,250, 9,159,127,254,185,166,
+ 65,131, 6, 88,183,110, 93,119,145, 72,100,209,212, 34,113,113,113, 25, 33, 33, 33,246,101, 45, 49, 49, 49,137,102,150, 89,166,
+ 80, 40,174, 5, 4, 4,100,213,170, 85,235, 3,189, 94,143,144,144,144, 23,219,183,111,103,107,213,170,133,181,107,215, 98,233,
+210,165,232,210,165, 11,120, 60, 94, 47, 75,242,154,155,155, 11,137, 68, 2,161, 80,136,224,224, 96,168,213,106,200,100, 50, 72,
+ 36, 18,240,120, 60,216,216,216, 64,161, 80, 0,102,142, 70, 35, 4, 52, 75,165,131, 64,192,128,207,176, 8,141,204,132, 86,199,
+ 66, 34,228, 65,192, 39, 0,101, 97, 35, 23, 64, 34,226,129, 33,132, 53,147, 19,153,185, 90,136,132, 12, 4, 66, 17, 97,244, 6,
+105,225,203,145,111,144, 74,165, 34,226, 96, 45,134, 68,248, 47,154, 22,152,188,170,175, 97,128, 64,238,233,217,103,249,138, 21,
+162,172,156, 28,244,236,217, 51, 45,226,214,173, 29,121,192,173, 86,101,212, 41,195,231,215,104,221,170, 21,130,239,220, 65,118,
+122,250,115,224,149,115,188,200,205,173,239,170, 85,171, 68,121,249,249,232,217,163, 71,198,179,203,151,119, 70,231,224,168, 57,
+ 34, 11, 0,120, 66,161,139,145, 55, 51, 61, 61, 29,120, 21, 66,194,217,209,106,201,216, 1, 29,144,173,202,199,180,239,118,176,
+119, 66,227,199, 93,138, 65,231, 95,227,144,249, 62,189,131, 9, 33, 35, 77, 23,179, 44, 90, 70,171,147, 57, 98, 69,173, 86,191,
+113, 1, 84, 81,206,226, 68, 98, 69, 57,255,141,224,243,249,249, 79,159, 62, 21, 89,219,187,177,246, 10, 65,122,229, 79, 47, 43,
+ 1,192,206,138,159,169, 53,232,216,184,184, 56,136,197,226,124,115,184,242,243,243, 71, 16, 66,190, 1,224,207,231,243,143,110,
+221,186,149,236,216,177,195,182,127,255,254, 97,132,144,216,128,128, 0,175,173, 91,183, 90, 3,192,234,213,171,233,222,189,123,
+ 59,224, 85,200,140, 18, 77,202, 9, 9, 9,243, 5, 2,193,213,177, 99,199,174, 17,137, 68,182,114,185,220,254,210,165, 75, 36,
+ 95, 75,209,112, 86,100,225, 72, 68,107, 41,131,139, 51,173, 49,114,228, 72,222,227,199,143, 23, 3, 56, 90, 10,231,116,177, 88,
+124,233,217,179,103, 43,149, 30,245, 28,229, 94,179,148,141,103, 62, 1, 0,120, 57, 8,192, 20,180,139, 25, 25, 25, 72, 78, 78,
+198,231,159,127,110, 27, 22, 22, 54, 29,192,185,146, 56, 99, 98, 98, 46,136,197,226,152, 71,143, 30,181, 22, 8, 4, 34,185, 92,
+222,240,218,181,107, 36, 95,195,162,206,244, 72,164,229,188,202,167,157, 21, 31,183,191,118,198,184,113,227,248,207,159, 63,255,
+ 14, 64,139, 98, 27, 51,134, 89,106, 42,178,166, 77,155,118, 15, 64, 21, 66,200,107, 93,163, 6,131,129, 12, 28, 56,240, 33,128,
+ 90, 83,167, 78,181,163,148, 78, 38,132,164, 81, 74, 55,254,211,247,146,181,181,245,146, 81,163, 70, 97,239,222,189, 72, 79, 79,
+ 95, 5, 0, 89, 89, 89,223,239,218,181,107,207,136, 17, 35,240,203, 47,191, 44, 33,132,252,110,134, 85,235,163,126,253,250,225,
+196,137, 19,248,227,143, 63,190,162,148,134,148,240,140, 62, 35,132, 76, 63,116,232,208, 15,253,251,247,199,207, 63,255,220, 17,
+ 64,105, 14,178,237, 58,116,232,128,227,199,143, 35, 53, 53,117, 93,113, 59,100,100,100,172, 63,124,248,112,147, 14, 29, 58, 96,
+241,226,197,237, 0,156, 53,163,129,244, 83, 42,149, 91,127,248,225,135,134,181,107,215,198,128, 1, 3,242,181, 90,109,199,169,
+ 83,167, 30,217,189,123,183, 98,251,246,237, 31,140, 28, 57,242, 6, 33,228, 51, 74,233,117,179, 94, 58, 60,222,183,107,214,172,
+ 25,222,186,117,107, 76,158, 60, 89,127,242,228,201,110,148,210, 83,132,144,176,105,211,166, 29, 91,177, 98, 5,111,249,242,229,
+195,121, 60, 94,178,193, 96,120, 91,226,250,235,213,171, 87, 55,105,223,190, 61, 94,188,120,129,235,215,175, 67,171,213,254,114,
+237,218,181,139,213,171, 87,255, 90,163,209, 28,145,203,229, 67, 20, 10, 69, 64,189,122,245, 62, 36,132,200,204,241,211, 35,132,
+100,132,133,133,201,157,156,156, 32, 16, 8,112,255,254,125, 56, 57, 57, 1, 0,146,146,146, 80,171, 86, 45,240,120, 60,100,100,
+100, 0, 48,239,101, 75, 8,243, 32, 44, 34,174,138,157, 66, 14, 24, 36,184,251, 36, 6,142, 14,182, 48, 16, 6, 9, 9,241,168,
+231,235, 1, 66, 8, 50, 82, 19, 64, 8,121,104, 14,167,129,178,193, 81,113, 73,238,246, 10, 49,106, 55,105,111,127,237,247,228,
+ 29,202,170, 45, 70,242,121,132, 39,150, 88,111, 28, 62,116,168, 3,203, 82,100,164, 38,130,207, 48, 55,223,198, 5,218, 31,133,
+232, 86, 85, 37,119,219, 15,255,166, 30,161,160,121, 90,108,255, 57, 17,233, 50,160,222,234,217,179,109,236, 29, 28, 48, 96,192,
+ 0, 54, 53, 54,246,140, 10, 48, 43,176,114,149,234,213,157,173, 20, 10, 92,185,114, 5, 60, 32, 28, 0,182, 0,126, 75,167, 77,
+179,119,114,113,193,167,195,135,179,137, 81, 81,103,243,204,232,210,125,141,183,106, 85,129,145,151, 41,224,141,231, 97,194,212,
+110,129, 98,185, 84,140,111, 55,252,138,232,148,220, 61,215,226,177,225,125, 52,118,148,105,209, 42,201,249,236,149, 83,181,172,
+ 84,177, 34,145, 72, 10,173, 41, 22,124,233,189,113,206,178,240,119,112,190, 69,229, 60,147, 16,114,136, 16, 50, 51, 58, 58, 58,
+116,248,240,225, 90,189, 86,157,125,245,155, 42, 51,238, 44,174, 60,230,218,124,215, 49,191, 77, 80,206, 80,101,166,101,175, 94,
+189, 90, 23, 29, 29, 29,106,122, 76, 25, 55, 75, 20,165,244,248,182,109,219,214,239,223,191, 31,181,106,213, 66, 72, 72,136, 83,
+110,110,110,253,135, 15, 31,218,249,249,249, 97,199,142, 29,216,187,119,239, 74, 74,233,233,210, 68,150,137,181,237, 76,124,124,
+188, 79,100,100,100, 53, 27, 27, 27,157,141,141, 13,138,142, 68,204,202, 99,145,154,145, 9, 59, 59,123, 88, 91, 91,123,151,197,
+169, 86,171,143,199,199,199,215, 96,109,125, 91,214, 72, 89,149, 25,252,109, 37, 4,127, 91, 9,199,167,187,193,213, 70,132,244,
+244,116, 36, 39, 39, 35, 57, 57, 25,132, 16,232,116,186,154,102,112,190,140,139,139,251, 41, 42, 42,234,144,179,179, 51, 20, 10,
+ 5, 40,128,132, 12, 29,238, 45,247,195,189,229,126, 72,200,208, 33, 43, 59, 27,149, 43, 87,134, 66,161,168, 85, 82,151,145,187,
+187,123,167,190,125,251, 42, 0,160, 64, 64,181,165,148,142, 41,102, 25,173,215,235,155, 27,247,157, 50,101,138, 29,128, 14,255,
+240,253,196, 35,132,140, 29, 49, 98,196, 7, 18,137, 4,107,215,174,125, 9, 96,167,177,173, 95,191,126,253, 19, 0,152, 48, 97,
+ 66, 0,128,201,164,132, 72,208, 70, 8,133,194, 6, 53,107,214,196,181,107,215, 0,224,215, 50, 78,127,224,234,213,171,168, 94,
+189, 58, 36, 18, 73,195, 50,246,245,174, 84,169, 18,158, 60,121, 2, 0,119, 75,216,231,238,147, 39, 79, 80,169, 82, 37, 16, 66,
+188,205, 40,123,247,246,237,219, 63, 56,119,238, 92,195,102,205,154, 97,248,240,225,154, 27, 55,110,116,162,148, 94,188,123,247,
+110,155,129, 3, 7,230,214,168, 81, 3, 23, 46, 92,240, 27, 56,112,224, 85, 30,143,247,141, 25,156,159, 46, 92,184,112,230,199,
+ 31,127,140,133, 11, 23,210,125,251,246, 13,160,148,158, 42,120,190, 78,238,217,179,103,240,162, 69,139,104,143, 30, 61,176, 96,
+193,130,153,132,144, 49,101, 88,135, 50, 13, 6, 3,114,115,115,205, 50,201,155,187,191,131,131,195, 71,237,219,183,199,156, 57,
+115,224,238,238,142, 35, 71,142, 80, 0, 71, 41,165,151,212,106,117, 75, 74,233,138,220,220,220,223,174, 93,187,134,118,237,218,
+ 9,241,250, 20, 35, 37, 66,175,215, 71,156, 59,119, 78,107,111,111, 15, 15, 15, 15,120,122,122, 34, 55, 55, 23, 25, 25, 25,168,
+ 85,171, 22,154, 52,105,130,220,220, 92, 28, 61,122, 84,155,145,145, 97,214,128, 21,189, 38,119,251,233, 99, 7, 51,237, 21, 98,
+120, 56, 41, 81,217,221, 14, 57, 25, 41, 72, 78,136, 67,131,154,158,104,213,160, 50, 82, 50, 53, 56,121,244, 96,122,118,182,106,
+187, 89,189, 0,106,213,214, 51,191, 31,201,180, 85, 8,225,227, 27,128,129,195, 39,212,171, 87,191,241,233, 70,141,154,159, 92,
+182,228,219, 58,109,155,214, 36, 49, 41,249, 56,113,244,215,244,204,172,172,173,111,163,173, 95, 0,240,242,149, 53, 46,174, 59,
+ 20,252,147,127,199, 17, 63,133,198, 96, 21, 0,232,120, 60,191, 78, 31,125,132,152,152, 24, 28,220,191, 63, 94, 5,220, 55,151,
+ 79, 42,149, 50, 0,144,153,153, 9,241,171,217, 66,160, 7,124, 59,119,238,140,228,148, 20,236,218,185, 51,249, 4,112,199,146,
+124,118, 5, 68, 50,233, 43,131, 96,102,102, 38, 8,144, 5, 0,132,143, 78,141,106, 85, 71,114, 90, 22,206,221, 12,205,169,156,
+135,207, 75,227,121, 87, 29,225, 75,243,209, 42,203, 30,154, 50,121,242,100,136,197, 98,184,186,186, 22,138, 35,163, 88, 17,137,
+ 68,112,117,117,133, 94,175,199,158, 61,123, 0,160, 84, 31, 6, 6, 80,119, 27,179,152, 85,235,168, 74, 32, 16,188, 17,206, 2,
+203,129,186,231,180,159,217,223,175, 22, 63, 40,166, 60,156,239, 0, 26, 21,196,196,106, 68, 41, 77,143,136,136,136,233,211,179,
+ 91,102,100,216,163,132,220,140,184,248,172,212,232,248,232,151, 15, 19,102, 77,159,156, 25, 19, 19, 19, 93, 16, 75,171, 81, 92,
+ 92, 92, 55, 0,230,250, 26, 76,238,211,167,207,143, 35, 70,140,160,247,238,221, 3, 0, 4, 7, 7, 99,232,208,161,116,240,224,
+193,171, 0,204, 40, 71,190,115,243,242,242, 94,179,134,104, 13,108, 97,151, 95, 86, 86, 22,226,226,226,160,209,104,204, 86,196,
+207, 78, 46,127,154, 22,113, 91, 23,224, 37, 71,128,151, 28,126,149,100, 32,250,156, 66,145,149,156,156,140,196,196, 68, 0,200,
+183, 32,159, 89,106,181,250,181,124,154,118, 77,102,101,101, 33, 33, 33, 1, 6,131, 65, 83,194, 67,199,198,198,198,158,220,187,
+119,111, 54, 0, 44, 91,182, 44,141, 16,242, 7, 33,228,199, 98,150, 13,124, 62,255,138,113,223,229,203,151,167, 1, 56,254, 15,
+138,172,143,107,215,174,157, 62,115,230,204,181, 19, 39, 78,196,134, 13, 27, 16, 31, 31, 63,131, 82,170, 55,150, 37, 37, 37,101,
+218,186,117,235, 48,108,216, 48,204,157, 59,119,121,253,250,245,179, 8, 33, 37,250, 87, 56, 58, 58,122,240,249,124,220,185,115,
+ 39,139, 82,250,162,140, 6, 42,225,206,157, 59,137,132, 16,184,186,186, 86, 45,109, 95, 59, 59,187,106, 10,133, 2,177,177,177,
+ 64,193, 23,115, 49,136,136,139,139,163, 34,145, 8,110,110,110,213,203, 42,191,173,173,237,180,159,126,250,137,255,232,209, 35,
+180,109,219, 54,230,194,133, 11,237, 40,165,231, 11,242,118, 39, 56, 56, 56,176, 77,155, 54, 79, 79,159, 62,141,239,190,251,142,
+212,173, 91,119, 76, 89,156, 94, 94, 94,163, 63,253,244, 83,172, 89,179, 6, 27, 55,110, 28, 67, 41,221, 95,164,204,187,215,173,
+ 91, 55, 97,227,198,141, 24, 62,124, 56,188,189,189, 75,245, 85,137,140,140,156,222,186,117,235,224,103,207,158,153, 53,227,129,
+ 57,251, 19, 66,218, 52,110,220,184, 90, 94, 94, 30,182,110,221,250,162, 90,181,106,183,246,239,223, 63,153, 82, 90,244,133,253,
+219,193,131, 7, 49,104,208, 32,212,173, 91,119, 43, 33,164,191, 25, 47,157,184,200,200,200,148,251,247,239,179, 60, 30, 15, 30,
+ 30, 30,232,212,169, 19,250,245,235,135,186,117,235, 34, 41, 41, 9, 23, 47, 94,100,195,194,194, 82,204, 13, 92,154,242,244,220,
+145,240,240,167, 87,238,220,184,168,227,243, 24,120,186,218,225,147,160,122,248,172, 87,115, 52,240,115, 71,100, 82, 30,206,158,
+ 61,173, 11, 15,127,113,205,156, 17,135, 70,206,208,144,251, 87, 31,221,185,172, 23,240, 9,252,124,107, 96,206,172,105,182,139,
+230, 77,183,169, 81,213, 19,247, 95,102,226,244,169, 19,186,184,152,232,115,111,107,196,225, 5, 64,104, 37, 38,114, 30,195,192,
+192,136,115,121, 5,129,140,107,249,251,251, 56,187,184,224,216,177, 99, 96,128,199, 22,241, 89,189,234, 5,207,201,201,129,145,
+175,154,175,175,175,167,151, 23,142, 31, 59, 6, 30,203, 62,110,101, 97,128,209, 39,128,204,148,151, 0,249,159, 87,130,162, 90,
+ 37, 39, 95, 91,165, 28, 55,238, 63,135, 90, 71,111,238, 76,135, 10,239, 33,138,118, 27, 90,210,117,184,108,195,134, 13,141,126,
+250,233,167,118,147, 39, 79,182, 26, 50,100, 8, 36, 18, 9, 84, 42, 21, 60, 60, 60, 96, 48, 24,240,251,239,191,227,246,237,219,
+ 57, 44,203,158, 70,145,176, 1,132,144, 32,211, 88, 27,191,135, 81,233,171, 32,152,170, 70,135,122,247,126, 35,156, 0, 96,245,
+156,181, 78,173,172,217,177,122,255,229, 30,187, 78,222, 33, 95,244,111,197, 52,240,173, 4, 0,112,118,118,134,181,181,181,197,
+156,111,160,210,255,118, 78,211,110,221,248,248,248, 39,132,144,164, 17, 35, 70,248, 25, 29,223,197, 98,113,126,116,116,116,168,
+ 49, 96,105,209, 99,202,202,103,193,200,184,207, 9, 33,135, 51, 51, 51, 79, 78,157, 58, 21,139, 22, 45,194,145, 35, 71, 2, 41,
+165, 87,202, 83,118, 74,169,193,219,219, 59,227,230,205,155,206,213,107,214, 71, 21, 39, 1, 90,126,245, 12,148, 82,216,203, 40,
+178, 51,210,112,247,238, 29,100,103,103,223,176, 36,159,110,110,110, 25, 73, 73, 73, 14, 78, 78, 78, 72, 75, 75, 67, 74, 74, 74,
+161,200, 74, 79, 79, 71, 90, 90, 26, 37,228,245,152, 45,101,112,230, 86,171, 86, 77, 21, 26, 26, 42,114,174, 84, 29, 85,157,132,
+104, 60,235, 9, 64, 41, 60,237, 24,100,103,101,224,218,181,107,200,204,204, 60, 95, 18, 39,203,178, 95, 14, 28, 56,144, 7, 96,
+240,212,169, 83,237, 0,212,157, 54,109,218,233,162, 35, 11, 5, 2,193,247, 59,118,236,168,101,236, 98,156, 62,125,250, 74, 74,
+233, 79,255,212,189,100,111,111,255,229,177, 99,199, 20, 90,173, 22,171, 87,175,198,202,149, 43,183, 80, 74,255, 87,164, 62,142,
+241,120,188,117, 12,195,140, 29, 55,110, 28, 70,141, 26, 37,251,224,131, 15, 38,155, 88,189, 94,227,140,141,141,157,211,160, 65,
+131,185, 73, 73, 73,102, 57,246, 63,123,246,108,100,131, 6, 13,230, 36, 37, 37, 45, 45,237, 26,201,229,114,185,193, 96, 64,120,
+120,120, 58,165, 52,179,132,107,151, 95,163, 70,141, 88,131,193,224, 33,147,201,236,202,186, 63,211,211,211,191,253,224,131, 15,
+230, 39, 38, 38,158, 2,240, 77,209, 80, 37,148,210,123,132,144,128,137, 19, 39,142, 95,178,100, 73,143,132,132,132, 61,101,113,
+ 70, 70, 70,126,219,166, 77,155,175,158, 62,125,186,173,164, 46, 96, 74,233, 90, 66,136,118,199,142, 29, 99,194,195,195, 23,151,
+198, 73, 41, 61,138, 82,186,210,139,225, 46,118,127, 83, 78, 30,143, 55,109,201,146, 37,204,134, 13, 27, 64, 41, 93,174,215,235,
+ 75,202,231,125, 30,143,183,189,121,243,230, 67,246,239,223, 47, 9, 8, 8, 24, 5, 96,119, 89,247,167, 90,173,190,126,245,234,
+213, 38, 17, 17, 17, 14,109,218,180, 17, 26, 63, 80, 50, 50, 50,112,244,232, 81,109, 88, 88, 88, 74,110,110,238,117, 75,218, 16,
+189, 38,171,255,213,179,135,118, 71, 60,123,216,180,117,199,238,182, 26,173, 7,196,169, 60,100,164, 38,224,247,163, 7,211,195,
+195, 95, 92, 83,169, 50,250, 91,194,169, 85,103,246,187,118,238,240,158,152,240,208, 38, 45,219,116,178,205,215,120, 65, 44,100,
+144,154, 24,139,223,143, 29, 74, 11, 15,127,121, 41, 95,167, 30,250,182,218,121,158, 55,190,225, 37,220, 30, 49,186,107, 61, 72,
+109, 61,238, 10,128,213,205, 1,169,131,179,179,176,224,217,129, 21, 16,105, 46,103, 34, 32,170, 94,208, 75,165, 82,169, 32, 0,
+ 52,195, 0,129,163,163,163, 20, 0,158, 62,125, 10, 25, 16,101,105, 62,115, 0,185,204,132,151, 1, 84,169,124,184, 87,179,150,
+ 19, 0,136, 73, 72,133, 70,135, 43,120, 79, 97,180,104, 21,231, 20, 95, 86,240, 69, 22,192,117, 66,200,157,165, 75,151,182,252,
+241,199, 31, 91, 77,154, 52, 73,244,209, 71, 31,225,214,173, 91, 56,115,230,140, 70,173, 86, 95, 0,112,209, 56, 92,221,140,204,
+188,113,206,253,175,246,235,211,200,157,216,105,217,188, 95,231,252,120,162, 69,101, 23, 27,170, 55,176,228,225,195,135,184,122,
+245,170,197,156,239,200,133, 5,128, 70,132,144, 67, 5, 73, 55,139,134,112, 40,232, 46,108,100, 98, 5, 43,207,169,238,242,249,
+124,234,235,235, 75, 10,166,167, 9,169, 72,190, 19, 18, 18, 6, 76,159, 62,253,212,190, 3,191,242, 15,142,147, 34, 51, 35,243,
+ 85, 3,156,153,129,212,196, 56,156, 61,123, 86,155,156,156, 60,202, 18,206,228,228,228,207,251,247,239,191,111,247,238,221,118,
+233,233,233,133, 66, 43, 61, 61, 29, 44,203, 98,203,150, 45,201,137,137,137,179, 45,225,140,143,143, 31, 62,117,234,212, 3,187,
+246, 28,224,159,158, 97,139, 28, 99,244,249,220, 76,164, 38,197,227,200,145, 35,234,148,148,148,137,165, 92, 31, 3, 33,228,139,
+129, 3, 7,194, 40,182,174, 93,187, 54,129, 16,178,214,248, 50, 39,132, 84,249,242,203, 47,251,155,248,113,173,252,167, 71, 29,
+166,166,166, 46,106,210,164,201,202,228,228,228,151, 90,173,118, 63,165,180,216, 40,253, 6,131, 97, 28, 33,228,234,218,181,107,
+251, 57, 56, 56, 56, 39, 36, 36, 44,177,244, 69, 95,209,253,163,162,162,102, 54,104,208, 96, 86, 82, 82,210,146,210,246,123,254,
+252,249,216,130,253,150,154,113,238, 99, 0,142,149,177,143, 30,175, 66, 91,124,111,102,121, 14, 1, 56,100,102,227,188,233,109,
+180, 31, 6,131, 97, 89,237,218,181, 37,122,189,254,116, 89,254,128, 44,203,142,156, 52,105, 82,204,148, 41, 83,234, 25, 12, 6,
+115,235, 64, 7,224, 18, 33,196, 45, 37, 37,197, 27,128, 13, 0,240,249,252,140,140,140,140,114, 77,193, 83, 16,241,189,139,131,
+ 79,187,174,251,183,173, 25, 70, 89, 67, 93, 66, 8,120, 12,239, 94,118,142,106,171,185,150,172, 98, 56, 59, 59,248,180,235,154,
+ 24, 27,249, 41,101, 13,117, 1,194,242,249,204,253,236, 28,213,230,228,208,211,111,109, 10,158, 33,238,112,230, 17,140, 59,245,
+243, 87, 4, 0,218,125,250,117,189,202, 54,176,210,103, 32, 3, 5,109,121,124,124, 60,108,129,116,115, 57,101,128, 94, 91,224,
+ 19,157,158,150, 6, 25,144, 23, 15,240, 10,252, 46, 73, 98, 66, 2,172, 44,224, 43,252, 96, 4,180, 69,120, 51, 1,136,141,238,
+156,105, 89,185,128,249,113, 13,223, 73,139, 86,209,223,133,130,139, 82,106,246,130, 87,243,235,125, 2, 96,113,193, 90, 94,198,
+254, 65,111,131,179,137, 43,124,130,170,145,208, 78,190,252, 52, 0,189,222, 4,167,165,203,223,205, 9, 96,155, 70,163,161,249,
+249,249, 84,165, 82,209,156,156, 28, 10,224, 80, 49,199, 28,138,139,139,163, 49, 49, 49, 52, 42, 42,138, 70, 68, 68, 80, 0, 59,
+ 45,205,167,181,181,245, 79,189,123,247, 54, 8, 4,130, 53,111,162,236,118,118,118,139, 27, 55,110,172,253,225,135, 31,232,111,
+191,253, 70, 55,111,222, 76,199,141, 27, 71,107,213,170,165,182,177,177,233, 95, 30, 78, 23, 23,151, 57,190,190,190,169, 91,182,
+108,161, 59,119,238,164,171, 86,173,162,179,103,207, 54,120,120,120, 36, 40, 20,138, 14,229,225,116,114,114,218,212,162, 69, 11,
+237,166, 77,155,232,233,211,167,233,174, 93,187,232,151, 95,126, 73,253,252,252,212,114,185,188,167, 57,156, 0,120,124, 62,127,
+197,232,209,163, 19,220,220,220,142, 21,217, 38,243,247,247,191, 53,112,224,192, 56, 0,211,223,151,251,147,227,228, 56, 57,206,
+138,115, 14,118,135, 91,187, 42,208,211,139, 95, 81,122,241, 43, 26, 84, 5,236, 0, 55,184, 83,128, 39, 19, 10,251,181, 10, 12,
+ 92, 46, 4,250, 81,128, 87,236, 82, 92, 62, 1,158,132,199,235,213,188,113,227,229, 66,160,191,113, 95, 9,143,215,171, 85, 96,
+224,114, 1,143, 55,168, 68,190, 82, 56, 41,192, 19,242,249,211,155, 55,109,186,130, 15,204, 50,166,125, 88,133, 60,254,178, 99,
+ 37, 26,232, 69,158, 15,114,130,172, 52,206, 18,234, 99,228,155,174,227,127,122, 41,239,141,192,127,211, 55,225,187,194,249, 47,
+ 18, 90,213, 11,186,109, 14,153, 44, 51,139, 57,102,102,145,125,182, 1,168, 94,206,250,148,190,201,178, 3,168,237,224,224,112,
+162,122,245,234,201,149, 43, 87,142,179,181,181,221, 13,192,163,130,156, 1, 46, 46, 46,191, 56, 59, 59, 63,115,117,117,189,239,
+224,224,240, 61, 0,199,138,112, 10, 4,130,198,206,206,206,231,189,189,189, 51,188,188,188, 18, 29, 28, 28,246, 0,112,182,148,
+ 19,128, 43,138,105, 84, 0, 8, 1,184,114, 47, 29,142,147,227,228, 56,139, 10,152,246, 85,177,164, 93, 21,232,219, 85,129,161,
+189, 55,190, 55, 21, 40, 93, 0,105,121, 69,209, 80, 64, 92,116,255, 50,249,202,224,164, 0,175, 25, 96, 85,244,152, 78, 30,240,
+ 55,135,243, 93, 22, 90,198,124, 22,180,243, 35, 77,243,205, 47,143,137,204,232, 36,251,134,187,193,222, 9,206,127, 81,183,225,
+115,160,236, 96,111,166, 17,228,223,192, 57,243,222,112, 25, 30, 0,248,232, 13,115, 62, 2, 48,248, 77,114,106,181,218, 27, 48,
+115,222,183, 50,242, 22, 95,138, 47, 92, 60, 56,112,224,192,225,245,198,193,112, 18,152,209,206,135,172,230, 27,192,156,120, 65,
+ 99, 77, 55, 31,249, 51,240,177, 69,156, 0,176,181,152,233,121,202,197,103,194, 9, 0, 87,128,191,204,238,112,172,130,238, 38,
+239,216,187, 57, 30,192, 38,139,226,104,113,224,192,129, 3, 7, 14, 28,222, 30, 78, 63,165,220,135,216,191, 31,199,138,204,113,
+ 88,232,247, 73, 0, 4,149,160,202,204, 30, 73, 65, 8, 9, 42,135,234, 59,195,113,114,156, 28, 39,199,201,113,114,156, 28,231,
+127,139,211,132,187,164,129, 21, 79,138,240,189,149, 1, 35,111, 10,196,252,105,203,202, 65,254,142,134, 77,224, 56, 57, 78,142,
+147,227,228, 56, 57, 78,142,243,159,229,124,167,197,212,235,214,172,215, 4, 34,215,117,200,129, 3, 7, 14, 28, 56,112,224, 80,
+ 1,148,102,117,227,132, 22, 7, 14, 28, 56,112,224,192,129, 67, 5, 64, 8,113,197,171, 41,170,142, 21,172, 57,139, 22, 7, 14,
+ 28, 56,112,224,192,129,195, 27, 66,103, 74,233,166,226, 34,195, 51, 92,221,112,224,192,129, 3, 7, 14, 28, 56, 84, 12, 70, 63,
+ 45, 75,231, 58,228,192,129, 3, 7, 14, 28, 56,112,224, 80, 10, 74,243,209,122,109,212,225,177, 99,199,104,231,206,157, 9, 87,
+101, 28, 56,112,224,192,129, 3,135,183,129,119, 81,139,152, 88,176,142, 21, 13, 78,205, 89,180, 56,112,224,192,129, 3, 7, 14,
+ 28, 42, 0,163, 69,171,160,219,240,181, 52, 78,104,113,224,192,129, 3, 7, 14, 28, 56, 84, 0,165, 89,180, 24,224,149,153,142,
+171, 38, 14, 28, 56,112,224,192,129,195,219,194,187,172, 69, 40,165,155, 10,150,191, 76,151,100, 28,117,216,186,160,128,173,185,
+ 75,205,129, 3, 7, 14, 28, 56,112,120, 11,120,103,181, 8, 33,196,181,160,219,208,245, 47,219,254,206, 41,120, 56,112,224,192,
+129, 3, 7, 14, 28,222,119, 24,227,103, 21, 23, 71,139, 19, 90, 28, 56,112,224,192,129, 3, 7, 14, 21, 20, 90, 69,211, 10, 29,
+228, 57,161,197,129, 3, 7, 14, 28, 56,112,224,240,247,224,111,141, 12, 79, 8, 9,226, 56, 57, 78,142,147,227,228, 56, 57, 78,
+142,147,227,124,223, 97,140, 8, 95,212,186,197,133,119,224,192,129, 3, 7, 14, 28, 56,112,168,160,200, 50,245,205, 50,253,207,
+205,117,200,129, 3, 7, 14, 28, 56,112,224,240, 55,129,179,104,113,224,192,129, 3, 7, 14, 28, 56, 84, 0,198, 17,135,166,255,
+ 57,161,197,129, 3, 7, 14, 28, 56,112,224,240, 6,197, 86,113,233, 92,215, 33, 7, 14, 28, 56,112,224,192,129, 67, 5, 80,212,
+ 1,222,244, 63, 1, 16, 84,130, 50, 59, 99,193, 9, 44, 30,125, 80, 22, 63,199,201,113,114,156, 28, 39,199,201,113,114,156,239,
+ 31,103, 89,220,150,232,143,127,147,208, 42,201, 25, 30,148,210,191,109, 1, 16,196,113,114,156, 28, 39,199,201,113,114,156, 28,
+ 39,199,249, 62, 47, 0, 92, 1,140, 52, 89, 92,141,219, 56, 31, 45, 14, 28,222,117, 28, 32, 60,164,251,122,131, 82, 55,240, 68,
+241,136,127,240, 2,243, 40, 91, 97,206, 68,127, 47, 72,117,206,208, 75,146,145,120,255,101,133, 57, 57,112,224,192,225, 61, 69,
+193,100,210,197,250,104,113, 66,139, 3,135,119, 29,201,126, 62,224, 99, 49, 24,184,130,106,195,224,232,191, 24,192,195, 10,115,
+ 10,217,111, 96, 96, 60, 64,181, 79,225,228,187, 4, 64, 8, 87,217, 28, 56,112,224, 96, 25,254,113,103,120,129, 64,144, 72, 8,
+ 97,197, 98,241,193,226,102,185,230,192,225, 77,129, 16,226, 42,149, 74, 15, 18, 66, 88,161, 80,152,248, 94, 22,114, 71,109, 25,
+ 24,195, 71, 26, 29,235,254,251,131, 12, 39,149,218,224, 3, 70,223, 9, 63,251, 88, 85,136,147, 79,218,231,107, 89,207,157, 55,
+ 85,206,185, 26,125, 77, 80, 84,140,243,207,107, 98, 35, 18,137,126, 39,132, 56,112,119,232,251, 9,127, 66, 62,104, 40, 16, 76,
+169, 73,200,135,132, 16,194,213, 8, 7, 78,104,253,195,208,235,245, 78,209,209,209,100,243,230,205,221,172,173,173,195, 4, 2,
+193, 76, 66,136,240,191, 82,225, 10,133,226,170, 82,169, 76,180,177,177, 73, 84, 42,149,119,202, 74,127, 79, 5,144,143,147,147,
+ 83,164,189,189,253, 83,211,116,167,186, 61,154,213,104, 49,100,158, 67,192,199,173, 42,200, 47, 20, 8, 4, 51,149, 74,101,216,
+166, 77,155,186,133,134,134, 18,157, 78,231,244, 94, 86,102, 62,235, 12,134,215,230, 81,188, 74, 22,159,165,115, 14,142, 80, 41,
+ 0, 94,107,104, 80,254,143,152, 76,214, 25,160, 31,222,139,201,147, 95, 77,115,116,190,244, 66,109, 13,134,105,131,124,226, 82,
+225, 6,135, 97,198,176, 44,219, 78, 40, 20,126,193, 53,191,239, 39, 68, 12,211,252,106,183,110,223, 76,175, 83,103,188, 31,208,
+181, 56,177, 69, 94, 97, 66,205,154, 53, 79, 16, 66,250,189,193,182,229, 59, 63, 63,191, 88, 66,200, 68,238, 74,112,248,135,223,
+107,245,141, 31,248, 5,211,240,184, 90, 44,180,122, 87, 33,205, 7, 84, 37, 23,250, 86, 33,217,253,170,146,156,193, 85,201,229,
+ 94, 85,200,135,229,201,144,135,135, 7,154, 53,107,198,139,138,138,146, 78,156, 56,113,158, 88, 44, 14, 39,132,116, 40, 15,151,
+ 76, 38,187, 45,151,203,163, 5, 2,193,107,121,145,203,229,183,173,172,172,162, 5, 2, 65, 91,211,116,107,107,235,171, 74,165,
+ 50,209,218,218,250, 78, 9, 66,232,182, 82,169, 76, 84, 40, 20,183, 77,211, 5, 2, 65, 91,133, 66, 17, 99,109,109, 93, 52,253,
+ 67,107,107,235,232,162,233, 37, 65, 32, 16,120, 68, 71, 71, 59,197,196,196, 56,137, 68, 34,103,211,244,168,168, 40,167,232,232,
+232,215,210, 45,129, 64, 32,248,208,202,202, 42, 90, 46,151,223, 46, 46,189,104,153, 74,130, 73,221,125,104, 78,186,165, 34,171,
+125,251,246,151,227,227,227, 61,109,108,108,108, 76,183,217, 41,109, 58,252,178,101,221,228,238,157,218,143,113,242,255,164,118,
+ 57,249, 59,136,197,226,240, 73,147, 38,205,139,137,137,145, 54,110,220,152, 39, 20,190,167, 58,254,128,191, 16,132,109,201, 82,
+234,248, 56, 54,223,177,115,183,222,252,187,209,121,142, 58,131,193, 14,224,181,198,182,202,226,114,113,242,117,129, 44,165,206,
+127, 68, 8, 28,219,244, 25,207, 59, 27,193,119,212, 25, 12,246, 96,208,170, 92,156,127, 94, 27, 1,143,199,155,188, 98,197, 10,
+ 6,192, 56, 66,136,232,191,212, 16, 55,118, 39,238,109,171,243,111, 54,112, 35,205,223, 96,227, 30, 32,151,203,111, 19, 66,124,
+254, 45,229,212,176,236,147, 61, 47, 95,158, 28, 84,173, 90,151,233,117,234, 12, 43, 42,182, 10,126, 79, 95,178,100,201,224, 71,
+143, 30, 57, 86,169, 82,101, 20, 33,132,121, 3,117,177,106,201,146, 37,211, 30, 61,122,228,230,237,237,189,224, 77,112,114,248,
+119,105,120, 0,109, 0,116, 6,208, 22, 64,163,130,223, 13, 11,150,206,120, 21, 69,193,116,221,176,224, 88,227,246,198, 37,112,
+116, 46,230,184,134, 38,233,166,255,139,254, 54,162,126,193,186,115,193,104,195,206,133, 91, 40,165, 56,122,244, 40, 53, 93, 23,
+ 93,250,122, 99,254,248,102,238,170,199, 71,118,209,156,232,151, 52, 61,244, 46,189,187,233, 91, 58,190,161,163,106, 64, 21,124,
+103,161,103, 62,165,148,210,157, 59,119,210,179,103,207,210,140,140, 12, 26, 18, 18, 66, 27, 53,106,148, 39,147,201,254, 0,224,
+109, 9,159, 66,161, 72,252,227,143, 63,104,251,246,237, 51,173,172,172,150, 3, 96, 40,165,176,182,182, 78,188,114,229, 10,109,
+223,190,125,166, 66,161, 88, 5,128, 71, 41, 69,207,158, 61,147, 40,165,212,209,209, 49,174, 56,190,238,221,187,167, 83, 74,169,
+ 82,169, 76, 44,200, 47, 79,161, 80,172, 26, 59,118,108,206,173, 91,183,168,173,173,173, 49,157,177,182,182, 94, 62,110,220,184,
+156,224,224,224,194,244,178, 22, 59, 59,187,104,131,193, 64,143, 28, 57, 66,157,156,156, 10,243, 96,107,107, 27,109, 48, 24,232,
+161, 67,135, 74,204, 91, 41,117,202, 88, 89, 89, 45, 27, 52,104, 80,118, 68, 68, 4,181,183,183, 79, 52, 73, 95, 62,100,200,144,
+236,168,168, 40,234,224,224, 96, 86, 30,237,237,237, 19,175, 94,189, 74,123,244,232,145,101, 90,167,246,246,246,137,215,174, 93,
+ 51,166, 47, 51,166,151,182,184,185,185,141,114,114,114,138,115,114,114,138,179,177,177, 89,228,234,234,154,144,156,156, 76, 41,
+165,180,106,213,170, 73,148, 82, 56,214,249,164, 89,245,230,131,231, 57, 5,116,155,180, 97,255,181, 27, 23, 31,166, 38,215,105,
+ 55,102,153,178, 78,119,165, 5,117,224, 45,145, 72,254,104,217,178,101, 94, 68, 68, 4,205,201,201,161,183,111,223,166,151, 46,
+ 93,162,143, 31, 63,166, 5,247,221,251, 53,210,101,157,191, 7,221,232,187, 39,100,174,103,232,197, 37, 29,117, 52,226, 44,221,
+ 53,204, 81,119, 97,146,123, 24,253,209,239,127,116, 99,205, 74,229,226,252,177,230,174,251,179, 61,159,172, 89, 48, 65, 23, 25,
+ 25, 73,167, 12,233,168, 63, 53,222,253, 5,221,224,183,191, 92,156,127, 94,163,254,159,124,242, 73, 78, 84, 84, 20,245,247,247,
+207,229,241,120,195,255, 43, 35,146, 26,185,193, 61,200, 71, 20,123,127,231, 20,182,107,128, 44,181,190, 43,154,191,129, 81, 78,
+ 1, 78, 78, 78, 41,219,182,109,163, 10,133, 34, 9,128,207,191,100,244, 21,241, 3,186,109,175, 83,231, 16,219,171,151, 97,123,
+157, 58,135,252,128,110,120, 21, 78,136, 0,152,177,116,233,210, 96,157, 78, 23,188,117,235,214,224,110,221,186, 5, 3,152, 82,
+193,115,254,240,221,119,223, 81,157, 78, 71,183,110,221, 74,187,117,235, 70, 1,172, 54,247,120, 43, 43,171,234,181,107,215,222,
+225,239,239, 31, 85,183,110, 93, 77,205,154, 53,243,125,124,124, 34, 2, 2, 2,182,137,197, 98,111,110, 84,221, 63,179,148,161,
+ 69, 26,205,152, 49, 99, 38, 0, 58, 99,198,140,153,148,210,206, 5,237,122,103,211,223, 69,215,148,210, 32,211,255,197,113, 24,
+151,226, 56,139, 59, 71,145,223, 69, 71, 29,186, 22,252, 31, 89,184,205, 88,168,163, 71,143,182, 58,122,244,232,133,162,133,235,
+ 93, 5,205,198, 55,115,207,203, 75,142,167, 15,191,253,130,158,107,227, 65,175,180,118,161, 79, 39,127, 66,227,119,174,162,159,
+215,179, 85,245,170,130, 54,150, 10,173,131, 7, 15,210, 67,135, 14,209,227,199,143,211,135, 15, 31,210,212,212, 84,186,115,231,
+ 78,131,189,189,125,158, 88, 44, 94, 2, 64,106, 14,159,181,181,117, 34,165,148,170,213,106,186,104,209,162,124,133, 66,113, 7,
+128,115,129, 80,162, 25, 25, 25,116,201,146, 37,249, 74,165,242, 62, 0, 55, 7, 7,135,232,151, 47, 95, 82,103,103,231, 98,197,
+140,173,173,109,226,147, 39, 79,168,173,173,109, 34, 0,119, 91, 91,219,135,135, 15, 31,214, 82, 74,105, 76, 76, 12,181,179,179,
+ 75, 4,224,108,111,111,127,247,232,209,163, 90, 74, 41,141,139,139,163,118,118,118,102, 11,173,188,188, 60,122,234,212,169,215,
+242, 96, 76, 63,113,226,196,107, 2,204,140,250,116, 86, 42,149,193,123,247,238,213, 24, 12, 6,250,240,225, 67,170, 84, 42, 19,
+ 1, 56,219,216,216,220,217,191,127,191,198, 96, 48,208,208,208, 80,179,197, 96,229,202,149,147, 40,165, 84,175,215,211, 13, 27,
+ 54,168,141,117,106, 76,215,104, 52,116,253,250,245,106,107,107,235, 96, 0,206,165,113, 57, 56, 56,196,105, 52, 26,154,145,145,
+ 65, 27, 55,110,156,115,229,202, 21,154,149,149, 69, 41,165,180,128, 15,190,173,134,127,125,227, 89, 78,214,167,211,214,237,243,
+110, 52,224,219,147, 55, 99, 99,126,250,237,118,176, 67, 64,247,142,102,148, 95, 42, 20, 10,151,184,186,186,230,159, 61,123,214,
+160,209,104,232,243,231,207,233,213,171, 87,233,245,235,215,233,237,219,183,233,195,135, 15,223, 63,161,181, 31, 60,186,209,183,
+ 59,221,232, 27,188,109,144, 67, 74,246,157,221,148,158,158, 72, 95,124, 93,133,206,237,168,200,102, 55,250, 6,211,141,126,189,
+232,252, 86,124,139, 56, 55,213,236, 74, 55,250, 6,127,215,219, 43,245,110,240, 45,122,225,194, 5,186,126,213, 82, 58, 62,200,
+ 61,151,221,232, 27, 76,127,172,217,195, 34, 78,147, 69, 44, 22, 63,187,124,249, 50,189,120,241, 34, 93,176, 96, 1,149,201,100,
+ 81, 21,175,135,154, 66,250,163,143, 23,221,236,211,138,110,169,225, 74,207,151, 47,111,127,183,200,106,231, 35,138, 73,185,251,
+ 27,165,105,207,105,194,114,127,218,209, 87, 80, 33,177, 85, 32,178,146, 35, 34, 34,104, 66, 66, 2, 93,185,114, 37,181,182,182,
+254, 87,139, 45, 95,160, 59,128,153,203,150, 45, 43, 20, 89,235,214,173, 11,126,240,224, 65,176,167,167,231,241, 10,156,107,245,
+178,101,203, 10, 69,214,186,117,235,232,131, 7, 15,168,151,151, 87,116, 89,199, 14, 26, 52, 72,214,172, 89,179,224,129, 3, 7,
+170,182,109,219, 70, 35, 34, 34,232,253,251,247,233,178,101,203,232,188,121,243,232,207, 63,255, 76,123,244,232,145,219,184,113,
+227, 27,189,122,245,146, 88,152, 55, 62,165, 84, 84,176, 8, 40,165, 70,161,201, 7, 32, 48,126,252,115,203,235, 66,171, 36, 45,
+ 82,146,152, 42, 73, 96, 21,221, 86,138, 16, 43, 85,176,149,117,190,162,162,170,184,197,212,180,122,190,115,231,206,127,241,141,
+225, 83, 44, 28,249,229,215,146,240,109, 43,145,184,119, 45,120, 25,137, 16,100,167, 66,125,249, 24,116,151, 15, 99,112,211,166,
+ 82, 41, 33,223, 88,106, 3,148, 72, 36,144, 74,165, 16,139,197,200,200,200,192,139, 23, 47,208,172, 89, 51,230,246,237,219,146,
+145, 35, 71, 78,148, 74,165, 81,132,144,143,205, 48, 23, 3, 0,174, 94,189,138, 17, 35, 70,136,119,236,216, 81,215,209,209,241,
+158,193, 96, 16, 1, 64,104,104, 40,250,246,237, 43,222,189,123,119, 45, 55, 55,183, 59, 90,173, 86, 38, 22,139,193,227,241, 74,
+228, 19,137, 68,208,233,116,226, 26, 53,106,220,191,119,239, 94, 64,151, 46, 93, 4,145,145,145,120,249,242, 37,116, 58,157,200,
+199,199,231,193,157, 59,119,234,118,238,220, 89, 16, 29, 29,141,200,200, 72,152,235,243, 73, 8,129, 70,163,129, 88, 44, 6,195,
+ 48,175,165,171,213,106,136, 68, 34,179,185, 4, 2,193,135,126,126,126, 15,238,221,187, 87,191,123,247,238,194, 91,183,110, 33,
+ 38, 38, 6, 6,131, 65, 84,179,102,205, 7,247,238,221,171,215,173, 91, 55,225,253,251,247,145,152,152,248,218,249,202,240,163,
+ 1, 0,220,187,119, 15, 3, 7, 14, 20,253,254,251,239,245, 92, 93, 93,239,235,245,122, 17, 0, 60,120,240, 0,125,251,246, 21,
+157, 60,121,178,126,165, 74,149,238,151,209,149,200, 3, 0,157, 78,135, 81,163, 70,201,173,173,173, 17, 29, 29, 13,150,101, 97,
+ 48, 24, 0, 0,169,233,169, 15,238, 61,120, 24, 58,184,127,239, 86,121, 90,181,250,218,205,219,143,171, 86,246,242, 32,132, 86,
+ 46,163, 46, 63,150,201,100, 81,223,125,247,221,164,240,240,112,177,175,175, 47,115,255,254,125,100,100,100, 64, 36, 18, 65, 34,
+145, 64, 44, 22, 67, 32, 16,188,127, 70,244, 44,127,123,176,104, 23,153,172, 17,139,109, 60, 20, 86,174, 62, 64,212, 69, 84,113,
+ 20,131,199,240, 36,183, 94,170,228, 0,109, 7,207, 20,123,203, 56,217,118, 47,147, 52, 98,157, 93, 45, 43, 55, 15, 79,164,166,
+166,162, 82, 85, 63,228,139, 28, 69, 87,159,231, 90,129, 88,200,249,231,181, 10,172, 81,163,134, 75,245,234,213,145,146,146,130,
+250,245,235,195,214,214,214,150, 16,210,174,220,117,176,173,178, 24, 89,104, 14, 48,203, 97, 32, 11,160,227, 47,198,243,228,250,
+216,212,224, 95,115,193, 27,187, 19,119,107, 43,209,245,221,123,246,186,219,123,214, 4,142,125, 10,103, 27, 49,182,140,169,111,
+231,168, 20, 31, 42, 79, 55, 34, 33, 36,192,217,217,249,236,141, 27, 55, 28, 36, 18, 9,238,220,185, 3,127,127,127,172, 92,185,
+210,209,214,214,246,226,191,161, 27,145, 82, 74, 67,129, 35,223,221,191,191,117, 71, 88,216,209, 65,213,170,117, 25,232,227,179,
+104,116,191,126,195, 39, 76,152,128,165, 75,151,226,208,161, 67,104,222,188, 57, 70,142, 28,169,139,138,138,218, 94,206,238,194,
+181,203,151, 47, 31, 63,113,226,196,162,156,218,200,200,200,239, 74, 59, 54, 32, 32,192,227,217,179,103,177,147, 39, 79,174,191,
+ 99,199, 14,169, 76, 38, 67, 70, 70, 6, 54,111,222,140,153, 51,103,130, 16, 2, 74, 41,126,254,249,103,217,176, 97,195, 26,133,
+133,133,197, 86,174, 92,217, 28,183, 14, 2, 64, 2, 64, 86,176,200, 1,200,118,239,222,173,236,222,189,187,117, 65,154, 20,128,
+148, 16, 34, 6,135,162, 40, 86,139,152, 92,243,163, 69,238,181, 46, 69,211,138,110,163,148,118, 41,141,195,194,123,187,184,243,
+ 29, 43, 26, 25,254,181,119,170,201,239,214,199,142, 29,187,240, 23, 82,160,142,139,183, 47, 50, 79,239,135,148, 79, 32,229, 21,
+ 44,124, 2,230,197, 3, 84,146, 8,160,163, 52,160, 60, 66,203, 40,182,164, 82, 41,132, 66, 33,114,114,114,160,211,233, 48,107,
+214, 44,241,233,211,167,237, 25,134,249, 95, 89, 60,166,130,233,233,211,167,168, 89,179, 38, 57,114,228,136,243,184,113,227,164,
+ 0, 32, 18,137,144,153,153,137,234,213,171,147, 19, 39, 78, 56,205,158, 61,219,170, 52, 49, 67, 8,129, 80, 40,196,196,137, 19,
+165, 55,111,222,180,115,115,115,195,139, 23, 47,144,150,150, 6, 43, 43, 43, 76,156, 56, 81,122,227,198, 13, 71, 55, 55, 55, 68,
+ 68, 68, 32, 51, 51, 19, 86, 86, 86, 22, 11, 45,161, 80,248,218, 49,132, 16,104,181, 90,136, 68, 34,179, 5,145, 82,169,220, 21,
+ 28, 28,236,168, 84, 42,113,255,254,125,232,245,122, 40,149, 74,140, 31, 63, 94, 26, 28, 28,236,104, 99, 99,131,208,208, 80,163,
+229,207,162, 60, 2, 0,203,178, 8, 13, 13, 69,229,202,149,113,241,226, 69,167,209,163, 71, 75,140,233,207,159, 63,135,135,135,
+ 7, 46, 94,188,232, 36,151,203,119,149,196,197,178, 44,226,227,227,241,232,209, 35,188,120,241, 2,201,201,201, 72, 73, 73, 65,
+118,118, 54,244,122,253, 43, 63,187,236,172, 99,187,247, 29,185, 39,149, 74,101,254, 62, 53, 60, 31, 60, 12, 73,146, 74,165, 50,
+ 47, 79, 79, 31, 66, 22, 48,165,228,243,127, 97, 97, 97,246,195,134, 13, 19, 62,123,246, 12,113,113,113, 16, 8, 4,133,247,150,
+113, 17,139,223,179,182,140, 16, 2,162,169, 1, 66,234, 95,127,145,107, 23,216,165,191, 16, 47,127, 7, 88, 29,192,240,209,186,
+142, 7,255,208,131, 92,103, 80,212,129, 26,126,128, 25, 23,158, 16, 2,104,171, 3,228,131, 83,207,244,246,205, 63, 25, 35,140,
+141,141,133, 80, 40,132, 88, 44, 70,253, 15,123,242,119,223,211,185,128,160, 46,180,240, 53,139,211, 4, 82,169,244,171,121,243,
+230,201, 77, 57,135, 15, 31, 46, 87, 42,149,243,202, 45,178,114,101, 77,161,167, 19, 31,197,170, 42, 47, 58,150, 80, 51, 44, 41,
+207, 23,148, 78, 6,116,245, 42, 42,182, 8, 33,173, 37, 18,201, 75, 66, 72,139, 10,137, 44,133,232,218,158, 61,123,221,237, 42,
+189, 18, 89,208,231, 3, 2, 41, 92, 28,109,176,101, 82, 27, 59, 71, 27,169, 69, 98,171, 64,100,253,113,253,250,117, 7,137, 68,
+130,224,224, 96, 8,133, 66, 72, 36, 18,212,174, 93, 27, 27, 55,110,116,180,179,179,251, 87,137,173, 37,247,239,111, 91,252,232,
+209,211, 25, 1, 1,126, 31,203,229,118, 99, 7, 14, 84,206,158, 61,251,232,225,195,135,183,118,238,220, 57,229,230,205,155,223,
+ 83, 74,247, 91,120,125, 8, 33,100,221,138, 21, 43,198, 26,133,219,236,217,179,127, 62,124,248,240,226,206,157, 59,199,223,188,
+121,115, 50,165,116, 93,105, 28, 57, 57, 57,135,231,204,153,163,252,228,147, 79,140,255,113,249,242,101,108,223,190, 29,114,185,
+252,181,125,187,117,235,134, 17, 35, 70,216,106, 52,154, 82,223, 73,206,206,206,109,175, 95,191,238, 15, 64, 8, 64,108, 20, 90,
+ 15, 31, 62,180,201,202,202,178,177,178,178,178,113,117,117, 85, 24,197,214, 39,159,124, 98, 35, 16, 8, 90,128, 3,202,210, 34,
+166, 66,199,156,180,242,238,111,174,216, 42,242, 63,190,164,121, 14, 95, 19, 90,157, 59,119,190, 0,160,101,113, 59,105,211, 18,
+ 33,134, 1, 82, 30,129,140,103, 34,182,192,130,159,153,132,242, 12,224, 45,250, 50,148, 74,165,144, 72, 36, 16, 8, 4,208,233,
+116,200,204,204,180, 72, 20, 88, 91, 91,195,202,202, 10,121,121,121,208,235,245,144, 72, 36, 70, 49, 2,107,107,107, 8, 4,130,
+194,151,112, 81,107, 82, 81,107,142, 80, 40,132, 92, 46, 71,124,124, 60, 34, 35, 35,193,178, 44,172,172,172, 32,151,203, 33, 18,
+137, 16, 23, 23,135,184,184, 56, 80, 74, 33,151,203, 33,151,203,205, 22, 71, 0, 96, 48, 24, 32, 18,253,213, 15, 88,167,211, 89,
+100,209,210,235,245,120,252,248, 49,162,162,162, 32,145, 72, 10,203, 42, 22,139,241,252,249,115, 36, 36, 36, 64, 38,147,193,218,
+218, 26, 74,165,210,108, 94, 99, 89, 20, 10, 5,164, 82, 41,210,211,211,161, 82,169, 10,235,212,218,218, 26,114,185, 28,153,153,
+153, 72, 74, 74, 42,181,236, 6,131, 1,113,113,113, 72, 78, 78, 70,116,116, 52, 82, 82, 82, 10,197, 22,203, 86, 60,254,229,197,
+139, 23,241,226,197, 11, 99,215, 84,225,245, 53, 93, 27,243,253,222, 96,125,128, 18, 58, 65,251,148, 28,157, 56, 89, 43, 84, 58,
+ 7, 4, 1, 47, 79, 0, 12, 31,144,216,162, 73,173, 42,136, 76, 55,200,159, 36,106, 36, 32,232,128,117, 62,182,102,113, 26, 4,
+237,146,179,117,226, 8,173,163,117,205, 58, 13,144,152,152, 8,177, 88, 12,177, 88,140, 15,154, 7,225,101,170, 65, 22, 18,155,
+ 39, 3, 69,123,179, 56,255,124, 70,171, 90, 89, 89, 53,109,209,162, 5, 49,229,236,212,169, 19, 8, 33,181, 9, 33,126, 22,149,
+127, 77, 53, 17,180,178, 38,224,211,137, 33,241, 42,183, 67, 15,243,125,186,126,220,211,238,135, 51, 73, 53, 31, 39,168,189, 65,
+117, 95,130,106, 27,148, 87,108, 17, 66, 90, 41, 20,138,163,107,214,172,241,150, 72, 36, 39, 8, 33,129,229,225,177,146,242, 54,
+124, 53,182,191,187,173, 81,100,233, 84, 0, 95, 10, 8,164, 0, 95, 10, 23, 39, 7,124, 51,162,157,157, 76, 34, 56,104,129, 96,
+221,189,110,221, 58,199,162, 34,203,184,212,175, 95, 31,115,231,206,117,180,179,179,219,245,150,191, 5,218,219,216,216,236, 8,
+ 10, 10,186, 30,167, 80,140,136,111,208, 64,244,135, 82,153,217, 54, 51, 83,233,245,240,161,214, 23,120, 0, 96,125,116,116,116,
+ 71,115, 69, 22, 33,164,159, 82,169, 12, 14, 10, 10,210, 42, 20,138,168,149, 43, 87,126, 62,110,220, 56, 44, 93,186, 20,115,230,
+204,217, 12,224, 51, 74,233,172,232,232,104,183,178, 68, 22, 0, 36, 36, 36, 12,152, 62,125,122, 74, 74, 74, 10, 0,160,118,237,
+218,200,200,200,192,148, 41, 83,240,197, 23, 95, 0, 0,234,213,171, 7, 74, 41, 18, 19, 19,177,124,249,242,196,132,132,132,161,
+101,180,237,209,251,247,239,111,164,213,106, 61, 10,186, 7,197, 25, 25, 25,214,105,105,105, 10,173, 86, 43,103, 89, 86,110, 99,
+ 99, 99, 5, 64, 54,120,240, 96,126, 72, 72, 72, 77,189, 94, 31,203,105,171, 63, 81,154, 22, 41, 39,142, 85,196,114, 85,156, 69,
+172,132,251,179,116,139, 86,231,206,157,137,233,250, 53,139, 17,193,253,168,219, 23, 97, 23,208,224, 53,107,150,140, 71, 32,181,
+ 86,226,101,116, 36,132, 32,143, 44, 45,132, 81, 88, 21, 21, 91,153,153,153, 24, 51,102, 76, 94,159, 62,125, 82, 89,150,237,105,
+174, 40, 80, 42,149, 80, 42,149, 8, 9, 9,161, 61,122,244, 72, 92,185,114,101,158,169,208,122,250,244, 41,109,223,190,125,210,
+188,121,243,114, 74, 19, 90, 70,139,214,146, 37, 75,242, 90,183,110,157,252,232,209, 35,106, 20, 83, 86, 86, 86, 88,190,124,121,
+ 94,155, 54,109, 18,111,221,186, 69,141,105,150, 88,180, 24,134, 41, 20, 90,166,199, 48, 12, 3,150,101, 45, 18, 90,185,185,185,
+ 3, 58,119,238,156, 24, 26, 26, 74,141,229, 84, 42,149, 88,185,114,101, 94,187,118,237, 18, 31, 61,122, 68,141,105,214,214,214,
+102,139, 65,227,249, 21, 10, 5,172,173,173, 17, 18, 18, 66,219,183,111,159,184,122,245,234,124,211,244,199,143, 31,211,110,221,
+186, 37,102,103,103, 15, 40,205,162,245,226,197,139, 66, 11, 86,126,126, 62, 82, 82, 82, 16, 29, 29, 93,216,117,152, 39,183,238,
+216,191, 79,215,186,121,121,121,170,144,167,207,162,106,215,242,119,202,203,203, 83, 69, 70, 69, 61,165,116, 30, 91,202,131,208,
+243,211, 79, 63, 77,157, 57,115,102, 94, 86, 86, 86,177, 34,203,184,126,175,192,176, 46, 32,180,197,165,103, 57, 54,237,186,246,
+ 21,145,132,155,128, 54, 7, 16,219, 2, 98, 91,240,229,246,248, 40,176, 30,111,219,245, 44, 23, 80,182, 25,132, 98,143, 50, 57,
+ 5,212, 25, 96, 3, 79, 63,205,183,109,209,107,188, 40, 45, 45, 13, 60, 30,175, 80, 20,201,228,114,180,253,120, 48,243,243, 77,
+181, 11, 64,155,131,240, 60,204,205,174, 72, 36,154,246,213, 87, 95, 9,211,211,211,193, 48,204,159,156, 50, 25, 70,143, 30, 45,
+182,182,182,158, 99,118,217, 15,248, 11, 33, 16, 55, 1,232, 23, 79, 18,242,221, 14, 63,200,243,253,114,201, 22,105, 64,189, 70,
+ 24,213,218, 73,186,228, 88, 82,192,189,232,188, 42,128, 97, 18,244,154, 15, 44, 21, 91,132,144, 64,133, 66,113,236,246,237,219,
+178, 78,157, 58, 97,249,242,229,114,169, 84,122,130, 16, 98,113,195,159,155, 99, 24,183,112,245, 47,137,247,191,239, 0,104,115,
+ 95, 9, 44,147, 37, 41,135,197,220, 45,103, 51,117, 58,218,223, 92,206,188,188,188, 33,159,125,246, 89,234,193,131, 7,255, 34,
+178, 36, 18, 9,194,195,195,177,104,209,162,180,180,180,180,161,111, 83,100,141, 27, 55,110, 81, 76, 76,140,239,233,211,167,249,
+201,201,201, 78, 43,126,250, 41,243, 64,102,102,218,226,135, 15,159,204,170, 85,171,198,140, 58,117,134,150, 20,250,161, 36,145,
+ 53,118,236,216,221, 49, 49, 49,245,207,156, 57, 35, 72, 78, 78,246, 24, 59,118, 44,150, 45, 91,134, 57,115,230,108, 4, 48,138,
+ 22, 56,203,152, 11,141, 70,243, 36, 61, 61,189, 75,135, 14, 29, 50,210,211,211, 81,167, 78, 29,116,237,218, 21, 46, 46, 46,112,
+115,115, 67,247,238,221,225,227,227,131,212,212, 84,244,239,223, 63, 45, 57, 57,185, 3,165,244, 69,105,156,169,169,169, 97,187,
+118,237,122, 58,126,252,248,250, 49, 49, 49, 53, 1,216,103,103,103,203,179,179,179,197, 26,141, 70,106,107,107,107, 91,175, 94,
+ 61,135,145, 35, 71, 90,221,189,123,183,102, 76, 76, 76, 14,128, 72, 78, 94, 21,138,172, 18,181, 8,128,228, 2,193,163, 41,178,
+ 78, 46, 99,155,185,199, 22,251,219,140,253, 94, 19, 91,166,203, 95, 44, 90, 37, 65, 11,204,221,190,127, 91,190,200,179, 58,148,
+190,117, 33,147, 72, 32, 21,137, 32,181,181,135,154,101,241, 83,120,130, 42,151,210, 57,150, 86,168,105,183,161, 68, 34, 1,143,
+199,195,250,245,235,245, 77,155, 54,205, 63,123,246,236, 26,149, 74,229, 73, 41,253,205, 18, 81,176,122,245,106,213,196,137, 19,
+239, 37, 37, 37,213,149, 72, 36, 26, 99,250,154, 53,107, 84,131, 7, 15,126, 24, 19, 19, 83, 95, 38,147,169, 74,242,207, 50, 21,
+ 90, 98,177, 88,157,148,148,212,104,248,240,225,161,235,215,175,207,149,201,100,144,203,229, 16,139,197,154,164,164,164,186,159,
+127,254,249,189,101,203,150,169,164, 82, 41,228,114,185, 69,221,114,148,210,191, 8, 42,211,116,115,161,211,233,206, 38, 37, 37,
+213,157, 56,113,226,221, 31,126,248, 33,215, 40,128, 76,243,184, 98,197, 10,149,149,149,149, 69, 22, 45,227,126,114,185, 28,171,
+ 86,173, 82,141, 31, 63,254, 94, 82, 82, 82, 93,177, 88,172, 49, 73,207, 29, 55,110,220,221,164,164,164,186, 58,157,238,108, 41,
+ 95,120,134,172,172, 44,240,249,124, 60,124,248, 80, 45, 20, 10,193, 48, 12,158, 63,127, 94, 40,180,236,236,236,252,235,214,174,
+229,247,203,238,253, 23,164, 66,177,184,105,163, 15,106,190,136,136,140,161,148, 68,148,241,197,241, 91,126,126,190,231,229,203,
+151,215,116,232,208, 33,127,243,230,205,122, 62,159,255,151,151,207,251, 39,180, 32, 3,129,244, 89,146, 90, 33, 97,244, 4, 79,
+127,123, 37,178, 36, 54,128,196, 22,144,216,194,221,221, 3, 55,195, 85, 10, 48, 16,193, 96, 70, 12, 49, 74,229, 32,144, 61, 76,
+132, 66, 32,146,146,132,132,132, 66, 65,100, 92,188,171,215,196,157,200, 28, 43, 16, 42, 6, 15,150,132, 32,233, 98,111,111,207,
+143,143,143,255, 11,167,191,191, 63, 79,167,211,153, 31,218, 37,206,224, 10,176, 99,159, 38,228,187,254,122, 47,215,119,210,226,
+159,165, 82, 67, 6,112,123, 53, 2,170,186, 97, 82,175,122,162,217,135,147, 3,110, 69,168,170,130, 71, 71,129,205,113,180, 64,
+ 32,180, 80, 40, 20, 39,110,221,186, 37, 83, 40, 20,120,241,226, 5, 26, 53,106,132, 77,155, 54,201,100, 50,217,113, 66, 72,107,
+ 75, 46,211,245, 4, 26,153,147,109,104, 58,109,127, 84,194,253,120,253,107, 34, 43, 57,151,226,179,239, 14,103,164,103,229,247,
+188, 22, 85,242,243, 83,204, 61,127, 55, 35, 35,163,253,156, 57,115, 82,147,147,147, 95,187,199, 35, 35, 35,141,130,160, 53,165,
+244,209,219,186, 61,149, 74,229,192,197,139, 23,227,214,173, 91,232,212,169, 19, 46, 94,188,136,180,180, 52,236, 57,113,226,217,
+174,103,207,102, 25,125,182,138, 11,253, 80, 18,172,173,173,191, 92,188,120, 49,110,223,190, 93,200,153,154,154,138,197,139, 23,
+199, 0, 24, 99,169,200, 50, 34, 49, 49,241,230,147, 39, 79, 58,212,169, 83,231,241,154, 53,107, 98, 92, 93, 93,217,145, 35, 71,
+226,179,207, 62,131,163,163,163, 97,213,170, 85, 81,129,129,129, 15,195,194,194,130,114,115,115, 31,152,113,125,104, 74, 74,202,
+213, 77,155, 54, 93,255,240,195, 15,101, 67,134, 12,113, 60,116,232,144,189, 74,165,114, 19,139,197, 78, 26,141, 70,244,248,241,
+ 99,222,129, 3, 7, 92, 66, 66, 66,194,243,242,242,110,150, 55,239,255, 65,220, 42,176, 78,157, 41,178,190, 85,198, 54,115,143,
+ 45,233,119, 89,251,153, 94,255, 77,166,139,233,134, 50,151,129, 85, 49,127,116, 45,133,234,234,160, 38, 52, 97,100, 11,154,216,
+183, 38,189,220,202,142, 14,175, 70,114,135,148, 51,188, 67,108,108, 44, 77, 76, 76,164,169,169,169,116,239,222,189,212,197,197,
+ 37, 87,161, 80, 88, 28,222,193,197,197, 37, 49, 43, 43,139, 54,108,216, 48,205,209,209,177, 48, 20,129,171,171,107, 98,110,110,
+ 46,109,210,164, 73,154,147,147,211, 42, 20,140,240,240,240,240,136,166,148, 82, 47, 47,175,184,146,248,244,122, 61,117,113,113,
+ 49,134, 72, 16,216,217,217,253,216,184,113,227,180,196,196, 68,234,234,234, 90, 24, 58,193,209,209,113,121,163, 70,141, 94, 75,
+ 55, 35,191,209, 49, 49, 49, 52, 38, 38,134, 86,170, 84, 41,206, 52, 61, 50, 50,146, 70, 70, 70, 82, 15, 15, 15,139,195, 59, 56,
+ 58, 58, 46, 43,154,151,242,230,209,211,211, 51, 49, 47, 47,143, 54,107,214,236,181, 58,245,244,244, 76,204,207,207, 55,166,155,
+ 21,222, 65, 42,149,142,146, 72, 36,113, 18,137, 36, 78, 44, 22, 47,170, 92,185,114,210,190,125,251,232,170, 85,171,168, 66,161,
+120, 21,222,193,191, 91,211,234,205,134,206,114,244,239,254,101, 69,194, 59, 40, 20,138, 63, 92, 92, 92,114, 15, 28, 56, 64,213,
+106, 53,213,233,116,212, 8,188, 79,163, 14, 55,249, 84,167, 63,250, 29, 14, 91,232, 29, 50,177,165, 44,255,193, 55,117, 41,253,
+223, 39,148, 30,255,140,210,179,211,232,205,141, 35,105, 51,111,177,225,202,148, 74, 79,233, 6,223, 95,205, 10,201,176,169,118,
+117,250,163,223,241,103, 11,188, 67,134, 4,186,229,255,180,126, 21,189,113,227, 6,125,248,240, 33,125,241,226, 5, 61,254,219,
+ 62,218,172,170,236, 21,231,143,126,135, 45, 9,243, 0,160,185, 88, 44,206, 89,185,114, 37,189,126,253,122, 33,231,225,195,135,
+169, 76, 38, 83, 1,102,142, 90, 6, 8,253,209,255, 99,253,122,223, 75,179,219, 89,101,167, 30,157, 70,233,131,109,148,110, 10,
+160,116,107, 99, 74,247,117,166,244,200, 80,122,125, 85, 47,218,220, 91,168,163, 27,124, 47,210,141,254,237,204,205,167, 64, 32,
+200, 58,120,240, 32,141,139,139,163, 23, 47, 94,164,183,111,223,166,161,161,161, 52, 42, 42,138, 30, 59,118,140, 10, 4,130,124,
+ 0, 22,143,106,108,236, 12,175,160, 26,194,248,123, 75,154, 83,122,168, 63, 77,222, 53,144,118,169,165, 72,107, 82,137,255, 97,
+ 5, 70,218,213,179,183,183, 79, 57,118,236, 24, 13, 15, 15,167, 23, 46, 92,160, 78, 78, 78, 41, 0, 2,222,246,253, 25, 20, 20,
+116,131, 82, 26,220,169, 83,167, 96, 0,191, 7, 5, 5, 5,191,124,249, 50,184, 81,163, 70,215, 81, 74,232,135,210, 56,219,182,
+109,171,165,148,210, 78,157, 58, 81, 0,113, 65, 65, 65,244,229,203,151,180, 81,163, 70,154, 55, 52, 74,146, 7, 96,168, 64, 32,
+248,201,206,206,238,156,173,173,237, 89, 30,143,183, 9,192, 32,115,218,185, 82, 56,221, 0,248, 3,248,160, 96,169, 89,144,198,
+141, 56,252, 47, 77, 56,109,238,142,189,188,209,124, 88, 85,114, 97, 64, 21,100,247,175,130,156, 79,171,145,203, 61,189,241,161,
+165,179,123, 27,133, 86, 90, 90, 26,189,123,247, 46,109,213,170, 85,174, 92, 46,143, 5,208,161, 60, 51,134, 59, 56, 56,220,118,
+114,114,138,230,243, 95,111,180, 76,210,219,154,166, 59, 57, 57, 93,117,117,117, 77,116,116,116,188, 83, 28,167,131,131,195,109,
+ 87, 87,215, 68, 7, 7,135,219,166,199,241,120,188, 78, 14, 14, 14,177, 69,211,249,124,254,135, 78, 78, 78,209, 69,211, 81,194,
+204,230, 46, 46, 46,209,113,113,113, 52, 57, 57,153,122,122,122,198, 21, 21, 96, 9, 9, 9,175, 9, 48, 75,102, 75, 47, 41, 47,
+ 37,165,151,196,105, 70,157, 90,124,221, 77,182,249,184,187,187, 39,173, 88,177,130, 90, 89, 89, 37,153,110,243,109,249,233, 87,
+ 55,158,229,100,125, 54,253,199,125,142, 53, 63,174, 93,158,153,226, 1,116,144,203,229,177,109,218,180,201,125,254,252,121,169,
+ 66, 11,239,200,140,246,127,225,220, 95, 83, 72, 55,214,108, 78, 55,212, 60, 22, 58,207,235,241,208,198,114,117,240,138, 78,148,
+158,157, 70,175,255,248, 25,109,234, 45,122, 37,136, 54,250,157,160, 63,251,180,164,171,171,138,204,226,252,169, 90, 32,221,232,
+119, 34,100,174,215,227, 79, 26, 56,106,118,111,219, 72,159, 63,127, 78, 15, 31,216, 69,155, 84, 41, 16, 89, 27,106,158,162, 63,
+214,108, 99, 22,103, 49, 98,107,203,150, 45,244,249,243,231,244,215, 95,127, 53, 75,100,189,198,105, 34,180,102, 6, 89,101,124,
+214, 88,162,238, 95, 79,164,233, 30, 32,212,182,175, 46,212, 55,243,226, 27,234,186, 50,108, 77, 71,208,246,190, 82, 53,221,224,
+123,145,110,168,217,193,220,124,138, 68,162, 40,152,196,212, 41,186,136,197,226,228,146,132, 86, 89,215,189,177, 51,188,130,124,
+196,241,127, 44,252,144,118,173,163, 72, 53, 71,100,149,197, 9,160,158,131,131, 67,202,214,173, 91,169,179,179,115,178, 57, 34,
+235,159,184, 63,149, 74,229,142,156,156,156,224,147, 39, 79, 6, 7, 5, 5, 5,239,216,177, 35,248,242,229,203,193, 50,153,108,
+ 71, 73,161, 31,106, 22,105,255,139,114, 90, 91, 91, 7,103,103,103,211,147, 39, 79,210,160,160, 32,186, 99,199, 14,122,249,242,
+101, 42,147,201,130,255, 85,207, 38,199,249,223, 21, 83,175, 98,104,189,182, 88, 44,180,222,212,133, 0, 64, 51, 50, 50,232,164,
+ 73,147, 52, 18,137, 68, 37, 20, 10,103, 2, 16,254, 87,110, 66, 7, 7,135,171,206,206,206,137,206,206,206,175,137, 61,211,116,
+ 7, 7,135, 59,239,243, 3, 8,192, 71, 40, 20, 70, 10, 4,130,167,166,233,142,254,221,154, 86,107, 62,100,142,115, 64,183,143,
+ 42,146, 79, 0, 66,161, 80, 56, 83, 34,145,168,166, 76,153,162,201,201,201,121,191,132, 22,165,160,171,171,138,140, 98,235,193,
+ 28,175,208,174,181,100,218, 77,147,219,211,166,149,139,136,172,173, 94, 98,139, 56, 11,196,214,221,217,158,161,109,124,172,244,
+139,231, 76,162, 77,170, 72, 95, 23, 89,150,112, 22, 17, 91, 50,153, 44,123,222,188,121,102, 91,178,254,194,249,147,175, 39,221,
+232,183,227,149,136, 42, 99,249,209,119, 51, 93,235,235,249,111,185,238,141,157,225,213,214, 71,252,200, 92, 75,150, 57,156, 0,
+234,217,218,218, 62, 54,215,146,245, 79,148, 29, 64,251,209,163, 71, 7,191,124,249, 50,248,197,139, 23,193,151, 47, 95, 14,254,
+248,227,143,131, 1,180, 47, 46,206,150,182, 71, 15,117, 61,134,153, 84, 6,103,191,209,163, 71,211,151, 47, 95,210, 23, 47, 94,
+208,203,151, 47,211,143, 63,254,152, 2,232,199, 9, 24, 78,104,253,219, 23,254, 63,221,201, 42,145, 72,146,108,108,108, 28,173,
+172,172,142,229,231,231,143,167,148,198,255,151, 58,153,147,147,147,155, 89,146,254, 62,130, 82,250, 20,128, 87,209,244,164, 71,
+135,174, 1,184,246, 6,248,181, 0, 22, 19, 66,182,111,220,184,113,205,242,229,203, 63,150, 72, 36,201,239, 85, 37,142, 15,211,
+ 96, 77,181,219, 16,137,150,212,114,151,205,248,170, 19, 37,139, 79, 94,245, 90,218,195, 41,170, 89, 53,121, 56, 4,236,119, 32,
+234,155, 24, 26,161,182,144,243, 38,164,186, 37,117, 43,201,102,124,219, 29,228,187, 19,219,188,150,125,108, 31,213,172,170, 85,
+ 20, 40,190,131, 88,117,205, 34,206,215,175,203, 21, 66,200, 71, 43, 86,172,216,174, 82,169, 70, 80, 74,207, 89, 76,162, 96, 18,
+144,171,155, 7, 29,175, 22, 40, 68,165,156, 76, 5,134,247, 16, 73,248,215, 76, 38,126, 61,129, 70, 2, 8,120,195,207,210,221,
+130,238,168,127,211,243,125,138, 16,130, 93,187,118, 13,244,243,243,171, 26, 18, 18,242, 66,165, 82,237,164,148,158, 50,245,101,
+ 34,132, 28,249,238,254,253,220,181, 33, 33, 87, 52, 44,123,165, 12,206, 61, 5,156, 95,250,249,249, 5,132,132,132, 60, 82,169,
+ 84, 43, 40,165,123, 56,215, 37, 14,255,118,252,227, 66, 43, 47, 47,207,153,171,118, 14,255, 80,131, 31, 15,160,199,123, 91, 64,
+ 19,177,213,192, 83, 58,254,224,104,169, 10,148,196, 64,192,174,178, 88,100, 21, 35,182, 26,121, 73,191,248,117,148, 84, 5,138,
+ 4, 80,124, 95, 17,145,101, 42,182, 0, 84, 41, 55, 65,175, 16, 45,128,112, 16, 18,129,249, 40,217,137,122, 62, 10, 63,187, 57,
+188, 29,177, 5,224, 84, 25,251, 80, 0,103, 11, 22,115, 56,247, 0,224,132, 21, 7, 78,104,113,224,192,225, 31, 22, 91, 7,252,
+111, 33,133, 55, 5, 12,170, 0,250, 72,228,234, 19, 48, 62, 66, 83, 65,206, 27, 72, 33, 19,193,131, 15, 68,250, 48,228,104, 18,
+ 48,186, 2,156,127,195,155, 28,175,124,167,138,199, 60,238,214,224,192,129,195, 63, 7, 66,200, 72,211,145,134,166,255, 57,161,
+197,129,195,187,142, 87, 86,158,152,130,229,223,203,201,129, 3, 7, 14,255, 49,193, 5,188,154,147, 41,168,132, 15,198, 51, 22,
+ 16, 7,149,227,131,244, 12,199,201,113,114,156, 28, 39,199,201,113,114,156,255, 45,206,178,184, 45,209, 31,255, 38,129, 85, 76,
+ 57, 54, 25,127,252,163,163, 14, 57, 78,142,147,227,228, 56, 57, 78,142,147,227,228, 56,255, 43, 11, 3, 14, 28, 56,112,224,192,
+129, 3, 7, 14, 21,177,104,213, 47, 88,187, 22, 76,193,227,106,220,246, 86,125,180,100, 14, 62,174,224, 51,117, 8, 75,253, 0,
+128, 50, 36, 20,122,246,190, 42,229,105,133, 67, 62, 40,220,125,237, 40, 68,251, 9, 52,189,179, 99,159,164, 85,148,175,182,175,
+178,135,179,131, 98, 96, 66,106,230,246,135,161,217,135, 44, 57,214,198,166,178, 82, 98,103,219, 75,173,213,213, 18, 9,133, 81,
+218,140,172, 77,105,105, 97,217,220,173,201,129, 3, 7, 14, 28, 56,188, 23,168, 15,224, 14,128,206,148,210, 77, 5, 93,137,165,
+ 59,195, 87, 14, 8,188, 37,145, 72,189, 1,128,165, 20, 44, 5,114,179, 50,130,227,195,110,117, 0, 0, 71,239, 6, 39, 5, 18,
+235, 6, 44,125,181,221,192, 2,122,109,126,120,102,196,245,134,230,228,200,202,201,247,147,160,246, 65, 61,186,116,233,236, 91,
+187, 86,237,106, 0,240,224,225,131,176,163, 71,143, 61,177,114,242, 61,152,147,244,228,215,138,148,152, 66,242,245, 7, 31,212,
+107,113,251,246,157,133, 0,198, 86,180, 6,237,237,173,198,159,250,223,148,150,109,123, 44,151, 3,176, 72,104, 73,236,108,123,
+117,239,218,177,222,212, 9,163,153,207,166,124,235,125,235,202,249,165, 10,183, 90, 25,148,213,157,202, 77,236,123,169,180,137,
+147, 57,112,224,192,129, 3, 7, 14,255,122, 28, 43, 16, 87,199,138,110, 40, 81,104, 73, 36, 82,239,235,231,143,218,253,122, 57,
+ 26, 0, 16, 84,223, 5,179,190, 89,211,158, 16,242, 4, 0,186,125, 54,223,103,225,204, 9,184,250, 40, 9,148, 82,212,171,110,
+143,143,186,247, 54, 43, 55, 82, 23,255,134,125,251,244, 25, 48,101,202,151,221,158, 63,127, 30,177,123,247,238, 75, 0, 16,216,
+178,101,245,111,191,253,182,207,114, 91, 59,177,212,197, 63, 54, 47, 33,228, 86,121, 74, 43,117,175,230,238, 95,163,206,192,189,
+ 63,175, 97, 90,119,232,217, 95,234, 94,109,113, 94,108, 88,172, 57,199, 58, 58, 58, 78, 20, 8, 4, 74, 0, 96,217, 63,245, 79,
+213, 74, 60, 23, 0,208, 27, 88,133,157,187, 95, 54, 79, 40, 49,136,197,194,144,236,156,156,237,153, 49, 33, 63,149,198,169,214,
+233, 2,190, 24, 51,140,185,251, 34, 21,222, 1,129,188, 85,139,103,131, 53,232,108, 39,205,252,166,215,237, 27,123, 1,204,187,
+192,221,163, 28, 56,112,224,192,129,195,187,137,130,184,141,155, 76,254,111, 42, 83,104, 1,128,149,148,143, 39, 47, 19, 0, 0,
+ 54, 82, 96,252,168, 33, 72, 77, 73,246,209,232, 89,124, 58,100, 16,238,132,198,227, 73,120, 50, 40,165,240,241,144,153,157, 33,
+ 30,216, 15, 62, 29,254,105,171,147,167, 78,221,252,106,206, 87,191, 16,242, 42, 26,248,198, 77,155,155,206,157, 55,119,196,160,
+ 33,131,218, 29, 56,112,224, 17,138,204,140,109, 46,248, 68,177,102,217,146, 69,162,152,148,252,252,137, 83,102,176, 95, 78,158,
+184, 10, 64, 79,115,142, 21, 8, 4,202,152,152, 24, 43,134,121,221,125,237,187, 69, 51, 46,182,235,177,252, 89, 68, 84,198,221,
+147,135, 15, 55,244,247,247, 71, 76,108, 66,243,165, 63,108,168,235, 90,173,225,176,236,172,188, 30,185,201, 33,197, 70,161, 22,
+ 11, 4,143, 22, 44,253,177, 30,107, 83,157,153, 53,162, 19, 2,170,185, 33, 54, 41, 3, 45, 59,116,227, 7,223,186,213, 30, 0,
+ 39,180, 56,112,224,192,129, 3,135,119, 20,165,141, 58,100, 0,224,216,177, 99,197, 6,254, 51, 24, 40,158,132,199,227, 73,120,
+ 60,110,134, 38, 67, 75, 5, 88,181,116, 1, 86, 44,158,135,180, 60, 6,191, 94,141,198,211,240, 4, 60, 13, 79, 64, 74,122, 78,
+113, 10,239,181, 33,154, 43,150,200,234,175, 90,165, 92,214,190,165,188,181,157,173,173,237,179, 71,191,228,206,157,156, 88,115,
+193, 23,209, 66,129, 70, 28, 35,183,146, 55,219,191,127,159,191,179,163,147,220,202, 74, 49, 77,238, 81,111,139,141, 77, 93,101,
+105,156, 69, 33,115,174,217,173, 91,231,142, 31,186,184, 56,179,163, 87, 5,135,214,170,233,167,171, 81,189, 70,115,153,179, 79,
+183, 82,148,104, 33, 39,203,178, 96, 24, 6,137,137,137,136,139,139,195,203,151, 47,241,244,233, 83, 68, 71, 71, 36,178,148, 10,
+ 12, 96, 25, 87, 87, 15,240,249, 34,120, 87,246,194,143,171, 22,203,190,153, 63,171,145, 68, 46, 58, 68, 8, 33,197,113,230,167,
+165, 31, 56,254,251,169,216, 19,187,127, 52, 0, 64, 82,122, 14,206,222,122,142, 59, 33,209,150, 42,230, 55, 62,228,149,227,228,
+ 56, 57, 78,142,147,227,228, 56,255, 13,156, 37,105,145,119, 1,148,210, 77, 69, 23,227,182, 82, 71, 29,134, 69,167,225,201,203,
+ 4, 52,240,115, 71,181,202,174,184,249, 52, 29, 59,207, 70, 99,203,201, 72,156,189,151, 12,150,175, 64, 66, 22,240, 44, 34, 17,
+207, 34, 83, 74,139,211, 12, 0,224,137, 5,125,191,248, 34,115, 74,109,255,172, 38,231, 79,140,135,187,227, 51,255,233,211, 51,
+198,243,196,130,190,182,149, 20,187,103, 76,153, 52, 80, 33,147,137, 52,106, 13,170, 86,241,146, 76, 24, 55,126, 24,177, 21,239,
+ 54,183,160,214, 30,254,182, 98,169,244,167,111,230, 79, 19,127,255,235,179,168, 92, 13,114, 15, 94, 75,124,241,229,140,185,105,
+124,129,228, 71,107, 15,127, 91,115,185,116, 58, 29,212,106, 53, 52, 26, 13,180, 90, 45, 98,163, 31,119,251,227,215,169, 29,170,
+ 84,178,235, 32,150, 72, 64, 1,100,229,233,241, 50, 94,133, 54,109,219,241, 26,212,175, 31, 96,229, 90,115,120,113, 92, 25, 25,
+ 17,153, 44,229, 41,142,254,182,139,183,239,244, 93,252,114,244, 22, 14,157,187,139,155, 23, 78,232, 41,171, 43,156,166, 66,225,
+ 86,195, 71,225, 86, 39, 82,225, 94, 55,177,112,241,168,125,155,251, 86,224,192,129, 3, 7, 14, 28,254,189, 40, 24,105, 56,178,
+232,136, 67,160,148,174,195,252,252,188,240,158,125, 7,193,213,201,197,170,123,235,161,194,224,176, 12, 36,199, 71,226,249,211,
+135, 80,229,235, 32,180,173, 2, 72, 92, 80,217,219, 11,247,159, 28,210,174, 94,118, 44,135,213,171,195, 75,226,235,222,221,205,
+195,213, 81,206, 44, 91,234,121,253,233,147,244, 6,187,230,108,197,128, 1, 86, 14,203,150,122, 94,143,120, 33,103,100, 18,218,
+108,216,144,254,132, 33, 20,211,167, 79, 65,247, 46, 29,241,233,176,193,100,251,246,109, 77,204, 45, 40, 11,193,218,153,179, 23,
+136, 18, 51,244,154,155, 79,115,212, 50,185, 84,122,229, 89, 78,110,128,183,167,180, 83,143,161,113,199,246,255,244, 61,128, 33,
+230,112, 25, 5,150, 78,167,131, 86,171, 5, 0, 3, 0, 48,204,171,117,106,182, 6, 73, 25,106, 36,102,168,161, 55,176,232,209,
+119,136,244,214,237,123, 67, 0,148,224,175,197,178, 58,189, 14, 7, 79,223, 65,236,173, 3, 44, 97,120,153, 70,103,120,163,200,
+114,113,241,188,216,165,199, 96, 71,145,228, 85, 55,108,118,174, 26,219, 55, 44,229,238, 96, 14, 28, 56,112,224,192,225, 95,140,
+162,211,239, 16, 66, 80,230, 20, 60, 17,143, 46, 53, 4, 0,223,134, 29, 82,173, 36,124, 59, 62, 67,144, 24, 19,134,237,203, 39,
+130,101, 41, 58,141, 88, 6,133,183, 11,164, 66, 30,212, 57,169, 57,169,207,207,219,151,174,246,116,237,214,109,140,245,254,124,
+ 76, 85,235, 93,187,114, 4, 0,176,107, 87,142, 96,204,232, 74,214,235, 55,134,123, 55,110,209, 0,212, 96, 64,151,238, 61,209,
+183, 95, 95, 68, 36,168,240,191,139, 81,200,205,211,152, 53,191,154,204,177,102, 93, 39, 55,247,142, 95, 12,237, 40,231,243, 8,
+169,225,165,228, 69, 39,235,244, 60,158,192,112,228, 86,102, 92,143, 30,253, 28,206, 30,223,247,161,204,177,102, 93, 85,242,227,
+123,101,241,169,213,106, 24, 12, 6,168,213,106,232,116, 58,216, 57, 84, 57,222,174,231,242,152,248,132,236, 99, 9,233,249,141,
+115,117,122, 36,102,168,145,148,161, 70, 70,174, 22, 46, 10, 91,232,117,154,218,165, 92,132, 95, 62,238, 57,104, 48, 0,134, 48,
+250,173,217,113,143,159, 26,183, 25, 69, 86,199,238, 3, 28, 47, 6,135,225,249,237, 19,233,148,213,235, 94, 85, 28,203, 77,129,
+194,129, 3, 7, 14, 28, 56,252,203, 97,226,167,117,172,192, 57, 30,175, 9, 45, 99,223,104,231,206,157, 73,209,131, 99, 19,211,
+ 96,111,197,135,163,155, 55, 6, 78, 92,129, 95,190,159, 12,131, 65, 7, 74, 1,189,193,188,200, 4,148, 10, 78,143, 29,227,237,
+ 87,217,155,231, 56,112,128, 44,111,231, 46,149,116,224, 0, 89, 94,173,218,246,153, 99,199,120,135,103,231,123, 54,215, 27, 12,
+184,242, 40, 9, 15,195, 51,241, 48, 34, 11, 86, 82,243,195,124,241, 68,194, 49, 75,151, 44, 22,242,121,132, 60,138,204,201,137,
+ 73,213,231,240, 4, 2,173, 76, 42,162, 26,202, 87, 71,164,208,212,182, 31, 15,203, 59,178,227,135,225, 0,198,149,196, 99, 28,
+105,104,180,100, 25,215,148, 82, 74, 0,150, 37, 6, 67, 76, 74, 62,114,180, 58, 36,166,255, 41,180,136,190,228,158, 83,133, 91,
+ 13, 31,165,181,221,239, 60, 30, 79, 76, 41,160,211,234,251, 40,220,106,116,200,142,123,246,212, 84,100, 93,127, 20,135,176,187,
+103, 18, 13, 90,213,160,220,196,208, 63,184,219,150, 3, 7, 14, 28, 56,252,151, 80,154, 22,249,183,195,104,193, 42,214,162, 85,
+ 90,129, 40, 5,158, 69,166,160,178,135, 35, 60, 42, 87,195,211,199,247,255,220, 6, 64,111, 48,207,119,237,208,161,184,152,149,
+ 43,149,236,228,201,153, 77,151, 46,245,188, 54,102,116, 37,101,173,218,246,153,211,166, 69, 53, 93,185, 82,121,237,244,117,129,
+129, 22,196,235, 50,198,230, 42, 8,243,111, 38,152, 70,117,253,171,240, 22,236,122, 22,245,199,131,236, 36,161, 80,168,115,177,
+149, 16,133,149,136,199, 99, 4, 34,181,142, 81,251, 4,212,231, 29, 97, 94, 69,111, 45, 75,104, 21,237, 58, 76, 77, 14,235,118,
+234,127, 83,106,181,254,120,153, 93,108,114, 30, 50, 53,188,194,174, 67, 30, 67,240,224,113, 36,192, 19, 62, 44,142,211, 90, 97,
+119,114,247,206, 95, 60, 87, 46, 93, 4,173,222,128,177,147,191,194,176, 33,131, 78, 42,220,106,116,240,244,246, 13,190,116,100,
+171,172,195,232, 31, 17,249,228,118,130, 94,157,181,135, 19, 89, 28, 56,112,224,192,225,191,134,119, 81, 92, 25, 81,100,212, 97,
+241, 22,173,210,224,229,225,140, 27, 15,195, 81,219,175, 10,148,214, 10,132,134,197,128,199, 8,192, 16, 64,167, 55, 95, 12, 81,
+173,110,239,202,149, 74, 68,134,203,153,245, 63,134,123,143, 29,227, 29,190,114,165,242, 26,213,234,246, 2, 24, 68,233,171,185,
+ 23,141, 1, 82, 13, 22,132,241,164,172,174,146,179,157,140,119,251, 69,110, 42,195,240,212,246, 74, 9,107,175, 20, 51,246, 10,
+145, 64, 40,224,177,122,202,104, 61,156,188,243, 41,203,214, 53,135,207,180,235,208, 96, 48,128, 16,198, 80, 32,196,228,209,169,
+121,200,204,231, 33, 49, 67,141,244,108, 45,106,184,203,113,230,236, 1,149, 65,151,183,171, 56, 46,158, 64,168,172,230,237,129,
+ 89, 95,175, 68,158,218,128,103,177, 57, 16,138,197, 46,206, 46, 1,247, 6,125, 62, 67, 60, 97, 83, 24,134,127,104,143,201,151,
+194, 98, 85,137,146, 25,220,227,198,129, 3, 7, 14, 28, 56,188, 59, 48,245,209, 42, 10,179,132,150,149, 76, 2,202,147,224, 82,
+112, 24,124,253,235, 96,219,225,155,168, 94,187, 9,226,179,245,160, 96,202, 28,109,104,196,151, 51, 84,119, 0,220,233,222,221,
+205,227,147, 79,220,219, 81, 42, 56,189,126, 67,102, 12, 0,252,184,167, 21, 40, 0,150,165,160, 20,160,236, 43,193,101,190,156,
+228, 71,134,199,103, 85,246,118,145, 35, 36, 70,171,150,139,133,140,173, 92,196,115, 84,138,132, 66, 62, 31, 6, 74,212,241,241,
+ 97,106, 2, 68,152, 67, 87,180,235, 80,102,229,122,188,237,199,203,146, 35,162, 50,111,215, 72, 83,213,205,212,138, 64, 41, 80,
+195, 93,142,135,215,143, 25, 18, 99,159, 63,203, 75,124,178,161, 56, 46,150, 5, 79,171,103,113,239, 69, 38, 50,114,117,200,200,
+209,162,121,155,174,194,230, 65,221,112,233, 97, 10, 88,189, 14, 75, 55, 31,203, 54, 80, 93, 95, 74, 67,116,220, 45,203,129, 3,
+ 7, 14, 28, 56,188, 59, 40, 24,105,216, 25,175, 34,195,119, 54, 21, 95,102, 77, 42,109, 96, 41, 28,236,237, 32,145, 91, 35, 60,
+ 81,139,108,226,132,116, 21,133,193,240,202,162,197,150,124,226,160,226,210, 15, 29,138,139,249,237,183,228, 45,135, 14,197,153,
+ 56,122,255,105,201, 42, 92,179,212,108, 78, 66, 13,103, 14,159, 56,159,217,173,177,163, 45,195,227,229, 9, 5,140,154, 47,228,
+105,133,124, 70, 39,228, 51, 26,103,107, 1,239,252,145, 61, 34, 74,112,190, 44,206,252,252,124, 4, 5, 5,161, 83,167, 78,232,
+222,189, 59,122,247,238, 13, 31,159,154, 78, 12,143,104, 40, 97, 89, 71, 81, 54,170, 57, 18,240,243,163,241,199,158,239, 84, 15,
+175,252,118,207,160,206,239, 74, 77,250, 58, 95,227,164,148, 77,203, 84, 35, 95,107, 64,122,142, 22,233,185, 90,232, 29,155,226,
+183,171,113,200,211, 24, 16, 25,124, 32, 47, 57, 33,102, 98,126,226,179,240, 50, 46,100,208,223,112,115,112,156, 28, 39,199,201,
+113,114,156, 28,231, 91,231,124,199,209,185, 64, 88,117, 46, 26, 71,203, 12,139, 22, 69, 85, 87, 57,170,187,203,145,175,117, 66,
+190,198,128,220,124, 3,178, 84, 90,100,169,116, 8, 79, 80,225,225,225,138,231,240,149, 21, 11, 32, 5,191, 65, 94, 9, 60,115,
+109, 90, 34,173,230,235, 21, 75,191,237,179,167,126, 61,205,132,206,174,149,238,135,107,226, 8, 97,242, 24, 30, 95,103,167,224,
+ 11, 66, 67,239, 39, 95,187,120,188,165, 68,111, 24, 92, 26,143, 94,175,207,116,119,119, 7,240,250, 20, 60, 53,171, 73,187, 95,
+ 57, 54,189, 74,171,110, 75, 29,191, 95, 52, 69,197,240,132, 44,225, 11, 31, 26,116,121,187,243, 18,159,252, 72, 75,113, 40, 99,
+132,146,199, 55,238,134, 52,177,177,171,132,231,177,185,200,205,215, 67,171,103, 97,107, 37, 68,204,131,147,218,240,208,219,251,
+178, 99,239,109,227,238, 83, 14, 28, 56,112,224,192,225,221,132,209, 79,203,184, 46, 51,188,131,137,117, 39,188, 69, 80, 87,176,
+ 44,133,129, 2,172,161,192,242,196,254,105,125, 50,232,242,195, 43,154, 65,150, 53,220, 92,187,105, 75,167,250,141, 90,241,252,
+ 61,173,144,149,154,128,235, 87,206,233,193,210,107,230, 28,159,146,242, 52, 71,230, 82,163,103,159, 94,159,236, 31,242,233,232,
+140,150,109,218,200,157,156, 92,212, 49,177, 49,170,159,119,236,212,157, 60,126,168, 37, 11,125,191,148,148,103, 57,165,241,100,
+100,100,252, 80, 92,122,219, 22,149,154, 3,168,194,227, 19,141, 42,233,169,220,146,178,165,196, 70,247,248,246,235,249, 17, 3,
+ 70, 76, 18, 85,117,175,134,164, 76, 30,194, 99, 18, 16,122,241,144, 58,246,233,173, 95,179, 98,238, 12,231,110, 81, 14, 28, 56,
+112,224,192,225,221, 68,133,124,180,162, 66, 94,197,211,250,187,145,157,144, 52,104,219,182, 95,190,249,101,199,158,230,249, 26,
+141, 59,133, 48,218,160,215, 92,200, 49, 96,174,185, 28,170,132,103,183, 29, 28,124,106,253,188,121,237,236,159,183,172,111, 5,
+214,224, 71,128, 8, 74,112, 94,162, 51, 12, 41, 75,100,149, 46,228,178, 55,182,235,185, 60, 47, 53, 53,231, 23, 75,143, 85,165,
+132, 38, 88, 57, 87,173,180,113,213,215,203, 24,134,215,222, 96, 96, 5,172, 65,247,220,160,205,255, 46, 47,249,201, 97,106,217,
+240, 74, 14, 28, 56,112,224,192,129,195,191, 8,132,144,145, 69,131,150,154,109,209,250,167,144,150, 22,150, 13, 96, 66, 69,121,
+ 82, 82,158,230, 0,120,227, 35,247, 30, 60,205,252, 31,128,255,149,247,248,156,196, 23,201, 48, 51, 42, 61, 7, 14, 28, 56,112,
+224,192,225,221, 23, 92,128,153,206,240, 28, 56,112,224,192,129, 3, 7, 14, 28, 74, 23, 89,166,235,194,116, 0,197,142, 28,176,
+100,102,238,242,140, 62, 40,139,159,227,228, 56, 57, 78,142,147,227,228, 56, 57,206,247,143,179, 44,110, 75,244,199, 59, 33,192,
+254, 78,247, 32, 66, 72,208,155,174, 48,142,147,227,228, 56, 57, 78,142,147,227,228, 56,223, 63,206,119, 90, 76, 21,177, 98, 21,
+ 8,198,127,151,143, 22, 7, 14, 28, 56,112,224,240, 79,193,193,193,199, 10, 40,244,235, 45, 19,114, 71,127,103, 0,200, 77, 14,
+ 73,228,106,143, 67, 73,162,170, 56, 31,173,114, 9, 45, 66,136,128,225,139,190,144, 72,173,134, 18, 6,214, 57, 25, 41,238,255,
+ 97, 21, 75,124, 42,203,199, 85,170,228,216, 38, 38, 54,113,123,232, 11,213,161,183,193,105,229, 92,213,145,136,108,127, 37,172,
+250,219,172,152,135, 39,222,112, 25,197,254,254,254,245, 0, 32, 36, 36,228, 46,165, 84, 93, 81, 78,185,179,111,127, 91,107,155,
+ 81, 90, 86, 99, 80,229,170,126,204, 73,120,122,224, 77,230, 89,225, 86,195, 30,124,197, 6, 24,244,109, 64,193, 3,143,127,143,
+168,243, 63,203, 74, 14,121, 81,218,113,158,221, 23,251, 13,239,211,121,206,150,125,199,190,137, 58, 52, 51,180,232,118,187,143,
+214, 40,198, 15,110, 63,125,221,158, 67, 75, 82, 14, 79,203,225,154, 23,203,225,217, 98,128,141,158,239,194,139, 59,191, 60,213,
+146,227, 60,124,155, 62, 18, 8, 4,142, 90,173, 54, 41,246,233,245, 90,230, 28, 83,201,175,217, 29, 30,143,113, 51,232,217,152,
+232, 39, 87, 63,224,106,191,108, 72,157,170, 54,133, 94, 63,139, 2, 4,132,191, 34, 63,245,197,185,138,240,185,185,185, 73,149,
+ 74,101, 75,107,107,235, 74, 50,153, 76,146,158,158,158,151,158,158, 30, 21, 25, 25,121,150, 82,170,127, 27,101,148, 59,251,206,
+ 36, 2, 50,175,224,247,130,220,196, 39,139, 75,111, 95,253,190, 33, 12,157, 89,240,123,113, 78, 98,232,156,127,195,181,146,184,
+248,122,241, 40, 38,240, 24,126, 51, 61,171, 91,164, 74,124,122,196,146,227,237,236,236,218,243,249,124,169,241,191, 94,175,207,
+ 75, 75, 75, 59,197, 61, 5,229,122, 79,142, 44,250,187,220, 22, 45, 66, 8, 79, 32,150, 93, 30,240,233,216, 90, 75,230,207,144,
+172,218,242, 27, 36, 86,182, 33,249, 57,233,254,255,198,194, 59, 86,109,124,155,199,240, 60, 76,211, 12,172, 33, 38,249,197,141,
+ 55,210,232,250, 86,150, 14,159, 61,109,208,228,254,125,130,188,130,186, 76, 36, 0,138, 21, 69, 10,207,134, 87, 9, 97,170, 48,
+ 4, 96, 24, 2,134, 0, 0,141, 75,121,113,163,126,121, 57,141, 80, 58, 85,171, 34,178,114,188,216,162,251, 88,151,224, 51, 59,
+183,201, 29,253,219,229, 38,135,220,127, 3, 55,142, 99,181,106,213, 26,250,248,248,216,143, 31, 63, 94, 8, 0,223,127,255,125,
+245,234,213,171,167,134,133,133,221,162,148, 38,151,171,145,115,242, 27,244,195,242,133,191,124,244, 81, 39,196,165,228, 98,233,
+202,117,173,173, 92,124,122,191, 41,177,101,107, 91,197,154,111,109,251, 96,226,180,133, 78, 29, 91, 55,228,229,228,235,241,251,
+197,187,129, 59,215, 45,188,105,237,232,223,168, 52,177,197,170, 50,231, 56, 91,209,142,172, 42, 19, 0,250, 23,221,238,110,165,
+ 11,114,148, 26, 58,186,138,249,119, 1, 28, 44, 51, 47,222, 45, 78, 10,196, 98, 47,134, 97, 96,188,246, 60,242,234,250,235,180,
+121,145, 49,143, 47,118,248, 55, 60, 39,214, 94,141, 19,192,227,219, 51,228,207,252,145,130,251,148, 80,154, 21,255,244,146,253,
+ 27,184,159,148,181,170,219, 4,116,110,222,226,231, 11, 47,211,228,158,173, 38, 29, 35,148, 89, 31,121,113,197, 61,179, 94, 42,
+ 18,137,237,145, 35, 71, 28, 59,118,236,168,116,174,245,241, 5,115,142,177, 18, 73,252,143, 30, 61, 44,236,216,177,131, 5,247,
+167,111, 59, 48,204, 14, 2, 8, 88,150,126,207, 99,233,190,156,212,167, 97,150,134, 97,145, 57,251, 13,103, 64,205,110,103, 88,
+144,219,170,196,208, 45,229,173, 95,129, 68,217, 86, 32, 20,126, 81,197,167,118,253,216,136,231,183,115,115,178, 87,234,242, 51,
+ 46, 88, 76,164,211, 79, 61,115, 41,248, 35,190, 64, 64, 58,182,109,204, 3, 80, 33,161,229,236,236,252,241,154, 53,107,170, 54,
+109,218,212,248, 50,183,222,191,127,191,203,215, 95,127, 45, 55,231, 25, 42,225, 94,114,119,116,116,244, 20,137, 68,238, 0,160,
+209,104, 98,147,147,147,163, 40,165,177,101,222, 19, 46,213, 28, 8,248, 11, 47, 93,188,200, 7,128,192,192,150,223,120, 5,142,
+183,229, 9,173,242,138,173, 14, 77,182, 28,192,164,235, 55,174, 17, 0,104,210,184,233, 12,185,163,255,218,183,105,217,146, 58,
+251, 53,102,128,201,205, 91,182,235,209,183,223, 32, 38,160,134, 39,218,183,251,112, 58, 0,139,132, 22,159,207,151,222,188,121,
+179, 26,195, 48, 60,189, 94,159,223,164, 73,147,168,138,228,203,221,183,217, 85, 2,166,146, 86,175,217,156,252,226,246, 55,148,
+ 82,182,168,126, 80, 86,170, 63, 27, 60,254, 8,150,101,163,179, 34,111, 53,123,223, 44, 90,197,214,179,165,100, 12, 95,244, 69,
+255, 97,159,215,154,244,229, 44,201,196, 85,103,113,108,221,140,148,127,171,200, 2, 0, 30,195,243, 56,121,234,164,147, 76,196,
+ 3, 0,228,228,235,241, 81,199,142,101, 30,103,227,221,248, 60, 67,136,175,113, 42,113,131, 94, 43,225, 11, 68,249, 4, 0,200,
+171, 81, 4, 14,110,149,207,186,186,218,201,250,247, 9,242,218,177,231,116, 76, 84, 76,106,137,141, 26,195,240, 60, 14, 29, 62,
+226,228,110, 47, 1,159, 71,144,147,167, 71,199, 78, 93, 13,197,237,235,234,106,215,185,127,159, 32,175, 93,123,207, 68,197,199,
+167, 29, 43,181, 49,119,245,105, 32, 87, 58,255,222, 99,212,215,246,249,140, 29,230, 46,250,193,225,226,137, 93, 23, 90,117, 30,
+196, 70, 70, 70,231, 83, 66, 66,210,211,226,191,200,137,127,254,196, 92, 33,109,101,101, 85,213,202,202,170,238, 71, 31,125, 36,
+153, 50,101,138,160,117,235,214,133,219, 71,142, 28, 41, 60,127,254,188,235,242,229,203, 59,185,185,185,229,231,228,228,220,203,
+201,201,121, 65, 41, 53,152,123, 77, 92, 92, 28,199,245,252,164, 43, 62,236, 49, 22, 6,150, 96,228,231,147,112,242,196,193,209,
+ 0,222,136,208,210,201,172,191, 30, 49,106,138, 99,147,134,245,120, 11,119, 61,129, 84,196, 71,135, 15,124,201,176,241,115,108,
+182,172, 94,248, 19,128, 86,197, 89,178, 88, 85,230,156, 90, 14,154,126,221,154, 86,193,225,221,154,126, 30, 65,211,193,200,148,
+133,150,173,106, 31, 77, 80,216, 74,165,107,220,108,120, 78, 98, 67,242,154,106, 31, 77, 56, 19,118, 98,117,118,169, 47, 63,177,
+216,107,247,174, 93, 53,108, 21, 66,240, 25, 2, 30,143,128,207, 99,144,175, 49,160,119,159,126,111,234, 75,138, 39,117,170,209,
+137, 1,134,189,122, 97, 99,107, 94,210,179,227,150, 92, 19,194, 19,218, 31, 61,252, 43,223, 73, 41, 6,143, 71,192, 99, 0, 30,
+ 67, 16,145,152,135,225,195,135, 41, 43, 42,216, 63,106,238,212,240,252,218, 86, 29,154,212,178,171,179,247, 26, 81, 54,249,168,
+175,125, 74,190,108,232,158, 67,231,250,121,182,156,124,131, 82,118, 89,244,165, 85,165,126, 73,171,213,234,196, 14, 29, 63,178,
+ 38,124,185,236,204,111,219, 90,242, 25, 2,157,129, 66,111,160, 48, 20,204,141,250,234,121, 37, 96, 24, 2,202, 82,140, 24, 49,
+ 28, 29, 58,126,164, 98,245,108,140,249,141, 28,179,227,247, 51, 87, 28,213, 58, 22,203,215,108, 89,152,155,153,188,240,101,168,
+125,132,204,217,103,146, 42,241,169,217,243, 96, 48,160, 31, 68,191,120, 56,106,215,209,235,168,229, 95, 19, 6,246, 85, 62,125,
+ 61,228,216,117,236, 58,252,124,253, 94,229,155,165,240,169,100,133,134, 31, 52, 4,128,114, 9, 45,129,196,122,110,171,206,131,
+ 23,116,233,253, 41,156, 28, 29,193, 80, 93,151, 51,199,118,117, 17, 72,149, 83,117,121,153,203, 45,123, 99, 24, 10,223, 11,148,
+101, 43,236, 94,226,230,230,230,216,176,225,159,225, 24,245,122, 61,188,189,189, 17, 27, 27,235, 91,142,123, 73,230,234,234,218,
+121,227,198,141, 78,157, 58,117, 18,184,184,184, 0, 0, 18, 18, 18,220,127,255,253,247,250,110,110,110, 73,241,241,241,199, 40,
+165,170,146, 56, 12, 58, 70,200,240,193,147, 72,100,175,202, 8,194, 76, 25, 55,184,142,179,171, 91,177,150,250,228,228, 4,209,
+180,177,231, 8,159, 47, 44,216, 31, 12,165, 44, 41,197, 74, 20, 36, 16, 8,164,197,109,211,242,172,155, 80,129,242, 51,134,199,
+188,186, 89,245,186,228,180,200,224,154, 22, 88,226, 2, 4, 34,225,143, 3,134,140,106,214,171, 71,119,184, 58, 42,113,230,242,
+125,140, 30, 55, 89,167,215,234, 86,150,235, 29,201,227,241,147,146,146, 34,108,109,109, 93, 42,254,190, 37, 85, 78,159, 60,225,
+116,230,143,179, 51, 86,172, 90, 61,198,205, 39, 80,199, 82, 90, 56,143,177,103,173, 15, 5,237,186,244,177,118,170,214, 68,178,
+122,222,103,130,247,205,162, 85,146,216,178,248, 33, 18, 73, 21,125,190,154, 54, 94,242,245,206,235, 56,182,110,116, 74,110,102,
+178, 99,225,151,130,210,246, 78, 78,102,122,253,242,100, 82,225,228,219,148,240,248,163, 8,143, 39, 39, 12, 17,177, 6, 54, 90,
+175,209,124,163, 74,121, 26, 95,209, 10, 96, 89,138,255, 93, 77,178,172,210, 40,170,239,216,251,171,147,179,141, 24,249, 90, 3,
+250,246, 31,132, 95,126,249, 69,225,168, 20, 33, 95,163,199,178, 21, 43,178,115, 34,142, 57, 69, 68,167,199, 6,117,157,124,234,
+ 69,120,210,195,168,248,252,125, 37, 95, 4, 6, 78, 74, 49, 22,237,121, 10,107,169, 0,182, 10, 33, 24,134,152, 94,164,194,238,
+194,184,248,244, 76, 19,206,157, 37, 62,116,174,181, 59, 40,109,221,118,127, 50,106,145,205,179, 36, 62, 40,180, 8,179,150,160,
+207,208, 9,214, 85, 93,164,144, 75,120, 54, 47, 35, 99, 93,167, 76,157,122, 89,233, 84,173, 81,102, 82,216,203,178,202, 93,185,
+114,229, 30, 93,186,116,145,125,249,229,151,130, 74,149, 42, 97,235,174,253, 94,129, 29,122,119,141,139, 79,172, 68, 41,133,179,
+147, 83,244,136, 97,189,143, 28, 63,126, 60, 50, 58, 58, 90,176,116,233,210,198,191,254,250,171,191, 37, 95,166, 6, 74,145,175,
+ 54,192, 80,240,130, 76,206, 84, 91,122, 67, 19,119,119,119,113,108,108,172,218,104,101, 32,255,103,239,188,195,162, 58,218, 54,
+126,207,118,150, 93, 88,122, 83, 64, 69, 17, 44,168,216,123, 47, 17,123,111,209, 88, 99,137,137,198, 24, 91, 44,137, 26,163,177,
+199, 88, 98,139,189,198,216,123, 79,172,160, 40, 22, 80,138,136,244,178,189,151,249,254, 0,124,137,161, 44,106,190,247, 77, 50,
+191,235, 58, 23,236,238,217,123,231,156, 51,231,156,251, 60,243,204, 12, 33,175,119,166,180, 66,189,206,237, 91, 55,230,109, 60,
+149, 8,181,222, 10,137, 3, 31,137, 25, 90, 52,168, 23, 70,126,178, 90,234, 22,167, 57,106, 64,196, 28,111, 41,237,210,163,105,
+ 21,120,185, 58, 98,235, 15,139,112,244, 70, 66,151, 12, 53,129, 71,143,165,227,124, 69,188,142,158,142,130,181,109, 26, 84,245,
+105, 87, 63, 16,119, 26, 84,245,185, 26,249, 52, 54,108,192,138, 79, 94,169,249,231,115, 79,125,162, 42,254,194,195,129,155,147,
+ 0, 91,206,188,128,163, 3, 15, 18, 7, 30, 36,162,252,191, 69,143,255, 91, 61,213,250,213,244,231,218,172,163,156,253,106,142,
+ 26, 52,160,191,223,144, 65,253, 41,184, 28, 28, 56,116,172,231,174, 93, 59,211,164, 62, 33,155,173, 28,238, 22, 93,234,163,151,
+101,238, 83, 14,224, 37, 19,226,139,205, 15,225, 44,230,195,201,145, 15,103, 71, 62,218,213,241, 4,151,243,214, 23, 30,215,143,
+123, 6,117,141,222,209,161,109, 72,128, 52,248,254,115,197,163, 81, 11,239,174,186, 44,111,251,217, 15, 43,107,186,171,229, 70,
+222,220,105, 99,120, 41,169,169,109, 15, 28,187,210,206,175,209,168,167, 22,147,102, 86,230,253,253,197, 70,112, 95, 62,249, 61,
+188, 98,211,254, 14, 38,181,249,193,253,167, 41, 85,243, 12, 34,196, 36, 41, 33,113,224, 65, 90,184,111, 29,120,144, 56,240, 33,
+117,224, 33, 53, 37, 17,185, 26,238,245, 87,238,156,182,244,242,239,229,106,162,210,155,172,184,151,160, 70,165,144,122,240,245,
+245,131,177,235,208, 74,183, 46, 30,250, 85,226, 91,227, 91, 77,218,227, 89,246,234,236, 62,126, 19, 51,166,140,139, 36, 64, 84,
+193, 77, 58,124,238,146,117,245,191,158, 49,241, 15,239, 77, 91,176,166,254,219, 71,178,156,231,180,235, 61, 97, 65,203,142,189,
+161,202,205,192,239,103,247,163,115,183,190, 24, 58,242, 83,184,184,120, 44,227, 59,200,238,155,245,138,139,127,186,230,250,214,
+104, 17, 86,187,198,174, 10,126,126,254, 54, 91,254, 44, 31,148, 2, 45, 90,183,195,244,207,198,192, 70, 41,234,134, 55,106,215,
+117,208, 39,148, 22,204, 6,146,157,147,173,121,250,228, 81, 7, 93,198,147, 91,118,239, 75,189,222,156,149,149,133,123,247,238,
+ 33, 54, 54, 22, 49, 49, 49,200,201,201,129, 76, 38, 83,151,179, 62, 57,215,169, 83,103,200,197,139, 23, 29, 92, 93, 93, 95,191,
+111, 52, 26,225,228,228,132, 33, 67,134,240, 59,117,234, 84, 33, 34, 34, 98, 56, 33,100, 55,165, 84, 89,156,142, 46, 39, 46,213,
+217, 39,116, 67,235, 54,173,199, 3,128,216,217, 55, 97,237,182, 99, 49,165,158,107, 50,191,192,102,205,154, 87, 5,165, 32,160,
+171, 53,217, 79,211, 75,137, 18, 73,110,222,188, 25,196,229,114,121,255,185, 7,217,240,227,214,125,161,231,174, 61,232,179,100,
+217,247, 14,206, 18, 17,178, 20, 70,140, 30,218,219,238,123,176,163, 79,104,215,230,205, 91,255,250,245,130,175,120, 82,137, 4,
+103,111,197,227,147,207,190,208,167, 37, 61,252,158,218,248,235, 52,153, 79, 51,223,241, 86,249, 94,122,198, 5, 87,148,194,169,
+ 71,103,135,143, 63,236,225, 96, 52, 91, 33,215,152, 97, 48, 89, 97,181, 81, 40, 52,102, 60, 74, 86,193,195, 89,248, 54,210, 13,
+ 1,120, 2,200, 2,112,231,141,215, 40,248, 31,197,188,206,206, 15,143,192, 29,128, 17, 64,209, 31, 47,124, 93,210,251,133,223,
+127, 4,160, 70,129,166, 21,192,109, 0,121,197,153,173,226,162, 92,188, 19, 39, 78,208,136,136,136,215, 87,252, 55, 95,191,137,
+ 72,192,247,147,200, 60, 65,233, 99, 20,185,183,193,219,183, 98,206,250, 13, 63,185,201, 92,221, 95, 40,242,114, 2, 11,126,228,
+188, 61, 55, 11, 30,225,174,104,221,166, 85,167,241, 19, 38, 32, 36,168,162,192,106,181,210,135,177, 9,230,237, 91,182,142,144,
+249,135,173, 82,166, 60,156, 83, 24,130, 44,111, 47, 7,171,205,154,242,102, 4,203,106,179,166,188,177, 51,206,255,121,135, 1,
+ 46, 82, 33, 54,156, 74, 4,165, 0, 1,133, 76,194,199,222,203, 41, 72,136, 60,172,236, 86, 87,169, 25,178,100,126,187,182, 93,
+ 39, 95,124,244, 92,191, 63, 51, 83,127,134, 82,154, 94,146, 38,135, 0, 60, 46,129,179, 35, 31, 50, 71, 1, 92, 36, 2,144, 34,
+ 55,176,162,205,133,109,186, 78, 62,119,241,183, 23,179, 0,100, 21,205,135, 42,170, 41,246, 9,110,232,236, 82,113,127,159,241,
+ 75,157, 30,164, 88,192,227, 2, 85,124,196,112,115, 18,192,104, 33, 72,202, 50, 21,156, 57, 46,248,100,218, 2,183, 25, 83,199,
+159, 36,164,102,109, 74, 31,153, 74,219,118,173, 86, 43, 28, 54,108, 24,223,108, 54,155,134,140,254,180, 83,122,122, 86,207, 31,
+ 87,127, 39,242,242,242,134, 86,111, 65,100,204,179, 26, 95,127,189,160,202,177,211,151,143,204,255,226,227, 95,187,116,233, 34,
+219,183,111,159,173,172,253,249,135, 39,196,140,236, 31,182,238, 58,184, 99,229,247,139,241,244, 69, 30,182,108, 92, 7,106,181,
+108, 40, 35, 44,123,190,200,255,116,214,172, 89,226, 35, 71,142, 84,148, 72, 36, 74,173, 86,155,245,135,120, 4,135,240, 50,114,
+181,240,112, 18, 66,192,227,192,219,213, 1, 94, 50, 17,248, 92,128, 67,136,181, 56,205, 45,251, 79, 44,180,105, 21, 56,186,199,
+ 56,104,235, 15,139, 48,114,210,108, 60,204, 22,158,230, 56,202, 22, 78, 28,212,103,134,167,216,218,197,207,133,227,213,174,126,
+ 37, 72, 28, 4,152, 57,121, 24, 26, 69, 38,121,189,146,219,102,103,233,184,245, 0,204, 46,246,184,115,242, 35, 88, 78,142,124,
+156,222,181, 44, 83,163,200, 82, 20, 54,201, 25, 13,250, 23,118,134,164,207, 23,243,100, 59,163,126,189, 58,139,198,143, 29,197,
+105,222,180, 17,229,112,248,200, 86, 25, 9,165,192,103,159,124,140,137, 31,143,241,121,153,154, 57,119,221,186, 13,115,164, 94,
+ 53,190, 81,103, 62,158, 95,154, 38,135,228, 71,129,164, 14, 60, 72,197,249,198, 69,234,192,131,222,104, 5, 33,224,186, 6,214,
+ 87,144,252, 72,110,106, 78, 82,241, 79,224,111,106,186, 5,212,186,112, 46,193, 41, 52,111,127,222,141,196,212,152,133,145,209,
+ 25,183, 41,165,185, 1,173,167, 14, 55, 89, 40,212,122, 11, 18, 51,180,176,152, 40, 25,249, 65, 32, 42,247, 35, 33,139,183, 70,
+237, 32,132, 56, 23, 26,232, 55, 53, 83,110, 28,208,123,132,245, 25,184,114,205,198, 59,223, 47,154,205,205, 86, 24, 97,163, 20,
+ 14, 66, 46,196, 66, 94,193,194,133, 78,163,192,186,245, 63,165, 91, 64,250,208,203,151, 45,229,169,159,176,209,161,189,187,182,
+218, 75, 0, 33,225, 8, 82,252, 2, 43, 5,182,239, 62,194,161,125,143, 97,176, 90,140, 51, 36,222,161,151, 52, 25, 79, 46,216,
+163, 89,187,102, 13, 16, 32, 74,157,241,244, 99, 0,144,122,135,108, 8, 13, 9,173,255,230,123,213,170,133,212,183,231,184, 23,
+ 34, 16, 59, 79,114,117,243,156, 29, 82,171,158, 87, 80, 88,107,226,228, 94, 17,137,113,247,176,103,253,220,157, 54,189,113,193,
+133, 19,251, 23,173,218,242,203,128,246, 93,122, 99,235,143,223,205, 4,112,241, 79,231,145,205, 54,116,251,230, 77,254,124,161,
+ 8,102,139, 13,102, 43,205,255,107,177, 34, 55, 55, 15,102,139, 13, 14,142, 78,176,216, 8,204, 86, 27,204, 22, 27, 12, 70,139,
+228,227, 97, 17, 19, 0,220, 42,174,156, 21,107,180, 57, 35, 16,137, 2, 41,242,231,174,165,148,130,107, 49,114,124,125,125,119,
+ 3,128, 72, 36,130, 72, 36,130,205,102, 67,228,211,172, 73,158,161, 29,198,163,192,224, 89, 77,198, 23,121,137,215, 59,151,180,
+237, 62, 62, 62,221,223, 52, 89,122,189, 30,106,181, 26,215,110,220,145,109,222,113,176, 75,226,139,148, 32, 27,149, 25,156,188,
+130, 58, 3,232, 94,210,254, 84,166, 63,153,224,223,116, 44,231,243,137,195,171,173,217,126,252,118,220,233,111,102,150, 86, 37,
+170,116,152, 97,252,124, 92,223, 6, 75, 86,111,137,203,189,190,126, 74, 89,199,136,199,227,241,179,178,178, 94,159,223,107,127,
+218,211, 32,234,233,171, 94,171, 86,174,114,136,140, 87,225, 65, 98, 42,134,119, 8,192, 31,110, 2,165,104, 74,125,170,122, 84,
+173, 26,186,123,221,234, 37,188,184, 84, 61,126, 56,124, 27, 23,127,221,112, 45, 61,243, 86, 23,154,158,170,123,155,107,200,187,
+ 26,173,210, 52, 47, 69,103, 67,173,183,192, 96,180,192,108,163, 80,106,205,200,148, 27,161,212,154,160,214, 89, 48,188, 99, 64,
+177,223, 43,195,143,120, 18, 66,142, 83, 74,187, 33,127, 88, 42, 97,145,215, 32,132, 28, 47, 40,215, 31, 94,207,152, 49, 99,214,
+183,223,126, 27, 83,184,110,225,251,133,235,150,246,126,145,239,187,207,156, 57,179,246,146, 37, 75, 22, 55,109,218,116,239,239,
+191,255,158, 80,156,209, 42, 53,162, 85,184, 49, 39, 78,156,160,101, 60, 81, 4, 57, 58,187,139,156,197,124, 84,169, 28,128,143,
+102,109,245,112,118,243,206,116, 16,242,184,167, 78,157,118,203, 49, 74,193,225,112, 53,246, 71,177,170, 55, 19,139, 29, 79, 44,
+ 95,190, 28,131,186,183, 20, 39,103,155,213,209,201,186, 12,141, 17, 22, 47,207,234,194,133,139,151, 72,151, 44, 93, 54,241,248,
+ 81,155, 28,192,178,226,155,248, 26,222,229,146, 34, 57, 88,132,128,218,172, 41,185,137,183, 27, 0,192,187,228, 98,169,245,102,
+112, 11,114,107, 8, 1,180,122, 11,184, 92,146, 41,127,186,255,209,144,111, 22,182,219,185,247, 92, 42,229,184,168, 52,154, 68,
+ 71, 74,105, 74,233, 17, 3, 2,165,214, 12,153, 35, 31, 46, 82, 62,100, 18, 1,184, 69, 78,178,194,230,194,157,123,206,190,122,
+241, 34,231, 78,129,201, 42, 81,147,199,229, 36, 80,171, 89, 79,169,213,169, 91, 67, 79,120,185, 8,225,235, 42,130, 72,200,131,
+217, 2,232,140, 54,232,141, 86, 36,101,234,160,210,137, 17,214,186,127, 21,119,223,187, 6,247,192,134, 71,114, 94,220,233, 83,
+170, 57,181, 90,177,125,247,193,106,169,169, 25, 61, 79, 30,217, 37,202, 82,154, 17,157,164, 65,166,220, 0,112, 61, 49,111,241,
+ 15,162, 47,167,140,237,181,125,207,161, 23,237, 91, 54,126, 81,222,253,170,201,124,178, 51,172, 89,196,134,110,221,122,137, 99,
+110,157, 68,220,189, 11,139,212, 25,246,231,103, 17, 66, 56, 7, 14, 28,176,140, 29, 59, 86,181,120,241, 98,255,163, 71,143, 86,
+206,202,202,186, 7,192,236,226,226, 18, 90,189, 90,224,253,179,167, 79, 85,136,232,213,159,159,146,173,131,204, 81,128, 64, 47,
+ 71,220,184,118,198, 44, 20,242,139,205, 55, 41,104, 30, 28, 92,177,195,151, 56,122, 35,161, 75, 76,142,195,229, 49,163,134,191,
+ 56,123,245,105,206,218, 29,103,191,171, 32, 53,223,115,176,101,173,189,219,160,170,207,140, 79,134,225,219, 53, 59,113, 37,242,
+105,166,134,227,187, 40,205, 96, 57, 55,127,224,244, 18, 66,233,249, 6,219, 73,204,135, 70,153,165,120, 22,121,170,250,123,138,
+ 84, 15, 63,123,100, 39, 39, 87,101,198,203,108, 61, 73,205, 85,193,106,163,112,113, 20,192, 98,163,144,231,102,147, 93, 59,119,
+224,206,157, 27, 28,112, 57,163, 1,204, 47,181,153,139,228, 55, 21, 74, 29,248,249, 17, 33,113,254, 95,179,213,134,144,106, 85,
+177,105,237, 10,103, 15, 47,111,180,104,213,214,254, 40,181,123, 96,221,189,219,214,226,242,239, 81,109,174,172,250,161,161,212,
+207,115,141,115,197,154,223,203, 42,119,212, 27, 76, 86, 40,228,121, 16, 26, 95,162, 81,133, 44,184, 57, 90,145,164,244,197,195,
+244, 56,105, 89,185, 80,217, 15, 14,223,243,172,221,123,206,193, 99, 23,191,237,220,177, 13, 30, 38, 41, 33, 22,242,224, 32,228,
+194, 65,200, 5,159, 88,177, 98,253, 6,115,158, 66,213, 45,251,225,145,236,183,168,159,231, 11,158,126,243,111,114,222, 65,158,
+ 59,215,204,249,121,204,244,165,157,187,244, 30, 65, 30,222,185, 52, 11,192, 5,251, 30,244,168, 93,239,217,108,246,223,227,196,
+206,158,171,167,206, 89, 54,185, 83,183,254,224,114,121, 48,155,205, 56,180,111, 39,182,253, 48,239,137, 81,157, 51,130, 82,106,
+ 35,196,109,236,254,157,235,251, 79,159,187,130,212,174,219,168,113,177,126,146, 75, 54,126, 56,106,220, 64,111,111,111,167,255,
+ 68,180, 40,170,135,212, 68,215, 30,125,113,230,215, 95,240, 40, 38, 26, 54,154,111,152,108, 54, 10,121, 94, 78,186,197,108,220,
+ 94, 98,139,135,131, 67,224,214,109, 59,130, 57, 28, 2,147,217, 6,163,197,134, 41, 19, 62, 50,126,252,217,172, 22, 93, 59,181,
+142, 17,114,161, 76, 74, 78,115,185, 17,245, 56,204,198,151,250,143,154,182, 66,160, 55, 88,161,208,154,113,114, 75,201, 94, 71,
+236, 22,216,180,110,179, 94,163, 62,254,106,147, 72,196,229,152,106, 85,247, 79,104,221,164,214,203, 0, 63, 15,213,215, 75,126,
+104,116,253, 86, 84,215, 1, 67, 70, 57, 12, 15,173, 79,252,220,197, 78, 31, 13,233, 93, 71,226, 30,240,161, 38, 39,185,196, 41,
+211,248,142,174,242,128,202,213,180,255,137, 24,133, 28, 38, 20, 85,254,112,227, 36, 72,208,166, 63,237, 3, 0,190,126, 1,122,
+190,200, 89, 85, 14, 35, 66, 1, 96,205, 79,123, 26,220,143, 77, 29,179,114,229, 42,199,200,120, 21,238,197, 43, 32, 18,112, 96,
+ 50,219, 64,236, 12,106,219, 40,119,220,236,153, 51,156,243, 52, 86, 92,142,206, 66,204,221, 75,212,168,214, 15,113,180, 56,247,
+145,120,135,124, 8,160, 42,128,231,132,208,141,154, 12,159, 95, 41,189, 92,238, 78, 6, 54, 91,254,243,178,204,171,106, 21, 43,
+ 79,212,149, 47,148, 52, 37,132,214, 34, 20,174, 0,125,149, 83,112, 79,181,215,169,105, 50, 98,177,116,241, 92,172,222,252, 11,
+ 82,115,244,144, 89, 95,226,215, 45, 11,241,249,183,187,161, 51,148,156,213, 80,150, 31, 41,206, 24,189,105,184, 10,255, 47, 92,
+239,219,111,191,237,246,198,177,233, 86,194, 49,251,211,122,133,223, 95,178,100,201,226, 34,159,107,237, 53, 89,175,141, 86,225,
+ 70,149,177,113,213, 61,125, 3,127,255,245,200, 97,215, 60,181, 9, 14, 2, 46, 2, 42, 87,195,252,181,191,122,126,208,192, 3,
+217, 38, 25,246,108,250, 62, 87,175, 85,237,179,235, 98,225, 29,218,216,201,201,233,228,225, 67,191, 32, 40,192, 75,176,235, 90,
+110, 98, 84,130,238,117,168, 87,153,245, 66, 88,217, 89,203,235,211,187,183,227,133,139,151, 62, 43,201,104,113, 9,183,226, 79,
+ 59, 14,121, 57,137,249, 32, 4, 80,233, 44, 24,243, 97,223,119,191,141, 81, 27,119,212,136,225, 32, 5, 38, 75,153,147,142, 89,
+ 95, 78,208, 75,204,113,143,146,147,146, 95,117,232,254,249, 5,165,154,232, 7, 14,155,112,231, 81,236,183,121,101,215, 98,115,
+ 74,215,136,174,130,252,200, 1,192, 37, 4, 54,106,203, 8,169, 44,253,228, 79,205,133,233,134,159,202, 50,110,170, 87, 79,115,
+157,124,195,250,237, 92, 62,233, 39, 63,111, 47,119,169, 68, 76,165,142, 34, 82, 43, 52, 88,208,164, 73, 51, 97,229,144, 58,130,
+107,143,117, 72,206,210, 33, 33, 85, 1,145,119, 61,222,160,118, 31, 96,231,170,105,109, 8, 33,156, 55,147, 20,223,228,220,229,
+155,221, 55,175, 95, 41,202,144,155,240, 36, 89,141,244, 60, 61,210,242, 12, 72,207,213, 67, 42,230,163, 85,143,177,162, 19,191,
+110,236,222,190,101,227, 53,111,179,123, 19, 18, 18, 79, 36,189, 74,235, 95, 39,188, 17,118,254,188,173,165,171,107, 21,231,188,
+188, 4,165,189, 71,103,225,194,133,194, 37, 75,150,240,214,174, 93,171,108,210,164,137,207,204,153, 51, 59,103,102,102,222,174,
+ 84,169, 82,200,153,195,219, 47,214,107,213,179, 33,108, 38,207,150,173,219, 10, 68, 54, 30,206, 30, 63,110,218,191,111, 87,142,
+ 78,167,250,184, 84,195,225, 40, 91,152,161, 38,240,172, 80, 33, 70, 42,180,118,228,113,228,177,185,167, 62,217, 1,224,112,213,
+ 15, 38,159,191,116,247,105,108,131,200, 36,175,139,145,207, 50,115,181,166,234,207, 79, 77, 45,245,194,203, 37, 4,124, 46, 7,
+ 78, 98, 30, 56, 5, 87, 85,167, 10,117,159,129, 16,207,194,200, 41, 1, 41,248, 11, 16,130,212,220, 23, 81,118,228,108, 16,106,
+163,192,211, 20, 13,212,250,252,208,124, 69, 15, 71,100,101,164,224,199, 53,219, 17,117,247, 14, 58,125,208, 3,235,126,218,133,
+ 49, 31,246,215,151,165,198,225, 20, 68,180,138, 68,179,164, 98, 30, 0, 2,185,198,140, 67,215, 95,162,106, 21,142,221, 55, 6,
+ 0,112,146, 58, 66,161,210,129, 35,112,194,243,200,147,142,167, 46,221,154, 57,231,155,149, 95,228,165, 69, 39, 63,123,112, 13,
+ 33, 30, 10, 84,169, 96, 66, 76,186, 51,238,230, 84, 70, 72,181, 32,112, 4,119,236,210,206,142, 9, 91,250, 43,231, 80,183, 6,
+245,106, 54, 13,244,114,129,206,104, 45,136,106,113,177,109,235, 14, 36, 37,166,140,202,142, 57, 18,245, 62, 28,173, 58, 35, 62,
+203,193, 59,120,226,131, 91, 23, 18,122, 15,153, 8,223, 10, 1,117,203,147,182, 96,207,123, 86, 59,141,150, 80,226, 58,115,218,
+220,229,147, 59, 69,244,195,205,107, 23,112, 47,230, 57, 26, 55,110,136, 15,122, 13,130, 74,153, 27,122, 96,199,170,142, 0,206,
+240, 68,150,201,141,154,181, 35, 54,171, 21,113, 79, 30, 62, 47, 78, 75,155,250,228, 30, 0,231, 63, 52, 79,121,214,168, 43,149,
+185,221, 51,152,172,120,245, 42, 5,191,253,126, 57,188, 96, 61,187, 17, 9,184, 56, 27,149, 9,147,217, 6,147,197,134, 86,173,
+ 59, 26, 5, 28, 67,203, 69, 43,183, 54, 73, 75, 77,227, 72,156, 61,108,110, 21,106, 8,124, 69, 38,195,253,120,133,192,100,182,
+ 33,200, 79, 82,170,166,167, 95,181,197,211,166, 77,169,193, 21,136,161,210, 24,140,105,169,175,124, 54,237,185,164,126,252,228,
+ 65,133,138, 94, 50,231,239, 86,109, 20, 40,245, 4,153, 10, 3,114, 85, 74, 50,100,220,116,191,205, 63,124, 59, 20,128,221,115,
+211, 18,138, 42, 39,206, 94, 11,117,117, 18, 16,181,222, 98,203, 81,154,172, 67,122,181,125,167,186, 83, 96,178,198,174, 92,177,
+202, 49, 42, 94,133,251,241, 10, 56, 8,184, 16, 10, 56, 48,154,109,176,231,116, 34,132,112,170,212,110,253,113,179, 6, 97, 56,
+115, 47, 27, 92, 46, 7, 58, 85,158,150,135,156,216, 6,109, 58, 57,214,111,212, 4,109,219,180,198,179,216,167, 1,199,143, 30,
+106,127,227,183, 43,233, 82,175,144, 73,234,204,167,191,148,171,158,107,181, 92,179,208,231, 35,223, 10,149,154,247, 25,244,145,
+ 44, 48,160, 2,241,242,112,135,133,242, 48,246,195,190,118,159,249,249,198, 28, 88,242,205, 76, 24, 12, 70,120,186, 8, 65, 41,
+176,117,205,124, 24,141, 70,248,185,139,160,208,152, 75,252,126, 89,126,164,164, 40, 84, 57,155,161,143, 23,103,182,222,124,159,
+ 16,114,124,198,140, 25,179, 0,208, 25, 51,102,204, 42,124,253,237,183,223,234, 0,164,150,214,116, 88,212,120,241,138,110, 92,
+137,133, 18, 10, 67, 60,124, 3,111,156, 61,115, 90,118,228,190, 13, 55,127,185,139,136,198,190, 16,240, 56,112,148,249,225,126,
+162, 2, 39, 14,175,151,255,186,119,227, 43,131,193,176,172,236,182,230,224, 6, 78, 18,231, 51, 63,239,220,103,243,112,119,231,
+252,120, 54, 43, 62, 71,101,121,221,164, 21,123,235,168,237,238,153, 77,190, 20,228,180,131,131, 67, 53,163,209,232, 90,214,129,
+221,122,246, 69, 65, 18, 47,121, 31,215, 86, 16, 46,215,186,115,215, 78,120, 56, 11, 97, 48,219, 48,227,139, 79,117,195, 59, 73,
+229, 67, 6, 12,106,215,182,235,228,139,124, 73,240,133,102,225,193,180, 94,189,122,114, 46,151, 91,166, 94, 78,194,237, 63,245,
+174, 8,173,236, 56,122,246,244,225,179,139,105, 46,180, 43,113, 87,149,246,224, 58,128, 63, 68, 72, 72,213,170,194,221, 7,126,
+253,180,223,128,129,115, 42,212,237, 37, 77, 76, 83, 64, 64, 76,104, 88,195, 23,151, 78,255, 66, 83,146, 98,167,148,101,178, 0,
+ 32, 51, 43,215,223,211,211, 27, 81, 9,106,188,202,209, 33,189,192,100,165,229, 25,160,210,169, 80, 39,208, 15,114,133,194,255,
+173,247, 47,240,203,153, 51,103,250,119,237, 57, 16,147,191, 88,208, 98,203,250,239,163,165, 62,213, 71,170,211, 99, 47,219,243,
+164, 72, 8,201,253,242,203, 47,171,254,244,211, 79,156,161, 67,135,234,194,194,194, 28,134, 13, 27,214, 98,199,142, 29, 14,142,
+142, 14,186,251,215,142,206, 25,253,201,140,158,155, 86, 47,172,155,151,151, 71, 44,102,243, 41, 83, 94,222, 12, 85, 25,102, 46,
+249,215,153, 79, 72,205, 5, 35, 58,182,244, 60,234,230,200,169, 37,162,198, 65,164,230,130,125,244,209, 60,211,243, 83,107, 84,
+ 97, 3, 86,124,146, 42,183,205,214,115,188, 22,149,101,178, 0,128,195, 37, 48, 90,172,112, 18,243,193,225,112, 10, 77,188,239,
+182,125,167, 28, 61,101, 66,240,185, 28,240,184,249,209,206,108,165, 9, 19, 63,234,105,247,147,128,197, 74,161, 51, 90,160, 45,
+120, 58, 84, 41,179, 49,243,139,169,248,160,123,111,140,254,120, 42,242,116,192,221, 4, 21, 76,102,115,153, 39, 5,135,112,160,
+ 53, 88, 48,178, 83, 32,114,213, 38,104,116, 22, 24, 45, 54, 56, 10,121,224,243, 56,144, 56,240,224,236,200, 7, 40, 21, 20, 94,
+ 76,248,124,190,222,100, 50,237, 44,229, 56,161,178,191, 55,116,102, 14, 26, 13,252, 30, 29,154, 86, 71,204,245, 67,188, 43, 55,
+ 31, 84,249,236,139,217,248,116, 76,119, 28,124, 82, 21,110, 94,129,144, 74,196, 48, 83, 14, 0,251,134, 14,161,116,158,205, 55,
+180,207,224, 13, 63,109,125,250,245,220, 25, 14,114, 13,129, 72,192,197,197, 11,231,113,227,214,221,213, 89, 49, 71,118,226, 61,
+194,167, 28,111,103,103,103, 56, 8,185, 48,154, 12, 70,251, 83, 23, 40, 40, 16, 46,245, 14,217, 80,240,196, 31,110,181,161,152,
+247,202, 54, 90,124,177,108,198,228, 47, 23, 46,238, 20,209, 15,103,143, 31,196,129,131,251,172, 77,187,140,226,238,218,182, 30,
+ 45, 58,244, 64,139, 78, 3,113,234,151, 29, 83,249, 98, 89,205,177,159,126,245, 77,171,118, 93,113,246,196, 65,100,164,167, 44,
+183,183,188, 92, 62,153,220,174, 99,119,232,141, 86,180,108,223, 13,167,143,253,242, 9, 10, 58, 89,216,127, 19,123,227,250, 12,
+142,101,234,148,201,252, 76,185,145,159,165, 52, 34, 37, 75,139,196, 12, 45,126,221,187,133,218,127,189, 48, 54,108, 85,167, 34,
+127,236,210,139, 47,253, 43,250, 26,248, 6,157, 56,246,121,124,232,232,143,134,243,171, 84, 11,229,100, 42, 12,200, 82, 24,144,
+173, 48, 64,173,183,160, 90,197, 96,142,217, 66,154,150,247, 56,123,200,132,252,117,199, 18,224, 44,225,163, 89,232,219,119,180,
+181,217,108,255, 49, 89, 43,243, 77, 86,116,130, 2, 34, 1, 23, 34, 1, 7, 34, 1, 23, 22, 43,181,235,193, 69,236, 85,189,235,
+196, 73, 19,252,140, 22, 32, 71, 97, 4,143, 75,224,229,225, 42,105, 88,119, 48,182,126,255, 9, 0, 96,204,151, 63, 98,244,200,
+ 97,168, 81, 43, 12,242,188, 60,159,193,253,186,174, 4,240,139,189,101, 61,121,246,114,192,217,171, 81, 95, 78,156, 54, 79, 58,
+160,123, 91,238,189,120, 5,210,114, 13,120, 30,171, 42, 87,228, 13, 0, 44, 86, 27, 40, 40,182,239, 59, 14,177,144,135, 44,133,
+ 9,148, 82, 44, 92,187, 31, 78, 98, 62,210,242,242,155,251, 75,163, 52, 63, 82, 90, 68,170, 28,209,198,110,200,207,229,242,180,
+ 55,162,245,237,183,223,198,124,251,237,183,197, 70,200, 10, 77,214, 91, 79, 42, 45, 20, 74, 67, 61,220,253,110,158, 61,125,210,
+233,151,251, 86, 92,186,159,131,126, 45, 43, 66,157,155,140,101, 95, 12,200, 37,160, 70, 14,151, 43, 55,232,180,135,117, 58,205,
+ 34, 74,169,169, 84,147,229, 27, 18, 46, 17, 59,159, 95,183,233,103,139,135,151, 23,118, 94,203, 77,201,211, 88,204,255,105,182,
+ 50,147,187,103, 54, 85,177,216,204, 93,116,233,113,101, 62,222,218, 40, 4,223,174,255, 21, 0,133,205,102, 3,181,217,192,119,
+144, 74, 60,171, 54,205, 40,184,208, 57,240, 56, 68, 95,244, 10, 64,109,150,148,172,248,210,195,160, 4,128,204,145,143,125, 87,
+ 94, 1, 64, 6, 87, 21,249,120,200,128,252,230, 66,189,209, 65, 89,171,106, 85,218,176, 97, 67,185, 88, 44,126,235,131, 93,222,
+230, 66,187, 42,208,243,231, 70, 0, 75,253, 66, 90,246,238, 44,173,211, 72,200, 17,160,126,136, 47, 46,157, 57, 66,111,158,222,
+ 58, 70,155,241,244,103, 59, 43, 34,212,122, 51, 82,115,244,120,149,163, 71,122,158, 30,233,185, 6,164,231,233, 65, 8,129,222,
+248,110,195,223,104, 50,159, 30,216,249,243,230, 30, 6, 19, 6,181,234,212, 27, 83,231,173, 11,220,185, 97,201,121,177,119,104,
+115,123, 18,109, 41,165, 86, 66, 72,210, 71, 31,125, 84,119,207,158, 61,220,218,181,107,235, 30, 63,126,236, 8,192, 6,192, 36,
+149, 58,138,183,252,240,237,153, 70,141, 26,237,125, 21,251,228, 34,128, 60,123,186,231, 87,106,243,145, 40,212, 57,119,108,128,
+164, 89,231, 32, 31, 71, 4, 72, 84,157, 67,165,247,151,121,181,255,108,113,230,133, 85,153,105, 6,203,185, 44, 29,183,222, 43,
+ 53,223,174, 92, 65,179, 65,255,162, 79,191, 65,224, 18, 14, 76,122,237,139,194,202,229, 37, 19, 98,254,174, 39,144, 58,240,225,
+ 36,230, 65, 42,230,163, 69, 77, 55,148,227,122, 70,205, 86, 27,180, 6, 43,116, 6, 11,244, 70, 11, 60,252, 93,241,211,206, 3,
+ 72,206,212,225,215, 59,217,120,250, 66,133,224,138, 18, 80, 90,246,101,210,102, 53,107,186,247, 29,234,196,229, 16,112, 57,132,
+ 83, 51,180, 58,114,213, 38, 8,120, 28, 8, 28,196,144,136,120,112, 22,243, 33, 16,240,145,153,153, 9,131,193,128,128,128, 0,
+135,210,173, 32,133,147, 84,140,224, 42,126, 48,153, 45, 56,121,245, 17, 22, 77,233,131,142,173, 26,128,240,165,120, 98, 8,135,
+147,155, 19,108, 28, 14, 76, 22, 27,140, 38, 43, 0, 78,137,209,183,128,128,128,118, 18,137, 68,162,213,106, 85, 47, 94,188,184,
+156,246,228,112,178, 87,173, 94, 99, 79,159,189,184,179,219, 7, 29, 17, 21, 29,131,131,191, 28,189,150,237,174,152, 86,248,157,
+218,181,107, 55,241,240,240,144,230,228,228, 40, 31, 60,120,112,251, 45,159,126,137,196, 59,244,179,166, 45,218, 64, 45,207, 68,
+198,203, 68,187,159,162,107, 4, 58,225,171,111,215,213, 15,169, 30, 82,223, 74,243,141, 87,205, 0, 39,124, 62,111, 77,253,170,
+193,213,235, 23,118, 8,169, 17, 32, 45,221,100, 73,156, 59,125, 56,246,243,111,123,244, 27,129,139,103,143, 98,197,162, 47,118,
+ 74,100,158, 53,220, 92,101,245,106, 55,233,132,107,231,143,194,193,201, 7,174,238, 62, 45,134,142,156,212,161,223,208,113,184,
+113,237, 60, 86, 47,153,181,195,106, 80,237,182,167,172, 82,239, 32,207,122, 13, 91, 13,113,114,243,134, 92,161,130,147,171, 23,
+106,212,105, 56, 68,234, 29,244,165, 58, 35, 62,235,109,207,117, 27,165, 48,152, 40,242,212, 38,188,204,210, 33, 41, 61,223,104,
+217,108,229,200, 9,178,218,136,212,129,199,115, 51, 63, 11,120,112,254, 34, 13,244,247, 38, 75,191,249,130,107,130, 3,178,228,
+249, 38, 43, 75,105, 68,150,194, 8,181,222, 12, 55, 9, 15, 54,171,173,220, 79,221,121,106, 19,156, 10,242,104,173,182,183,207,
+ 13, 95,191,109, 95,200,253,216,212, 94, 43, 86,172,114,188,151, 80,196,100,241,243,163, 89, 34, 1, 23, 86,155,173,224, 78, 83,
+134,193,230,241, 39,247,236,218, 1, 47,179,117,249,189,150, 57, 4,193, 97,141,224, 33,182,161,253,192, 25, 0,128,238, 93,243,
+135, 47, 73, 72,211,224,216,205, 44,224,143,137,221,165, 95,139,117, 58,238,166, 93, 39, 62, 59,176,127,175, 76,111,229, 97,227,
+169, 36,104, 13, 22, 56, 8,184, 16, 9,184, 16, 11,184,127,200,199, 46,219,104,229,231,220, 37,103,155,161,213,235,161,212,153,
+ 65, 1,220,126,166,134,206,104,129, 66, 99, 70,147, 80,215,119,125,246, 57, 1, 32,226, 77, 67,244,166, 89, 42, 18,145, 42,142,
+ 59, 69, 53, 10,215, 47,201,200, 21,205,217, 2, 80,174, 30, 92,188, 55,157, 99,209,215, 66,169, 91, 13,153,187,231,205,211,167,
+142, 75,127,185,111,195,229,232,124,147,101,214,101, 99,249,151,131, 83,148,242,236,182,148,210,120,123,127, 76,226, 89,179,142,
+216,209,241,226,119,171, 54,154,188,188, 43,216, 14,223,148,103, 42,180,214, 63,196, 16,173, 6, 3,135,218,168,192, 30,147, 85,
+208,228, 97,154,247, 73,111,216, 40,197,252, 85, 7,176,120,218, 64, 72,197, 67, 29, 9, 33,142, 26,189, 5, 83, 22,108,198,242,
+175, 70, 57, 57,138,120, 32, 4,208, 27,173,248,112, 80,111,251, 42,160,222,130,231,183,246,168, 85, 9,199, 31, 23,109, 46,108,
+220,226,131,187,141, 27, 55,150,187,186,186, 66, 44, 22,255, 39, 82, 97,231, 69,187,184,222,133,153,114,164, 56, 57, 57,181,118,
+118,118, 46,170,167,145,203,229, 71,222,166, 22,170,228,217, 23,211,147, 30, 52,106,222,182, 59, 46,159, 57, 66,111,158,218, 50,
+166, 60, 99,244,184,186,185,190,140,124,240,188, 6, 33,110,249, 17,173, 2,147,101, 52,219, 16,232,237,136,151, 73,207,225, 34,
+147,189,180, 87,207,209, 43,180, 39,225,208,143, 9,232, 86,117,122,236,129, 2,211, 51, 88,226, 19, 26, 29,243,240,222,162,110,
+ 67, 38,243, 58,245,155,192,221,240,237,164, 89,120, 35,137,181, 20, 76, 79,159, 62,125, 52,106,212,168,102, 55,110,220,176, 2,
+208, 18, 66,204, 92, 46,215,209,104, 52, 10,218,182,109,171,120,242,228,201, 21, 20,147,180,248, 38, 45, 71, 30,244, 32, 34,213,
+ 7, 85,131, 27, 14, 14,116, 82,117,108,219,178, 41,154,214,242,199,203,150, 77, 1, 96,242, 11,181, 52,164,197,248, 45,251,170,
+120, 86, 60,185, 97,219,177,197, 99, 6,118,152,226,215,125,193,138,212, 99,243, 74, 77, 68, 77,126,116,185,115,113, 54,158,199,
+229,192, 73,204,135, 84,204,131,147,152, 15, 39, 7, 62,204, 22, 90,158, 39, 71,106,182,216,242, 35, 90, 70, 11,212, 58, 11, 46,
+222,203, 64,186,194, 8,185,202, 4,157,201, 10, 10,154,255, 52,106,199,213, 60, 51,238,186,203,235, 99, 31, 88, 95,177,105,237,
+247,206,135,174,167,188,238,209, 39,115, 20,194,201, 49,191, 55,246,213,171, 87,225,238, 94,246,211,190,205,102,195,193,211,183,
+177, 98,251, 69,156,222, 58, 29, 14, 2, 46,234,244, 92,128, 17,189, 26,195, 70,109,120,254, 52, 38, 35,184,102, 93,111, 14, 71,
+ 12, 14, 33, 48,152,109, 0,104,137,251,211,104, 52,186, 39, 39, 39, 43,171, 85,171,230, 83,161, 66,133,126, 92, 46,151,138, 0,
+195,145,189,185,218, 11,199,119, 59,106,116, 6,171,163, 69,177,181, 90,154, 46, 34, 56, 56, 24,132, 16,234,225,225, 33,184,120,
+241,162, 58, 44, 44,204,243, 45, 77, 22, 71,236, 85,125,245,232,241,159,245,171, 26, 20,132, 3,187,183,130, 82,114,200,222,239,
+239, 58,118, 3,223,204,252, 99, 15,195,207,231,173,169,191,124,193,228, 63,188, 55,126,230,138, 82,123, 29,138, 69,210,105,125,
+ 6,143,197,221,219,191, 99,217,130,207,247, 26,212,185, 35,204, 22,115,255,220,180,132,189, 85,106, 54, 6, 53,169,112,118,255,
+247, 24, 56,108,140,168, 83,183,126,184,113,237, 60, 22,207, 26,191, 75, 43,207,252,200,222,241,191,108,148,255,113,219,206,189,
+248, 58,131, 9,107,150,206,197,184,105,139,208,164, 93,119,254,195,123, 55, 63, 6,240,181,189,219,108, 48, 89,209, 54,204, 35,
+223, 60,155,109, 56,154,192,229, 21, 87, 3,121, 92,194,169, 23,228, 2,157,209, 2,165,214, 92,250,141, 74,192, 79,151, 43,148,
+149,126, 88,252, 25, 87,163,183, 32, 75, 97, 68,166,194,128,108,249,127, 12, 86,182,194,128, 44,133, 17,124, 30, 65,108,252, 11,
+112,248,188,114,231,231,229,169,205,104, 84,221, 53,255, 28,125,203,214, 17, 51,207,185,241,233, 43,247,251,172, 88,177,210,225,
+126,162, 10,209, 9,202,130, 72, 22, 23, 34, 62, 7,194,130,255,173, 54,160,172,159,144,121, 85,173, 50,124,212,152,246,206, 82,
+ 49, 82,227, 50,193,227,230, 15, 17, 35,243,242,135, 76,164,199,164,241, 99,225,225,238,130,228,108, 3, 86,255, 18,139,232, 71,
+207, 96,211,149,111,179,215,108,220,219,101,244,196,207, 93, 56,124, 33,118,156, 73,204, 47, 39,215,138, 39, 55,143,233, 83,159,
+ 63,208,168,149, 57, 20,212,106,103, 0,128, 80,139, 53,191,186, 45,158, 63, 3,123,183,255,136, 51,145,153,175,147,183,174, 31,
+ 90,142,207,102, 46, 68,182,210, 88, 80,245, 75,143,100,189,241, 58,171, 72, 36,234, 79,175,139,152,163,226, 94,147,130,215,198,
+ 18, 52,140,111,152, 43,227, 27,239, 27,223,208,187, 95,204,195,255,166, 50,155, 14,255,100,138, 92,189,106,203,156,100,191,159,
+ 58,117, 76,114, 36,154,190, 54, 89, 38,109, 54, 93, 52,185,123,138, 82,158,213,169, 92, 38,203,171,122,109,145, 68,114,101,206,
+194,213, 6,239, 10,149, 44, 39,239, 41,115, 84,122,235,159,194, 34, 2, 71,137, 85, 34,243,212,187, 4,134,175,224,235,140,115,
+179,178, 30,105,202,138, 60,217, 40,197,241, 91,233,160, 52,255, 17,105,255,213, 87, 40,120, 50,135,213,150,223,172,114,238, 94,
+ 38,120, 5,121, 40,246,134,191,215,111,252, 81, 25, 17,166,208, 12, 89, 60,255,117,115, 97,147,186,249,145, 44,103,103,103,184,
+184,184, 64, 42,149,194,158,166,195, 66, 74,234, 93,232,228,228,212,250,222,189,123, 14,206,206,206,224,114,185, 48, 24, 12,168,
+ 85,171,214, 91,157,232, 82,159,208,137,141,218,245,158,213,162, 93,119, 92, 60,125,152,222, 60,189,109,108,121, 7, 66,140,232,
+208,236,216, 55,223,204,175, 50,103,209, 15, 34, 39, 7, 30, 30,171,141,224, 16,130, 64,111, 71,184, 75, 56,184,124,100,135,126,
+ 96,247,102,118, 15,142,231,239, 95, 97,231,242,181,155, 36,203,151, 44,104,235, 84, 33,228,162,234,213,211, 92, 0,208,164, 63,
+ 89,234,232, 19,250,168,226,239,103, 79,214,109,221, 27,222,126, 65, 29,203, 17,254,165,132, 16,109,124,124,124,194,156, 57,115,
+ 66,150, 44, 89, 66,185, 92,174, 13,128,104,213,170, 85,218,184,184,184,123,200,239,154,139,178,110, 54,237, 59,214,154, 34, 21,
+ 90,155,184, 57,114,106, 5,249, 56,162,105,173,252, 86,209,129, 17, 45,224, 31, 16,128,248,116,109,189, 92,173,141,175, 54,114,
+131,214,109,140,190, 83,217,131, 59,198,162, 51, 62, 66, 25,131,201,150, 84,103, 11, 19,228, 11,163, 89, 78, 98, 62,108,249, 55,
+246,114, 25, 45,131,201, 10,157,193, 10,157,209, 2,141,209, 10,173,209, 10, 27,205, 63, 39, 8, 33, 48, 89,108,176,235,177,249,
+141,186,239,236,230,129,160,202,249,189,100,157,196,249, 67, 61, 56, 59,242,243,251, 72,187,187,195,203,203,203,174,168,168,209,
+148,127,138, 27,205,182,215,205,250, 70,147, 5,148, 82,196,198, 62,157,158,148,144,208,179, 90,112,181, 86, 53,235,212,117,115,
+ 20,113, 0,160, 68,163,165,213,106,173, 78, 78, 78, 94,110,110,110,156, 87,175, 94,189, 54,207,213,234,181,181,252,114,248, 16,
+250,244,233,173,126,124,251,254,235, 46,238, 58,157,142, 52,111,222,220,217,223,223,159, 99, 48, 24,148,229,219, 7,132, 72, 60,
+171,247,242, 15,109,182,232,195,143,198, 85,111,219,161, 11, 46, 93, 56,139, 95, 15,239,249, 89,147,249,212,238,145,179, 67, 66,
+ 66,255,212,235,176,106,112,245, 63,245, 58,172, 84, 37,184, 84,163, 85,179, 78,195,198,148,240,112,230,248,126,170,231,152,198,
+231, 39,188,147,253,251,214,127,245,245,224,143,103, 86,237,218, 99, 48, 62, 28, 54, 2, 60, 30, 23,151,207, 29,195,242, 5, 83,
+ 79,168, 21,153,195,237, 73, 19, 0, 0, 82,179,166,160, 90, 64,165, 79, 3,170,214, 70,228,205,107,120, 30,251, 48,230,254,157,
+ 27,181,170,133, 53,129,167, 95,224,167,164,102,205, 37,244,209, 35, 83, 89, 58, 70,189,254,197,136,225,195, 80,180,215, 97,211,
+240, 16,119,242,230, 9, 0, 64,171,202, 52,109,249,126, 74, 92, 97,175, 67,155,201,248,162, 36, 93, 69, 94,214,193,203,191,221,
+154,214, 51,162, 11, 39, 91,105,204,143, 96, 41,140, 5,139, 1,217,133,255, 43, 13, 8,246,147,226,105, 76,164, 77,175,200, 62,
+ 84,206,243, 82, 63,162,127,231, 71,133,117,215,102,163, 32,128,190,188,231, 55,229, 59,143, 93,186,108,133,195,253, 4, 53,162,
+ 19,149,249, 77,133,124,110,190,193,226,115, 94,155,174,252,222,236,101, 68,135, 8,119,241,200,225,131,144,173, 52,193,102, 3,
+120, 92, 78,193, 34, 64,178,138,224,165, 74,139,236,188, 44, 36, 36,189,128, 60,253, 57, 56, 28, 14, 60,252,170,195,222,240,163,
+149, 10,125,181, 70, 26,214, 47,162, 21,239,240,239,105,112, 20,241, 96, 80,101,224,212,190,239,179, 12,106,229, 34,157, 86,125,
+ 88,151, 19,151,106,239,182,115, 8,201, 82,170,245,222, 34, 62, 23, 7,182,255,128,254, 35,198, 23,236,148,252, 63,211,103,127,
+ 3,112, 8,114,243, 84, 32,132,148, 55, 74,122,167,140,215,111,195,251,208, 64,113,230,234, 15, 15, 10, 37, 63,141,210, 83,103,
+ 79, 31,147, 92, 79, 18,225,246,211,180, 2,147,149,101, 91,248, 73, 68,138, 74,145,219,153, 82, 26, 91,174, 18,112, 56,157, 7,
+142,156, 22, 19, 84,189,166,225,210, 67,117,162, 92, 99, 46, 49,207,161,105,191, 57, 49,119, 79,172,237,170, 48,199, 79,144,250,
+213,178,218, 44,150,165,218,204,167, 11, 74,104, 58, 20, 46, 88,125,224,117,179,225,151, 75,118,228,255,111,181,194, 74,109,160,
+ 54, 96,210, 87,235, 97,177, 89, 97,179, 90, 97,179, 82,152,173,212,177,172,226,122,249, 85, 58,156,247,100,127,232,144,175,255,
+220, 92,232,226,226, 2,119,119,119,184,187,187,163,208, 24,189,107,115,161,179,179, 51,164, 82, 41,174, 93,187, 6,177, 88, 12,
+137, 68, 82, 46,221, 34, 38,107, 66,195, 54, 61,127,104,215, 99, 20,206, 29,222, 72,239, 92, 61, 54, 78,155,241,116,179,221, 17,
+122,171,149,152,205,102, 68,116,106,243, 34, 42,230,217,233,217,211, 62,238,210,172,219, 56, 81,211,144, 10,208, 27,173, 72, 73,
+122,142,203, 71,182,233,171, 87,241, 61,211,190,101,227, 23,102,179, 25, 86,171,181,204, 27,185,222,104,202,230,242,197,146, 65,
+131,134,240,239,220,190,125, 72,234, 85,253,128,149,112,238, 19,106,171, 67, 8,233, 83,167, 78, 13,152,204, 54,104,181,202,188,
+242,110,179, 74,165, 74,216,186,117,107,149,225,195,135, 59,214,172, 89,147,255,252,249,115, 44, 95,190, 60, 71,165, 82, 37,216,
+171,113,246,234,211, 85, 60,146, 23, 39,180,153, 6, 7, 58,169, 58, 38,183,104,138, 65,221, 90, 96,239,137,235,184,124,237, 6,
+ 94,168,165,247,212, 22,222,145,151, 47, 82, 13,181,220,148,135,122, 52,173,196, 61,176, 61,239,144, 87,219,153, 3, 40, 21,157,
+205,186, 60, 79, 99,255, 77, 28, 80,233,204,112,118,204, 31,239,169, 48,178,197, 37,196,110, 71, 68,128,132,107, 55, 34,107, 55,
+ 8,174,137,168, 4, 5, 50,229, 6,232, 12, 22,216,108, 20, 54, 80,184, 59, 9,225, 32,224, 32, 57, 41, 1, 54,106, 74, 44,231,
+229, 34,171,117,171,214, 60,128,128, 16,202,227,243,120,160,200, 31, 95, 81, 44, 22,171,189,188,188,236,138,104,153, 44, 22,244,
+233,210, 24, 77, 26,214, 65,207,113,249, 99,102, 94,248,121, 6, 92,165,124,236,221,185, 25,201, 87, 86,238, 12,106, 54,254,236,
+195, 7, 49,125, 99,162,126, 31,242, 65,125,113, 61, 31, 94,170,160, 36, 61,181, 90,125,136, 16, 34, 20, 8, 4, 93, 90,181,106,
+229,118,232,208, 33,185,135,135,135, 77, 40, 16,100,245,232,222,205,198, 23, 8,114, 11,215,253,237,183,223,248,227,198,141,115,
+202,203,203, 75,206,200,200,184, 65, 41, 53,151,254, 32, 24,218, 1, 28,236, 1, 33, 14, 82,177,227,139,166, 29, 6,249, 53,108,
+210, 88,214,171, 79,127,136,132, 34,156, 59,123, 26,107, 86, 46,217,175, 78,123, 60,178, 60,123,242,125,245, 58, 76, 73, 78, 76,
+208,234, 12, 97,181, 27,180, 33,215,206, 30,153, 76,136,231, 74,174,200,249,251, 14,125,198, 87, 77, 72, 85, 99,205,183,211,225,
+ 42,147, 32,241,249, 19, 93,220,227, 7,235,205,122,229,116,123, 77, 22, 0, 56,230, 88,251, 54, 29,214,197,213, 96,178,226,234,
+197, 19,122,155,197,214,229,198,149,147,207, 43, 86,111,232, 80,187, 97,123,215,236, 95, 55,247, 1,176,183, 44,157,148,199,127,
+142,224, 6,132, 52, 74,188,112,241,188,204, 59,176, 22,151,128,192,100,208, 35, 43,254,142, 69,155,241, 68,169, 72,121, 96, 87,
+ 47,220,156,151,248,106,230,188,239, 38, 52,108,208, 64, 66,225,240,135, 8, 86,161,193,202, 86, 26,225,225, 36,132, 78,153,133,
+184, 59,167,245,218, 44,110,169,227,157, 89,140, 26,199,236,204,140,215, 77,108,234,140,167, 77, 74, 91, 63, 59, 51, 67,104, 49,
+106, 28,203,190,213,113,225, 44, 17,226, 65,226,171,215,137,239, 34,126,126,110,150,144,207,125,157,167, 85,120, 45, 40,131, 54,
+ 2, 7, 23,188,202,209,131,128,194,102,181,192, 98, 54, 66,165, 84,226, 85,106, 58, 50,210, 51,160, 82,201,225, 40,117, 69,237,
+122,141,224, 36,113,192,253,203,251, 65, 41,181,107, 92, 67, 51,225,135, 52,108,210, 82,244, 48, 41, 63, 23,203,129, 79,113,108,
+207,146, 28,181, 50,179,165, 42, 53, 54,174,188,215, 98,139,213,122, 62,250, 81, 92,173,138,190,149,201,189,231, 10,236,252,105,
+ 45,140, 5,145, 77,179,217,138,135,201, 26,164,229,106,145, 28,255,152,218,172,214,127,205,132,212,188,146, 3,128,224,213,169,
+ 93, 3,157,134,246,194,143, 63,174, 71,124, 66,146,109,209,228,174,201,106,149,252, 3,123, 77, 86,209,217,189, 53,233, 79,150,
+142,252, 49, 49,229,104, 84, 46, 71,103, 44,125,126, 43, 7,207, 64,180, 28,185,252,140, 78,149, 43,180, 26,180,188, 99, 59, 71,
+238, 41, 78, 51,223, 65,195,184,232,243,129,144,138,121, 32,132,160,176,185,112,221, 55, 99,225, 40,202,111, 91,214, 25, 44, 24,
+ 58,101, 5,118,174,152, 10, 10, 96,112,255,235,218,146,202, 89,164,105,175,226,139,164,204, 87, 29,186,127,126, 65,111, 18, 25,
+186,245, 30,126,183, 65,131, 6,114,177, 88, 12,177, 88, 12,103,103,103,184,186,186,194,197,197,165,204,109, 47,113, 48,210, 34,
+189, 11, 57, 28, 14, 56, 28, 14, 36, 18, 9,164, 82, 41, 36, 18, 73,169,154, 37,154,172,214, 61,214,181,239, 57, 26,231, 14,111,
+162,119,174, 30,251, 88,155,241,244, 39,123,143, 81, 65,115,207,253, 62,125,250,132,141, 27, 55, 78, 48,111,218,184, 51, 39,206,
+ 94,142, 61,112,124, 83,247,188, 60,185, 63,165, 20, 46, 50,217,203,129,221,155, 29,107,219,188,225,139, 11, 23, 46,216,246,236,
+217, 99, 32,132, 60, 40,171,156,217,153,153, 63, 95, 56,127,113,126,203,214,109,176,121,251,158,214, 49,143, 30,183,126,254, 60,
+ 14,254,129, 65,168, 92, 37, 24, 90,226,138,139, 87,174, 65, 45,207,252,217,158,114,190, 17,213, 34,121,121,121,191, 15, 28, 56,
+176,211,245,235,215, 57, 3, 7, 14,212,102,103,103,255, 86,248, 28, 85, 82, 52,171,168,230,239,235,123,101, 1,248,185, 82,155,
+143,246,191, 50,201, 63, 5,176, 36, 32, 48, 0,151,175,221,192,141,235,183,214,103, 59, 6, 44, 24, 57,244,163,177,149,122,112,
+ 71,247,104, 90,137,235,229,234,136,221,155,150,115,143,222, 72, 90,145,148, 99,221, 12,224, 27,123,142,209,235, 27,135,202,132,
+230, 53,220, 96,182, 82,216,104,254, 5,215,201,129, 95,236,133,183, 56, 77,158, 81, 52,242,227,113,227,158,215,174, 83,239,179,
+161, 31,125, 44,168, 23,228,143,219,207,228, 0, 33,112,243,145, 32, 45, 45, 13, 87, 15,110,178,228,189,122,178,158,203,181,125,
+ 93,158,186,148,155, 20, 85,173,200,122, 99,179,179,179,113,249,242,101, 20, 26, 44, 79, 79,207, 98,141,214,155,154, 57, 25,169,
+191,125,179,108, 99,243, 49, 31,246, 70,183, 54,181,112,229,206,115, 24, 11,198,107, 42,236, 74,158,112, 99,131,240,211,129, 65,
+198, 9,125,170, 43,117,102, 97,210, 87,137,138,171, 69,123,197,190,169, 73, 41, 53, 18, 66,142, 62,125,250,180, 69,221,186,117,
+ 43,157, 60,121, 50, 55,230,214,153,201, 69,203,241,249,231,159, 75,127,252,241, 71, 71, 74,233,111, 6,131, 33,222,174,109,231,
+ 96,119,228,221,187,238, 38,179, 13,215,110,221,175,209,190,121, 61,216, 40,112,231,206, 29,108,222,178, 89,255, 32,250,222,247,
+154, 12,159,175, 75, 50, 47, 37,237, 79,235, 59,244, 58, 44,170,153,246, 42,233,251,115, 39, 14,238,108,216,186, 59,134, 76,250,
+250,235,203, 39,246,204,175,223,178, 27,167, 70,195, 78,136,188,113, 17,231, 79,158,254,206,164,206,157, 95,214, 60,164, 37,149,
+ 83, 36,118,252,164,102,253,214, 72,126,145,132,196,184,135, 63,235,114,226, 82,165, 62,161, 63,167,166,188,248,184, 74,173,230,
+184,126,102,239,228,146,140, 86, 89,117,222,223, 83,188,233,228,241,163,131, 82, 82, 54,248,104,116,122, 17,165, 84, 47, 18,242,
+210,165,156,146,123,168,255,249,184, 63, 50, 73,220, 42,247,233, 63,244,227, 19,107,214,172,228,123,187, 56, 34, 61, 79, 15,165,
+206, 4,149,214, 4, 14, 33,168,230, 39,129, 86,149,139, 43, 7,151,153,141,234,188,129,148, 62, 51,149,164, 41,245, 14, 93, 8,
+208, 73,159,143,191, 4,161,204,223,175, 74,251, 89,165, 70,235, 84,169,209,221, 63, 31,127, 44,132, 82,218, 94,234, 29,170, 42,
+156,235,176,184,109, 39, 36,255,252, 30,210,214, 31, 38, 75,254,248, 99, 22, 27, 96,181,217, 10,162,124, 0,125,221,158, 79,202,
+216,118, 98,219,119,226, 55,164,102,200,161, 51,154, 97, 48, 90, 96, 50, 91,193,225,114,225,226,234,130,224,202,225,144,185, 56,
+ 35, 35, 61, 21, 55, 46, 28, 69,108,244,149,223, 8,197, 2,109,102,236, 5,123,142,145, 64,236, 18,226,235,231,195, 73, 83, 26,
+ 33, 22,114,113,239,202, 73,147,217,104,248,222, 30,147, 85,156,166, 60, 39,119,197,103,211,190, 24,188,109,235,118,159,176, 42,
+206, 72,201,214, 33, 37, 75, 15,149,222, 92, 96,196,108, 48,168,179, 17,125,113,123,186, 85,175, 90,241,175, 55, 90, 22,147, 94,
+117,232,244,109,247, 25,243,151,113,159, 61,143, 55, 47,252, 52, 34, 69,167, 86,118, 45,119, 36,171, 8, 91, 39, 84,222, 91,190,
+111, 20, 12,105,242,117, 82,233,207,223,111, 54, 23, 82, 27,108,148,226,216,173,244,215,205,133,182,130,204,203,168,231,242,114,
+ 53,237, 69, 63, 85,237,210,233, 50,100, 79,158,125,159, 7, 0, 92, 46,247,245, 82,152, 75,165,215,235,141,111,211, 92,248,102,
+226,187,205,102,131,179,179, 51,196, 98,113,185,155, 36, 37,222, 33,131, 26,182,233,249, 67,251, 94, 99,112,254,151,159,232,157,
+ 43, 71,199,107, 51,159,110, 42,119,142, 66, 94, 94, 12, 33, 36,238,251,239,191,175,183,121,243,230, 42,211,166, 77,139,223,241,
+195,252, 53, 0,144,147,147, 63, 7,112, 84, 84, 20, 29, 63,126,188, 65,175,215, 39,228,229,229, 69,150,213, 1, 2, 0,116, 89,
+142,139, 55,175, 91, 82,251,229,171,180,222, 65,181, 27,193,179, 74, 35,248, 84,107,140, 60,149, 9,183,159,165, 34,254,241, 5,
+ 60,190,118,240,164, 86,106,153, 95,222, 50,215,173, 91,215,159,195,225, 84, 86,171,213, 62, 53,107,214,172, 43,145, 72,162,234,
+214,173, 27,206,227,241, 82,238,222,189,155, 84, 30,173,164,203,219, 12,149,218,124,180,250,133,202,169,109,124,186, 54,252,133,
+202, 41, 74, 43,146, 77,205,188,176,202,224,221,233,251, 21,212,148, 29,115, 96,187,242,208,238, 77,203,185, 67,199,126,110,125,
+168,112,253,148, 39, 22,158,251,118, 68, 88, 57,154,165, 56,105, 19,134,247,252,207,240, 14, 5,145,172,130,255,237, 10,211,203,
+229,247, 21, 0,190, 20,251,213,250,225,225,167,227,190,169,211,176,249,176, 86, 31, 12,228, 88, 4, 82,156,249,101, 3, 77,136,
+190,120,128, 71,173,179,181,118,204, 6, 80,102,115,144,209, 88,166,201, 42,182,185,231,165,164,205,129, 61, 91, 70, 28,250,229,
+240,183,189,122,244,116, 95,247,213, 0, 44,219,120, 4, 18,177, 8,212,102,195,192,118, 1,253, 30,239,233,220,221,223,219,161,
+194,161, 75, 41, 87, 39,173,124,248,165, 86,107,138, 45, 43, 18, 83, 96,156,175, 57, 57, 57,101,181,104,209,162,137, 72, 36, 34,
+217,217,217, 60, 47, 47, 47,139, 76, 38, 51,166,164,164,104, 13, 6,195, 33, 74,169,166, 60,219,105, 50,219,144,152,161,199,175,
+135, 15,225,254,173, 11,120,252,248,169,234,241,163,199,107, 9,143,174, 84,167,199,230,190,205,190,179, 21,219,235,144,150,187,
+215,161,213,160,218,189, 99,253,194,118, 90,189, 97, 68,221,102, 17,168, 84,163, 57,199,100,182,226,193,157, 75,184,116,112,229,
+ 50,163, 42,103,198,187, 28, 99,191,138, 85,130, 41, 87,136,223, 47,159, 0,181,217,214, 3, 0,181,217,214, 71, 93, 63,249,113,
+227,174,163,225,230, 85,169, 46, 33,132,148,119,190, 71, 0, 16,240, 56,154, 83,135,182,253,146,152,152,136, 39, 79,158,224,217,
+179,103,200,205,205,197,238,221,137,229, 58, 62,154,220,196,115, 82,247,160,206,125, 7, 12, 57,214,111,208,135, 14, 85,130,195,
+ 56, 33, 21, 93,225, 46,229,225,233,179, 36,196,222,141,182, 61,189,125, 82,111, 82,102,246,210,230, 38,150,104,252, 36,158, 53,
+189, 9,135,206, 40,156,187,176,105,211,230, 33, 95, 44,250,182,137,187,167, 87,177,215,241,156,172, 76,225,244, 73, 71, 67,110,
+220,252,221,174,185, 14,109, 86,107,206,216, 17, 3,109,220,252,137, 66,241, 58, 78, 77,242, 15,118,254,195, 84,254,251,212,102,
+ 41, 51,130,255, 81,239,150,176,216,108,208,232, 76, 80,106, 12, 80,168,244, 72,203,204,193,253,232,104, 92, 57,118, 20,207,159,
+222, 79, 48, 27,141,103, 57, 28,114, 80,155,254,244, 74,249, 90,154,120, 85,220,221,220,144,144,171,134,131,144,135,164,216,187,
+ 6,141, 82,177,235,109,235,145, 54, 59, 54, 77,226, 29,210,105,224,192, 65,167,219,117,238, 33,107,216,172,131,163,135,179, 11,
+ 4, 60,138,184,196, 84, 68,254,118, 90, 19,127,255,170,210,108, 84,119,121, 31,179,190,252, 47, 99, 87,175, 67,147, 65,211,125,
+112,207,214,135,185, 92,158,208,102,179, 24, 76, 70, 67,223,119, 49, 89,127, 21,148, 90, 83, 70, 12,238,253,135,103, 3,139,141,
+138, 7,247, 63,163, 43,250,172, 96,182, 82,199,193,253,127,211,230, 95, 64, 74, 78,236,123,221,180,183,247, 92,202,139, 23, 57,
+119,114,115, 13,151,222,181, 39, 96,209,185, 11, 75,233, 93,168, 9, 13, 13,125,109,174,184, 92, 46,172, 86,171,221, 23, 34,129,
+ 72, 60,166, 93,143, 81,228,252,145,159,232,237,203, 71, 38,104, 51, 99, 55,190, 67, 59,179, 9,192, 45, 66,200,195,217,179,103,
+ 55,244,246,246,246,158, 59,119,174,131, 82,169,228,175, 91,183, 78,159,157,157,157,174, 84, 42,111, 80, 74,117,246,107, 70,154,
+ 1,244,145,122, 87,111, 75, 15,253,212,209,197,163, 66, 39,153,103,197,170,242,172, 87, 9,138,172,212,179, 0,206, 23, 12, 20,
+ 89, 46,194,195,195,131, 56, 28,206, 64, 0,181, 37, 18, 73, 53,169, 84, 42,162,148,134, 18, 66, 98,108, 54, 91,116,205,154, 53,
+143, 3, 40,215,241, 75,186,188,205,208,106,194,150, 61,185, 90,155,192,200, 17,236, 73,186,188,205, 0, 0, 25,103,167,105, 1,
+252,234,221,118, 70,159,163, 55,146,214,196,228,201, 38,103, 94, 90,124,180,188,101,150,191,188, 87,237,125,213,127, 93,106, 76,
+ 10,128, 17, 18,239,144,229, 15,162,110,204, 35, 20,124, 43, 44, 11,181, 25,113,119,223,135, 62,159,207,215, 87,168, 80,161,216,
+222,133, 34,145, 72, 95,250, 49,191,108, 1,176,153,144, 54,219, 15,239,223, 62,226,200,209, 95,191,109,213,190,151,187, 67,197,
+138,168,236, 69,176,125, 70,253,201, 23,162,178,110,247,248,226,234,143,241,169,250,104, 74,105,185,242, 97, 84, 42, 85, 44, 33,
+ 36, 79,173, 86,247,164,148,190, 36,132,248,231,229,229,221, 51,155,205, 15,202,109, 8,108, 24,210,180,105,163,221,132, 16, 30,
+181,216,150,222,224,115,247,232,211, 30,167,188,141,177, 40, 74, 88,101,103, 76,153,187,186,126,213,106,213,235, 23,206,117, 88,
+171,146, 19,198,125,185,188,126,165, 42,193,245,255, 51,255,161,180,172,115,146, 18, 66, 70, 30,222,178,244,106,212,205, 75,179,
+ 60,124, 43, 85, 74, 79,137,127,252,242,217,189,111, 44, 58,197,225,119, 61,206,137,207, 98, 86,110,254,254,203,105,105,175, 18,
+ 54,107, 50, 99, 31, 2,128, 38, 51,246,161,163,119,245,175,178,211, 83,166,229,100,198,127,255,182,251, 66,163,209,164,238,218,
+181,203,165,121,243,230, 28,111,111,111,100,101,101,225,210,165, 75, 54,155,205,246,170,188, 90,234,156,248, 75,132, 84,117,251,
+121,227, 15, 75, 5, 18,167,174, 22,139,197,143, 82,128,199,227,165, 25,181,202,211, 42,142,228, 11,154,155, 88, 70,189,180, 17,
+ 0,156,194,185, 11,109, 54, 27, 89,186,102,123, 18,223,193,169,216,249, 17,205,122,149,163,205,102,179,123,174,195,188, 23,119,
+171,190,183,155, 53,165, 11,234, 54,104, 50,203,108, 54,233,145,159, 47,166, 7,160,167, 20, 57, 28, 14,185,194,181,153,207, 40,
+222,225, 97,138, 16, 56, 83,194,131,147,152, 7, 2, 2,181, 34,151,150, 39, 39,171,216,227,157,241, 52,134,144, 54,129,167,140,
+251,135, 95, 60,119,178,191,213,106,173, 92, 80,115, 18, 13, 58,205, 1,117,154,235,207,148,222,177,224,159,207,137, 66,179,197,
+ 43,229,196,142, 69,254,220, 62,255,211,228, 36,220,110,240, 62,245,210, 50,114,183,119,238, 53,141, 38, 38,101,222, 78, 78, 55,
+252, 92,116, 90,157,119,213,124,249, 50,235, 82, 65,115,161,225,207, 17,138,183,235, 93,248,218, 24,235,117,223,173,154, 61, 8,
+122,157,102,135, 54, 51,118,251,251, 49,177, 84, 7,224, 10, 33, 68, 54, 97,194,132,112,169, 84,202,207,206,206,190, 69, 41, 85,
+188,173,166, 58, 35,246, 18,128, 75, 0,102,188,143, 50, 70, 69, 69,197,215,171, 87,111, 39,135,195,169, 76, 41,245,166,148,202,
+ 10,140,108, 54,143,199,123,245,232,209,163, 87,111,181,237, 6,167, 83,106, 35, 55,216, 66, 93, 79,255,201,124,184,123,157,123,
+145,107,253,137, 43,113,248,159,201, 49,208,100, 60,141, 1,208,247,125,235,150, 54, 78,150,253,245,232, 63,134,235,242,137,109,
+ 35, 56, 66,217,194,246, 33,122,109,167,207, 94,125,115,237, 65,214, 45, 74,169,234, 29,234,104,150, 80, 40,212, 17, 66,252, 5,
+ 2,129,206,104, 52, 70,191,213,254,203, 55,249,158,239,115,223,217, 64,238,214,175,223,160, 92,235,219, 17,201,219, 94,176,188,
+ 87,212,233, 79,190, 65, 65,243,247, 31, 34, 20, 25,177, 11, 1, 44,124, 23,237, 59,119,238, 28,251,254,251,239, 21,107,214,172,
+ 9,176, 90,173,142, 70,163, 81,171,211,233, 18, 83, 82, 82,126,127,187, 99,254,220, 8,224,211,130,229, 45,162, 46, 79,210,165,
+222,213, 87, 55,107,218,236,211,252, 7,116,186, 58,241,202,234, 41,165,125, 71,234, 93, 93, 87,116,253,210,230, 58,124,175,199,
+ 37, 51,118, 61,128,245,127, 93,164,194,150, 53,164, 95, 79,160, 96, 96,110,155,197,146,245, 94,100,243,207,249, 45,120,203, 73,
+210,255, 9, 80, 74,211, 0,108, 42, 48,204,244, 47,251, 33,123,243, 85,152, 38,211,100,154,255, 46, 77,123,102, 39, 96,251,147,
+105,254,149,154, 98,191,154,254, 0, 96,207,164,235, 37,173,207,246, 39,253,215, 36,180,219,177, 63,198, 22, 99,182,236, 27,176,
+148,193, 96, 48,254,130,167, 61, 27,219, 11,140,255, 38,246, 26,172,183, 93,159,241,175,187,166,149,152, 19, 77,144, 63, 11,118,
+113, 95,178,219,169, 18, 66, 58,188, 69,161,206, 51, 77,166,201, 52,153, 38,211,100,154, 76,243,223,165, 89,150,246,223, 49, 82,
+ 86, 76, 68,235, 68, 65,243, 97,254,192,108,127,213, 2,160, 3,211,100,154, 76,147,105, 50, 77,166,201, 52,153,230,191,105, 1,
+ 48,182,240,127, 14, 24, 12, 6,131,193, 96, 48, 24,127, 9, 44, 71,139,193, 96, 48, 24, 12, 6,227, 29, 40,174,233,144, 25, 45,
+ 6,131,193, 96, 48, 24,140,247, 64,105,201,240,172,233,144,193, 96, 48, 24, 12, 6,227, 29, 40,140,104, 17, 66,124, 9, 33, 99,
+139, 70,184,152,209, 98, 48, 24, 12, 6,131,193,120, 15, 80, 74,211,222,140,110, 17, 74, 41, 78,156, 56, 65, 35, 34, 34, 8,128,
+ 63,252,207, 96, 48, 24, 12, 6,131,241,255,193,223,217,139, 16, 66,124, 1, 68, 20,221,156,194,225, 29, 56, 69, 55,144, 29,102,
+ 6,131,193, 96, 48, 24,255, 77,179,245,119, 44,119, 97, 36,171,200,242,122,210,236,215, 70, 43, 34, 34,130, 48,179,197, 96, 48,
+ 24, 12, 6,227,191,197, 63,209,139,112,222,220, 64,118,152, 25, 12, 6,131,193, 96,252, 55,205,214, 63,105,123,216,240, 14, 12,
+ 6,131,193, 96, 48, 24,239, 64,105, 57, 90,164, 96,168,120, 6,131,193, 96, 48, 24, 12,198,219, 25,173,177, 69,123, 27, 22,125,
+205, 34, 90, 12, 6,131,193, 96, 48, 24,239,193,108, 21,251, 62,139,104, 49, 24, 12, 6,131,193, 96,252, 53,252,165, 3,150, 18,
+ 66, 58, 48, 77,166,201, 52,153, 38,211,100,154, 76,147,105,254,147, 41, 28, 17,190,224,255,177, 5, 57, 91,127,189,209, 98, 48,
+ 24, 12, 6,131,193,248, 23, 16, 65, 41,221, 84, 36, 55, 43,130, 25, 45, 6,131,193, 96, 48, 24,140,247, 72,113,147, 75, 51,163,
+197, 96, 48, 24, 12, 6,131,241, 30, 13, 86,209,215,204,104, 49, 24, 12, 6,131,193, 96,252, 69, 48,163,197, 96, 48, 24, 12, 6,
+131,241, 23, 65, 0, 20,219,115,128, 82,122,222,110,145,183,232,125, 80,150, 62,211,100,154, 76,147,105, 50, 77,166,201, 52,255,
+121,154,101,105,151,199,127,252,207,152,169,255,140, 12,127,162,224,239,127,154, 15, 41,165,127,217, 2,160, 3,211,100,154, 76,
+147,105, 50, 77,166,201, 52,153,230, 63,121, 1, 48,182,232,223,162, 11,107, 58,100, 48, 24, 12, 6,131,193,120,247,168, 86,209,
+113,180, 94,143, 18,207,166,224, 97, 48, 24, 12, 6,131,193,120, 7,138, 27,214,161, 16, 22,209, 98, 48, 24, 12, 6,131,193,120,
+ 7,222,156,231,176,232,107,102,180, 24, 12, 6,131,193, 96, 48,254, 2,195,197,140, 22,131,193, 96, 48, 24, 12,198,123, 52, 89,
+127,138,110, 21,100,201,227,196,137, 19, 52, 34, 34,130,176, 93,197, 96, 48, 24, 12, 6,227,191,193, 63,209,139,112,138,110,216,
+137, 19, 39, 40, 59,204, 12, 6,131,193, 96, 48,254, 91, 38,235,239,232, 69, 8, 33,190,133,189, 13, 11, 22,223,194,207, 88,175,
+ 67, 6,131,193, 96, 48, 24,140,119, 35,162,104,207,195,130,230,195, 77,204,104, 49, 24, 12, 6,131,193, 96,188, 7,138, 75,132,
+ 7, 88,142, 22,131,193, 96, 48, 24,140,255, 17,254,137, 94,228,181,209, 98, 48, 24, 12, 6,131,193, 96,188,133,153, 42, 38,154,
+ 85,216,148,200,140, 22,131,193, 96, 48, 24, 12,198,123, 50, 92,111,142, 18,207,198,209, 98, 48, 24, 12, 6,131,193,248, 11, 76,
+214, 95,110,180, 8, 33, 29,152, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,233, 38,171,240, 47,155, 84,154,193, 96, 48,
+ 24, 12, 6,227, 61,194, 38,149,102, 48, 24, 12, 6,131,193,248,139, 96,147, 74, 51, 24, 12, 6,131,193, 96,252, 63, 27, 46,102,
+180, 24, 12, 6,131,193, 96, 48,222,163,201,122,211,108,177, 28, 45, 6,131,193, 96, 48, 24,140,119,160,180, 28, 45, 2,160, 67,
+ 9, 95, 58, 95, 14, 23,215,225, 45, 10,117,158,105, 50, 77,166,201, 52,153, 38,211,100,154,255, 46,205,178,180,203,227, 63,254,
+ 87,249,195, 80, 15,148,210,191,108, 1,208,129,105, 50, 77,166,201, 52,153, 38,211,100,154, 76,243,223,180, 0, 24, 91,248, 63,
+107, 58,100, 48, 24, 12, 6,131,193,120,199, 8, 86, 73,159, 49,163,197, 96, 48, 24, 12, 6,131,241, 14,176,113,180, 24, 12, 6,
+131,193, 96, 48,254, 34, 8, 33,190, 5, 35,194, 23,254, 13,103, 70,139,193, 96, 48, 24, 12, 6,227,253, 16, 81, 16,213, 42,252,
+203,140, 22,131,193, 96, 48, 24, 12,198,251,162,164,113,180, 8,165, 20, 39, 78,156,160, 5,175,219, 68, 68, 68, 92, 97,187,139,
+193, 96, 48, 24, 12,198,255, 39,255, 84, 47,242, 58,162, 21, 17, 17, 65, 0, 92,102,135,154,193, 96, 48, 24, 12,198,127,131,127,
+162, 23,225,188,225, 36,219,176,195,204, 96, 48, 24, 12, 6,227,191,193, 63,209,139,240,222,112,145, 12, 6,131,193, 96, 48, 24,
+255, 21,254,174, 94,132, 16,226, 11, 32, 2,192,137,130,191,175,135,124, 96,227,104, 49, 24, 12, 6,131,193, 96,188,163, 71,164,
+148,110,250,195,212, 59,133, 38,172, 96,168,120, 6,131,193, 96, 48, 24, 12,198, 91, 80,220,200,240,133,134,139, 25, 45, 6,131,
+193, 96, 48, 24,140,191, 8,214,116,200, 96, 48, 24, 12, 6,131,241,142, 20,141,106, 21,109, 62,228,252,197, 63,218,129,105, 50,
+ 77,166,201, 52,153, 38,211,100,154, 76,243,159,110,178, 40,165,155, 10,151,162,166,139,141, 12,207, 96, 48, 24, 12, 6,131,241,
+ 23,193,154, 14, 25, 12, 6,131,193, 96, 48,222,129, 55,163, 88, 69,155, 14,153,209, 98, 48, 24, 12, 6,131,193,120, 15,102,171,
+184,247, 89,211, 33,131,193, 96, 48, 24, 12,198, 59, 80,220,240, 14,204,104, 49, 24, 12, 6,131,193, 96,252,197,134,139, 0, 40,
+182,231, 0,165,244,124, 57,132,203,221,251,160, 44,125,166,201, 52,153, 38,211,100,154, 76,147,105,254,243, 52,203,210, 46,143,
+255,248, 95, 54, 88,175,155, 18, 41,165,127,217, 2,160, 3,211,100,154, 76,147,105, 50, 77,166,201, 52,153,230,191,117, 97, 77,
+135, 12, 6,131,193, 96, 48, 24,127, 17,118, 27, 45, 66,136, 39,159,207,159,229,232,232,248,163,163,163,227, 70, 62,159,255, 61,
+ 33,196,181,188, 63, 40,149, 74, 39,251,250,250, 62,241,245,245, 77, 9, 12, 12, 60,233,236, 44,249,172,170, 3,105, 69, 8,225,
+191,135,208, 29,135, 16, 18, 66, 8,249,204,209,209,241,177, 88, 44, 78, 34,132,236, 36,132,124, 70, 8,241,120, 23,237,133, 21,
+ 72,223,152,207,122, 29, 89, 88,129,244,125,227, 55, 35,124,124,124,174, 17, 66, 58,189,175,131, 50, 88, 66, 58,244,151,146,228,
+254, 82,146, 60, 88,242,246,131,194, 57, 59, 59, 15,243,243,243,187,225,225,225,241,202,207,207,239, 55,177, 88,220,175,156,251,
+211,203,199,199,103, 89, 64, 64, 64,108,133, 10, 21, 86, 21,204, 78,254, 63, 75, 43, 7,210,178,169, 3,201,106, 38, 34,170, 22,
+ 34,242, 99, 51, 17,233,216,137, 16,199,183,172, 75, 45, 8, 33, 7,101, 50,217, 61, 62,159,127,156, 16,210,167,160,126,245,225,
+243,249,199,101, 50,217, 61, 66,200, 65, 66, 72,139,183,172,167,203, 8, 33,175, 8, 33,139, 11, 94,127, 18, 16, 16,160,170, 91,
+183,110, 82,221,186,117,183, 5, 7, 7,127,104,175,158, 68, 34,233, 24, 16, 16,112, 40, 48, 48, 48,169, 89,179,102,185, 21, 43,
+ 86,124,234,239,239,191,221,193,193,161, 13,187,196, 49, 24, 12,198,127, 25, 59,194,131,221, 1,124, 11, 96,109,116,116,116, 36,
+165, 52,146, 82, 26, 25, 29, 29, 29, 9,224, 71, 0, 75, 80, 66, 8,241,205,247,221,221,221, 23, 44, 92,184, 80,159,150,150, 70,
+179,178,178,104,108,108, 44, 93, 57,231, 75, 91,103, 55, 30, 13,242,116,213,250,250,250, 62, 15,172, 88,113,111, 45, 41,231, 75,
+ 0, 85,203, 19,174, 4,224, 42, 22,139,111,205,153, 51, 71,125,237,218, 53,181,209,104, 84,219,108, 54,117,106,106,170,250,252,
+249,243,234,230,205,155,171, 1, 76, 1,192,125,155, 16,232,215,126,184, 66,183,124, 69,191,246,195,149,162,239,135,134,134, 62,
+178,217,108,180,111,223,190, 6, 0, 21,222, 37,172, 90, 1,112,168,229, 12,151,126, 82,100, 88,182,127, 67,233,186,105,180,159,
+ 4,201,111,163,233,229,229,245,235,228,201,147,149,175, 94,189,162, 6,131,129, 38, 39, 39,211,113,227,198, 41,188,188,188,118,
+217,185, 63,221,195,194,194, 50,110,220,184, 97,147,203,229,244,242,229,203,182,218,181,107,103, 0,240, 45,111, 72,217,203,203,
+107,147,159,159,223,201,242, 44, 94, 94, 94,155,203,123,140, 26,139,144,108,138,188, 68,233,157,179,244,104,223,166,116,101,131,
+138,180,143,155, 80,222, 66,136, 79, 90, 3,188,114,212,165,254,173, 91,183,214, 60,120,240,192,154,147,147, 67, 31, 61,122,100,
+ 27, 51,102,140, 30, 64,204,152, 49, 99,244,143, 30, 61,178,229,228,228,208, 7, 15, 30, 88, 91,183,110,173, 1, 48,218,222,114,
+ 22, 60,220,108,157, 63,127, 62,165,148,210,133, 11, 23,210, 58,117,234,208,118,237,218, 81,181, 90, 77, 41,165, 73,148,210,109,
+ 22,139,101,132, 61,154, 50,153,108,216,228,201,147,213, 90,173,150, 22, 98,179,217,168, 92, 46,167,107,215,174,213,248,248,248,
+156, 4,224,193,154, 39,152, 38,211,100,154,172,233,240, 47, 77,149,242, 5, 48,182,200,242,250, 94, 89,214, 23, 7,127,249,229,
+151,133,166,234, 84,139, 22, 45,110,143, 24, 49, 34,114,196,136, 17,145, 45, 90,180,184, 12,224,204,221,187,119, 35,167, 79,159,
+ 30, 9, 96,112,105, 7, 2,128,107,179,102,205,228,233,233,233, 52, 56, 56,152, 86,170, 84,137,166,167,167, 83, 74, 41,189,211,
+191, 62,189, 80, 3,244,229,213, 83,244,236, 47, 7,233, 24, 95, 30,109,233, 43, 51,251,250,248,228,120,120,120, 44, 66,193,228,
+215, 37, 29, 92, 0,189,107,212,168,161,138,137,137, 81,199,197,197,169, 23, 44, 88,160,110,215,174,157, 58, 44, 44, 76,221,167,
+ 79, 31,245,154, 53,107,212, 38,147, 73,189,121,243,102,181,179,179,115,204,155,102,235, 93,140, 22,143,199, 91, 29, 29, 29, 77,
+159, 63,127, 78, 1, 44, 43, 73, 19,128,204,197,197,165,139,171,171,235, 20, 23, 23,151, 46, 0,100,148, 82, 4, 3,210,186, 50,
+ 4,124, 82, 55, 40,244,248,224, 14, 85,215,118,104, 88,191,159, 19, 71,110,254, 97, 26,165,125, 3,222,202,104,201,100,178, 97,
+159,125,246,153,202, 96, 48, 80,173, 86, 75,213,106, 53,213,106,181, 84,165, 82,209,193,131, 7, 43, 29, 28, 28,122,151,165,233,
+225,225,241,205,213,171, 87, 45,233,233,233,244,234,213,171,244,228,201,147,116,221,186,117, 54, 47, 47,175, 21,229, 61, 1,125,
+124,124,206,157, 61,123, 54, 50, 42, 42, 42,242,214,173, 91,145,102,179, 57,210,100, 50, 69,154, 76,166,200,227,199,143, 71, 30,
+ 62,124, 56,114,223,190,125,145, 70,163, 49,210,104, 52, 70, 26, 12,134,200, 42, 85,170,156, 46,239, 49,106, 36,194, 75,227,181,
+163,148,174,152, 72, 21,223,141,167,242,169, 93,105,230,184, 86,244,199,134, 21,105, 43, 49,142, 21,173, 71,165,105,242,249,252,
+ 43, 73, 73, 73,182,153, 51,103, 26,107,214,172,169, 24, 57,114,164,222, 96, 48, 80, 74, 41, 53, 24, 12,116,228,200,145,250,154,
+ 53,107, 42,102,206,156,105, 76, 76, 76,180,241,120,188,243,229, 48, 90, 75, 10, 77,214,149, 43, 87,104, 81,212,106, 53,109,215,
+174, 93, 82,157, 58,117,182, 85,174, 92,121, 72, 89,154, 82,169,180,231,140, 25, 51,212,180, 24,204,102, 51, 85,169, 84, 52, 49,
+ 49,209, 86,169, 82,165, 84, 0,238,236, 98,206, 52,153, 38,211,100, 70,235, 47, 51, 90, 99, 75,122, 93,234, 78,156, 62,125,122,
+ 36,165, 52,114,246,236,217,145, 5,145, 45, 1, 0,105,193,194, 3, 48,104,198,140, 25,145,148,210,200, 47,191,252, 50, 18, 64,
+247, 82,140, 86,247, 3, 7, 14,152, 86,173, 90, 69,189,189,189,169,143,143, 15, 93,189,122, 53,181,217,108, 52,253,248, 46,122,
+161, 6,232,227, 89,195, 41,165,148,198, 46,154, 68, 47,212, 0,141, 95,255, 53, 29, 58,116,168,214,209,209,113,112, 41, 6,198,
+173,126,253,250, 42,157, 78,167,222,190,125,187,218,209,209,241, 14,128,154, 0,248,200,239, 85, 41, 5,240, 97,205,154, 53,149,
+ 15, 31, 62, 84,239,217,179, 71, 13, 96,129,157,145,141,170, 0,218, 74, 36,146, 62, 51, 42,240,227,232,150,175,232, 12,111, 60,
+ 0, 80, 27,128,103,193, 58,126, 95,126,249, 37,165,148, 82,127,127,255,171, 37,108,187, 44, 44, 44,236,203,184,184,184,121,102,
+179,121, 94, 84, 84,212,188,234,213,171,207,236, 81,197,183,233,145,193, 29,195, 21, 95,143, 15,167,203,167,134,125,255, 65,163,
+ 14,123, 7,182, 25,252, 81,101,143,107, 35,189, 28,180, 3,100, 92,213, 32,199, 63,232,216, 85,177, 43, 84,168,112, 43, 57, 57,
+249,181,185, 82,169, 84,244,213,171, 87, 52, 33, 33,129, 94,187,118,141,250,250,250, 94, 40, 75,211,199,199,231, 81,114,114, 50,
+ 93,191,114, 37,237, 91, 59,148,182,114,113,162,173, 93,157,104, 3,169,131,166, 6,208,160,188, 70,235,222,189,123,145, 0, 34,
+ 1, 68,230,228,228, 68,230,228,228, 68,230,229,229,189,126, 15, 64,164, 66,161,136, 84, 40, 20,145, 70,163, 49, 50, 40, 40,168,
+220, 70,171,185, 3,154, 55,118, 64,110, 83, 17,116,221, 43,120,164,142,175,226, 97,189, 57,184, 41,205,155,216,142,174, 10,175,
+ 64, 91, 8,241,137,157,199,189,187, 80, 40,188, 12, 96, 26, 0, 46,128,225, 93,186,116,209, 82, 74,105,151, 46, 93,180, 0,134,
+ 23,188,255, 25,143,199, 59, 15,160,139, 61,229, 4,192,169, 86,173,154,166, 48,146, 5,224,247,106,213,170,105,234,212,169, 67,
+235,212,169, 67,253,253,253, 85, 0,134,219,123, 65,171, 90,181,106,172, 78,167,123,109, 0,229,114, 57, 77, 77, 77,165,241,241,
+241, 52, 38, 38,134,222,185,115,135, 38, 37, 37,209,253,251,247, 91, 93, 92, 92, 78,176,139, 57,211,100,154, 76,147, 25,173,191,
+206,104,189,185,252,201,104, 29, 63,126,156,190,241,165,239,238,222,189, 27, 57, 99,198,140,200, 55,157,218,155,226,179,103,207,
+ 46,140,122,125, 91,202,205,127,115,108,108, 44, 29, 62,124, 56, 13, 9, 9,161, 33, 33, 33,116,196,136, 17, 84,161, 80, 80,245,
+179,135,244, 66, 13,208, 59, 3, 26, 80, 74, 41, 85, 61,142,162, 23,106,128, 70, 14,109, 70,239,223,191, 79, 43, 86,172,120,182,
+148,223, 63,246,219,111,191,101,237,218,181, 43, 29,192,206, 2,131,213, 4,192,106,177, 88,188,181,160,185,176, 18, 0,215,224,
+224,224, 92,173, 86,171,238,219,183,175, 26, 64, 64, 41,154,173, 67, 66, 66,158,111,222,188,153,102,102,102,210,220,220, 92,186,
+180,121,117, 74,183,124, 69, 23, 54,168,100, 91,191,126,189, 97,218,180,105, 26, 55, 55,183,227, 0,252,250,246,237,107,161,148,
+210, 86,173, 90,101, 20,167,231,226,226,210, 37, 46, 46,110,158, 94,175,159, 39,151,203,231,229,230,230,206, 59,122,228,200,188,
+206,181,171, 15, 87,124, 61, 62,252,200,224,142,225, 31, 84,112,237,179,162, 83,195,143, 95,205, 28,221,119,118,179,154,143,245,
+ 75, 62,189,212,191,138,247,178,183, 57,224,158,158,158,105, 6,131,129, 2,248,211,242,252,249,115,234,238,238,158, 92,150,134,
+155,155,219,236,207, 6, 13,180,246,174, 84,129, 62, 95, 53,135,154,207,237,161,230,147,219,233,179,239,166,210, 30, 62, 30,202,
+ 38, 2,206, 12,123,203,227,227,227,115,238,214,173, 91,127, 48, 90,121,121,121,197, 26, 45,165, 82, 25,105, 52, 26, 35,171, 85,
+171,118,250, 93, 43,126, 19, 33,130, 90,139,185,119,162,134,183,164, 89,227,219,209, 46, 50,126,210, 59,156, 68,131, 0, 92, 6,
+ 48,180,156,223,227, 0, 88, 82,104,168,190,251,238, 59, 74, 41,165,213,170, 85,211, 0,224,188, 67,121,100,161,161,161, 9,163,
+ 71,143,182,212,168, 81, 35,179,121,243,230,242,219,183,111,211, 43, 87,174,208,147, 39, 79,210,131, 7, 15,210,135, 15, 31,210,
+ 87,175, 94,209,216,216, 88, 26, 17, 17, 33, 7,208,154, 93, 16,217,194, 22,182,252, 47, 47,111,122,145,127, 76,175,195, 19, 39,
+ 78,208,136,136, 8,114,226,196, 9, 90,144,172, 43, 3,224,208,160, 65,131,172, 37, 75,150, 44, 47,152,195,135,212,225,145,254,
+237, 29,249,247,219, 59,242,239,215,225,145,254,132, 16, 66, 41,221,180,104,209,162,111,234,212,169,147, 6, 64, 76, 8,241, 41,
+ 33, 23,172,165,187,187, 59,146,147,147, 33,147,201, 32,147,201,144,156,156, 12, 74, 41, 44, 20, 48, 83,192, 96, 50, 65,167,211,
+ 65,111,163,208,217, 0,165, 90, 13, 31, 31, 31,152, 76,166,160, 18,146,138,235, 14, 24, 48, 32, 40, 44, 44, 44,107,250,244,233,
+169, 0, 70, 3,216, 58,106,212,168,115,191,255,254,123,152, 90,173,206,141,137,137,209,215,174, 93,187, 11, 0,159,184,184,184,
+ 97,107,215,174,197,240,225,195, 1,160,117, 9,154,181, 35, 34, 34, 78, 62,124,248, 48,104,232,208,161,184,124,249, 50,150, 46,
+ 93,138,236,236,108, 10, 0, 6,131,129, 90,173, 86, 83,179,102,205, 76,171, 86,173,106,212,170, 85,171, 91, 85,170, 84,225, 2,
+ 64, 66, 66,194,179, 18, 52,171, 7, 6, 6,194, 96, 48, 32, 43, 43, 11, 15, 31, 62,132,147, 76,134,232,212,108,239, 54, 43,214,
+231,204, 58,114,142, 63,168, 81,152,219,148,142,205, 13,139,207, 94, 14,174,233,231,237,109, 52,153,125, 98,211, 50, 82,223, 38,
+239, 78, 32, 16, 36,103,103,103,195,104, 52, 66,167,211, 65,169, 84, 34, 39, 39, 7,217,217,217, 72, 77, 77,133, 64, 32,120, 94,
+102, 34,125,110,238,213,132,223,174,144,253, 27,190, 67,144, 37, 23,188, 67,171,193,251,245, 71, 84, 53,102, 97,227,156,113, 78,
+ 70,119,207,249, 50,103,231, 60, 87, 87,215, 77,132,144,106,101,233,133,135,135, 35, 39, 39, 7, 57, 57, 57,112,119,119,135,171,
+171, 43, 92, 93, 93, 33,151,203,161, 80, 40,160, 84, 42, 17, 28, 28,140,186,117,235, 98,199,142, 29,239, 37,255,240,134,129,198,
+ 91, 96, 29,127,238,105, 42, 4, 18, 9,170,184, 74, 3, 27, 57, 17,183, 82,146,212,219, 9, 4,130, 3,238,238,238,103, 9, 33,
+ 19, 9, 33, 18, 66,200, 68,119,119,247,179,124, 62,191, 23,128,133,148,210, 93,229, 44,198,226,249,243,231,127, 25, 23, 23,231,
+120,255,254,125, 76,159, 62, 29, 11, 22, 44,192,179,103,207,126,160,148,218, 10,126,119,130,135,135,199,113, 46,151,251, 19, 33,
+164, 43, 33,164,139,159,159, 95,251, 50,116,123, 77,155, 54, 77, 95,191,126,253,216,199,143, 31,247,250,237,183,223, 26, 76,157,
+ 58, 85,241,226,197, 11,196,198,198,194,215,215, 23,254,254,254, 80,171,213,200,203,203, 67,175, 94,189,100,206,206,206,131, 89,
+ 86, 42,131,193,248, 95,229, 77, 47,242,119,226,205,113,180,138,190, 46,182,215,161,163,163,227,252,200,200,200,166,117,234,212,
+225, 1,216, 15, 0, 97, 92,244,235,213,172,222,214, 35,155,190,171,115,120,213,156, 58,157,235, 4,111, 13,227,162,176, 23,219,
+241, 6, 13, 26,184, 70, 70, 70, 54, 19,137, 68,159,148,148,119, 15, 0,174,174,174,144,201,100,112,113,113,129,171,171, 43,108,
+ 54, 27,212, 90, 61, 52, 86, 64,165, 55, 66,161, 80, 64, 85,240, 90,109, 48, 65,163,209,188,254,110, 49,180, 25, 61,122,116,214,
+218,181,107, 51,211,210,210,190, 3, 80,123,248,240,225, 61,215,172, 89,131,139, 23, 47,234,187,134, 84,117, 95,212,178,222, 55,
+ 53,211,158,205, 11,225, 99, 12,128,171, 87,175, 94, 69,179,102,205, 64, 8, 25, 88,156,160, 88, 44,254,113,239,222,189,226,152,
+152, 24, 84,173, 90, 53,102,224,192,129,253,191,251,238,187, 32,137, 58,247, 58, 0, 88,114,210, 99, 38, 77,154,244,213,162, 69,
+139,178,178,178,178, 76, 90,173,214,171, 71,143, 30, 72, 78, 78,198,171, 87,175,126, 47,193,100,198, 70, 69, 69, 81,133, 66,129,
+248,248,120, 68, 69, 69,137,191,250,234,171, 70, 86, 14,167,103, 10,156, 62, 26,222,188, 65,163,161, 77,234, 97,215,141,251,130,
+107, 79, 19, 92, 26, 84,170,224,122,239,101, 90,101, 51,193,243,183, 57,224, 42,149,106,245, 55,223,124,163, 86,171,213, 72, 73,
+ 73,193,131, 7, 15,240,248,241, 99, 36, 37, 37, 97,233,210,165,234,220,220,220, 53,101,105,248, 57,240, 62, 95, 54,117, 20,225,
+ 61,250, 29,184,127, 5,208,170, 0,157, 26,134, 39,145,216,246, 36, 29,235, 14,253, 34,124,145,156,236,178,111,223,190,209, 1,
+ 1, 1,145,132,144,224,178, 58, 93, 0, 0,135,195,121,179,114,130,195,225,168, 0,164, 75, 36,146,151, 78, 78, 78, 47, 57, 28,
+ 78, 58,165, 84,243, 62, 42, 63,199, 2, 19,184, 92, 64, 40, 6,135,207, 43,237, 36,233, 63,112,224,192,189, 47, 95,190,236, 28,
+ 31, 31,223,116,205,154, 53,223, 56, 56, 56, 68,175, 89,179,230,155,248,248,248,166, 47, 95,190,236, 60,112,224,192,189,132,144,
+ 15,203,243,251,213,170, 85,155, 52,111,222, 60, 44, 93,186, 20,117,235,214, 69,112,112,176,118,254,252,249,171, 1,204, 33,132,
+124, 18, 28, 28,124,125,210,164, 73, 35, 51, 51, 51,125, 82, 82, 82,234,254,240,195, 15,227, 86,175, 94,221, 48, 53, 53,213,161,
+ 12,233, 22,157, 58,117,194,169, 83,167, 0, 32,141, 82, 26,159,147,147, 99, 73, 77, 77, 69,104,104, 40, 26, 53,106, 4,181, 90,
+ 13,181, 90, 13,185, 92,142,192,192, 64,216,108,182,166,236, 82,206, 96, 48, 24,255,127,134,171, 68,163,229,224,224,224, 26, 30,
+ 30,142, 42, 85,170,184, 22,228, 98,193, 93,200,155, 57,101,244, 32, 71,105,228,105,144,168, 11, 24,216,178,150,163,187,144, 55,
+179,224, 43,188,192,192, 64, 81,120,120, 56, 36, 18, 73,133, 18,126,255,114,122,122, 58,194,195,195,225,226,226, 2,153, 76,134,
+240,240,112,152, 76, 38, 40, 84, 42,104,172,128,214,108,131, 66,161, 64,110, 86, 6,180, 86,192,226,228,142,164,164, 36,112,185,
+220,132, 18, 52,125,171, 86,173,154, 21, 29, 29,157, 5,224, 42,128,143, 23, 44, 88,128, 25, 51,102, 96,238,220,185,123, 29,211,
+ 18, 59,237, 61,245,171,251,238,249, 19, 60,131,133,100, 16, 0,211,203,151, 47,225,226,226, 2,137, 68, 82,172, 49,104,213,170,
+ 85,125,137, 68,130,237,219,183,211,148,148,148,230,148,210,131,148,210, 4, 66,242,205,158,152, 3, 5,165,116,117,100,100,100,
+227,175,190,250,234,105,135, 14, 29,248, 77,154, 52,193,194,133, 11, 1,224,120,113,154,114,185,252,230,135, 31,126,104,188,116,
+233, 18,158, 60,121, 34, 57,114,228, 72,191,133, 11, 23,214,122,241,226,133,232,216,201,211, 31,236,124,169,236,247,221,217,107,
+ 14,139,206, 92,190,233,225, 44,169, 89,217,195, 13, 81, 47, 94, 9,172, 92,220, 46,235,160, 54, 17,240, 70,183, 21,243,163, 90,
+ 57,112,211,218,138,249,145,141, 4,188, 81, 74,165,114,223,209,163, 71,207, 76,157, 58, 85,157,153,153, 9, 39, 39, 39,228,228,
+228, 96,241,226,197,234,168,168,168, 67, 6,131,225, 88, 89,186, 86, 27,173,239, 95, 41, 0,120, 30,253,250, 61,147,141,226,182,
+ 81,128,110, 31,127,138,144,208, 80, 24,141, 70,212,174, 93,155, 44, 88,176, 64, 34,147,201,190, 40,211,244,112,254, 84,221, 44,
+132,144,116, 74,233, 43,181, 90,157, 34, 22,139, 95, 8, 4,130, 23,185,185,185, 41,148,210,140,247, 80,225, 57,148,131,207,155,
+213,174, 6,136,196,120,145,163, 78,189,173,162,185,197,173,235,228,228, 52,106,221,186,117, 14, 91,182,108, 49, 79,154, 52,201,
+ 48,110,220, 56,190, 78,167,243, 26, 55,110, 28,127,210,164, 73,134, 45, 91,182,152,215,173, 91,231, 32,149, 74,251,188, 77, 89,
+204,102, 51,162,163,163,191,139,139,139,147, 80, 74, 63, 3,240,233,252,249,243,135,199,197,197, 57,172, 93,187, 22, 7, 15, 30,
+196,193,131, 7,209,179,103, 79, 76,158, 60, 25,243,230,205, 43,109,187, 28,235,212,169, 19,238,238,238,142, 43, 87,174,164, 82,
+ 74, 95, 16, 66,234, 75,165, 82,167,158, 61,123,162,115,231,206,208,235,245, 48,153, 76,175,141, 22,151,203,133,139,139,139, 59,
+187, 12, 50, 24, 12,198, 95,107,178,222, 52, 91, 60, 0, 40, 12,213, 69, 68, 68,144,210,110,140,214,188, 76,200, 53, 90, 36, 41,
+180, 72,206,179,253,225, 51,155,205, 86,106, 1, 82, 83, 83,143,221,184,113, 99, 84,120,120, 56, 47, 53, 53,191, 69, 44, 60, 60,
+ 28, 90,173, 22,169,247,111, 65, 99, 3, 36, 85,195,160,209,104,144,247,248, 30,164,117,154,194, 61, 98, 40, 86,172, 93,107,200,
+201,201,217, 80,156,166, 80, 40,228, 87,172, 88, 49, 43, 33, 33,193, 2, 32, 87, 38,147,117, 10, 8, 8,192,229,203,151, 1, 96,
+ 23, 5,150, 33,234, 18,112,229, 48,104,126, 72, 69, 26, 24, 24,136,204,204, 76,168,213,234,203,197,105,222,184,113, 35,206,108,
+ 54,215,238,209,163, 7,249,249,231,159,247, 19, 66,230, 2,120, 48,203, 7,220,251, 47, 51,160,177,194,129, 16,210,209,213,213,
+245,179,121,243,230,181,159, 52,105, 18,142, 30, 61,138,179,103,207,154,144,159, 11,118,163,152,104,142,130, 16,178,113,218,180,
+105, 77, 56, 28,206,199,231,206,157,179, 4, 7, 7, 43, 77, 38,147,181,122, 72, 8,103,238,130,175, 5, 19, 63, 30,235,146,163,
+197,163,206,213,125,155, 17, 2, 60,122,149,249, 34, 78, 69,115, 74,219,167,173, 69,188,227, 3, 91,214,105, 53,106, 96,119,169,
+164,106, 77,104, 30,222,242,217,120,224,228,138, 54, 98, 94,183, 12,157,165,167, 76, 38,235,119,249,242,229,137, 70,163,177,138,
+ 72, 36,122, 46,151,203, 87,169, 84,170, 50, 77, 22,143,199,139, 8,243,175,232, 42,207,205,133, 67, 65, 36, 74,105,182, 33,219,
+ 96,193, 19,151, 96, 12,174,232,255,186, 25, 52, 61, 61, 29, 62, 62, 62,196,106,181,118, 47, 77,243,236,217,179,232,214,173, 91,
+161,241, 4, 33, 4,132,144,236,144,144,144, 12,145, 72,148, 35, 16, 8,148,203,150, 45,211,235,245,122,240,120, 60, 7,171,213,
+202,125,151, 10,223, 88, 66,188, 90,137,201,143,227,122,180,237, 80,183,102, 40,189,122,231, 62,201,211,234,183,149, 18, 5,252,
+161, 90,181,106,188,220,220,220, 99, 0,158,152,205,230,221,251,247,239,119, 24, 54,108,152,254,192,129, 3, 67, 0, 4, 45, 95,
+190,188,159, 90,173,222, 84,158,114, 60,123,246,236,135, 69,139, 22,125, 57,123,246,108,236,216,177, 99, 18,128, 25, 5,145,174,
+158,243,230,205,195,178,101,203,176, 99,199, 14,219,147, 39, 79, 78,218,108,182,103, 83,167, 78,173,227,237,237,157,157,150,150,
+246,108,193,130, 5, 37,201, 54,232,210,165,139,225,250,245,235, 66,149, 74,117,141, 16,242,217,248,241,227, 71, 55,110,220, 88,
+ 57,112,224, 64,105,110,110,174,220,209,209, 81,184,121,243,102, 87, 30,143, 7,141, 70, 3, 66, 8, 84, 42,149,145, 93, 10, 25,
+ 12,198,255, 42, 37,121,145,191, 3,175,167,219, 41,238,158, 90,220, 6,106,181,218,140,228,228,228,208, 87,175, 94, 89, 0, 88,
+ 0, 32,199,104,249,118,209,230,195, 91,250, 52,169, 38, 73, 51,155,113,228, 78,140, 54,199,104,249,182, 48, 50,241,234,213, 43,
+213,139, 23, 47,156,116, 58,157,186,132,223,250,253,199, 31,127,212, 93,186,116,201, 41, 62, 62, 30, 86,171, 21,245,235,215, 71,
+108,108, 44,242,158, 68, 67, 18, 90, 31,146,214,221, 16, 19,121, 7, 81,103,207, 35, 81,109,180, 60,157,179, 72,161,214,104,230,
+ 25,141,198, 35,197, 9,242,249,252,220,252,237,163, 86, 0, 80, 42,149, 15,212,106,117, 75,111,111,111, 60,122,244, 72,162,177,
+ 98,114,191,153, 43,214, 80, 74,173,130,252,158, 98, 83, 6, 14, 28,136,187,119,239, 2,192,221,226, 52,149, 74,229,164, 49, 99,
+198, 92,218,190,125, 59, 47, 62, 62,190,243,150, 45, 91, 58, 63,125,250,148,146,220,100,235,117, 45, 31, 65,195, 39, 55, 92, 31,
+ 24,114,182, 91,183,110,240,245,245,197,230,205,155,177,106,213, 42,243,132, 9, 19,226, 86,173, 90,213, 16,192,238, 18, 14,130,
+ 2,192,105, 15, 15,143,137,181,106,213, 82,105, 52, 26,228,228,228, 32, 53, 53, 21,110,238,238, 28, 11, 56,205, 60, 93, 92,118,
+ 31, 75, 87, 73,120,167,111,226, 86, 74, 90,169,209,172,166, 2,222,135,131,218,212,107,245,201,236,153, 82, 92, 63, 2, 50,102,
+ 30,232,150,111,240,233,136,126, 78,122,195,238,214, 13,120,188, 97, 10,139,101, 39,128,131,229,116,228, 93, 90,182,108,185,119,
+209,162, 69,226, 89, 75, 23, 97,121,104, 5, 88,114,114,144,101,176, 34,219, 96,129, 50,239, 9, 30, 61,138,129,187,187, 7, 18,
+ 19, 19,161,215,235,241,248,241, 99,202,229,114,143,149, 21,209, 41,242, 27,133,205,133,114,145, 72,148,195,231,243, 51,120, 60,
+ 94,110,124,124,188, 70,175,215,131,195,225, 72,172, 86,171,216,142,178, 86,244,240,240,152, 10,160, 15,128,163,170,236,236,213,
+225,124,184,128,135, 54, 85,188,220, 63,152, 51,110,152, 71,128,159,151, 60, 62,238,185,121,195,153,223,178,245, 6,124, 91,202,
+ 73,114,188,104, 68,146, 16,242,233,129, 3, 7, 70, 3,216, 90, 48,239,214,121, 0,235,223,226,252,155,115,232,208,161, 47,103,
+207,158, 13,177, 88,252,122,240, 84,177, 88,236, 0, 0,123,246,236,193,163, 71,143, 26, 23,230,107, 1,216,107,135,102, 80, 88,
+ 88, 88,252,225,195,135,133, 0,252,198,143, 31,223,116,205,154, 53, 24, 49, 98, 68, 86, 76, 76, 76,147,252, 8, 44, 9,250,248,
+227,143,111,239,216,177,195,213,102,179, 33, 47, 47, 15, 70,163, 49,129, 93,202, 25, 12, 6, 51, 91,127, 73, 52, 43,156, 82, 26,
+ 85, 48,176,119, 4,128, 19,148,210,180, 63, 24,173,194, 13, 4, 0,189, 94,255, 67, 96, 96,160, 12,128, 63,128,110, 0,142, 62,
+176,226, 32,158, 38, 33, 58, 49,101,102,161,241,122, 96,125,125, 19, 31,112,251,246,109, 99,165, 74,149,238, 3,248,166,132, 27,
+153,210,195,195, 99,225,212,169, 83, 23, 47, 92,184,144,199,227,241,112,233,210, 37,220, 56,115,194,246,248,218, 45,146,164,179,
+234,148,119,166,189,226, 81,235, 77,111, 93,238,195,123, 90, 28,162,148,166,148,182, 97, 26,141, 38,249,217,179,103,194, 90,181,
+106, 89,239,221,187,231, 65, 41,253,229,228,201,147, 45,167, 79,159,142,203,151, 47,239, 62,167,183, 14,166,212,182,159, 16,194,
+ 3, 48,184,123,247,238,159,245,235,215, 15,117,235,214, 53, 1,216, 81, 66, 57,175, 19, 66, 6,191,124,249,114,227, 23, 95,124,
+225,242,197, 23, 95,128,195,225,144,162,251, 42, 59, 59, 27,247,239,223,199,192,129, 3, 21,191,253,246,219,228,246,237,219,143,
+108,209,162, 5, 78,157, 58,229,103,199,193,248,253,241,227,199,189,101, 50, 25,121,246,236, 25,148, 74, 37,174, 95,191,206, 15,
+ 12, 12,108,182,127,255,126, 81,149, 42, 85, 16,243,240, 33, 78, 14, 30, 28, 65, 8, 9,164,148,190, 40, 78, 71,204, 39, 19,135,
+247,239, 46, 53, 92, 63, 6, 68, 93, 5, 0,168,149, 42,232, 18,163,209,175, 81, 53,231,203,143,147,198, 35,191, 23,102,185,112,
+115,115,251,116,249,242,229,146,224,224, 96,124,190,104, 41,166,206,158,142,143,189, 2,161,124,149,140,108, 43, 32,116,116,196,
+194, 57,179,209,189,255, 64,120,121,121,225,225,195,135,116,243,230,205, 26,133, 66,177,204, 30,163,197,229,114, 65, 8, 1, 0,
+141, 66,161, 80, 11,133, 66, 5,143,199,203,177, 90,173, 25,199,215,174,174,207,201,201,248,136, 16,194, 21,219, 56,199, 11, 58,
+ 91, 20,155,159,231, 66, 72, 96,213,160,160,135, 63,109,222, 44,105,220,184, 49,185,115,231,206,196,241, 99,199,140,238, 19, 86,
+249,100,175, 14,173,224,227,235, 99,176,153,140,242,147, 71,143,155,215, 31, 56,121,197, 72,108, 95, 68, 82,170, 43,199,211,201,
+222,162,166,135, 16, 50, 8, 64,127, 0,135, 41,165,187, 8, 33,195, 1,244, 2,112,168,164, 4,121, 66, 8, 7,192,166,190,125,
+243, 39, 19,208,233,116,218,194,247,235,212,169, 83,244,183,108,229, 57, 70,142,142,142, 78, 14, 14, 14,207, 79,157, 58, 37, 30,
+ 56,112,160,235,226,197,139, 95,141, 24, 49,162,194,238,221,187,127, 0,144, 72, 8, 9, 1, 80, 85,163,209, 88, 57, 28, 14, 66,
+ 66, 66,176,110,221, 58,181,213,106,221,202, 46,227, 12, 6,227,239, 96,182,254,134,197, 14, 7, 16, 5, 32,162,160, 3,225, 88,
+ 0,165, 79, 42, 13, 96, 81,116,116,116,225, 24, 90,227, 75, 27,222, 97,198,140, 25,145,119,239,222,141, 4,176,164,172,110,142,
+ 60, 30,239,151, 9, 19, 38, 80,111,111,111,181,151,151,215, 47,124, 46,119,180,191, 24,225,120,139,174,238, 0, 90,238,220,185,
+179,231, 15, 63,252, 16, 1,160, 49, 0,126,133, 10, 21, 82,211,211,211,213,191,253,246,155,186,121,243,230,106, 15, 15,143,204,
+176,176, 48,245,242,229,203,213,102,179, 89, 61,117,234, 84, 53,222, 24,239,171, 4,109, 7, 0, 19,133, 66,225, 47, 53,106,212,
+136,158,211,163,157,121,233,228,209,116,120, 53, 79, 53,128, 31, 0, 76, 0,224, 2,128,223,175, 95,191, 11,143, 31, 63, 62, 19,
+ 22, 22,182,209, 14, 93,191, 90,181,106, 93,220,187,119,239,221,195,135, 15, 71,126,241,197, 23,119,221,221,221, 83,226,226,226,
+108,122,189,158,230,229,229, 81,185, 92, 78, 79,156, 56, 97,117,115,115, 91, 91,146, 78, 75, 17, 55,141,158,221, 85,236, 16, 14,
+ 47,103, 15,165,205,133,156, 87,111,211, 13, 85, 34,145,228,230,228,228,208,244,244,116, 26, 31, 31, 79, 15, 29, 58, 68,187, 52,
+107, 68,247,125,220,135,238, 26,213,147, 46,235,210,136, 54,118,114,208,248, 56, 73,239, 58, 57, 57,101,186,184,184,108, 2, 80,
+173,172,225, 29, 12, 6,195,235,225, 27, 42, 86,172, 24, 25, 18, 18,114, 56, 44, 44,108,197,209,163, 71, 63, 93,185,114,101,207,
+182,149, 3,191, 92,220,185,153, 78,123,254, 0, 85,237,255,129,206,168, 31,172, 15,227,162,127,137,195,133,184,187,237,188,114,
+249,178,173,112,128, 78,139,197, 66,143,252,242, 11, 29,240, 65,199,104,197,233, 61, 63, 93,155, 55,105,239,212,250,193, 71,154,
+ 59, 96, 16,222, 24,168,180,184, 37, 92, 10,247, 86,206,156,117, 93, 3,220,210, 90,202, 56, 63, 52,113,130,107,145, 99, 54, 32,
+ 56, 56, 56,158, 82,154, 22, 26, 26, 26, 15, 96, 87,104,104,104,209,215, 31,149, 53, 56,233,252,249,243, 41,242,103, 81,224, 0,
+152,187,104,209,162, 72, 74,105,100,181,106,213,174, 83, 74, 81, 87, 2,143,214, 50,206, 79, 61,130,188,115, 90,203, 56, 63,213,
+149,252,121, 52,119, 74, 41, 2, 5,168,222,210,211,241, 90,207,106,190,170, 54, 21,100, 87,119,109,219,178,180,107,215,174,155,
+ 1,172, 5,240,141,187,187,251,181, 65,131, 6, 61,218,177, 99,199,163,229,203,151,155,226,226,226,232,200,145, 35, 53, 34,145,
+232, 27,214,117,156, 45,108, 97, 11, 91,254,242,145,225,125,203, 51, 96,105,247, 47,191,252, 50,146, 82, 90, 56,150,214,176, 98,
+214,233, 49,123,246,236, 72, 74,105,225,232,240, 29,202, 26,208, 12,192,252,117,235,214, 81,145, 72,244,211,187, 14,146, 6,192,
+167, 87,175, 94, 77,148, 74,101, 67,111,111,239,134, 5, 81, 39,127, 15, 15,143,248,221,187,119,171,117, 58,157,154, 82,170,182,
+ 88, 44,234,187,119,239,170,219,180,105,163, 70,254, 16, 16,118,141, 16, 94,116,153,229,131,235,119,230,140,162,179,124,112,253,
+141,239, 14,221,186,117,235,169,132,132,132, 99,206,206,206,211,237, 28,184,210,223,211,211,115,174,155,155,219, 25, 15, 15,143,
+ 89,110,110,110,105, 38,147,137,230,229,229,209,216,216, 88,122,249,242,101,122,227,198, 13,234,230,230,150, 82, 82, 57,219,139,
+121, 55,243,150, 78,164,182,173,139,168,113,205, 76, 10,128,202, 87,206,160,217, 63, 46,160,119,198,116,166,109, 28,184,191,191,
+205,160,115, 46, 46, 46,155,126,249,229, 23,219,179,103,207,232,241,227,199,233,137, 19, 39,232,228,201,147,105,117, 63, 95, 67,
+ 19, 33, 39,163,165,136,119,230,109, 6, 44, 53, 24, 12,145, 74,165, 50, 82,173, 86, 71,214,168, 81, 35,178, 81,163, 70,135,155,
+ 52,105,178,226,192,129, 3,159, 46, 94,188,184,103,123, 39, 81,172,246,252, 1, 74,191,248,128,210,137, 45,232,243,209,109,104,
+ 59, 49,239,126,137,154,222,222, 41,133,163,181,107, 52, 26,122,245,234, 85,122,241,226, 69,234,227,225,161,108, 37,230,142,109,
+ 46, 66,235,230,206,112,177,183,156,109,101,156,109, 55,127,252,214,170, 59,181,131,238, 25,254,129,165,141, 11,103, 93,145,245,
+246, 81, 74,211,250,246,237,155, 72, 41, 77, 59,116,232,208, 75, 74,105, 90,159, 62,125, 18, 11, 66,195,123,139,211,124, 99,112,
+210,173, 5, 38,107,226,252,249,243, 35, 41,165,145,243,231,207,143, 4,242, 7, 81,109, 45,227,108,191,181,113,153,205,112, 98,
+ 59, 61, 48, 50,194,218, 90,198,217, 94,108, 57, 93,120,199,162,182,174,164,198, 51,187,232, 47,147,135, 88, 91,248, 56, 95, 9,
+ 14, 14, 94,246,233,167,159, 30,190,113,227,198, 3,171,213,250, 40, 62, 62,254,209,218,181,107, 31, 53,109,218,244,186,187,187,
+123,180, 80, 40,156,192, 6, 69,100,154, 76,147,105,178, 1, 75,255, 59, 11,175,148,166,147, 99,132, 16, 9,165,116,106,191,126,
+253,176,100,201,146, 1,181,107,215, 30, 84,161, 66, 5, 79, 0, 72, 77, 77,213, 2, 80,246,235,215, 15,115,231,206,197,210,165,
+ 75, 87, 20,228,178,252,127, 38,159,165, 19, 66, 42, 78,154, 52, 41,115,241,226,197,182,145, 35, 71,134, 82, 74, 31, 18, 66,170,
+ 15, 25, 50,100, 34,143,199,235, 23, 24, 24, 24,150,150,150,150,165,211,233,118, 1,216, 88,216,102, 90, 94, 68, 28, 88, 27, 84,
+242,197, 25, 14,172, 69,154,134, 62,152, 59,119,238,192, 62,125,250,152, 86,174, 92,105, 81, 42,149, 71,237, 44,247, 75, 0, 95,
+ 23,190,118,119,119,247,185,127,255,254, 4, 47, 47, 47, 78,124,124, 60, 12, 6, 3,158, 61,123,102, 3,240,107, 73, 26,106, 11,
+ 93,189,254,208,185,144,169, 67,187, 57,107,159,220,131,128,203,133,153, 47, 68,250,205, 51,216,122,245,137, 82, 99,194,154,183,
+217, 78,185, 92,254,253,228,201,147,135, 76,159, 62,221, 33, 48, 48,144,252,254,251,239,216,191,127,191, 33, 51, 51,179, 11,165,
+244,202,219, 30, 43,155,205, 6,161, 80, 8, 0,152, 49, 99, 6, 56, 28, 14, 63, 51, 51, 83, 72, 8, 17, 17, 66, 28, 9, 33, 92,
+115,194, 35,216,148,121,200,200,147,227,101,134,188, 84, 61,171,205,182,255,214,173, 91, 83,234,213,171,199,185,115,231, 14,178,
+178,178,240,236,217, 51,106,165,116,239, 21,173,101, 83,121,203,231,232,230,222,171,174,171,136, 35,220, 54, 23,173,140, 28,238,
+ 6, 27,250, 2,152, 88,240,241, 86, 66,136, 0, 64, 78,141, 26, 53,218, 62,126,252, 88, 92,163, 70, 13,221,147, 39, 79, 78, 17,
+ 66, 42, 0,216, 94,108,243,174, 88,156, 13, 32,251,208,161, 67, 0, 48,134, 82,106, 35,132,212,159, 55,111, 94,218,213,171, 87,
+ 49,127,254,252, 12, 0,235, 0, 64,234,234,222, 35, 76, 38, 32,194,159,231,163,169, 1,156, 53, 54, 90,108,231, 2,169,151,119,
+187, 90, 18, 14,248, 91,190, 66, 67,159, 16,142,208, 98,170,189, 96,193,130,171,106,181,218,176,111,223, 62,227, 71, 31,125,196,
+141,139,139,187, 13,224, 90, 65,179,166,133, 53, 68, 48, 24, 12,198, 95,158,163,245,230,176, 14,197,231,104, 21, 99, 8,246, 16,
+ 66,178,151, 46, 93,218, 14,128,243,129, 3, 7, 26, 84,175, 94, 29, 0, 16, 27, 27,235, 24, 18, 18,242,180, 78,157, 58,143, 1,
+220,164,148, 30,179,179, 60,133, 23,126,219,123,218,190,152,233,211,167,147, 29, 59,118, 88,128,124, 19, 84,112,115, 89, 13, 96,
+117,105,121, 62,239, 74,112,112,112,199,175,190,250,202,184,101,203, 22,235, 55,223,124,115,148, 82, 26,247, 54, 58,185,185,185,
+203,135, 13, 27, 54,100,222,188,121, 50, 39, 39, 39, 18, 29, 29,109,219,186,117,171, 50, 55, 55,119,121, 73,223,185,101,180,236,
+107, 45,226,245,145,107, 14,116, 28, 16, 94,201,233,241,164, 8,196,222,186,134, 93, 87, 30,169,226,114,117,103,239, 88, 44,251,
+223,210,188, 62, 35,132,212,157, 59,119,238, 12,147,201,212,135,207,231,223, 86, 42,149, 11, 40,165,191,191,237,126, 50,155,205,
+ 25, 85,170, 84,121,243,119,204, 54,155,141, 82, 74,249, 22,139, 69,226,102,178,157,152,183,106,203,199, 31,133,200, 68,217,217,
+114,252, 28,167, 52, 20,233,108,241, 39,178,178,178, 86,140, 30, 61,122,196,188,121,243, 92,157,157,157, 73, 76, 76, 12,221,183,
+111,159, 58, 43, 39,103,201,219,148, 81,155,151,123,246,248,193, 3,253, 90, 24, 45,100,103,162,138,242,184,228, 84,145,178,158,
+ 3,112,174,224,100, 26, 74, 8,233, 11,224, 8,165,244,231, 82, 53,181,218,179, 0,132,125,251,246, 69,116,116,244, 0, 0,123,
+ 0,236,253,250,235,175,155,204,157, 59, 23, 11, 22, 44,192,188,121,243, 58, 2, 56,163,202,203, 57,113,120,239,174,193,109,204,
+102,206,206, 36,149,141,203, 33, 39,139,213,204,206, 56,119,234,220,249, 30, 13,157,253,200,166, 51,215,108, 90, 27,189, 55,124,
+248,240, 60,163,209,120, 6,192, 26, 0,209,148, 82,214,187,144,193, 96, 48,254,127, 3, 63,155,138, 49, 94,155,202, 52, 90, 5,
+ 95, 62, 15,224, 60, 33,196,167,121,243,230,139,100, 50,153,196,106,181, 34, 55, 55,247, 21,128, 85, 5,209,153,242,176, 79,161,
+ 80,124, 33, 18,137, 54,188,167,141,211, 19, 66,188,106,212,168,193, 7, 96, 40,230,243,247, 99,178, 40, 14, 61,139,123,230, 12,
+138, 67,133,111,197,197,197,237, 13, 11, 11,235,249,228,201,147,223, 40,165, 39,223, 97, 27, 94, 16, 66,234, 77,158, 60,249,115,
+ 0, 61, 1,252,154,155,155,187,188,164, 68,248, 66,174, 24, 44,253, 26,242,120, 67,238, 37,165, 79, 48,218,104,101, 33,135,147,
+160, 49,209, 31,111, 91, 44,123,222,113,159, 62, 3, 48,178, 96,121,103,178,179,179,203, 28,228,147, 16, 66,174, 60, 79,189,249,
+232,101,102,113,157, 45,138, 43, 99, 26, 33,164,238,212,169, 83,167,218,108,182,254, 28, 14,231,151,236,236,236, 50,247, 89,137,
+145, 60,163,117,202,134, 75,119, 4,171,172,182, 14, 34, 14,231,140,218,108,157, 89,194,239,238, 2, 96,215,232,240,207,159, 63,
+255,105,193,130, 5,181,230,205,155,135,245,235,215, 23,118,187, 60, 63,111,222,188, 76,171,213,234,191, 96,193, 2,108,220,184,
+209, 2, 0, 6,179,109,218,150,171,247, 56, 27,108,182, 15,248, 28,206, 41,131,217, 54,173, 88, 83,174,183, 76, 92,115,248,180,
+201,100,179,117,228,130,156, 74, 51,218,230, 24, 12, 52,137, 93,230, 24, 12, 6,227,127, 19,158,189, 43, 82, 74,211,223,199,141,
+151, 82, 26, 15,192,121,214,172, 89,239,211, 73,102,254,213, 59,234,171, 84,250, 3,128, 31,190,250,110, 95,209,223,189, 13,148,
+ 61,168,168,189,102, 11,192, 39, 5,139,221,220,177, 88,118,163,132, 33, 37,254,102, 79, 3, 20,192,129,130,197,222,239,164, 32,
+127, 46,203, 41,239,250,251,247,180, 52, 13,249,189, 8,223,231, 54, 69, 33,191, 23, 10, 94,189,122, 85,116, 59, 31, 20, 44, 40,
+ 28, 83,238,150,134,102, 2, 24, 98,103, 57, 7,176, 75, 23,131,193, 96,252,239, 80, 92,211, 97,185,141, 22,131,193, 96, 48, 24,
+ 12, 6,163,216, 7,235, 18,115,131, 9,128, 14, 37,124,201,238,196,118, 66, 72,135,183, 40,212,121,166,201, 52,153, 38,211,100,
+154, 76,147,105,254,187, 52,203,210,254,255,238, 88,247,255,225,194,254,202,113, 37, 88,215, 87,166,201, 52,153, 38,211,100,154,
+ 76,147,105,254,107, 23, 14, 11,248, 49, 24, 12, 6,131,193, 96,188, 61,132,144,240,130,191,190,132,144,177, 5, 83,241, 0, 40,
+ 33, 71,139,223,120, 81,134,197, 98,241, 2, 0, 30,143,151,105,190, 61,199,183,180, 31,224, 3,237, 45,192, 79, 5,130, 99,204,
+249,221,225,223,212, 60,103,177, 88, 92, 11, 52,243,204,183,231,116, 46, 85,179,209,194, 51,127, 88,255,214,236,142,197,108, 25,
+151,223,104, 97,234, 27,101,245,179,123,207, 20,204,145,248, 87,151,243,239,162,249,111, 70,208,100, 81,134,217,156, 95,143,248,
+124, 94,166,233, 86,233,245, 72,208,120, 97,234, 31,214,191, 57,219,187, 52, 77, 71,177, 40,167,106, 5,207, 21,165,105,198,167,
+102, 79,213,104,245,238,165,105,150,247,220,244,247,245,109,111, 45, 56, 55,185,192,152,151,169,169,231,254,151,234, 18, 33,164,
+ 1,128, 57, 0,156,139,188, 29, 77, 41,253,140,213, 74, 6,131,241, 55,162,196, 41,120,138, 53, 90, 22,139,197, 43,242,151,121,
+208, 24,128,246, 31, 46,244, 10,234,181,241, 79,189,218, 44,250, 60,161, 60,102, 95, 24,215,172,116,245,228,153,156, 83, 83, 83,
+ 73,193,133,243, 39, 0, 1,197,104,186, 70,254, 50, 15, 90, 35,208,106,208, 2,215, 0,192, 57, 75, 32,248, 92, 44,145,180,213,
+233,116,181, 0, 64, 44, 22,199,232, 52,154, 75,158, 38,211,242, 55,215, 47,105,203,138,150,181,221,176,133, 94,161,189, 54, 78,
+182,218,108,194, 87,119, 54,180,210,103,199,241,248, 22,195,186, 89,192,169,121,128,213,158, 61,245,135,223,237, 63,211,157, 15,
+180, 19, 58, 56,212,117,113,117,109,105,163,180,134,205,102, 35, 86,139,229,145, 82,161,184,102,179, 88,238, 91,140, 26,247,200,
+163,223,218, 74, 43,231,155,219,210, 31,224,253, 2,244,147, 72,165,109,185,124,126, 51, 0,176,154,205,191,107,212,234, 75,189,
+129,131,246,108,187,189,251,231,109,215,255,183, 97, 54, 91,188, 18,206,204,131,193, 12,132,247,253,214,171,206,144,159,119, 3,
+128, 49,243,190,183, 58,238,104, 99, 0,144, 84,237,118, 75,228, 19,158, 1, 0,188, 23,105, 94,177,199,103,195, 96, 6,106,116,
+ 91,224, 85,150,230, 71,115,247,187, 79, 31,219, 71, 4, 0,103, 15,253, 80,253,226,225,245, 31, 0, 64,187, 62,227, 79,117,234,
+ 59, 41, 22, 0,150,110, 58,236,190,247,219, 1,165,106,218,119,110, 42, 4,138,184,227,213,140,202, 52, 23,127, 9,207, 39, 46,
+ 46,142, 3, 0,126,126,126,118,157,155, 21, 1, 89, 26, 48,145,195,229,182,172, 90,173, 90, 56, 0, 26,255,252,121,148,213, 98,
+185,238, 11,172,123,207,117,105, 50,165,127, 28,156,181, 96, 46, 76, 6,131,193,248, 59,113,162,192, 92,157,120,243,131, 18,123,
+ 29,106, 12,192,149,103, 64,235, 38,117, 48,118, 72, 87,105,209,207, 14,110, 92, 16, 16,119,231,215,208, 45, 63, 47,231,212,169,
+ 83, 7, 9, 9, 9,118,149, 66,107, 4, 46,199, 1,144, 63,118,202,147, 72,158,175, 92,182,204,185, 99,199,142, 60, 63, 63, 63,
+ 16, 66,144,158,158,222,228,252,249,243, 13,166, 76,153,242, 49,228,143,243,180, 70,168, 46,219, 49, 4,104, 97, 89,107, 85,175,
+132, 57,147, 6,200, 0, 96,214,135,235, 26,220,121,154,225,246,252,249,243,246, 95,126,249,101, 14,247,210,165,245, 30,192,182,
+ 12,224,165, 61,229,220,113,236,150,131, 44,109, 79,208,208, 73,147, 14, 85,171, 86, 77, 26, 24, 24, 72,156,156,156,192,229,114,
+145,151,151, 23,240,240,225,195, 15,110,223,190,173, 57,127,229, 39,225,221,219, 61,226, 51, 29, 26,235,237,218,118, 93,170,195,
+ 89, 39,167,152, 97,189,123, 87, 28, 48, 96,128, 67,213,170, 85, 1, 0,207,159, 63, 15, 62,120,240,224,160, 67,135, 14,205,133,
+ 46,213,162, 53, 66, 95,214,182,191,214, 4,224, 0, 52,115,241,242, 26,202,229,243,107, 89, 44,150, 10, 5,209,134, 87, 86,179,
+ 57, 70,158,153,185,235,205,245, 25,127,198, 96, 6, 30,167, 1, 29, 90,134, 99, 88,159, 14, 18, 0,248,114,224,162, 38, 47, 18,
+159, 9,140, 70, 35,170,135,212,104,254,205,183, 43,206,128,195,193,206,195,231, 95,175,111,143,102,244,227, 4,204,251,102, 37,
+ 82, 31, 28,108, 98, 85, 60,107,171, 82, 42,184, 0,224, 44,147,245, 57,184,111,207, 37,191,176,126, 55,159,101,155,236,210, 44,
+237,220, 60,189,111,173,111,202,195, 75, 53,127, 60,187,149, 31, 16, 16,128, 7, 15, 30,148,239,220, 84, 60,117,178,249,250, 62,
+ 90,254,197, 23, 62,173, 90,181,130, 84, 42, 5,143,199,131,197, 98,233,112,253,250,245, 14,243,230,205, 27, 15,197, 83,141,189,
+231,166, 29, 44, 39,132,180,253,104,236,100,223,174, 61,251,161, 79,151,230,172, 34, 50, 24,140,191, 21,132,144,177, 5,189, 14,
+ 95,247, 60, 44,218, 11,177, 88,163,197,227,241, 50, 59, 14, 95,236,213,178,113,109,220,185, 31,171, 72, 74, 78, 83, 23,126,150,
+ 27,115,176,122,207,230, 21,106, 94,189,122, 5, 6,131, 1,191,255,254, 59,238,223,191,143,196,196, 68,140, 27, 55,206,192, 3,
+198,148,160,153,215,106,208, 2, 87, 40,226,164,193,194,167,149,207, 63,121,194,213,235,245,184,122,245, 42,242,242,242, 32, 20,
+ 10, 81,177, 98, 69,116,234,212,137,247,228,201, 19,183,246, 29,187,200, 90,117, 25,156, 0, 89,176,154,199,227,229,149,180,129,
+ 60, 30, 47,179,253,135, 11,189,106, 6, 87,194,243,164, 84,197,156,111,183,168,109, 54,202,139, 79,124, 97,186,114,229, 10,194,
+195,195,113,238,220, 57,247,220,220,220,175,214,173, 91, 55,135,255,221,143,171,205,198,156,105,165,232,229,181, 26,180,192,213,
+ 61,243, 64,224,197,211, 71, 4, 49, 49, 49,130, 13, 27, 54, 32, 39, 39, 7, 66,161, 16, 46, 46, 46,240,241,241, 65,245,234,213,
+201,172, 89,179,164,221,186,197,224,147, 49,253, 2, 77, 65,163,159,150, 84,206,215,219,174,126,225,232,161, 60, 91,245,240,137,
+ 19,156, 22, 45, 90,252,225,177,189, 74,149, 42,232,220,185,179,195,208,161, 67,171, 14, 24, 52,196,214, 42,226,163,231,144, 6,
+106,203,212,212,188, 20,187,107,111,248,117, 24, 52,232,232,130, 5, 11, 92,124,124,124, 32,145, 72, 0, 0, 10,133,162, 98, 82,
+ 82, 82,147,185,115,231,246,189, 21,189,143,215,170,219,203, 84, 72,252,117,165,237,207,127, 43,124, 62, 47,179, 48,138,228, 36,
+ 17,231,189, 76,201,208, 0,128,209,104,132,209,104,132,193, 96,192,132,241,227,184, 99,250, 54,170, 22,216,114,242,189,196, 87,
+ 25,185, 53,206,223,116, 43,252,110, 89,154, 60,109,162, 92,158,124, 97,204,188, 47,190,240,241,246,254, 79,139,224,206, 29, 59,
+184,185,185,185, 29,230,205,155, 87,147, 58,182,145,215,232,182,192,165, 52,205,210,206, 77,121,236,137,202,223, 76,234, 92,119,
+227,183,199, 97,181, 90,113,227,198, 13, 92,189,122, 21, 43, 86,172,160,167, 78,157, 82, 56, 75, 36,101,156,155, 79,157, 90,248,
+166, 7,125,247,221, 33, 34, 18,137,240,235,175,191,226,201,147, 39,224,112, 56,168, 83,167, 14,134, 13, 27,134, 14, 29, 58,248,
+140, 29, 59,142,182,234, 50, 48, 30,178, 16,213,187,212, 37, 66, 8, 7,192,228,153,243,190,243,253,112,244, 68, 44,253,102, 22,
+ 51, 90, 12, 6,227,111, 27,205, 42,113,136, 7, 74, 41,142, 31, 63, 78, 11,150,214,148, 82, 80,128, 83,165,215,198,189, 7,238,
+218, 78, 84,233,181,113, 47, 5, 56, 20,224, 56, 3,149,234,213,171,103,150,203,229,244,246,237,219,116,194,132, 9,154,213,171,
+ 87, 95, 58,113,226,196, 65,139,201,180,217,207,215,247,123, 10,112,138,205,188, 7, 56,129,128,204,209,209, 49, 43, 57, 57,153,
+158, 60,121,146,206,159, 63,159,238,218,181,139,158, 58,117,138,158, 63,127,158,158, 58,117,138,238,221,187,151, 70, 71, 71,211,
+216,216, 88, 42,145, 72,178, 2, 1, 89, 41,154, 92, 10,112,171,247,218, 48,237,208, 29,243,130,144, 94, 27,167, 80,128,235, 10,
+132,214,171, 87,207,122,240,224, 65,186,115,231, 78,250,243,207, 63,211,232,232,104,154,157,157, 77,121, 34, 73, 86,225,247, 74,
+ 42, 39, 5, 56, 21, 42, 84,200,146,203,229,212,223,223,159, 10,133, 66,234,237,237, 77,171, 87,175, 78,155, 52,105, 66, 63,248,
+224, 3, 58,100,200, 16,250,213, 87, 95, 81,185, 92, 78, 29, 28, 28, 50, 10,191, 87,146,102, 56, 32,150, 72, 36,201,145,145,145,
+180, 36,116, 58, 29,205,206,206,166,103,206,156,161, 18,137, 36, 57, 28, 16,151,166, 41, 6,234,135,133,133,101,101,103,103, 83,
+147,201, 68,147,147,147,233,195,135, 15,233,147, 39, 79,104,114,114, 50,213,233,116,175,181, 99, 99, 99,105, 80, 80, 80,150, 24,
+168, 95,162,230,191,121, 41,172, 19,111, 44, 1,222,222, 31,248,248,248,232, 14, 29, 58, 68, 95,189,122, 69,183,111,223, 78, 57,
+192,162, 63,173, 91,138,166, 16,232,212,162, 69, 11,235,141, 27, 55,232,189,123,247,232,140, 25, 51,104,231,206,157,105,151, 46,
+ 93,232,188,121,243,104, 74, 74, 10, 77, 73, 73,161, 31,124,240,129, 85, 8,116, 42,171,126, 22,119,110,202,128,128,110,221,186,
+233, 76, 38, 19,141,143,143,167,181,106,213, 74,225, 2, 67, 37, 64,205,214,128,168,172,250, 89, 1,112,245,245,245, 77,187,113,
+227, 6, 61,124,248, 48, 13, 12, 12,204,226, 2, 31, 57, 3, 85,156,129, 42, 92,224,163, 42, 85,170,100,221,184,113,131,230,228,
+228,208,128,128,128,180, 10,128,235,219,214, 37,228, 79,176,189,117,230,188,239,232,211, 20, 13,157, 57,239, 59, 10, 32,185, 96,
+ 64,215,115,172, 78,178,133, 45,255,190,229, 79, 94,228,159,214,235, 48, 34, 34,130, 0,184, 92,154,101,211,113,185,139,151, 46,
+ 93,202,211,235,245,216,178,101,139,170,127,223,190, 7, 90,183,108, 25, 95, 57, 48, 80, 78, 56,156, 50,231, 46,204, 18,137, 62,
+ 93,186,116,169,139,209,104,196,221,187,119,209,160, 65, 3,248,248,248, 64, 42,149, 66, 42,149,194,203,203, 11, 33, 33, 33,200,
+204,204,132,147,147, 19,166, 79,159, 46,203, 18,137, 62, 45, 75,215,102,163, 60, 0,176,218,108, 66, 1, 48, 54,168, 97,195,187,
+115,231,206,229,184,187,187,195,205,205, 13, 82,169, 20, 79,158, 60,129,209,104,132,163,216,209,174, 65, 90, 57, 28, 14, 71, 42,
+149,226,226,197,139,152, 60,121, 50,154, 53,107, 6, 23, 23, 23, 56, 57, 57,161, 86,173, 90,232,212,169, 19,198,140, 25,131,248,
+248,120, 16, 59,146, 74, 30,241,120, 19,199,140, 25,227, 21, 30, 30, 94,236,231,122,189, 30,114,185, 28, 89, 89, 89,168, 88,177,
+ 34,250,245,235,231,245,136,199,155, 88,146,158, 59,224, 83, 49, 56,248,232,237,219,183, 61, 36, 18, 9,118,238,220,137, 35, 71,
+142,224,244,233,211, 56,121,242, 36,142, 31, 63,142, 95,127,253, 21, 89, 89, 89, 0,128,224,224, 96,236,223,191,223, 67,234,229,
+117,220, 29,240, 97, 15, 32,246,241, 34, 35,227,108,173,244,116,143,161, 67,134, 92, 83,171,213, 24, 58,116, 40, 22, 47, 89, 50,
+139,111,231,104,244, 33,128,204,205,215,119,219,119,223,125,199, 73, 79, 79, 71,239,222,189,179,151, 47, 89, 50, 42,234,204,153,
+170,145,167, 79, 87, 93,188, 96,193,168,214,173, 91,103,167,164,164, 96,199,142, 29, 28,239,128,128,109, 33,128,172,188,229, 84,
+ 1,147, 87,173, 90,229,160,215,235,209,177, 99,199,120, 91, 76, 76,136, 5,216,163, 6,158, 92, 6, 76,101,125, 63, 13,152, 56,
+125,250,116, 31,145, 72,132,207, 63,255, 60, 91,251,226, 69,109, 11,240,179, 2, 72, 82, 0, 73, 22,224,103, 85, 66, 66,237, 15,
+ 63,252, 48, 91, 36, 18, 97,229,202,149, 62,105,255,153,116,219,222, 8, 86, 3, 66,200, 81, 66,200, 21, 0,169, 31,141,157,252,
+ 81,120,163,166,216,177,121, 29,190, 93,240,229, 54, 0,253, 9, 33,187, 0, 76, 99, 53,143,193,248,119, 98,143, 23,249, 95,109,
+ 62, 44,177,165,236,117,220,235,196, 9, 10,160, 77,105, 66,174,238,238, 13,106,215,174,141,171, 87,175, 34, 44, 44,236,182,139,
+139,139, 69, 32, 18,129,207,231,131,218,202,158, 35, 90, 44,145,180,239,208,161, 3,239,230,205,155, 8, 10, 10,130, 88, 44, 6,
+159,207,255,195, 34, 16, 8,224,235,235, 11,165, 82,137,246,237,219,243,215,172, 89,211, 30, 6,195, 55,101,222, 16,227, 30, 74,
+179,110,126, 55,228,167,237,219,170,180,106,213, 10, 10,133, 18, 54,155, 13,142,142,142, 48, 26,141,224,241,120,249, 77, 64,102,
+170,180,103,167, 89,173, 86, 43,151,203, 69, 80, 80, 16, 22, 47, 94, 12,189, 94, 15,129, 64, 0, 0, 80, 42,149,144,203,229,120,
+248,240, 33,146,146,146,236,154, 79,209, 73, 38,235, 58, 96,192, 0, 97,113,159, 25, 12, 6, 40, 20, 10, 40, 20, 10,200,229,114,
+232,245,122, 52,109,218, 84,120,226,248,241,174,200,201, 41,118, 98,105,131,131, 67,223, 29, 59,118,120, 9,133, 66,232,116, 58,
+168, 84, 42,188,124,249, 18, 47, 94,188,208,103,102,102, 90,156,156,156, 56,129,129,129, 28,145, 72, 36,234,213,171, 23, 81, 42,
+149, 32,132,160, 91,183,110,238,187,119,238, 28, 0, 96, 5, 59,165,237,227, 44, 96,168,111, 52,118,111,220,168,209,197,219,119,
+238,132,127,250,233,167,136,142,142,254,206,113,223,190, 43, 90,224,126,105,223,141, 7, 38,126, 95,196,192,208, 23, 47,194, 76,
+ 64, 86,145, 85,146, 2, 19, 18, 78,127,248,225,135, 15,162,163,163, 61, 86,174, 92,233,211,191,119,239,137, 0, 22,149,167,140,
+ 78, 50, 89, 67, 95, 95, 95,156, 58,117, 10,201,137,137, 95, 90, 0, 93,121,190,207,225,114, 91,180,106,213, 10,191,254,250, 43,
+ 82, 94,188,248,210,242,199, 50,230, 63, 40, 1, 89,188,248,248, 47,183,109,219,182,117,228,200,145,224,242,120, 45, 96,177,148,
+231,103,254,148,248, 62,114,220,167,216,182,105,205, 54, 0,163, 41,165, 54,188,167, 41,173, 24, 12,198,223,180, 13,206, 14, 47,
+242,119, 49, 91,133, 77,137,229,138,104,121,121,121, 85,144, 74,165, 72, 77, 77, 69,141,208,208, 76,145, 72, 4, 33,159, 15, 7,
+161,208,174, 66,104,181,218, 48, 63, 63, 63, 40, 20, 10,120,120,120, 64, 32, 16,188, 94,132, 66,225,235,255,157,156,156,192,225,
+112, 16, 16, 16, 0,173, 86, 27, 86,166,110,198, 67,175,125,107,198, 79,184,113,229, 84,149,222,189,251,192,213,213, 13,254,254,
+ 21,225,229,229, 5,177, 88, 12,127,127,127, 84,173, 90,149, 46, 95,190, 28,142, 94,117,236,186,144, 23, 53, 79, 60, 30, 15, 86,
+171, 21, 25, 25, 25,120,250,244, 41,162,163,163,113,227,198, 13,220,187,119, 15, 42,149, 10,246,204, 91,173,213,233,234,242,120,
+188, 98, 77,150, 92, 46,135, 92, 46,127,109,180,178,178,178,144,148,148, 4,181, 70, 83,175, 20,211,219,167,118,237,218, 92, 0,
+ 16,139,197,168, 87,175, 30, 54,110,220,104, 57,118,228,200,192,154, 55,110,184,249,159, 57,227,242,211,134, 13, 3,251,245,235,
+103,189,121,243, 38,148, 74, 37, 30, 63,126, 12, 79, 79, 79,158,208,193,129,205,149, 87, 78, 34, 1,141,135, 74,213,165, 89,179,
+102, 9, 10,133, 2,203,150, 45,227,240,157,156, 54, 45, 0,184,165,126,145,203,109,222,170, 85, 43, 28, 61,122, 20,169, 47, 94,
+204,120, 81,140,129,121, 1,100, 37,199,199,207,216,182,109, 27, 58,117,234, 4,194,227,149, 59, 81,169, 73,147, 38,181,109, 54,
+ 27, 30, 60,120, 0, 23,224, 86,121,191, 95,181, 90,181,240,194,200,175, 4,184, 86,210,122, 18,224, 90, 84, 84, 20,196, 98, 49,
+106,212,172, 89,191,156, 63,179,156, 16,146, 54,114,220,167, 56,124,250, 55, 0,192,182, 77,107, 50,138,152, 44, 6,131,193, 34,
+ 90,127,203,136, 86,161,177, 42,186,188,126,144, 45,167, 8, 0,128,207,231, 67, 40, 18, 65, 40, 20,230, 27, 36,145,168, 60,142,
+ 15, 14, 14, 14,175,141, 85, 81,131, 85,244,127, 71, 71, 71,187, 12, 12, 0,228, 61, 59,221,114,244,168,145, 66,145, 72, 4,163,
+209, 0, 74, 41, 68, 34, 7,184,184,184, 32, 40, 40, 8, 74,165, 18,205,154,183, 54,188,148, 11,142,187,215,232, 21,253, 54, 59,
+208, 98,177, 64,163,209, 32, 47, 47, 15,185,185,185, 80, 42,149,208,233,116,118,119, 69,183,217,108,220,151, 47, 95, 98,207,158,
+ 61,200,201,201, 1,144,159,104, 93,104,174, 10,255, 38, 36, 36, 96,231,206,157, 72, 76, 76, 44,215,241,105,217,178, 37,142, 31,
+ 63,206,109,211,190,253,230,115,129,129,169,231, 2, 3, 83,219,180,111,191,249,232,209,163,220, 10, 21, 42, 32, 41, 41, 9,119,
+239,222, 69, 94, 94, 30, 40,165,172,255,252, 91,240, 28,200,211,230,230,142,156, 53,107, 22,149, 74,165, 88,246,253,247,117, 23,
+ 1,131,237, 53, 48,178, 82, 12,140,236,221, 12, 12, 40,165,176,217,108,176, 90,173,111,181,109,132, 16,194,231,243,203, 59,180,
+ 2, 41,135,254,235,196,247,233, 95, 45,198,201, 95, 15, 22,126, 20,199, 76, 22,131,193,248,187, 83,218, 92,135,188, 34, 14,242,
+245,223,146,200,200,200,120,165,209,104,170, 4, 6, 6, 34, 37, 37,197, 43, 32, 32,224,133,144,207,135, 64, 40, 4,225,148,237,
+ 9, 28, 29, 29, 31,164,166,166, 54,175, 80,161, 2, 44, 22,203,107, 83,245,102,211, 97, 97,148,230,222,189,123,112,116,116,124,
+ 0,125,169, 35, 39,192,106,204,171, 84,191,126,253,215,145, 33, 23, 23, 23,184,184,200, 32, 18, 57, 96,246,236,217,182,149,203,
+151,175, 11,104,183, 64, 49, 98,202, 44, 58,107,209,230,247,186,115,237,189, 49, 57, 58, 58, 62,240,247,247,111, 42,147,201,112,
+248,240, 97, 36, 37, 37, 33, 47, 47, 15, 90,173, 22, 6,131, 1, 90,173, 22, 70,163, 17, 14, 14, 14,168, 89,179, 38,156,157,157,
+113,254,252,249, 7, 48, 24,138, 55,151, 57, 57,135, 31, 60,120,208,180, 81,163, 70,175, 35, 42,109,219,182, 37,109,219,182,245,
+120, 29, 69,211,106,145,157,157,141,219,183,111,227,252,249,243, 32,132, 32, 46, 46,206,106,208,233,246,178,211,226,237,208, 3,
+191,115,183,109,219,250,241,199, 31,143,106,222,188, 57,172,192, 7, 0,118,254,183, 12, 76, 33, 55,110,220,120,104,181, 90,155,
+ 87,175, 94, 29,114,160, 49,128, 95,203,101, 34,159, 61,139,178, 88, 44,237,235,214,173,139,195, 7, 14,180, 4,144, 84,220,122,
+ 26,160,101,120,120, 56,116, 58, 29, 30, 63,122, 20, 89, 14,147,181,121,230,188,239, 62,250,112,244, 68,236,216,188, 14,219, 54,
+173,121,185,117,227,106,127,216,145, 63,198, 96, 48,254, 85,209,172, 50,189,200,255, 34,197,229,104, 21,154, 47, 94,121,132, 20,
+121,121,145, 81, 81, 81, 85,234,215,175,143,205,155, 55, 55,106,214,180,233, 43,129, 80,104, 17, 10, 4,224,216,113, 35,209,105,
+ 52, 23, 46, 92,184,208,184, 87,175, 94,188,155, 55,111,194,199,199,231,181,209, 42,252,203,227,241, 64, 41,133,163,163, 35,126,
+249,229, 23,147, 78,163,185, 80,102,180,200,106,179,114, 10,140, 30,165, 20,114,185, 28, 2,129, 0, 43, 86,172,196,218,229,203,
+135, 88,129,131,193, 18,207, 47, 0, 56,252,215,110,208, 90,237,197,147, 39, 79, 54,152, 59,119, 46,191, 98,197,138,144,203,229,
+200,203,203, 67, 78, 78, 14,148, 74, 37,148, 74, 37,242,242,242, 32,151,203,225,224,224,128,232,232,104,179, 94,171,189, 88,146,
+158, 72,175, 63, 52,124,248,240,233, 81, 81, 81,190, 60, 30, 15,102,179, 25, 54,155, 13, 54,155, 13, 38,147, 9,207,158, 61, 67,
+ 76, 76, 12,158, 60,121,130,220,220, 92,240,249,124,112,185, 92,220,187,119, 47, 79, 98, 54, 31, 96,167,244,219,195, 7, 14, 95,
+191,126,125,212,176, 97,195,224, 87,177, 98,107,164,164,216,101, 96,142,148, 98, 96, 20,111, 97, 96,254, 96,128, 84,170, 59, 9,
+ 9, 9,205,219,180,105, 3,223,138, 21,191,171,153,146,114,238, 81, 57,242,180,172, 22,203,181,235,215,175,183,255,240,195, 15,
+177,121,243,230,239, 60, 19, 18, 78,103,189,209,204,233, 9,120, 86,174, 90,245,187,143, 62,250, 8,103,207,158,133,213, 98,185,
+ 86,202, 69,167,232,136,239,149, 62, 26, 59,217,255,141,196,247,141,132,144, 73, 0,150,177, 26,197, 96, 48,254,201, 17,173,114,
+ 53, 29,138,173,214,153,211,166, 77, 51,115, 56, 28,244,233,211,199,233,215,163, 71,251,221,187,127, 63, 40, 51, 51,211,197,106,
+181,150,169,229,105, 48,172,158, 54,109,154,220,104, 52, 34, 36, 36, 4,185,185,185,176, 90,173,224,241,120,224,241,120, 32,132,
+128,195,225, 64, 42,149, 34, 42, 42, 10, 91,183,110, 85,122, 26, 12,171,203,188, 73, 88,173, 15,118,238,220, 9, 46,151, 75, 29,
+ 28, 28, 64, 8, 1,143,199,195,202,149, 43, 51,215, 2,135, 1,128,203,225, 24, 1,128,195, 33,246,102,239,150,217,110, 41, 20,
+ 10, 97,203,239, 4, 80,230,186,174, 6,195,170,165, 75,151,170, 30, 63,126, 12,141, 70,243, 58,250,166, 86,171, 95, 39,215,203,
+229,114, 16, 66,160,209,104,112,244,232, 81,149,171,193,176,170, 36,189, 28, 32, 61, 37, 46,174, 71,163, 70,141,114, 18, 18, 18,
+160, 80, 40,240,224,193, 3,156, 63,127, 30,251,247,239,199,217,179,103,241,236,217, 51, 88, 44, 22, 84,168, 80, 1,148, 82, 28,
+ 57,114, 68, 97, 81,169, 62,200, 1,210,217,105, 81, 50,149,124,124,218,123,123,121, 37,123,122,120,164, 84,242,241,105,255,230,
+231, 50, 32, 54, 54, 54, 22, 22,139, 5, 65, 65, 65,110,165,229,105, 81,139,229,250,245,235,215,241,225,135, 31,194,191, 74,149,
+ 37,129,128,231,155,235, 4, 2,158,129, 85,171, 46, 41, 52, 48,212, 98,185, 94,222, 50, 59, 1,107,190,248,226, 11,157, 64, 32,
+192,190,125,251,130,204,213,170, 61,225, 1,131,165, 64,104, 27, 64, 80,214,247,125,129,117, 95,125,245, 85, 58, 33, 4,187,118,
+237,242,144, 85,173,250,144, 7, 12,151, 1,149,100, 64, 37, 30, 48, 92, 86,181,234,195,125,251,246,121, 88, 44, 22, 76,153, 50,
+ 37,221, 23, 88, 87,138,228,100, 74,105,119, 74,105, 43, 74,169,255,214,141,171,113,242,215,131,133, 38,107, 52,165,244, 54,165,
+116, 24,165,244, 33,171,113, 12, 6,227,159, 12, 41, 46, 15,138,223,120, 81, 6, 64,189, 90, 55,169,131, 59,247,159, 42, 60, 92,
+157,207, 20,126,150, 27,115,176,122,187, 48,231, 58, 63,254,248, 35,248,124, 62, 94,190,124,137, 71,143, 30,193,217,217, 25, 67,
+134, 12, 49,232, 84,170, 30,133,115, 29, 18, 66, 58, 80, 74,207, 23,104,230,207,167,166,136,147, 86,229, 69, 87, 57,125,242, 56,
+ 87, 38,147, 65,173, 86,131,195,225,192,193,193, 1,142,142,142, 16,139,197,184,123,247, 46, 34,186,247,180,102, 57,182,122, 61,
+ 96,105,225,124,106, 69, 53, 65, 8, 23, 0, 26, 3,142, 81,192,231, 94,126,126,211,230,204,153, 35,238,220,185, 51, 4, 2, 1,
+ 42, 86, 10, 78, 15,234,178,108, 13,135, 67, 44, 41, 57,202,217, 85, 43,249,201, 30,197, 37, 1, 32,249,115, 34, 22,204,117, 88,
+ 92, 57, 3,140, 87,130,126,249,121,185,115,189,122,249,249,232,114,185, 28, 25, 25, 25,200,204,204,132, 92, 46,135, 70,163, 1,
+ 0, 28, 63,126, 28, 39,175, 62, 81,234, 42,246,139, 47,169,156,255,217,246,167, 78,126,166, 91,149,119,239,252,153,235,233,233,
+137,140,140, 12,100,101,101, 65, 46,151, 67,167,211,193,106,181, 34, 55, 55, 23, 91,182,253,108,205,145,182, 74, 44, 28, 16,178,
+ 84, 77,205, 75,177,155,250,183, 10,225, 53, 3,233,168, 81,163,156,156,157,157, 97,179,217,144,151,151,135,228,228,100, 36, 36,
+ 36,224,234,213,171,154, 76,185, 17, 26,143,142, 41,133, 3,150, 22,187, 63,223, 95, 8,245,239,167, 89, 80,151, 0,192,207,215,
+ 55,245,197,139, 23, 94, 86,171, 21, 21, 42, 84,176,200,115,115,151, 8,129,179, 78, 64, 26, 0,154, 13,204, 89,181,102,205,200,
+158, 61,123,162, 97,195,134, 47,211, 51, 50, 42, 23, 87,151, 64, 8, 55, 4,144,105, 43, 86,140,185,125,251,182, 79,114,114, 50,
+ 62,252,240,195,236, 23,207,159,207,144, 21,228,107, 41,128,150,129, 85,171, 46,217,183,111,159, 71,149, 42, 85, 16, 22, 22,150,
+238,144,156, 92,235, 41,160, 40,161,126,150,120,110,202, 99, 79, 84, 30,223,187,118,195, 9, 19, 38,192, 98,177,224,234,213,171,
+184,117,235, 22, 94,188,120,129,223,126,251, 77,238, 44,145, 12, 44,156,235,176,164,250,249, 65,176, 38,104,215,174,157, 68, 32,
+ 16, 96,219,182,109,136,138,138, 2, 0,132,135,135,227,163,143, 62,130,197, 98,193,208,161,195,232,137,167,226,248,210,234, 39,
+ 33,164, 54,128,239,145,111,242, 26, 82, 74, 29, 8, 33,169, 0,252,203,147,147,197,234, 39,211,100,154,255, 30,205,127, 42,101,
+206,117,184,112, 61,100,127,156,230, 99, 76,234,193,141, 11,120, 45, 90,182, 10, 93, 48,127, 30,167, 81,163, 70,240,247,247, 71,
+120,120, 56,146,147,147, 69, 46, 46, 46,101,205,167,166,110,213,101,112, 66,157, 58,117, 92,102,204,152, 33,235,212,169, 19,223,
+223,223, 31,148, 82, 68, 69, 69,225,240,225,195,166,205,155, 55, 43,181,222,221,229,145,151,246,168,237,153, 79,237, 22,160, 5,
+240,117,197,212,212, 77, 19,199,143,159, 87,175,126,253, 81,243,231,207,231, 72, 29,197,252,197,179, 71, 59, 0,192,194, 31,246,
+203,122,246, 27,130, 85,213,128,214,131,139,159, 71,174,104, 57,147, 83,198,188,232,218,187,125,181,207, 39,141,180, 14, 24, 48,
+ 64,226,236,236, 12,127,127,127,184,186,186, 34, 62, 62, 30, 41, 41, 41,244,216,177, 99,234, 27,247, 98,249, 71,206,222,121,225,
+ 32,243,181,103, 94, 66, 85,171,206,253, 19,187,118,237,234, 58,124,248,112,167, 6, 13, 26,240, 69, 34, 17, 68, 34, 17, 50, 50,
+ 50,240,236,217, 51,211,177, 99,199,212, 90,175, 15,242, 34, 47,237, 83,217, 57,215,161,174,213,160, 5,207,174,157,155, 63, 37,
+230,193,131, 97, 54,160,174,201,100,170, 96,181, 90, 9,135,195, 73,179,217,108, 15, 76, 42,213, 86, 67,248,252,149,108,174, 67,
+251,176, 90,173, 2,171,213, 10,185, 92,142,115,231,206,241,158, 63,127, 62,231,254,253,251,115, 82, 83, 83, 97, 54,155,209,183,
+111, 95,132,135,135,227,210,165, 75,200,202,200, 56, 86,154,214, 83, 64, 33, 74, 73,249,104,204,152, 49,167,118,238,220,201,185,
+127,255,190,199,182,109,219,182, 20,103, 96,134, 13, 27,102,203, 72, 78,254,200, 0, 40, 74,169,159,165,157,155,217,167,247,173,
+189,223,171, 79,191,154,243,231,206,225, 55,107,214, 12, 30, 30, 30,104,217,178, 37, 76, 38,147, 75,141, 26, 53,202, 58, 55, 85,
+173,186, 12,140,175, 91,183,174,100,229,202,149, 62, 35, 71,142,196,164, 73,147, 0, 0, 58,157, 14,103,207,158,197,148, 41, 83,
+210,147,121,141, 53,101,213,207,130, 72, 85,161, 1,187, 2,160, 21,128,120,150,248,206, 96, 48,254,145, 81, 43, 66,194, 41,165,
+ 81,132, 16, 95, 0, 17, 0, 78, 80, 74,211, 74, 52, 90,192,127,230, 83,187,118,235, 33,138, 78,243,145,143,239, 35, 75,192,240,
+231,227,166, 45, 9,227,154,149,174,124,162,119,142,139,141, 37,101,205,121,248,122, 62, 53, 89,176,218, 61, 97,111,163,197, 11,
+ 23,126,186,106,213,170,246,133, 67, 56, 56, 58, 58, 62,208,105, 52, 23, 60, 13,134,213, 90, 89,240,133,242,206,205,151, 2,100,
+ 0, 24,239, 26, 25,185,166, 91,207,190, 75, 29,220,130,248,179, 22,109,214,115, 57, 28,227,179,212, 44,172,170, 6, 72,236,232,
+ 32,169, 53, 2, 49,114, 95, 75,134,123,191,167, 95,125,241,197,231, 11,191,254,186,145, 84, 42,109,109,178, 88,130,109, 54, 27,
+ 96,179,197,105, 53,154, 43,212,100,186,109, 8,159,187,220, 65,230, 75,237,158,151,208,165,134,202, 45,241, 96,163,237, 91,183,
+ 78, 62,112,224,192,159,182,221,221, 96, 88,163,117,169,113,222,158,109, 47,186,142, 30,248, 29,153,153,191,151, 88, 9,192,230,
+ 58,180,251,233,195,102, 27,235,234,234,186,163,125,251,246, 14, 29, 58,116, 64, 68, 68, 4,154, 53,107, 6,155,205, 6, 74, 41,
+ 84, 42, 21,246,239,223,143,165, 75,151,198, 85, 6,190, 46, 75,207, 0, 92, 16,157, 60,249, 65,221,186,117,183,149,102, 96, 10,
+ 76, 86,153, 57,137,165,159,155,162, 56,139,172, 71,210,160,137,139,171, 25,149,105, 46,238,142, 22,159,152,135, 15, 56,246,159,
+155, 33, 42,107,212,254,198,125,123,247,158,200,229,241, 90, 22,244,128,164,143, 31, 61,138, 44,156, 84, 26,225, 31,157, 43,103,
+ 93, 42, 28,187,142, 37,190, 51, 24,140,127, 42,225, 0,162, 0, 68, 80, 74, 55, 21, 36,199,151,156, 12,207,227,241, 50, 11,163,
+ 62, 60, 30, 47, 51,254,200,184, 33,165,169,243,129,246, 5,145, 44,148, 57,215, 97,193,255, 73,128, 10, 6,195, 55,127, 24,140,
+180, 72,239, 66,254, 27,235,151,103,107,243,128,167,176, 24,186, 33,243, 17,112,116,124,190, 94,163,133, 95, 22,221,166, 18,111,
+178,127,248, 93, 65,174, 30,184, 6,181,250, 26,212,234, 98,147,118,249, 60, 65,110, 89,229,124,115,219,147, 1,229,187,110, 59,
+175,156,251,135,247, 14,251,243,223,198,171,236,236, 35, 0,164, 21,143, 31,247, 62,125,252,248,128,207,167, 78,237,235,235,231,
+ 87,213,195,195,195,213,201,201,137,115,243,230,205, 4,139, 94,191,166, 30,176,189, 32,154, 90, 38, 6,224, 66, 72,114,114,173,
+254,189,123, 79, 36, 60, 94,139,162, 6,134, 90, 44,191, 5, 1,235, 74,139,100,189,237,185,233, 47,242,109, 95, 16,201, 2,215,
+206,115, 51, 37,191, 28,139, 96,177, 44, 66,116,116, 49,117,190,220,117,105, 33, 33, 68, 5,150,248,206, 96, 48,254,185,156, 40,
+ 48, 87, 39,254,244,201, 95, 57,191, 15,128, 14, 76,147,105,254, 83, 52,243,189, 10,156,217,254,100,154, 76,147,105, 50,205,247,
+175,249, 79, 93,120,204,132, 50, 24,246, 65,243,147,211,149,108, 79, 48, 24, 12, 6,163, 40, 69,114,179,138,222, 51, 54, 1,249,
+169, 59, 29, 74,184,169,156, 47,199, 15,116,120,139,155,214,121,166,201, 52,153, 38,211,100,154, 76,147,105,254,187, 52,203,210,
+254, 59,246,102, 36,132,140, 45,204,205,122,115, 76, 45, 98,239, 52, 55,111,249,195,172,235, 43,211,100,154, 76,147,105, 50, 77,
+166,201, 52,255,209,148, 22,209,226,176,221,195, 96, 48, 24,192,130, 5,132, 3, 16, 2, 44,224, 0, 7,185, 64,127,110,254,235,
+183,167,127,127, 82,236, 96,182,147,135,186, 57,177, 61,206, 96,252,115,160,148,166,149, 52,169, 52,203,209,250,239, 58,224, 0,
+ 31, 31,159,141, 0, 72,122,122,250, 88, 74,105, 50,219, 43,255,123,184,187,187,183,183, 88, 44, 80, 40, 20, 23,254,137,219, 87,
+171, 26,233, 77, 57,168,241,159, 43, 6,146, 31,197,209, 29,197,173, 91, 51,152,124, 8,242,159,177,184,136, 13,143, 99,158,209,
+ 95,202, 81,231, 57, 31,116,240, 95, 7, 0,167,206,191,156,248, 87,140,171, 69, 8,169,238,233,233,121,134,199,227,241,172, 86,
+235,248,140,140,140,227, 37, 27,161,254, 92, 0,224,211, 75, 51, 61,220, 66,103,124,246, 49,225,107, 13, 91,229, 6,157, 70,193,
+229,115, 19, 69,124,159,235,224, 86, 56,149,167,110,250,168,184,239, 31, 56,112,160,196, 89,188,107, 7,147, 15, 66,107,214,236,
+ 94, 63, 76, 28,255,253,234, 70,171, 90, 7,121,240, 19, 94,222,147,126,183, 65,177,209,217,173, 82,247,225, 3,221,143,243, 28,
+201,176, 45, 91,178,213,236, 44,179,159,111, 9,113, 51, 1, 97,124,145,200,223,106,177,120, 19,128,114,121,188, 12,179,193,240,
+ 82, 0, 68,207,160, 84,254, 79,215, 20,136, 68, 21,173, 22,139, 55, 0,252, 47,150,147,241, 71, 74, 52, 90, 78, 78, 78,119, 57,
+ 28, 78,197,162,147,225, 22,206, 39, 88,248, 94,209,207, 8, 33,176, 90,173, 41,185,185,185, 13,202,113, 65,116, 6, 48, 0, 64,
+ 97, 23,245,221, 0,246, 83, 74,149,111,121,129,117, 22, 8, 4,211, 36, 18, 73, 59,157, 78, 87, 11, 0,196, 98,113,140, 70,163,
+185,104, 50,153,190,127, 27, 93, 66, 8, 15, 64,127,169, 84,218,150,195,225,180,165,148, 18, 74,233, 37,181, 90,125, 17,192, 1,
+ 74,169,229, 45, 52,197, 94, 94, 94,139, 66, 67, 67, 7,207,156, 57, 51,199,221,221, 61,100,202,148, 41,119, 60, 61, 61,247,100,
+103,103,207,166,148,234,254, 23, 42, 7, 33,164,170,143,143,207,110, 62,159,207,125,249,242,101, 91, 0,240,247,247,191,100, 52,
+ 26,173,153,153,153, 67, 40,165,207,203,169, 39, 1,208, 68, 42,149, 54,144, 74,165,173,172, 86,107,141,130,249, 25, 31,171,213,
+234,171, 38,147,233, 46,128,155,148, 82,205,255,144, 25,118,242,242,242,218, 73, 8, 1, 33, 36,152, 82,170,250,199, 61,137,113,
+ 80,227, 81,204,147,144,215,102,170, 86,104, 41, 59, 4, 1,197,172,107,183,209,106,215,218,183,123,143, 30, 29, 57, 0, 96, 52,
+159,234,142,114, 78,126,109,143,201,234,211,167,207,239, 59,119,238,116, 53, 24, 12, 24, 59,118,236,110,153, 76,182, 78,161, 80,
+204, 44,237,123,206, 82,215, 41,203, 86,158,117,204,159,255, 26, 94, 54,155,213,235,213,171,231,193,143, 30,254,222, 37, 38,230,
+198, 98,221,147,139, 55,109,132, 63,206,132,150, 79,236, 41, 71,205,170,164, 91,207,254,189, 35,190,254,122, 62, 6, 15, 28, 92,
+ 41, 38, 70, 47,174,224, 28, 47,204,213, 73,170,185,123,122,245,248,122,225, 65,114,253,218,145, 30, 59,183, 45,184, 56,106,148,
+ 71, 59,102,182,236, 58,182,100, 33,143,215,196, 53, 52,180,213,192, 35, 71, 32,245,247,231,241, 68, 34, 14, 0, 88, 12, 6,127,
+245,203,151,190,251,122,244,104,188,128,144,203,243, 40,189,197, 52,255,255, 53, 25,229, 52, 90, 28, 14,167,226,171, 87,175,188,
+ 36, 18, 73, 97, 88, 12, 86,171, 21, 86,171,245,245,228,197,148,210,215,127, 45, 22, 11, 66, 67, 67,237,122,162, 5,208, 14,192,
+136, 54,109,218,244,251,254,251,239,249, 97, 97, 97,133, 83,134,180,156, 53,107,214, 15,132,144, 67, 0,182, 3,184, 96,239, 19,
+ 47, 33,164,179, 68, 34,217,181,108,217, 50,231,142, 29, 59,242,252,252,252, 64, 8, 65,122,122,122,147,243,231,207, 55,152, 50,
+101,202,120, 66,200, 80, 74,233,153,114,156,216,181,157,156,156, 14,246,238,221,187, 98,235,214,173, 29,106,214,172, 9,171,213,
+138,123,247,238,141,188,123,247,238,160, 67,135, 14,205, 35,132,244,179,119,190, 54, 66, 8,145, 74,165,195, 43, 84,168,176,104,
+238,220,185,110, 67,135, 14, 21, 62,124,248, 48, 47, 40, 40,136, 92,191,126,221,115,255,254,253,227,151, 44, 89,210,223,201,201,
+105,182, 90,173,254,153,218,145, 64,231,236,236,124,151,195,225, 84,180,199, 8, 3,176,219, 12, 19, 66,234, 85,174, 92,121,255,
+181,107,215, 42, 39, 37, 37, 89,123,245,234,181, 3, 0, 46, 94,188, 24,102, 54,155, 73,167, 78,157, 78, 17, 66, 6, 80, 74,239,
+217,185,237,117,220,220,220,126, 29, 60,120,176, 91,213,170, 85, 29, 43, 87,174, 76, 36, 18, 9,184, 92, 46, 20, 10,133,223,195,
+135, 15, 59,220,186,117, 75,119,254,252,249, 92, 66, 72, 15, 74,105,116, 57,142, 83, 51, 47, 47,175, 97,124, 62,191,182,197, 98,
+169, 0, 0, 60, 30,239,149,217,108,126,152,153,153,185,147, 82,250,251,219,158, 32,222,222,222,107, 23, 45, 90,228,145,153,153,
+ 73,151, 44, 89,178, 22,192,240,127,234,197, 96,247,158, 3,184,123,231, 22, 0, 8, 8, 33,228,205,250, 71, 8, 33, 53,130, 33,
+248,236,179,169,104,208,176, 49,134, 12,238, 95,166,102, 68, 7,255,101,124,161,192, 93,175,215,255,174,208, 26, 14,120,187,187,
+ 12, 24, 60,168, 91, 28, 0,156, 58,125,121, 64,227,198,110,151,100,142,162,254, 14, 14, 14,205,204, 70, 83,206,137,243, 47,191,
+ 40,143,169,170, 80,161,194, 25, 87, 87, 87,199,220,220,220,244,172,172,172,245,125,250,244, 89,184,125,251,118,215,132,132, 4,
+188,124,249, 18,159,126,250,169, 52, 37, 37,101,162, 72, 36,186, 97, 48, 24, 74,140,108,169, 84,185,171,103,205,232, 57, 87, 38,
+243,224, 74, 28,157,225, 36,115, 67, 80,213,186,104,210,172, 59, 62,136, 24,133,103,113, 81, 77,182,111,251, 58,234,213,171,243,
+223, 74,221,170, 44,148,203, 43,151,120, 93,170, 21, 66, 90, 23,154,172,185,115,231, 35,246,201, 19, 85, 82, 34,231,147, 19, 71,
+120,142, 31,180, 15, 21, 89,140,233, 73,215,175, 29,169,220,162,101, 47, 0,104,176,115,219,130,139,147,135,186,181, 95,179, 43,
+ 87,197,110, 73, 37, 95, 59,191,230,243,135,119, 94,185,210, 43,124,252,120,129, 58, 49,209, 20,191, 97,131, 54,227,234, 85, 43,
+ 79, 36,162,254, 93,186, 16,207,182,109, 29,198, 63,126, 44,248,109,201,146, 86,139,133,194,160, 89, 70,227, 46,166,249,255,167,
+201,234,232,235,100,248,215,185, 90,133,205,135,188, 82,190, 4,137, 68,130,125,251,246,129,207,231,131,199,227,129,207,231,151,
+248,127, 64, 64,128, 61, 5,233,227,227,227,243,195,186,117,235,188, 59,119,238, 12, 7, 7,135,215,159,113,185, 92,116,236,216,
+ 17, 29, 58,116,224,167,166,166, 14,218,183,111,223,160,197,139, 23,103, 16, 66, 38, 81, 74, 15,151,161,219, 54, 36, 36,228,240,
+217,179,103,197,122,189, 30, 87,175, 94, 69, 94, 94, 30,132, 66, 33, 42, 86,172,136, 78,157, 58,241,158, 60,121,226,214,177, 99,
+199,195,132,144,110,148,210, 75,118,148,181,129,151,151,215,149, 3, 7, 14, 56,212,173, 91,151, 60,123,246, 12,225,225,225, 0,
+ 0,133, 66,129, 94,189,122, 57, 12, 29, 58,180,234,160, 65,131,110, 18, 66, 90, 83, 74,239,150,161, 87,223,199,199,231,231,222,
+189,123,251, 45, 94,188,216,217,201,201, 9, 73, 73, 73,105, 62, 62, 62,193,133,251,123,208,160, 65,194,238,221,187,251, 46, 93,
+186,116,245,193,131, 7,191, 32,132, 12,167,148, 70,150,166, 91,104,136, 29, 29, 29,145,145,145,129,221,187,119, 99,226,196,137,
+224,114,185,200,204,204,196,254,253,251,241,201, 39,159, 20, 26, 26,187,204,176, 68, 34,233, 80,183,110,221, 45, 23, 47, 94,172,
+232,226,226, 2, 63, 63, 63,206, 87, 95,125, 85, 59, 40, 40, 72, 92,169, 82, 37,110, 90, 90, 26, 14, 31, 62, 28, 52,108,216,176,
+ 95, 29, 28, 28, 70,234,245,250, 50,155,212,188,189,189,183,158, 56,113, 34, 32, 38, 38, 6, 27, 54,108, 64,110,110, 46,132, 66,
+ 33, 92, 92, 92,224,227,227,131,224,224, 96, 50, 99,198, 12,199,238,221,187, 59, 78,154, 52,105, 43,128,122,118, 28,163,186, 94,
+ 94, 94, 27, 7, 13, 26, 20,180, 96,193, 2, 23, 31, 31, 31, 20, 62, 24, 40, 20,138,138, 73, 73, 73, 77,230,206,157,219,207,219,
+219, 59, 33, 51, 51,115, 28,165,244,126, 57, 79,156,122,237,219,183,239,214,171, 87, 47,110, 90, 90, 26,118,238,220,217,141, 16,
+ 82,207, 94,115,249,119,227,238,157, 91, 24, 59,225, 83,181,159,191,191,224,236,153, 45,125,228,242,154,119, 92,196,249, 19, 82,
+203,117, 48,181,107,205,109,216,169,243, 40, 65,215,136, 94,234, 77, 63,174,150,218, 99,180,248, 66,129,251,238, 93, 43,146,175,
+ 93,191, 91,251,220,249, 91, 93,250,244,232, 65, 5, 2,151, 32, 0,248, 98,202,103,252,195, 71,143,110,235,216,161,113,106,203,
+ 22, 13,146,135, 12,157, 26, 80,142, 99, 83,189,122,245,234,151,163,162,162,188, 69, 34, 17,114,115,115,221, 55,109,218,180,162,
+ 69,139, 22,156,248,248,120, 60,121,242, 4,137,137,137, 80, 40, 20,232,216,177,163, 52, 50, 50,114, 61,128, 18,141,150,137,211,
+110,145, 95, 37,243, 26,119,177,164,178,201,170,244,162,230,180,154,231, 78,156,171,179,119,167, 46,220,219, 55, 52,120,196, 71,
+243,240,245,194, 67,252, 61,187,191,155,123,225,252, 94,128, 83,185,228, 25, 1, 40,154,205,154, 61, 19, 74,149, 1, 67, 7,143,
+193,176,193, 99,220, 41,140,190,212,170,151, 24,117,121, 46, 78,130,199,199,215,109, 94,209, 27, 64,197, 34,102,235, 2, 51, 91,
+ 37,243, 53,143,215,184,219, 15, 63,120,214, 30, 61, 90,116,127,193, 2, 77,246,213,171,186,106, 93,187,230,133,127,252,177, 1,
+ 0, 84,137,137,130,216,121,243, 28, 61, 91,181, 18, 55,157, 54,205,213,106, 52,250,124, 67, 72,163,175, 40,189, 93, 94,205,128,
+ 1, 3,172,115,183,109,107,120,117,234,212, 54,196,108,230,118,105,218,244,222,146,157, 59, 95,189,139,230,251, 44,103,234,149,
+ 43,134,220,160, 32,132,247,234,149, 19,224,229,101,120,159,219,254, 46,229,100,160, 48, 40,149, 6,160,112,100,248,252,235, 21,
+165, 20, 39, 78,156,104, 13,224, 50,128, 5, 17, 17, 17,243, 1,192,197,197, 37, 67, 46,151,123, 29, 62,124,184, 76,147,197,231,
+243,225,235,235,139,224,224,224,204,140,140, 12,239, 82, 46,142, 47,109, 54, 91, 69, 74,233,235,232, 75, 73, 24, 12, 6,196,197,
+197,161, 78,157, 58, 41,148, 82,255,210,154,118, 28, 29, 29,227,159, 60,121,226,241,232,209, 35,220,189,123, 23, 65, 65, 65,112,
+117,117, 5,159,207,135,217,108,134, 82,169, 68, 72, 72, 8, 68, 34, 17,234,215,175,159,173,209,104,130, 74,107, 2, 34,132,136,
+ 36, 18, 73,220,149, 43, 87,252,195,195,195,113,251,246,109,248,251,251,195,199,199, 7, 0,144,152,152,136,235,215,175,163,107,
+215,174,136,138,138, 66,223,190,125, 95,106, 52,154, 96, 74,169,161, 36, 77,119,119,247,180,139, 23, 47,166,132,133,133,233, 53,
+ 26, 13, 39, 35, 35,131,127,245,234, 85,139, 74,165,146, 42, 20, 10,190, 92, 46,231, 43,149, 74,158, 70,163,225,115, 56, 28,129,
+ 78,167,227, 95,184,112,129,107, 52, 26,157, 75,219, 79,133,199,233,232,209,163, 8, 11, 11,195,225,195,135,241,249,231,159,227,
+183,223,126,131,191,191, 63, 14, 28, 56,128,105,211,166,225,233,211,167,240,240,240, 64,205,154, 53, 75, 61, 70, 0, 80,173, 90,
+181,103, 15, 30, 60,168, 42, 16, 8, 10,231,117, 44,156, 47, 15, 89, 89, 89,120,254,252, 57, 94,189,122,133,106,213,170, 97,240,
+224,193,207, 83, 82, 82,170,149, 85,249, 42, 86,172,152, 21, 19, 19,227, 81,167, 78, 29,100,100,100,192,197,197, 5, 50,153, 12,
+ 46, 46, 46,175,255, 15, 10, 10,194,212,169, 83,225,227,227,147,169,211,233,188,203, 50, 65, 97, 97, 97,103, 46, 92,184,224,225,
+236,236,140,244,244,116, 40,149, 74,240,120, 60, 56, 58, 58,194,195,195,227,181,145,143,139,139, 67, 68, 68, 68,118,124,124,124,
+231,114, 68,224, 56,222,222,222, 79,162,163,163,131, 41,165, 72, 78, 78,198,211,167, 79, 49, 97,194,132, 56,189, 94, 31,250, 79,
+154,179,175, 72,222,149, 96,248, 71, 99, 5,189,123, 54, 51, 62,142, 57, 78, 68,182,167,168, 87,219, 89, 1, 0,247, 30, 42,101,
+ 6, 78, 8,106,212,234, 70,127,249,245,119,225,207,219, 55,241, 97,131, 55, 8,158, 62,138,165,223,148,164,221,185,157,223,232,
+207, 62, 27, 89,187, 77,139,214, 28,149, 70,227,181,126,253,202,250,241,241,143,189, 0, 32, 40,168, 70,230,248,241, 83, 34,157,
+ 36,146,204,203,215,175,216, 86,173,218,250,240,204,197,212,205,118, 28,155,160,224,224,224, 27, 71,143, 30,245,240,242,242,130,
+ 76, 38,131, 70,163,129,201,100,194,163, 71,143,244,251,246,237, 51, 59, 59, 59, 59,165,167,167, 67, 46,151,131, 16,130,163, 71,
+143, 38, 83, 74, 3,223,212, 42,204,209, 2,128, 9, 31,212,224,215,108, 23,236, 42, 16, 89,196, 98,126,172, 47,136, 85, 68,168,
+212,251,212,153,123,117, 78,157,187, 61,164,119,159,207, 61, 91,182,238,141,185,115,250,153, 83, 83,147,195, 77,104,249,164,184,
+ 28,173, 26,193,164, 93,175,190,189,251,127,253,245,124,204,159,187, 0,199,143, 30, 81, 72, 37, 28,131,179, 11, 95,214,170, 73,
+115,253,212,137, 61, 95,170,213,169,254, 95, 47,221, 55, 56,162,231,212,138, 45, 90,246,194,245,107, 71,176,115,219,130,187, 68,
+ 76, 89, 51,226, 27, 44, 32,196,213, 37, 40,104,220,228,184, 56,193,253,249,243,213,150,212,212,188, 6, 83,166,100, 23,183,110,
+202,185,115, 18,161,159,159,179,107,143, 30,110,171, 3, 3,169, 57, 51,115, 99,113, 57, 70,197,105,158,151, 74, 93,246,158, 58,
+213,158,242,249,173,167,127,249,165,184, 91,183,110, 80, 42,149, 56,116,232, 16, 54,110,216, 96,240,245,245,125,224,247,240, 97,
+ 84,109,165,114,142,189,154, 13,166, 76,201,182, 90,173,164,255,180,105, 29, 99, 18, 19,219,165,103,102, 86, 2, 0, 95, 55,183,
+151, 13,130,130,238,110, 61,126,252,233,218,202,149,109,246,150,243,167,211,167,189, 15, 38, 37,141,118,115,115, 19,103,100,102,
+242, 68, 66, 97, 78,147,154, 53, 15,252, 56,123,246,101, 75,116,180,192,161, 98, 69,103, 89,183,110,229,222,246, 6, 83,166,100,
+231,170, 84,188,201, 11, 23, 54,127,145,145, 81, 73,109, 48, 84,147,171, 84, 62, 86,179,153,227,236,232,152, 83, 37, 36, 36, 83,
+119,245,106, 90, 21,173,246,211,159, 40,205,252,171,142,117,113, 94,228,111, 20,209,122,179,215,225,159,230, 58,188, 28, 17, 17,
+ 65,138,113,102,118, 69,179,248,124,254, 31,154,169, 74, 65, 64, 8, 65,100,100, 36,220,221,221,225,227,227, 3,145,232,143,147,
+ 15,102,101,101,225,183,223,126,195,227,199,143, 81,183,110, 93, 0,249, 79,212, 37, 33, 18,137, 62, 91,186,116,169,139,209,104,
+196,221,187,119,209,160, 65, 3,136, 68, 34, 8, 4,130, 63,152,192,204,204, 76,212,170, 85, 11,211,167, 79,151, 45, 94,188,248,
+ 51,148, 50, 71, 29,143,199,155, 52,102,204, 24,175,194, 8,214,203,151, 47, 81,191,126,253,215,159,123,122,122,226,222,189,123,
+104,208,160, 1, 42, 86,172,136,126,253,250,121,237,220,185,115, 18,128,239, 75,210, 20, 10,133,156,176,176,176,134, 5, 17, 35,
+112, 56,156, 88,103,103,103, 79,111,111,111,137,179,179,243,159,182,113,219,182,109,114, 14,135, 99, 46,107,135,114, 56, 28,164,
+167,167,163,118,237,218, 80, 40, 20, 0, 0,141, 70,131,106,213,170, 65,169, 84,190, 54,173,126,126,126,208,233, 74, 79,253,170,
+ 91,183,238,252,208,208,208, 78,109,218,180, 17,241,249,124,220,191,127, 31,225,225,225,216,183,111, 31, 2, 2, 2,224,232,232,
+136,184,184, 56,132,133,133,225,202,149, 43,240,244,244, 68,173, 90,181, 68,245,235,215,191,150,155,155,123, 41, 41, 41,105,126,
+ 41,229,228, 72,165, 82, 92,185,114, 5, 91,183,110, 69, 98, 98, 34, 82, 83, 83,225,228,228,132,122,245,234,161,102,205,154,104,
+214,172, 25,226,226,226, 64,202,168, 76,132, 16,159,224,224,224,227,183,111,223,246,160,148, 98,231,206,157, 80,171,213, 48, 26,
+141,224,112, 56,112,112,112,128,171,171, 43,218,181,107, 7, 79, 79, 79, 4, 7, 7, 99,255,254,253, 30, 31,124,240,193,201,130,
+136, 84,122, 89,251,213,213,213,245,211,121,243,230,249,123,121,121, 33, 41, 41, 9, 10,133, 2,222,222,222,104,211,166, 77,133,
+243,231,207,127, 10, 96,229, 63,229, 70, 86,152,248, 78, 8, 33,103,207,108,233, 19, 92, 37, 47,172,110,136,163,255,225,227,222,
+254,251,142,103,214, 2,128,218, 53,188, 99,250,116,115,124,121, 63,230,248,203,179,103,142,220,125, 28,139,195,246, 52,109, 43,
+180,134, 3,231,206,223,234, 18, 94,183,190,109,233,119,211, 34, 38, 78, 24, 45,242,242, 30,133,140,228, 35, 56,127, 49, 50, 96,
+218,231, 99, 60,191, 95,254,211,169,115,231,111,113, 20, 90,195, 28,123,202, 91,189,122,192,218,237, 63, 54,243, 80,101, 31,196,
+179, 39, 66,136,157,106, 35, 40,168, 58,148, 74, 37, 28, 28, 28, 28, 6, 15, 30,108,157, 57,115,166,214,217,217,217,145, 16,130,
+ 75,151, 46,101, 2,232, 92,150,174,222,203,149, 90, 77,102, 11, 21,114,109,148, 56,233,136, 53, 87,248,240, 81, 2, 58,117,104,
+155,209,162,113,237,197, 51,191, 94, 62, 43,184,122,184,231,200,209, 11,248, 11,231, 15,217, 0,130,150,197,233, 60,142,163, 23,
+107, 86, 37, 98, 0, 17, 95,127, 51, 31,241,241,113,174, 99, 71,200, 23,240, 68, 98,191,208,192,230, 78, 27,182, 94,234, 82,173,
+ 90,229, 74, 83, 39,245, 59,177,226,135, 21, 17, 69, 35, 91,219,183,205,251,149, 16,210,158,254,149,227,238,252,253,168, 51,236,
+248,113,168,147,147,205,185,215,174,233,219,255,240, 67,182,127,231,206, 43,141, 38,147, 71,225,165,130, 67, 8, 72, 97,234,132,
+205, 70,120,211,167,115, 40,143, 7,179,171,235,136, 25, 64,245,178, 52, 63, 79, 75,235, 51,100,244,232,136, 95, 79,159, 70,229,
+202,149, 95,223,207, 92, 92, 92, 48,109,218, 52, 76,153, 50, 69,116,239,222,189, 70, 7, 15, 30,108,244,253,178,101,222, 51,128,
+ 62,246,148,243,236,205,155,174, 31,127,253,245,236,186, 13, 26, 4,236,216,189, 91, 84,181,106, 85, 0,192,243,231,207,131,191,
+ 91,178, 36,176,118, 88, 88,198,226,207, 62,219, 30, 51,115,102, 45, 0,215, 74,211, 76,191,122,213,120, 48, 41,105,244,197, 75,
+151, 92,106,215,174, 13, 0,120,250,244,169,215,234,213,171,199,212,234,215,111,232,215,227,199,207,233,166,215,203,157,179,178,
+ 68,221,214,174,229,237,237,223,191, 76,205,194,114, 2, 64,155,145, 35, 63,107,217,182,109,205, 62,163, 71,187, 5, 4, 4, 16,
+169, 84, 10,147,201,132,212,212, 84,215,152,152,152,170,199, 85, 42,229, 47, 55,111,238,252,169, 96,178,248,191,136, 98,189,200,
+223, 41,146, 85,172,167, 40,248,219,230,196,137, 19, 20, 64,155,136,136,136, 43,133, 55,112,171,213,106,151,201,226,241,120, 40,
+ 72, 22,182,183, 64,200,206,206, 70,118,118,246,235,166,163,204,204, 76, 92,188,120, 17,113,113,113,224,243,249, 16, 8, 4, 48,
+153,202,158,131, 86, 34,145,116,232,208,161, 3,239,230,205,155, 8, 10, 10,130, 88, 44,126, 93,174,194, 69, 32, 16,192,215,215,
+ 23, 74,165, 18,237,219,183,231,175, 89,179,166, 67,105, 70, 75, 38,147,117, 29, 48, 96,128,176,240,181, 90,173, 6,151,203,125,
+109, 90,212,106, 53,114,115,115, 33,151,203,161,215,235,209,180,105, 83,225,241,227,199,187,150,102,180,138,162,213,106,213,153,
+153,153, 46, 45, 91,182,116,221,190,125,251,211,166, 77,155,134,252,161,166, 93,190,172,215,235,245,124, 14,135, 99,215, 60,122,
+187,118,237,122,189,239, 95,189,122,133, 13, 27, 54,188,254, 44, 46, 46, 14,107,214,172,121, 61, 21, 64,105,199, 40, 52, 52,244,
+131,157, 59,119, 54,216,177, 99, 71, 30,151,203,197,211,167, 79,177,123,247,110, 80, 74,225,233,233, 9,173, 86,139,140,140, 12,
+ 92,186,116, 9, 22,139, 5, 82,169, 20, 21, 42, 84,112,152, 52,105, 82,139, 5, 11, 22,240, 1,148,104,180,172, 86,171,149,203,
+229, 34, 48, 48, 16,115,231,206,133, 94,175,135, 64,144,239, 47,149, 74, 37,228,114, 57,162,162,162,144,148,148,132,178,110, 50,
+ 14, 14, 14,253,118,236,216,225, 37, 20, 10,161,211,233,160, 82,169,240,242,229, 75,188,120,241, 66,159,153,153,105,113,114,114,
+226, 4, 6, 6,114, 68, 34,145,168, 87,175, 94,164,208,112,118,235,214,205,125,231,206,157, 3,203, 50, 73,132, 16,207, 26, 53,
+106,204, 26, 51,102,140, 67,209, 58,155,158,158,142, 62,125,250, 56,254,254,251,239, 51, 9, 33,187, 41,165, 89,255,176,144, 55,
+149,203,107,222,185,123,254,105,216,225,227,222,254, 47, 82,172,205,167,125,177,156, 7, 0,155, 54,126,219,252,240,241, 87,191,
+133, 86,206,120,121,240,151,234,119, 92, 92, 30,209,178, 34,130,237, 90,251,118,247,118,119, 25,208,167, 71, 15,186,126,253,202,
+250, 19, 39,140, 22, 5, 86,159, 6, 0,168,192,247, 66,123,203, 55, 68,171,123,238,176,126,253,202,250,125,122,244,141, 74, 76,
+ 76,218,216,190,141,223,254,139, 87,210,142,149, 22, 49,244,114,119,168,224, 40,210,160, 66, 80, 77,132,212,144,224,222,253,167,
+ 56,116,224, 6,106,212,106, 2,131,193, 0,139,197, 34,233,222,189,187,118,223,190,125,250,216,216, 88,149, 78,167,107, 77, 41,
+141, 45,107,251, 83, 82, 30,217, 66,124,154,152, 4, 98,145, 69,165, 16,104,103,204, 57,216,191,126,227, 78, 13, 92,125, 43,240,
+ 61, 37,182, 99, 31,116,108,180,123,235,230,185, 83,230,204,219,141,134,141, 58, 53,125,252,244, 90, 77, 0, 15,138, 53,175,207,
+233,241,218,193,196, 18,255,236, 89,196,139,164,164,148,234,222, 62,198,231,114,106,254,116,198, 79, 29, 91,182,238, 87,167,106,
+141, 86,194,199,143,174,144,185,211, 7,238,249,122,233,138,193,133,102,235,194,185, 61,173, 71,140,184, 33, 4, 96, 96,254,170,
+224,233, 92, 36,170, 40, 13, 12,228, 37,110,223,174, 11,234,222, 61, 15, 0,140, 38,147, 71, 98, 82,146,204,209,209, 17,148, 82,
+152,205,230, 63,228, 16, 23,230, 13,215, 14, 9,241,182, 71, 51,241,171,175,234, 76,159, 62, 29,233,233,233,176, 88, 44,224,243,
+249,111, 94,179,161,209,104, 48, 98,196, 8,172, 93,182,172,137, 61,154, 86,171,149,124,252,245,215,179,191,156, 61,187,234,184,
+113,227, 56, 69,175,189,110,110,110, 56,120,232,144,112,221,186,117, 21,103,173, 93, 59, 98,136, 72, 20, 95,150,102,118,181,106,
+112,203,200, 16, 23,154, 44, 0, 8, 9, 9,193,134, 13, 27, 68,163, 70,141, 18,118,239,222,125,249,189,186,117, 87,175,108,209,
+226,153,123,245,234,206, 66,145,168,162,189,251, 19, 0, 84,122,125,237,149,171, 87,187,222,186,117, 11, 25, 25, 25, 72, 79, 79,
+ 47, 60,151,209,176, 97, 67, 50,108,216, 48, 89, 21,127,255, 70,127,241,225,254,147, 23,249, 27, 69,180,198, 22,115, 77,253, 79,
+142, 86,193, 6,145,130, 13, 36, 69,110,142,127, 48, 44,101, 25,173,183, 65, 46,151, 67, 46,151, 99,243,230,205, 16, 8, 4,175,
+111,190, 0, 96, 52, 26,237, 49, 45, 97,126,126,126, 80, 40, 20,168, 94,189,250, 31, 34, 89, 2,129, 0, 60, 30, 15, 2,129, 0,
+ 34,145, 8, 6,131, 1, 1, 1, 1,208,106,181, 97,165,105,234,116,186,122,110,110,110,175,111,176, 6,131,225,181,201, 42, 44,
+175,209,104, 68, 94, 94, 30,212,106, 53, 84, 42, 21, 52, 26, 77,184, 61,219,107,179,217,240,240,225,195,231, 33, 33, 33,245,184,
+ 92, 46,164, 82,169, 68,163,209,188,206, 45,202,205,205,197,207, 63,255,172,249,240,195, 15, 61,142, 30, 61,170,181,227,224,226,
+147, 79, 62,129, 72, 36,130, 86,171,197,250,245,235, 49,121,242,100, 8, 4, 2,168, 84, 42,108,216,176, 1, 83,167, 78, 5,143,
+199,131,209,104,196,234,213,171, 75,142,108, 60,122,148,120,243,230,205,240,250,245,235,187,254,242,203, 47, 89, 29, 59,118,244,
+236,220,185, 51,196, 98, 49,116, 58, 29,204,102, 51,154, 52,105,130,208,208, 80,100,102,102,226,212,169, 83,217,193,193,193, 30,
+183,110,221,178,165,167,167,191, 40,235, 38, 94, 36, 98, 8,171,213,138,140,140, 12,200,229,114,100,101,101, 33, 53, 53, 21, 41,
+ 41, 41,224,241,120, 40,235, 97,222,221,221,189,111,237,218,181,185, 0, 32, 22,139, 81,175, 94, 61,204,158, 61,219,162,211,233,
+ 6, 0, 56, 85,176,218, 7, 63,253,244,211, 47,215,175, 95,231,249,249,249,225,201,147, 39,240,244,244,228, 57, 56, 56,148,105,
+180,124,124,124,182, 29, 59,118,204,173,208, 92, 23,238,103,173, 54,255,112,244,233,211,199,109,199,142, 29,219, 0,116,253,167,
+221,212, 92,196, 16,212,171,237,172,216,119, 60,179,214,180, 47,150,243, 66,107,231, 63,188,142, 29, 7,222,247,203, 62,175, 53,
+180,167,243, 9, 23,177, 82, 80,150,206, 7, 29,252,215,245,232,209,145, 51,120, 80,183, 56,129,192, 37,104,227,166, 5, 94, 94,
+222,163,138,132, 56,157,225,238,225,140,160, 64,225,255,177,119,213,225, 85, 28,111,247,204,238,213,220,184,123, 66,144, 36, 16,
+130, 75,139, 83,156, 64,113, 43, 45, 80,138,150, 22, 40, 20, 41, 90, 42, 72,161, 72,113,104,139,187,150,224,148, 32,197, 61, 9,
+ 16, 8,144,132,184,235,245,221,157,239,143,200, 47,164,145,155, 64,141,111,207,243,220,231,222,221,187,123,118,102,103,118,231,
+204, 59,239,188, 67,246, 7, 63,116,154, 49,243, 27,221,142,109, 63, 62,219,181,251, 88, 87,185,244, 76,103, 0,227,202,226,142,
+136,204, 60,170,214, 41,235,100,167,221, 39,118,206, 45,209,176,129, 63,156, 28, 51,176,233,215, 61,240,169,222, 20, 58,157, 14,
+ 86, 86, 86, 42,158,231, 13, 44,203,238, 48, 69,100, 1,192,185,115,153, 66,221,186,153,122, 54, 71,224, 62,253,124,105,159, 78,
+221,222, 15,120,239,189,142,194,233, 51,167, 13, 45, 27, 25, 18,186,117,105,152,116,242,204,154, 39, 9,241,207,125,235,214,107,
+133,240,176,243, 93, 1, 18, 10,148, 94, 97, 67,159,208,147, 53,107,146,243,123,246,140, 22, 52,194, 29,179,111,191,123,208, 45,
+ 40,104, 88, 96,155,214,109,132, 51,103,127,215,203,145,250,208,170, 85,139,184, 79, 63,233,118,232,231, 29, 43, 59,159, 60,241,
+107,173,172,236,232, 99,191,254, 74, 69,145, 85,188,147,198,113,206, 18,133,130, 73, 57,127,158,171, 55,114,164,174,240,121, 84,
+169, 84, 56,114,228, 8,228,114,121,209, 71, 38,147, 21,253,118,118,118, 46,156,124,101, 18, 39, 0, 36, 36, 36, 32, 49, 49, 17,
+214,214,214,112,116,116, 68, 98, 98, 34,174, 92,185,130,136,136, 8, 72,165, 82,116,237,218, 21, 76, 25,190,205, 37, 57, 7, 76,
+157,218,169, 78,189,122, 94, 37, 69, 22, 0, 24, 12, 6,164,167,167,163, 87,175, 94,204,137, 19, 39, 92, 78,198,196,188, 63, 7,
+216, 81, 30,103,163,160,160,180,164,253,251, 75,189,118,227,198,141,201, 31,127,252,161,232,218,165,203,228, 41,223,125,183,230,
+167,109,219, 94,242, 28,231, 82,153,188, 51, 12,195, 16, 66,224,233,233,137,244,244,116,228,230,230,143, 96, 91, 88, 88,192,214,
+214, 22, 70,163, 17, 2,165,210,191,178,172,203,210, 34,255,145,142,234,198, 66,193, 85, 50, 50,188,164, 96, 92,180,240, 69,209,
+174,120,195, 34, 8,130, 73, 34, 75, 42,149, 86,232,115,101,138,149,171, 36, 76, 17, 90,133,105, 85, 42,149, 69, 15, 90,113,129,
+ 85,152, 78,134, 97,192,178, 44, 76,177,200, 11,130,192,230,228,228,224,192,129, 3,104,219,182,109,209,176, 84, 86, 86, 22, 50,
+ 51, 51,145,149,149, 5,173, 86,139, 23, 47, 94,224,220,185,115,168, 85,171, 22, 96, 98,240,215,103,207,158,221,242,241,241,105,
+ 82,216,136,183,111,223,222, 99,203,150, 45,241,221,187,119,119,163,148, 98,246,236,217,169,239,188,243,142, 67,241, 70,190, 34,
+176, 44,139, 43, 87,174,160, 86,173, 90,160,148, 66, 38,147,225,241,227,199,112,114,114,130, 32, 8,144, 72, 36, 72, 73, 73,129,
+165,101,249, 49, 18, 67, 67, 67, 71,124,252,241,199,241,214,214,214,245,211,210,210, 18, 20, 10, 69,235,139, 23, 47,122, 26, 12,
+ 6, 88, 89, 89,193,202,202, 10,199,143, 31,135,141,141, 13, 38, 77,154, 20,163,209,104,174,152,155,155, 59,107, 52,154,251,137,
+137,137,179, 43, 83,222, 28,199, 33, 47, 47, 15, 25, 25, 25, 72, 79, 79, 71,118,118, 54,180, 90,109,133,105, 44, 13,173, 91,183,
+198,177, 99,199,216,133, 11, 23,254,252,236, 89,126,199,176, 70,141, 26,152, 52,105, 18,235,238,238,142, 23, 47, 94,224,214,173,
+ 91, 48, 24, 12,160,148,150,251,240, 74,165,210,246, 83,166, 76,105,229,229,229, 69, 12, 6, 3, 4, 65,128, 78,167, 67,225,239,
+152,152, 24,212,169, 83,135,241,246,246,126,151, 16,210,222,148,137, 21, 34,242,145, 20,115, 24,238, 82, 39,128,177, 2,213, 28,
+ 70, 90,106,213,150,141, 76, 78, 78,254,110,218,156, 63, 70,254,180,196,224, 28,155, 0,248, 7,246,134,111, 64, 7,140,248,144,
+195,194, 31, 14,192,203,219, 31,209,209,209,104,223,190,189, 44, 62, 62,254, 99, 0, 83, 77,229, 62,115,230, 26,127,250,248,137,
+254, 3, 6, 13,107,210,177, 99,119,238,212,169,227, 8,189,127, 42,236,227, 65,253,146,169,144, 75,236,108,204,238, 60,126,116,
+211,183,126,195,118,208,115,124,107, 96,254, 18, 0,101,190, 84, 34, 35,169,254,235,175,191,102,130, 15,255,250,225,144,161,195,
+ 27,116,232,208,217,120,234,204,111,184,117,245,204,189,101, 75, 70, 93, 88,184,114,111,251, 78, 93,251,213,117,116,190,114, 60,
+208, 79,247,137,167,189,117,164, 88, 83, 74,135, 68,169, 20, 80,240, 94,100, 8, 1,165,244, 21,145, 85, 82,104, 49, 12, 83,161,
+ 1,160, 56,103,241,182,168,176, 67,189, 97,195, 6, 40, 20, 10,200,229,114, 72,165,210, 10,221, 47,138,115,134,189,120,241,222,
+214, 29, 59, 20,165,137,172,180,180, 52,164,165,165, 33, 55, 55, 23,131, 7, 15,150,125,125,243,102,227,138, 56,189, 92, 93,117,
+230,102,102, 73,225,225,225,110, 1, 1, 1,175,164, 55, 59, 59, 27,102,102,102,216,177,115,167,172, 71, 80,208,248, 14,199,143,
+ 47, 3,144, 89,217,188, 19, 66,224,228,228, 4, 91, 91, 91, 16, 66,192,113, 28, 18, 19, 19, 17, 22, 22,134,155, 55,111,130, 37,
+132,251, 43,203,184, 52, 45,242, 95,179,106,149, 20, 89,197, 45, 90,164, 44,235,139,169, 66,139,101,217, 42, 91,181,202,130, 41,
+ 67,135, 42,149,234, 65,124,124,124, 75,119,119,119,112, 28, 87, 36,180, 74, 14, 29, 22, 90, 63,238,222,189, 11,149, 74,245,160,
+ 34, 78, 74,233,187,205,154, 53,195,193,131, 7,113,254,252,121, 60,127,254, 28,106,181, 26, 58,157, 14, 26,141, 6, 97, 97, 97,
+ 16, 4, 1,129,129,129, 48, 55, 55,175,144, 19, 0,242,242,242, 18,164, 82,169,191,153,153, 89,209, 62, 87, 87, 87,164,165,165,
+ 9, 70,163, 17, 91,183,110,205,118,113,113, 49, 55, 51, 51, 51, 89,184, 18, 66,144,156,156, 12, 15, 15,143, 34, 31,173,156,156,
+ 28, 56, 57, 57, 21, 10, 11,232,116, 58, 88, 90, 90, 86, 56,116, 72, 41,213, 2,152, 82,140,187,233,128, 1, 3,118,237,217,179,
+167,250,217,179,103,113,253,250,117, 56, 58, 58,226,251,239,191,127, 30, 21, 21, 53,132, 82,122,243, 47,168,168, 21, 30,147,150,
+150,118,224,193,131, 7,239, 54,107,214,172,232, 45,209,190,125,123,210,190,125,123,135,226,166,254,148,148, 20,220,184,113, 3,
+103,207,158, 5, 33, 4, 79,158, 60,225, 53, 26,205,174,114,174, 45,243,246,246,222, 50,107,214, 44, 11,142,227,138,234,182,153,
+153, 25,148, 74, 37,100, 50, 25, 88,150, 69, 84, 84, 20,122,245,234,101,189,122,245,234, 95, 9, 33, 53, 41,165, 6,188, 37,200,
+212,192,112, 55, 52,219, 58,176,142,115,216,198, 13, 11, 91,142, 30,131,194,161, 67, 46,176,142, 83,216,221,208, 36,235, 38, 78,
+ 48,216,200,203,231, 57,113,246,229,167,122,227,137,158, 39, 78,134, 12,252,114,242, 36,105,141, 26,117,146,207,254,126,219,171,
+ 3,247, 13,177,119,176, 66, 90,106, 54,162, 98,146,240, 44, 90, 79,107,212,168,147,124,235,198, 3,197, 15,203, 87,248,230,169,
+181,123,127,191,144,240, 91, 5,157, 50, 45, 33,164,247,178, 85,138, 11,195, 62,110, 42, 55, 51,115, 67,122,234, 3,120,121, 57,
+162, 87,143,250,248,101,219, 21, 88, 91,219,193,217,217, 25, 12,195,152,155,154,247,212,212, 84,114, 96,247,165,145, 31, 13, 31,
+245, 78,151,206, 65,220,201, 83,193,146,243,167,143, 94,249,117,227, 87,135, 40,155,167, 34, 52,199,172,154,143,203,253,200,167,
+119,135,188,215,113, 48,204,100,150,181,128,218,165, 86,216,162, 9, 6, 20, 49, 12, 3,229, 71,195, 71,183,232,210,229,125,238,
+212,169,195, 56,117,124,219,181,121,243,170, 29,127, 30,183, 83,118,245,102,172,178,119,255,113, 25,199, 78, 60,212,247,235,233,
+ 19,225,102,222, 80, 3, 17,175,118, 36, 37,146, 36, 78,167,243,244,232,210,133, 85, 71, 71, 75, 45,156,157, 57, 0, 48, 26,141,
+ 21, 10, 45, 0,130, 41,156,166,166, 69,173, 86, 67, 0, 56, 83, 56, 19,147,147,171, 21,116,194,139, 96, 52, 26,139, 68, 86, 90,
+ 90, 26, 50, 51, 51, 97,110,110,142, 20,157,206,217, 20,206,206,205,155,111,253,122,254,252,169,251, 15, 28,144, 21, 23, 89,133,
+ 31,169, 84,138,197, 75,150,200, 62,255,242,203,113,227, 37,146,137,149,185,159,133,157,118,150,101, 33,145, 72, 16, 29, 29,141,
+152,152, 24, 68, 71, 71, 35, 58, 58, 26,102,102,102,160,101,220,207, 55,104,209, 34,255,213,122, 90, 56,116, 88,124, 8,209,164,
+240, 14,149,113,134, 55, 85, 24,240, 60,255, 70,133, 86, 94, 94,222,217,115,231,206, 53,239,221,187,183,228,218,181,107,112,113,
+113, 41, 18, 90,133,223,133,195, 81, 42,149, 10,135, 14, 29, 50,228,229,229,157,173,224, 97, 58,119,252,248,241, 38,115,231,206,
+149,142, 24, 49, 2,225,225,225, 24, 51,102, 12, 50, 51, 51,145,157,157,141,180,180, 52,168,213,106, 52,111,222, 28, 74,165, 18,
+247,239,223, 55,170,213,234,115, 21, 52, 14, 52, 57, 57, 57,215,209,209,209,181,228,127,253,251,247,119, 94,187,118,173,250,209,
+163, 71,198,150, 45, 91, 90,153, 42, 56, 10,177,123,247,238, 34, 75, 93, 68, 68, 4,214,174, 93, 91,228,147,117,251,246,109, 44,
+ 93,186,180, 40,246, 89, 37,173,140, 55,235,214,173,203, 25,141, 70,212,170, 85, 11,238,238,238,208,106,181, 88,177, 98, 5,247,
+ 87,136, 44, 83,161,213,106,247, 15, 27, 54,108,250,157, 59,119, 92, 37, 18, 73,190, 73,187, 32,127, 6,131, 1, 79,159, 62, 69,
+ 88, 88, 24, 30, 61,122,132,244,244,244,162,142,192,221,187,119, 51,140, 70,227,222,178,120, 29, 29, 29,103,255,242,203, 47, 46,
+ 42,149,234,149,250, 92,104, 13, 45,180,146,166,164,164,192,198,198, 6, 29, 58,116,112, 58,119,238,220,108, 0,115,223,134, 6,
+141, 16, 66,222,107,203, 54,253,252,211,222,232,219, 67,245,242,224,177,184, 63,150,254, 48,165,192, 25,222, 41,172,111, 15,247,
+151,247, 30,219,160,127,159,195, 77,127,191, 64, 98,203,243,165, 43,240,177, 58,210,188,185,221,249,131, 71,143,254, 58,115,218,
+228,219, 83,167,140,114, 84,107, 34,149, 53,188,229, 4, 0,158, 69,235,233,253,112, 65,187,116,217,228,219, 11,151,172,102,146,
+210, 50,199, 92,191, 94,118,120,131,226,226,165,174, 31,148, 53,106,183,141,247,245,107,229,115,237,202, 14, 88,168, 52,240,175,
+221, 20, 93, 58,191,139,243, 33,119,145,152,162, 69, 66, 66, 2,116, 58, 93,185,225, 18, 30,221, 63,244, 33, 37,212,139, 80, 18,
+ 67, 24,170,252,112,216, 39,173,131,130,222,167,199,142, 29,229, 14, 31,218,113,121,239,246, 85,251, 25,153, 84,162,209, 91,235,
+ 9,209,102,129, 9, 13,207,205,203,239,208, 72, 21,178,178,205,175, 5,129, 93, 3,234,214,118,249,112,216, 24,235,238,221,122,
+209,227,199, 15, 11,123,247,108, 61,191,119,115,189, 29, 2,147, 45, 75,120,169, 86,100,101, 27,179, 40,145,219,228,102, 11,234,
+164,103, 53,181,110, 65,253,223, 26,209,254,198, 58,220, 58, 93,108,238,203,151,174,118,109,219, 42,158,206,159,175,114,110,222,
+ 92, 75, 10,124,136,203, 19, 90, 44,203, 2, 12, 35,152,194,105,106, 90, 52, 26, 13, 4,192, 88, 21, 78,142,227, 94, 17, 89,133,
+ 66,171,208,174, 97, 10,231,198,121,243,174,121,117,233,146, 30, 18, 18,226,220,174, 93, 59,146,147,147,131,156,156,156, 87,196,
+150,155,155, 27, 9, 8, 12, 84,237, 62,127,190,198, 92, 19,239,167, 41,121,103, 24,230, 47, 23, 90,255,101,148,102,201,122,197,
+162, 85, 22, 10, 45, 90,166, 8, 45, 19, 45, 90, 70,163,209, 8, 39, 39, 39,164,166,166,150,217,240, 51, 12, 3, 51, 51,179,194,
+ 49,226,114,103,222,233,116,186, 21, 83,167, 78,157,208,173, 91, 55, 7,127,127,127,164,164,164,192,217,217, 25, 74,165,178,200,
+119,172,144,239,246,237,219,248,229,151, 95,178,117, 58,221,138, 10, 56,151, 47, 89,178,228,211,190,125,251,218,185,184,184,192,
+214,214, 22,247,239,223,135,173,173, 45,178,179,179,241,248,241, 99, 88, 90, 90, 22,249,237, 28, 61,122, 52, 71,167,211, 45,175,
+ 64,188,209,139, 23, 47, 26, 44, 45, 45,239,167,164,164,176,233,233,233,146,140,140, 12, 73,118,118,182, 52, 43, 43, 75,122,242,
+228, 73, 7,107,107,107,245,239,191,255,158,226,229,229,197, 62,127,254,156, 53, 26,141,140, 9,141, 35, 38, 78,156, 8,153, 76,
+ 6,157, 78,135, 21, 43, 86, 96,234,212,169, 69, 62, 89, 75,150, 44,193,172, 89,179,138,132,243,166, 77,155, 42, 91,121, 96, 48,
+ 24, 96, 52, 26, 97, 52, 26, 77, 18,191,175, 3, 83, 4, 59,165, 52,145, 16,210,163, 89,179,102,167,247,237,219,103, 95, 16,147,
+ 12, 73, 73, 73, 72, 74, 74, 66, 74, 74, 10,114,115,115,193,113, 28,220,221,221,145,148,148,132,195,135, 15,103,229,228,228,116,
+ 41,111,198, 33,203,178,195, 90,183,110, 45, 41,153,134,194, 94, 94,161,120, 87, 40, 20,136,143,143, 71,251,246,237,229, 33, 33,
+ 33,195,254,235, 66,171, 80,192,212,241,133,172,115,151,145,178, 58,117, 91,232,239,133, 29,123, 89,219, 39,233,229,208, 94, 86,
+193, 0,112, 55, 52,201,250,222, 99, 27,212,169,219,131,118,238, 98,219, 36, 41,113, 99,189, 0, 63, 98, 40,111,185, 30, 0,176,
+ 86, 41, 6,116,234,216, 60,222,210,220,156, 89,186,108,211,137,117,235,150, 55,222, 31,252,191,240, 14, 75,151,229,135,119,232,
+212,177,185,240,232,225,163, 1, 0, 54,155, 42, 94,122,244,232,121,231,151, 45,191,224, 81,216,239,110,211, 39,214,151,167, 39,
+ 25, 97,102,225,137, 38, 13,157,177,113,203, 3,220,187,119, 47, 81,175,215,183, 47,183, 46, 17,234, 21, 22, 30,234, 87,175,110,
+128,203,135,195, 70, 91,245,232,209, 11,199,142, 29,193,246,173,155, 47,246, 27,220,247,231,184,140,108,214, 73,170,146,169,168,
+ 32,103,101,214, 18,153,194, 44, 89,175,207,159, 3, 33,149, 42,173,128, 1, 66, 57, 35,135, 24, 59,122,168,245,123, 29,123, 33,
+248,248, 17,108,223,186,241,194,156,186,253, 55,251, 52,170, 67,154, 55,254, 97,156, 79,117, 31,239,188,220,164,108,134,200, 13,
+ 90,173, 96,249,195,214,168, 31,159,205, 26,246,236, 78,232,128,101,226,172,195, 87,112,127,123,247,238,205, 62,143,140,148, 57,
+182,106,101, 22,127,254,188,170, 96, 37,146,114,133,150, 68, 34, 1, 45,123,168,235, 21, 78,178,109, 27, 3,160,220, 73, 88, 50,
+153, 12,106,181, 26, 70,192, 96, 10,167,235,169, 83, 47, 35, 35, 35,125,237,236,236, 94, 17, 89,233,233,233, 69,191,181, 90, 45,
+212,106, 53,204,204,204,194, 76,225, 76,186,120, 81,187,104,226,196,185, 67, 6, 15, 94,117,246,220, 57,165,189,189, 61,178,178,
+178, 94, 17, 90,122,189, 30,239,117,232, 32, 91,114,231,206,135, 0,230,153,114, 63,157,219,183,175,208, 31,152,101, 89, 8,127,
+241,208,225, 91,208, 89, 29, 93,154,240, 98, 42, 26,194, 49,117,214, 97,105, 13, 36, 33,164, 99,137, 93,179,154, 52,105,162,141,
+136,136,128,151,151, 87,145, 88, 41,126, 77, 43, 43, 43,216,216,216,224,246,237,219,248,238,187,239, 52, 0,102,149,199, 73, 41,
+205, 81,171,213,131, 58,117,234,164,145, 72, 36,168, 93,187,118, 81,252, 44, 65, 16, 32,151,203, 97,110,110,142, 59,119,238,160,
+103,207,158,106,181, 90, 61,168,100, 12,173, 82, 56,179,212,106,245, 7,157, 59,119, 86,135,135,135,163,117,235,214,184,119,239,
+ 30,114,115,115,145,155,155,139, 23, 47, 94, 32, 32, 32, 0,106,181, 26,107,215,174,213,168,213,234, 15, 40,165, 89,229,113,230,
+228,228,244,156, 58,117, 42,187,107,215, 46, 31,119,119,247,186, 77,155, 54,245,239,208,161, 67,205, 62,125,250,120,119,239,222,
+221,213,215,215, 87,219,165, 75, 23,199,110,221,186, 57,170,213,106,233, 31,127,252,145, 96, 52, 26,187, 85,112, 63,139,196, 73,
+ 68, 68, 68,209, 80,161, 68, 34, 65,106,106,106, 81,228,254,194,151, 82,105, 66,184, 44,206,226, 98,187, 80, 96, 21, 10,174,138,
+218,128, 50, 56, 43,108, 56,228,114,121,161,197,147, 86,196, 73, 41,189,251,240,225,195, 78,109,219,182,189, 59,114,228,200,156,
+196,196, 68, 88, 90, 90,162, 70,141, 26,240,243,243,131,131,131, 3, 12, 6, 3, 14, 29, 58,148,119,248,240,225, 7, 89, 89, 89,
+237, 75,198,208, 42,201,201, 48,204,139,210, 94,178,133,214,172, 66,161,165, 84, 42,225,238,238, 94,120,111, 95, 84,230,126, 86,
+241,225,253,107, 57, 11, 4, 76,135,247,186, 84,239, 30,212,219,250,208,145, 43,242, 85,107, 14, 63,104,210, 17,155,236,171,101,
+ 31,181,175,150,125,180, 73, 71,108, 90,181,230,240,131, 67, 71,174,200,187, 7,245,182,238,240, 94,151,234,225, 97,143,252, 95,
+ 89,247,176,148,116, 42,149,202, 22,173, 91, 53,201, 8,185,124, 65, 88,184,100, 53,243, 94,251,126,119, 54,255,124,232,208,230,
+159, 15, 29,122,175,125,191, 59, 11,151,172,102, 66, 46, 95, 16, 90,183,106,146,161, 84, 42, 91,152,146,247,177,163,135, 90, 7,
+117,239,133, 99,199, 14,113,251,119,175, 93,178,231,192,147,182,159, 76,184,152, 20, 17,113,143, 38,199,158,130,148,137,198,195,
+135, 15,179,244,122,125,251,210, 28,225, 75,227, 28, 51,106,104,113,145,117,201,222,165,245,166,135, 15,193,159, 57,243,155,241,
+220,185, 59,154, 75,119,147,179,110,133,167,166,199,167,164, 63,207,206, 78,211, 11, 2, 15,158,231,217,175,191,206,119,216, 45,
+171,140, 90,182,108,135,223,207,238,196,214, 45, 27,178, 4, 1,218,254,251,246,241, 3, 6,204,167,222,213,170,121,239,216,189,
+147,244,120,191,183, 53, 5,132,158,125,123,217,236,218,179,139, 84,175, 85,189, 90,141, 26,249, 33,109,254,147,117,233, 47,224,
+156, 71,105, 70,118,116,244,133,219,171, 87,235,156, 7, 13,178,147, 59, 59, 91,129,231, 73,225,251,189,172,143, 68, 34,121,197,
+ 2, 83, 30,167,187,131, 67,220,209,163, 71,225,231,231, 7,119,119,119, 20,247,145, 45, 12,200,109,111,111,143, 3, 7, 14,128,
+ 2,183, 76,225,108,228,227,115,123,241,162, 69,122, 65, 16,144,145,145,241, 39,107, 86, 70, 70, 6, 4, 65,192,241,224, 96,125,
+118,110,238, 86, 83,243,222,158,101,115,135,180,105,179, 48, 40, 40,200, 16, 25, 25, 9, 65, 16, 80,220,178,149,156,156, 12, 11,
+ 11, 11,104,117, 58, 79, 66,136,202, 20,206,228,147, 39,205, 81,193,123,189,164, 69,235,175, 40,247,255,186,200, 42,190,160,116,
+113,209, 85,174, 69,139,227, 56,120,122,122,190,178,164, 11,195, 48,175,124, 42, 51,227,144, 82,186,141, 16,114,170, 75,151, 46,
+115,223,121,231,157,177,115,231,206,101,253,253,253,145,149,149, 5, 91, 91, 91, 56, 57, 57,225,241,227,199, 56,122,244, 40,159,
+154,154,186, 30,192, 2, 83,166,208, 83, 74,207, 19, 66,122,212,175, 95,127,207,140, 25, 51,172, 59,119,238, 44,245,244,244, 4,
+165, 20,119,238,220,193,193,131, 7, 13,155, 55,111,206, 46, 16, 89,231, 77, 76,235,105, 66, 72,191,110,221,186,237, 24, 54,108,
+152, 37,207,243,210, 23, 47, 94, 64,167,211,193,104, 52, 34, 38, 38,198,112,236,216,177, 92,181, 90, 61,148, 82,122,218, 4,190,
+219,132,144,128, 51,103,206, 12,251,227,143, 63,190, 27, 57,114,164,125,135, 14, 29,100, 28,199,225,242,229,203, 41,141, 26, 53,
+114, 74, 78, 78, 54, 28, 56,112, 32, 77,171,213,206,226,121,222,164, 37,120, 8, 33,200,206,206,134,131,131, 3,116, 58, 29, 4,
+ 65,128, 94,175,135,133,133, 69,209,178, 73,148, 82, 84,198,185,190, 68, 29, 96, 13, 6, 3, 6, 15, 30, 12, 65, 16,176, 98,197,
+ 10,112, 28, 87,105, 50,107,107,235, 91,119,239,222,237,209,176, 97,195, 34,241, 82, 88,135, 20, 10, 5, 28, 28, 28, 96,111,111,
+143, 99,199,142, 65, 42,149,222, 50,177,140,238, 1,104, 68, 8,105,241,224,193,131,143, 0, 52, 52, 24, 12,238, 60,207, 19,134,
+ 97, 18, 40,165,247,179,179,179,127, 54,117, 9,158,228,228,228,239,134, 15, 31,222,104,231,206,157, 22, 18,201,255, 30, 13,137,
+ 68, 2,133, 66,129,194,224,152,148, 82,232,245,122,204,158, 61, 59, 59, 47, 47,239,187,183,229, 69,209,164,105,115,108, 92,187,
+210,226,220,239,167, 82, 30, 62,193,193,226, 33, 28,108,228,192,239, 23, 72,108, 82,226,198,122,241, 47, 95, 90, 52,105,218,220,
+ 36, 78,163,222,144,246,193,208, 47,188, 10,150,224,153,253,226, 69,212,134, 29,219,126,124, 6, 0, 63, 44, 95,225,155,148,150,
+ 57,230,209,195, 71, 3, 54,108,216,221,194,168, 55,164,153,194,249, 63,241,178, 35, 11, 20, 90, 74,233,117, 66,136, 79,207, 65,
+ 39,103,213,170,110,245,126,114,154, 38, 46, 55, 87,253, 25,165,244,153,169,121,111,213,178, 45,126, 63,189, 11,219,183,238,200,
+166, 2,171,117,112,112,160, 0,240,240,161, 3,125,248, 48,147,254,207,175,216, 38, 79, 74,239, 45,248,226,179, 14, 95,100,101,
+167, 47, 95,190,166,252,192,181,245, 27,188,131,250, 13,222,193,132,207,190,178, 14,168, 91,219, 11, 0,246,237,163,124,160, 47,
+249,109,238,156,249,239, 47, 88, 48, 31,217, 57, 58, 44, 88,144,191, 92,207,227,208,240,224,200, 72,170, 23,155,173, 87, 49,151,
+227,174,227,139, 47,124,213,233,233,142,173,166, 79,119,144,124,249, 37, 83,158, 51,124,241,231,215, 20,206,155,247,239, 7,143,
+249,228,147,184,121,115,231,118, 89,191, 97,131, 89,189,122,245,144,152,152,136,218,181,107,195,221,221, 29,103,206,156,193,129,
+189,123,243, 50,115,114,102, 1, 88,103, 10,231,182,227,199, 31,251,215,173,155,186, 97,195, 6,183,160,160, 32,146,151,151,135,
+172,172, 44,100,101,101, 65,167,211,161, 32, 32, 52,141,120,242,228,161,209,104, 92,111,106,222,249,148, 20,229,130,230,205, 99,
+101,130,176,184, 95,223,190, 83, 23,124,243,141,162,122,245,234, 68,167,211, 21, 89,181, 12, 6, 3, 44, 44, 44, 12,122,189,222,
+ 30,128,218, 20, 78,197,230,205, 92, 74, 74, 10, 28, 29, 29,139,194, 53, 21,143, 75,152,147,147, 3, 74,169, 24, 76,183, 42, 34,
+172,172,182,220,206,206,238,150, 68, 34,241, 40,110,221, 42,109,237,188,226,251,140, 70, 99,108, 74, 74, 74,147,226,138,151, 82,
+122,182, 12,129, 80, 3,192,247,239,189,247, 94,191, 41, 83,166,144,144,144, 16, 28, 62,124,152, 62,123,246,108, 63,128, 89,101,
+189, 36, 43,224,180, 84, 40, 20,147,204,205,205, 59, 22,134,112, 80,169, 84, 15,242,242,242,206,234,116,186, 21,101, 69,131,175,
+128,211, 74,161, 80, 76, 52, 55, 55,239,148,147,147,211, 16, 0, 44, 45, 45,239,230,229,229,157,209,233,116, 43,203, 90,168,186,
+ 2, 78, 51,107,107,235,239, 28, 28, 28, 62,248,242,203, 47,237, 47, 94,188,152,240,251,239,191,203, 50, 51, 51,119,234,245,250,
+ 50, 23,149, 46,141,211,222,222,254, 22,203,178, 30,127, 69, 25, 1, 64,131, 6, 13,142,245,236,217, 51,104,232,208,161, 48, 26,
+141, 88,183,110, 29,206,156, 57, 19,252,228,201,147, 30,229,245, 70, 75,114, 18, 66, 28, 60, 60, 60, 66,198,142, 29,235, 61,120,
+240, 96,149,173,173, 45, 36, 18, 9,242,242,242,240,244,233, 83,220,185,115,135, 30, 57,114, 36,247,246,237,219,177,106,181,186,
+ 29,165, 52,213,212,251,249, 58,189,230,146,156, 82,169,180,173,167,167,231,238,121,243,230, 89,118,234,212,201,204,222,222, 30,
+ 44,203,194,104, 52, 34, 33, 33, 1,161,161,161, 56,117,234, 84,222,254,253,251,243,210,210,210, 6, 83, 74, 47,252, 19,233,124,
+147,156, 1,126,100, 78,137,133,162,203,140,246, 94,222,177,166,164,179, 67, 59,183, 94, 3,250,117,235, 10, 0,251, 14,156, 56,
+121, 46, 36,254, 72, 85,211, 89, 81, 90, 77,225,172,227,203,206, 11, 11, 15,125, 37,160,101,221,128,192,136, 58,245,250,126,107,
+ 10, 87, 97,100,248,146,121, 47, 22,109,191,184, 77,247,149, 97,214,194,133,167,191,154, 53, 19,223,127,183, 16, 71,246, 29, 10,
+ 14,143,164,199,254,203,117,233,175,228, 44, 92, 4, 89,229,234,218,102,133, 32,204,188, 23, 26,106, 81,188,195, 86,104,121, 46,
+222,169,116,115,115, 75,142,143,143,119, 54,133,179,199, 79, 63, 25,212,230,230,138,153,139, 23,183,205,213,106,219, 46, 88,176,
+ 64,114,243,230, 77,172, 93,189,154,211,198,198,238, 72, 1, 38,150, 54, 26, 82, 30,167,247,196,137,202,105,107,215,142,168, 81,
+171,150,211, 71, 31,125, 36,149, 74,165,200,203,203,195,203,151, 47,113,250,212, 41,125,248,195,135,225,217,217,217,239, 83, 74,
+227, 77,229,236,241,211, 79, 6,155, 26, 53,160,114,116,164,231,206,159,183, 30, 51,105,210,216,106, 62, 62,214, 93,186,118,149,
+ 90, 89, 89, 33, 35, 35, 3, 47, 94,188,192,161, 67,135,146,115,115,115,221, 40,165,188, 41,156, 59,254,248,163,254,241, 11, 23,
+250,127,251,237,183,242,192,192, 64, 88, 91, 91, 35, 39, 39, 7,161,161,161,184,112,225,130,110,253,250,245, 89, 89, 89, 89, 99,
+ 57,142, 59,250, 87,149,251,219, 58,116, 72,254, 74, 87, 0, 83, 10,130, 16,210, 4,192,156,130,205,111, 76, 88, 51,240,173,121,
+249, 16, 66,188,236,236,236, 54,106,181, 90,170,209,104,198, 80, 74, 99,254,109,233, 36,132, 72,154, 52,105,178, 54, 57, 57,185,
+ 5,165, 20,214,214,214, 87,194,194,194,198, 83, 74,185,202,114, 18, 66, 88, 0, 45, 44, 44, 44,154, 91, 90, 90,182,213,233,116,
+117, 10,134,223, 30,230,229,229, 93, 48, 24, 12,215, 1, 92,161,148,242,255,100,222, 11,210,217,201,205,205,237, 19, 65, 16,106,
+ 17, 66,108,120,158,135,209,104,204, 20, 4,225,105, 86, 86,214,102, 0,103,254,233,116,190, 41,206,186,181, 72, 31,202,160, 78,
+ 89,130,224, 21, 97, 83, 66, 64, 16, 1, 15,195,158,210, 67,149,168,243, 76,183,142,158,107,128,252,153,137, 21, 45,101,244,138,
+208, 50, 65,188, 84, 90,100,214,146, 12,167,132,122,189,218,251, 36, 49,181,235,247,217,254, 58, 66,203, 84,212,245, 39,109, 65,
+209, 66,160,184,254,240, 9,253,253,109,125,215,189, 73,206,133,132,216,173,182,181,189,194, 72, 36, 46, 0,152, 2,235,139, 32,
+ 16,194, 83, 66,184,226,195, 91,197, 59,150, 21,113, 26,128,122, 82,133,194,147,231, 56,231, 68,192,226, 56,207, 55,214, 82,154,
+235, 1,204,185, 67,233,227,170,164,211, 0,212, 99, 21, 10,175,227,148,246, 74, 49, 55,175,159,172,209, 56, 2,160, 22,230,230,
+ 15,179,243,242,182,106,181,218, 53,165, 44,222, 94, 33,167, 76,161,240,224, 57,206, 25, 0, 24,137, 36,121,143, 78,231, 25,107,
+101,245,145, 86,167,243,182,176,176, 48,234,245,250,108,173, 86, 59,212,104, 52,158,171, 76,222,159,114, 92,192, 31, 12,211,218,
+ 96,110,110,111, 32,196, 92,207,113, 6,189,193,240, 82,171,213, 62, 0,240, 35,165, 52,242,175, 44,247,183, 22,133,179,211,254,
+138, 15,128,142, 34,167,200, 41,114,138,156, 34,167,200, 41,114,254,245,156, 0, 84, 0,188, 0,176,255,197,188,191, 77, 31, 0,
+163, 11,127, 75, 68,169, 41, 66,132, 8, 17, 34, 68,188, 21,134, 19, 53, 74,241,201, 18,241,207,130, 0,232, 88, 70,129,153,108,
+ 18,172,202,236, 3, 19,134, 24, 68, 78,145, 83,228, 20, 57, 69, 78,145, 83,228,124,203, 56, 43,226,254, 47, 14, 73,150,183,214,
+161, 56,116, 40,114,138,156, 34,167,200, 41,114,138,156, 34,167, 56,116,248, 23,125, 24,136, 40, 75,157, 58, 19, 66,156,223,244,
+177, 34,222,238,186, 80,202,185,238,132, 16,247, 74, 30,239, 42,222,117, 17, 34, 68,136,120, 59,240,183, 11, 45, 83, 27,173,215,
+108,220, 94, 75,248, 16, 66, 22, 18,130,248,252, 15, 89,248,166,142, 53,225,186,110,142,142,142,159,215,173, 91,119,135,139,139,
+203, 4, 66,136, 83, 37,207,247, 53, 55, 55, 95,105, 97, 97, 17, 98, 97, 97, 17, 98,110,110,190,146, 16,226,251,134,202,141, 16,
+ 66,198, 40,149,202,243,110,110,110,113, 10,133,226, 60, 33,100, 44,169,226, 2,151,132, 16,127, 66,200, 2, 66,200, 55,132,144,
+250,149, 57,215, 57,176,247, 94,167,192,222,247,157, 2,123,135, 58,212,123,223,215, 41,176,119,168, 83, 96,239,251,206,129,189,
+247,254, 5,245,181,202,229, 91,112,110, 76,254,167,226,115, 9, 33, 63, 18,224, 37, 33,136,125,221,186, 36, 66,132, 8, 17, 34,
+254, 29,168,148, 51,188,187,187,123, 63, 74,233, 24, 0,148, 16,178, 49, 46, 46,238, 64, 21, 26,158,105, 5,191,151, 80, 74,103,
+190,206,113, 38,156,187,156, 82, 58,181,242, 34, 13,211, 4,129, 50, 0,192, 48,100,186,179,179,179,138,101,217, 63, 57, 24,242,
+ 60,175, 34, 4, 19, 4,129,146,130, 99,167, 17, 66, 86, 82, 74,147,170, 34, 14, 63,252,240,195,229, 43, 87,174, 84,170, 84, 42,
+ 68, 71, 71,119, 30, 59,118,108, 75, 66,200, 23,148,210,132,138,206, 55, 51, 51, 27,210,172,121,139, 47, 22,255,176,204,194,217,
+201,201,156,227, 5,195,139,232, 40,213,236, 25, 83,155,155,153,153,173, 44,111, 49,229,146,130, 10,192,104,137, 68, 50, 80,169,
+ 84,214,212,106,181,145, 28,199,237,103, 89,182,203,119,223,125, 23,216,189,123,119,101,118,118,182,156,227,184, 90,219,183,111,
+255,226,151, 95,126,233, 70, 8,233, 85,222, 52,253, 66,139, 14,165, 52,174,216,238,254,209,209,209, 77,100, 50, 25,169, 81,163,
+ 6, 3,224,126, 5,199, 23,129, 2,190, 97,151,247,213, 3,128,186,173, 6, 68,132, 93,222,135,130,223,127, 65,167,224,213,186,
+160, 84, 42,215,107,181,218,152,194,255, 11,210,153,100,202,185,132,144, 85, 5,203, 7, 53, 1,240, 81,193,161,219, 40,165,183,
+ 8, 33, 46, 74,133, 98,146, 70,171, 37, 0,200,235,212, 37, 17, 34, 68,136, 16,241,183, 27,145, 26, 81, 74,239, 20,140, 72, 4,
+ 1, 8, 46,108,187, 43, 59,235,240,211, 39, 79,158, 88, 0,128,159,159,223,120, 0, 7, 42,145,136, 63, 53, 60, 29, 58,116,104,
+100,102,102,246, 74, 20,100,141, 70, 35, 39, 4, 29,170, 34, 94, 10,175,161,215,235, 24,169, 84, 14,134, 33, 95,212,175, 95,191,
+ 90,106,106,234, 69,134, 97,118,196,198,198,102, 84,225,230, 97,211,166, 77,126,174,174,174,127,138,214,156,144,144, 32,239,213,
+235,253, 74,241,141, 32, 68,161, 83, 40,154,203, 8,113,229, 57,206, 6, 0, 36, 18, 73,134,191,181,117,147,239,191,253, 86, 69,
+ 8, 17,210,210,210,160,209,104, 48,121,242,100,179,240,240,240,222, 0,214, 84,144, 70,191,119,222,109, 57,249,212,169,147,117,
+178,211, 51,180,155,150,111,184,173,145,200,212, 62, 1,181,101,107, 55,110,181, 29, 61, 98,232,103,132,144,187,165, 45, 71, 82,
+130,135, 1,112,104,210,164, 73,117,123,244,232, 33,207,201,201, 81,106, 52,154,106, 59,118,236,152,221,164, 73, 19,139,134, 13,
+ 27,202,119,239,222, 77,178,178,178, 64, 41, 85,213,174, 93,155, 14, 28, 56, 80,187,103,207,158, 9, 0, 86, 85, 36,124, 89,150,
+ 93,225,239,239, 63,175, 32,207,178, 98,199, 72, 3, 2, 2,204, 1,224,241,227,199, 95, 19,130, 73,229,137,108, 2, 60,169,219,
+106, 0, 64, 80, 43,236,242, 62,101,221,214, 3,180,160,120, 74,128, 39, 5, 29,130, 5, 64,177,184, 80,175,226, 97, 92, 92, 92,
+149,214, 38, 12, 10,234, 65, 8, 33,251,221,220,220, 14, 36, 39, 39,251, 16,130, 81,166,118, 6, 8, 33,196,222,222,126, 56,128,
+133, 0, 62,121,248,240, 97, 35, 0,168, 83,167,142, 12,192, 45, 43, 43,171,150, 6,189,158,136,175, 43, 17, 34, 68,136,248, 79,
+162, 17,128, 59, 0,130,138, 45,193,179,177, 42, 66, 75, 14, 0, 23, 47, 94, 4, 0, 69, 85, 68, 95,113, 1, 51,113,226, 68,184,
+186,186,150, 20, 47, 8, 9, 57,255, 58,153,125,229, 26,223,124,243,141, 69,102,102,102,199,159,127,254,185,141,187,187,251,210,
+184,184,184,107,229,157, 76, 41, 77, 34,132, 44, 41,176, 64, 64,161, 80, 70,140, 29, 59,246, 78,193,223,213,126,251,237, 55, 85,
+207,158, 61,213, 0,162, 0, 64,161, 80,186,179, 44,227,151,239,244,134, 37,229, 9,194, 1,132,212,144,203,229,239,141,249,233,
+ 39,174,113,207,158, 18,115, 71, 71, 2, 0, 81,143, 30,217, 47,249,225,135,150, 25,207,158,201, 53,246,246,105,105,121,121,154,
+136,136, 8, 40, 20, 10,194,178,108,227,138, 50,108,110,110,254,249,183,223, 47, 54,207, 78,207,212,104,179,115,244, 44,103,212,
+ 89,154,169,248,164,196,228, 52, 11, 51,115,245,244, 57,243,229,159,142, 26,246, 57,128,241, 21, 80, 77,248,226,139, 47,234, 52,
+107,214,204,125,239,222,189, 36, 43, 43, 11, 18,137,196,162, 97,195,134,104,210,164, 9,255,251,239,191, 19, 31, 31, 31, 4, 6,
+ 6,226,242,229,203,184,114,229, 10,105,212,168,145,234,224,193,131, 31,150, 38,180, 74,138,107,150,101, 38,215,174, 93,187,161,
+185,185,185,222,207,207, 15,163, 70,141, 2,165, 20, 29, 59,118, 12,180,176,176, 56,144,151,151, 39,127,252,248, 81,155,138, 68,
+118, 82,232,225,129, 0,224, 20,216,251, 62,128,122,160,120,154, 28,122,184,126,177, 67,234, 60,126,252,248,157,140,140,140, 34,
+103,196,194, 5,204,219,180,105, 99,114, 69, 42,172, 11, 61,123,246,152, 14, 16,210,177, 99,199,204, 9, 19, 38, 48,143, 30, 61,
+250,160, 79,159,222,129, 79,158, 60, 69, 89,233, 44, 81,143,200,240,225, 35,146, 44, 44, 44,250,186,185,185, 61, 6, 32,145,201,
+138,116, 38,235,236,236,236, 88,191,126,253,113,118,118,118,201, 44,195, 56, 81, 80, 90, 81, 93, 18, 33, 66,132, 8, 17,255, 42,
+ 4, 23,136,171,224,146,127, 72, 0, 32, 56, 56,152,254,175,215, 30, 68,202,107,120,238,221,187,231,169, 86,171, 97, 74, 35, 80,
+124,138, 38,165, 52,137,101,217,181, 12, 67,198, 19, 66, 16, 24, 88,239,249,138, 21, 43, 74, 91,211, 75, 31, 24, 88,239, 57,203,
+ 50,213, 41,165, 32,132, 89, 39, 8,124, 82,105,156,101, 53,140,114,185, 98, 26, 0,184,184,184, 62, 59,113,226,132,190,127,255,
+254,248,225,135, 31,100, 51,102,204,152,234,237,237, 61, 33, 58, 58, 58,177,172,116, 22,108,207,116,118,118, 86,109,218,180,201,
+111,236,216,177,119,226,227,227,103, 2,128,155,155,219, 66, 0, 1, 0,162,138,237,195,250,245,123,226, 70,141, 26, 21,145,148,
+148, 52,179, 44,206,126,132,212,244,174, 93,251,189, 5, 23, 47, 82, 70,167, 35,169,151, 46,101,167, 36, 37, 25, 35, 83, 82, 84,
+ 91,110,221,234, 49,123,225, 66,169,167,151, 23, 66,142, 30,117, 72, 85,171, 83,178,116, 58,109, 82, 82, 18,229, 56,238,138, 9,
+121,175,235,228,232,164,218,240,227,186,155,150, 82, 86,112,242,112, 39, 82, 59, 59, 9,163,178,146,179, 18, 70, 87,189,154,175,
+ 28, 64,221,138,202, 72, 38,147,125,216,185,115,103,213,158, 61,123, 72, 96, 96, 32,108,108,108,112,233,210, 37,220,189,123, 23,
+ 25, 25, 25,140,209,104, 68,211,166, 77,177,120,241, 98,120,121,121, 33, 51, 51, 19, 49, 49, 49, 14,114,185,220,177,156,251,249,
+ 74,125,154, 54,109, 26, 92, 93, 93,193,113, 28,210,211,211,193,113, 28, 44, 44, 44, 0, 0,177,177,177, 56,122,244, 72,133,117,
+201, 68,145,132,119,223,125, 55,135, 16,242,176,164, 69,171, 50,156,238,238,238,187, 83, 82, 82,187,189,247,222,123,200,200,200,
+ 48,206,159, 63, 31,245,235,215,135,159,159,159, 41,117,126,166, 66,161,248,217,219,219,251,199,137, 19, 39,186,218,217,217, 65,
+167,211,205, 78, 76, 76,196,184,113,227, 0, 0,221,187,119,175, 47,149, 74, 79,140, 28, 57, 18, 62, 62, 62,113,233,233,233, 49,
+183,111,223, 30,149,151,151, 23, 90,213,188,155,120,127, 68, 78,145, 83,228, 20, 57,255, 85,156,166,106,145,127, 35, 10,134, 9,
+ 55, 22,219,222,248,138,208, 10, 10, 10, 34,193,193,193,212,132,140,165,121,120,120,120,154,153,153, 1, 64, 90,101, 19,194,243,
+252, 4, 7, 7,135,228,153, 51,103,182,242,243,243,211, 79,152, 48, 33,244,197,139, 23,179,138, 31,227,227,227,243,221,234,213,
+171, 17, 17, 17, 17,181,112,225,194,203,169,169,169,223, 84, 50,179, 51, 8, 33, 43, 10,172, 99,169, 71,143, 30,173,127,241,226,
+197,241,203,151, 47,119,252,244,211, 79,101,159,127,254,249, 80, 0, 63, 84,196,195,178,172,186,180,225,194,210,224,234,234,170,
+ 47,205,135,171, 16, 61, 9, 49,179,146,203,219, 47,184,120,145,234,163,162,212,191, 44, 91,102,185,225,198,141,121, 70, 74,157,
+157,156,156,208,186,101,203, 92, 37,203,166, 38, 39, 38, 10, 78, 53,107,178, 47, 78,156,112,208,200,229,241,123,246,236,201, 74,
+ 75, 75, 59, 92,161, 9,143,144,108,129, 82,189,133,135,151,177,127,239, 78,129, 55,175,223,125,100,233,228,192, 52,106, 24, 88,
+255, 81, 68,212,109, 8,130,129, 16,146, 93, 17,143,181,181,181, 95, 90, 90, 26,178,179,179,225,232,232,136, 21, 43, 86,192,197,
+197, 5,106,181, 26, 97, 97, 97,212,195,195,131, 92,188,120, 17, 30, 30, 30, 72, 73, 73,129, 94,175, 71, 78, 78, 78,178, 78,167,
+211,148, 37,124, 37, 18,201,175, 12, 67, 70, 16, 66, 80,189,122,141,232, 53,107,214,232, 5, 65, 64,157, 58,117,208,167, 79, 31,
+ 28, 60,120, 16, 97, 97, 97,133,150, 39,189,183,119,181,104,134, 33,222, 5, 90,169,202, 86,157,194,165,125,226,226,226,250, 86,
+201, 44, 74, 8,227,230,230, 54,212,215,215,119,252,144, 33, 67,140,114,185, 28,121,121,121,133,247,194,216,173, 91,247,204,158,
+ 61,123, 88, 7, 7, 7,151,155, 78,157, 78,247,204,217,217,249,147, 47,190,248, 98,199,250,245,235,109,103,205,154, 5, 65, 16,
+ 64, 41, 5,199,113, 69,139,126, 11,130,128, 67,135, 14, 33, 50, 50,242,187,226, 34, 75,132, 8, 17, 34,254,191,160, 18, 90,228,
+ 95,135, 98,190, 89, 40, 41,182,254,246,200,240, 44,203,110, 56,125,250,116,195, 54,109,218, 72, 58,116,232, 16,232,225,225, 17,
+ 24, 27, 27, 27, 10, 0, 30, 30, 30,129, 93,187,118, 13,116,114,114,194,202,149, 43,213, 44,203,110,168,162,178, 44,222,232,221,
+113,117,117, 93,122,240,224,193, 37, 99,198,140,129,139,139, 75,192,223,157,103, 43,133,162,209,200, 21, 43, 56,169,209,200,252,
+180,116,169,213,178,243,231,151,236,221,183, 79,242,238,187,239, 18, 74, 41, 30,220,191,111,182,120,213, 42,213,224,222,189,163,
+ 30, 63,123,198, 29, 57,117,202,152, 20, 23,151, 30,151,146, 50,151, 82,154, 94, 17,191,209,104,188,250,228,201, 19,183,214,109,
+223,117,191,112, 35,244,110,255,222,221,223,147, 74, 24,242, 52, 42,246,150,171,139,131,117,200,249,179, 26,163,209,120,181, 34,
+158,188,188,188, 23, 28,199,217, 81, 74, 29, 67, 66, 66,224,232,232,136,140,140, 12, 24,141, 70,232,245,122,189, 90,173, 86,166,
+165,165, 65,171,213, 66,167,211,193,202,202, 10, 15, 30, 60, 72,226, 56,238,247,178, 56, 57,142, 27,169, 84, 42,191,145, 74,165,
+114,153, 76, 22,127,235,214, 45,100,103,103, 87,179,177,177,249,129,227, 56,196,199,199,227,226,197,139, 95, 90, 89, 89, 69, 1,
+128, 82,169,132, 92,174,176,215,233,116, 92, 89,206,240,166, 90,180,170, 10, 87, 87, 87,175,234,213,171, 47,152, 62,125, 90,157,
+ 6, 13, 26, 34, 37, 37, 5,130, 32,192,220,220, 28,106,181, 26, 86, 86, 86,104,209,162,197,139, 5, 11, 22, 36, 80,138,209, 21,
+137,193,164,164,164, 20,119,119,247, 9, 99,198,140,249,198,207,207,175, 58,165, 20,190,190,190,232,220,185, 51, 78,156, 56,129,
+136,136, 8,228,229,229,241,215,174, 93,219, 21, 31, 31,255,155,248,186, 21, 33, 66,132,136,255,158, 78, 44,244,205, 42,110,205,
+250, 71,132, 86, 82, 82, 82,138,135,135,199,201,219,183,111,247, 24, 56,112, 32, 66, 66, 66,134, 3,248, 2, 0, 20, 10,197,240,
+129, 3, 7,226,246,237,219,120,244,232,209,201,164,164,164,148, 55,113, 77,185, 92,174,213,235,243,141, 83, 74,165, 82, 89,201,
+211,171, 21, 12, 25, 2, 64,181,114,246,149, 9, 70, 34,113,173,215,181,171, 36,227,238,221,236, 77,215,175,127,179, 99,199, 14,
+ 73,171, 86,173,136,209, 96, 0, 47, 8,168, 81,163, 6,233,208,177,163,249,175, 59,118,216,241,121,121, 23,191,157, 62,253,210,
+198,145, 35,115, 35, 40,141, 50, 37,129, 58,157,110,213,248,113,159,116, 60, 31,114,201, 61,160,118, 77,187,147,167,207,223,177,
+183,183, 86,249,213,170,101,158,150,145,206,207,154,241,165, 68,167,211,253, 84, 17,143, 70,163, 57,116,246,236,217,222,158,158,
+158,142,161,161,161,208,235,245,224,121, 30, 29, 58,116, 0,165, 84, 1, 64,144, 72, 36,120,244,232, 17, 12, 6, 67,242,147, 39,
+ 79,226,159, 62,125,170, 0,176,168, 60, 94,173, 86, 27, 93,124,219,211,211,179, 83, 80, 80, 16, 56,142, 67,215,174, 93,113,228,
+200,145, 78,225,225,225,203,138,107,190,215, 45,243, 2, 11, 89, 29,119,119,247,131, 5,187, 76,114,130,247,240,240, 8,244,245,
+245, 93,191,104,209, 34,153,135,135, 7, 40,165,176,181,181,129, 90,173, 70,106,106, 26, 2, 2, 2,224,233,233,137, 69,139, 22,
+ 1,192, 46, 83, 45,110,113,113,113, 79, 1, 12, 12, 8, 8,144,101,102,102, 54,233,212,169,211,202,142, 29, 59,226,206,157, 59,
+184,116,233,210, 96,133, 66,145,108, 48, 24, 56, 87, 87,215,209,132, 16, 43,131,193,176, 51, 53, 53, 53, 65,124,119,137, 16, 33,
+ 66,196,127, 2,133, 62, 90, 69, 81,226, 43,109,209, 10, 8, 8, 48,207,202,202,250,168, 90,181,106,114, 0, 48, 51, 51, 11,168,
+ 89,179,230,212,200,200,200,156,202,166, 70,173, 86,239,221,177, 99, 71,231, 31,127,252, 81,214,189,123,247,154, 30, 30, 30,205,
+ 0,160,111,223,190, 53, 45, 45, 45,177, 99,199, 14,131, 90,173,126, 99, 49,145,140, 70, 99,155,166, 77,155, 34, 61, 61, 29, 81,
+ 81, 81,149, 26,150,249,237,183,223, 84,200,247,203, 42,119, 95,121,224,244,122, 91, 27,119,119, 38,238,252,121, 67,122,118,182,
+107,155,182,109,137,209, 96, 0,195, 48, 72, 75, 75, 67, 76, 76, 12,172,109,108,200,163, 39, 79, 44, 54, 79,155,246, 91,181, 6,
+ 13,228,188, 94,111, 95, 9, 81,145, 71, 8, 25,241,217,132, 79, 15,237,220,185,203, 49, 51, 59, 59,210,204, 76,165, 83, 40,100,
+ 46, 19, 63,251,140, 79, 79, 79, 31, 70, 41,205, 53,129,106,209,206,157, 59,187,118,237,218,245,190,151,151,151, 83, 74, 74,138,
+ 75,102,102, 38,159,158,158,206, 34,223,215,138, 0,192,249,243,231,145,157,157,205,241, 60,127, 17,192, 2, 74,169,222,212,180,
+ 86,171, 86,205,186,121,243,230,237, 28, 29, 29,145,149,149, 5,123,123,123, 52,108,216,176, 93,181,106,213,126,142,138,138,202,
+122,147,181,254,204,153, 51,150,148,210,119, 40,165,232,218,181,171, 73,231,240, 60,255,113, 80, 80,144,140, 16, 2,141, 70, 13,
+165,210, 12,230,230, 22,176,180,180,130,159,159, 63,226,227,227,209,165, 75, 23,125,100,100,228,218,132,132,132, 74,215,209,172,
+172,172, 94, 45, 90,180,152, 50,110,220, 56,112, 28,135, 94,189,122,225,229,203,151,203, 94,188,120,177,199,205,205,109,232,199,
+ 31,127,236,104,111,111,143, 41, 83,166,152, 1,248, 90,124,119,137, 16, 33, 66,196,191, 31, 37,125,180, 74,181,104,149, 55, 38,
+234,234,234,218,218,206,206,110,182, 70,163,145, 23, 14,201, 16, 66,228,142,142,142, 71,220,220,220, 22,198,199,199, 87,202, 41,
+ 46, 35, 35, 35,219,213,213,245,200,213,171, 87, 7,244,237,219, 23,103,206,156, 25, 86, 32,180,112,245,234, 85, 60,127,254,252,
+ 72, 70, 70, 70,246,155,200,188,135,135, 71,183,118,237,218,245,109,218,180, 41,142, 29, 59, 6,158,231,175, 84,230,252,226, 51,
+ 12, 81,202,172,195,194,125, 38,145,177, 44, 8, 33,224, 56, 14, 0,144,154,146,130,136,199,143,145,158,145, 1,157, 86,139, 60,
+181,154,247,243,241,209,100,233,245, 82, 2,208, 74, 22,114,180,133,133, 69,140, 58, 47,207,201,222,214, 78,163, 82, 41,144,153,
+157, 37,187,117,243, 90, 46,165, 52,210, 68, 14, 61, 33,164,237,137, 19, 39,230,178, 44, 59,208,194,194, 2,227,199,143,103,219,
+181,107, 7,153, 76, 6,157, 78,135,204,204, 76,236,216,177, 35,133,227,184,234, 5,245,192,194,220,220,124, 43,203,178,177,217,
+217,217,179, 43,186,134, 94,175,239,222,163, 71, 15,137, 94,175,199,183,223,126,139,121,243,230,161,107,215,174,146,155, 55,111,
+118, 7,176,243, 77, 85,122, 65, 16,208,169, 83,167,226,206,240, 15, 77, 57, 79, 42,149, 6,214,170, 85, 11, 41, 41, 41, 72, 73,
+ 73,129,163,163, 35,220,220,220,224,226,226,130,101,203,150,209,149, 43, 87,158, 52, 24, 12,107, 83, 82, 82,146,170, 80, 23, 71,
+ 15, 31, 62,124,244,128, 1, 3,144,155,155,139,171, 87,175,162,101,203,150, 88,178,100,137,235,197,139, 23,191,104,218,180, 41,
+164, 82, 41, 66, 66, 66,192,113,220, 75,241,213, 37, 66,132,136,255,111,248, 47,250,103, 85,132,114, 45, 90, 94, 94, 94, 54, 60,
+207,127,217,179,103,207, 78,189,123,247, 70,151, 46, 93, 94,249,127,231,206,157,150, 7, 14, 28, 88,232,233,233,217,213, 96, 48,
+ 44,170,204, 80,159, 32, 8,135,118,238,220,217,253,221,119,223, 85,181,111,223,190, 6, 0, 40, 20, 10,253,206,157, 59,213,130,
+ 32, 28,170,108, 70, 74, 6,143,116,119,119,175, 47,145, 72,250,246,232,209,163,254,136, 17, 35, 16, 22, 22,134, 29, 59,118, 60,
+245,243,243,187, 92, 73,234,168, 10,102, 29, 46,172,200,186,197,202,229,105,153,137,137, 54, 22, 94, 94, 82, 91, 75,203,132, 99,
+199,142,121,118,236,216,145,188,124,249, 18, 25, 25, 25,208,106,181,184,121,243,166, 32, 1,162, 37,182,182, 36,250,234, 85,194,
+202,229,149,158,108,224,233,106,235, 59,103,198,216,106, 90,157,182,110, 86, 86, 22, 39,145, 74,165, 30, 46, 54,149,106,176, 41,
+165, 58,115,115,243, 38, 0, 36,130, 32,168,237,236,236, 84,167, 79,159,134, 92, 46, 7, 33, 4,245,234,213,131, 82,169,148,153,
+155,155,199, 0,128,139,139,139,124,195,134, 13,214, 67,135, 14,189, 84, 17,119,227,198,141,165, 62, 62, 62,239,251,249,249,225,
+234,213,171, 8, 13, 13,141,190,122,245,170,119,163, 70,141,224,229,229,245,126,227,198,141,247,221,190,125,219,248,134,122, 23,
+ 85,114,134,231,121, 94, 32,132,128, 97, 24, 8,130,128,148,148, 20, 84,175, 94, 29,107,214,172,193,138, 21, 43,190,141,143,143,
+ 63, 90,149,244, 4, 4, 4,200, 26, 54,108, 56,108,192,128, 1,120,246,236, 25, 22, 46, 92,152,154,144,144,112,254,212,169, 83,
+253,198,141, 27,199,182,108,217, 18,105,105,105,248,245,215, 95,185, 91,183,110,253,146,152,152,184, 77,124,229,138, 16, 33, 66,
+196, 91, 44,180,188,188,188, 6,200,100,178, 41,131, 6, 13, 98,253,253,253,145,148,148, 4, 43, 43, 43, 35, 33, 68, 10, 0, 54,
+ 54, 54, 70, 51, 51, 51,140, 29, 59, 22, 13, 26, 52,104, 61,109,218,180,150,238,238,238,107,226,226,226,182,154,114,225,164,164,
+ 36,181,171,171,235,254,241,227,199, 47,186,123,247, 78,117, 0,184,113,227,198,243,248,248,248, 25, 73, 73, 73,234, 74,138,172,
+194,160,152,196,204,204,236,186,175,175,239,139,110,221,186, 89,245,238,221, 27,142,142,142,184,125,251, 54, 22, 47, 94,252, 68,
+175,215,207, 13, 9, 9,225,254,238,155,204,233,116,137,183, 14, 31,182,108,247,193, 7, 86, 19,131,130,150,126, 58,126,252,143,
+115,230,204,145,248,251,251, 19,181, 90,141,235,215,175,211, 3, 7, 14, 24,127,253,230,155, 21, 48, 55,151, 94, 61,112, 64,174,
+215,235,163, 43,105, 45,105,219,189,107, 91,255,165, 63,174,130, 86,147,139,235, 87,130,145,145,145,130, 13, 27, 15,250,123,120,
+120,180,141,141,141,189, 80,137,251,233,119,230,204, 25, 39, 74, 41,228,114, 57, 22, 44, 88, 0, 55, 55, 55, 88, 89, 89, 33, 39,
+ 39, 7, 95,124,241,133,245,164, 73,147,172, 1, 32, 44, 44,172, 40, 60, 67, 69,136,143,143,111, 49,118,236, 88, 75,142,227,112,
+242,228, 73, 61, 33,100,246,217,179,103,127,174, 87,175,158,188,117,235,214,150,219,182,109,107, 9, 32,228, 77, 9,173, 42,158,
+247,244,244,233,211, 77, 7, 14, 28, 72,165, 82, 41,201,204,204,132,141,141, 13,214,172, 89,147,151,144,144, 16, 92,229, 58,192,
+113,114,149, 74, 37,167,148, 98,255,254,253,136,142,142,254, 56, 53, 53, 53,209,217,217,249,224,151, 95,126, 57,213,223,223,223,
+231,241,227,199,209, 57, 57, 57, 75,146,146,146, 94,136,175, 38, 17, 34, 68,136,248,239,160,208, 9,190, 82,145,225,121,158, 31,
+123,234,212, 41, 86, 16, 4,108,220,184, 17,183,110,221,162, 42,149,106,182, 74,165, 90,109,102,102,198,107, 52,154, 49,163, 70,
+141, 26, 58,111,222, 60,166,117,235,214,184,122,245, 42, 83,189,122,245, 97, 0,182, 22,187,112,199,242, 98,109,100,101,101,221,
+ 76, 74, 74,172, 94, 44, 64,101,117,133, 66,121,179,130,204,188,194, 89, 74, 80,204,230, 11, 22, 44,200,115,117,117,213,135,134,
+134, 98,253,250,245,194,173, 91,183,206,203,229,242, 13,241,241,241, 58, 83, 56,223,208, 77, 47,226,148,115,220,237,237, 83,167,
+214,105,220,171,151,240,201,148, 41,185, 50, 51,179,207,151,174, 90, 53, 45, 51, 39,199, 13,132, 80,123,107,235,232,141, 11, 22,
+ 44,236,250,254,251,185, 97, 23, 46, 40,239,158, 57, 35,117, 52, 26,239, 85, 38,157,177,177,177, 23,124,107,122, 97,203,166, 31,
+ 97, 48,232,144, 16,151,175,211, 82,211,178, 80,158,200, 42,141,147,227,184,172,126,253,250,201, 0,152,125,248,225,135,242,228,
+228,100,212,172, 89, 19, 0,144,157,157,141,224,224, 96,212,174, 93, 27, 0,240,224,193,131,162,223, 21,165,211,220,220,252,253,
+150, 45, 91, 34, 58, 58, 26, 97, 97, 97,231,226,227,227,211,220,220,220,206,189,124,249,178,123,211,166, 77,113,232,208,161,158,
+101, 9,173,202,150,145, 41, 66,171, 52, 78, 51, 51,179, 25, 7, 15, 30,252,248,202,149, 43, 3,167, 78,157, 42,237,208,161, 3,
+ 0, 32, 39, 39, 71, 77, 41,229,171,194, 89, 60, 77, 70,163, 17,130, 32,192,206,206, 46,175,160,195,241, 2, 21, 4,146,253,171,
+235,167,200, 41,114,138,156, 34,231,191,129,243, 45,129,233,145,225, 41,165,156, 32, 8, 8, 9, 9,193,193,131, 7,121,131,193,
+ 48, 58, 62, 62,254, 65,177, 67, 86,185,185,185,157,233,215,175,223,214,199,143, 31,179,225,225,225, 48,165, 33, 42, 14,173, 86,
+107, 44,185, 36,177, 86,171,125,237,161,163, 45, 91,182, 32, 49, 49,209,240,242,229,203,179, 28,199, 29,122,205,217,139,175, 61,
+235,240, 87, 74,117, 31, 16,114,118, 94,171, 86,157,230,158, 57,163,248,228,171,175,116,195, 71,140,248,146,215,235,141,172, 76,
+ 38,200,205,205, 25, 94,161,144,134, 93,184,160, 92, 57,110,156,157, 70,167, 59,185,189, 18, 14,230,197, 44, 90, 24,254,201,100,
+104,138, 89,180,174,222,140, 64,101, 45, 90, 90,173,182,110,129,232,136, 1,224,242,209, 71, 31, 65, 16, 4,104, 52, 26,228,228,
+228, 32, 62, 62, 62,107,196,136, 17,124,129,120,146,244,237,219,215,202, 20,222, 26, 53,106,184, 73,165, 82,156, 60,121, 18, 82,
+169, 52, 24, 0,164, 82,105,240,153, 51,103,186, 15, 30, 60, 24,238,238,238, 53, 8, 33,132, 86,160,146,156, 3,123,239,165,128,
+ 47, 8,106,229, 63,241,168,229, 20,216,251, 62, 1,158, 20, 68,141,127,216,168, 81, 35,192, 68,191,172,226, 40,152,220,177,194,
+193,193, 97,223,180,105,211,198, 55,111,222,188,243,188,121,243, 8, 0,246,141, 88, 55, 57,238,181, 66, 79,136, 16, 33, 66,132,
+136,127,175, 85,171,180,253,146,114, 78,216,216,182,109,219,209, 0, 88, 66,200,250,184,184,184, 7, 37,143,137,143,143,143,112,
+119,119,255,193,199,199,167,104,161,233,202, 36,170, 32,146,251, 98,134, 33,211,242,183, 43, 31,160,178,216, 82, 39,211, 0, 16,
+134, 97,183,222,185,115,231,171,152,152,152,148,202, 10,191,210,240, 38,102, 29, 2,192, 78, 74, 95, 12, 38,228,212,148,192,192,
+142, 93,199,141, 67,253,174, 93,173,220,188,189,121,141,193, 32, 60,184,124,153, 92,217,191, 95,118,247,204, 25,169, 70,167, 59,
+121,144,210,152,202,166, 51, 54, 54,246, 66,205, 26, 30,167,251,247,237,222,185,134,143, 27, 0,224,217,139,120,164,166,103,157,
+174,140,200, 42, 33,184,122,173, 89,179,230,168, 76, 38,147, 20, 95,202,198, 96, 48,164, 23,138, 49, 66,136,219,198,141, 27,119,
+ 51, 12, 19, 93, 17, 95,120,120,248,145,185,115,231,246,141,138,138, 58, 29, 19, 19, 19, 5, 0,209,209,209, 81,110,110,110, 91,
+ 19, 18, 18,250, 70, 71, 71, 31,160, 38,168,144, 18,139, 74, 35,236,242, 62, 37,128,122,133,139, 74, 87,117, 45,195,226, 40, 8,
+173, 48,219,213,213,117,103,231,206,157, 71, 1,136,123, 29, 62,189, 94,111,212,104, 52, 28,207,243, 18,131,193, 64,245,122,189,
+ 81,124, 45,137, 16, 33, 66, 68,165,208, 20, 64,225, 74, 36,133, 6, 20,199, 18,191,245, 40, 88, 46,176,240,245, 91,176,157, 2,
+224,102, 49,142,226,251, 43, 58, 23, 0, 82, 1,220, 47,216, 87,154, 22,217, 88,214,118,153, 66, 43, 46, 46,238, 0, 76, 88, 52,
+218,212,227,202, 17, 74, 51, 9, 33, 43, 11, 69,211,235,114,112, 28,247, 70,214,135, 99, 24,230, 69,207,158, 61, 43,117,124, 69,
+199,236,166, 52,250,115, 66,182, 29,251,233,167,134, 39,215,175,119,231, 57,206,158, 0,148,149,203,211,244,122,125,148,163,209,
+120,175,178,150,172, 87,172, 49,207, 98,187, 0,128,175,175, 47,125,250,244, 41, 40,165,175, 53,123,131, 82,122, 15,128,103, 5,
+199,196, 3,104,109,162, 24,220, 5, 96, 87, 41,130,125, 55,128,221, 38,247, 26, 10, 23,149, 6, 24,129, 8,253,235,182, 26,176,
+ 31,128, 80,184,168,244,155, 68, 66, 66,194, 99, 20,196,121,123, 29, 68, 69, 69,233,124,124,124,182, 47, 94,188,248,195,187,119,
+239,238,137,139,139,211,137,239, 76, 17, 34, 68,136,168,156,200, 34,132, 28, 43,104,123,122, 20,116,246,143,149,252, 93,120, 76,
+225,113,197,143, 41,228, 40,185,191,188,115, 1, 96,198,140, 25, 95, 45, 92,184, 80, 5,192,164,197,152,139, 7, 46,149,252, 27,
+238,222,155, 88, 60,247, 77, 47,192, 27, 27, 27,187,233,175,200,235,170,124, 33,117,237,175,188,159, 79,158, 60, 33,111,243,211,
+ 86,184,168,116, 49, 4,254, 23,210,253,226,197,139, 53,237,218,181,219, 16, 23, 23,199, 65,132, 8, 17, 34, 68, 84, 6,142,165,
+ 9,163, 50,244, 64,143,242,254, 47, 33,136,254,116, 92,105,219,132,144, 99, 11, 23, 46,236, 97,106, 98,139, 91,180, 24,177,236,
+ 68,136,248,251,240, 79,204,122, 21, 33, 66,132, 8, 17,101, 10,162, 87,172, 88,133,226,171,228,246,140, 25, 51,190, 66, 25,195,
+134, 5,199,184, 18, 66, 70, 23,204, 58,124,197, 95,139, 0,232, 88,198,197, 77,158, 77, 64, 8,233, 88,133,204,157, 21, 57, 69,
+ 78,145, 83,228, 20, 57, 69, 78,145,243,255, 23,103, 69,220,101,156, 31, 84,214, 80, 95,121,195,136, 37,127, 87,116,174, 9,199,
+ 6,151,145,151,209,197,215, 58,124,101,205,195, 66, 39,231,191,226, 3,160,163,200, 41,114,138,156, 34,167,200, 41,114,138,156,
+ 34,231,107,126,154, 82, 74,131,144,191,106, 10,165,148, 6, 81, 74,187,206,152, 49, 99,102,225,190, 25, 51,102,204,164,148,118,
+ 40, 60,174,224,152,162,115, 10,247,149,252, 46,185,175,130, 99,203,186, 31,163,139,255, 46,190,253,175,240,209, 18, 33, 66,132,
+ 8, 17, 34, 68,136, 40, 7, 55, 1, 52, 45,102,109, 74, 1,240, 96,225,194,133, 25,197,124,167, 82, 0,220, 3,208,160,224,184,
+148, 2,131, 82,113,223, 42,125,193,182,190,148, 99,244,166, 28, 91,134, 21,110, 99,105,191, 1,136, 66,171, 44, 52,116,101,191,
+241,242,112,106, 82,100,245, 19, 4, 0,128, 80, 16,125,160, 40, 12,129, 32,128, 82,138,248,228,204,219,247,147,232,156,170, 94,
+207,223,157,216, 57, 41,149, 43, 4, 74, 91, 21,236,186,144,149,166,155, 28,154, 69, 51, 77,229,168,227, 66,234, 40, 25,124, 41,
+ 80,212, 7, 0,134,224,190, 86,192, 15, 15, 19,233,195,215,189, 31,132, 16, 82,215, 17,163,229,102,170, 65,214, 54,182,181, 50,
+ 50, 82,159, 24,180,186,125,225, 41,216, 64,171, 16, 24,170,166, 29,121, 71,160,248, 10, 0, 35,101,176, 44, 34,141,158, 23,107,
+157, 8, 17, 34,254, 38,188,110, 92,188,210, 66, 7,189,238, 36, 36, 49,192,158,105, 98,171, 36,110,152,120,220, 63,134, 74, 9,
+173,186, 78,100, 28, 8,230, 3,160,160,248, 58, 44,153,174,171,212,249,110,164,163,146,101, 55, 3, 96,181, 6,126, 10, 21,112,
+177,212, 70,157, 65, 27,165,140, 93, 6, 64,208,242,252,200,176,120,211,253,197, 2, 61, 72, 87,137,192,108, 23, 40,149,242, 2,
+221, 10,138, 99, 22, 50,252,113, 53,150,106, 43,147, 86, 47, 15,167, 38,135,111, 36,116, 62,191,110, 34,154,215,175, 9,202,115,
+128, 96,132,170,245,151, 56,183,252, 35, 52,175,227, 5, 42, 24, 1,129,131, 69,183,165,232, 22,104, 93,229,135,196,223,157,216,
+121, 59, 56,133,110,218,180,217,197,173, 70, 0, 17, 56, 3, 30,223, 56, 61,116,210,180,185,239, 5, 90,147, 64, 83,196, 86, 3,
+ 55,242, 73,205,234,254, 95, 78,158,255, 35,235,234,230,105, 46, 24,117, 92,226,139,135,141, 86, 45,153,123,160,129, 27, 89,118,
+ 47,158,110, 54, 85, 80, 5, 56, 98,140, 68, 33, 31, 96,166, 52,175,165, 86,231, 60,229, 13,198,125,129,110,146,174, 63, 44, 93,
+209,176, 93,167,238, 22,124, 78, 34, 99, 20, 16,176,119,207,110,239,159,214,172,237, 78, 8,121,159, 82, 42, 84, 38,207, 2,197,
+180,136,109,163,187, 75, 37, 44,169,243,241, 38, 22, 38, 78,153, 45,137, 0,103, 50,132,208,138,195, 75, 80,130, 75,225, 73,116,
+ 87, 85,174, 81,199,153,252, 76, 40,252, 64,176,159, 80,236, 14, 75,166,201,226,251, 78,132,136,183, 11, 12,195,156, 23, 4,161,
+253,155,228, 36,132,188, 67, 41,189, 38,222,221,255,223,168,156, 69,139,224,219,176,200,151,182,224, 13,168,235, 87,227, 27, 0,
+149, 18, 90, 74,150,221,122,243, 73,146, 11, 56, 3, 54,125, 55,126,143,222, 8,112, 70, 3,120,206, 8,158, 51,130,227, 12,224,
+141, 70, 80,163, 14,115,127, 57, 15,232,115,208, 36,208,119, 43, 0, 87, 83,175, 33,165,204,246,219,151, 79,219, 17,125, 22,118,
+173, 91,248,217,203,148,220,207,206,222,143, 79,173,235, 76,102,134, 39,227,215,202, 8,130,243,235, 39, 98,199,161,224,216,149,
+ 63,231, 61, 18, 40,133,157,149,153,255,208, 30, 97,158,219,142,156,127,185, 98,171,246, 17, 0, 88,155,203,253,135,221,127,226,
+245, 58,133,224,164, 84,174,216,176,246, 39, 23, 87,123, 51,194, 93, 89, 4,142,231,225,233, 29,196,206,156, 48,212,245,219,229,
+155,151, 3, 24, 94,222,249,181,157, 73,128, 95,205, 58, 83,182, 6, 95,241,202,203, 78,214,159,222,249, 85, 36,116, 48,186,184,
+215,145,126,179,240, 71,118,214,244,137, 95,212,118, 38,215, 31, 37,209,240, 10, 94, 10, 76, 29, 39, 28, 89,184,104,105,253,247,
+186,245,176, 16,114, 83, 88,109, 94,174,223,166, 95, 54,207,175, 93,191,153,170,117,160,135, 44,121,223, 88,162,201, 73,135,129,
+ 81, 42,222,171,219,209, 74,243,225, 96,227,166, 45, 59, 38, 0, 88, 85,169,238, 96,177, 97,107, 65,168,122,239,146, 80,180,190,
+123,237,252, 24, 62,254, 38, 40,111, 4,120, 67,209, 55,120, 35,168,144,255,221,124,236, 47, 64, 41, 49,188, 76,122, 1, 83,116,
+ 62,123,249,166,107, 82, 98, 66,211,229, 75,191,159, 25,224, 68, 78,128,199,246,135,233,184, 80, 89,129, 41, 66,132,136,127, 47,
+ 8, 33, 28,165, 84,242,134, 57,187, 83, 74,143,191, 38,199,151, 0, 62, 41,216,220, 76, 41,253,225, 13,164,203, 3,128, 75,193,
+102, 34,165, 52, 86,172, 1,175,117, 63, 71, 23, 31, 50,124,157, 56, 90, 74, 80, 1,216,223, 27, 0,204, 42,155, 16, 10, 40, 65,
+ 88,192,152,135, 94,221, 58,193,193,201, 5, 48,170, 1,131, 26, 48,106, 0, 99, 30, 96,212, 32, 53, 33, 26, 48,228, 1,207, 78,
+128,163, 84, 81,233, 28,235,178,128,136,125,232,208,200, 11,142,214, 74, 76,236, 21,224,176,241,100,196,230,205,167, 31,119, 4,
+ 48,200,164,180, 82,138,230,245,106, 97,229,230,188, 71, 71,111, 39,119, 1,128,160,134, 14, 39,155, 7,120,123,174,216,170,125,
+ 20,124, 63,189, 43, 0,116, 11,180, 62,209,204,223,213, 75,120, 13,171,175, 64,105,107,183,106,181, 8,127,119, 3,132,236, 88,
+100,103,107, 16,251, 98, 27,108,221, 27, 51,188,128,182, 21,157,111,198, 98,198,231,179, 22, 75,213,217, 73,122,193,144,194, 59,
+178, 25,172, 68, 46, 16,196, 93,208,229, 10,153,252,228,209, 31,113, 83,230,124, 55, 3,192,208,114,173, 67, 78,152,176,108,217,
+138,122, 45,155,212,118, 74, 60, 48,145,228,102, 36,129, 99, 85,138, 94,239,182,132,141,111,128,144, 20,178,140,200,107,116,132,
+141,125, 13,196, 93,217,137,168,107, 7, 73,171, 70,125, 21,191,238,146,125, 88,150,208,242,117, 36,173,186,180,105,182,167,134,
+151,155, 43,165, 2, 4,129,130, 10, 60, 62,238,223, 25, 51,247, 62, 3,207,243,232,215,165, 85,135,197, 99,222,163,130, 32,128,
+ 82, 1, 47, 19,211,212,191, 95,127,212, 33, 50,157, 94, 55,197, 82,213,224,157,246,173,238,223,190, 86,219, 24,241, 27,154, 12,
+ 93,248,136, 0,151,139,213,185, 86,119, 78,253, 90, 27,248,165,170, 15, 15,169,227, 4, 62,234,228, 34,120,181, 25,205,110,216,
+117,210, 49, 43, 37,110,216,129,109,107,251,175,219,176, 97, 7,128,177,226, 43, 70,132,136,183, 3,148,210, 55, 46,182,162,163,
+163,227, 95, 71,108,121,120,120,180, 1,176,164,208, 67,131, 16,178,196,199,199,103,238,255, 58,170,175,244,245,178,120,158, 31,
+ 26, 27, 27,123,177, 60,206, 30, 61,122,184, 1,240, 41,198,233, 67, 8,241, 41,237, 88, 27, 27, 27,190, 69,139, 22, 81,199,142,
+ 29,139, 23,107, 72,229, 5, 87, 85,132,214,163,152,125, 19, 27,233, 18,114, 1,224,145, 9,149,246,149, 33, 63,173,145, 95,180,
+101,254, 71,139,234, 86,179, 67, 78,158, 30,167,111, 69,129,231,141,224, 57,174,192,178,197,129,231,140,232,210,192, 1, 45,180,
+ 99,177,234,216, 99,112,188,176,176, 60,206,146, 48, 80, 97, 72,195,142, 3,247, 10, 2,149, 43,164, 76,150,159,167,189,211,148,
+126, 13,152,137,189,234, 66, 99,224, 6, 6, 56,147,223,195,147,232, 38,147, 56,133, 63,135, 60,162,165,237,227,185, 10,243, 94,
+142, 53,170,249,224, 30,157,172,168, 46, 11,198,212,103,200, 81, 27,241, 44,205,136, 68,109, 38, 20, 36,193, 36, 78,129,162,190,
+135,187,171,234,143, 61,211, 95,216,179,217, 18, 39,150,147,201, 25, 14,188, 64, 89,154, 25,174,179,171,221, 73, 90,232,183, 85,
+ 94, 58,205, 84,150, 31,181,233, 28,100, 29,179,115, 52, 49,243,235, 2,167, 70,158,120,113,113, 11,146,111, 29, 67, 90,124, 20,
+177,210,102,194,217,190, 38,186, 13, 29,132, 31, 6, 53, 69, 78,118, 14,216,132, 72,107,185, 84, 97, 83, 22, 39,229, 49,116,217,
+226,239, 92, 37, 44,147,127, 63, 11, 63,188, 17, 26,157, 14,224, 57, 40, 37, 2, 8, 45,252,207, 8,222,104, 80,213,239, 59,125,
+ 60,128,235, 21,229, 61, 60,137,238,170,235, 68, 90, 67, 48,214,166, 70, 13, 8,112, 57, 44,153, 22,137,159, 0,103, 50,164,113,
+151, 17,173, 41,193,165,170,148, 81,160, 61,122, 52,241,177, 48, 55,207,126,132,216,253,159, 33, 18, 74,234,220,242, 19, 12,249,
+120,130,106,227,198,141, 61, 9, 33,227,138,251,168,253, 21,139,172,138,156, 34,231,127,149,211,218,218,186,122,181,106,213,230,
+ 26,141,198, 54, 50,153,204,217, 96, 48, 64, 16,132, 68,185, 92,126, 41, 42, 42,106, 65, 86, 86,214,243,127, 91,222,239,223,191,
+111,178,216, 50,133, 83, 42,149,226,241,227,199, 79, 77, 21, 91, 37, 57,165, 82,233,246,203,151, 47, 99,239,222,189, 0,128,136,
+136, 8,248,250,250,154,151,118,238,139, 23, 47,204,219,181,107,183, 29, 37, 86,244, 40,201,249,224,193,131,234,191,253,246, 27,
+246,239,223, 15, 0,120,252,248, 49,252,252,252, 74, 77,207,229,203,151,217, 15, 62,248,160, 58,128,248,191,186,140,222, 6,145,
+ 85,252,251, 21,161, 21, 28, 28, 76,131,130,130, 72,201,223,165,224,153,151,173,188, 17,180, 60, 0, 60,171,108, 34,194, 19,233,
+226, 6,174,210,174,231,246,175,105,163,148, 49,152,183,105,202,203,148,244,156,119, 36, 4, 2, 0,112, 20,140,173,133,252,234,
+194, 97, 13,188, 50,114,181, 56,122, 35,238, 98, 88, 82,229, 76,164, 97,241,244, 12, 0,155,255, 53,148,196,111,216, 15,103,118,
+239,158,209,181,254,228, 94,245,113,228, 74,212,100, 0, 21, 70,125,167,130, 0, 42,112, 69,206,239, 5, 93, 7, 64,120,117, 81,
+ 96, 1, 52,127,159, 80, 57,139, 86, 59, 66, 36, 25, 78,232,102,167,146,175, 30, 51,102,148,149, 49,229, 9,210,245, 50,188,204,
+208, 34, 81, 35, 69,174,196, 9,113,143, 30,240, 12,193,153,138, 11, 23,217,148,211,218,216,202, 45,152,192, 78,227,221,179, 79,
+126,149, 33, 39, 28,107,213,231, 91,155,212,115, 63, 70,113,121, 41,121,132,160,194,181,245,172,173,109,124,181,105, 81,108, 86,
+ 70, 42,108, 92,234,162,235,192, 30,248, 58, 40, 0, 57,217,121, 72, 73,191, 74,107,185, 90,145,232, 75, 59, 48,171, 91, 29,164,
+ 37, 37, 64,103, 4, 72,158, 46, 93,171,215,230,150,121, 31, 25,108,152, 52,117,218, 16,111, 87, 71,243,194, 73, 5, 84,224,209,
+160, 78, 13,116,106,211, 28,103, 46,255,129,155, 15, 34, 32, 20, 76, 42,160,130,128,216,228,140, 36,173,129,223, 82,169, 27,202,
+115,160, 70,109,169, 66, 12, 85, 24, 50,172,231, 76, 84, 60, 48,231,157, 90,150, 35,103,244,240,182, 52, 87, 16,104,141, 60,180,
+122, 35,114,254, 88, 13,251,106,245,160, 82, 42, 73, 35,104, 36, 0,196,117, 11, 69,136, 40,134, 1, 3, 6, 40,147,146,146, 66,
+130,130,130, 2, 58,117,234,164,106,221,186, 53,242,242,242,112,250,244,105,228,229,229,121,123,122,122,122,159, 62,125,186,239,
+ 59,239,188, 19,238,225,225,209,110,223,190,125,149,241,161,149,224,127,206,236, 2, 0,142, 16,130,130,125, 4,128,240, 58,235,
+220,202,229,114, 68, 71, 71,191,113,203, 86, 92, 92,220,211,170, 88,182,114,115,115,101,238,238,238,112,116,116, 4,207,243,200,
+203,203,195,225,195,135,145,149,149, 5, 65, 16, 96,102,102,134,111,151,109,194,163, 59, 33,184,126,253, 58,178,178,178,100, 21,
+113,198,198,198,146, 6, 13, 26, 64,167,211,129,227, 56,104,181, 90,156, 61,123,182,104, 91, 34,145, 96,218, 55,203, 17,113, 43,
+ 4,119,239,222, 69,108,108,236,223,178,218, 72, 37,180,200,191,209, 26,186,177,188, 10,251,183,130,231,185,153, 27,183,238,190,
+ 58,115,236, 32, 76, 24,220,209,115,193,154,131, 29,195, 83,232, 86, 0, 8,112, 36,195, 62,108, 95,203,203, 70, 37,197,215, 59,
+111, 1,148,206,124,221,235,133,166,209,136,186, 46,100,242,161,235,209, 33, 95, 13,106,132, 26,174, 86,190, 53,107, 18,121,100,
+164, 9,107, 10, 10, 28,108, 45, 20,254, 65, 13, 29, 78, 66, 16, 96, 99,169,168, 13,158,131,141,133,194,191, 91,160,245, 9, 0,
+176, 81,201,106,151,102,249, 42, 11, 77,189,100,163, 85, 10,201,104,243,198,174, 94,195,123,118, 50,235,222,179,175,153,133,148,
+ 67,218,245,211,200,150,122,192,104,231, 13,157, 49, 29,177,207, 35,249,115,215, 30,198,165,230,232,166, 84,152, 76,138,139,113,
+207, 31, 59, 86,175,223,201, 54,245,216,172,228,234, 35,118,250, 48, 16,152,156, 29,125,146,204,157,154,153,221,120,246, 60, 87,
+160,127,182,232,148, 68,118, 86, 86,148,145,135,171,134,151, 88, 70,158,255, 21, 51,186,213, 67, 70,122, 50,180, 6, 14, 89, 26,
+206,224, 98,163, 84,232,158,135, 66,103,224,160, 55, 10,144,218,184,227,244,213, 7,169,130,209,120,162, 44,206,200, 84,122, 23,
+128, 69,241,125, 53, 29, 73,131,233, 86,102,119, 97,212, 32, 58, 54, 30, 91,131,175, 54, 42, 56,174,234,149, 92,224,242,135,159,
+139, 89,178, 8, 69,235,170, 56,193,215,113, 38,205,204,148,178,159,150, 76,254, 32,224, 93, 63, 59,133, 16,123, 21, 68, 48,192,
+156,151, 64, 35,231, 97,237, 89, 3,130, 62,135,170,181,218,204, 48, 64,140,244, 46, 66, 68, 49,212,174, 93,219,197,218,218, 58,
+108,234,212,169,118,125,250,244,193,161, 67,135,144,157,157,141, 45, 91,182, 96,197,138, 21,152, 63,127, 62,140, 70, 35, 54,110,
+220,168, 58,112,224, 64,179,181,107,215,198,122,123,123,215,141,142,142, 78,172,168, 79, 9, 64, 1, 64, 90,208,118, 17, 0,194,
+241,227,199,209,189,123,119, 28, 63,126, 92, 40,216,199, 19, 66,140,148,210, 42,173, 39, 42,151,203, 33,151,203,145,149,149,245,
+ 70,196,150, 84, 42,133,133,133, 5,228,114, 57,114,114,114, 42, 45,182, 56,142, 99, 99, 99, 99,145,149,149,133, 78, 61,123, 98,
+249,194,133,104,223,190, 61, 58,117,234, 4, 74, 41,206,158, 61,139,142, 45, 3, 49,232,253,118,120,248,240, 33, 56,142, 51, 41,
+189,137,137,137, 72, 74, 74, 66,215,158, 61,177,105,237, 90, 52,111,222, 28,254,254,254,224, 56, 14, 33, 33, 33,232,223,165, 37,
+148,189, 59, 34, 34, 34, 66,172,212, 38, 90,179,222,148,143,214,107, 35, 52,153, 94, 11,112, 36,199, 6,119,105,214,163,103,171,
+ 0,108,218,115,238,187,128, 0,178, 27, 0,236, 45, 21,223,126,212,190, 6,194, 99, 50,112,238,110,252,177,240,148, 55, 51, 91,
+ 67,224,225, 96,111,165, 2, 88, 57, 52, 6,129,179,122,134, 10, 29,152, 5, 74,161,106, 51, 29, 31,246, 12,247,108, 30,224,233,
+ 89, 56,235,208,162,251,143, 24,246,224,169, 87, 83,127, 23, 47,240, 70,128, 55,194,106,208, 78,224, 27,243, 10,211,209,170,186,
+226,204,244, 41,147, 91,116,235, 61,208, 76,174,178, 6,159,253, 18,198,196, 7, 72,123,114, 17,121, 42, 95, 36, 70, 63,195,222,
+ 83,215,179,158,196,166,101, 51, 12, 78, 39,101,233,190,140, 76,167,185, 21,241,106,141, 88, 56,119,214,148,160,189,187,247, 88,
+ 42,106,180, 34,145,171,187,103,201, 37,156,194,209,167, 49,163, 86, 58,208,239,183,236,177,202,211, 99, 81, 69, 60,234,188,236,
+131,103, 79,159, 28, 84,171,122, 43,203, 23, 55,131,161,209,234,160, 51, 2,117,155,181, 3,207, 83, 57, 97,136, 96,197,178, 36,
+ 57, 45, 3,196,200, 39, 93,186,247, 34,225,242,189,103,172,206,178, 98,238, 87,212, 61, 97, 63,239,217,174, 33, 96,212,224,253,
+ 54,245,176,124,199,185,207, 0,140,120,189, 66,206,183,104, 81,160, 85, 93, 39,178, 30, 64,171, 91,135, 87,212,110,210,123, 18,
+ 42, 99,209, 10,116, 36,221, 2,107,186,253,186,252,219,233,118,246, 30,190, 44, 17,140,160, 46,245,129,236, 88, 74, 98,175,194,
+218,189, 57,120,183,150,216,184,106,105,174, 32,208,221, 85, 9,109, 33, 66,196,219, 12,173, 86,123,112,241,226,197,118, 61,122,
+244, 40,180,200,224,234,213,171,216,188,121, 51,204,205, 95,125, 79,118,239,222, 29,148, 82,187,121,243,230, 29, 4,240,110, 89,
+156, 45, 91,182,236,185,106,213,170,248,134, 13, 27, 62, 43, 16, 91, 50, 0, 76,104,104, 40,243,242,229, 75, 98,107,107, 75,221,
+220,220,140,241,241,241, 2, 0,254,227,143, 63,102, 45, 44, 44,106,229,230,230, 94,168,170,208,146,203,229,111,196,103, 75, 42,
+149,130, 16, 2,185, 92, 14,153, 76, 6, 74,105,165,196, 22,207,243,146,227,199,143,227,214,173, 91,152,223,176, 33, 38,187,187,
+195,206,206, 14, 33, 33, 33,160,148,194,220,220, 28,233,233,233,216,189,123, 55,222,123,239, 61,112, 28, 39, 51,133,119,255,254,
+253,184,125,251, 54,190,105,210, 4,147,173,173, 97, 97, 97,129,179,103,243, 71, 3, 21, 10, 5,162,163,163,113,246,236, 89,180,
+107,215, 78,172,212,175, 9,147, 43, 79, 59, 66, 36,196, 25, 46, 6,189, 6,148,163, 0,129, 91, 64, 0,145,133,135, 83, 67,101,
+ 47,202, 48,152,181,106,235,177,160, 31, 39,245, 36,163,123, 53,114, 91,240,235,249,113, 0, 48,178,159,159,187, 74, 33,193,202,
+ 35,225,148, 97, 48,235, 77,100, 48, 32,128,200, 24, 6,227, 58, 53,247, 71,124,166, 30,145,241,153,191,135, 83,106,210, 80,207,
+185, 31, 63,196,182,163, 33, 47, 87,108,211, 62,162,148,194,198, 66,225, 63,236,126,164,215,175,199,111,199, 44,219,171,125, 68,
+ 5, 10, 27,149,180,246,136,135, 45, 43,156,117,216,212, 75, 54,122,230,244, 47, 91,246, 26, 49, 85,201, 61,218, 7,125,228, 41,
+ 8, 6, 13,178, 13, 50,100,178, 46,136,141,137,193,247, 27,143,189,204,206,211, 15, 10, 77,174,156,192,140, 72,165,185, 1,142,
+164,207,247, 95,127,117,102,225,183,243, 44, 52,207, 66,114, 89,194,105,216,106,109, 37,223,206,255,145,228,232,244, 3, 35,211,
+105, 78, 69, 60, 58, 75, 44, 90,188,108, 85,208,168,161,125, 31,249,249,182,181,231,227,159,219,107,179,179,147,119,158,188,237,
+ 82,208, 83, 36, 0, 16, 25,155,134,148,172, 60,142,231,140, 23, 44,165, 88, 16,102,138,117,176, 0, 53,156,137, 99,159,214,245,
+ 63,112,180,148, 65,147,155, 9, 39, 75, 41,186, 52,175,249, 65, 13,103, 50,253, 89, 18, 77,169,186,208, 50,130, 26, 53,184,182,
+232,189,218,148, 55,214, 6,111,132,225,254,246,202, 91,198, 8, 38, 79,104, 99, 97,101,171,127,193, 32,207, 28, 48,115, 0,177,
+242, 6,172,125,136,180,206, 64,196, 63, 11,227, 62,251, 96,104,218,243,168,216,159, 29,204,240,131,248, 10, 17, 33,226, 85, 68,
+ 71, 71,127, 52,115,230,204,203,205,155, 55,119,118,112,112, 64,189,122,245,112,244,232, 81, 76,157, 58,181,232,152,134, 13, 27,
+130, 82,138,244,244,116, 44, 94,188, 56, 49, 62, 62,254,163,242, 56,195,194,194, 30,109,219,182,173, 77, 64, 64,128, 65, 38,147,
+101, 2, 80,100,102,102, 42,211,211,211,137, 86,171,133, 32, 8,130,181,181, 53, 31, 31, 31,111, 28, 52,104,144,238,202,149, 43,
+ 53,243,242,242,162, 95,199,162,229,233,233, 25,154,150,150,150, 69, 8,121,237,208, 15,133, 34,203,193,193,193, 49, 55, 55, 87,
+ 0,144, 81,149,208, 15, 28,199,161, 73,147, 38, 56,117,241, 14,142,159,187,130,236,248,199, 24, 55,234, 35,212,171, 87, 15,167,
+ 78,157,170,114,153, 53,104,208, 0, 39,207, 94,198,229, 91,247, 16, 29,113, 31,159,141, 27,133,186,117,235,226,228,201,147, 98,
+133, 54, 29,193, 37,124,179,130, 75, 10,173,118,193,193,193,133, 61,243, 63,201,215, 58,142,164,129, 91, 45,249,246,121,221,106,
+214,145,118,154, 7, 34, 53,195, 62,223,147, 45,103,125,191,250, 81, 61,103, 50,244, 65, 82,197,179,195, 94,177,106, 37,209,176,
+186, 78,100,215,189,135,181, 63,120,191,185, 39, 54, 29, 85,205, 1,128,129,173,171,227,198,147, 20, 92,143, 72,222, 21,150, 76,
+195, 94, 55,215,245,156,137, 10, 20,187, 22,127,222,171,157,183,135, 11, 54, 31,186, 12, 66,112,208,164, 6,151, 82,218, 60,192,
+ 27, 43,182,149,156, 97,232,226,181,108,175,246,209,169,208,236,110, 0,208,185,142,249,137,166, 53,109,189, 42,178,108,152,201,
+ 37, 99,186,245,253, 80,201, 69, 28, 5,162,206,130,112, 58,104, 12, 2, 18, 82,115,160,182,246, 68,200,213,123,154, 44,173,126,
+ 82, 88,114,213,172,120,225, 41,244, 89, 67, 87, 18,147,155,167,113, 85, 57,214,212,178,140, 32,228,234, 40,110,132, 71,101,135,
+ 37,208,199,166,112, 68, 70, 82,253,187, 30,164,245,250,173,123,231, 74,101,242,129, 44, 1,113,178, 49,119, 92,255,227, 55,176,
+180,180,128,160,207, 5,242, 82,208,231,211,239, 83, 30,196, 25,170, 3,128,159, 3,177,104, 83, 67,182, 85,194,144,216,223,159,
+234,103, 87,104, 94, 53, 98,236,208, 46, 13,165,130, 62, 15,159, 47,222,131, 13,211,123,225,195, 14,117,164,193,127, 68,140, 5,
+176,160,170,101, 77,121, 14,212,168,193,187, 95, 93,124, 68,128,203, 20,104,117,107,239,183,181,129, 59, 38,115, 52, 38, 68, 42,
+113, 37,117,234,123,153,203,132,216, 63, 32,196,254, 65, 89,207,150, 32, 94,109, 8,113,105, 66,127, 90, 50, 63,111,211,166,205,
+167, 5, 6, 95, 87, 20, 42, 67,132,136,255,175,160,148, 62,179,177,177,233,218,189,123,247,115,167, 78,157,178, 11, 12, 12, 4,
+ 0,220,186,117, 11, 0,208,164, 73, 19,248,249,249, 33, 41, 41, 9,131, 7, 15, 78, 77, 72, 72,232, 74, 41, 45,215,231, 55, 39,
+ 39,231,249,254,253,251,157,243,242,242, 26,206,158, 61, 59,217,219,219, 59, 91,171,213,146,204,204, 76,129,227, 56,216,218,218,
+202, 27, 54,108,136, 22, 45, 90,228, 94,189,122,181,218,203,151, 47,115, 0, 68, 85, 37,253,189,122,245,194,197,139,249,147,246,
+222, 68, 92, 45,153, 76,134,192,192, 64,247,103,207,158,197, 21,220,159,107, 85,184,167, 69,191,239,221,187,135, 11,119, 98, 33,
+209,107, 32, 79,137,199,181, 67,251,209,115,204,120,112, 92,213,189, 24,238,221,187,135,195,103,175,193, 92, 33,193,227,199, 97,
+216,191,127, 63,198,141, 27,247, 90,156, 85, 68,185, 90,228, 95, 94,239, 19, 0,108, 44,211,162, 21, 20, 20,116, 1,165, 68,181,
+173, 89,147,200, 21,185,152,215,165,137,251,180,129,173,106,178,198,236,120, 8,188, 0, 86, 10, 56, 57, 88, 97,251,246, 93,213,
+119,237,217,115,181,129,187,116,149,192,113,179, 30, 36, 81,117, 37,210, 53,239,199, 61,151, 7,110,159,210, 78, 50,174, 91,109,
+ 59, 0,144, 73, 24,172, 60, 26,198, 1,152,247, 58, 25,126,215,131, 40,115,141, 24,237, 98,111, 61,103,230, 39, 65,118,237,154,
+248,225,194,245, 80,172,218,127,245,162, 60, 25,219, 76,190,113,130, 17, 37,245, 83,105,179, 14, 33, 84,236,119,201,243,212, 69,
+102,110, 11, 67,212,121,192,160,133, 86,103,192,203, 52, 30, 47,211,181,144,168,100,184, 21, 17,171,177, 79,196,177,170,230,153,
+ 16, 66, 90,213, 80,186,205,253,110,153,135, 86,147,203,101,103,164,114, 50,249, 53,169,202, 76,145, 80, 25,158,171,177, 84,219,
+182,186,172, 49, 32,176,114, 37, 85,127,245,197,112,243,184,240, 83,168,197,196,131, 80, 10,179, 58, 65,176, 52, 99,101,173,125,
+100, 49, 0,224,227, 98, 45, 95,252,245, 84,235, 73,211,191,174,208, 7, 44,128, 16, 89,189,166, 46,147, 2,189,109,113,241,246,
+ 35, 92,124, 16, 29,118,241,214,227,186,237,235,185,193,207,195,102, 98, 0, 33,139,194,105,229, 45,164,249, 5,195, 1, 70,109,
+209,172,195, 0,103, 50,164,233,192,217,165,206, 54, 44, 11, 62,128, 16,193, 83, 16,150, 5, 8,147, 63, 3,242,229, 31,144,216,
+212,160,187,246, 30, 86,111,222,188,237,155,240, 20, 42, 90,177, 68,136,168, 0,153,153,153,247, 85, 42, 85,151,250,245,235,111,
+249,252,243,207, 45,135, 14, 29,234, 54,106,212, 40, 6, 0,146,146,146,132, 21, 43, 86,196,255,244,211, 79, 89,169,169,169, 35,
+ 12, 6,195, 3, 83, 58,190,132,144, 43, 63,255,252,115,202,165, 75,151,234, 54,107,214, 76,209,184,113, 99,193,214,214, 86,162,
+ 80, 40,120,189, 94,175,141,136,136,224,159, 61,123,230,154,153,153,249, 20, 64,100, 85,134,245, 11,172, 87, 11, 88,150,157, 75,
+ 41, 13,124, 19, 62, 90, 42,149,202, 13,192, 83, 66, 72,173,202, 14, 27,254,169,193,150, 72,144,145,145, 1,117, 98, 24,148,177,
+ 79, 80,223,156, 65,128,173, 5,172,172,172, 94, 75, 20,101,101,101, 1,121,113,184,124,249, 30,192,113,176,182,182,134,181,181,
+245,223, 46,180,202,210, 34,255, 5,148,156,105, 88, 80,111,203,247,209,170,235, 68,198,217,202,177, 98, 76, 80, 77,153,143,151,
+ 7,116,177,183,112,239,101, 46,102,189,211, 44,156, 85, 88,106,199,124,212,171, 73,223,254,213,208,174, 69, 83,226,227,106, 61,
+113,209,143,235, 62,173,235, 76,166,134, 37,209,149,166, 36, 42, 44,153, 62,175,227, 68, 54,159,191, 31, 59,214, 67,165,129, 32,
+ 80,156,127,144,128, 7, 81, 25,155, 31, 38,211,231,149,201, 96, 93, 55,210, 81, 2,102, 15,165, 84,105,109,110,158,211,176, 65,
+109,135,142,239, 54, 96,186,182,109, 2, 25, 11, 92,190,113, 15,147,127, 60,120, 77, 16,104,208,109, 19,135, 13,243,103, 24,190,
+ 42,160,242,103, 24, 26, 95,153, 97, 72, 41,165,249,179, 14,203,119,251, 98, 89,146,168,142,190,233, 34,181,247,133, 38,242, 60,
+162, 50, 4, 68, 39,231, 32, 91,226, 2, 93, 92, 28, 64,133,152, 16, 74,171, 92,171, 29, 28, 28,156,170, 7,248,213, 92,189,117,
+ 63, 12,234, 44, 60, 15,217,130,220,140, 4,124,187,254,104, 77, 15, 15,143,182,177,177,177, 23, 42, 81, 97,252,206, 29,219,229,
+ 4, 10,176, 82, 5,130,215,238, 69,170,189, 25, 28, 84, 50, 8,154, 20,140,153, 52,212,186, 91,167,161,214, 0, 16,253,248, 46,
+188, 85, 26,147,120, 13,246,232, 59,176,189,191, 13,140, 26,108, 61,121, 87,203, 0, 93,183,157, 14,139,108, 95,219, 70, 57,176,
+149,183,237,130,248,204,126,168, 98, 80,209, 66,139, 86,145,133,175, 10,179, 13,247, 81,202,215,113, 36,145,123,174, 36,155,247,
+239,212, 88, 37,147, 16, 66,115,227, 64,205, 28,176,110,235,190, 92,185, 17, 27,197, 38, 84,132, 8,211,160, 86,171,111, 19, 66,
+234,125,249,229,151, 67,190,250,234,171, 54,230,230,230,213, 1, 32, 47, 47,239,185,209,104,188, 8, 96, 87,101,102, 7, 22, 8,
+167,167,132,144,231,145,145,145,206, 59,118,236,176, 1,160, 44,248, 91, 11, 32, 19, 64,210,235,204, 56, 44, 20, 85,132,144,185,
+111,208,210,113,188,128,179, 86, 85,206,103, 24,134, 39,132,128, 16, 2,133, 66,129, 75,151, 46, 97, 64, 80, 39, 60, 12,206, 68,
+160,141, 5,154,141, 24,131, 61,103,206,128,101, 89, 16, 66,192,178,108,165,218, 17,137, 68,130,203,151, 47,227,195,193,253,161,
+144, 0,214,214,214,248,242,203, 47,113,228,200, 17, 72, 36,226, 42,125,149, 40,231,141,133,130,203,244, 56, 90, 4, 11,206,108,
+249, 94, 6,222,136,223,182, 44,197,177,208, 92,253,227, 20,204,242, 79,193,138,253,200, 17, 82,126,220, 54,246,204,229,208, 31,
+ 62, 30,212, 67,245, 94,251, 78,120,175, 93,123, 73,221,166,109,231, 0, 88, 89,172,193,238, 88, 94,172, 13, 94,192, 55, 27, 79,
+ 62, 26,179, 39, 36,130,192,144,131, 65,157,155, 82, 94,192, 55, 21,136,128, 63,113, 90,155, 89,236,185,124,245,170, 45, 12,185,
+136,186,251,187,178, 90,245,154, 0,111,192,211,167, 79,240,211,214, 67, 66,200,141,199,219,245, 28, 62,143, 76,167,121,166,114,
+230, 43, 43, 14,214,230,114,255,110,129,214, 39, 4, 80,216,168,100,181,169,192,195, 70, 37,173,221,185,142,249, 9, 74, 41,181,
+ 52,147,214,166,188,177, 66, 78,141,158,219,176,245,151,205,203, 70,142, 28,105,158, 26,155,136,248,236, 80,228,202,221, 97, 84,
+121, 34,242,238, 69,141, 90,199, 85,216,136,151,119, 63, 83, 83, 83,147,111, 95, 79,199,158,245, 11, 97,212,235,144, 28,155,175,
+ 85,227, 83,179, 97,229,224,126,181, 50,156, 6, 78,200,234, 59,116,180,204,204, 18,102, 31,246,237, 33,143, 76,211,161,145,155,
+101,126,101,202, 77,193,195,179,151,209, 46, 47, 95,183, 61,123,201,192,187,129,155, 73,233,180, 84,202, 62,239,214,216, 29,207,
+ 99, 18,112, 41, 44,110,235,179, 52, 26, 95,195,158,108,141,140,207, 28,219,235, 29, 47, 44, 63, 18,254, 89, 89,226,168, 44,206,
+ 0,103, 50, 4, 64,171,124,103,120, 13, 40,208, 42,192,153, 12, 49,101,166, 97,105,156, 18, 25, 62, 88,118, 34,122,246,190,155,
+169,189,166,125,208,218,170, 69,139,238,114,112,122,228,104,116,198,240, 12,154,253, 58,101,244, 26, 61, 37,145, 83,228,252, 79,
+114, 22,136,158,237, 5,159, 55,201, 25,143, 18,113,157, 94, 55,239,197,135, 9, 41,165,146, 2,107, 86,185,206,240, 21,113, 22,
+ 31, 38,164,148, 30, 47,176,102,149,107,213, 42,201, 41, 8, 66,124,147, 38, 77,236,122,246,236, 9,158,231,241,228,201, 19, 68,
+191,124,137,142, 99, 63,131,141,141, 13, 46,222,191,143,199,143, 31, 99,238,220,185, 48, 26,141, 56,124,248,112,108, 69,156, 18,
+137,196, 80,179,102, 77, 89,239,222,189,193,113, 28,158, 61,123,134,184,184, 56, 76,158, 60, 25,214,214,214,184,125,251,118, 17,
+103,106,106, 42, 36, 18,137,225,239,168, 75,255,117,148, 38,178,202, 23, 90, 0, 15,222,136,172, 51,243,176,242, 18, 12, 6, 35,
+106,135, 37,211, 23,197,254, 95, 87,223,158,252,118, 63,244,209,243,219,127,188, 39, 71,242,131,252,115, 42,129,136, 84,154,208,
+212, 83,146, 3, 67,142, 21,158,157,192,139,164,156,220,136, 84,154, 80,217,204, 81,129, 39, 48,168,129,132, 91,184,114,241, 2,
+ 66,174,221,195,205, 7,143,248, 43,183, 35,246, 48, 2,190, 9, 79,165, 79,170,160, 78, 97, 17,180, 28,195, 31, 60,245,106,234,
+231,236, 5,158, 3, 21,140,176, 30,180, 11, 35,194, 91,120, 53,173, 97,227,149,111,201, 50,194,246,147,223,129,101,202,114,249,
+110,198, 24, 54,182,170,174,232,151,147,153,246, 78,135,182,239,154, 91,215,233,134,212,167, 17,120,114,239,178,230,118,104,228,
+149,155, 49,134,215,178,150,184,187,187,183,233,208,214, 31,131,198,204,132, 65,157,133,103, 33,191, 32, 55, 61, 17,151,174, 90,
+224, 81,118,246,187, 0, 76,182,104, 93,137, 54,214, 5,128, 86, 62,178, 24, 75,232, 92, 62,234,209, 19, 10,162,133,160,203, 6,
+ 81,167, 34, 50, 78,159,213,111,253, 75, 30, 0, 84, 10, 34, 49,167, 89, 86,166,240, 6,120,219,251,170, 88, 35,182,157, 9,131,
+ 32,228, 47,223, 36, 8, 88,183,237,247,200,177,223,124,216, 8, 1, 94,182, 13, 8, 33,164, 50, 38,127, 66,209,250,230,158,175,
+107,107,207,205, 1, 4, 3, 46, 79,180,171,221,122,101,122,235,170, 90,198, 30,196,209, 56, 0, 99,235,184,145, 13, 19, 87,158,
+156,211,228, 76,120,171, 41,159,244,178, 2, 21, 23, 96, 23, 33, 66,196,223,143,220,220,220, 49, 35, 70,140,216, 32,149, 74, 29,
+ 1, 16, 65, 16, 32, 8,130,228,135, 31,126,144,242, 60,207, 48, 12,195,179, 44,203, 29, 63,126,220,200,243,124,138, 86,171, 29,
+ 83, 17, 39,199,113,145,227,199,143,175, 89,209, 12,197,221,187,119, 67, 34,145, 24, 56,142,139, 20, 75,162, 98,145, 85,252,187,
+184,149,171,236,198,131,226,235,150, 31,206,155, 7,128,128, 98,126, 9,145, 5, 0,184,159, 70,227,235, 58,145,201,117,155,182,
+157, 87,120, 78,101, 19,167,229,249,254, 77,235,249,237, 6, 0, 29,229, 63,172, 74, 6,179,117,154,129, 13,155,190,187, 71,160,
+ 84,194, 81,186,153, 17,112, 64,203,225,161, 41, 51,237,202, 66,124,114,230,237,194,133,162, 5,208,255, 13, 23, 22,132,113,160,
+148,210,162,225,194,165, 74,164,102,233, 42,140, 3,117,249,185,174, 83, 83, 47,217,232,211,127,220, 29,195,243,212,133,101, 73,
+162, 70,207,109,120, 93,145, 5, 0,177,177,177, 23, 2,156,200,233,251, 13,156, 59, 59,168, 10,172, 92,106, 32, 85,141,211,177,
+201, 57, 23,170,194,153,145,103,236,245,213,138, 35, 71,229, 82, 86, 2, 74,243, 3,138, 82, 10,173,129, 79, 47, 20, 99,245,237,
+137,219,151,135,185,221, 44, 75,162, 43,226,187,254, 56, 97,249,160, 69,103,167,134, 69,101,108,126,145, 65, 67, 1,224, 69, 6,
+ 13,173,101, 79,230, 68, 38,230, 76, 13,141,206, 88, 90, 89,191, 10, 74,112,169,233,160,121,127,218,247,186,247,243, 97, 60,189,
+ 7,160, 79, 93, 39,210,105,208,148,159,166, 16, 2,113,249, 9, 17, 34,254, 31,161,208,170,197, 48,204,130, 55,200,121,156, 16,
+210, 29,192,211, 74,156,115, 29, 64,189, 55,156,183, 52, 0,105, 98, 41,191,209,123, 90,249,128,165, 97,201,116, 29, 76, 88, 52,
+218,212,227,202, 60, 63,158,158, 5, 96,255, 58, 25, 44,224,176,123,147, 55,237,126, 18,157,243, 87, 20, 70,129,168,250, 75,124,
+125,194,147,105, 23, 0,240,245,245,165, 79,159, 62, 5,165,244,181,156, 10, 31,166,208,123, 40,177,148, 67,105, 98, 27, 64,107,
+ 83,248, 34, 82,233, 55,192,159,135,134,159,166,209,111, 1,124, 91,165, 60, 87, 49,242,187,201,117, 43,153,158, 1, 42,142,206,
+ 47, 66,132,136,183, 83,108,253, 5,156,199,197, 59,251,246,161,188,128,165,140,120,123,222, 62, 60,121,242,132,188,174,200, 18,
+ 33, 66,132,136,183, 24,252,107,126, 74,213, 80,175,249, 17,241,150, 8,174,146,251, 68,161, 37, 66,132, 8, 17, 34, 68,136, 16,
+241,134, 68, 86, 73,177, 69, 0,116, 44, 85,154, 87, 98, 54, 1, 33,164, 99,101, 19, 84, 17,191,200, 41,114,138,156, 34,167,200,
+ 41,114,138,156,111, 31,103, 69,220,111,221,108, 70, 90,204,201,249, 77,127, 0,116, 20, 57, 69, 78,145, 83,228, 20, 57, 69, 78,
+145, 83,228,124,155, 63, 0, 70,151,181, 45, 14, 29,138, 16, 33, 66,132, 8, 17, 34, 68,252, 69, 16, 99, 3,137, 16, 33, 66,132,
+ 8, 17, 34, 68,188, 30, 42, 92, 84, 90,132, 8, 17, 34, 68,136, 16, 33, 66, 68, 21, 80,225,162,210, 34, 68,136, 16, 33, 66,132,
+ 8, 17, 34,170,134, 42, 45, 42, 45, 66,132, 8, 17, 34, 68,136, 16, 33,162, 98,148, 23, 25,158, 84,114,197, 19, 17, 34, 68,136,
+ 16, 33, 66,132, 8, 17,229,224, 79,145,225,131,131,131,105,241,111, 17, 34, 68,136, 16, 33, 66,132,136,191, 19,111,171, 22, 17,
+135, 14, 69,136, 16, 33, 66,132, 8, 17, 34, 94, 3,165,249,104,137, 66, 75,132, 8, 17, 34, 68,136, 16, 33,226, 13,160, 60, 31,
+173,194,128,165,237, 10, 76,117,237,196,219, 37, 66,132, 8, 17, 34, 68,136,248, 7,240, 86,106,145, 34,103,248,224,224, 96, 26,
+ 20, 20, 68,196,114, 22, 33, 66,132, 8, 17, 34, 68,252, 19,120, 27,181,136, 56,235, 80,132, 8, 17, 34, 68,136, 16, 33,226,117,
+196, 84,177, 89,134, 37,183,197,181, 14, 69,136, 16, 33, 66,132, 8, 17, 34,222,144,224, 42,185,143,249,139, 47,216, 81,228, 20,
+ 57, 69, 78,145, 83,228, 20, 57, 69, 78,145,243,255,139,200, 42, 41,182,196, 89,135, 34, 68,136, 16, 33, 66,132, 8, 17,175, 1,
+ 83,102, 29,138, 16, 33, 66,132, 8, 17, 34, 68,136,168, 2, 8, 33,163, 9, 33, 61, 10,126,247, 40,110,213, 18, 45, 90, 34, 68,
+136, 16, 33, 66,132, 8, 17,175, 1, 74,233, 70, 66,136,107,129,192, 10,166,148, 38,136, 66, 75,132, 8, 17, 34, 68,136, 16, 33,
+226, 13,160,132, 95, 86, 16, 33,164,104, 56, 81, 20, 90, 34, 68,136, 16, 33, 66,132, 8, 17,175,129,242,124,180, 8,128,142,101,
+156,116,182, 18, 74,174, 99, 21, 18,117, 86,228, 20, 57, 69, 78,145, 83,228, 20, 57, 69,206,255, 95,156, 21,113, 87, 70,127,252,
+ 91, 80, 90, 88,135, 34,241, 69, 41,253,203, 62, 0, 58,138,156, 34,167,200, 41,114,138,156, 34,167,200, 41,114,254,127,253,188,
+241, 89,135,141, 9, 49, 19,141,136,111, 31, 8, 33,206,132, 16,103,241, 78,136, 16, 33, 66,132, 8, 17,166, 91,184,222,168,143,
+ 86, 0, 33,159,124, 18,232,184,190, 30, 33, 86, 15, 40, 85,151,119,172,147,147,211, 6,149, 74, 53, 84,173, 86,231, 17, 66,132,
+ 98,166, 54, 0, 40,190, 46,208,179,228,228,228,214, 21, 93, 91,161, 80,172,112,118,118,254, 36, 55, 55, 87, 77, 8,161,132, 16,
+ 16, 66, 10, 51,252,202, 55,207,243,177,169,169,169, 77,254,211,133, 8,176, 14,206,206, 55,164, 44,235, 94,217,115,121, 65,120,
+145,148,152,248,110, 37, 42,204, 66, 66, 48,173,224,247, 18, 74,233,204,183,240,169, 96, 77, 57, 44, 16,176,140, 0, 6,241, 12,
+243,153, 20, 88,163, 19,132,245, 5, 21,151,175,234,165,245, 55, 72, 77, 66,209,128, 16, 88, 83,138, 44, 74,112, 79,222,140, 70,
+254, 67, 47,135,190, 82,169,180,151,149,149,149, 69, 90, 90,218, 5, 0,187, 1, 12,182,183,183,111,155,157,157,157,107, 52, 26,
+143, 80, 74, 15, 86,133,187, 77, 67, 50, 93, 46,147,126,172, 53, 24, 23, 95,190, 75,127,105,215,152,216,115, 2, 22, 41,101,146,
+214, 58, 61,183,228,210, 61,186,185,146,105, 37,249,143, 66,225,171,163,242,235,137,237, 55,177,220, 1,224,176,173,173,159,194,
+209,234,156, 84,206,190,200, 76,202, 29,218, 63, 57,249,101,255,215, 40,247,127, 35, 28, 29, 29,135, 51, 12,243, 29,165, 20, 60,
+207,207, 74, 75, 75,219,242,134,234,213, 44, 0, 54, 5,155,153,148,210,239, 94,147, 47, 26,128, 87,193,102, 12,165,212, 91,108,
+218,171,124, 47,215, 29, 58,116,104,108,251,246,237,177,124,249,114,172, 91,183, 46, 42, 37, 37,101, 17,128,173,148, 82,253,223,
+205,243, 54,226,141, 9,173,186,132,116, 31,222,165,249,134, 9, 3,187,147, 73,195,103,171, 43,120,152,127,238,218,181,235,135,
+ 91,183,110,149, 70, 68, 68,152,249,248,248,128, 97,152, 34, 33, 84,252,125, 89,173, 90, 53,161,162,107,179, 44,187,178, 79,159,
+ 62, 35,246,239,223,175,186,125,251,182,170, 78,157, 58, 69,124,130, 32,160,228,251,215,199,199,167, 92, 62,107,107,235, 91, 44,
+203,122,148, 38,210,202,250,205,243,124,108, 90, 90, 90, 19, 19, 42, 99, 23, 0, 51, 76,184,165,139, 40,165,167,202, 59, 64,202,
+178,238,241,241,241, 78,149, 45, 43, 79, 79, 79, 67, 37, 30, 30,103, 66, 48, 77, 16, 40, 3, 0, 12, 67,166, 43,149,202,245, 90,
+173, 54,166,240,255,130, 50, 75,170, 76, 26,220,221,221,251, 81, 74,199, 0,160,132,144,141,113,113,113, 7, 42,115,190,149,149,
+213, 45,185, 92,238, 33,145, 72, 72,105,229, 82,114,155,231,121,106, 48, 24, 98,211,211,211, 43, 45,176, 47, 0,164, 43,208,134,
+ 99,217, 73,246, 14, 14,173,111,159, 62,109, 30, 24, 24,200,176, 44, 59, 19,192,250,215,121,110,244, 55, 72, 77,222,136, 1, 26,
+163,162,135,194,123,190,159, 46,122,126,132,153, 84,119, 76,127,131,236,251,187,197, 22, 33,100,216,176, 97,195, 38, 45, 94,188,
+216, 65, 46,151, 51,123,247,238,245,155, 60,121,114,223,229,203,151, 59, 12, 28, 56,208, 82,175,215, 11,211,167, 79, 15, 32,132,
+ 56, 81, 74,215, 86,134,187, 69, 67,242,142,191,143,235,220, 9, 67,223,195,212,133,187, 39,180,170, 71, 82,205,204,101,235,250,
+181,174,105, 83,183,186, 45,190,222,112,229,115, 0,155, 43,145, 86, 34,145, 72,222,117,115,115,243,213,106,181, 92, 65,231,141,
+ 22,123, 39,228,223, 95,189, 94,159,158,158,190,239,117,239,205, 84,165,178,121,115, 27,139, 51,243,134, 12, 51,203,206, 72,119,
+ 94, 25,124,244,254,126, 56,213,239, 15, 68,189, 77, 13, 2,195, 48,223,197,197,197,185, 82, 74,225,234,234,250, 29,128, 45,111,
+136,218,166,240, 61, 76, 8,177,121, 3,124, 94,197,248,188,222, 64,221, 87, 74, 24,102,188, 92, 42,237,204,243,124,189,130, 58,
+244, 64,111, 52,158,225, 4, 97, 13,165, 84,251, 22,235,128,105, 99,199,142,237,244,213, 87, 95,249, 76,155, 54, 13,211,166, 77,
+171,182,105,211,166, 13,223,127,255,253,116, 66, 72,125, 74,105,238,223,204,243,159,183, 96,253, 37, 66, 43,128,144, 38, 29, 26,
+212, 58, 48,113,248, 32, 8,251, 87, 16, 12,159, 93,174,200,122,183, 73,147,143,183,110,221, 10, 0, 24,218,171, 23, 58, 55,107,
+ 6, 75, 11,115,200,229,249,201, 33,148, 64, 38,149,161,247,228, 47, 76,201,220,146,190,125,251,126,176,127,255,126, 11, 0, 88,
+183,110, 29,250,246,237, 11, 59, 59, 59,168, 84, 42,200,100, 50, 72,165,210, 87,190, 77, 16,110, 30,113,113,113, 78, 74,165,178,
+ 72,248, 9,130,240,202,167,216, 56, 53, 56,142,131,175,175,175,169,183,107, 70, 86, 86, 86,155,188,188,188,114,199,116,171, 87,
+175, 14, 0,167, 76, 33,252,238,219,111, 32,112,121,144, 72, 0,142, 3,116, 6, 6, 66, 41,125,123, 55, 55, 55,140, 31, 63, 30,
+175,179,144,120, 80, 80, 15, 66, 8,217,239,230,230,118, 32, 57, 57,217,135, 16,140,170,162,165,235,211, 39, 79,158, 88, 0,128,
+159,159,223,120, 0,149, 18, 90, 18,137,196,227,254,253,251, 78, 10,133,162, 76,203,101, 49, 17, 12,131,193,128, 70,141, 26,113,
+149,185,134, 51,224,149,206, 48,163, 26, 54,110, 60,122, 94,239,222,202, 27, 55,110, 40, 25,134, 1,199,113,248,225,135, 31, 56,
+ 74,169, 77, 0, 96, 21, 14,100,151, 83, 63,191, 2, 48,188,192, 74,187,153, 82,250,195, 43,255, 83, 52,208, 24, 21, 61,158,229,
+246,110,214,188,218,116,132,135, 61,104, 86,195,226, 48, 44, 37,186, 72, 0,127,171,208,178,178,178,234,181,124,249,114,199,205,
+155, 55,103, 63,126,252,216,176,126,253,122,199, 49, 99,198, 88, 26, 12, 6,140, 29, 59, 54,197,223,223, 95,182,124,249,114,199,
+131, 7, 15,190, 7,160, 82, 66, 75, 66,240,205,224, 94,157,161, 53, 50, 48, 26, 57, 71, 87, 71,203,237, 19,135,181,147, 82,170,
+199,182, 35,183, 97,228,132, 95, 42,105,201,122,183,127,255,254, 53,118,237,218, 37,121,244,232,145,164,118,237,218, 16, 4, 1,
+ 60,207,195,104, 52, 2, 0, 4, 65, 64,173, 90,181, 94,251,190,124, 12,248, 57, 56,219,157,121,183,123, 55, 51, 87,165, 2,118,
+ 25, 41, 24, 41,147, 88,110, 81,233,118, 0,104,241, 54, 53, 22,148, 82, 72, 36, 18,188,124,249, 18, 78, 78, 78,102,118,118,118,
+ 9, 0,230,167,167,167,111,124,139, 27,200,102,114,137,228,192,182, 95, 86,186, 52,111,209,130,117,118,117, 66,196,147, 24, 72,
+ 8,223,241,254,205,219,237, 62, 30, 55,101, 34, 33,164, 31,165,244,198,219,150,119,215,150,159,246,113,109,245,217, 58, 66, 5,
+124,189,250,104,206,194, 37, 43, 84, 99, 71, 13, 99, 39, 79,158, 12, 79, 79, 79,159, 62,125,250, 44, 1, 48,174, 66,158,119, 62,
+237,227,210, 98,194, 58, 80,138,121, 63, 29,205,249,126,201, 10,213,184, 42,240,252,199,159,157,141,127,153,208, 10, 32,164, 70,
+ 93, 79,167,211, 11,167,141,147,210, 19,191, 50,234,180,100,148, 37,101,156,156,156, 54,116,235,214,109,232,150, 45,255,235, 36,
+189, 27, 24,136, 62,239,181,130,147,189, 53, 84,230,242,252,230, 72, 32,184,247,248,133, 73,130,192,211,211,115,236,129, 3, 7,
+ 44,138,139, 9,153, 76, 86,244, 41, 46,178, 10, 63, 37, 45, 31,165, 65,169, 84,226,236,217,179,144, 72, 36, 96, 89, 22, 18,137,
+164,232, 83,124,155,101, 89, 56, 59, 87,202,117,105,145,181,181,117,253,156,156, 28,171,204,204, 76,120,121,121,101, 3,184, 95,
+236,255,250, 41, 41, 41, 86,149, 33, 20,184, 60, 76, 30, 89, 7, 82,253, 53,232,165,205,160,145,180,196,149,155, 15,113,236,212,
+ 5,196,197, 39,162,213, 59, 13,241,209,144,254, 56,115,230, 12,120,158,175,108,229, 73, 34,132, 44,233,217,179,199,116,128,144,
+142, 29, 59,102, 78,152, 48,129,121,244,232,209, 7,125,250,244, 14,124,242,228,105, 65, 79,152, 76, 35,132,172,172,132,101, 75,
+ 14, 0, 23, 47, 94, 4, 0, 69, 85,234,158, 66,161,192,213,171, 87, 81, 56, 76,204, 48, 12, 24,134, 1,203,178,248,237,169, 3,
+242,244, 12,212, 73,161,248,172,135, 23,170, 87,175, 14,134,169,216, 37,177, 29,160,188, 2,244, 33, 82,233,100, 87, 55, 55,159,
+182, 53,106,168,206,158, 61,203, 2,128,183,183, 55, 77, 72, 72,200, 60,114,228, 72,142, 4, 88,231, 77,233,214,242, 68,150,151,
+151, 87, 75,134, 97,190, 43,188,231,132,144, 37, 62, 62, 62,115,139,202, 77, 16, 48,164,147,157,116,226,196, 73,178,230,237,242,
+ 59, 39,205,123,238, 66,246,179,133,117, 72,250, 87,214,127,247,139, 34, 59, 59,123, 79,173, 90,181,216,180,180,180, 43, 0,162,
+141, 70,227,140,237,219,183, 59,141, 28, 57, 50,121,199,142, 29,139, 0,184, 45, 94,188,184, 93, 94, 94,222,222,202,240,182,110,
+ 64,186, 55,105, 24,248,142,151,167, 39, 46, 92,185, 1,153, 92,106, 51,126,120, 15, 88, 88, 72,176,116,115,176, 16, 29,155, 62,
+225,210, 61,186,181, 18, 34,171, 89,255,254,253,125,118,237,218, 37, 7,128,251,247,239, 35, 49, 49, 17,142,142,142, 48, 51, 51,
+131, 84, 42, 5,203,178,144, 74,165,111, 68,100, 89,123,218, 95, 63,124,248,136,153,157,157, 13, 86,127, 49, 17, 31, 37, 39,193,
+198,210, 2,198,220, 60,159,183, 76,112,248,245,235,215, 79,201,243, 60,242,242,242, 16, 18, 18, 98,109,102,102,102,237,225,225,
+ 49, 15,128,201, 66,203,204,204, 44, 73,171,213, 58, 21,188, 71,147, 53, 26,141, 51,128,108,133, 66, 81,248,158,206, 45,184,158,
+ 73,195,137,101, 12, 19,198, 20,179,100,197,188, 70,158,155, 54,107, 90,255,236,193,253, 59, 45,178,114, 18, 97, 99,155, 12, 6,
+ 89,216,184,113, 13,204,204,172, 48,111,222, 87,146, 23, 29,223,115,239,210,189,223, 89, 66, 72,199,183, 78,108, 81,178,177, 99,
+207,161,118,102, 42,203,130,182,196,136, 45,155, 38,130, 97, 24,204,157, 59, 23,117,235,214, 29, 77, 8,153, 77, 41, 77, 47,159,
+ 6, 27,235,181, 25,104, 39, 87,230, 23,177,192, 27,177,126,247,212,124,158,153, 99, 48,184,103,245,209,247,118,144,147,117,107,
+ 32, 39,191, 93,129, 70,202, 32, 6,205,104,114, 33, 71,112,112,112,219,160,160,160, 11,101,109,255, 7,158, 31, 87, 0, 65,165,
+137, 47, 73,112,112, 48, 13, 10, 10, 34,197, 50,247,202,118,121,104, 72,136,131,179,181,234,236,186,249, 19, 45, 36,215,130, 89,
+ 77,204, 83,196,107,249,162, 39,167,228, 20, 77,149, 74, 53,116,203,150, 45,175,232, 48, 47,103, 39,200,100, 82, 72,101, 4, 54,
+173,123,228, 63,113,151,142,129, 16, 90, 86,195,255, 10,103, 94, 94,158,246,238,221,187, 22,155, 55,111,134,147,147, 19,124,124,
+124,160, 82,169,160, 84, 42, 95, 17, 87,197, 5, 87, 73,161, 85,146,179,240,127,137, 68, 2,134, 97,112,230,204, 25,112, 28,135,
+254,253,251,255, 73,100, 73, 36,146, 82,133, 91, 89,211, 83, 41,165,167, 8, 33,247, 41,165,109, 10, 26,224,251,148,210,182,197,
+174,221,197,209,209,113, 6,128, 69,166,114,178, 44, 5,171,189, 2,193, 99, 5, 36, 47, 39, 66, 47,109,128,243,151,111, 99,203,
+134,229, 0, 0,159,218, 77, 49,160, 79,143, 34,107,156, 41,156,197,225,238,238,190, 59, 37, 37,181,219,123,239,189,135,140,140,
+ 12,227,252,249,243, 81,191,126,125,248,249,249,153, 84, 70,101, 9,184,251,247,239,123,106, 52, 26,147,134, 29, 75,227, 36,132,
+ 96,251,246,237,208,106,255,108,213,183,109,251, 61,166,246,245,198,136,207,182, 98,201,227,189, 88,187,118,109,185,121, 87, 1,
+245,181,214,181, 86,202, 89,174,254,162,175, 62, 85,124,244,209, 71,236,136, 17, 35, 16, 19, 19,131,145, 35, 71,106,207,156, 57,
+163, 79, 76, 72, 56, 34, 23,132,213,134, 87,133,113,153,156, 10,133, 98,219,169, 83,167,176,119,111,190, 46,137,136,136,128,175,
+175,175,249, 43, 34, 57,125, 31,114,162, 87,227,250,111,143,208,188,231, 46, 92,255,109, 8,248,204, 96,105, 19, 95,100, 85,230,
+126, 86,161,247,117,182,148,125,123, 1,236, 45,118,127,205,118,236,216,209, 27,192,209,130,255, 0,224,199,202,112,230, 19, 97,
+196,192,190,189, 33,145, 89,226,209,211, 88,180,125,183, 17,156,157,156,112,255, 97, 36,162,227,210,147, 8,193,240,174, 45, 21,
+139, 52, 26,253,236,139,119,233,207, 21,112, 18, 15, 15, 15,191,125,251,246,201,138, 89,160,139,158,113,150,101,139,182, 11,133,
+119, 85,234,103,161,200,178,244,176,184,254,205,154,150,230,215, 31,236,128,175,119,119,216,118,239,129,159, 79,159,198,147,176,
+112,173, 94,205,117,248,187,203,232,175,226, 36,132,248,245,237,219,247,202,206,157, 59,109, 94,190,124,137,139, 23, 47,194,199,
+199, 7,106,181,186,194, 14,111, 73, 78,173, 86,235, 84,108, 88,175,208,181,225, 59,189, 94, 95, 88, 24,133, 15, 98,153,195,137,
+ 37, 56,255, 52, 76, 88, 21,159,172, 82,222,243,114,165, 76,182,239,240,193,221, 22,225,143, 46,162, 97,131,119, 96, 97, 29, 0,
+129, 79, 68, 90,122, 46, 50,158,198,227,219,111,151, 96,222,252, 89, 56,122,104,191,133,127,157, 6, 7, 8, 33,181,138, 15, 35,
+254,215,203, 29,132,142, 62,251,219,142,117,132, 10,208, 36, 61, 82, 72,243,158,171,134, 14,233,199, 14, 26, 52, 8, 71,143, 30,
+ 69, 88, 88,216,186,178, 68, 86,113, 78, 66, 49, 58,244,226,222,117,160, 20,154,228, 71, 10,153,230,185,106,216, 7, 3,216,143,
+ 6,119,198,181,223, 87,162,115,195,231,161,110, 78,232,147, 81, 48,120, 40, 97,145,166, 80,226, 15,179, 27,228, 90, 49,177, 21,
+ 2,128, 20, 19, 88, 33,248,159, 15,230,127, 1, 65, 5,209,225, 71,151,180,110, 73,170, 34,176, 0,192,143, 16, 11,149, 92,118,
+125,203,188, 79,221, 84, 49, 97, 18, 93,232, 85,196,235, 4,186, 62,138, 19,174, 19, 98,118,155, 82, 77,201,115,212,106,117, 94,
+100,100,164,217,240, 62,125,208, 34, 48, 16,174,246,246,168,229,225, 1, 51,133, 28,114,153,180,216,123,185, 82, 42,146,250,251,
+251,163,103,207,158,144, 74,165, 80,169, 84,176,176,176,128, 92, 46, 47,213,154,101,106, 47,151, 82, 10,150,101, 17, 26, 26,138,
+232,232,104,216,216,216,224,143, 63,254, 64,135, 14, 29,254,100,213, 42, 46,206, 42, 99,162, 47,217,240, 23, 10, 49,152, 56,100,
+ 88, 8,158, 39,200,165, 13,160,140,154, 0, 53,105, 4,157,142,131, 78,167,195,207,151, 13,184, 17,153, 7,131, 65, 15,157, 78,
+ 87,230, 53,203,185,183,140,155,155,219, 80, 95, 95,223,241, 67,134, 12, 49,202,229,114,228,229,229, 65,173, 86, 35, 44, 44,204,
+216,173, 91,247,204,158, 61,123, 88, 7, 7, 7, 83, 74,177,164,146,126, 90,105,238,238,238,158, 5,195,179,105, 85,236, 65, 20,
+137,152,146, 24,254, 99, 56, 36,108,126,153,172, 91,183, 14, 60,207,131, 82, 90,102, 33,105, 9, 57, 55,255,251,101,214,139, 87,
+252, 2,107, 59,103, 92,184,112,129, 63,121,242,100, 14, 1, 34,158,132,133,253,248, 62,112,124, 31, 96,168, 76,250, 50, 50, 50,
+204,124,124,124,224,225,225, 1, 65, 16, 96, 52, 26,139,172, 47,105,105,105,208,104, 52,176, 51,207, 68, 77,123, 15,112, 57, 33,
+ 72, 8,253, 26,174, 22,143,176,245,148,222,216,216, 15,247,254, 5,166,240, 95, 1,252,250,250, 68,112,119,114,241, 4, 67,141,
+136, 79, 78, 67,239,160,206, 96,101, 22,120,241, 50, 21, 13, 2,106,184,126,240,126, 75, 87,150,112,152,182,104,215,120, 0, 63,
+ 87, 68,151,155,155,203, 63,122,244, 8,247,239,231,235, 93, 43, 43, 43,152,155,155,191,242,140, 51, 12,243, 90, 22,173, 66,145,
+245,253,186, 14,230,140, 52, 15,217,252, 89,108,222,126, 27, 13,252,123, 96,253,245,155, 90, 62, 41,189,227, 82,173, 54,226, 63,
+ 61,108,228,234, 58, 70, 16,132,121,148,210,204,190,125,251, 58,239,218,181,203, 54, 46, 46, 14,183,111,223,198,220,185,115, 83,
+120,158,231, 40,165,132, 82,250,245, 27,168, 75, 66, 49,129,245, 38,173, 8, 82,149, 18,159, 57, 88,145, 94, 18,198,202,135,203,
+206,125,145,170,167, 71,212,156,240, 19,165,212, 88,222,185, 12,195,124,178,127,207, 58, 55, 7, 71, 1,237, 28,223, 67, 66,146,
+ 1,223,127, 49, 12,105,105, 57,248,121,211, 66, 0,114, 24, 56, 22,109,218,245,131,147,147, 59, 70,143, 26,237,178,110,195,250,
+ 79, 1, 44,125, 91, 12, 90, 9,127,172, 57, 68, 8, 57,235,232,232, 24,246,233,232,209,142, 62, 62, 31, 66,169, 84, 98,247,238,
+221,216,181,122, 53,191, 2, 24,176,129,144,243, 99, 40, 61, 84, 46,207,181,255,241, 76, 28, 59,214,177, 78,157,177, 80, 40, 20,
+248,253,228,175,208, 38,110,207, 9,106, 1,131, 90,139,160,106, 61,169, 93,212,111, 36, 93, 42,197, 83, 0,144, 42,145, 32, 5,
+146, 75,208,253,215, 4, 86,145,140, 42,244,211, 42,252,126,237,200,240, 84, 42,127,176,105,210, 96,111,103,232,136,254,242,111,
+136,211, 9,252,226, 39, 6,246, 78, 22,157, 26, 94,138,200, 42,168,216,130,151,151, 23,222,107,210, 4,125, 90,183,134, 68, 34,
+129, 82, 46,131,165,210, 12,148,207,183,100, 21, 14, 29,150,211, 38,162, 52,235,147,189,189, 61,100, 50, 89,145,192, 50,213,154,
+ 85, 22,167, 32, 8,144, 72, 36,184,127,255, 62, 90,181,106, 5, 79, 79, 79,236,221,187, 23, 93,186,116,249,211, 80, 98,101, 69,
+ 86,161,208, 42, 62,140, 87,204, 73,190, 66, 39,248, 63,137, 4, 61, 65,170,190, 1, 8, 9, 4,199, 1, 60, 5,116, 90, 45, 40,
+ 5, 40, 5,140, 6, 61,180, 90,109,209, 53, 77, 25,146,117,117,117,245,170, 94,189,250,130,233,211,167,213,105,208,160, 33, 82,
+ 82, 82, 32, 8, 2,204,205,205,161, 86,171, 97,101,101,133, 22, 45, 90,188, 88,176, 96, 65, 2,165, 24, 93, 89,103,248, 55,240,
+130, 5, 0,156, 62,125,250,149, 97,195,194, 79, 94, 66, 44, 70,124,190, 3,114, 73,254,208, 82,161, 15, 79,121,239,221,246,109,
+ 90,226,202,157, 8,238,147,105, 43,117,210,180,219,139, 92, 4, 97, 75, 44,144,244, 26,141, 11, 82, 83, 83,145,148,148,132, 94,
+189,123, 99,215,206,157,136,138,138, 66, 64, 64, 0,218,183,111, 15, 39, 39, 39, 68, 69, 69,225,198, 37, 29,116, 25,233, 72,215,
+223,134,202,178, 57, 14, 95,136,212,205, 89,171,143,252,167,222, 22,132,144, 94, 0,134, 89, 89, 89, 85, 87,171,213, 9, 28,199,
+237, 3,176, 15,192, 0,137, 68, 50, 64,165, 82,185,102,103,103, 63, 71,254,108,162, 35, 21, 14, 37, 41,149,246, 10,165, 21, 4,
+ 78, 7,137, 68, 2, 79, 79, 31, 80, 94,143,140,108, 13,134, 15,234,137, 59,247, 31,226,228,249,107,156,209, 40,172, 50,229,182,
+178, 44, 75,253,252,252,144,156,156, 12,169, 84, 10, 51, 51, 51, 88, 88, 88, 96,230,204,153, 88,189,122,117,145,200,170,170,208,
+250, 24,240,179,242,178,184,246,221,154,124,145,149, 24,159,128,164, 88, 41, 28,237,157,177,106,245,138,188,140,168,196,230,191,
+ 0,255,105,145, 5, 0,130, 32,124, 29, 23, 23,231, 36,145, 72, 92, 56,142,195,203,151, 47,113,235,214, 45, 76,152, 48, 33, 41,
+ 45, 45,173, 29,165,180, 74,121, 84, 42,149,201,133,150, 44,165, 82,153, 12,148, 57,156,152, 89,204,146,149, 89, 14,101,169,195,
+132,132,144, 26, 62, 30,150,103, 54, 45,159,236,213,180,121, 11, 70, 37,177,202,200,125,154,216,234,242,197, 11, 45, 38, 44,255,
+249, 83, 66, 72,103, 74,233,179,178, 72, 21, 82,105,183,119, 90,182,148,128, 38, 65, 34,111,133, 37,139, 7, 33, 37, 53, 27, 25,
+233, 57,144,201,204,161, 55,178,224, 5,130, 22,173, 90,227,215,173,123, 80,119,212, 72, 86, 46,149,118,122,155,132, 86, 1, 22,
+254,244,211, 79, 94,254,254,254,216,178,101, 11,206,111,219,134,143,178,178,112,129, 97, 88,163, 84,234,112,220,104,220, 8,224,
+144,169, 60,117,235,214,197, 47,191,252,130,237,219,183,199, 12,237,144,124, 96,242, 80, 56, 25, 12,232,122,251, 49,236,170,245,
+ 4,110, 63,134, 93, 99,127,212,226, 36,120, 74, 8, 94, 9, 7, 21, 28, 28,220,182,248,247,127, 9, 5,107, 27,150, 58,196, 46,
+ 1,208, 46, 56, 56,152, 22,255,174,136, 80,229,228, 55,118,251,160,247,188, 3,107,122, 17,227,222,149,120,153,199,233,103, 63,
+ 54,200,159,228,210,201,225,148,174, 40,167, 7, 65, 89,150,133,165,153, 25, 28,109,108,242,205,252, 12, 3, 8,128, 96, 4, 8,
+159, 47, 0,168, 64, 80,153, 73,211,130, 32, 64, 46,151,151,234,248, 94, 89,223,172,226,156, 57, 57, 57,120,241,226, 5, 70,143,
+ 30, 13,149, 74, 5, 0, 72, 76, 76,132,183,183, 55, 36, 18, 9,226,226,226,240,251,239,191,163,122,245,234, 80, 40, 20,164,146,
+133, 82,216,240,215, 39,132, 92, 0, 80, 63, 33, 33,193,202,213,213, 21,149,182,104, 9, 20,106, 29,129, 94,207,227,201,147, 39,
+136,143,143,199,139,231, 79,209, 52, 47, 27, 20, 44, 40,165,149,178,104,121,120,120, 4,250,250,250,174, 95,180,104,145,204,195,
+195, 3,148, 82,216,218,218, 64,173, 86, 35, 53, 53, 13, 1, 1, 1,240,244,244,196,146, 37, 75, 0, 96,215,223, 45,178, 74,212,
+169, 34,161, 85, 92,112,125,254,190, 23,210,211, 45,192,178,255,155,125, 90,129,143,150, 12, 0,218,117,238, 43, 57,115,242,184,
+ 57, 7, 44, 72,100,217, 5,146,138,203,209,200, 11,130,170,172,255, 95,190,124, 9,169, 84,138,253,251,246, 33, 61, 41, 9, 13,
+ 26, 52, 64,179,102,205,240,244,233, 83,220,185,115, 7,246,246,246,112,244,120, 23, 23,158, 27, 16, 30,175,129,181,181, 53, 34,
+ 99,153,127, 44,100, 0, 33,100, 84,199,142, 29,231,254,248,227,143, 78, 46, 46, 46,210,148,148, 20,255, 53,107,214, 52, 88,179,
+102,205,196, 79, 63,253,212,249,211, 79, 63,181,117,116,116,148, 36, 38, 38,250,125,241,197, 23,141, 9, 33,213, 41,165,203,202,
+227, 52, 55,183,180, 99,101,230, 32, 68, 2, 27,107, 91, 72,228,230, 16, 56, 9,120, 1,176,178,118,196,149, 59,251,241,199,131,
+156, 49,201,105,216,103,194,115, 67,237,237,237,193, 48, 12,236,237,237,255,100,169,158, 48, 97, 2, 54,109,218, 84, 52,140, 88,
+ 85,145,245,253,154, 14, 22,164, 64,100, 37,190,148,128,232,170,227,183, 67, 87, 51, 51,162, 18, 91,189, 13, 34,171,240, 29, 71,
+ 41,197,243,231,207,161, 86,171,113,233,210, 37,124,253,245,215, 41, 37, 69,150,179,179,243, 40, 43, 43,171,249,185,185,185, 75,
+ 18, 18, 18, 86, 86,196, 91, 32,162, 94,237, 12,150, 50,156,104,106,136,135,210,134, 9, 9, 33, 82, 79, 87,229,169, 59,151,118,
+120, 91,211,123, 4,209,163,129, 39,217, 97,150,215,157,218,116,111, 26,196, 52, 90,251, 77,181,102, 99,102,158, 34,132,248,151,
+101,217, 18,120,190,145,185,133, 37,128,100,220,190, 21, 82, 36,178,210,210,179,160, 51,176,208,233, 9,180, 6, 6,239,117,236,
+138,213,235,183, 35, 46, 57, 29,133, 51, 18,223, 22, 16, 66,236, 2, 3, 3,199, 14, 24, 48, 0, 11, 22, 44,192,217, 31,127,212,
+143, 35, 36, 91, 2,208, 96,158,135, 64, 41, 97, 76,112, 98, 47,201,179,116,233,210, 67, 0, 6, 47,154,128,119, 51,114, 49,220,
+173, 39,181,171,214, 51,255,216,254,211, 41, 0,216,165,156,125,181,201, 12, 10, 10, 34,133, 35,107,149, 29, 97,251,183, 67, 18,
+ 20, 20,116, 33, 56, 56, 24,197,191,203, 59,193,202,165,118,247,153, 95, 78, 88,220,180, 75,107,146, 48,165, 19,210,179,181,220,
+ 87,225, 6,121,172,166,124,145, 85, 28, 95,174, 89,131, 59, 17,249,207,177,135,147, 19,166,125,240, 1, 40, 7,252, 17, 22,142,
+ 61,103,207, 98, 80,199,142, 48, 47,152,241,103,170,245,169, 52, 43, 86,113,107, 86,101,173, 78,153,153,153,216,183,111, 31,154,
+ 53,107, 6,149, 74, 5,137, 68,130,250,245,235,227,225,195,135,168, 81,163, 6, 8, 33, 56,124,248, 48,250,244,233,131,103,207,
+158,225,221,119,223,181,168,138,208, 10, 15, 15,183,162,148,182, 41,180,126, 84, 21, 58,157, 14,143, 30, 61, 66,207,158, 61, 97,
+107,107, 11,119,247, 93, 56,123,106, 7, 84,129, 31,129, 16, 84, 74,104,241, 60,255,113, 80, 80,144,140, 16, 2,141, 70, 13,165,
+210, 12,230,230, 22,176,180,180,130,159,159, 63,226,227,227,209,165, 75, 23,125,100,100,228,218,132,132,132,189,149, 77,107, 64,
+ 64,128,121, 86, 86,214, 71,213,170, 85,147, 23,244,118, 3,106,214,172, 57, 53, 50, 50, 50,167,178, 86,173, 66,129, 69, 8, 1,
+203,178, 69, 66, 75,194, 48,112,117,113, 42,218, 46,240, 79, 35,229,112,101,199,165,233, 20, 0,224,229,229,133,213, 27,142, 50,
+ 65, 65, 65,152, 56,113, 34,140, 70, 35,214,174,205,159,100, 55,100,200, 16, 24, 12, 6, 28, 56,144, 63, 73, 82, 34,145,148,107,
+ 54,185,117,235, 22,110,223,190, 13,163,209,136,172,172, 44,156, 56,113, 2, 23, 46, 94,196,238,195,231, 16,245,252, 41,234,251,
+123, 99,228,200,143, 33,149, 74,177,117,235, 86,180,106,213,234, 31,125, 33, 72,165,210,161,155, 54,109,114,221,178,101, 75,230,
+225,195,135,243,222,121,231, 29,197,138, 21, 43,156, 86,175, 94,237,168,215,235, 49,105,210,164,228,107,215,174,233,122,247,238,
+109,190,113,227, 70,215,154, 53,107,118, 2,176,172,148,251,105, 14, 96, 16,128, 15,219, 53,179,150,100,230,104, 32,112,122, 60,
+143,122,129,172, 92, 61, 4,222,128,152,216,120,228,106,121,164,165,231,160,126,163,206, 63,133,132,132,204, 34,132,124, 69, 41,
+ 61, 86, 81, 58,195,194,194,112,237,218, 53, 68, 69, 69,225,249,243,231,175,252, 55,106,212, 40,108,223,190,189,210, 22,173,210,
+ 69, 22, 11,162,171,129, 99,135,175,103, 38, 63, 77,120,107, 68, 86,193, 59,104,158,171,171,235, 60, 87, 87, 87,229,233,211,167,
+173,171, 85,171, 6,142,227,244, 37, 45, 89,237,218,181,155,189,105,211, 38,215, 26, 53,106, 76, 0,176,242,223,144,118,134,193,
+168, 37,235,198, 58, 88,202, 99,226,241,100, 89, 65, 44, 65, 22, 80,103, 3, 33, 59, 33,105, 57,231,197,132,222,211,109,103,108,
+ 89, 48, 10,229,204,144,141,124,246, 18,235,214,173,198,228, 73,195,241,235,207, 75, 32, 8, 18,232,140, 44,188,124,222,129,206,
+ 32,128, 48, 18, 52,104,212, 4,231, 67, 46, 65,202, 0,251,182,172,123,171, 76, 89,148,210,116, 66,200,218,195,135, 15,127, 54,
+113,226, 68, 8,130, 32,159,191,110,157, 38, 37, 37,101, 33, 42, 17,255,170, 20,158, 62,235,214,173,139,152,177, 58,229,208,228,
+161, 96,163,126, 35,233,183, 31,195,174,255,116,138,253,139, 9, 26,251, 35, 93, 85,122, 19,127,177,196,247,219, 33,180, 10,149,
+100,241,239,210,208,216,175,198, 55,214,118,182, 31, 55,171,239,231, 48,109,226, 56,201,179, 68, 45, 14, 84,251, 32,247,247,109,
+171,204, 19, 57,197, 79, 79,169,102, 69,101, 46,188,231,247,223,139,126,255,176,107, 87,169,255, 37,244,239,111,114,207,172, 44,
+ 43, 86,101, 45, 89, 0,160, 82,169,108, 58,117,234,132, 14, 29, 58,160, 95,191,126, 69, 62, 89, 13, 27, 54,196,238,221,187,209,
+183,111, 95,220,189,123, 23,174,174,174,168, 93,187, 54,106,215,174,141,227,199,143, 87,182,130,131,231,121, 4, 6, 6, 22,206,
+ 58,172, 31, 27, 27,107, 85,213,130,212,233,116, 72, 75, 75,131,157,157, 29,228,114, 57,154, 55,111,134,207, 62,111, 14, 7,215,
+ 95, 16, 88,199, 31,121,121,121, 69,211,223, 77,104,108, 3,107,213,170,133,148,148, 20,164,164,164,192,209,209, 17,110,110,110,
+112,113,113,193,178,101,203,232,202,149, 43, 79, 26, 12,134,181, 41, 41, 41,149,182,100,185,186,186,182,182,179,179,155,173,209,
+104,228,197,122,184,114, 71, 71,199, 35,110,110,110, 11,227,227,227, 43,179,198, 38, 12, 6, 3, 8, 33, 8,126,238,134, 60, 61,
+ 65,118,236,109, 76,124,223,251, 21,225, 37,149, 74, 77,113,232,205, 27, 60,120,176,147,167,167, 7, 94, 70,134, 97,255,126,138,
+ 31,127,252,177,112, 86, 36, 34, 10, 58, 6,133,219,237,219,183,135,143,143, 15, 42, 19, 36, 83, 16, 4,220,191,127, 31,187,142,
+ 92,128,171,119, 29,196, 60,121,132, 59,199,127, 67, 53, 71, 59,212,109,212, 4, 70,163,241,181, 66,111,188, 9, 24,141,198,205,
+190,190,190, 84,175,215, 95, 0,176,250,193,131, 7,195, 19, 18, 18, 38, 29, 61,122,212,109,192,128, 1,241,191,253,246,219, 10,
+ 0, 91, 30, 60,120, 48,246,219,111,191,237,192,113, 92,169,179, 5, 89,150,253,245,139, 47,190,104, 55, 96,192, 0, 34, 99,140,
+250,211,167,182, 74, 56,206, 72,190,252,106, 51, 31,114,249, 2,195,113, 70,210,111,240, 23,194,241,223, 31, 48, 99, 62,255,129,
+111,248, 78, 16, 66, 67, 67, 93,122,244,232,241, 45,128,114,133, 86,161,165,170, 44, 11, 37,203,178, 24, 62,124, 56,118,239,222,
+109,114,190, 71, 2, 53,172,188, 45,174,125,191,166,163, 5,145,228, 22, 19, 89, 53,113,236,240,245,204,164, 39,241,111,149,200,
+ 2,128,212,212,212, 13, 0, 54,216,217,217, 37,153,155,155, 35, 39, 39,231, 79,245,143, 16,162,244,247,247, 87,202,229,114,116,
+238,220,217,206,213,213, 53,130, 97,152,149,113,113,113,101, 42,142,210,134, 9, 75, 27, 78,124,157, 89,135,182,142,232,209,188,
+117, 35,203,199,214, 11, 44,149, 18,237,221,106, 17, 74, 43, 2, 32, 75,231,252,252, 74,244,160,108,146,172,104,216,164,125, 99,
+ 88, 73,204,123,148, 37,180, 24,150,189,147,149,145,217, 45, 59, 71,143,203,127,132, 98,240,160, 90,208, 25, 8, 4,129, 65,110,
+158, 14, 96,165, 96, 0, 12,249, 96, 24, 40,145, 32, 61, 41, 30, 44,203, 62,192,219,135,153, 99,199,142,237,246,213, 87, 95, 85,
+ 47,136,127,229, 93, 16,255,106, 26, 33,164, 30,173, 32,248,120, 57, 60,213,126,219, 61,103,202,145, 75,235,179,130, 90,104,158,
+ 52,246, 7, 0,216, 53,246, 71,186, 84,138,167, 18, 22,105,148, 66, 83,194,170,213,182,248,247,127,204, 58,248,138, 19,124,241,
+109,147,124,180,124,107,120,116,109,219,180,201,231,179,190,154,101,249,240, 74, 8,102,124,179,154,250, 54,233,148,179,225,210,
+ 29,125,174,185, 79,183,156,148, 39,127,152,170, 47, 0,160,235,123,125, 81, 63,160,217,159,254,108,213, 62, 63,150,228,229,243,
+183,144,148, 18,103,114, 99, 91, 32, 14, 74,245,201, 50,101, 74,127, 41,166,239,204,208,208, 80,167,216,216,216, 87, 28,223,125,
+124,124, 64, 8,193,245,235,215,113,237,218, 53, 12, 30, 60, 24, 18,137, 4, 82,169, 20, 23, 46, 92,168,148, 53,166,152,117,233,
+ 62,165,180, 45, 33,164,139,135,135, 71,169,179, 13, 77,225,210,104, 52,200,202,202,194,169, 83,167, 80,171, 86, 45,124,255,253,
+247,112,115,117,198,172, 89, 83, 32, 8, 2,178,179,179,193,243,188,169, 22, 45,161,208, 90, 36, 8, 2, 82, 82, 82, 80,189,122,
+117,172, 89,179, 6, 43, 86,172,248, 54, 62, 62,254,104,101,211,232,229,229,101,195,243,252,151, 61,123,246,236,212,187,119,111,
+116,233,210,229,149,255,119,238,220,105,121,224,192,129,133,158,158,158, 93, 13, 6,195,162,164,164,164, 20, 83,120,127,249, 37,
+ 63,252,146,234,157,121,152, 49,160, 26, 62, 28,191, 21,203,150, 29,132, 66,161,120,165,225, 93,176, 96, 65,185, 34, 70,160,212,
+ 87,150,122, 37,126,202,244,165, 78, 11, 23,158,197,217,179,201, 96, 24, 6,174,174,174, 96, 24, 6, 47, 94,188, 0,195, 48,240,
+246,246, 6,195, 48,136,139,139, 43,244, 9,204,128,214,180, 88,134, 12,195, 64,171,213,226,101, 76, 20, 98, 35, 35, 96,145,157,
+ 8, 71, 43, 21, 50,194,238,163,254,200, 81, 69,241,159,254,225, 30,238,118, 0,219,139,237, 90, 74, 8,209, 19, 66,250, 1, 56,
+ 68, 41, 45,180,104,124, 91,240, 41, 21,239,188,243, 78,195,175,190,250, 74, 90, 24,110,195,205,235, 59,206, 96, 48, 8, 0,224,
+ 95,191,205, 43,106,255,233,211,167, 88,182,108, 25,242,242,242, 32, 51, 37,208, 93,129,104, 45,156, 97, 88,154, 8,171,140,200,
+ 2, 0,123,111,143,159,174,223,190,192,223,139, 92,175,121,240,248,132, 89, 66, 12, 3, 70,255,246,138,172,146,150, 45, 15, 15,
+143,121,130, 32, 80, 74,233,156, 98,239, 86,133,151,151,215,165,211,167, 79,219,115, 28,135, 85,171, 86,217, 36, 38, 38,218,180,
+105,211,102, 6,128, 50,133, 86,105,195,132,165, 13, 39,162,216,172, 67,133, 66, 97, 87,222,235,163,228,172, 67,158,135,159,149,
+165, 13, 50, 16, 11,157,131,177, 97,166, 61,151,126, 38, 97,212, 93,183,232, 70, 1,230,188,177, 58,147,173,135,187,202, 6, 2,
+165,126,101,118, 78,141,198, 19,119,111,223,233,236,229, 89,139, 61,122,236, 34,122,245, 25, 0,157,142,129,214, 72, 64, 88, 41,
+ 8, 43, 67,189,250,141, 80,187,110,125, 80, 0,183,110, 92,225,244, 70,227,153,183,169,236,221, 90,125, 62,216,173,213,103, 43,
+ 65, 5, 90, 74, 28,173,234,125,250,244, 89, 8,224,243,138,120,156,223,253,124,176, 75,139,124,158,226,113,180,190,248,108, 44,
+194,110, 72,173, 47,222, 94, 44,235,242, 14,130, 83,206, 18,168,148,255,155,117, 40,101,170, 30,154,227,191, 34,184, 76, 18, 90,
+ 94, 94, 94, 54, 78, 22,170, 95, 62, 29,249,177,101,244,189,171, 72, 12,191,142, 63, 46, 70,100,236, 57,112, 48, 61, 47, 45,121,
+100, 37, 68, 86,209, 48,159,189, 75, 53,248,212,249,179,208, 82, 90, 56, 2, 0,124,234, 52, 3,107,110, 93,217, 33,143, 63, 89,
+179,170, 34,178,138,191,176, 75,139,161, 53,102,204, 24,108,218,180, 9, 45, 91,182,132,175,175,111,209,203,190,178, 86,179,146,
+214,165,170,204, 54, 44,142,156,156, 28,120,123,123, 99,227,198,141,120,240,224, 1, 44, 45, 45, 49,120,240, 96,228,228,228, 20,
+ 9, 44, 83,157,225, 41,165, 79, 79,159, 62,221,116,224,192,129, 84, 42,149,146,204,204, 76,216,216,216, 96,205,154, 53,121, 9,
+ 9, 9,193, 85, 16, 89, 3,100, 50,217,148, 65,131, 6,177,254,254,254, 72, 74, 74,130,149,149,149,145, 16, 34, 5, 0, 27, 27,
+ 27,163,153,153, 25,198,142, 29,139, 6, 13, 26,180,158, 54,109, 90, 75,119,119,247, 53,113,113,113, 91,203,171, 75,132,144,162,
+ 6,117,228,202, 71,208,235,243,133,202,218,181,107, 81,224,235,246,191, 33,130,200, 72,192,132,153, 44, 22, 22, 22,240,245,245,
+ 45,181,236, 91,183,110,141, 91,183,110,229, 15, 77, 74, 36,112,114,114,194, 31,127,252, 97,210, 76,170,194, 64,144,161,161,161,
+168,227,227,128, 7,103, 79,195, 65, 37, 69, 3, 55, 23,120,180,110,139,136,136,136,127,204,154, 85, 16,155,106, 28,128,142, 5,
+117,112, 51,128, 49,197,182,215, 80, 74,127,170, 12, 39,199,113,148, 97, 24,242,242,229, 75,131, 74,165, 34,118,118,118, 18,133,
+ 66, 1,157, 78, 87, 36,184,158, 62,125,138, 99,199,142, 33, 54, 54, 22,118,118,118,140,181,181, 53, 12, 6, 67,134, 41,252,126,
+126,126,112,113,113,121,197,241,125,228,200,145, 85, 18, 89,195,129,192, 77,223, 45,170,166, 96, 88,235, 58, 14, 93,241,252,209,
+ 11, 45,163,135,242,255,131,200, 2,128,140,140,140, 13, 0, 54, 20,110, 59, 58, 58,142, 96, 89,118,150,181,181,181,245,133, 11,
+ 23,108, 28, 29, 29,201,214,173, 91,141,115,230,204,201,100, 89, 54,131, 16,178,252,159, 23,135, 8, 79,205,138,244,150,218,186,
+ 9,247,180,244,202,164,151, 51,106,103, 72,107, 57,146,186,129,232,147,252,240,242, 8, 46,178, 69, 82, 66, 34, 67, 33,132,151,
+243, 14,222, 60,227,171, 5, 95, 70, 60,186,227,165,180, 82, 98,204,216,175, 16,124,242, 60, 8, 35,197,165, 43,215,161, 55,240,
+ 72, 77,207,194,160, 33, 67,225,225,234,128,240,107,167, 82, 56, 65, 88,243,118,137,108, 97,117,231, 94, 35,108, 21,102,170,130,
+123,194, 99,251,207, 83,192, 48, 43, 49,119,238, 92, 4, 6, 6,142, 39,132,124, 93, 81, 28, 45, 66,132,213,245,218, 14,177,149,
+ 41,242,121,168,192, 99,227,190, 25, 5,113,180, 38, 99,205,134, 3,245,234,250, 60,159, 95, 94, 28,173,183, 69,100, 21,255,174,
+ 80,104, 85,171, 86, 77, 97, 46,197,104, 59, 51,217,180, 79, 63,232,237,152, 28, 25,134,216,135,119,242,135, 23, 12, 26, 67, 66,
+ 68,184,175, 9, 23,237, 88, 34,126, 7, 45,111,232, 74,171, 53,162,178,156,133, 13,110, 73,107, 86,101, 68, 86,105,156,197,197,
+ 86,241,184, 89,158,158,158, 88,184,112, 97,133,113,180, 74,201,123,225,254, 46, 0,234, 23,138, 45,228, 59,195,119, 49,101,166,
+ 97, 89,156,142,142,142, 72, 75,203,143,144,208,174, 93, 59,180,107,247,191,249, 12, 6,131,161,200,138,101,105,105,249, 39,139,
+ 86,105,156,102,102,102, 51, 14, 30, 60,248,241,149, 43, 87, 6, 78,157, 58, 85,218,161, 67,135, 66, 49,167,166, 38,172,237, 86,
+146,147,231,249,177,167, 78,157, 98, 5, 65,192,198,141, 27,113,235,214, 45,170, 82,169,102,171, 84,170,213,102,102,102,188, 70,
+163, 25, 51,106,212,168,161,243,231,207,103, 90,183,110,141,171, 87,175, 50,213,171, 87, 31, 6, 96,107, 69,121,191,126,253, 58,
+ 24,134, 1,151, 30,131,241, 51,246,192,220, 76,130, 71,143, 30, 33, 61, 61,253, 79, 65, 76, 77,185,159,197, 45, 37,133,159,214,
+173, 91, 23, 13, 67, 54,111,222, 28, 44,203,226,238,221,187,165, 14,195,150,224,164,246,246,246, 69,245, 67, 38,147,225,252,249,
+243,248,230,155,111,224,101,103,131,140,135, 15,224,210,238, 61,116,250,120, 20, 6, 15, 30, 12,150,101, 97,103,103, 87,100,249,
+173, 40,239,175,249, 66, 40,206,249,113,157, 58,117,134,133,135,135,123,212,171, 87,207, 53, 52, 52,180,125, 96, 96,160,247,131,
+ 7, 15, 10,183, 21, 48,193, 55,167, 56,231,205,155, 55,247,175, 94,189,122,236,240,225,195,101,130, 32,240,209,209,209, 70, 0,
+196,197,197,133,189,121,243,166,112,244,232, 81,104, 52, 26,120,120,120, 48,238,238,238,228,204,153, 51,194,195,135, 15,175, 83,
+ 74,191, 50, 37,239, 60,207,191, 18,198,161,240,247,206,157, 59, 43,253,188, 87,171,237,247,125,135, 54,254,158,169,241,119,145,
+ 16, 23, 9, 62,203,209,112,236,240,111,186,202,136,172,191,161,140,254, 78,206, 5, 79,158, 60,113,215,233,116,144,203,229, 88,
+187,118,173, 97,225,194,133,225,169,169,169,173,104, 41, 51,202, 75,114, 86,113,214, 97,122, 57,156,127,154,117,152,149,134,224,
+195, 71,110, 54,181,232,179, 25,227,227, 83,138, 28, 27, 41, 33,118, 7,157, 3, 90,169,154,213,139, 99,142,207, 99,114,120,117,
+112, 89,233,164,148,234, 9, 33, 3,250,244, 29,114,110,247,238, 93, 22,115,230,205,195, 31,215, 31, 32, 45, 51, 23, 2,101, 33,
+ 16,130, 89,179,230,192,197,193, 14,217,241, 79,212, 58,131,161, 79,201,165,120,254,235,229, 78, 8, 51,225,204,209,173, 43, 25,
+ 2, 33, 47,233,177,130,205,137, 84,125, 56,184,143,100,192,128, 1, 56,120,240, 32, 66, 67, 67,215,151, 37,178,138,115, 82,202,
+ 76,120,112, 97,207, 74, 2, 8,154,148,199, 10, 73,238,115,213,176, 15,250, 72, 6, 15, 30,140, 67,199,174, 96,247,111,207,215,
+237, 58, 74,127,123,155, 59, 44, 85,138, 12,111, 41, 65,104,171,128, 26,238,173, 27,213, 85, 74,120, 13, 98, 31, 70, 34, 61, 79,
+139, 51, 97,209,153, 12,101,170, 28, 91, 39,255, 5, 41, 67, 76,204,147, 63,253,151,153,169, 44,104,208, 43,183,172, 20,195, 48,
+175, 88,179, 94,199,146, 85, 60,157,206,206,206,175, 44,231, 82,188,225, 46,244, 1,170, 66,104,135, 25, 49, 49, 49, 86, 49, 49,
+ 49,160,148,226,250,245,235, 86,205,155, 55,159,241, 58,214,172, 41, 83,166, 20, 89,173, 74,126,151,182,175, 34, 20, 56,165,175,
+112,112,112,216, 55,109,218,180,241,205,155, 55,239, 60,111,222, 60, 2,128,173, 98, 5,228, 4, 65, 64, 72, 72, 8, 14, 30, 60,
+200, 27, 12,134,209,241,241,241,197,125, 29, 86,185,185,185,157,233,219,183,239,214,199,143, 31,179,225,225,225, 48, 69,208,105,
+ 52, 26,248,250,250,130,227, 56, 44, 30,239,137,156,156,122,224, 56, 14, 60,207,195,220,220,252,149,117, 46, 77, 41, 39,134, 97,
+192,243,252,159,132,214,245,235,215,193,178, 44, 90,181,106,133, 59,119,238, 20, 89,180, 42,178, 64, 25, 12,134, 24,103,103,103,
+231, 5, 11, 22, 20,165, 43, 37, 37, 5,167, 79,159,198, 59,239,182, 64,192,232, 49,136,143,143,199,242,229,203,225,230,230,134,
+239,191,255, 30,233,233,233,224, 56,238,239, 54,167,119, 11, 15, 15,247,248,224,131, 15,146, 31, 60,120,224,113,236,216, 49,155,
+ 30, 61,122,152, 15, 25, 50, 36,249,193,131, 7, 30,132,144, 22,168,164, 19, 52,207,243, 51, 9, 33, 39,191,255,254,251, 25,159,
+127,254,121,243,225,195,135, 75,165, 82,169, 16, 23, 23,199,237,218,181,139,248,250,250, 50, 50,153,140,156, 58,117, 74,184,113,
+227,198, 53,142,227, 22, 83, 74, 47, 85,198,226, 92, 92,100,177, 44,107,146,200, 42,137, 73, 78,138, 97,150, 76, 74,171,213,107,
+ 23, 50,254, 62, 30,134,109,187, 78,191,188,116,245,201, 51, 86,199, 77,250, 5,120,134,255,135, 96, 89,118,111,157, 58,117, 70,
+ 76,152, 48,193,172, 75,151, 46,138,249,243,231,103,229,228,228,148, 42,178,202,120, 46,255,242, 89,135, 0,126,158, 57,245,216,
+164, 47,234,141,168,241,137, 75, 53,156,205, 75, 70,134,132,101,172,108, 24, 52,242,102,145,147,250,212,241,183,115, 91, 94,160,
+130,184,108,148,210,155,132,144,142,117,235, 53, 60,176,248,251,197, 78,179,167, 79,147, 30, 56,118, 2,148, 51,224,250,133, 11,
+176,144,241,244,225,237,179, 73, 58,131,190,247,219,184, 4, 79,252,229, 85,187, 9, 33, 71,236,236,236,238,125, 60,124,184,111,
+157, 58, 67,160, 82,169,176,127,255,126,108, 95,181,138, 95, 1, 12,220, 64,200,157, 49,249, 49,245,202, 68,210,213, 34,158,187,
+163, 62,254,216,175, 81,163, 79,160, 82,169,176,111,223, 62,108, 93,177,194,100,158,255,184, 53,171, 48, 50,124,112,193,183, 9,
+113,180, 24,146,115,237, 73,116,238,245, 39,209,185, 16, 40, 21, 40,213, 49, 12, 94,230, 25, 12,223, 71, 60,139, 61, 85,197,132,
+ 64, 16, 4,124,251,221,132, 55,153,185, 34,241, 83,213, 41,221,165, 52, 18,177,197,215, 72,171,104, 65,105, 0, 48, 26,141,177,
+ 38,210, 47,242,242,250,211, 26,168,139,170,154,214,194,225, 64, 83, 69,150,169,113,180, 0, 32, 53, 53, 53, 1,192,108, 87, 87,
+215,157,157, 59,119, 30, 5, 32,174,138,101,180,177,109,219,182,163, 1,176,132,144,245,113,113,113,127,114, 40,141,143,143,143,
+112,119,119,255,193,199,199,167,104,161,233,242, 56, 5, 65,120, 94,175, 94, 61, 67,105,101, 81,214,182, 32, 8, 21,150, 81,102,
+102, 38,154, 53,107,246,167, 53, 45, 41,165,136,142,142, 46,180, 56, 21,221,251,242, 4, 92,110,110,238,152,207, 62,251,108,131,
+ 84, 42,245, 2, 64, 10, 69, 46,207,243,236, 79, 63,253,164,228,121,158, 5, 64, 24,134,225,164, 82,169,246,224,193,131, 28,199,
+113, 49, 58,157,110,204,223,252,142,216, 71,242,151, 98,200, 11, 15, 15,247, 47,176,100,197,134,134,134,222,221,189,123,183, 35,
+128, 61, 85,172,155,151, 0, 92, 34,132,180, 94,187,118,237,204, 49, 99,198, 52, 27, 60,120,176,164, 93,187,118, 8, 14, 14,230,
+ 67, 66, 66,174,107, 52,154, 69,149, 17, 88, 5,101,153,229,233,233, 89, 36,184, 42,120,150,203,117,228,181,247, 86,172, 30, 58,
+206, 77,185,113,209,233,220,212,120,253, 21, 99,174,254,171, 45, 64, 40,254, 31, 35, 49, 49,113, 42, 33,100,206,242,229,203,227,
+ 27, 52,104,160,144,201,100,122, 83, 69,214,223,104, 61,224, 8, 33,221,127,236,212,255, 72,219, 89,159,249,116,106,223, 74,229,
+ 89,205,201,253, 97,100, 18,158, 94, 13,206,187,247,219,119, 81, 84,151,209,139, 82,202,153,192,117,131, 16, 82,107,202,180, 41,
+133,139, 74,215,239,112,230, 48,253,127,180,168,244,183, 63,252,240,131,111,157, 58,117,176,127,255,126,156,217,177, 3,131, 82,
+ 83,113,158,101, 89, 70, 38,179,255,205, 96, 88, 10,211, 2, 23,127,187,108,217, 50,191,192,192, 64,236,221,187, 23,167,182,110,
+197,192,170,241,148,133,166, 0, 28, 11,155, 39, 0,143, 1, 52, 6, 96, 6, 64,135,252,165,157, 28,138, 29,159, 86,240, 95,225,
+255, 23, 1,252,149,142,176, 21, 71,134, 47,137, 7, 79, 94, 52,126,211,169,208,104, 52,233,190,190,190,149,154,115,109, 52, 26,
+203, 29,195,229, 56, 46,182, 70,141, 26, 38, 91, 45, 76, 17, 69,105,105,105, 77,254,194, 23,196,107,249, 98,189,210,136, 8, 66,
+148,171,171,171, 80,216,232,151, 38,194, 74,219, 71,129, 23,149,185, 78, 66, 66,194, 99, 0, 95, 84, 53,157,113,113,113, 7, 96,
+194,162,209,166, 30, 7, 0,233,233,233,111,124, 49, 95, 66,105,220,252,249,243, 43, 37,176, 65,105, 92, 57,101,253, 0, 64,243,
+127,251, 91,182,112,233, 29, 66, 8, 19, 26, 26, 58,170, 96,120,251, 44,128,245, 5, 17,189, 95,151,191, 72,112,109,220,184,113,
+ 18,165, 20,217,217,217, 43, 42, 43,176,138,122,207, 73, 73,193,111, 42,239,233, 73,250,223,119,173,143,125, 79,147,105,152,180,
+ 41, 87,191, 21, 34, 10,203, 76,235,228,228,244,235,135, 31,126,248, 14,128, 45,175,203, 87,218,112,226, 27, 72,227, 11, 66, 72,
+131,243, 83,190,249,248,188,141,101, 16,120,137, 63,244,204,111,208,167, 5, 3,248,197, 20,171,120,241,252, 34, 63, 76,201,178,
+255, 79,229, 92, 16,255,106,210,136, 17, 35, 48,103,206, 28,156, 90,186,212, 48,142,144, 44, 41, 64, 79,230,119, 52, 25, 2, 76,
+ 55,149,103,216,176, 97,152, 51,103, 14,142, 47, 94, 92, 37,158, 10,224, 72, 8, 57, 6, 0, 51,102,204,248,106,225,194,133,182,
+ 51,103,206,172,191,104,209,162,239, 11,182,195, 10,255, 47, 40,211, 30, 51,103,206,172, 91,236,255, 28, 0, 55,255,226,251, 89,
+106,100,248, 87,122,236,111,250, 3,160,163,200, 41,114,138,156, 34,167,200, 41,114,138,156, 34,231,107,126,130,242, 37, 75,217,
+223,101,253, 46,182, 15,255,196, 71, 34,246,221, 68,136, 16, 33, 66,132, 8, 17,255, 81,171,220,177,215,249,255, 13,166,163,208,
+ 71,171,184,165,116, 35,144, 63,221,189, 99, 25,166,212,202, 4,142,236, 88, 5,179,239, 89,145, 83,228, 20, 57, 69, 78,145, 83,
+228, 20, 57,255,127,113, 86,196, 93,198,249, 65,132,144, 99,148,210, 30,101,125, 23, 10,171,146,191,139,237,123, 99,110, 7,165,
+228,101,116, 89, 62, 90,226,208,161,200, 41,114,138,156, 34,167,200, 41,114,138,156,255,137,161, 67, 0,116,198,140, 25, 51,255,
+109, 67,135, 0, 92, 1,140, 46,254, 49, 97,232,112, 63, 27, 23, 7, 43,185, 92, 37, 3, 0,189, 94,109,112,119, 71, 54,208,255,
+ 31, 91,240, 86,196,127,214,180,235, 92, 32,234,147,222,228,177, 34, 68,136, 16, 33,226,255, 13, 82, 10, 45, 85, 0, 82, 0,144,
+130,109,125,193,119, 74, 65,219, 81,242,247, 43,255,255, 85,160,148, 38, 0, 40,117,182,188,164, 44,145,149,154,170,114,144, 72,
+ 50,252,120, 94, 91, 27, 0, 36, 18,230, 81,106,170,109,132,131,195,254,212,170,136, 45, 71,103,231,219, 82,150,117, 55,229, 88,
+ 35,207,199,165, 38, 37,189, 18, 58,158, 2,255,121,129,103,170,136,120, 29,177,241,119, 8, 21, 71, 71, 71,103,103,103,231,247,
+173,172,172,222,205,204,204,188,145,146,146,114,168,172,117, 15, 9, 33, 11, 9,193,180,130,223, 75, 40,165, 51,203, 73,187,201,
+199,150,114,174,175, 74,165, 26, 79, 8, 9, 44,200,127,168, 90,173, 94, 75, 41,125,242,255, 80,216,154, 1,232, 45,145, 72,134,
+ 57, 56, 56, 52, 75, 76, 76,156, 79, 41, 93, 94, 69, 46, 9,128, 41, 54, 54, 54,131,109,108,108,170,167,167,167, 63,203,206,206,
+222, 11, 96, 25,165,180,194,169,210, 95, 79,116,123,183, 93,151,118,179, 67, 78,133,124, 59,111,101,252,213, 63,253, 63,213,205,
+190,115,167,150,115, 66,126,187,178, 96,230,234,184,244, 74,166,141, 1, 80, 24, 52, 79, 40,232,181,210, 55,124, 47,165, 0,122,
+ 2,104, 7, 32, 4,192,111,166,228,187, 12,174,119, 0,124, 85,144,230,101,148,210,243,255,242,122,100,238,236,236,188, 24, 64,
+ 79,137, 68, 18, 30, 23, 23, 55,154, 82, 26,251, 15,167, 73,130,252,105,254,129,200, 15,195,113,211,148, 16, 14,166,192,193,193,
+161,135, 68, 34, 25, 95, 16,218,101,109,106,106,234,177,127,107,217, 40, 20,138, 21, 46, 46, 46,159,104, 52, 26, 53, 33,132, 22,
+143,247,200,113, 92,108, 74, 74, 74,147,183,240,213,118,243, 95,254,188,140, 46, 69,124,149, 29, 71, 43, 46, 14, 86, 18, 73,134,
+ 95,114,226,131, 65,241, 9,247, 7, 2,128,155,107,253,189, 78, 46,245,246,196,197,201, 13, 77, 59,245,181,144,170, 36,107, 89,
+ 86,218, 80,171,215, 57, 72, 37,210, 84, 3,103,188,203,232,233,248,132, 71, 7, 75, 13,182, 40,101, 89,247,168,136,243, 78,156,
+ 33, 29, 82,165, 27,164,102, 94,101, 38,216,205,205,173, 74, 25,181,179,171,105,105, 80, 40, 39, 73,165,108, 39,129,114,129, 84,
+ 0, 24, 34, 13,229,120,227, 57,153, 78,247, 99,122,122,100, 78, 85,111, 98,109, 7,226, 66,129,193, 32,232, 4,138, 51, 4,216,
+253, 40,149, 38, 86,162, 16, 76, 18, 17,175, 41, 54,138,159,187,156, 82, 58,245, 77, 87, 38, 15, 15, 15,219,126,253,250,173,248,
+230,155,111,204, 44, 44, 44, 72, 76, 76, 76,151,233,211,167,183,241,240,240,248, 34, 54, 54, 54,190,164,232, 35, 4,211, 4,129,
+ 50, 0,192, 48,100,186,179,179,179,138,101,217, 63,197, 54,226,121, 94, 69, 8, 38, 8, 2, 37, 5,199, 78, 35,132,172, 52, 69,
+ 48,154,153,153, 13,105,214,188,197, 23,139,127, 88,102,225,236,228,100,206,241,130,225, 69,116,148,106,246,140,169,205,205,204,
+204, 86,106, 52,154, 93, 85,120,104, 8,203,178,131, 20, 10, 69, 15, 0,117, 10,118, 63,212,233,116,199,120,158,223, 99,106,131,
+238,226,226,114,145,101,217,106,149,185, 54,207,243, 49,137,137,137,173,170,248,176, 15,240,242,242,250,165,109,219,182,170,102,
+205,154, 65, 46,151, 99,206,156, 57, 83, 0, 44, 55, 69, 80,169, 84,170, 65,230,230,230, 53,114,115,115, 35, 53, 26,205, 1,185,
+ 92,222,113,229,202,149,158, 45, 91,182,180, 76, 74, 74, 34, 44,203, 58, 31, 59,118,236,163, 85,171, 86,117, 33,132,116,168,168,
+145,203,138,164,179, 21, 61,235,180,206,138, 60, 63, 27, 64,183,146,255,115, 90,229, 48,202,122,246,208,208, 59, 47, 81,137,169,
+245,132, 16, 70, 42,149,174,116,113,113, 25,161,213,106,181,200,143,189, 70,157,157,157,139, 26, 28, 0,208,235,245, 25, 25, 25,
+ 25,254, 85,184,143,254, 0, 70,218,216,216,140,248,242,203, 47,109,187,117,235,134, 29, 59,118,124,186,105,211,166, 12, 66,200,
+175, 0,126,166,148, 62,174, 36,237,180,196,196,196,238, 82,169,148,120,122,122,178, 0,206, 87, 34, 61,126, 0,102, 21, 52, 54,
+107, 41,165, 60, 33,164, 61,144,255,188, 3, 88, 82, 40,220, 88,150, 93,235,239,239,255,254,195,135, 15,215, 81, 74,191,173,234,
+179,238,226,226,178, 97,205,154, 53, 3,123,245,234,197,166,164,164,184, 55,104,208, 96, 39,128,214,111,160, 65,250, 88,161, 80,
+ 76,174, 95,191,126,192,227,199,143, 35,178,179,179,151, 21,220, 79, 90,206, 57, 30, 0, 58,218,216,216,116,152, 53,107,150, 69,
+143, 30, 61,176,113,227,198,238,155, 54,109,202, 37,132,156, 3,112,246,117, 69,160, 68, 34, 25, 31, 27, 27,235, 64, 41,133,171,
+171,235,120, 84,176,184,249, 63, 5,150,101, 87, 14, 26, 52,104,196,206,157, 59, 85, 81, 81, 81, 42,119,119,247,162,224,217,132,
+144, 42,183,159, 34, 94,219,162,181,177, 80,112,153, 20, 71, 75, 46, 87,201,120, 94, 91, 59, 62,225,254,192, 54,109,127,178, 6,
+128,139, 23, 62, 27,232,228, 82, 55, 84, 46, 87, 69, 40,172,148, 7,251,246,236,216,176,127,143,182,196,195,213, 9,177, 9,201,
+206, 63,239, 62,213,245,216,169,243, 7,145, 31, 64,172, 84,112,134,116,152, 25,206,226,241,229, 85,112,104, 23,143,213,199, 99,
+113,245,222, 11,168,179, 82, 81,205,197, 12, 63, 76,234, 12, 23, 91, 85,149, 50,105,225,236,215,158, 81,170,246,124, 48,228, 67,
+235,247,123,215,145,122,187,184,128, 82, 5, 34, 34,115, 91,156, 56,125,190,233,129,125,187,198, 91, 56,251, 13,202, 77,138, 48,
+249,229,214,216,141,152,229, 25,208, 91,194,146,143, 90, 55,175,219, 97, 72,247,214, 76, 64,157, 90, 8, 15,123,216,249,200,239,
+215,127, 8,112,102,206,113, 60,221,102, 46,195,225,219,241,101, 7,244, 43, 77,112,116,234,212,169,181, 66,161, 48, 20, 63, 78,
+167,211,201, 8,193, 59, 85, 17, 27,133,215,208,235,117,140, 84, 42, 7,195,144, 47,234,215,175, 95, 39, 53, 53,245, 60, 33,228,
+151,184,184,202, 89, 11, 62, 39, 68,158, 33,145, 52,102, 20, 10, 87, 94,175,183, 7, 0, 34,151,103,120,216,218,214,155,245,213,
+ 87, 22, 44,203, 10,105,105,105, 80,171,213,100,212,168, 81,202,200,200,200,190, 0, 86, 85,144, 70,108,218,180,201,207,213,213,
+ 85, 95,242,191,132,132, 4,121,175, 94,239, 87,229,165,237,247,206,187, 45, 39,159, 58,117,178, 78,118,122,134,118,211,242, 13,
+183,141, 74,149,174,122, 29,127,233,218,141, 91,173, 71,143, 24,250, 25, 33,228, 46,165, 52,162, 18,156, 94,102,102,102, 7,151,
+ 46, 93, 26,216,190,125,123,169,147,147, 19,146,146,146,240,240,225,195,192,223,127,255,189,247,214,173, 91,167, 16, 66,250, 82,
+ 74, 77,137,224,238,123,110,219, 47, 78,230,118,246,224,141, 70,184,213,111, 84, 20,223,236,233,239,167,193, 25, 12, 16,140, 70,
+212,233,209, 59,223, 44, 35, 8, 8, 8, 8,168, 82,212, 93, 66,136, 91,221,186,117,183,127,255,253,247, 50,157, 78,135,235,215,
+175,227,252,249,243, 66, 66, 66,194,162,138, 68, 22, 33,228,244,188,121,243, 60, 90,181,106,101,153,154,154, 10,158,231, 29, 14,
+ 31, 62, 60,190, 81,163, 70, 86,158,158,158,242,109,219,182, 33, 55, 55, 23, 28,199,217,213,168, 81,195,110,200,144, 33,250,109,
+219,182, 77, 1,176,184, 44, 75, 86,118, 36,157,157, 72,106,116,245,111, 60, 12,137,228,100,215, 47,186,185,158,176,170, 73,138,
+ 44, 91,221,106,214,180,172, 81,219,124,186,133, 85, 61,187,236,184,179,211,187,213,172,185,233, 68,100,197,157, 33, 66, 8,195,
+ 48,204,202,190,125,251,126,176,123,247,110,213,195,135, 15, 85,117,234,212,129, 32, 8, 69, 17,248, 11, 3,206,250,250,250, 86,
+229, 62, 46, 26, 59,118,236,244,129, 3, 7,162,126,253,250, 69, 65, 81,231,206,157,139,233,211,167,219, 94,188,120,113,202,174,
+ 93,187,166, 16, 66, 22, 83, 74,103, 84,166, 45, 47,222, 94, 86, 50, 89, 95, 63,127,254,124,192,193,131, 7,135, 78,155, 54,205,
+ 23,192, 4, 0,115,210,210,210,218, 2,128,189,189,189, 28,192,121, 66,200,199, 95,126,249,229,184, 25, 51,102,160,123,247,238,
+115, 8, 33,223, 85,197,202, 71, 8, 97, 29, 28, 28,186,247,234,213,139, 53, 26,141, 48, 55, 55,135,209,104,172,249,154, 2,139,
+ 0, 88, 51,102,204,152,113, 99,199,142,133,173,173, 45,140, 70,163,223,238,221,187, 55,205,153, 51,231, 93, 66,200,200,210,210,
+ 74, 8, 25, 54,110,220,184,126, 31,126,248, 33,154, 52,105, 2,137, 36,255, 54, 46, 93,186, 20, 11, 22, 44,176, 56,125,250,116,
+239,109,219,182,245, 38,132, 28,160,148, 86, 57, 22,154, 32, 8,144, 72, 36,120,249,242, 37,156,156,156, 20,118,118,118,167, 8,
+ 33, 27,211,210,210, 14,253,139,172, 38, 75, 6, 13, 26,244,193,206,157, 59, 45, 0,224,135, 31,126,192,228,201,147,225,236,236,
+ 12, 11, 11, 11, 81,237,252, 75, 44, 90, 37,227,104, 85, 41,188,131, 90,173,110, 52,243,243,143,192, 48,249,189,198, 90,213,189,
+176,240,171,209,228,200,177, 83,141,202, 59, 79,170,116,195,227,203,171,160,240,156, 4,157,145,195,181,123,207,113,230,135, 46,
+ 0, 0,191,110,179,160, 51,116, 40, 84,134,118,114, 51,179, 37,122,158,255, 3, 46, 46,215, 17, 29,157, 82,145,200,114,116,113,
+ 62,182,126,253, 98,179,192,154,254, 48,112, 70,196, 37,199,129, 16, 5, 60,220, 45,241,241,176,110,210,182,109,221, 28,190,254,
+122, 67,176,185,163, 95,159,188,148,136, 10, 3,134,250, 59,146, 45,173, 27,249, 14, 28, 18,212, 74, 81, 47,176, 46,100, 10,179,
+255, 9,176, 38, 77,208,184, 73, 19,102, 70,110, 78,167, 27, 55,111,119,218,127,250,154,206,223,145,236,125,156, 66,135,151, 87,
+ 14,197, 5,199,196,137, 19, 81,216,251, 46, 68, 82, 82, 18,126,255,253, 92,169,231,152, 90,214,197,175,241,221,119,223, 89,102,
+100,100,116,219,188,121,243,123,174,174,174,223, 37, 36, 36, 92, 54,133,228, 35, 66,170, 65,161,232, 48, 98,217, 50,161,225,251,
+239,179, 54, 46, 46,140,192,243, 36,254,217, 51,251,229,171, 86,181, 75,127,250,212, 44,207,206, 46, 61, 67,163, 81, 71, 68, 68,
+ 64,169, 84, 18,137, 68,210,180, 20,133,159, 68, 8, 89,194, 48,100, 58, 33, 4, 10,133, 50, 98,236,216,177,119, 10,254,174,246,
+219,111,191,169,122,246,236,169, 6, 16,149,111, 14, 87,186,179, 44,227,151,239, 64,136, 37,166, 8, 76,115,115,243,207,191,253,
+126,177,121,118,122,166,198,144,151,103,116,180,178, 32,196,194,146,205,206,202,201,137, 75, 72,209,205,154,191,128, 29,243,241,
+135,159, 3, 24,111,170,200,106,208,160,193,141,131, 7, 15, 58,217,219,219, 35, 51, 51, 19,105,105,105,184,113,227, 6, 4, 65,
+ 64,223,190,125, 21, 45,154, 55,107,244,213,172,217, 87, 9, 33,239,154, 34,182,204,237, 28,240, 67,171,134,249,141,117, 84, 90,
+ 81,249,108, 28,208,163,232,152, 5,177, 89, 0, 0,165, 82,249, 58, 75, 72,189,219,161, 67, 7, 25, 0,140, 28, 57, 50, 59, 39,
+ 39,103, 33,128,157,180,156,160,170, 5,152, 50,123,246,108,247,234,213,171,123,239,220,185, 19,185,185,185, 0,224, 84,189,122,
+117,248,251,251,243, 33, 33, 33,240,243,243,131,165,165, 37, 46, 94,188,136,107,215,174,161,113,227,198,150, 50,153,108, 96, 89,
+ 66,171, 93,151,118,179, 21, 61,235,180,246,111, 60, 12, 22, 86,174,216,180,107, 15, 30,223,222,218, 90,103,120, 56,123,225, 4,
+247, 15, 53, 84, 49,220,195,215,114, 70,181, 38,109,237,107,213,125, 31,222,141,239, 56,104,249, 75,207,231,124, 90, 99,145, 68,
+169,221, 58,111,105,124, 90, 89, 34, 11,192, 15,125,251,246, 29,176,123,247,110, 27, 0,120,240,224, 1,146,146,146,224,232,232,
+ 8,165, 82, 9,169, 84, 90,180, 62,105, 21, 49,124,237,218,181, 69,162,141,227,184,162, 85, 0, 84, 42, 21,218,180,105,131,134,
+ 13, 27,226,208,161, 67,195, 1,204, 40, 37,141,173,154, 55,111,190,195,219,219,219,179,248,254,160,160, 32, 12, 30, 60, 24, 0,
+208,182,109,219, 14,253,251,247,167,133,130, 48, 33, 33, 33,247,230,205,155,157, 40,165,215, 75, 75, 16,195, 48,154,184,184, 56,
+124,249,229,151,120,241,226,197,167,132,144,104, 0, 74,185, 92, 94,212, 63, 38,132,248,213,173, 91,119,229,228,201,147, 17, 25,
+ 25,137,240,240,240, 27, 85, 29, 74,165,148,242, 62, 62, 62, 79,141, 70, 99, 19,142,227,160,209,104,208,167, 79, 31,165,157,157,
+ 93, 18,203,178,143, 82, 83, 83,135, 22,248,164,152,218, 8, 41, 1, 44, 27, 59,118,236,184,105,211,166,225,220,185,115, 56,114,
+228, 8, 62,252,240, 67, 76,154, 52, 9, 22, 22, 22, 35, 38, 77,154,116, 21,249, 11,154,151, 68,135,181,107,215,130,231,249, 63,
+ 61, 27, 74,165, 18,173, 90,181, 66, 64, 64, 0,142, 28, 57,210, 1,197,214, 71,173,100, 35,233,221,183,111, 95,185, 32, 8,200,
+203,203, 67, 72, 72,136,133,153,153,153,133,135,135,199, 40, 0,255, 26,161,229,237,237, 61,118,247,238,221, 22,197, 71,127, 20,
+ 10, 5,138,213, 3, 17,255,176, 69,171,162, 30, 86, 17,244,122,181, 65, 34, 97, 30,185,185,214,223,123,241,194,103, 69, 67,135,
+ 0,243, 72,175, 87, 27, 0,128, 23, 40,178,213, 28,204, 20, 12,162, 18,115, 16,246, 44,181,180, 11,191, 50, 69, 83,106,230, 5,
+ 69,179, 40, 80, 74,161, 55,240,208,101, 37, 98, 97,176, 26, 15, 99,181,208,231,101, 64,111,200,119,195,114,112,112,144,156, 58,
+117, 98,242,217,179,191,143,251,245,215, 95,217, 88,107,235,112,100,101, 53, 42,141,211,206,174,166,165,196,220,108,239,186,245,
+115,204, 40,251, 12, 17, 49,121,168,229,209, 12, 14, 54,158, 72, 76,205,195, 31,225,199,241,232,201, 49, 84,119,245,198,164,207,
+187, 42,191,253,126,231, 30, 91,219,234, 94, 25, 25,207,179,203, 74,103, 1,134,109, 56, 25, 1, 46,253, 25,248,180, 72,240, 57,
+241,127, 22,120,142, 94,104,220,222, 29,142,158, 53, 21,195, 39, 45, 24, 6, 96,120,105,156,148,210, 36,150,101,215, 49, 12, 25,
+ 71, 8, 65,253,250, 13, 98,151, 45, 91,102, 40,229,154,134,250,245, 27,196,178, 44,227,145,255, 98,103,214, 10, 2,159, 84, 65,
+ 58, 95, 17, 53,114,185, 98, 90,190,217,223,245,101,112,112,176, 97,192,128, 1, 88,186,116,169,124,250,244,233,179, 60, 60, 60,
+ 70,150, 28,222, 43,201,217,151, 16, 47,247,154, 53, 59,127,247,199, 31, 84,106, 52,146,244, 27, 55,178, 51, 19, 18,184,196,156,
+ 28,249,190, 71,143,186,127, 50,117,170,220,211,211, 19,151,143, 29,179, 79,201,203,163,153, 58,157, 38, 51, 51,147,114, 28,119,
+163,140,188,207,116,118,118, 86,109,218,180,201,111,236,216,177,119,226,227,227,103, 22,188, 32, 22, 2, 8, 0, 16, 85,108, 31,
+214,175,223, 19, 55,106,212,168,136,164,164,164,153,229,165,179, 24,234, 58, 57, 58,169,118,109,216,118,223,206,210,140,113,244,
+112, 99,164, 54, 54, 18, 78,110, 38, 19, 0, 77,117,207,154,230, 0,234,150,113,207,206,150,236,113,155,153,153, 29, 60,122,244,
+168,147, 84, 42, 5,207,243,112,116,116,196,139, 23, 47,144,153,153,137,156,156, 28, 60,127,244, 16, 62,158,158,248,122,198,116,
+215, 9,211,103, 28, 36,132, 52, 41,222,152,149,186, 0,178,209,240, 39,203, 94, 25, 11,145,191,242,109, 74,185,151,192,139,152,
+152, 24, 88, 88, 88, 32, 48, 48,208,226,143, 63,254,184, 84,150,200, 42,177, 8,240,192,150, 45, 91, 90,238,218,181, 11,141, 27,
+ 55,134,181,181, 53, 66, 66, 66,240,224,193, 3, 24, 12, 6, 38, 55, 55, 23,150,150,150, 88,180,104, 17,188,189,189,145,157,157,
+141,152,152, 24,123,169, 84,234, 80, 22,103,200,169,144,111,179, 34,207,207, 78, 36, 39,187,110,218,181, 7,163,134, 12,130, 11,
+125,118,201,186, 38,249,182,115,207,150,115, 41,235,217,195,220,178,190,173,111, 96, 79,200,228, 22,152, 48,109, 1, 34, 66,127,
+179, 85,231,220,255,148,240, 47, 61, 1, 76, 44,201, 89, 96, 17, 97, 60, 61, 61, 63,217,183,111,159,101,177,161,148,162, 53, 15,
+139, 47, 2, 95,214,130,239,166,220, 79, 66, 8, 94,188,120, 1, 39, 39, 39, 88, 88, 88, 20, 45, 32,254,240,225, 67, 92,187,118,
+ 13,133,171, 81,148,193, 57,244,236,217,179,158,230,230,230, 37,143, 65,106,106, 42, 56,142,131, 74,165, 2,207,243, 48, 24, 12,
+ 48, 26,141,208,106,181, 22, 1, 1, 1,227, 1, 92, 47,141, 83, 16,132, 47, 6, 14, 28,216,242,250,245,235, 53, 86,173, 90, 5,
+189, 94,255, 67, 98, 98, 34,250,245,235, 7, 65, 16,208,161, 67,135,119, 40,165,143,103,205,154, 5, 0,152, 60,121,178, 49, 47,
+ 47,111,108, 85,242, 94,144,255,128,254,253,251,215, 56,119,238, 28, 90,183,110, 13,157, 78,135,165, 75,151, 90,173, 95,191,222,
+106,219,182,109,142,211,166, 77,251, 5, 64,151,242, 56, 11,202,235, 7, 23, 23,151,113, 67,134, 12, 49, 43, 88,195, 20, 91,183,
+110,197,215, 95,127,189, 27,192,172, 19, 39, 78,204, 59,114,228,200,176, 79, 62,249, 4, 95,127,253,245,164, 66,161, 85, 26,231,
+243,231,207,225,232,232, 8, 43, 43,171,252,151,165,193,128,187,119,239,226,204,153, 51,168, 93,187,182, 41, 13,225,217,114, 68,
+214, 47,187,118,237,178,124,249,242, 37, 46, 94,188, 8, 31, 31, 31,168,213,234, 10,215,134,125,211,139, 63, 87,196,169,209,104,
+180, 49, 49, 49, 22,139, 23, 47,134,171,171, 43,188,189,189,161, 84, 42, 65, 8,129,209,104, 44,115,121, 53, 83,210,217,174, 29,
+145,164,198,217,246,178,182,177,253,148, 82, 42,201,202,202,216, 96, 64,230,254,200, 72,170,255,187,242,254, 31,183,104, 53,162,
+148,222, 41,190,230, 97, 97,103, 68, 2, 0,193,193,193, 52, 40, 40,136, 20,126,187,187, 35, 59, 53,213, 54,194,201,165,222, 30,
+ 39,151,186, 5,235,126, 49,143, 88,214, 54,194,217, 89,157, 13, 0, 6,142,226,202,163, 76,220,127,154,136, 7, 79, 19, 97,174,
+ 48,205,248,162, 51,112,249,243, 51, 41,133, 54,247,127,157, 86,131, 58, 3, 58, 67,190,187,135, 94,167, 70, 86, 74, 56, 25,208,
+167,147,114,220,184, 49,112,117,117,119, 44,139,207,160, 80, 78,154, 48,185,187,141,157,141, 20,199,254, 56,137,119,106,247,129,
+ 82, 33, 69, 90,150, 22, 32,192,147,103,103, 0,193, 18,161, 17, 49,104, 94, 87,133, 46,157,235, 88, 28,218,255,120, 42,128, 57,
+166,164,151,139,189, 1,153,111, 55, 72,121, 35,140,169,143, 33,100, 70, 3,230, 46,208, 16, 11,164, 37, 68,227,209,165, 3,249,
+ 19, 78, 43, 0,207,243,159, 58, 58, 58,102,206,154, 53,171, 93,173, 90,181, 12,227,199,143,191, 23, 21, 21,245,202,178, 54,213,
+170, 85,251,113,237,218,181,120,250,244,105,220,119,223,125, 23,146,146,146, 50,187,146, 15,232, 12, 66,200,138,130,161,184,255,
+ 99,239,170,195,163, 58,222,238,153,245,221,100,227, 46, 36, 72, 8, 16,220,157, 16,164, 72,128,226, 94,180, 80,220, 75,176,226,
+ 36, 45,174,197,138,123,177,226, 78,144,224, 16,129, 64,128, 16, 79,136,251,250,189,119,190, 63, 34, 13, 33,178, 1,250,253,108,
+207,243,236,179,123,247,222,125,119,238,204,220,153, 51,231,157,121, 39,229,204,153, 51,141,253,253,253,167,111,216,176,193,110,
+202,148, 41,226, 41, 83,166,140, 6,176,188, 44,119,161,177, 68,210,105,229,157, 59,148,137,141, 85, 31,220,188, 89,188, 53, 32,
+ 96,129,150,227, 28,173,109,109, 73,171,230,205,115,141,120,188,148,212,196, 68,198,166, 90, 53,126,196,181,107, 86, 84, 38,139,
+191,116,233, 82, 86, 78, 78, 78,169, 91,231,240,249,124, 69, 73,238,194,146,224,224,224,160, 41,105, 14, 87, 25,149, 59,139,163,
+ 84,107, 94,181, 42,253,174, 99,203,234,239,222,132,135, 75,205,205,249,238,213,171,212,124,249, 58,226, 49,101, 89, 21, 33, 36,
+ 75, 31, 91,124, 62,127,208,134, 13, 27,234,153,154,154,130,227, 56,152,153,153, 33, 57, 57, 25, 26,141, 6, 89, 89, 89,208,100,
+103, 66,147,153,137,224,168, 8,180,110,223, 30, 3,186,126,231,113,224,204, 95,131, 0, 28, 45,203,174, 99,253, 70,133, 74,214,
+178,202, 86,127,251,130, 98, 50, 10, 73,215,175,141,220, 33,146,203,209,121,166,207,215, 52,208,207,197, 98,241,197,190,125,251,
+118,159, 61,123, 54, 47, 33, 33,225, 50, 33,164, 53,165,244, 85,153,138,176, 92,238,150,146,146,130,236,236,108,152,153,153, 97,
+195,134, 13,176,179,179,131, 66,161,192,147, 39, 79,168,179,179, 51,185,117,235, 22,156,157,157,145,146,146, 2,173, 86,139,220,
+220,220,143, 26,141,166, 84,119,121,190,123,176,219,204,110, 14,151,222, 60,219,223,214,137,124,120, 50,112,150,231,187, 55,193,
+175,163,175, 94,187,191,156, 81, 73, 99, 50, 98,175,207,173,218,244,185,245,164, 57, 75,177,101,245, 98,188,121,116, 39,205,206,
+ 37,107,171,140,168,247, 53,239, 92,122,122,115,115,115, 85,175, 95,191, 54, 9, 12, 12, 4, 33, 4,102,102,102, 48, 50, 50, 42,
+145,108,125, 65, 99,201, 43,242, 63,200,205,205,133, 72, 36,130,149,149, 21,118,239,222, 93,216,241, 86,169, 82,165, 44, 51, 59,
+ 58,119,238, 60,200,197,197,197,164,232,151, 77,155, 54,197,248,241,227,241,251,239,191, 35, 32, 32,224,147,253, 52, 63,126,252,
+152,160,211,233,246,149, 81,182, 25,132,144,174,125,250,244,121,118,247,238, 93,211,221,187,119,131, 97,152, 18, 95,187,118,237,
+194,195,135, 15, 23, 81, 74, 95,127, 97,135, 81,171, 95,191,126,119, 14, 29, 58,100,158,156,156,140,148,148, 20,228,228,228, 32,
+ 55, 55, 23, 44,203,162,102,205,154,132, 97,152,154,229,229, 35,159,207, 63,179,121,243,230,158, 63,254,248, 35, 4, 2, 1, 52,
+ 26, 13, 54,111,222,140,185,115,231, 38, 2, 24, 73, 41,213, 18, 66, 22,236,219,183,111, 68,175, 94,189,208,160, 65, 3,143,178,
+108,230,228,228, 32, 39, 39, 7, 66,161, 16,246,246,246, 88,177, 98, 5, 52,154,188,102,165, 70,141, 26,133, 46, 79, 0, 59,106,
+212,168,209, 51, 44, 44,108, 13,165,244,183, 82,218,153, 62,148,210,113, 44,203,102,247,237,219,215,234,200,145, 35, 38,113,113,
+113,120,246,236, 25, 22, 45, 90,148,206,113, 28,203,113, 28, 81, 42,149, 31,236,236,236,158, 73, 36, 18,153, 66,161, 72, 75, 77,
+ 77, 93, 69, 41,189,252, 47,236,204,137, 80, 40,196,152, 49, 99, 32, 16, 8, 32,147,201,160, 82,169,160,211,233, 10,201, 60, 42,
+232,150,118,119, 55,177, 18, 64,244, 99,141, 26,237,166, 15,152,214,195,198,193,209, 9,230,166, 18,132,134,190,106,125,243,198,
+181,205,181,107,218,108,231, 52,186,237,175, 35, 50,254,241,205,238,139,115,145,255, 48,174,213, 8,192,115, 20,217,243, 16,249,
+171, 16, 75,105,137,250,179,214,214,127,166,196,197,137,181, 98,177, 81, 88,129,202,149, 71,178,250,179,192, 17, 48, 90, 93,126,
+ 67, 65,243, 95,122, 18, 45, 29,139,119,111, 66,112,247,234, 95,176, 86,196, 33,229, 67, 67, 64, 84, 15, 26,101, 38, 84, 26,109,
+254,232,141, 69,224,179, 27,200,202, 76, 67,221, 38, 61, 0, 30,239, 97,105,246,204,172, 72,143, 86,141,235,243,223, 69,135,160,
+105,141,254,168,230,220, 22, 81, 9, 89,200,200, 81, 35, 61, 75,133,134,117,125,144,156,174, 68,150, 66,133, 87,239, 14,192,201,
+177, 26,143, 8,194, 59,234, 75,180,212,175, 78, 65,253,250, 44, 68,174,173, 33,174,217, 11,124,215, 54,136, 14,186,133,192, 75,
+235, 17,251,242, 30, 40,199,194,161, 70, 51,125, 31,146,205,151, 47, 95,110,214,186,117,107, 65,167, 78,157, 26, 56, 58, 58, 54,
+136,143,143, 15,204, 87,115, 26,116,239,222,189,129,141,141, 13, 54,110,220,168, 36,132,108,254,194,206,182,168,187,237,177,157,
+157,221,202, 83,167, 78,109, 30, 63,126, 60,108,109,109,235,149,245,219,100,161,176,193,200, 85,171,168,144,207,167, 71,183,108,
+ 17, 45,189,124,121,237,222,125,251, 68, 29,188,188, 8,165, 20, 47, 94,188, 48,250,117,203, 22,163,161,223,127, 31, 25,149,148,
+196,248, 7, 4,104, 19, 98, 99,179,147,114,115,151,198,199,199,127,252, 87,212,108,157, 78,247,224, 67,196, 7,167, 38,205, 27,
+218, 60, 15,253,240,178, 75,135, 86,173,120, 60, 30,239, 77,120, 84,128,141,141,169,209,181,171,215,180, 58,157,238,129, 62,182,
+ 36, 18, 73,143, 14, 29, 58, 8,210,211,211,225,232,232,136,228,228,100,196,197,197,229, 41, 14,153,233,208,102,102, 66,151,149,
+ 1, 54, 55, 7, 31,158, 60, 70,195,106, 85, 37, 39,242, 38,203, 31, 45,167, 76, 74, 84,170,138, 42, 91, 98, 19, 19,136,229,114,
+144, 10,186, 13, 9, 33,223,155,155,155,207,205,200,200,184, 72, 41, 93,161,213,106, 39,207,157, 59,183,233,166, 77,155,172, 87,
+174, 92,105, 58,110,220,184, 19,132,144,134,148, 82,117, 25, 29,216,123,134, 97,172, 1,216,222,184,113, 3,182,182,182,200,204,
+204, 44, 80, 90, 52, 10,133, 66,154,154,154, 10,181, 90, 13,141, 70, 3, 83, 83, 83, 60,125,250, 52,157, 97,152,191,202, 75,159,
+169, 27, 89,161,214,134, 46,180,242, 48,142,215, 50, 22,158, 73,105, 92,250,226, 53,241,203, 0,172,237,230,230,182, 75,203,221,
+249,240, 54,228,156, 69,196,147,219,105,241,111,115,171,237,186, 16,158, 93, 70, 62, 82, 66, 8, 71, 8,161, 53,106,212, 64,114,
+114, 50,248,124, 62,140,140,140, 32,151,203, 49,111,222, 60,108,222,188,185,194, 68,139, 16, 34, 53, 54, 54, 94,197,227,241, 6,
+153,153,153,217,176, 44, 11, 31, 31, 31,244,236,217, 19, 98,177, 24, 90,173,182, 80,209, 44, 80,169,202, 82, 58, 40,165, 47, 0,
+152, 22,251, 15, 47,107,107,235,155,106,181, 26,225,225,225, 56,115,230, 76,123, 74,169,127, 5,159,237,112, 66, 72,215, 54,109,
+218,236,111,220,184,177, 27,165, 20,245,234,213,195,224,193,131,113,224,192, 1, 4, 6, 6, 34, 51, 51,147,187,118,237,218, 94,
+ 0,107, 42,218,129,231,231,111,205,126,253,250,221, 59,124,248,176, 69,106,106, 42,148, 74, 37,114,115,115,113,226,196, 9,180,
+110,221, 26,214,214,214, 56,116,232, 16, 67, 41, 61, 87, 22,201,226,241,120,187,183,111,223,222,115,236,216,177,216,186,117, 43,
+142, 30, 61,138, 94,189,122, 97,208,160, 65, 72, 78, 78,182, 91,189,122,245, 8, 66,200,110, 0,139, 7, 15, 30,140,156,156, 28,
+ 60,121,242, 36, 84,207,103, 30, 25, 25, 25,200,200,200,128, 76, 38, 43,250,140, 17, 0, 7,214,175, 95, 63,100,250,244,233,168,
+ 86,173,218,226,252, 69, 65,159,173, 18,229, 56,238,167,184,184, 56, 11,129, 64, 96,197, 48, 12, 98, 98, 98,240,244,233, 83, 76,
+154, 52, 41, 45, 45, 45,109, 60,165, 52,138, 16,178, 96,204,152, 49, 43,102,206,156, 89, 88,151,102,206,156,121,158, 16,210,245,
+255, 91,205,169, 89,211,162,142,152, 47,153, 38, 18, 9,173,210,211,211, 11,219, 14,141, 70, 3,181, 90,253,137,146, 37, 18, 9,
+173,154, 53,114,189,160, 84,100,207,127, 25,150, 94,234, 6,233,181,171,155,215, 55, 50, 54,155,238,221,117,192,176,239,186,246,
+230, 51, 58, 29,174, 92, 57,135, 63,254,216, 6,175, 54, 53, 80,173,122, 61, 76,153, 58,205, 76,173, 97,124,174, 93,187, 60,183,
+ 85,179,170,151,179,179, 50,230,149,101,243,127, 28, 23,242,201,213,133, 18, 93,135, 37, 51,200,254,172,147, 19,210,243, 31, 28,
+107, 11, 11,139, 45, 44,203,122, 1, 63, 66, 40,183,199,171,167,143,144,150, 46,132, 90,201,130,163,121,100, 75, 47,226,162,214,
+224,206,149,179,216,176,126, 45, 82, 83, 83,209,166, 93,123,228, 8, 42,193,165,146, 11, 84, 74, 69,254, 67, 3,104, 53, 58,216,
+216,185,226,249,243, 64, 93, 86,110,110,169, 13,146, 72,170,245,112,177,171, 1,181,182, 37,164, 98, 49, 50,179, 53, 72,207, 39,
+ 89,135,254, 28, 8,181, 66, 9, 70,163, 5,163,209,193,198,165, 31,106,217,117, 0,199,158,171, 83,161,236,227, 88,104, 35,238,
+ 64, 27,113, 7,178,150, 83,241,151,239,144, 98, 13,160,126,251,238, 38, 37, 37, 37, 57, 58, 58,158,123,241,226, 69,159,129, 3,
+ 7,226,214,173, 91,227, 0, 76,200,119,223,140, 27, 56,112, 32, 94,188,120,129,151, 47, 95,158, 75, 74, 74,250, 38, 27,175,138,
+197, 98,165, 90,157,215,199, 26, 25, 25, 73,203,185,214,169,105,223,190,188,204,231,207,179,214,223,191,191,120,215,238,221,162,
+ 78, 29, 59, 18, 29,195,128, 99, 89, 84,119,119, 39,223,125,247,157,241,129,227,199,173,248, 58,221,195, 57,147, 39,223,248,125,
+248,240,236, 71, 57, 57,250, 78, 52,175,156,239, 50, 4,128,202,101,124,167, 55,212,106,245,166,159,126, 28,213,201,255,206,189,
+ 74, 46,149,156, 76,175, 92,243, 15,148,200,196,188,106, 85,220,248,233,153,105,130,101,139,231,203,212,106,181,190,164,213,195,
+218,218, 26, 31, 63,126,196,187,119,239,160, 86,171,161,211,233,192, 41,114,161, 73,207,128, 38, 51, 13, 68,165,132,132,101,161,
+ 74, 73, 68,229,106, 85,129,191, 87, 36,150,235,138, 42,137,104, 21,188, 75, 77, 77, 33, 50,150,131, 39, 20,234,189, 57, 58, 33,
+164,113,179,102,205,142,159, 60,121, 82, 52,122,244,232,230,132,144, 45,249, 29, 68,199, 69,139, 22, 61,222,178,101,139,100,252,
+248,241, 53,215,172, 89, 51, 2,192,142,210,236,168, 84,170,227, 23, 46, 92, 24,234,234,234,106, 27, 28, 28, 12,149, 74, 5,142,
+227,208,173, 91, 55, 0, 40,172, 51,111,222,188, 81,170, 84,170,164,144,144,144,172,168,168, 40, 13,244, 88, 37,184,120, 99,252,
+131,153, 3,156,251,218,217, 59, 61,148,202, 42, 87,161, 57,207,251,204, 28,224,188,122,221,137, 88,213,165,247,239,179, 23, 77,
+170,230,151,155, 29, 52,201,220, 57,103,235,165,115,225,250,172, 10,166, 5,203,217,173,172,172, 32, 16, 8, 32, 20, 10, 33, 18,
+137, 64, 8,193,212,169, 83,177,115,231,206, 50, 93,135,197, 73,150,137,137,201,203,165, 75,151, 58,143, 31, 63, 94, 36,149, 74,
+145,158,158,142, 67,135, 14, 97,204,152, 49,248,227,143, 63, 74,156,255, 82,158, 75,169, 4,181,116,250,240,225,195,161,209,104,
+ 48,120,240, 96,236,218,181,107, 58, 0,255,138,214,119, 74,233, 67, 66,136,123, 96, 96,160, 41,128, 94,131, 6, 13,218,215,175,
+ 95, 63,248,251,251,227,220,185,115,237, 1,132, 1, 80, 2,240,205,223,196,217,183,172,133, 32,249, 33, 28,182,217,216,216,244,
+170, 83,167, 78, 96,191,126,253,234, 30, 62,124,216, 60, 41, 41,169, 96,241, 3, 34, 34, 34,176,103,207,158,132,221,187,119,103,
+177, 44,107,197,227,241, 46,100,100,100,204, 43,195, 93,184,123,253,250,245,163,242,221,129, 56,121,242, 36, 93,187,118, 45, 89,
+180,104, 17,210,211,211,225,229,229,133,237,219,183, 79,203,201,201,105,176,118,237,218, 31, 7, 12, 24,128,101,203,150, 33, 55,
+ 55,119,125,121,131,149, 50,200, 23, 1,208,106,253,250,245,174,211,167, 79,199,201,147, 39,209,184,113, 99,217,135, 15, 31,126,
+ 7, 48,182,164,242,163,148,226,195,135, 15, 80, 40, 20,184,119,239, 30, 22, 47, 94,156, 94,132,100, 77,155, 48, 97,194,138,105,
+211,166, 97,213,170, 85, 52, 56, 56, 56,169, 95,191,126,118, 59,119,238,228, 87,175, 94,125, 26,242, 54, 93,255,127, 65, 45,119,
+ 43,191,102, 77, 61,231, 58, 56, 85,199,161,195, 71,144,150,150, 86,152, 39, 5,249, 66, 41, 69,118,118, 54, 62,126,252, 8, 51,
+ 83, 19,172, 94,179,162,251,196,113,163, 42, 33, 47, 12,198,231, 13,157,155,229,154,254,131,199,206, 26, 60,116, 20,130, 3,159,
+225,192,190, 29, 8, 9,126, 81,104,143,209,105, 17, 22,250, 20, 97,161, 79, 97,103,239,138,239, 58,181, 39, 67,134, 12,233, 54,
+124,232, 32, 27, 0,255, 88,232,136,255, 96, 53,235,179, 56, 90, 69,231,108, 9,202,147,235,242, 73,214,203, 99,199,142, 89,181,
+105,211,134,207, 48, 12, 46, 95,185,130, 73, 19,126,192,136,225, 62,208,194, 2,140, 70, 4, 78, 36,213, 43, 49, 74,165, 2, 20,
+ 20,185,185,185, 8, 8, 8, 0,229, 24, 28,216,185, 22,148,114,133, 68, 11,160,208,104,181,112,114,169,137,109,187, 86, 50, 16,
+ 10, 31,151,102, 47, 43,149,207,234, 24,138,184,164,104, 68, 39,132,192,204,196, 5, 2,161, 11, 82, 51, 20, 16,240,236,161, 83,
+189, 1,155, 47,171, 42,114, 99,161,212,126, 93,249,177,153,159,171,167,180, 2,141,174, 82,169, 60,120,240,224,193,238,235,214,
+173, 19,123,123,123,215,112,116,116,108, 5, 0,253,251,247,175, 97,106,106,138,131, 7, 15,106,148, 74,229,193,111,168,248,116,
+104,214,172, 25,210,211,211, 17, 17, 17, 17, 88,230,189,105, 52, 86,114, 91, 91,126,210,173, 91,186,228,244,244, 74, 29, 58,116,
+ 32, 58,134, 1,143, 16,164,101,102, 34, 42, 50, 18,230,230,230,228,229,155, 55,242,205, 83,166,156,174, 81,183,174,160, 96, 69,
+162, 62, 56,119,238,156, 17,242,230,101,149,249, 93, 5, 43,119, 46, 33,100,212,228,201,147, 79, 31, 60,120,200, 44, 49, 41, 49,
+ 76, 34, 22, 51,114,185,212,113,248,176,137,130,140,140,140,161,148,210, 28,125,237,165,167,167,227,195,135, 15,144,201,100, 16,
+ 9,133,224,148, 10,176,185, 57, 80,165, 37,131,175,213, 64,204,178,176, 52,146,160,146,157, 29, 92,108,172,245,178,249,238,230,
+213,194,137,239, 69,221,133,171,155,121, 64,108, 44,135,216, 68,142,137,231,111,231,143, 70, 69,192,162,229,250,144, 44,107, 39,
+ 39,167,191, 14, 31, 62, 44, 74, 78, 78,198,139, 23, 47, 2, 41,165,153,132, 16, 19, 0, 92,104,104,232,245,144,144,144, 30,249,
+171,238,202, 91, 45,182,246,212,169, 83,157,219,180,105,195, 84,169, 82,197, 56, 49, 49,209, 37, 53, 53,149, 36, 36,124, 58,215,
+249,226,197,139, 82,165, 82,153,203,113,220,105,228,197,129, 42, 55,126,209,204, 1,206,210,128,231,152,234,217,165,114, 61, 83,
+235,250, 72, 99,158,215,123, 24,152, 48,117,230, 0,231, 77,235, 78,196,170,100, 68,189,143,176, 49,149, 4, 82,213,126, 61,203,
+155, 90, 91, 91, 35, 52, 52, 20, 1, 1, 1,136,138,138,194,135, 15, 31, 62, 33, 84,227,198,141,195,129, 3, 7,244, 82,180,140,
+141,141, 87, 45, 89,178,196,121,250,244,233,162, 34,164, 8,147, 39, 79, 70,102,102, 38,118,237,218,133,201,147, 39, 87,184,227,
+ 47, 86, 86, 85, 59,119,238,236,237,224,224,128,212,212, 84,216,219,219,163, 77,155, 54, 61, 9, 33, 85, 40,165, 17, 95, 88,245,
+ 39,118,233,210,101,197,210,165, 75,161,211,233, 48,102,204, 24,188,125,251,246,248,219,183,111, 55,184,184,184, 76,253,249,231,
+159,237,236,236,236, 48,112,224, 64, 99, 0,125, 75, 51, 98,105,105,233,187, 99,199,142,161,222,222,222, 60,173, 86,219,238,230,
+205,155,136,140,140,132, 70,163, 1,195, 48,120,255,254, 61, 38, 79,158,156,144,154,154,234, 73, 41,125,175, 71,186, 70, 47, 88,
+176, 96,212,212,169, 83,241,235,175,191, 98,201,146, 37,123,205,204,204,234, 54,108,216,176,209,146, 37, 75, 48,103,206, 28,184,
+186,186,194,202,202,170,214,162, 69,139, 60,102,206,156,137, 77,155, 54, 97,241,226,197,123, 1,236,249,146,140,224, 56,142,248,
+249,249, 53, 88,191,126,189, 67, 1,201,226,241,120, 56,118,236, 24,158, 63,127,222,179,148,223,108,183,183,183, 31,231,224,224,
+ 32,190,118,237,154,220,213,213, 21, 12,195,232,242, 73,214,102, 23, 23,151, 73,239,223,191,135,183,183, 55,194,195,195, 15, 82,
+ 74, 71,120,122,122,230,206,156, 57,211, 72, 38,147,153,253,127,118,224,124, 30, 25,185,106,217, 28, 60,121,254, 6,167, 78,137,
+240,228,201, 19,216,217,217, 65, 34,145,128, 82, 10,181, 90,141,228,228,100,232,180,106,212,171, 83, 21,251,119,251, 33, 41, 41,
+ 25,224,145, 82,167,220, 16, 30, 25, 54,234,135, 62,184,123,239, 10,126,255,125, 7,114,114,114, 75, 25,124, 75, 81,189,134, 7,
+156, 28,109, 17, 19, 27, 3,194,131,245, 63,121,175,255,225,174,195,130,231, 93,191,240, 14, 69, 97,110,110,190,225,232,209,163,
+ 86, 94, 94, 94,252,220,220, 92,112, 28,135,182,109,218, 96,234,244,233, 56,119,248, 48,220,155, 15, 6,209,200,193, 24,233,183,
+234, 65,165, 84,160,118,163, 86, 24, 48,112, 16,162,163,162,208,165, 71, 63,168, 84,138,194, 17, 70,129,162,165,209,104, 97,109,
+ 91, 9, 87,175, 94,229, 99,204,152, 82,231,152,176, 90,113, 80,216,123, 85,235, 12,229,115, 4, 60, 57, 0,173, 90,139,122,245,
+ 22, 65,203, 89,193,214,121, 28,116,186, 51,200, 74,190,153,231,198,176,242, 66,108,116, 52,120,124,209,203, 47,205, 68, 46, 55,
+249,171, 26,221,140,140,140, 76, 71, 71,199, 63, 3, 2, 2,134,245,237,219, 23, 87,175, 94,253, 17, 0,250,246,237,139,128,128,
+ 0,124,248,240,225,207,140,140,140,204,111, 81,224,142,142,142,189,188,188,188, 6, 55,109,218, 20,231,207,159, 7,165,244,174,
+ 94, 15,182, 80, 72,121, 60, 30, 56,142, 3, 1,144,154,145,129,183,111,223, 34, 53, 37, 5, 58,157, 14,185, 57, 57,156, 71,141,
+ 26, 57,148,227, 76, 42,146,158,162, 43, 12, 81,194,170,195,130,239,190,128,108, 69,201,229,242,232,236,156, 28, 27, 11,115,139,
+108,177, 88,204,166,103,100,100,190,122, 25,172,209,179,115, 40, 64,104, 72, 72, 72,221,248,248,120, 68, 71, 71,131,201,205, 6,
+ 95,173, 1, 79,173, 64,199, 86, 45, 33, 3,133, 20, 28,132,156, 14, 66,190, 16,217,121,171,243,202,117,119, 20, 16,253,162,202,
+ 22, 33, 36,207, 93,104,108, 12,177,220,228, 19,133, 75,159,250, 36,145, 72, 14,159, 56,113,194,193,201,201, 9,203,150, 45,131,
+179,179,115,173,122,245,234, 41,218,182,109, 43,179,179,179, 67,237,218,181,209,170, 85, 43, 92,186,116, 9, 0,222,151,147,127,
+ 12, 33,228,187,187,119,239,206,186,127,255,254, 0, 66, 8,241,241,241, 65,215,174, 93, 33,149, 74,161, 80, 40,144,158,158,142,
+157, 59,119, 18, 74,105,163,252,180,186, 74,165,210, 35,132,144, 88,165, 82, 57,176,184,205, 3,235,235, 59, 38,165,113, 99,236,
+236,157,250,120,118,169, 92,175, 67,151, 78,168,234,222, 1, 29,186, 68, 3,128,159,165, 32,114,240,234,133,117, 79, 91, 87,178,
+220,115,245,242,181,197,109, 60, 59, 44,240, 25,111,177,194,111, 71,122,150, 30, 13, 25, 56,142,251, 36,118, 80,241,243, 35, 70,
+140,192,177, 99,199,202,205, 71, 30,143, 55,104,252,248,241,162,162,223, 21,184,140,123,244,232,129,190,125,251,126, 66,180,172,
+173,173, 97,111,111,143,200,200, 72, 0, 72,213,179, 94, 77, 29, 61,122, 52, 81, 42,149, 24, 59,118, 44,118,237,218,133,193,131,
+ 7, 19,127,127,255,169, 0,166, 87,180,190,243,120,188,213, 63,255,252,243,172,201,147, 39, 35, 45, 45, 13, 23, 47, 94, 68,183,
+110,221,112,236,216, 49,155,139, 23, 47,174,242,242,242, 2,159,207,199,249,243,231,193, 48, 76,153,177,190, 68, 34, 81, 47,111,
+111,111, 94, 76, 76, 12, 68, 34, 17,154, 52,105,130,216,216, 88, 40, 20, 10,196,197,197, 97,218,180,105, 31, 83, 83, 83,219,235,
+251, 28,137, 68,162,233, 83,167, 78,197,209,163, 71,225,227,227,179, 15,192,216,204,204,204, 1,247,239,223, 63,250,253,247,223,
+ 35, 46, 46, 14,167, 79,159,198,226,197,139,201,136, 17, 35,176,117,235, 86, 76,155, 54,109, 47,128,177,101,172,144,204, 78, 74,
+ 74, 50,115,115,115, 67, 98, 98, 34,114,114,114,112,250,244,105,219, 75,151, 46, 85,113,114,114, 50,253,240,225, 3,187,124,249,
+114,241,244,233,211,177, 97,195, 6,188,120,241, 2, 7, 14, 28, 64,135, 14, 29,152,240,240,240, 18, 85,178,252,144, 13,167, 45,
+ 45, 45,175, 25, 27, 27, 35, 59, 59,187, 96,101,233,108, 31, 31,159,201,190,190,121, 34,123,124,124, 60, 70,142, 28, 57,156, 16,
+194, 45, 93,186,212, 72, 36, 18, 65,165, 82,229,254,127,118,220, 28,203, 1,224, 80,165,146, 28, 87,206,237,198,179,192,112, 60,
+ 11, 12,129, 88,146, 55, 9, 94,169, 84,160, 81,189,234,104,222,164, 25,226, 19,226,112,240,192,110, 88, 90, 59,149,217,142, 80,
+ 74, 33, 18,176,240,168, 97,143,195, 7,118,224,252,197, 27, 56,112,240, 72,225,156, 55,129, 64,136,134,141,154,163, 73,147, 54,
+ 8,255,240, 30,187,119,255, 14, 27,219, 74, 6,231,224, 23,162,208,117, 88,244,189, 24,243,239,208,166, 77, 27,126, 78, 78, 14,
+ 84, 42, 21, 62,126,252,136,200,200, 72,152, 91,152, 35, 60, 62, 2,237,141,180,248,200,101, 33, 52,240, 37, 75,248,194, 23,229,
+ 74,131,158, 13, 1,207,134,152, 52,122,112,233,149, 0, 20,198,166,214,121,174, 27,134,121,135, 77,155, 74, 29, 57, 51,172,238,
+250,149,107, 55,155,141, 30,209, 75,120,245,230, 46,232, 52, 28,148, 58, 51,228,170, 52,200,213, 10,193, 51,235, 6,164,248,131,
+ 47,144,160, 69,131,234, 56,125,234,146,150, 50,186, 27,122,103,144, 93, 93, 48,137, 33, 69,136,214,167, 30, 61,169,137,165,222,
+174,195,194,142,151,101,143, 29, 58,116,168,119,203,150, 45,141,188,188,188,220,242, 59, 78,237,161, 67,135, 20, 44,203, 30,171,
+104, 33, 22,143, 6,239,224,224,208, 72, 36, 18, 13,238,213,171, 87,163, 81,163, 70,225,213,171, 87, 56,120,240, 96, 88,245,234,
+213,203,140, 33,198, 23,139, 83,115,146,146,204,229, 85,170, 8, 44, 76, 76,226, 47, 93,188,232,218,169,115,103, 18, 29, 29,141,
+212,212, 84,168, 84, 42,188, 8, 12,164, 66, 62, 63,150,152,154,242,222, 60,127,206,227,139,197,169, 21, 72,106,100, 57,171, 14,
+125,191, 84,221,170,228, 96,225,182,216,231,167,170, 42,181,170,110, 86, 86, 22, 35, 16, 10,133,206,246,230, 81, 21,116, 67,158,
+191,126,253,122,239, 78,157, 58, 73,194,130, 94,128,201,204,132, 38, 51, 29, 34,142,133,101,163, 6,224,107,213,128, 70, 7, 39,
+ 15, 10, 85,134, 17,252, 31,189,209,169,213,234,114,131, 26, 22, 16, 45, 94, 49, 98, 32,150,203, 33, 49, 49,133, 68, 46, 47, 78,
+ 24, 72, 57,229,109,212,171, 87,175,142, 45, 90,180, 0,165, 20, 59,119,238,132, 86,171, 21,107,181, 90,104, 52, 26,104,181, 90,
+100,101,101,225,192,129, 3,216,182,109,219,125, 0,123,245, 32,171,140, 80, 40,156,204, 48,140,173, 68, 34,209,218,216,216,136,
+142, 31, 63, 94, 24,110,162, 97,195,134, 48, 54, 54, 86, 19, 66,180, 0, 96,111,111,175,219,183,111,159,224,251,239,191, 23,149,
+100,175,102,189, 90,115,170, 50, 22,158, 82, 89,229, 42,166,214,245, 81,213,189, 3, 0,160,115,143,209,168, 90,221, 5, 89, 41,
+ 65, 85, 84,202,200, 62, 34, 65,186,197,203, 77,113,175,100,222,117, 71,229, 38,221,126,139,146,151,247,151,216, 81,240,120,188,
+ 82,221,177,250,144, 44, 66, 8,207,204,204,204,166, 96,158, 79,126, 7,140,132,132, 4,132,134,134,162,102,205,154, 72, 75, 75,
+131,147,147, 19, 52, 26, 13,154, 54,109, 10,165, 82,137,245,235,215,227,222,189,123,247,145,191, 50,178,156,255,144,185,187,187,
+143,108,212,168, 17, 46, 94,188,136, 39, 79,158,196, 93,185,114,197,169, 77,155, 54,168, 82,165,202, 40, 66,200,124, 74, 75,143,
+193, 87,146,171,175, 93,187,118, 83, 38, 79,158,140,144,144, 16,252,244,211, 79,169, 49, 49, 49,167,143, 31, 63, 62,118,241,226,
+197,188, 46, 93,186, 32, 33, 33, 1,171, 87,175,102,239,221,187,183, 6,192,178,114,242,241,117, 76, 76,140,179, 74,165, 66, 90,
+ 90, 26, 24,134,129, 66,161,192,165, 75,151,112,224,192,129,196,124,146,245, 78,223,244, 53,104,208,160, 54,143,199,195,209,163,
+ 71, 1, 96, 33,165,148, 35,132,156,238,211,167, 79,220,242,229,203,157,230,205,155,135, 31,127,252, 17, 90,173, 22,191,254,250,
+ 43,230,205,155,119, 33,159,100,149,213,136,174,179,183,183, 31,247,211, 79, 63,213,154, 57,115, 38, 2, 2, 2,108,159, 62,125,
+218,228,197,139, 23,168, 84,169, 18, 82, 83, 83, 5, 86, 86, 86,216,176, 97, 3,102,204,152,113, 18, 64,202,131, 7, 15, 6,125,
+248,240,193,151, 82,186,186,156,252,220,238,228,228, 52,142, 82, 74, 21, 10, 69,164,143,143,207,234,149, 43, 87, 98,198,140, 25,
+120,249,242, 37, 50, 51, 51, 97, 98, 98, 66,126,254,249,231,145, 11, 23, 46,196,152, 49, 99,104,110,110,238,182,255,127,183, 20,
+ 11, 69,122, 8, 88,181, 5, 26,214,171,137,134,117, 43,227,202,205,103, 0,128,142,253,218, 64,145,155,141,125,251,118,226,221,
+187,183, 16, 8,133, 48,183,180,215, 71, 9,132, 38,235, 53, 50,180, 9,232,228,213, 4,221,186,180,199,222,253,199,192,232,180,
+ 24, 59,122, 40,210, 51, 50,176,127,255,110,132,127,120, 15,129, 80, 8, 43,235,127, 62, 16,106, 89, 92,228, 63,158,104,233,225,
+126, 2,199,113,136,139,139,195,211,167, 79, 17, 17, 17, 1, 35, 35, 35, 40, 25,150,251,253,250, 61,142, 16, 81, 44, 71,233,125,
+202, 20, 70, 41,254,220, 6,203,198, 21,137, 88,107,102, 97, 97, 33, 86,171,149, 96, 24, 93,145, 94,133, 0, 4, 16, 9, 0, 7,
+199,170,136,137,142,161, 42,149,234,118,153, 35, 40,181,106,195,217,211, 39, 38,183,106,221,198,186, 91,199,165, 56,125,102, 17,
+210,179,178,160,210, 10,145,171,210, 66,161, 2,204, 45,107,160,105,189,250,136,143, 79, 69,208, 19,255, 28,129, 90,161,207, 68,
+209,183,155, 23,140,118, 31, 61,105, 14,100,174,173,161, 14, 61, 13, 46, 39,177, 80,209,146,202, 45, 96,233,226,129,140, 92, 53,
+ 78,220,120, 6, 0,122,111,245,146,152,152,168,112,116,116, 60, 52,121,242,228, 95,159, 61,123,234, 12, 0,207,158, 61,139, 77,
+ 72, 72,152,155,152,152,168,168, 72, 1, 22,137, 6, 79,140,140,140,158, 85,175, 94, 61,222,219,219,219,172, 79,159, 62,176,182,
+182,198,139, 23, 47,224,235,235,251, 90,171,213,206,185,125,251,118,153,174, 30,141, 70, 19,247,236,204, 25,211,246, 63,252, 96,
+ 62,167,103,207,213,147, 39, 79,222,176,108,217, 50,161,187,187, 59,209,105,181, 8, 14, 14,166,135, 15, 29,210,109,155, 55,111,
+189,216,216, 88,240,248,236, 89, 33,163, 86,199,253,171, 43,177,179,179,179,103,247,174,158, 30,107,214,109,130, 74,153,131, 71,
+ 1, 23,144,158,158,140, 29, 59, 79,121, 56, 59, 59,123,198,198,198,250,235, 75,128,247,236,217, 51,171,121,163, 70,141,170, 85,
+170,132,224,168, 8,136, 57, 22, 34,134, 1, 95,171, 6,143, 81,161, 82, 93, 10,194, 51, 65,194,199, 44,172, 60,250,103,136, 62,
+196,184, 86,247, 94, 88, 22,155, 9, 66, 8,214,182,172, 11,177,137, 28, 34, 99, 57, 38,254,117,179,144, 24,156, 95, 54, 15, 98,
+185, 28,110,205,219,232,209,232, 82,133,137,137,201,211,224,224,224,166,117,235,214,197,172, 89,179, 16, 25, 25, 9,142,227,144,
+152,152,168, 74, 72, 72,136, 75, 78, 78,142, 68, 94,252,159, 93, 84,207,145, 0,195, 48,182,207,158, 61, 3, 0, 17, 0,220,184,
+113, 3,142,142,142, 48, 51, 51, 67, 86, 86, 22,230,204,153, 35,249,229,151, 95, 0, 0, 79,159, 62, 21, 22, 37, 40,197, 17,252,
+ 44,116, 77, 70, 54, 77,167, 57,207,251,164, 49,207,235,117,232, 18,131,206, 61, 70,225,218,249,189,184,121,229, 58, 44, 5,145,
+ 17, 48,206,190,148, 18,145,146, 21,155,235,190,221,163,241, 88,126, 66,238,149,237, 83,191,183,224, 59, 56,112, 39,124,182,101,
+102,148,149, 86,119,119,119,216,217,217, 21,206,209, 18, 8, 4, 24, 51,102, 12, 40,165,122,145,172,252,124,228, 76, 77, 77,147,
+ 85, 42,149,157, 84, 42,197,199,143, 31,241,254,253,123,132,135,135, 23,134, 14,224, 56, 78, 55,123,246,108,225,148, 41, 83,240,
+251,239,191,227,246,237,219,247, 1, 44,165,148,234, 59, 88, 27, 58,112,224, 64, 19,141, 70,131, 35, 71,142, 48, 0,122,156, 56,
+113,226,105,211,166, 77, 5, 93,187,118, 53,217,186,117,235, 80, 0,187, 42, 80,221,141, 77, 77, 77, 69, 90,173, 22, 91,183,110,
+ 69, 76, 76,140, 39,165, 52,148, 16,178,125,224,192,129,219,234,214,173, 91, 61, 36, 36,228,109, 78, 78,206, 68, 74,105,144, 30,
+109,209,232, 38, 77,154,156,224, 56,206,181, 83,167, 78,198,235,214,173, 51,125,243,230, 13,156,157,157,193,113, 92,112, 69,183,
+176,122,251,246,109,104, 66, 66,130, 71,251,246,237,113,233,210, 37, 63, 66,200, 42, 0,191, 78,152, 48,193, 41, 42, 42, 10,141,
+ 26, 53,130,165,165, 37,222,188,121,147,157,144,144,176, 13,192,252,242, 98,125, 81, 74, 63, 0,152, 75, 8,169,191,125,251,246,
+193,150,150,150, 45, 94,188,120,129,187,119,239, 98,205,154, 53,248,229,151, 95,208,182,109, 91,204,154, 53, 43, 5,192,224,124,
+151,182, 94,113,243, 10,148, 45, 0,104,210,164, 73,188,175,175, 47,198,142, 29, 75,255,248,227,143,141,135, 14, 29,154, 62,116,
+232,208,194, 62,112,228,200,145,244,224,193,131, 35,203, 90, 8,240, 15, 65,167,213,106, 96,106, 89, 21, 57, 25,209, 72,142, 9,
+128,145,137, 61,186,116,104, 0,133, 82,131,115,103, 79, 34, 40, 56, 16, 60, 30, 15,118,246,149, 96,110, 97,141,176,176,183, 0,
+240,170,108,155, 90,152, 88, 84, 70, 78,102, 12, 52, 73,207, 32,147,219, 98,212, 15,125,160, 80,106,113,234,244, 73,132,132, 4,
+129,207,231,195,222,161, 18,204,204,243,108, 18, 90,166, 77, 3, 80,114, 60,173,114,137, 22,159,207,191,117,249,242,229,254,205,
+155, 55, 23,188,123,247, 14,239,222,229, 13,110,210,211,211, 25, 2,246,207,196,160, 51, 67,202, 32, 1,157, 10, 86,103, 20,221,
+187, 80,110, 98, 18,247,230,117,168, 93,122, 90, 34, 2,159,223,195,187,176, 96, 68,132,135, 66,171, 85,129,207,227,129,199,231,
+161,114,213, 58,184,119, 63, 64,163, 98,152,128,210,108, 2, 64, 90,218,251,108,185, 93,141, 65, 43,150,205, 63, 63, 99,206, 18,
+217,128,254,191, 35,232,205, 43,228, 48,246,160, 20,176,183, 50, 70,195,106, 63, 35, 46, 62, 25, 71,247,110, 85,112, 90,237,176,
+162, 49,180, 74,178, 9, 0,118, 41,168,189,109,231,222, 49,187, 14, 28, 94, 50,103,202,120,187,239,251, 14,131, 56,237, 21,116,
+241,207, 80,181,105, 55, 16,137, 57, 46, 94,189, 9,255,167,175, 18, 57,150, 46,177, 75,197, 31,229,217, 44,230, 66,124,240,241,
+ 99,130,115,145, 40,240,206, 18,137,244, 65, 57,164,170, 83,177,184, 66,159, 68,156,231,243,121,141, 87,172, 88,161,179,179,179,
+211,134,132,132,224,247,223,127,231,158, 61,123,118,149,199,227,109,142,143,143, 87,149,103,211, 70,167, 11, 60,236,227, 83,187,
+ 89,223,190,116,200,148, 41, 10, 72, 36, 83, 87,175, 93,235,147,156,158,238, 72, 57, 14, 54,150,150,177,171,231,205,243,237, 63,
+112, 96,250,203,123,247,100, 1,103,206,200,196, 12,243,172,188,116,126, 35,191,119,169, 54, 99, 99, 99,253,221,221, 92,176,111,
+215, 58,104,181,106, 36,196,229, 9, 89, 41,169,153, 40,139,100, 21,183,153,191,234,170,239,194, 95,126,121,184,112,198,116,251,
+118, 29, 59, 33, 58,240, 5,180,105,201, 32, 58, 6, 66, 34, 64,110,146, 17,146, 18,115, 48,247,224,241,164, 28,133,162,111,241,
+ 78,162,180,116, 22, 40, 86, 18, 83, 19,136,140,229, 16,203, 77, 62, 81,177,164,166,166, 16, 27,203, 33, 16,139, 75, 82,105, 62,
+179,153,147,147,211,175,127,255,254, 65,143, 31, 63,182, 24, 59,118, 44, 90,181,106,245, 92,169, 84,122, 81, 74,179,191, 52, 63,
+ 5, 2, 65, 82,227,198,141,109,133, 66, 33, 51,102,204, 24, 65, 74, 74, 74, 97,100,245,156,156, 28, 92,186,116, 9, 53,107,230,
+173,234,127,249,242, 37,234,212,169, 83,170,205,177, 63, 7,199, 1, 88, 54,115,128,243,234,135,129, 9, 83, 1,248, 85,173, 94,
+ 9, 55,175, 92,199,221,155, 1, 62, 45,234,114,155,186, 15,107,186,220,200,107,224, 28,143,198, 99,249,114, 83, 7,236, 63,117,
+146, 31,250,108,247, 74,133, 34,216, 13,192,236,210,210, 73, 8, 1,165,244,179, 80, 14,124, 62, 31,135, 14, 29,170,232,189, 31,
+223,181,107,215,132,159,126,250, 73,148,144,144,128,215,175, 95, 35, 55, 55, 23, 82,169, 20, 87,174, 92, 97, 0,108, 61,116,232,
+208,149, 67,135, 14,117, 69, 94, 92,156, 27, 21,169,159,198,198,198,147,187,116,233,130,215,175, 95,227,201,147, 39, 39, 41,165,
+ 65,132,144,147,239,222,189, 27,212,182,109, 91,236,221,187,119,114,105, 68,171, 52,155, 28,199, 21,141,153,148,150, 95,119, 3,
+ 1,180,168,104,185,231, 79,224,109, 13, 0, 86, 86, 86, 49,118,118,118,166,129,129,129,112,113,113,129, 86,171,109, 94,209,186,
+148,153,153,185,110,243,230,205,127,140, 30, 61, 26,203,151, 47, 31,118,252,248,241, 97,221,187,119,135,183,183, 55,246,236,217,
+131,160,160, 32, 63,125,182, 21, 43,233,222,243,137, 99, 80,237,218,181, 39, 85,170, 84, 9,107,214,172, 65,112,112,176,239,178,
+101,203,230, 5, 5, 5,161,102,205,154,146, 87,175, 94, 49, 95,210,134, 0,128,169,169,169,169, 78,167,195,153, 51,103, 30, 81,
+ 74,103, 16, 66,108, 55,108,216, 48, 88, 46,151, 35, 45, 45, 77, 25, 18, 18, 50,148, 82,122,246,255,187,173,163,132, 44, 24,251,
+227,212,237, 63,142, 29, 42,109,210,184, 33, 20, 89,177, 80,230, 36, 66,145,253, 17,155,119, 93, 5, 33, 60,216,216, 56,192,214,
+222, 25, 81, 81,209,184,127,225,162, 38, 87,161,220, 32,214,113,126,101,219,156,146,103,179, 81,158, 77, 69,110, 18,148, 57, 73,
+133, 54,109,109, 29,243,109, 70,225, 94,192, 69,149, 50, 55,119,157,134,146,223,254,201,123,255, 79, 70,133,247, 58, 44,138,244,
+244,244,105,227,199,143,247,154, 59,119,174, 21,195, 48,124, 75, 75, 75, 68, 69, 69, 49,127,254,249,103, 90, 78, 78,206,180, 47,
+ 73,144, 64, 40, 12,114,175, 81,211,235,251,239,191,103,122,245,234, 41, 26, 62,186,171,192,198,214, 22,153, 25,169, 8,123,253,
+ 2,111, 94, 61,131,123,205, 6, 88,188,108, 61, 96,110, 94,238, 70,146, 57,137, 97,183,228,118, 53,122, 44, 93, 56,251, 88,107,
+207,239, 76,107,214,105, 32,106,232,102, 6,173,142, 65,108,108, 44,206,158, 9,212,134, 60,189,155,197, 49,154, 65,185,201,250,
+109,193,115, 59,111, 84,180,163,158, 29, 57,180,106,245,230, 89, 91,119,236,155, 51,119,234, 88,227,182,109, 58, 35,248,250, 94,
+156, 60,127, 44, 87,165,214,172, 22,241,177, 54, 56,133, 42, 42,154, 7, 42,149, 74, 91,124, 65,148, 74,165,210,126,109, 97,239,
+217,179, 7,137,137,137,154,200,200,200,203, 12,195, 28, 47,109,179,231,146,176,137, 82, 77, 95, 66,174, 47,108,211,166,235,194,
+ 43, 87,164, 35,127,254, 89, 51,108,248,240,217, 80,171,181, 16,139,169,192,216,152, 7,137, 68,248,242,222, 61,217,198, 9, 19,
+ 44,137, 70,115,109,111, 25, 97, 3, 74,192, 55, 95,117, 88, 68,209,194,200,177, 51,160, 44,162,104, 61,120, 18,134,138, 40, 90,
+249, 15, 70, 52, 33,164,197,212, 5, 11, 79, 13,234,210,209,163,174,107,101,137, 77,149,202,144,219,219, 35, 53, 57, 25,247,158,
+188,209, 45, 59,118, 42, 36,159,100,233, 21, 87,134,227,184,188, 73,238, 0, 58, 78,155, 11,194,231, 3,249, 97, 28, 10, 86, 14,
+ 85,105,218, 10, 68, 32, 0, 75, 57,168,213,106,170, 71, 58, 99, 9, 33,253,134, 13, 27,118,227,252,249,243,188, 46, 93,186, 52,
+ 60,125,250, 52,247, 53,117, 71,167,211, 57,231, 19,174, 44, 35, 35, 35,193,168, 81,163,160,211,233,160, 80, 40,144,153,153,137,
+208,208, 80,245,128, 1, 3, 36,249, 4, 66, 55,104,208,160,114,219,143,117, 39, 98, 85, 51, 7, 56,111,178, 20, 68, 14,206, 74,
+ 9,170, 98, 41,136,140,104, 81,151,219,180,238, 68,172,106,233, 12,243, 21, 41,145,254, 97, 9,185, 87,182,239, 63,117,146, 63,
+162, 79, 63,214, 89,254,214, 71,106, 75,255,236,208,179,220, 70,237,179,224,164,250,144,172,226,200,206,206,158,183,104,209, 34,
+239,244,244,116,231,174, 93,187,138, 60, 60, 60,240,240,225, 67,156, 63,127,158,121,240,224, 65, 76,110,110,238,124, 74,169, 10,
+192,213, 47,201,211, 26, 53,106, 84, 17, 8, 4, 5,174,180, 45,249, 95,111, 57,125,250,244,160,177, 99,199,162,114,229,202,181,
+ 9, 33, 18, 90,129,231,136, 82, 90,232,101,248,198, 29, 69,248,198,141, 27,157,236,237,237,201,165, 75,151, 24, 62,159, 95, 97,
+229,134, 82,186,135, 16,210, 92,167,211,253, 56,110,220, 56,120,122,122,130, 97, 24, 28, 60,120, 16,187,119,239,246,171,200,222,
+173,165, 33, 44, 44,236, 89, 76, 76, 76,187,217,179,103, 99,205,154, 53,243,102,207,158,141,152,152, 24,132,133,133,189,248, 26,
+187, 89, 89, 89,202,232,232,104,163,150, 45, 91, 54,113,113,113, 9, 25, 57,114,100,157,177, 99,199,194,207,207,143,222,190,125,
+187, 63,165,244,210,191,162, 3,127,253, 54,245, 64,189,106,118, 87,150,173, 88,247,139, 91,181, 42, 63,141, 25, 53,144, 95,195,
+189, 14,114, 51, 99, 97,101,109, 7,231, 74, 85,145,156,148,130,203,151, 47,177, 41, 41, 25,123, 88, 30, 89,250,246,109,106,252,
+215,216,116,114,174,138,164,164, 36, 92,188,120,145,205, 72,207,218, 9, 29,111,217,171,200,244, 68, 24, 80,174,146, 85,210,100,
+120,162,207,196,219,252,149,135, 27,243,194, 59,228,169, 92,233,233,233,211, 40,165, 41,250, 50,115, 82, 60,136,218,128, 1, 34,
+ 92,184, 80, 31, 58, 93, 11,115, 19,147,142,148,227,154, 54,104,208, 64, 62,112,224, 64,174, 77,155, 86, 98, 83, 83, 83, 82,187,
+118,221,172,204,140, 12, 75, 0,160, 0, 91, 30,139, 46,216, 84, 90,192, 23,118, 98, 89,109,189,188,180,150,191,169,180, 62,204,
+188,154, 29,177, 17,112, 88,204, 35,100, 20, 71,233, 94,134,135,165,225,137, 52,249, 75, 71, 79,197,220,126, 5, 91,206,204,171,
+232, 40,175,168,235,144,199,227, 31,112,112,112,152, 31, 27, 27,155, 68, 41,101,191, 84,217, 40,216,130,167,199,244,233,186,198,
+223,125,199, 88, 86,170,196, 81, 74,217,136,103,207,200,131,179,103,133, 15,206,158,149,234,212,234, 91, 39, 40, 13,215,199,166,
+163,163,163,239,185,115,231,244,158,123,213,179,103,207, 87, 5,243,182,244,205, 79,183,106,206, 87,170, 85,113,250,174, 90,149,
+ 60,247,116,120, 68, 60,194, 35,226,174,190, 15,143,237,242, 37,101, 84,116, 83,105,146, 31,194,129,234,177,169,116,113,155,214,
+214,214, 79, 5, 2,129,115, 69, 30, 88,150,101,227,147,147,147, 27,233,153,206, 33, 85,170, 84,241,139,138,138, 58,197,178,236,
+140,111,161, 16, 18, 66, 90,241,249,252,139, 44,203,202,138, 43, 94, 5,100,140, 16,226, 42,145, 72, 62,153, 12, 95,150,205,213,
+ 11,235,254,210,178,109,219, 62, 15,238,222, 61, 61,103, 69,200, 39,243,134,166,246,177, 28, 61,100,210,180,223,142,108,221,248,
+243,166,211,105,123,202, 85,155,237,236,110, 3,112, 47, 32, 92,122,228,101,147,114,148, 97,169,137,137,137, 47,128, 65, 28,199,
+ 89, 19, 66, 82, 40,165, 71,139,144,172, 47,206, 79, 62,159,239, 87,171, 86,173,105,111,222,188, 57,194, 48,204,152, 34,215,175,
+113,115,115,155, 20, 25, 25,185, 69,167,211,205,169,192,243,110,218,182,109,219,244,141, 27, 55,242,102,204,152, 1,127,127,127,
+ 75, 74,105,250, 55, 42,119,123, 11, 11,139, 63, 88,150,245,160,148,158,203,206,206,158, 71, 41,205,173,168,205,252, 16, 15,131,
+156,156,156,230,184,187,187,187,191,125,251, 54, 40, 46, 46,110,117,113, 53,232, 43,210,233,221,187,119,239,115, 27, 54,108, 32,
+149, 42, 85, 66, 76, 76, 12,166, 79,159, 78,207,156, 57,211,147, 82,122,225, 75,219,100, 66,200,130, 9, 19, 38,172, 24, 62,124,
+120, 33,161,245,245,245,165, 23, 46, 92, 24, 73, 41, 61,240,165,237,252,183, 84,239,107, 87,179,169, 70,249,236,202, 6,117, 61,
+250,255, 48,172, 15,121,240,228, 45, 30, 62, 8, 64,108,124,252,105,142,199,155, 31, 22,150,242,246,107,109, 6, 60, 9,195,195,
+128, 0,154, 16,159,112, 2,148,191,240, 85,120,114,248,255,215,189,255, 55,168, 90, 37,185, 14,201, 23,110,133, 85,225, 10, 67,
+244,137, 86,235,232,232,136,212,212,230, 82,129,160,141, 68, 34,241,226,241,249,183,210,146,147,167,235, 75,180,254,137,138,253,
+ 89,135,238, 70,196,165,109, 73,240, 37, 54,139, 79,100,255, 18,155, 21,177,161,175,205,210, 54,149,230,212,234,120, 43,134,121,
+186,137,150,158, 7,197,109, 58, 59, 59,255,200,113, 92, 21,125,211,196,227,241, 34, 98, 99, 99,119,125, 73,126,186,187,187,211,
+119,239,222,129, 82, 74,190,101,185,255, 19,117,233,127,201,230,129,245,245, 29,107,214,171, 53, 39,248, 89,232,154,124,183, 98,
+ 33,150, 78,181, 52,105,211,161,253,162,123, 55,111, 47, 95,188, 41, 45,251, 95,153, 78, 66, 8,143, 86,116,117,203, 23,218, 44,
+ 8, 18, 90, 81,155, 34,145,104,123,179,102,205,126,124,248,240,225, 31, 12,195,140,251, 95,172,159,132, 16,111, 62,159, 63,187,
+ 70,141, 26, 13,195,194,194, 94,176, 44,187,166, 44,146, 85,129,193,239,252, 42, 85,170, 76, 20,137, 68,146,156,156,156,244,248,
+248,248, 69,148,210,227,255,110,249, 89,219,221,170, 9,165,133, 65,183, 87,134,190, 75,125,252,205,108, 82,142,229, 40,127,197,
+155,240,148,231,255,223,229,254,159, 78,178, 74, 83,185, 4,255, 95,137, 40, 32, 74,101, 34, 62, 62, 6, 64, 12,128, 19,255,174,
+153,169, 15,201,170,160,220,152,248,239, 96,163, 56,242,137, 84,192,183,176, 85,156, 52,253,147,120,251,246, 45, 49, 60,242,255,
+126,248, 97, 70, 80, 60,128,233, 77,188, 62, 63,151, 79,174,230,120,245,250,215,167,243, 75, 72,214,151,218,252,210, 13,159,181,
+ 90,237, 79,132,144,153, 21, 89,173,248,223,134,124, 82,117,225, 31,176,187, 10,192,170,127,247,251,127,245, 54,245, 41,128,158,
+255,238, 54,255,199,234,100,197, 54,149, 54,192, 0, 3, 12, 48,224,223,186, 81, 87, 26,114,193, 0, 3,254,189, 80, 84,213, 42,
+ 74,188, 8,128, 78,165, 60,200,215, 43, 96,188,211, 23, 52, 20,215, 13, 54, 13, 54, 13, 54, 13, 54, 13, 54, 13, 54, 13, 54,255,
+183,108,254,183,146,172, 79,200, 85,209,227,130, 85, 79,255,196, 11, 64, 39,131, 77,131, 77,131, 77,131, 77,131, 77,131, 77,131,
+ 77,131,205,255,230, 23,128,113,165, 29, 27, 92,135, 6,252,227,216,220,151, 56, 1,192,148, 83, 52,238,159,184,222, 0, 3, 12,
+ 48,192, 0, 3,254,149,160,148,238, 44,205,117,248, 47, 39, 90,132, 16, 71,228, 5,218,115, 3,240, 6,192,221,138, 44, 87, 46,
+193,158, 53,128,129,132,144, 1,249, 55,123, 2,192,241,242, 66, 81, 20, 64, 38,147, 37,170, 84, 42, 91, 0,144, 74,165, 73, 42,
+149,170,232, 94, 6, 4,159,111,143, 66,243,254,166,244,137,173, 85,171, 86, 77, 84,171,213,182,122,252,125, 38,165, 52,136,199,
+227, 5,203,229,242,155,111,222,188, 57, 95,145,123,239,208,161,195, 72, 62,159,191, 18, 0, 88,150, 93,112,243,230,205,125,255,
+ 96,185, 53,175,228,104,191, 87,171,211, 50,137,201,105,139, 74, 91,186,189,173, 39,241, 21, 16,204,201,255,188,122,226,185,178,
+ 67, 88, 84,244,250, 50,210,215, 68, 40, 20, 78,182,179,179,235, 22, 27, 27,251, 20,192,207,148,210,114,163, 26,187,184,184,252,
+ 32, 16, 8,134,177, 44, 91,141,207,231,135, 51, 12,115, 40, 58, 58,250,128,161, 25, 49,192, 0, 3, 12, 48,160, 60,178, 85,210,
+247, 21, 34, 90,181,172,137, 61, 5, 6,131,160, 51, 40,174, 17,224,232,235, 20,250, 81,223,223,123,215, 34, 58, 29,147,247,159,
+ 34, 30,216, 75,239,121, 59,189,189,189,157,167, 76,153,130, 86,173, 90,225,225,195,135, 45,247,236,217, 51,154,207,231, 7,113,
+ 28,119, 11,192, 67, 74,245, 10,165, 96, 12,224,123, 0, 67,187,117,235,214,105,229,202,149,252, 58,117,234, 64,169, 84,226,246,
+237,219,109, 86,175, 94,189,129, 16,114, 29,192, 97, 0,103,203,138, 13,163, 82,169,108, 11, 56, 19, 33,196,182,127,255,254,143,
+139,146,171,252,253,213, 8,165,244, 1, 33, 36,128,101,217,135, 39, 78,156,136,169, 69, 72,243,241, 85, 68,127, 78,251,160,249,
+ 44,102,146, 90,173,182, 61,243,219, 42, 8, 36, 18,168,179,179,208,114,212,223,171, 64,175,253, 50, 7,132, 99,192, 7, 77,247,
+ 90,177, 33, 8, 64,112,124,124,124,144,167,167,103, 68, 69, 11,153,207,231,175,188,124,249,178, 3,165, 20, 93,186,116, 89, 9,
+224, 31, 33, 90,132, 16, 73,139, 38, 13,110,157, 59,121, 68,154,147,150,136,174,223, 15, 58, 68, 8, 25, 73, 41, 61,249, 9,105,
+234, 78,236,136, 0,115, 38,172, 58,204, 7,128,109,243,135,254,188,161, 11,217, 52,253, 10,253, 72, 8,241, 2, 10,183,108,250,
+141, 82,122,107, 91,119, 98, 7, 62,230, 78, 88,117,152, 0,192,239,243,135,206,217,214,157,108,156,120,177, 98,171, 42, 9, 33,
+ 19, 71,142, 28,185,105,229,202,149,124, 7, 7, 7,196,197,197,117,173, 93,187,118, 13, 66, 72,237,178, 38, 17, 87,169, 82,229,
+ 88,251,206,189,171,246, 29, 48,216,200,198,218, 2,241, 9, 41,166,199,142,252, 49,190, 74,149, 42,221, 34, 34, 34, 6, 25,154,
+ 17, 3, 12, 48,192, 0, 3, 74,233,119,190, 60,188, 67, 99, 71, 34,203,213,162,183,128, 79,126,104,219,188, 78,199, 33,221,219,
+242,106,123, 84,199,171,151,161,223,157,189,249,104,117,109, 59,222, 13,134,165, 7,140, 69, 56,243, 44,190,236,149, 48, 58, 6,
+130,171,103, 14, 3, 0, 38,142, 30,202,127,252,248,113,245,198,141, 27, 23, 6, 4,236,216,177, 35, 58,118,236, 72,182,109,219,
+214,224,234,213,171, 13,118,239,222,173, 37,132,236, 45, 39, 8,221,100, 55, 55,183,213,155, 54,109,146,120,122,122, 66, 34,145,
+ 20,158,147,203,229,232,217,179, 39,122,246,236,201,143,143,143,239,114,238,220,185, 46,191,253,246,155,134, 16, 50,155, 82,186,
+ 69,159,204, 91,180,104, 81,147, 18,190,190, 76, 8,121,207, 48,204,139,250,245,235,199,212, 36,164,250, 79,221, 91, 93,155,216,
+218,221,184, 52, 59, 2,177, 24,251, 71,230,245,213, 69,137, 86,196,205, 75,144,155,154,164, 26,153,152, 4, 1, 8, 6, 16, 68,
+ 41, 13,126,255,254,125,168, 7, 33, 13, 90, 88,240,246,238, 78, 99,235, 87,128,108, 33, 38, 38, 6,102,102,102,178,246,237,219,
+ 39, 16, 66,150,220,186,117,107,231, 55,174, 83,205,151,204,153, 40, 74,143, 12,194,199,215, 15, 48,115, 64, 27,163,233,155,255,
+ 90, 14,224,100,217, 21,145,199,251, 45,128,243,153,158,183, 25,239,162,212,212, 84, 79, 0,176,178,178, 18, 3,184,181,254, 17,
+186,207,104, 77,200, 87, 84,116, 17,159,207,223,186,127,255,254,177, 63,252,240, 67,222,214, 17,247,238, 65, 46,151, 99,217,178,
+101,149,103,205,154,229,139, 82, 54, 2,118,113,113,249,161,125,231,222, 85, 55,174, 89, 94, 59, 59, 45, 83,189, 99,235,241, 39,
+142,117,107,242, 38, 76,158,101,178, 81,171,182,119,113,113,249,193,160,108, 25, 96,128, 1, 6, 24, 80, 17, 53,171, 92,162, 85,
+211,134,236,107,219,200,125,224, 16,239, 54,146,122,117,235, 64, 36,249, 59, 80,116,227, 38, 77,208,184, 73, 19,158, 79, 78,118,
+231,199, 79,158,117,254,243,234, 67,117, 77, 27,114,252, 77, 50, 29,169,111,194, 10, 54,165, 93,249,189, 93,135,220,140, 36, 41,
+ 0, 24,155,219,170,230,159,249,120,179,117,235,214,112,118,118, 22,221,184,113, 99, 12,202,142,151, 50,255,205,155, 55, 18, 62,
+191,236,120,168,142,142,142,232,223,191, 63,106,214,172, 41,110,223,190,253,124,252,189, 29,198, 39,144, 74,165, 73,132, 16, 91,
+ 0,176,180,180,100,151, 44, 89,242,130,210, 66,207, 32,165,148, 62,224,241,120, 15, 57,142,123,116,246,236,217,216, 58,132,216,
+246,104, 92,243,238,196,225,253,141,232,159, 27, 74, 37, 9,170,172,172, 18,191, 55,146, 27, 39,203,140,141,131, 36, 70,210, 96,
+ 0, 65, 0,130,157,156,156, 66,235, 16,226,220,162,102,149,171,219,102, 12, 53,209, 39, 47, 27, 55,110, 92,195,203,203, 75,202,
+178, 44,114,115,115,241,251,239,191,155,201,100, 50,179,110,221,186, 45, 6, 80, 88, 1,106, 19, 82,175,159, 35,127,220,146, 56,
+102,210, 23, 16, 25,243,182, 45,155, 68,110,246, 91,108,218,164, 69, 91,188,189,117, 16,105,105,217,200,204,200, 1,199,113,159,
+237, 48, 60,241, 34, 77,220,214,147,172,222, 54,111,232, 92,194,227,145, 6,125,126, 70, 47,251,204,169,132,144,151, 0,132, 98,
+177,184,176, 30, 18, 66, 28,235,214,173,187,186,250,119,109,241,251,130,225,160, 28, 71, 1,172,214, 87,205, 34,132,216,154,152,
+152,156,189,122,245,106,243,166, 77,155,226,225,195,135,248,240,225, 3, 38, 78,156,168,153, 52,105,146,104,196,136, 17,100,230,
+204,153, 83, 8, 33,127, 82, 74,239,127,246, 32, 8, 4,195,190,239, 59, 72,156,147,145,165,210,168,181, 26, 75,107,115, 78,157,
+171, 82,164,164,103,169, 6, 13,253, 81,243,242,249,163, 97, 0, 62, 35, 90, 95,147,159, 6, 24, 96,128, 1, 6,232,141,166, 0,
+108, 0, 36, 3,120, 82,236, 24,249,159, 81,194,113, 10,242,188, 82, 86, 69,108,165, 32,111,218,143, 13,242, 98,124, 62, 6,144,
+254, 53,137, 43, 45, 42, 60,144, 31, 25, 62, 63, 64,113, 65,160, 98, 82,132,104,209, 55,201, 20, 76, 90, 56,216,212,247, 96,179,
+ 63,223, 62,137, 72,205,145,169,100, 17, 19, 30,138,145,211,151,225, 77,114,233, 17,185,189,107, 17,157,153, 24, 2, 19, 17, 32,
+ 50, 50, 87, 15,241,187, 18,208,164, 73, 19,213,124, 79,158,183,239,182, 60,165,107,230,184,161,104, 57,227,207, 43,225,225,225,
+140,163,163, 35,126,248,225, 7, 80, 74,123,148,113,115,137,217, 79, 2,108, 95,247,104,133,102,137, 37, 79,147, 10, 11, 11,195,
+157, 59,119, 16, 29, 29,141,106,213,170, 97,204,152, 49, 73,148, 82,187,210,108,118,237,218,245,246,111,191,253,230,185,118,237,
+218,192,253,251,247,183, 46,205,221, 84,155, 16,227, 6,149,237,159,236,246,157, 91,141, 92,218, 43, 84, 68,191,131,185,191,146,
+148, 64,242,104,124,252,223,121,247,107, 13, 7, 24,155,153,192,216, 84,158, 56,226,234,211, 66, 37, 43,255,253, 77, 99, 66, 76,
+157, 29,172,158, 30, 93,191,200,137,119,243,152, 84,180,227, 1, 41,143,100,181,111,223, 62, 96,229,202,149, 22,241,241,241,184,
+126,253, 58, 42, 87,174, 12,133, 66,129,117,235,214, 37,220,189,123,215, 49, 63,189,118,205,106,186, 6,253, 62,107,148,153,104,
+204, 47,146,138, 86, 36,145, 64,176, 37,224,242,177, 73,102, 18,138,140,248, 15,120, 31,250, 18,143, 95, 69,232, 14, 92, 11, 98,
+179,148,106,111, 74,233,205,146,126, 55,185, 13,169,126, 43,222,230,220,229,219, 79,220, 29, 28, 28, 48,126,252,120,124,252,248,
+ 17,148, 82,112, 28, 87,184, 74, 99,254,252,249,168, 81,163, 6, 70, 14,238,165,144,164, 61,107,127,238, 21,125,170,103, 5,175,
+235,234,234,122,245,214,173, 91,118, 78, 78, 78,184,123,247, 46, 62,126,252, 8,123,123,123,220,184,113, 3,126,126,126,251, 39,
+ 76,152, 48, 96,229,202,149,210, 33, 67,134,196, 93,185,114,165, 82,241, 57,117,149, 43, 87, 14, 61,119,229,174,252,230,233,171,
+239, 45, 76,140, 96,108,107, 5,190,220, 84, 69, 65, 20,246,182, 22,162, 65,189, 59, 86,143,140,140,244, 40, 86,254, 95,149,159,
+ 6, 24, 96,128, 1, 6,252,141, 11, 23, 46, 80,111,111,111, 82,240, 94,156, 66, 16, 66,206,231,243, 1, 13, 0,113,145, 99, 16,
+ 66,206,231,171, 33,159, 28,251,248,248,204,247,245,245,125, 89,112, 92,112,205,188,121,243,234,248,249,249,173,106,217,178,229,
+209,128,128,128, 37, 0,222,125, 45,209, 42, 77,229,210,107,142, 22, 19,251, 24, 34,247,110, 16,178, 58,232, 82,222,128,203,136,
+ 2,140,237,161, 36,114,164, 38, 68,225,245,221,147,121,220,176,188, 76,124, 77,133,132,144, 27,161,161,161,120,253,250, 53, 98,
+ 98, 98, 96,100,100,244,217,117,247,238,221,131, 76, 38,131,131,131,131,126,146,157,230,211,253, 88,131, 26,187, 66,222,210, 19,
+ 41, 67,126,194,141, 27, 55,144,148,148, 4,145, 72, 4,177, 88, 12,134, 97,202,181,199,227,229,237,248, 91,160, 98,149,116, 77,
+123, 66, 4,206,150,242,115,219, 22, 79,171,194,123,112, 94,168,140,126,135,120, 21, 11,115,125,148, 60,185, 49,140,140,141, 18,
+100, 50,163,226, 36,235,109, 99, 66,132,198,114,233,185,189, 43,102,218,243,159,223,144, 42,223, 5, 65, 84,130,141,206,157, 59,
+143, 7,176,152, 82,154,209,190,125,123,187,149, 43, 87, 90,196,197,197,225,213,171, 87, 56,126,252,120, 50,147,119,163,132, 82,
+186, 20, 0, 90, 18, 34,117,177, 49,191,178,229,151,105, 38,184,117, 76,140, 49,191, 84,184, 34,153,121,244,188,208,111,196,132,
+ 73,155,166,245, 68,110,182, 18,135,175, 61,199,229,103,239,123, 1,184, 87,214,188,183, 45,247,232, 59, 66, 72,199,190,125,251,
+190,184,115,231,142,245,238,221,187,193, 48, 76,137,175,221,187,119,227,250,221,103, 83, 41,213,155,100, 57, 86,169, 82,229,250,
+163, 71,143,108,140,140,140,112,237,218, 53,100,100,100, 20, 42, 89, 35, 71,142, 36, 25, 25, 25,131,127,255,253,247,126,145,145,
+145,107,238,222,189,155,138,188,237,160, 62,169, 8,124, 62,255, 61,195,104,107, 57,120, 84, 23, 12,232,217,182,109, 78,106, 16,
+228, 86,245,241, 32,240,253,185,140,244, 84, 37,159,207,127, 95,244,250,111,145,159, 6, 24, 96,128, 1, 6, 84,152,208,156,167,
+148,246, 40, 74,156,138, 19,174,130,207, 5,215,249,250,250,246, 40, 74,194, 0,192,207,207,111, 85,145, 99,197,183, 72, 91,121,
+147,225,219, 19, 66, 40,128,246, 37, 93,164,126,117, 10,234,215,103, 33,114,109, 13,113,205, 94,224,187,182, 65,116,208, 45, 4,
+ 94, 90,143,216,151,247, 64, 57, 22, 14, 53,154,233,155, 22, 85,173, 90,181,160, 82,229, 77,205, 82,171,213, 16, 25, 91,168,102,
+142, 27, 42, 5, 0, 78, 32, 85, 23, 73,180, 94, 6, 77, 90,123,161, 89, 34,197, 99,187, 60, 2, 92,160,108,173, 24, 53, 10, 34,
+145, 8, 34,145,168,112,243, 89,125,136, 86,254,166,168,224,242,220, 87,180,164,243, 77, 36,194,195, 71, 23, 79,110, 38,137, 12,
+ 22,171, 67, 30, 32, 94,205,209,115,137,236, 5,125,118, 78, 54, 50, 54,138,147, 25, 25, 5,203,228,198, 69,137,214,123, 0,160,
+ 66,225,129,131, 75, 39,215, 55, 78, 12, 55, 86, 61,185,129, 4, 21,167, 53, 45,217,204,210, 75,151, 46,217, 10, 4, 2,123,150,
+101, 17, 29, 29,141,151, 47, 95, 98,227,198,141,137,217,217,217,237,159, 61,123, 22, 86, 36,189,188,166, 50,241,241, 3,203,166,
+ 85, 21, 4,249, 75,213,239, 67, 74, 36,111,101,193,166, 94,159, 46,189,218, 55,184, 48,126,248, 2,244,238,254, 29, 70,180,175,
+ 77, 35,226,211, 84, 0,174,233,179,129, 53,165, 52,142, 16,210,185, 93,187,118,135, 26, 54,108,232, 65, 41, 69,189,122,245, 48,
+120,240, 96, 28, 56,112, 0,129,129,129,200,202,202,210, 94,189,122,117, 3,165,116,143,158, 15,156,145,133,133,197,229,155, 55,
+111,218, 24, 25, 25,225,234,213,171, 80, 42,149,112,112,112,192,164, 73,147,196,126,126,126,251,179,178,178, 6,248,250,250, 74,
+ 35, 34, 34,182, 92,185,114,165, 50, 0, 30,165,244,179, 74,160,209,104,118, 30, 62,176,111,211,164,201, 83,156,110, 62,124,117,
+ 67,157,147,109,230,234, 26,147,101, 99, 33, 55,217,240,235, 82, 23,141, 70, 51,190,228,252,188,253, 69,249,105,128, 1, 6, 24,
+ 96,192,231, 26,198,133, 11, 23, 74,229, 34, 69,201, 83,113,178, 85, 17,146, 6, 64,233,227,227, 51,159, 16,114, 62, 95,241, 82,
+ 2,136,255, 39, 72, 86, 33,209,162,148,250, 19, 66, 64, 41,245, 47,213, 10,199, 66, 27,113, 7,218,136, 59,144,181,156,138,191,
+124,135, 20,251,147, 47,223, 34,172,231,178,107, 55,213,106,181, 96,223,190,125,133,243,182, 0,128,101,217,111, 94,138, 21, 33,
+ 90,249, 68,239,179, 68, 84,145,200,253,119,206, 24,208,194,138, 85, 8, 53,247,206, 33, 78,205, 49,107,222,105, 21, 79, 50,232,
+111,243, 75,177,121,102,250,120,196,220,189, 14, 35,185, 60,102,236,157,224,162, 42, 86, 16,128, 15, 0, 80, 69,106,122,227,248,
+204, 33,109,236, 69, 16,105, 46,156, 64,188,154, 83,111,143,212,237,217, 88,114,161,130, 82,138, 15, 31, 62, 64,161, 80, 32, 32,
+ 32, 0, 39, 79,158, 76, 46, 78,178,242,211,123,251,143,159,135, 53, 55,205,254, 40,210, 60,185,142,120, 53,167,174,161, 15,185,
+170,223,167,181,136, 71,174, 18, 30, 95,214,189,109,109, 76,255,177, 15,214,255,241, 23,163,177,109,219, 99,211,217,139, 3,115,
+212,218,249,250,144,172, 34,105, 14, 2, 80,155, 16, 34, 1,224, 53,120,240,224,139,253,250,245,131,191,191, 63,206,157, 59,231,
+ 14, 32, 33, 63,255,151, 1,176, 67,222,106,196,210,118,142,231,137, 68,162,163,215,175, 95,175,227,232,232,136,235,215,175, 67,
+169, 84, 98,194,132, 9,154,201,147, 39,139, 70,142, 28, 73, 50, 51, 51, 11,149,172,128,128,128,212,210, 72, 22, 0,196,198,198,
+ 94,114,117,117,109,213,174, 93,187, 62, 85,221,107,154,134,103,103, 37, 25, 25, 73,101,119,253,111,137,158, 60,186,191, 37, 54,
+ 54,246,113,201,249,121, 67,239,252, 52,192, 0, 3, 12, 48,160,116,120,123,123,251, 95,184,112, 1,222,222,222,254,229,244, 37,
+ 61,190,144, 12, 21,252, 78,232,235,235,251,210,215,215,247, 19,197,235, 43,149,182,226,174,195, 11,148,210,132,162,138, 86,133,
+192,102, 70,127,126, 3, 28, 87,145,155,253,236, 59, 11, 11, 11, 70, 38,147,125, 66,180, 56, 61,109,166,157, 62,130,240,137, 67,
+ 11,149,172, 2,101, 11, 93, 71,126, 21,209,226, 56, 46, 0,192, 39,137, 48,182,171, 57,228,232,240,206,173,107, 87,117,226,233,
+142,111, 68,172,130, 81, 45,126,163, 85,189,206,166,189, 94,149, 48,201,186,208, 38,163,131,212, 88, 22, 37,147, 27, 23, 39, 89,
+145, 0, 32,183,175,209,111,255, 16,175,246, 13,106,186,241,152, 99,235, 16,167,208,229,248,132,106,181,225,185,244, 84, 41,121,
+184,248,187,239,190, 91,108,101,101, 37,221,180,105,147,153,171,171, 43, 24,134,209, 20, 39, 89,198,118, 53,135, 28, 27,217,181,
+117, 13,123, 11,158,238,207,205,136, 81,178,138,141,225,186,253,219,245, 32, 89,214,102,242, 43,219, 87, 77,148, 25, 73,132, 80,
+169, 84,240,219,246, 39,174,222, 15,233,145, 28,124,250, 10,128, 43, 95, 81, 39,199,246,232,209, 99,253,178,101,203,160,211,233,
+ 48,102,204, 24,188,127,255,254,234,155, 55,111, 54,186,184,184,204,254,249,231,159, 29,237,237,237, 49,112,224, 64, 17,128,145,
+165,216,248,245,240,225,195, 61, 26, 52,104, 0,127,127,127,100,100,100,192,193,193, 1,147, 39, 79, 22,251,250,250,238,207,202,
+202, 26,176,106,213, 42,233,135, 15, 31,202, 84,178, 62,169,215, 44,187, 98,199,250,137,179,155,182,104,195,123,247, 46,140,137,
+110,230,201,187,117,253,220, 29, 43, 43,171,253,159,228,231,168,110, 21,206, 79, 3, 12, 48,192, 0, 3,190, 25, 46, 0,240, 46,
+174,114, 21, 39, 97, 5,138, 85,209,227,226,215,231,159, 87,127,109,130,138, 43, 90,249,196,235,211, 57, 90, 69, 39,193,151, 7,
+ 46, 55, 89, 47,242,244, 25, 91,173, 69,116,227,155, 66, 48,223,147, 7,145,177,133,170,231,178,107, 55, 75,187,214,216,216, 88,
+111, 69,139, 83,171,202, 35, 78, 21, 34, 90,249,115,180, 46, 83, 74, 63, 33, 90,230,246, 53, 61, 23,206,157,182,161, 77,191,174,
+188,196, 31, 91, 34, 35, 71,173,254,249, 21,195,197, 42,202, 38, 89,121,189,184, 46,194,200, 88, 30, 44, 53,254,100, 94, 86, 52,
+ 0,200,236,170, 55,243,153, 49,101, 91,135, 33, 61, 73,242,132, 54, 72,207, 80,170,103,191,100, 72,156,146, 14,120, 69,233,173,
+146,204,221,184,113, 99, 7,128, 29,237,219,183, 79, 52, 54, 54, 70, 78, 78,206,103,101, 80,144,222,214,253,186,242, 18,199, 54,
+ 71, 90,174, 86,253,243, 75, 6,241, 74,238,104,121, 36,203,198,220,228,202,246,149, 19,141,226, 99, 35, 33, 18,137, 32,151,203,
+113,237, 94, 48,146, 67,206,124, 13,193, 2,159,207, 95, 50,127,254,252,197,147, 38, 77, 66,106,106, 42,206,157, 59,135,238,221,
+187,227,200,145, 35,174, 23, 47, 94, 92,239,229,229, 5, 62,159,143,243,231,207, 67,167,211,189, 45,165, 60,251,140, 27, 55,110,
+118,191,126,253,240,248,241, 99, 36, 36, 36,124,162,100,101,100,100, 12,222,182,109, 91,191,136,136,136,114,149,172, 98,104, 86,
+197,173,145,104,222,162,181, 80, 43,146, 4,201,113, 15,253,111, 92,227, 61, 72, 75, 75, 51, 2,144,249,165,249,105,128, 1, 6,
+ 24, 96,128,222,170, 86,105, 92, 36, 57,159, 68, 37,151,116, 92,132, 96,149,116, 76,138,169, 96,154, 98,231, 3,255,201,123,210,
+ 75,209, 18,216,213, 5,147, 24, 82,132,104, 37,125,114, 94,106, 98,169,151,235, 80,199, 64,176,125, 79, 97, 28, 45,105,106,106,
+170,212,218,218, 90, 85,148, 32, 24, 25, 25,193,209,209, 17,233,233,233,216,185,115, 39, 0,148, 55, 41,154, 49,237, 55, 28,205,
+134,140,193, 19,103, 49,168, 78, 91,168,108,109, 31, 53,234, 19,178, 37, 18,137, 10,230,134,149,215,233, 62, 34,132, 68, 2,120,
+ 64, 41,165,141,107, 84, 91, 46, 53, 54, 30,213,164,190,155,245,244,137, 99,133, 17, 73,106,220,108, 51, 47,227,207, 95,231,202,
+ 99,168,124, 82, 20,205,184, 95,142,189,240,239,127, 63, 88, 92,201,138,109, 84,163,218, 2,169,145,244,199, 22,117,107,216,251,
+204,156, 40,140, 72, 84,147,155,205,126,206, 58,249,219,207, 70, 31, 96, 50, 59,134,166,223,210,163,120, 22,119,239,222,125, 49,
+165,148,114, 28,183, 8, 0,138,166,119,230,228, 31,133,225, 31, 85,184,209,102, 65,250,201, 95,231,154,196,160,236,244,218,212,
+239,211,218,206,194,244,202,246, 85,147,140, 18,226,162, 32,145, 72, 96, 98, 98,130,152,196, 76, 8, 5,124,229,215, 84, 54, 66,
+136,196,211,211,115,238,196,137, 19, 17, 28, 28,140, 9, 19, 38, 36, 68, 71, 71,159, 58,118,236,216,132, 95,126,249, 69,208,165,
+ 75, 23, 36, 36, 36, 96,245,234,213,186,123,247,238,173, 2,176,186,196,250, 40, 16,140, 93,190,124, 57,141,143,143, 39, 31, 62,
+124,128,131,131, 3,166, 76,153, 34, 94,181,106, 85,225,156,172,138, 40, 89, 5,136,141,141,245,119,119,115, 65,175, 75, 27,192,
+232,212,254, 25,169,209,119, 94,135,167,251, 91,138,197,179,218, 52,174,255, 69,249,105,128, 1, 6, 24, 96,192, 55,193,147,114,
+142,255,165, 40,201,117,168, 47,209,122,187,121,193,104,247,209,147,230, 64,230,218, 26,234,208,211,224,114, 18, 11, 21, 45,169,
+220, 2,150, 46, 30,200,200, 85,227,196,141,103, 0,240,182, 34, 9,203,206,206, 70,227,198,141,177,117,100,141, 14,170,236, 84,
+169, 12,128, 90, 98,170, 58, 35,110,123,243,226,197,139, 10,142,227,142, 2,184, 88,142,153, 37,117,234,212,217,178,118,237, 90,
+177,199,144,209,200,121,120,183,184, 58, 5,153, 76, 6,137, 68,130,160,160, 32,220,188,121, 83, 3, 96, 73, 57, 25,246,136, 97,
+152,192,163, 71,143,198,186, 87,115,238,218,190,105,179,169,243,231,249,152,188,186,123, 21,139, 86,109,225,170, 55,233,146,233,
+119,228, 76,118,166,220,165,163, 34,254,245, 11, 61,110, 53,176, 24,201,138,247,168,234,210,161,101,163,134,115, 22, 45, 90, 96,
+250,242,238, 53,252,242,219,118,234,222,160, 83,230,111, 39,207,102,165, 24, 85,254, 78,153, 24,250, 88,159, 60,188,125,251,246,
+ 14, 0, 59, 10,142,139,167,215,103,217, 70,174, 70,211,174,233,126, 71, 78,230,102,153,184,116, 42, 43,189,182,181,251,182,170,
+228, 96,121,101,243,138,159,140, 62,198, 69, 67, 34,145, 64, 46,151, 35, 58, 33, 3,139, 55, 28,207,213,114, 92,215,175,172,139,
+ 18, 19, 19, 19,137, 86,171,197,214,173, 91, 17, 29, 29,221,146, 82, 26, 77, 8,217, 62,104,208,160, 77,245,234,213,171,245,242,
+229,203,183, 57, 57, 57,147, 40,165,175, 75, 51, 98,110,110,222,210,198,198,134, 60,120,240, 0, 63,253,244,147,102,202,148, 41,
+162, 17, 35, 70,144,244,244,244, 47, 85,178, 0, 0,206,206,206,158,223,123,183, 66,235,206, 19,252, 53,170,140, 59, 17,175,247,
+251,243,232,125,105,227,134,245,191, 40, 63, 13, 48,192, 0, 3, 12,248,223, 64, 89,147,225,203,220,141,218, 19, 16,212,176,194,
+248, 58, 78,162,143, 7,126,157, 66,179,195, 3,168,242,241, 14,154,117,250, 71,122, 97,245, 8,122,113,243,116, 58,193,187, 14,
+173,101, 75, 62,214,176,194,120, 79, 64, 80,214,238,222,221,107, 66,215,217, 13,180,179, 27,168,119, 13,232, 0,204,111,212,168,
+209,153,201,205, 64,233,171,195,148,190, 58, 76, 39, 55, 3, 5,240, 19, 0,185,190, 59,134, 3,112, 0,176,179,113,227,198,204,
+173, 91,183,232,155, 1,157,232,243, 90,214,116,210,164, 73,244,151, 95,126,161, 67,135, 14,165, 54, 54, 54, 12,242,252,165, 14,
+229,217,236,213,171,151, 51,165, 20,149, 42, 85, 50,111,226, 81,253, 99,208,141,115,244,206,129, 77,244,143,201,125,105,243,122,
+ 30, 41,246,181,218, 5,202, 28,106, 54,212,119,103,115,123,123,251,121,148,210,174,148, 82, 7, 74, 41,220,221,173,228,141,106,
+ 85,143, 15,188,126,142,222, 61,184,133,254, 49,185, 47,109, 81,191,118,170,179,135,215,107,169,109,173,102, 95,186, 91,122,137,
+233,173, 91, 43,197,174,122,171, 23,165,165,183,168,205,170,205, 6,158,141,141, 79,164,143, 30, 61,162, 23, 47, 94,164,119,239,
+222,165, 7,142,157,165, 46, 77, 7,228, 88,215,235,221,250,107,119,117, 7, 96,230,237,237, 77,223,190,125, 75,187,117,235, 70,
+ 1,152,125,137, 77, 0,103, 34, 34, 34,104, 72, 72, 8,157, 63,127, 62, 5,176,111,226,196,137,202,204,204, 76,218,169, 83,167,
+104, 0, 60, 20,171,139,250,166,179, 90, 21, 39,191, 62, 61,219, 46,153,252, 83, 63,207,175,205,207,111,184, 43,188,193,166,193,
+166,193,166,193,230,127,189,205,255,228, 87, 62, 15, 25, 87,228,189, 81,193,185, 50, 21,173,219,121,106,192,142,122,118,228,208,
+170,213,155,103,109,221,177,111,206,220,169, 99,141,219,182,233,140,224,235,123,113,242,252,177, 92,149, 90,179, 90,196,199,218,
+224, 20, 90,110, 28,138, 11,175,169,176, 4,245,200,200,210, 13,133, 49,152,222,165, 3,148,210,237, 21,100,146, 9, 0,198, 17,
+ 66,214,122,121,121,173,252,177,117,179,190,147, 91,117,128, 78,167,195,129, 3, 7, 16, 21, 21,117, 10,192, 2, 74,169, 94,138,
+ 91,112,112,112, 74,157,234,149,167, 89,202, 68,115, 38, 13,237, 99,147,252,254, 21, 98, 67,159, 3, 0,212,106,165, 46, 33,204,
+191, 65, 69,210, 39,147,201, 30,217,216,216,188,177,177,177, 73,103,213, 57,227,164, 2,211, 69, 19, 6,127,111,155, 26,241, 26,
+ 49, 47,243, 60,163,106,149, 66, 27, 19,118,179,214,151, 48,233,202,149, 43, 75,140,133, 24, 95, 98,122, 53, 42,221,199,183,161,
+ 13,245,177,163, 80,107, 86, 45, 93,127,224,187, 21,115, 70, 73, 76, 77, 77,241, 44,228, 29, 22,173, 59,146,171,212,232,186, 38,
+ 7,157,190,255,141, 88, 63,116, 58,157,222, 11, 29, 74,193,220, 6, 13, 26,212, 92,185,114,165,251,200,145, 35,241,181, 74, 86,
+ 81,188,255, 16,235,211,190,125,251,218,239,222, 60,243,178,148,137, 14,125, 77,126, 26, 96,128, 1, 6, 24,240, 63, 3,111, 74,
+233,206,130, 8,241,249,174,196,231,250,184, 14,243,136, 71, 34, 85, 0, 88, 86,205,142,108,159,183,114,253, 98, 30,217, 48,138,
+163,116, 47,195,195,210,240, 20,154,252,149, 29,175,194,187, 22, 97,190,235, 61, 84, 0, 0, 66, 1,152,175,176,245, 22, 64, 63,
+ 66, 72,211, 93,247, 31, 47,204,255,122, 5,165,180, 66,190, 92, 19, 1, 66,218,212,174,230,212,182, 81, 29, 41,159, 85, 34, 54,
+244, 61,210,114, 85,184,246, 50, 42,131, 71,121,123, 43,154,174,240,240,240,219, 0, 80,183,122,229,208,182,181,221, 92,218, 53,
+174, 99, 36, 36, 26,196,190,122,134, 76,165, 6, 87, 95, 70,101,130,144, 47,158, 80,253,173,210,251, 49,232,204, 19,155,250,125,
+ 58, 17, 66,174,207,159, 60, 68,178,120,221,209,111, 74,178, 0, 40,226,226,226, 82, 21, 10,133, 85,124,124,188, 6, 95, 24, 36,
+142, 82,250,142, 16, 82,111,250,244,233,203,102,207,158, 61,231,215, 95,127, 21,125,201,156,172,210,144, 30, 23,117,186, 93,157,
+111, 87,254, 6, 24, 96,128, 1, 6,252,247,163, 96,158, 86,241,249, 90, 21, 10,239, 16,158, 72,147, 1, 76,114,115, 35, 51,223,
+191,167,154,111,149,184,146,148,174,175, 36,111, 79, 0,244,252, 98, 3, 60,146,253,240,109, 84,206,163,183, 81, 57,224, 40,229,
+ 40, 85,243,120,136,201,213,106, 87,133,133,199, 94,249,138, 82, 96,159,188,139, 86, 62,125, 31,163,162, 28, 71, 57, 74, 53,132,
+224,163, 78,199,173, 10, 9,143, 60,251,239,144,222,228,160,211,247,237,107,247,109,123,255, 81,200,204,220, 92,237,150,228, 87,
+167, 3,190, 97,185,232, 8, 33,195, 90,182,108, 57,154,101,217,237,148, 82,221, 87,216,210, 0,152, 75, 8, 57, 21, 28, 28,124,
+ 60, 32, 32, 32,225, 91,144,172,127,180,252, 13, 48,192, 0, 3, 12,248,175,196, 23,111, 42, 93, 26,190, 37,201,250,119, 68,240,
+219,136,198,255,132,221,144,183, 17,117,255, 19,210,251,241,213,169,167, 0, 6,255, 67,149,241, 42,128,171,223,146, 84, 19, 66,
+170, 0,224,127, 19,146,245, 15,150,191, 1, 6, 24, 96,128, 1,255,157,248,234,189, 14, 13, 48,224,223,124, 36, 65, 1, 48,134,
+156, 48,192, 0, 3, 12, 48,224, 95,212, 15,149,170,104, 17, 0,157, 74,249,209,245, 10, 48,185, 78, 95,144,168,235, 6,155, 6,
+155, 6,155, 6,155, 6,155, 6,155, 6,155,255, 91, 54,255, 27, 65, 8,113, 64, 94,180,250,194,168,245,133,228,235, 31, 94,238,
+104, 88,250,106,176,105,176,105,176,105,176,105,176,105,176,105,176,249,223, 30,222, 97, 92,209,247,162, 47,158, 65,240, 51,192,
+ 0, 3, 12, 48,224, 31, 28,233, 75,242, 55,146,255,162,243, 6, 24,240, 31, 84,215, 11, 87, 29, 22,157,179, 37,248, 2, 67,213,
+243,149,176,119,255, 96, 98, 39, 59, 56, 56,140,171, 95,191,190,135, 72, 36,226,101,103,103, 47,189,121,243,230,146,226,215,181,
+171, 35,124,202,231,193,185,200, 47, 1,194, 7,120, 60,176, 20,177,119, 2, 21, 77, 12, 69,255,111, 93, 41, 93,101,166, 54,127,
+ 17, 30, 95,204, 50, 90,176, 58, 45,128,191,183, 99,226, 56, 38,138,209,168,186,148,246,123,135,134,125, 93, 24,150,250, 1,220,
+ 54, 2,222, 4, 10,238,119, 66,121, 19, 40, 15,219, 8,135,159, 32,208,173, 6, 35,156, 45, 16, 9, 22,196, 63, 59, 17,243,223,
+144,103,127,254,249, 39,255,107,126,223,191,127,255, 18, 55, 16,117,114,114, 58,111,100,100,228, 86,218,239,114,115,115, 19,226,
+227,227,189,254,203,235, 99, 59, 0,155, 1,212, 41,118,234, 53,128,105,148,210, 27, 95,251, 31,237, 9, 17,216, 1,227, 69,192,
+207, 0,160, 5,126, 75, 4,118,220,254, 70, 11, 57,190, 5,108,109,109,239, 8, 4, 2,247,220,220,220,220,172,172,172,106,166,
+166,166,225,198,198,198,198, 12,195,188, 77, 74, 74,106, 87,193, 60,157,136,252,173,180, 8, 33,115, 40,165,219, 42,114,222, 0,
+ 3,254, 83,240, 85,171, 14, 9, 33, 53, 0,120,230,191,218, 53,109,218,212, 46, 55, 55, 23,132,144, 68, 0,119, 0,248, 3,240,
+167,148,134,125,139,196,242,249,252, 53, 27, 55,110,156, 53,101,202,148,194,205,160,131,130,130, 74,190,150, 7,231, 91,231,174,
+219, 62, 9, 14, 67,211, 78,253,243,137, 22, 15,200, 77,128, 87,231,102, 95,218,216,154, 88, 88, 88, 44, 37,132, 12,224,241,120,
+229,118,106, 28,199,177,148,210, 19,233,233,233,139, 41,165,217, 21,249, 47,185,177, 84,199,176,108,137,255, 33,224,243,217,156,
+ 92, 85,169, 97, 47,172,172,172, 2,120, 60, 94,213,162, 27,102,231,167,191,196,207, 69,143, 25,134,137, 77, 78, 78,110,162, 71,
+ 94, 72,121, 2,209, 52, 66, 68,157,193,227,106, 0, 4, 4,188, 48,142,213, 92,227, 24,237, 70, 74,169,234,107, 72,150, 67,165,
+106,119,103, 44,240,115, 14, 9,125,141,249,147,135,226,215,205,251, 48,111,218,104,108,220,121, 4,211,198, 13, 65,237,218,117,
+202,180,193, 82,178,116,209,180, 97, 94, 43, 55, 30,110,186, 96,218, 80,227,149, 27, 15, 55, 93, 48,125,168,124,229,166,195, 77,
+ 22, 76, 31, 38, 95,177,233, 80,147,133,211,135,153,174,220,116, 88, 11, 96,204,151,164,115,104, 13,167, 92,194, 48, 37,142,182,
+169, 64,160, 62, 28, 22,103,252,175,120,168, 71,142, 28, 89, 95,169, 84, 62, 27,218,185,145, 95,195, 26, 78,113, 37, 93,147,250,
+ 49,206, 41,252,205,115, 31,161, 72,214,248,123,159,125, 65,101,217,147, 72, 36, 85, 95,191,126,237,206,113, 28, 88,150, 5,195,
+ 48,133,239, 26,141, 6,237,218,181,251, 38, 11,103, 8, 33, 61, 1, 44,205,123, 88,225, 75, 41, 61,254, 21,182,228, 2,129, 96,
+134, 88, 44,246,100, 24,198, 3, 0,132, 66, 97,168, 90,173,246,103, 24,102, 61,165, 52,167,130, 38, 55,196,197,197,213,150,203,
+229,208,106,181,133, 27,208,243,249,252, 90, 46, 46, 46, 91, 1,184,127,237,253,219, 1,227, 91,181,105,179,113,196,172, 89,124,
+229,157, 59,216,184,103,207, 6,100,101, 1,192,214,242,126, 43,145, 72,174,240,120, 60,215,138,252, 31,199,113, 81,106,181,186,
+ 75, 69,126, 35, 16, 8,220,227,227,227,109, 29, 29, 29, 1, 0,198,198,198,198, 69,143, 43,162,100, 1, 88, 77, 41,149, 1, 0,
+143,199,219,216,170, 85,171,150,132, 16, 6, 0,229, 56,142, 71, 8, 25,194,113,156, 32,255,250,213,132,144, 61,148, 82,181,161,
+219, 54,224, 63, 81,205, 42,141,108, 9,202,248,209, 69, 0,158, 77,155, 54,149, 13, 30, 60, 24,158,158,158,112,119,119,135, 84,
+ 42,205,107,196, 83, 83,237, 94,188,120, 49,240,206,157, 59, 3,207,157, 59, 7, 66,136, 18,192, 61, 74,105,137, 15,117,167,158,
+109,167, 72,229,146, 77, 0,144, 28,155,154, 16,251, 33,105, 83, 66, 66,194,106, 90,100, 55,106, 66, 72,181, 17, 35, 70,204,156,
+ 58,117, 42,206,159, 63,143, 35, 71,142, 64,173, 86, 35, 59, 59, 27, 55,111,222, 44, 57,161,138, 36,164,223,244, 3,140, 35,128,
+104,127,192,200, 22, 48,182,251,226,204,178,176,176, 88, 58,109,218,180,233,181,107,215, 46,140, 98,174,211,233,192, 48, 12,116,
+ 58, 29,210,211,211, 49,115,230,204, 2, 6, 11,142,227,112,233,210,165, 41,227,198,141, 3,128, 25, 37,217,108,217,196,229, 41,
+143,240,156, 11,180, 26,202,178,177, 15,158,199, 52, 97, 88,150,175, 82,105, 75,220,169, 92, 42, 21,149, 73,242,132, 66,161,243,
+171,191,254,178,229,137,197,160, 44, 11,112, 28, 40,199, 1, 40,242,162,121,223, 81,150, 3,213,177,224, 24, 14,140, 82,141,102,
+ 19, 39,234, 83,105, 90, 9,197,178, 35,195,126,156,101,223,188, 69, 11, 97,229, 74,142, 96, 88, 14,239, 35, 98,237,159, 61,125,
+216,250,196,254,173, 19, 8, 33, 67, 40,165, 95, 20,103, 75,108,100,122,117,203,239,187,156,159,188, 8,193,141, 91,119,112,253,
+166, 63, 0,224,202,173, 60,115, 60, 30,175,188,244, 89, 88,185,123,213,159, 50,186,183,241,138,181,187, 37, 83, 70,247, 22,252,
+253,190, 75, 50,101,244,247,130,149,235,119, 73,166,140,254, 94,184,252,183, 45, 13, 9, 33, 22,148,210,244,210,236,149, 86, 70,
+132, 97, 36,135,194, 19,249, 0,144,188,125, 59,116, 73, 73,112, 92,188, 24, 0, 48,172,154,157,222,238, 14, 27, 27,155,167, 66,
+161,208,185,188,235,116, 58, 93,185, 36,120,228,200,145, 13,148, 74,229, 83,134, 97,168, 64, 32,240, 25,218,231,187, 51, 93,219,
+ 54, 72, 45,122, 77, 80, 80,160,213,170, 85,127,245, 62,254, 44,155, 14,108,108,242,236,252,154,145, 77,122,204,222, 23, 88, 70,
+135,204, 83,171,213,120,251,246, 45,138,110,242, 94,148,215,126, 97,227,195, 3,176,209,202,202,170,121,106,106,234, 48, 0,243,
+179,178,178,234,243,249,124, 88, 90, 90,206, 39,132,188, 55, 51, 51,219,157,153,153, 25,144,175, 26,113,122,218,109,103,106,106,
+122,224,244,233,211, 22,141, 26, 53,226,165,164,164,160, 74,149, 42, 72, 75, 75,107,118,231,206,157,198, 99,198,140, 25, 67, 8,
+249,129, 82,122,167, 2,201,173,105,100,100, 68, 71,140, 24, 65, 88,246,239,219,253,227,143, 63,208,165, 46,227,246, 83, 87, 99,
+133, 74, 67, 51,111,188, 53,251, 73, 36, 18,221,139,140,140,204,172,104,126,136,128,159, 71,204,154,197,151, 71, 70, 66, 30, 24,
+136, 97, 89, 89,130, 95,243,212,173,114,137, 22,143,199,115, 61,112,100,175,187, 88, 44, 6,195, 48,133,100,176,160,141,210,233,
+116,208,106,181,208,233,116, 96, 89, 22, 58,173, 14,190, 43,126,251,226,182,208,200,200,200,200,209,209, 49,209,200,200,200,232,
+ 91,116, 68, 18,137, 68,176,127,255,254, 33, 98,177, 24, 0,160,209,104, 80,183,110, 93, 98,232,162, 13,248,111, 34, 91, 37,169,
+ 92,101,141, 82,187,101,101,101,129,101, 89,152,152,152,128,207,231, 23, 87, 84,208,185,115,103,180,107,215, 14,131, 7, 15,198,
+171, 87,175,100,131, 7, 15,238, 92,170, 50, 48,171, 7, 42,185,219,229,119, 38,156,195,253, 11, 47,252,254, 88,254,167, 13,128,
+ 89, 69, 46, 27, 51,126,252,120,146,154,154,138, 1, 3, 6,220, 81,171,213,189, 40,165, 89,165, 42, 26, 28, 98,189, 6, 15, 3,
+ 71,137,108,253,163, 93, 68,163, 82, 82, 30,143,167, 44,112, 29,126, 97, 70, 13,112,116,116,196,209,163, 71,161,209,124, 30, 46,
+204,212,212, 20, 47, 95,190, 44,170,192,161, 69,139, 22,124, 66,200,128,210,136, 22, 33, 60,231,251, 79, 34,109, 11,142,123,116,
+174, 35,106,217,196, 53,209,198,202,132, 2, 32, 11, 22, 44, 40, 36,110, 0,176,116,233, 82,125,210, 9,158, 80,136,100,127,255,
+191, 27, 98, 1, 15, 60, 17, 1, 17, 2, 60, 65,158, 23, 21, 20,160, 44,192, 49, 0,167, 3,164, 14,149,244,177,221,204,201,197,
+253,252,170,117,219,204,213, 58,138,163,103,111, 32, 34,226, 3,248, 60, 30,170,185,185,227,187,246,109,133,141,155,182,172,244,
+219,146, 89,231, 8, 33,221, 40,165,143, 43,156,209, 28,149,186,185, 88, 99,247, 31,207, 96, 99, 33,199,128,222,221, 33,147, 74,
+240,235,230,189, 88, 49,111, 50,220,171,185, 98,199,134,149,165,254,220,204,204,108, 89,163,122,181,170,237, 61,126, 25,158,237,
+ 90, 9,246, 29,191,130,246,237, 90, 11,246, 30,191,140,246,158,109, 5,251,142, 95, 70,251,118,109,132,251,142, 95, 70,139, 38,
+245,220, 2, 82,131,150, 1,152, 92,250, 61, 23, 43,163,239,242,202,200, 93, 32, 42,236, 8, 34, 39, 76, 0,128, 66,162, 85, 17,
+ 8,133, 66,231,248,248,120,219,242,174, 43, 79, 53,200, 87,178,158, 50, 12,131,164,164, 36,146,145,145, 65,205,205,205,123, 95,
+222, 49,255,116,151, 54, 13,210, 0, 32, 48, 48,208,210,215,119, 85,239, 99, 79,179,160,124,184,133, 28,250,203,159, 27,214,203,
+243,233, 89,191,145,141,251,247,239,255,188, 36,187,106,181, 58,162, 97,195,134, 52,255,179,147, 68, 34, 17, 21,171, 19,142,238,
+238,238,159,169,214,122,184, 20, 55, 62,120,240, 96,114,237,218,181, 81,171, 86,173,128,230,205,155,155, 26, 27, 27,227,242,229,
+203,240,240,240,168, 99,106,106,250,232,196,137, 19,194,185,115,231, 54,216,179,103, 15, 0, 76,209,163,126,118,242,242,242, 58,
+122,254,252,121,169, 72, 36,130, 82,169,196,203,151, 47, 97,102,102, 6,177, 88,140,239,191,255,158,223,186,117,107,171,246,237,
+219,159,204, 31, 12,232,189, 2, 74,165, 82,209,249,243,231,195,200,200, 8, 70, 70, 70, 48, 54, 54,134,177,177, 49,228, 82,144,
+237,211, 92,100, 83,119,102,200,102, 44,222,238,119, 96,219,146, 91, 46, 46, 46,191, 68, 71, 71,103, 84,180, 46, 40,239,220,129,
+ 60, 48, 16, 40,242,236,234, 11, 51, 99, 75,248,248,248,148,167, 72, 65, 36, 18,161, 85,171, 86,229,218,179,178,178, 58, 37, 16,
+ 8,236,138,117, 14, 82, 31, 31, 31, 54, 44, 44,204,152,199,227, 25,115, 28, 7, 31, 31, 31,150, 97, 24,169,157,157, 93, 0,199,
+113,137,201,201,201,125,203,179, 77, 41, 85, 19, 66,230,240,120,188,141, 18,137, 68, 80,185,114,229,168, 69,139, 22, 61,200, 87,
+ 51, 65, 41,229, 85,174, 92,185,153, 76, 38,115, 85,171,213, 12,128, 57, 6, 53,203,128, 50,208, 56, 79, 20, 46,132, 6,128,184,
+ 64,192,207,235,237, 96, 93,236,123, 0, 72,201, 31, 40,218,149,114,156, 10,224, 21,128,154, 0,108,243,207, 61, 1,144, 86,209,
+ 4,150,169,104, 17, 66,104,145, 11, 11, 59, 22, 19, 19, 19, 60,121,242, 4,132, 16,152,152,152,192,212,212, 20,102,102,102,200,
+202,202,194,171, 87,175,240,250,245,107, 68, 70, 70,130, 16,130,106,213,170,161,224, 1, 42, 98,171,176,129, 59,188,246, 60,164,
+114, 9, 8, 1, 26,117,168,143,250,237,234,162,233,227,240,105,142,142,142, 59,227,227,227,223, 18, 66, 4,117,235,214, 29,211,
+162, 69, 11,172, 91,183, 14,106,181,122, 93, 73, 36,171,168,205, 59, 47,117, 77,242, 59,167,217, 7, 47,191, 55, 26,222,213, 77,
+ 17, 31, 31,191,230, 11, 50,231,147,134, 56, 37, 37, 69,239,189,248, 56,142, 67,122,122,122,153, 54,139, 43, 4,235, 55,110, 49,
+207,206, 76,196,242, 95, 15, 66,167,211, 97,214,172, 89,224, 56,174,240,149,145,145,161, 87, 58, 41, 91, 76,100,224,229,189, 8,
+ 15, 32, 2,192,101, 80, 30,175,136, 62,186, 5,132, 2,132, 5, 80,236,190,138,219, 36,132, 72,249, 34,217,177, 37,191,110, 50,
+127,254, 58, 22,103,111, 60,135, 54, 43, 14, 9,129,167, 1, 0,213, 90, 13,193,113, 53, 31,205,235,187, 97,250,130,223, 44, 22,
+ 78,255,225, 24, 33,164, 86, 81, 55,162, 62, 29, 27,165, 44,150, 47, 91,134,157,155,214,225,183,117,155,144,149,153, 1,161,208,
+ 26, 0,192, 48, 44,216, 98,247,246,217,189, 83,218,117,225,236,241,100,227,174,147,168, 91,221, 30,231,174, 5,160, 73, 29, 87,
+ 92,186,249, 24, 45,234, 85,193, 21,255,103,104, 81,191, 42,252, 31,190,196,172, 73, 35,200,253, 75,251,186, 86,164,140, 54,108,
+216, 98,158,157,149,136,243, 43,247, 35,105,235, 86, 68, 77,158,140,102,249,215, 60, 38, 4, 34,103,103, 64, 84,126, 25, 21, 71,
+104,104, 40,212,106,117, 73,163,125,120,120,120,148, 91,238, 74,165,242, 25,195, 48, 52, 49, 49,145, 36, 38, 38,194,216,216,152,
+188,124, 25,194,214,169, 83,183, 15,125,253,231, 46, 0,240,245, 93,213,231,248,179, 44, 40, 2, 54, 65,249, 96, 51, 68, 85,130,
+120, 59,151,142,215,142, 91,188,227, 89,145, 78,238,147,116, 38, 36, 36,116, 43,248, 92,173, 90,181,215, 97, 97, 97, 53, 11, 92,
+205,249, 46, 68, 17,195, 48,238, 5,238, 68,134, 97,160, 86,171,209,169, 83, 39,126, 89,247,110, 97, 97,209,194,195,195, 3,207,
+159, 63,199,166, 77,155, 44,189,188,188,240,238,221, 59, 16, 66,176,106,213, 42, 82,187,118,109, 97, 74, 74, 10,186,116,233,130,
+ 83,167, 78,181, 42, 47, 63, 9, 33, 38,198,198,198,123,206,157, 59, 39,229,241,120,200,206,206, 6,199,113,104,221,186, 53,120,
+ 60, 30, 66, 66, 66,176, 96,193, 2,156, 58,117, 10,103,206,156,145, 53,110,220,120, 15, 33,196,163,168, 91,191,140, 50,162, 42,
+149,138, 74, 36, 18, 72, 36, 18, 72,165, 82, 72,165, 82,136,197, 98,228,168,128,113,235,163,212,124,169, 53, 87,167, 97, 27,183,
+ 81, 83, 87,241,214, 44, 26,125, 19,192, 89,125,235, 60,144, 55, 39,107,227,222,189,155,134,101,102,242, 0, 96, 55, 33,156,150,
+210,223,244,121,222, 1, 32, 71,149, 9,215,106,206, 56,121,236, 12,250, 13,234, 93, 34,201, 18, 10, 69, 16, 9,133, 48,181, 52,
+ 46,215,166, 72, 36,178,123,253,250,181,149, 80, 40, 4,165, 20, 44,203, 66,171,213, 38, 46, 92,184,208,198,219,219,219,228,210,
+165, 75, 60,111,111,111,206,194,194, 34,247,241,227,199, 73, 12,195, 88,181,109,219, 86,239, 58, 79, 41,221,214,176, 97,195, 70,
+167, 79,159, 30,237,227,227,243,116,246,236,217,203,139,158, 95,189,122,245,178,139, 23, 47,186,246,233,211,231,192,139, 23, 47,
+182, 85,164, 13,249,218,118,222, 96,243,223,207,230,133, 11, 23, 10, 27, 98,111,111,239,226,106,167, 29, 33,228,124,145,255,239,
+ 81,112,236,227,227, 51,223,215,215,247, 37, 33,228,124,209,239, 11,174,203,111, 59,206,151,116,156,255, 91,203,121,243,230,213,
+245,243,243, 91,213,178,101,203,163, 1, 1, 1, 31, 42, 74,180,202,157,163, 85, 64,174,138, 18,174, 98, 6,144,149,149,133,172,
+172, 44,196,196,196, 96,251,246,237,249, 15,180, 16, 2,129, 0, 2,129,160,112, 62, 67,105,184,126,238,238,102, 0,155, 27, 55,
+110, 44, 12,126,112,226,210,207, 59,167,118,108,210,169, 17,255,217,141,224,254, 0, 86, 0,232, 54, 98,196, 8,107, 0,216,191,
+127,127, 10,128, 75,255, 10,202, 76, 41, 61,241,246,237,219,233, 14, 14, 14,133,115, 84,138,186, 15, 25,134,129, 84, 42, 69,193,
+ 92, 22,149, 74,133,237,219,183, 51,148,210, 19,101,216, 68,216,203,155,120,251,242, 86,222,239, 56, 14, 28,251,247,239,151, 44,
+ 89, 82,116,137, 40, 38,228, 43, 39,229,146,188,146,242,156, 22,123, 47,246,253,103,228,236, 51,247,132,104,106,255, 31, 38, 59,
+112, 68,128,191,110,190,128, 80, 40, 4, 87, 68,205, 20,242,243, 70,203, 47,223,197,195,209,174, 14,122, 13, 25,111,127,250,192,
+150,169, 0,126,173,104, 94,215,170,223, 18,211,166, 79,199,174,157, 59,177, 96,241,178, 66,150,206,176, 44,152,114,211,201,227,
+181,110, 82, 27, 57,169,177,224,243,249,104,213,208, 13,124, 62, 31,109,155,212, 0,159,207, 71,155,166, 53, 33, 16, 8,208,190,
+ 69,109, 84,175, 94, 29, 2,129,128, 87, 78,185, 35,236,229, 13,188,125,121,187, 8,233,165,160, 0,180, 9, 9,159, 93,175, 75,
+ 72, 0,117,177,170,104,221,194,152, 49, 99, 50, 98, 98, 98,180,197,207, 85,170, 84, 73,116,231,206, 29,243, 82,220,118,133,144,
+201,100,141, 5, 2,193,179,180,180, 52,206,200,200,136,199,113, 44, 87,167, 78, 93,254,229, 29,243, 79, 23, 92, 51,111,222,252,
+211, 3, 27,155,246, 57,120,226, 60, 21, 85,110, 67,136, 80,194,252,184,120,135, 72, 40,146,233, 21,241,190,192,141,248,230,205,
+ 27,148,151,158,162, 3,179,146,144,158,158, 62,194,195,195,227,206,230,205,155, 45, 9, 33,184,123,247, 46,248,124,126,225, 43,
+ 60, 60, 28, 60, 30, 15, 63,255,252,179, 54, 43, 43,107,108,121,105, 19, 8, 4,211, 79,158, 60,105, 38, 22,139,145,157,157, 93,
+248,220,240,249,124,188,126,253, 26,107,214,172,193,136, 17, 35, 16, 29, 29, 13, 71, 71, 71,204,154, 53, 75,238,231,231, 55, 29,
+192, 50, 61,110, 61, 72,163,209, 52, 49, 50, 50,130, 84, 42, 69, 1,225, 2,128,171, 47,133, 33, 10,133,162,158,181,181,181,189,
+141,255,249,191, 90,121,245,106, 96,101,227,208,178,128,104,233,139,247,192,206, 8,150, 93,216,237,244,105,219,251,167, 79,115,
+ 15,207,157,139,149,100,103,239,208,187, 14,233,120,136, 10,143, 69,227,198,141,241,236,217, 51, 52,110,220,184, 40,105,130, 88,
+ 44,134, 72, 36,130, 72, 36,130,181,133, 94, 83, 40, 40,143,199,195,253,251,247,193,178, 44, 52, 26, 13, 52, 26, 13,106,215,174,
+157,118,235,214, 45, 57, 0,132,135,135,211,225,195,135,103, 60,122,244, 8, 13, 27,150,189,159,186,189,189,253, 29, 62,159, 95,
+185,216,179,106,209,183,111, 95,164,167,167,119,239,219,183,111,155,252,239,226,254,252,243,207,225, 0, 32, 22,139,193,227,241,
+ 88, 24,240, 63,143, 2,114, 85,148,112,149,208,230,244, 40,126, 76, 8, 57,239,235,235,219,163,248,119, 69, 73, 85, 73,159,139,
+254,214,207,207,111, 85, 17,219,202, 47,240,134,149, 63, 71,139, 16, 66,203,107, 52,203, 66,121, 68,171, 0,207,158, 61,211, 57,
+ 57, 57,237,122,251, 34,178,163, 91,253,106,144, 25, 75,190, 35,132,108,150, 72, 36, 51,127,248,225, 7, 60,124,248, 16, 33, 33,
+ 33,127,124,237,118, 42,245,234,213,187, 34,145, 72, 92, 75,113,147, 68, 5, 7, 7,119, 41,165, 99, 88,156, 63,231,172,212,201,
+240, 69,231,139, 21,157, 12, 95,106,197,224, 40,116, 90, 29,114, 21,202,191, 59,241,124,162,149,155,155,139, 65,131, 6,125,162,
+104, 37, 37, 37,233, 83,168, 88,115,246, 44,174,157, 56,129,238, 13, 26,224,212,227,199,240,251, 97, 40,106,185, 58,129,178, 4,
+148, 0,209, 71,182, 32, 53, 43, 7,135,111,220, 71, 90,182, 2,195,218,182,133,187,169,117,217,118,133,162,206,205, 90,180, 20,
+ 93, 15,120, 5,161, 80, 0, 30, 56, 80,157, 2,142, 30,237,193,231,241, 96,102, 87, 5, 34,161, 16, 66,161, 0,225, 49, 41,240,
+168,219, 84,124, 94, 44,237,252, 37, 68,171,146,107, 21,176, 44,139, 17, 35, 70,224,232,209,163,176,178,119,133, 89,165,186, 88,
+177,110, 39,186,119,106, 91,238,253, 23,140,224, 5, 2, 1,248,124,254,103,239, 5,159,245, 81, 39, 41, 71,161, 45, 94, 70, 28,
+ 5, 40,133,243,202,149,112, 94,185, 18,143,243,255,179,118,110, 46,148, 74, 37,208,188, 78,133, 72,150, 70,163, 65, 76, 76,140,
+ 54, 33, 33,193,174,132, 14, 42, 81,163,209,148, 75,108,246,237,219, 23, 52,114,228,200, 38,150,150,150, 79,131, 2, 3,117,245,
+ 27, 52, 16, 94,218, 62,255, 76,129,219, 16, 0, 26, 52,104,144, 54,127,254,252, 51,195, 7,244,232,189,205,103, 48, 59,113,217,
+ 1,129, 68, 38,107,210, 99,118,217, 19,226,139, 60, 31, 17,245,235,215,167,250, 92,171, 80, 40, 62,150, 81, 70, 61, 1, 44,109,
+212,168,145,169,151,151, 23,238,220,185,131,126,253,250,169,181, 90,237,219,252, 70,181,198,225,195,135,197,175, 94,189,130,141,
+141,141, 48, 42, 42,106, 15, 33,164,204, 9,242, 98,177,184,125,211,166, 77,121,106,181,250, 51,146,229,231,231,135, 33, 67,134,
+160, 70,141, 26,224, 56, 14, 57, 57, 57,240,242,242, 18,110,218,180,169,189,158, 68,107, 90,173, 90,181,214, 32,111,213, 97,209,
+182, 48, 20,192,156,124,181,251, 99,143,126, 35, 94,182,237,212,183, 73,229,234,117, 29,202, 51,104,103,103, 55,143,199,227, 13,
+228, 56,142,159,149,149, 21,163, 33,164,122,109, 87, 87,187,214,189,123, 35, 83, 40,228,111,188,113,131,151,152,157, 45, 7,160,
+151, 11, 82,165,203,133,107,181,188,169,126,253, 6,245,198,179,103,207,208,127,112, 31,136, 68, 34, 8, 4,194,188,103, 83,148,
+167,104,153, 91,155,234, 85, 55,117, 58, 93, 97, 27, 94, 48,207, 75,171,213,162, 96,106,150,145,145, 81,225, 57,181, 90, 93,234,
+128, 60, 31,238,199,151, 45,178,149,153,154,129,213,233, 80,167,119,255,194, 58,253,104,247, 54, 25, 56, 78,150, 17, 21,129, 41,
+ 39,206, 9, 97,128, 1,165,168, 90, 37,168, 89, 69,219,149,243,197,201,214,151,130, 16,114,222,199,199,103, 62, 0,234,227,227,
+ 51,191,224,216,215,215, 87, 9, 32,238, 75,200, 86, 73, 42,151,224, 91,144,172, 2,247, 66, 89,232,208,161,195, 20, 19, 19,147,
+ 77, 0,208,164, 73, 19,196, 60,140, 67,204,195, 56,120,212,172,211,186, 81,131, 38,153, 67,134, 12,129,149,149, 21,102,207,158,
+ 77, 1,252, 81,209,255, 15, 15,123, 41, 7, 64, 29, 29, 29,103, 3,128,163,163, 99,131,199,143, 31,219, 60,121,242, 4, 77,155,
+ 54,253, 91,186,215,106,209,166, 77,155,178, 58,196,108,228,205,181,154,241,237, 84, 50, 14, 90,173, 22, 10,133, 18, 26,141, 22,
+140,142, 3,195, 48,104, 92,199, 4, 7,118,250,228,125,199, 20,168,103,121,170,153,179,189, 9, 26,215,179,215,241,120, 68,249,
+ 36, 48,161,196, 22, 83,163,209, 32, 40, 42, 10,129,145,145, 0,128, 94,190,101, 79,124, 61,112,227, 14,106,215,174, 93, 94,106,
+221,156, 29,237, 17,127, 45, 40,175,241, 86,198,224,201,189,227, 48, 49,145, 3, 0,234,120, 14,131, 72,148, 71,180,114,149, 90,
+ 88,215,172, 4, 66,105,169, 97, 1,140, 45, 29,174, 8, 68, 82, 87,202,114,160,148, 3,229, 88, 80,202, 65, 98, 98,101, 52,101,
+194,104,112, 28,139,102,205,154,129,240,249, 96,117,106, 12,232,217, 25,233,153,217,176, 50,215,175,147, 16,137, 68,240,244,244,
+148,149,118,254,221,187,119,202,162,196,172,236, 50,210, 33, 55, 87, 9,181, 90, 13,173,134,129, 86,199,128,173, 42,194,242,133,
+ 67,193,104, 25, 40, 6,183,132, 86,199,128,155,222, 7, 90,141, 14,209, 70, 60, 94,131,218, 54, 58, 30,136,242,249,171, 36,211,
+242,136, 86, 1, 57, 40, 13, 37,205, 9, 44,133,108, 5,142, 28, 57,178,113,253, 6, 13,158, 13,236,212, 96,109,112,200,203,248,
+224,144,151,159, 93,231, 90,163, 65,196, 68,191,163,179,132, 34, 89, 99,125, 73, 22,240,169, 27,241, 43, 49, 63, 59, 59,187,190,
+ 92, 46, 71, 88, 88, 24,248,124, 62, 8, 33,239, 40,165,245, 1, 96,252,248,241,239, 5, 2, 65, 53, 62,159,143,173, 91,183, 18,
+129, 64, 80,175,101,203,150,243, 1, 28, 47, 99, 64,231, 97, 98, 98,242,137,154, 37, 18,137,224,227,227,131,225,195,135, 23,146,
+ 44,145, 72,132,125,251,246,161, 73,147, 38,208,104, 52, 30,122,146,225, 39, 0,218,234,161,248,145,124,114, 94, 46, 25,101, 24,
+102,100,234,192,129,213,225,239,143,214,213,170,213,110,220,184, 49,180,218,191, 5,205,106,213,170, 85,202,206,206,254, 72, 8,
+ 57, 4, 96, 27,165,244, 69,153,164, 72,197, 33, 42, 60,182, 96,208,138,102,205,154, 21, 42, 88, 69,213, 44,145, 72, 4,153, 88,
+ 94, 33,162,197,113,121,237, 82,118,118, 54,207,223,223,223,186, 86,173, 90, 4, 0,106,213,170, 69, 94,188,120, 97,105,100,100,
+148,226,230,230, 86,238, 0, 88,102,106,134,125, 35, 7, 1, 0,126,233,212,181,112, 96,116,121,233,124, 8,133, 66,116,156, 61,
+255,179,122,207,113, 28, 31, 6, 24, 72, 86, 57, 36,171, 36, 69,235,235,250,230,191, 21, 45, 95, 95,223,151,190,190,190,159,169,
+ 99, 21,180, 87,190,162,165,143, 43,160,188,135,181, 52,172, 91,183, 14,245,234,213, 43,179, 35,218,180,105, 19, 14, 30, 60,184,
+142, 82, 26, 94,209,255,239,209,177, 81, 29,172, 63,253,178, 90,141, 58, 4, 0,150, 77,239,201,203,205,205,197,253,251,247, 97,
+102,102,134,119,239,244, 11,251, 69, 8, 49, 49, 51, 51, 91,202,227,241, 6,240,139,175, 0, 40,153, 96,178, 28,199,157,200,204,
+204, 44, 53,188, 3,165,128, 86,199, 32, 87,161,130, 70,163,193,244,159,183,148,155, 14, 95,128,104, 53,217, 2,207,118, 45,101,
+165, 41, 58,205,234,181,199,164, 31,228,159,117,222,124, 30,192,227, 1, 13,155,229, 41, 46, 47, 30,191, 4,199, 1, 44, 7, 88,
+219, 90,224,143, 35,107,203,204, 2,134,229,242, 71,199, 44,114,212, 44, 60, 90,244, 64,108,168,127,161,130, 36, 22,229,185,140,
+ 69, 66, 33, 56, 74,242,162, 62,148, 70,132,196, 50,215,244,132,112,247,157,231,131, 49,174, 71, 61,252,121, 61, 8,253, 59,213,
+199,173, 71,175,224,213,188, 54, 94,190,141, 68, 29,247,202,216,186,231, 4, 40, 69,246,239,235, 87,124,252,187, 67, 99,162,244,
+ 81,180, 30, 62,124,168, 44,174, 98, 21,125,167,229,247,135,160,244,111, 69, 75,169, 82, 99,246, 60,189,194,249,228,149, 81,219,
+ 22, 50,125, 46, 46, 75,177,210,135,136, 21, 87,182, 80, 78,120,150,170, 0,154, 0,115,255,149, 13, 39,203,178,184,112,225, 66,
+ 97,121,148, 84,142, 69,203, 78, 15,146,131,168,168, 40,188,124,249, 18, 45, 90,180, 64,102,102, 38,132, 60, 30,102, 5, 7,163,
+246, 15, 63, 64, 35, 18,129,227, 56,136,197, 98,140, 31, 63, 94,239,252,172, 96,107,154, 63,207,141,165,229,180, 37,107,123,244,
+232, 81, 61, 44, 55, 23, 47, 95,191, 70,167, 37, 75, 0, 0, 23, 47, 94,252,164, 78,204,156, 57, 83,252,234,213,171, 49, 79,159,
+ 62, 29, 67, 8, 89, 71, 41,157, 85,106, 59, 75,213,133,115,180, 6, 14,237,135,234,181,170,226,224,222, 35,133,231,103,206,153,
+ 6,161, 80, 4,161, 72, 8,115, 51,115,189,238, 70,167,211, 21,146, 86,133, 66,193,187,120,241,162,115,231,206,157, 69,211,166,
+ 77, 35, 0,112,240,224, 65,222,230,205,155,141,175, 93,187, 38,114,114,114, 74, 40,151, 92,106,181,159,149, 49, 33, 4, 66,161,
+ 16, 34,177, 8,224, 56, 16, 66,140, 87,175, 94,189,236,229,203,151, 77,107,213,170, 5,181, 90,253, 3, 33,228,185, 33,142,150,
+ 1, 5,110,195,210, 8, 87, 73,115,173,242, 85,169,210,144, 92,116,222, 86,105, 68,173,232,156, 45, 0,234,138, 55, 11,122,206,
+209, 42, 9,124, 62,191, 92,181,138,199,227,149,235, 58,156, 57,115, 38, 76, 76, 76, 74,235,128,104,112,112,240,171,132,132,132,
+157,148,210, 45, 95, 82, 56,231,111, 60,127,185,116, 70,159,108,228,251, 86,205,205,205, 83, 58,116,232,144, 3, 64,123,252,248,
+167, 3,100,181, 90, 93,106, 7,110,102,102,182,116,247,238,221, 83,123,247,238,205, 43, 30, 98,160,168,123,175,224,165,211,233,
+112,252,248,241,169,115,231,206, 69,105, 42, 88, 65, 39,174,200, 85, 66,153, 63, 17,250,125,200,159,250,150, 94,169,167,228,230,
+ 14,112,174, 90,191,212,206,132, 39,202,155, 67,100,231,242,119, 7,102, 98, 34, 5, 91,134, 77, 66,120,225,145,209,241, 78,149,
+236, 45,241, 62, 38, 25,118,149,235, 33, 61,238,239,124, 16, 8,248, 16,230,187, 14,205, 77,141,145,156,148, 4, 30,143, 95, 38,
+ 49, 94,113,248, 57, 30,133, 68,226,228,245, 23,208,170,114,177,126,255,101,104,213, 57,208,170,114,161, 85,229,189,175,154,251,
+ 35, 8,193, 71,173, 42,167, 70, 69,202, 93, 32, 16,160,121,243,230,165, 18,157,184,184, 56, 61, 21, 45, 90,168,104, 41, 85, 21,
+ 44, 35,253, 30,194, 50, 21,171,130,243, 95, 74, 12, 10, 66, 62,200,100,178, 38,251,246,149, 30,198,161, 36, 56, 56, 56, 92,146,
+203,229, 85,244,189,190, 2,193, 75, 87,153,155,155, 47,173, 85,171,150,199,250,245,235,133,124, 62, 31, 29, 59,118,172,241,227,
+143, 63, 70, 1, 64,189,122,245, 28, 11,218,152,137, 19, 39,210,135, 15, 31,134,228,141, 49, 74,135, 88, 44,126,109,102,102,214,
+196,203,203, 11,153,153,153,136,137,137,129,177,177, 49,106,175, 93,139,224,137, 19,209, 96,251,118,240, 58,116, 0, 33, 4, 98,
+177, 24,193,193,193,144,201,100,175,203, 32, 67,205, 1,252, 6,160, 53,254,118, 23, 82, 0,247, 1,252, 76, 41,125, 84, 66,123,
+199, 3, 0,150,227,202, 43,172,161,179,103,207, 70,134, 80, 8,120,123, 67, 20, 30, 14,173, 86,139, 22, 45, 90, 20,170,236, 45,
+ 90,180,128, 64, 32, 64,253,250,245,225,232,232,136,173, 91,183, 14,197,167, 43,177, 63,129, 42, 71,139,168,240, 88,180,108,217,
+178, 80,185,242,246,246, 46, 84,180,132, 66, 97,161,178, 69,216,242,137, 43, 33,132, 22, 29, 36,179, 44, 75, 4, 2,129, 96,198,
+140, 25,164, 95,191,126, 84,163,209,112, 98,177,152,119,242,228, 73,114,235,214, 45, 65,110,110,110,185, 3,241,186,125, 6,224,
+151,206,121,162,232,138, 42, 54, 16,138,132, 16,139, 68,152,253, 58,182,176, 92, 76,247, 29, 21,251,249,249,245,175, 85,171, 86,
+158, 27, 30, 16, 24,226,104, 25, 80,142,154,149, 92,140, 36,105,138, 28, 39, 3, 32,249,199,201, 69, 8, 85, 50,242, 86, 16, 54,
+ 45,118,109,193,121, 77,177,247,130,243,129, 21, 77,123,145,189, 14, 63, 35, 95,101,141,136,223, 62,120,240,192,189,113,227,198,
+136,142,142,254,108, 37, 92, 65,199,101,108,108, 12,153, 76,134,128,128, 0, 0,120, 91,154,177,155, 55,111,110, 70, 94,212,101,
+ 0,128,163,163, 99, 75,175,129,237, 3,154,117,109,138,195,190, 71, 50, 19, 18, 18,234, 23,196,208, 33,132, 16, 71, 71,199,225,
+ 66,177, 96, 80,181,186, 46,158,224,184,223,174,255,117,111, 73, 89, 55, 89,173, 70,157, 28, 0,202, 34,171, 14,215,124, 73, 65,
+243,120,188, 1,189,123,247,230,189,122,245, 10,131, 6, 13,194,193,131, 7, 75,189,118,248,240,225, 56,122,244, 40,122,247,238,
+205,155, 55,111,222,128,242,136, 86,158, 90,162,249,102,149, 50,236, 93, 32, 14, 28,221, 93,234, 28, 36, 91,219,188,249, 88, 73,
+ 73, 41,133,223, 53,109, 92,182,103,132, 99, 52,215,158, 63,125,220,178, 85,187,142,162,152,196, 12,112,140, 26,170,236,191,127,
+175,200, 72, 4,101, 84, 16, 25, 89,194,222,218, 12,207, 30, 92,213,104, 53,170,107,101,217,156,218,187, 14, 38,246,244, 0, 40,
+135, 62,179,254,192,249, 45, 83, 10, 71,208,109,250, 77,195,141,227, 27,245,158,227, 87, 28, 66,161, 16,193,193,193,202,210,212,
+ 44, 62,159, 95,110, 76,174,191, 85, 71, 29, 20, 10, 37, 20, 74,213, 55, 43, 35, 66,136,141,157,157,221,239,150,150,150,210,146,
+136, 20, 33,196,198,198,198,230,119, 43, 43, 43,169,190,174,195,210, 72, 86,126, 92,173,167, 35, 71,142,172, 16,217,146, 72, 36,
+ 85,222,190,125, 91, 24,172,180,172,119,141, 70, 3, 47, 47, 47,189,130,151, 82, 74,207, 17, 66, 62, 56, 56, 56,220,175, 93,187,
+182,217,251,247,239,113,228,200, 17,145, 80, 40,116, 41,104, 63,178,179,179,193,231,243,145,148,148,164, 3, 48,186, 60,215,153,
+ 90,173,246,247,247,247,111,216,179,103, 79,254,235,215,175,193,231,243,243,210,213,178, 37, 26,108,223,142,144, 25, 51,224, 25,
+ 25, 9,149, 86, 11,169, 84,138, 43, 87,174,104, 21, 10,133,127,105,246,100, 50,217,206,136,136,136, 58, 82,169, 20, 90,173, 22,
+ 28,199,129,199,227, 17,129, 64,208,198,220,220,124, 19,128,166,159, 62, 83,182,182,227,103,254, 90,147,101, 24, 54, 33,250,125,
+114,121,121,144,154,154,138,115,231,206,161, 69,139, 22,240,244,244, 68, 92, 92, 28,194,195,195,209,189,123,247,194,107, 2, 3,
+ 3,241,252,249,115,184,185,185,149,175,232,241,116,112,171, 89, 5, 34,145, 40, 79, 33, 18,138,242, 7, 62,194, 66, 37, 75, 36,
+ 20, 65, 40, 16, 66, 42,147,234,173,104, 17, 66,192,227,241, 64, 8,129, 76, 38, 43, 24,100,115,206,206,206, 9,105,105,105, 14,
+ 0,248, 50,153, 12, 44,203,234, 53,104, 41,232, 35, 10, 72,150, 72, 44, 42, 84,182, 0, 32, 35, 35, 67,213,187,119,239, 67,106,
+181,122, 20,190, 96,135, 18, 3,254, 39,241,228, 95,244, 91,189,121, 34,165,116,103, 73,147,226,203,170,224,221, 91,181,106,181,
+125,200,144, 33, 29, 55,108,216, 0,185, 92,142,132,132,132,194, 14, 81, 44, 22,163, 82,165, 74, 72, 75, 75,195,142, 29, 59, 16,
+ 27, 27,123, 19,192,120,125, 83,148,144,144,240,240,221,139,183,169, 94,253, 91, 89,213,105, 85,211, 60,230,109,108, 11, 0, 1,
+249, 36,235,143, 33, 51,187,143,242,234,219, 12, 34,177, 16, 49,239, 62,254,191,149, 36,159,207,231, 19, 66, 48,104,208, 32,189,
+174, 31, 60,120, 48,252,253,253, 81,150,155,145, 43, 80,180, 20, 42,228, 42,191,221, 96,109,210,148,225,152, 52,101,120, 33,153,
+208,199,245,146, 71,114,143,149, 65,180,180, 27,206, 31,219, 49,174, 81,179,150,174, 77,234, 84,193,163,167, 47,112,120,251,223,
+ 34,195,158,205,203,240,235,158,155,168,100,103, 1,173, 58, 23,151,254,220,245, 81,171, 86,108,248, 66, 81, 46,143,220, 18, 2,
+ 61,227, 84,126,162,162, 22, 16,173,186,117,235,150,170,104,165,165,165, 41,203,235, 24, 10,203, 72,163, 67, 78,174, 18, 74,197,
+183, 33, 90,132,144, 6,109,218,180,185,118,226,196, 9, 43, 91, 91, 91,196,199,199,127, 66,180, 8, 33, 13, 90,183,110,125,237,
+196,137, 19, 86,118,118,118,136,137,137,209, 59,172, 72, 9, 36, 11,201,201,201, 36, 61, 61,157,179,176,176,168, 16,217,226,241,
+120, 80,171,213, 8, 13, 13,213,247,111,245, 94, 33,102,102,102,182,239,232,209,163,102, 41, 41, 41,224,243,249, 8, 13, 13,253,
+100,213, 97,193,235,143, 63,254, 16,245,233,211,103, 55,128, 50,151,181, 49, 12,179,110,248,240,225, 99,226,226,226, 44,108,109,
+109,145,144,144, 0,177, 88, 12, 74, 41,136,151, 23,218,126,248, 0, 45,203, 66, 38,147, 33, 44, 44, 12, 59,119,238,204, 85,171,
+213,235, 74, 41, 31,177,145,145,145,187, 72, 36,194,176, 97,195, 62, 57,183,127,255,126,244,106,194,111, 50,174,179, 36,135,129,
+ 84,157, 40,235,118,137,207,231,147,241,179,127,171,209,188,157,119,221, 55, 33,143,222, 39, 39,198,222, 47,231,246,117, 26,141,
+ 6,181,106,213,194,147, 39, 79,112,253,250,117,116,232,208, 1,158,158,158, 8, 10, 10,194,213,171, 87,241,252,249,115, 16, 66,
+ 96,101,101, 85, 48,253,162,204, 57, 24, 26, 5,131,164,248,212,207,212,171,226,199, 34,145, 8,106,165, 86,175, 50,122,253,250,
+ 53,158, 60,121, 82, 24, 90,134,207,231, 51, 63,252,240, 3, 40,165, 52, 34, 34, 2, 38, 38, 38,116,228,200,145,172, 64, 32, 96,
+226,226,226,244,173,251,121,234, 85, 62,201, 18,136,132,159, 16, 52,142,227,178, 3, 3, 3,199, 17, 66,130, 8, 33,171,243,191,
+ 54,196,209, 50,224, 63, 25, 23,138,238,117,168,151,162, 69, 41,253, 0,160, 19, 33,100,232,153, 51,103,214,109,218,180,201,166,
+ 71,143, 30, 72, 79, 79,135,171,171, 43, 28, 28, 28,112,254,252,121, 92,188,120, 49,133,101,217, 89,148,210,131, 37, 60,108,157,
+ 74,139,181, 65, 41,165,142,142,142, 39,212, 57, 57, 19, 27,123,122,224,230,241,187,190, 14, 14, 14,227,157,156,156,166,143,156,
+255,253,168,246,189,155, 34,236,121, 4, 30, 94, 13, 70, 98,116, 10, 70,182,253,185, 76,155,197, 39,195,155,155,155,143, 49, 50,
+ 50, 18, 3,208,150, 48, 42,254,100,213, 97, 81,155, 44,203,178, 26,141, 6,199,142, 29,211,139,108, 29, 57,114, 4, 42,149, 10,
+108, 49,255,106, 81,155,148,163, 68, 32,148,192,177, 82, 45,104,181,185,224,184, 47, 83,111,138,218, 44, 24,129,190, 23,139, 97,
+155,146,130, 71,143, 30,233, 43,205,150, 89, 70,148, 82, 21, 33,100,216,198,149,179,207, 79,246,249,205,188, 67,171,134,248,101,
+237,126,104,181,123,192,227,243, 32,147,136,208,184, 89,107,240,161,198,239,126,115, 50, 20, 89,233,195,138,111,197,243,153,205,
+178, 60, 44, 20, 96, 57, 14,215,239, 60,214,251,222, 11,123,123,150,133, 64, 32,192,187,119,239,148, 37,173, 54,228,243,243,220,
+156, 5, 35,245,178,108, 82,142, 35, 66,145, 20,149, 92,107, 67,163,206,249, 38,101,100,107,107, 59,231,244,233,211, 86, 5,161,
+ 18,130,130,130, 64, 8, 9, 45,162,142,204, 57,125,250,180,149, 82,169, 68, 72, 72, 72,193, 86, 83,161, 21,121,142, 10,148,172,
+228,228,100,146,144,144, 0, 35, 35, 35, 94, 80, 80,144,186,126,253,250, 79, 81,246,206, 15,133, 54, 85, 42, 85,100,105,243, 39,
+ 85, 42,149,147, 84, 42, 21, 22,251,173,163,187,187,123, 88,113, 23, 98, 73,233,204,204,204,124, 52,119,238,220,198, 93,187,118,
+197,156, 57,115,210, 44, 44, 44, 76,126,255,253,119, 1,159,207, 39,147, 39, 79,102,147,146,146,114,118,237,218,101,118,230,204,
+ 25,100,100,100, 4,148,119,239,148,210,108, 66,200,184, 86,173, 90,237,191,124,249,178,145,187,187, 59,178,178,178, 64, 41,197,
+190,125,251, 48,121,242,100, 72,165, 82,132,133,133,161, 87,175, 94, 10,133, 66, 49,174,248,220,201, 34, 54, 9, 33,132,114, 28,
+135, 69,139, 22, 21, 6, 39, 45, 8, 86,106, 34, 35,216, 57,179,170,241,180, 93,153,198, 67,127,217,245, 3, 0,176, 12,195,190,
+ 9,121,244,126,223,150, 95,110,137, 68,162, 59,229,148,209,130,105,211,166,253,238,237,237, 45,147,203,229, 72, 75, 75,195,253,
+251,247,241,224,193, 3, 60,124,248, 16, 26,141, 6, 86, 86, 86,176,176,176, 64, 66, 66, 2, 94,191,126,173, 4,176,160, 44,155,
+ 98, 35, 33,170,213, 40, 88,249,155,167, 96, 9,139,172, 54, 44,170,110,137,132, 66,189,158,163,118,237,218,161,121,243,230, 5,
+ 4,136,141,138,138, 74, 80,171,213,164, 8,233,143, 43, 32,228, 46, 46, 46,204,193,131, 7,105, 89, 54, 31,238,220,138,203,203,
+ 23, 64, 44, 18, 97, 86,104, 76, 33,233,218,223,161, 17,132, 98, 17, 60,122,246, 43,218, 15,108, 35,132,236,201,255,172,214,167,
+206,127,197,192,199, 96,243,223,220,230,127, 50, 40,165, 9, 0, 42,182, 5, 79,145, 31, 31, 38,132, 92,250,241,199, 31,253, 26,
+ 52,104,240,227,250,245,235,137, 72, 36,194,146, 37, 75,104,124,124,252,222,252, 81, 72,250, 23, 38,108,239,237, 83, 1, 19, 70,
+248,244, 38, 51, 55,140,108,243,244, 70,200,235,122,173,220, 81,175,149, 59,158,222,124,133, 45,243,143, 28,100,117,236,162,132,
+132,132,232,114, 76,169, 59,181,174, 89,124, 50,188,149,255,173, 27, 86, 21, 93,117,200,113,220,137, 35, 71,142, 76,237,219,183,
+ 47,239,241,227,199,159,205,201, 42,216,118,135,227, 56, 92,187,118, 13, 90,173, 22,123,247,238,229, 56,142, 43, 61,142, 22,232,
+217,141, 27,252, 70,236, 61,112, 86, 44, 22, 17, 60,184,115, 18,153,233,101,171,116, 34,145, 16,127,236, 59,165, 21,137,132,111,
+ 74, 58,175,213,106, 99,110,220,184, 97,215,133,101,133, 60, 30,239, 51, 2, 85, 26, 78,156, 56,161,227, 56, 46,170,156,114, 9,
+ 32, 68,216,115,197,156,209, 71,188, 7,254,104,215,170, 85, 27,161,181,173, 29, 8, 33, 72, 74, 76, 66, 88,200, 99,221,165,147,
+187, 19,115, 21,217,122,109,193, 51,122,205,237,194, 57, 89, 0,208, 99,242,166,194,249, 89, 0,208,115,228, 92,120,181,168, 3,
+162,143,244,244, 55,201,226, 24,134,129,177,177, 49, 24,134, 41, 49,196,131,153,153,153, 76,165, 82, 41,243, 3, 49,150, 41, 21,
+ 81,224,155,151, 17,203,178, 30,233,233,233,200,205,205,197,131, 7, 15,232,202,149, 43,147,147,147,147, 11, 39,109,234,116, 58,
+143,180,180, 52,228,228,228, 32, 32, 32,128,250,249,249, 37,167,166,166,206,175,200, 51, 36,147,201,154, 8, 4,130,167,233,233,
+233,156,145,145, 17, 79,167,211,233,234,215,175, 47,145,201,100,122,111,168, 30, 31, 31,223,181,180,115,110,110,110,111,223,190,
+125, 91,157,101,217,162,123, 32,138, 84, 42,149,123,171, 86,173,244,113,249, 76,219,179,103, 15, 78,157, 58,213, 44, 43, 43,107,
+120, 84, 84,212,126, 0,205, 4, 2, 1, 94,188,120, 17,170, 82,169,134,244,237,219,119, 95,122,122,250, 35, 0,211,244,108, 55,
+ 46, 19, 66,134,121,120,120,236, 89,186,116,169,220,211,211, 83,224,232,232,136,166, 77,155, 34, 44, 44, 12, 23, 46, 92,208,109,
+219,182, 45, 87,161, 80,140,166,148, 94, 43,187,216, 65, 24,134,129, 88, 44, 46,124, 73, 36, 18,136, 68, 34,100, 43, 41,198,174,
+ 13, 87, 50,144, 41,215, 45, 25,119,129, 2,228, 99, 76,120, 74,210,199,152, 71,132,144, 59,241,241,241,153,165,228,153, 88,165,
+ 82, 53,116,112,112,224, 19, 66, 54,104,181,218,145, 83,166, 76,113, 88,181,106, 21,106,214,172,137,148,148, 20, 24, 27, 27,195,
+221,221, 29,201,201,201,120,252,248, 49,171, 80, 40,182, 3, 88, 70, 41, 45,211, 29,153,145,146, 5,103,123,151, 79,148, 79, 74,
+ 41, 40, 11,232,212, 44, 88, 45,133,134,232, 32, 20,234, 32, 18,137,244,233, 44, 41,199,113, 72,119,112, 0, 23, 18,130,135, 15,
+ 31,130, 82, 90,170,170, 86,171, 86, 45, 61, 10,136,131, 88, 34,254,196, 93, 72, 8,129, 72, 44,134, 80, 44,250,108,229,140, 65,
+197, 50,224,191, 29,250,206,181,200, 0, 48,158, 16,178,191,125,251,246,231, 41,165, 66,228,249, 35,239,126,205,159, 39, 36, 36,
+ 60,115,116,116,156,103,231,108,225,215,109,120, 27,212,108,232, 10,150, 97,113,255,226, 11,236, 93,117,230,104, 92, 76,220, 72,
+125,246, 62,227, 56,238, 86,235, 38, 53,121, 40, 18,171,219,209,209,145,251,146, 85,135,153,153,153,139,103,205,154,133, 57,115,
+230, 84,120,213, 97,105,215, 4,133, 38,141,111,224, 97,227,220,179, 91,219, 46, 32, 60,170,209,168,203,104,248, 80, 24,185, 84,
+ 36, 18,190,121, 28, 24, 95,191,164,235,146,147,147,187,140, 26, 53,234,154, 64, 32,168, 82,145, 60,231, 56, 46, 42, 49, 49,177,
+ 99,249,101,174,187, 79, 8,113, 63,119,116,199,140,203,167,246,116,225, 56,214,141, 0,224, 11, 68,239,117, 90,237, 21,181, 50,
+107,189,190,155, 74,175, 30,223, 18,211, 54, 94,197,214, 57, 61, 49,197,239, 56,118, 47, 26,139,121,107,143,224,183, 57,211,176,
+114,211, 33,252, 50,109, 24,250, 15, 29,197, 81,194,187,167,239,125,240,249,252,203, 59,118,236, 24, 49,118,236,216,194, 69, 11,
+148,210, 79, 26,118,157, 78,167,228, 56, 14,219,183,111,231, 0, 92, 46,203,222,167,101, 68,104, 89,243,165,244, 45,163,172,172,
+172,209, 45, 91,182,220, 7, 64, 66, 41,125,151,158,158,254, 19,165,180,112,107,168,156,156,156,209,173, 90,181,218, 71, 41,149,
+ 16, 66, 62, 59,175, 15,242, 67, 61, 52,177,176,176,120,154,175,100, 73,190,100, 66,124, 89, 89, 93,134, 91,145,213,163,237,224,
+ 80,100, 91, 29, 66,200,170,102,205,154, 21,221, 84, 58, 20, 64,147,138, 38,138, 82,122,141, 16, 82,103,209,162, 69, 51,164, 82,
+169,151, 66,161,168, 1, 0,198,198,198, 97,106,181,250,150, 82,169, 92,159,223,110,149,101, 67, 99,100,100, 20,198, 48, 76, 93,
+ 27, 27,155,188, 21,181,249,100, 11, 0,254,122,202, 62,165,148,105, 90,209,180, 93,188,120,177,178,133,133,197,119,132,144,254,
+148,210, 90,217,217,217,234, 69,139, 22, 5,156, 56,113, 34,179, 74,149, 42,221,188,189,189,137,165,165, 37,158, 60,121, 66, 83,
+ 83, 83, 79, 2,152,175,207, 74,107,142,227,162, 86,175, 94,141,138, 62,239,101,157,215,106,181, 31, 47, 94,188,104,221, 53, 41,
+ 73,192,113, 28,122,246,236,249, 9,129, 43,142, 55,111,222, 64,173, 86,151, 25,204, 81,157,153,142, 14, 51,230, 2,249,171, 63,
+ 11,144,167,100, 81, 80,141,129, 87, 25,240,191, 5,242,143, 44,127,174,160,180,232,232,232, 56, 72,106, 44,153,228, 90,195,161,
+126,124,120,210,171,236, 76,197,193,132,132,132, 29,148, 82,246, 75,109, 86, 36, 96,169, 65,254,253,231,108,254, 29, 71,139, 5,
+165, 44, 40, 71, 65, 41, 7,142, 99,243, 54,188,166, 28, 40,203, 18, 66,112, 79,173,200, 28,171,111, 58, 9, 33, 22,214,214,214,
+203, 40,165, 93,249,124, 62,175,168, 24, 86,244,115,190,146,117, 57, 57, 57,249,151,226,202,235,127, 98,126,254,249,231,159, 37,
+146,127,125, 87, 29,246,239,223,159,173,224,179,121,203,216,216,184,196,192,156,185,185,185,209,241,241,241,223,253, 59,228,103,
+129, 26, 74,245,104,208,138,185,224, 43,188,234,176, 60,155,149, 43, 87,150,104,181,218, 70, 0,220, 9, 33,230, 0,210,180, 90,
+237,149,228,228,228, 68, 66, 72, 19, 0,139,242,127,182,156, 82,250,244, 95,249,188, 19, 66,100,214,214,214,123,120, 60,158,179,
+ 62,191,103, 24, 70,147,150,150, 54,162,232,128,160,168, 77,107,107,235,167, 2,129,192, 89, 15, 59,177, 41, 41, 41, 77, 12,237,
+167,193,230,127, 13,153, 42, 54, 9,190,232,241,191,197,106,143,248,248,248, 99, 0,142,125, 75,155,165, 69,126, 55,224,255, 23,
+185,105, 9,255, 72, 57,228,147,166,201,255,107,249, 89, 64,148, 74,248,254, 25, 0,242, 15, 60,155, 94,255, 9,249, 66,191,112,
+196,152, 79,164,218,126,203,180, 68, 70, 70,170, 1, 4,228,191,138,255,223, 83, 0, 61,255,141,242, 77, 9, 96,208,183,178, 87,
+ 22,121, 50,192,128,255, 85, 24,150,213, 26, 96,128, 1, 6, 24, 96,128, 1, 6,124, 29, 46, 20,219,130,231, 66,193, 7, 2,160,
+ 83, 41, 35, 29,189, 37, 65, 66, 72,167, 47, 24, 73, 93, 55,216, 52,216, 52,216, 52,216, 52,216, 52,216, 52,216,252,223,178,249,
+ 63,135,130,192,145,255,196, 11, 64, 39,131, 77,131, 77,131, 77,131, 77,131, 77,131, 77,131, 77,131,205,255,230, 23,128,113,165,
+ 29,243, 12, 84,211, 0, 3, 12, 48,192, 0, 3, 12, 48,224,159,129,222, 68, 75,110,239,225, 97, 83,185,193, 62,203, 74,245,131,
+ 44, 43,213, 15,178,169,220, 96,159,220,222,195,227,127, 49,211, 8, 33, 50, 66,200, 80,161, 80,120,205,193,193, 33,139, 16, 50,
+227,191,244, 62, 77, 9, 33,253, 9, 33,203, 8, 33,125, 8, 33, 70,223,210,126,123, 66, 4,131, 9,153, 52,130,144,232, 17,132,
+ 68, 15, 38,100, 82,123, 66,254,235,230, 13, 46,157,230,216,242,238,229, 97,151,150, 78,115,108, 89,226,249,217,142, 86,143,174,
+ 13,220,232, 59,217,201,242, 27,149,155,137,157,157,221, 78,123,123,251, 72, 59, 59,187, 40, 59, 59,187, 61,132, 16, 51, 67,115,
+103,128, 1, 6, 24,240,143,225, 2, 33,100, 92,193, 11, 69,230,104, 9, 0,224,194,133, 11,158, 0,110, 3,104,239,237,237,237,
+ 95,252,215,150,174,245,198,122,212,170, 57,103,197,146,249,196,222,214,218,136, 97, 57,109, 68,100, 76,237,197, 43,252,254,180,
+116,173,183, 46, 45, 42,120,247, 23,116, 6,132,207,231, 15,146, 72, 36, 61, 0, 20, 16,182, 80,181, 90,125,158,101,217, 99,250,
+174, 34,178,183,183,191,195,231,243, 43, 87,228,191, 89,150,141,254,248,241, 99,155, 47,236,196, 6,184,184,184,236,241,244,244,
+ 52,106,214,172, 25,196, 98, 49, 22, 45, 90, 52, 11,192,122,125,109, 88, 90,186,153,104, 37,210,233, 2,177,184, 51,213,105,234,
+ 82, 80,128, 39, 9,225, 24,245, 13,145, 90,189, 46, 45,237,125,182,158,105,153, 15, 96, 36,242,150,163,239,166,148,174,254,154,
+ 90, 50,178, 17,209,233,216,188, 58, 33, 18,128, 53, 51, 51,187,189, 96,193, 2, 65,143, 30, 61,176,123,247,238, 54, 59,119,238,
+ 28, 71, 8,185, 1,224, 47, 74,233,251,175,173,149,118,192,248, 86,109,218,108, 28, 49,107, 22, 95,121,231, 14, 54,238,217,179,
+ 1, 89, 89, 0,176,181,162,117, 73, 36, 66,127,107,107, 97, 15, 74,209,136, 0,132, 0, 47,146, 83,185,139, 90, 45,123,140, 86,
+116,127,159, 79,109, 15,197,167,203,241, 15, 87,212, 70,230,123,186, 80,210,211,163,109,230,251, 91, 11, 1,116, 43,126,158, 81,
+ 73, 71, 80,126,165, 30, 74,250, 60, 6,192,218,175, 36, 89, 70, 54, 54, 54, 65,103,207,158,117,110,214,172,153, 0, 0,158, 62,
+125,250, 67,143, 30, 61, 58, 16, 66,234, 82, 74,179,254, 69,164, 93, 42,224,241, 38,137,133,194,206, 44,203,214, 3, 0, 62,159,
+ 31,172,209,233,174, 49, 28,183, 85,223,152,108, 6, 24, 96,192,127, 49, 83, 41,135,139,252, 59, 67,159,200,240,183,189,189,189,
+201,133, 11, 23, 40,138, 45, 17,151,219,213,170, 93,167,142,199,172,203,167,247, 87,202, 72,203, 80,109, 94,179,255, 89,174, 64,
+172,112,175,237, 46,218,188,126,181,197,164,105, 51,167,203,237,106, 61,202, 73,124,253,170, 2,141,174,139, 76, 38, 59,181,102,
+205,154,186, 94, 94, 94, 66, 91, 91, 91, 36, 38, 38, 34, 52, 52,180,238,205,155, 55,123,239,223,191,127, 22, 33,164, 47,165, 52,
+ 90, 15,115,238, 55, 14,236,177, 53,182,180, 2,171,211,193,177,126,163,194, 64,123,239,110, 94, 5,163,213,130,211,233,224,209,
+163, 55, 0,128,227, 56,212,174, 93,155,255, 37, 25, 73, 8,113,172, 83,167,206,193, 85,171, 86,137,212,106, 53, 30, 61,122,132,
+ 91,183,110,113, 9, 9, 9,126,250,218,144,219,213,240,226,201,140,143, 13, 26,246,163,217,247, 61,170, 10, 93,236,108, 0, 24,
+225, 77, 4,211,234,210,213,155, 77, 79, 31,219, 59, 81,110, 87, 99, 80, 78, 98,216,173,178,201,154,101, 11, 66,200,202,130, 8,
+209,132,144,223,170, 84,169,242, 75,209,107,138,239,155, 71, 41,133, 64, 32, 72,204,206,206, 30,148,146,146,242,188,184, 77, 29,
+ 11,193,225,195,121, 60, 98,225,164,161,252,123,247,238, 25,215,174, 93, 91, 13, 0,171, 87,175,198,178,101,203,196, 87,174, 92,
+233,126,224,192,129,238,132,144, 13,148,210,191,190,166, 98,138,128,159, 71,204,154,197,151, 71, 70, 66, 30, 24,136, 97, 89, 89,
+130, 95,129,159, 43, 66,180, 8, 33, 85,237,237,133,127,206,154, 57,202,163,154, 91, 11,145, 72,100,157,183,137,183, 38,165, 70,
+116,244,243,254,126,191,238,244, 33,132,244,163,148,190,211,211,158, 0,192, 82, 0, 82, 0, 11, 1, 44, 74, 78, 78,118,103, 89,
+ 22,246,246,246,139, 8, 33,103, 0,172,176,177,177,161,201,201,201,115, 41,165, 76, 89, 74, 86,214,123,186,240, 35,169,214,181,
+102,227, 17,248, 72, 46,119,157,217,205,225,146,169, 27, 89,177,120, 99,252, 3, 0,232,230,230,102, 82,173,150,241, 92,185,105,
+ 61,203,172,184,235,115,187,185,185,237,186,244, 94, 63,162, 93,156,108, 2,128,163,163,227,234, 3, 7, 14, 84,106,222,188,121,
+ 97, 29,111,216,176, 33,127,245,234,213, 78, 51,102,204,216, 0, 96,148,158,246,106,216,216,216, 92, 97, 89, 86,157,154,154, 90,
+163,224,123,219, 6,125, 91, 89,153, 24,119, 76, 78,207,190,147,242,242,140,191,158,182,154, 73, 69,162,147,127, 29,220,232,208,
+176,121, 75,158,220,218, 22,170,184,120,228,232,180,157,110,221,127,216,126,220,164,159,167,229,151,209, 99, 67, 87, 99,128, 1,
+255,211, 40,149,139,252, 39, 67, 80,132, 73,150,168, 32, 73, 36, 98,159,197, 11,230,146,140,212, 12,165, 42, 43, 91,163, 83,169,
+ 84, 60, 17, 85, 5,191,250,144,196, 19,240, 51,102, 76,155,106,226, 51,111,129, 15,128, 97,250,146,172, 6, 13, 26, 60, 62,117,
+234,148,173,165,165, 37, 50, 51, 51,145,154,154,138,199,143, 31,131, 82,138,190,125,251, 74,154, 55,109,218,104,225,162, 69, 15,
+ 8, 33, 45,245, 33, 91,198,150,214, 88,221, 38,111, 47,218, 95, 34, 83, 11,254, 7, 59, 7,244, 40,188,102, 89,108, 38, 0, 64,
+ 42,149, 22,110, 72,252, 5,104,217,177, 99, 71, 17, 0,140, 25, 51, 38, 43, 59, 59,219, 23,192, 97, 74,169, 94, 59,173,202,237,
+106,120, 89, 59, 56,158,255,125,251,106, 89, 61, 55,119,104,117, 12,162, 62,198, 67, 32, 52,135,179,179, 8,163,134,117, 22,182,
+107,101,105,189,114,249,206, 11,198, 54, 53,250,228, 38,135, 93, 41,205,150,185,185,249,254, 99,199,142,225,248,241,227, 0,128,
+176,176, 48,184,187,187, 27,151,151,134,144,144,144,106,189,122,245, 58, 10,160,122,121,215, 22, 15,140, 47,145, 72,208,166, 77,
+ 27,212,174, 93, 27,103,207,158,109, 15,224,175,175,173,128,202, 59,119, 32, 15, 12, 4,252, 43, 62,120, 33,132, 84,109,220,216,
+245,225,197, 11, 7,173, 47, 92, 12,197,218,181,123,240,254,125,158,208, 86,173, 90, 53, 12, 29, 50, 64, 24, 28, 28, 80,167,127,
+255,161, 1,132,144, 54,148,210, 48, 61,204, 46,221,181,107,215,252, 42, 85,170,160,127,255,254, 3,234,212,169, 99,111,106,106,
+138, 29, 59,118,192,193,193,161,154, 70,163,121,119,246,236, 89,199,143, 31, 63, 98,234,212,169, 0, 48,171, 52, 67,237,187,180,
+ 95, 40,233,233,209,182,102,227, 17,144,155, 58, 96,215,145, 99,120,243,108,127, 91,181, 54,116,161,239,100,167,225, 74, 42, 25,
+233,236,110,226, 83,185,137,167, 85,245, 58,189,224,218,248,185,181,138,189,251, 97,209,164,106,126, 2,169,106,255,226, 53,241,
+169,159,221,243,128, 63,249,117,179, 94, 91,134, 92, 67, 42,165,139,185,124,130, 85,216, 32,177, 20,189,218,181,107, 87, 88,112,
+145,145,145, 80,171,213,240,240,240,224,105, 52, 26, 47, 61,243,181,198,119,223,125,119,239,226,197,139, 86, 53,106,212,248,100,
+ 75, 24,123, 43,243, 46,254,167, 54, 76, 93,185,241, 80, 45,219,218,125, 50,146, 94,157, 14, 46,143,100,181,110,209,248,250,165,
+ 83, 7,229, 36, 39, 6, 98,243, 20,128, 75, 69,248,209, 63, 64,140, 44, 49,104,194, 76,129, 87,199, 14, 78,157,187,245,187, 78,
+ 8,233, 72, 41,125, 98,232,107, 12, 48,224,127, 90,213,162,255,109,247, 84, 72,180,138,176,200, 79,192, 81,174,190,157,173,149,
+108,195,154,125, 79,248, 90,141,198,216,220, 76, 35, 52, 51,229,136,137, 25, 95,171,209,229,184, 86,115, 21,115,148,171, 95,138,
+148,118,189,248,168, 91, 38,147,157,250,235,175,191,108,133, 66, 33, 56,142,131,141,141, 13, 34, 34, 34,144,145,145,129,236,236,
+108,188, 15, 13, 69, 21,151, 74, 88,226, 51,215, 97,234, 92,159, 83,132,144, 38, 69,221,136, 37, 45, 27,101,117,218,226,141,123,
+105,155, 8,127,242, 94,150,205, 82, 16, 17, 29, 29, 13,185, 92,142,186,117,235,202,239,223,191,127,183, 52,146, 85,220,166,165,
+165,155,137, 64, 46, 59,190,237,247, 69, 50,173, 46, 4,175,194,211, 80,179, 74, 91,216, 89,185, 32, 62, 77,131,135,143,255, 66,
+ 72,208, 97,184, 57,185, 96,242,132, 14, 82,191,213,127, 30,179,176,168,234,146,158,254, 33,171, 36,155, 89, 89, 89,242,170, 85,
+171,194,197, 37,111,223, 51,150,101,241,234,213, 43,176, 44, 91,120, 92,244,125,223,201,155, 96,178,162, 48,226,135, 31,144,154,
+154, 42, 47,201,166,144, 15,102,230,184,161, 2,153, 16, 16, 27, 91,106,114,114,114, 10,213, 65,173, 86,139, 23, 47, 94,160,101,
+203,150,158, 39, 78,156,240, 47, 71, 66,213, 43, 63,181,192,111, 27,247,238,221, 52, 44, 51,147, 7, 0,187, 9,225,180,148,254,
+166,111, 93,178,181, 21,158,188,124,233,128, 53,159,247, 26,150,102,191,226,241,227, 40,104,181,121,233, 77, 77, 77,194,148, 73,
+ 89, 16, 9, 77,112,246,236, 33, 43, 15,143, 54, 39,243, 93,103, 92, 57,233,148, 94,186,116, 9, 83,166, 76,193,171, 87,175, 28,
+249,124, 62, 30, 61,122, 4,153, 76,134, 53,107,214,240, 61, 60, 60, 28,141,141,141,113,249,242,101, 36, 38, 38,146,178,210,121,
+251,202,237, 21,153,239,111, 45,252, 72, 46,119,221,117,228, 24,126, 28, 50, 8,246, 52,252,174,153, 27, 89,241, 93,207,214,191,
+ 80,126,165, 30,198, 38,245, 45,220,235,246,132, 72, 44,199,228,159,151, 33, 44,228,156,133, 34, 59,104, 18, 97, 99, 42, 33,127,
+239,191, 79, 54, 85, 62,209,159,221,116, 36,160,241, 53,151, 39,174,142,141,199, 63, 2, 16,244, 55,209,170, 38, 32, 60,214,172,
+ 64,189,124,247,238, 29,222,191,127, 15,129, 64, 0,165, 82, 9,134, 97, 74, 76,167,147,147,211,120,134, 97,126,201, 47,231,125,
+ 14, 14, 14,163, 15, 30, 60,104, 85,148,104, 23, 40, 89,105, 25, 89,233, 1, 79, 94,190,153, 57,190,127,251, 59, 15, 67, 98,204,
+ 27,244,142,206, 8, 60,147, 89, 74, 25, 73,101, 98,241,201,203,167, 15,201,117, 31,110,194,216,163, 61,132,114,119,176,186, 56,
+ 40,210,115,145,253, 62, 1,234,223,183,160,225,164, 25, 56,119,230, 79,121,157,122, 77, 78, 16, 66,220, 41,165,154, 47,120, 54,
+ 43, 34,241, 27,108, 26,108, 26,108,254, 27,218, 44,139,139, 0,104, 12,192, 46,255,115, 42,242,166,204, 88, 3, 72, 65,222,118,
+ 96,118, 0, 52, 0,196, 69,126, 83,252,184,232,181,197,143,139,126, 78,205,255,108,155,255,254, 4, 64, 90, 57,131, 74, 7, 0,
+222,200,155,155,229,157,159, 71,250, 69,134, 39,132,151,197,178,156, 68,100, 99,171, 26, 51,176, 99,189,171,215,159,190, 48,178,
+ 54, 21,116,105,223,200,243,113,240,135, 7,132, 71,116,132,240,244,154,247,193,231,243, 7,109,216,176,161,158,169,169, 41, 56,
+142,131,153,153, 25,146,147,147,161,209,104,144,153,153, 9,117,118, 22,180,217, 89, 8,140,137, 68,107,207,246,232,215,245, 59,
+143, 67,103,254, 26, 4,224,104, 89,118, 29,235, 55, 42, 84,178,150, 85,182,250, 91,154,136,201, 40, 36, 93,191, 54,114,135, 72,
+ 46, 71,231,153, 62, 95, 83,177,158,139,197,226, 75,125,251,246,237, 54,123,246,108, 94, 66, 66,194,101, 66, 72,107, 74,105,185,
+110, 83,173, 68, 58,125,226,244, 30, 22, 22,114,138, 19,215,254, 66,187, 70, 67, 96, 36,230, 35, 53, 75, 11, 66,128,208,151,167,
+ 64,136, 37,130,194, 18,208,182,161, 41,190,235,226, 33, 63,243,103,232,108,252, 61, 63,232,179,162, 73, 79, 79, 71, 82, 82, 18,
+116, 58, 29,116, 58, 29,250, 15, 24,128, 3,251,247, 35, 55, 55, 23, 74,165, 18, 26,141, 6, 44,203,130,199,227,225,218,249, 19,
+136,249, 16,138, 86, 45, 91,162, 52, 73,118,223,115, 42, 36,132, 60,124,243,230, 13, 66, 67, 67, 17, 27, 27, 11,169, 84, 10,123,
+123,123, 44, 91,182, 12,106,117,222, 30,101, 3, 6, 12,240, 4, 16,252,181, 15,212,123, 96,103, 4,203, 46,236,118,250,180,237,
+253,211,167,185,135,231,206,197, 74,178,179,119,232,243, 91,145, 8,253, 87,255, 54,161,166,177,177, 49, 98,163, 55,160, 86, 45,
+ 17,102,205,176,130,239,175, 41, 0,128,169, 83,156,209,180,137, 53,178, 50,254,132,181,237,124,108,218, 52,205,109,228,200,117,
+ 63, 0,216, 87,142,233,133,127,253,245, 87, 63,119,119,119,167,231,207,159, 19,177, 88, 12,153, 76, 6,153, 76, 6,169, 84,138,
+164,164, 36, 68, 68, 68,208,213,171, 87,199, 33,207,181, 88, 42,242,221,131,221,102,118,115,184,244,230,217,254,182, 78,252, 15,
+129,253, 38,183,137, 12,122,248, 60,251,234,181,251,203, 25,149, 52, 38, 35,246,250,220,170, 77,159, 91, 79,154,179, 20, 91, 86,
+ 47,198,155, 71,119,210,236, 92,178,182,202,136,122, 95,243,206, 37,168,100,237,151, 10, 38, 45, 26,200,140, 31,217,207,252,156,
+ 93,192,248,139, 2,146,252, 49,229,217, 26, 68, 60, 87, 74,170, 55, 26, 94,163, 26, 79,115,243,230, 77, 89,187,118,237,160, 82,
+169, 10,149,201,131, 7, 15,114, 12,195,148,232,142,214,106,181,191,196,197,197, 57, 40,149, 74,116,237,218,117,234,154, 53,107,
+140, 11,246,168, 99, 89,246, 19, 37,107,197,250, 3, 87,166,255,178,245,214,149,163,191, 58,174,240, 25,221,126,216,228,149,183,
+ 80,202, 62,146, 2, 30,111,210,185,211,123,236,165, 22, 58,200, 44,191,131, 42, 81,137, 55, 59,127,132, 34, 75,133,166, 43,150,
+ 2, 16, 67,163,227, 97, 71,207,254, 16, 90, 57, 98,241,216,209,142, 11,118,236,154, 0, 96,131, 97, 92,111,128, 1, 6, 20,131,
+ 29, 33,228, 60, 0,248,248,248,204,247,245,245,125, 73, 8, 57, 79, 41,237,145, 79,116,206, 83, 74,123, 20, 92,147,223,103,127,
+118, 92,112,109,241,227,226,159,231,205,155, 87,199,207,207,111, 85,203,150, 45,143, 6, 4, 4,124, 40,143,104, 33,111,255,231,
+157,197,183,226, 1,242, 87, 29,122,123,123,147,162,239,159, 40, 90, 28,119,231,221,135, 72,197,119,157,154, 59,159,247, 15,126,
+ 50,106,148,119,199, 65, 61,219,117,137,136, 78, 13,117,115,181,183,126,249, 50,216,148,227,184, 59,250,228,146, 68, 34,233,209,
+161, 67, 7, 65,122,122, 58,140,140,140,144,156,156,140,184,184, 56,104,181, 90,168, 50, 51,160,206,204,128, 42, 35, 29,218,204,
+116,188,127,250, 24,245,221,170, 73,242, 39,203,151, 71,128, 74, 84,170,138, 42, 91, 98, 19, 19, 72, 76, 76, 64, 42,232, 54, 36,
+132,124,111, 97, 97,241,144, 16,178, 48,191, 83,154, 52,119,238,220, 20,142,227,176,114,229, 74, 83,185, 92,126,130, 16, 34, 41,
+207,142,137, 13,191, 71,203,134,117,121,175, 35,130,208,166,193, 8,212,168,218, 29, 17,137, 74,164,100,107,145,148,161, 69,211,
+118,155, 81,185,193, 82, 84,106,232,139,208,168, 52, 56, 58,185,243, 32,144,148,185,249,115, 76, 76,204, 39,199, 71,143, 28,129,
+ 66,161,128,155,155, 27,134, 12, 25,130,185,115,231, 98,200,144, 33,112,116,116,196,176,129,189,176,120,241, 98,124,252,248,177,
+188,164,170,107,212,168,161,118,117,117, 85,187,186,186,170,181, 90, 45,114,114,114,144,145,145, 81, 60,191,167, 85,248, 41,177,
+179,155,231,224,224, 16,100,103,103,247, 82, 42,149, 94,124, 65,200,107,149,171,171, 93,235,222,189, 73,237,129, 3,249, 81, 50,
+ 25,241, 7,228,250,216,178,182, 20,122,123,117,232, 38,206, 72,223, 3, 32, 79,164, 26, 61,202, 6,247,252,235,224,254,221, 38,
+152, 50,201, 13,132, 39, 5,225,137,161,200,189,137,230,205, 90,138,204,205, 73,143,114,202,122, 40,128, 23,173, 91,183,118,156,
+ 60,121, 50,145, 72, 36,152, 58,117,170,118,236,216,177,111,135, 12, 25,242,246,198,141, 27,172,171,171, 43, 42, 85,170, 68, 42,
+ 85,170,228, 0,224, 69,254,111,202,132,169, 27, 89,161,214,134,222, 53,119, 55,254,192,194,186, 85,142, 78,210,127,241,154,248,
+212,229, 91,195,215, 70,188, 81, 84,123,243,232, 78,234,219,144,115, 92,196,147,219, 41,241,111,179,171, 45,223, 26,190,118,222,
+150,184, 18, 31,106,127,127,112,167,206,251,107, 21,185, 10, 65,239,158, 94,138,241, 99, 6,213,176,148,215, 57, 8,167,239, 26,
+ 84,118,113, 30,182,120,213, 38,237,216, 9,211,181,187,255,216, 67,179,179,179,145,149,149,133, 77,155, 54, 49,231,206,157,139,
+ 99, 89,118,122,105, 99, 32, 0,208,233,116, 24, 63,126,188,177,169,169, 41, 98, 98, 98, 10, 21, 81, 0, 72, 72, 78, 13,190,255,
+ 36,228,245,204,159, 6,120,230,170,213,234, 43,183,159,134,214,118,119,117, 38,132,150,186, 16, 69, 44, 20,118,110,210,188, 57,
+159,210, 12, 16,129, 11,222,239, 95,141,172,143,105,200, 74, 74, 3, 95,104, 12, 6, 18,232, 56, 49,204,235, 55, 67,216,147,231,
+112,178,177, 19, 72,132, 66,195,214, 89, 6, 24,240, 63,138,178,184, 72, 81,178,228,231,231,183,170,172,243, 69,222, 53,197,142,
+ 11,137, 84,113, 18, 86,244, 51, 0,248,249,249,173,162,148,246, 8, 8, 8, 56, 2, 64,169, 39, 95, 24, 87,240, 94, 52, 74,124,
+185,172,131,175,210,248,206,158,187, 16, 22,102, 50,179,102,141,220,237,207, 94,246,127,122, 39,224,105,104,229, 74,214, 54, 84,
+167,177,248,109,221, 22,103,162, 80,234, 59, 25,220,195,218,218, 26, 90,173, 22,239,222,189, 67,108,108, 44,180, 90, 45,152,220,
+ 92,168, 51, 50,160, 74, 79, 7,155,155, 13, 17,203, 66,153,156, 4, 43, 35, 41,240,247,138,196,242,110,176, 68,162, 85,240, 46,
+ 53, 53,133,196,196, 20, 60,161,176, 68,183, 98, 41, 54, 27, 55,107,214,236,120, 72, 72, 72,243, 78,157, 58, 45, 39,132,152, 81,
+ 74,163,226,226,226, 58, 46, 90,180, 72,109,103,103,135,241,227,199,215, 4, 48,162, 92,146, 41,214,120,184,218,215, 68,141,106,
+ 35, 80,185, 82, 7,100,228,234,144,156,165, 67, 82,134, 22, 59, 54,183,196,201,221,205,112,239,100, 91,132, 92,233,140, 12,157,
+ 61,228,142,223,131,178,154, 58,101,217,188,118,237, 26,150, 45, 91,134,229,203,151, 99,229,202,149, 88,190,124, 57,226,226,226,
+ 80,183,110, 93, 68, 71, 71,227,210,165, 75, 72, 72, 72,128,181,181, 53, 30, 63,126,140,245,235,215,227,222,189,123,250, 40,119,
+122, 93, 67, 8,169,144, 47,157, 97,152,145, 9,189,123,215, 75,180,180,172,221,168, 81,163,110, 83,167, 78,173,214,186,117,235,
+194,243,213,170, 85,115,145,201,100, 31, 9, 33,187, 9, 33, 13,203,178,197, 1,141,108,108,234, 66,163,126,157, 95, 86, 66, 16,
+ 34, 69,135,206,161,104,221,246, 41,180, 58, 17,120, 68, 2, 30, 79, 10,134, 73,133,133,133, 35, 40, 37,117,203, 73,226,162,228,
+228,100,247,235,215,175,243, 34, 34, 34, 32,149, 74, 1, 32,114,201,146, 37, 91,214,174, 93,251,202,202,202,138, 61,127,254, 60,
+206,156, 57,131, 30, 61,122,240,199,142, 29,235, 94,169, 82,165,237,229,221,247,226,141,241, 15, 14,175,187, 52, 88,168,179,104,
+ 40,149, 85,174,130, 92,249,247,147,218,219, 24, 3,192,165,247,239,179,109, 93,178,252,114,179,131,162,205,157,115,126, 45,111,
+ 34, 60,165,139,185,103,111, 95, 63, 60,124,250,114,102, 82, 98,186,176, 81,189, 58, 74,223,101,115, 68,149,171, 84,255,109,241,
+220,159,236,227,178,164, 25,157,167, 94,122,125,234,242,227,156,225,163,126,100,198,140,155,172,186,116,249,218,105,142,227,234,
+149,182,226,144,227, 56, 36, 36, 36,224,229,203,151, 8, 15, 15, 71,114,114, 50, 82, 82, 82,144,157,157, 93,232,110, 52,202,206,
+186,176,101,239,185, 64, 99,153,204,168,121, 61,119,151, 71,207, 95, 37, 25,203,100, 70,238, 85, 92,106, 16,178,180,196,118,132,
+101,217,122, 82, 35, 25, 0,130,140,144, 59,200, 73,207, 65, 78, 70, 14,178,211,114,160,214,242,161, 82,243,160,212,240,224,234,
+249, 29,114,114, 85,200, 73,205, 4,199,178, 13, 12,221,141, 1, 6, 24, 80, 70,191,124,222,199,199,103,190,158,151,235,237,222,
+ 44, 78,188,124,124,124,230, 19, 66,206,207,155, 55,175, 14,244,152,211, 76, 41,221, 89,252, 85,112,174,220,240, 14, 41, 41, 97,
+ 57,166, 54,181,251,206,248,249,151, 75, 71,254,216,108,171, 86, 43,162,173, 44,228,172,220, 72,108, 61,102,252, 74,100,231,164,
+247,201, 73,211,127,149, 84,122,122, 58, 62,124,248, 0,153, 76, 6,145, 80, 8, 86,169, 4,171,204,133, 50, 61, 21, 60,173, 26,
+ 34,150,133,165,145, 12,174,142,246,168,108,103,175,151,205,119, 55,175, 22, 78,124, 47,234, 46, 92,221,204, 3, 98, 99, 57,196,
+ 38,114, 76, 60,127, 27, 0, 32, 18,137,128, 69,203,245, 41, 76,107, 39, 39,167,191, 14, 31, 62, 44, 74, 78, 78,198,139, 23, 47,
+ 2, 41,165,153,132, 16, 19, 0, 92,104,104,232,245,144,144,144, 30,238,238,238, 0,224, 86,158,189,172, 20, 30,171, 99, 40, 98,
+ 62, 70, 34, 34,246, 57, 44,205,170, 66,104, 84, 3, 73, 25, 90, 72,100, 85,161, 83,255,237,125, 84,101, 69, 65,169,213,111, 97,
+164, 70,163, 1,195, 48, 96, 24, 6, 26,141, 6,227,198,141,195,253,128, 0, 28, 61,115, 3, 31,222,135,161,102, 21,123,252,240,
+195,112, 52,107,214, 12, 1, 1, 1,101,218, 26,217,136,232, 22,180,131, 96, 93, 55, 30,196,114, 43,117,139,185, 87, 30,233, 67,
+182, 40,165, 68,143,252, 92,219,163, 71,143,234, 97,185,185,120,249,250, 53, 58, 45, 89, 2, 0,184,120,241,226, 39,247, 50,115,
+230, 76,241,171, 87,175,198, 60,125,250,116, 12, 33,100, 29,165,180,228,201,230, 20,184,112,225, 1,126,250,233, 21,146,147,243,
+230,107, 31, 59,242, 55, 47,141,248,160, 69, 87,239, 60,143,150,185,185, 57,214,173,171,171, 87,126,178, 44,139,157, 59,119, 22,
+186, 11, 1, 64, 32, 16,180,158, 57,115,102,223,146,174,175, 94,189,186,168, 60,155, 51, 7, 56, 75, 95, 68,201, 38,153, 85,175,
+ 92,199,212,186, 62, 82,117,207,235, 62,143, 75,152, 50,115,128,243,134,117, 39, 98, 85, 50,162,222, 71,216,152, 74, 2,169,106,
+191, 62,105,124,127,105,147,198,188,242,168,253, 31,147,179, 22, 76,254,113,168,149,169,185,109,238,238, 45,190, 22, 60, 62,143,
+254,245, 84,155, 81,167,154,149,249,247, 45, 54,230,252, 52, 99,209,115, 13, 19, 51, 25, 49,127,133,149, 21,226,130,101, 89,196,
+199,199, 35, 57, 57, 25,209,209,209, 72, 73, 73,201,127,246, 83, 62, 91,185, 90,193, 6, 17,202,232,104, 68,157,222,141,202,195,
+135,163,233,242,101, 96, 57, 1,148, 10, 22,235, 90,117, 68,122,166, 18,106,142,192,177,113, 43,252,120,241, 46,120,148, 5,118,
+108, 53,244, 36, 6, 24,240, 63, 10,125,194, 59, 20, 16, 34, 95, 95,223, 30,223,250,255,139,146, 45, 95, 95,223,151,190,190,190,
+122,255, 87,113,151, 97,209,227,114,195, 59, 0, 64, 86,242,171,112, 43,215,250,241,185,202, 92, 35, 59, 91, 27,181,145, 84,194,
+101,102,101,243,159, 7, 7,106,115, 18,222,189,169,192,125,132,134,132,132,212,141,143,143, 71,116, 84, 20, 24,101, 46,120,106,
+ 13,168, 74,129, 78,109, 90, 65, 10, 64,202, 35, 16,113, 90, 8,248, 98,100,231,100, 1, 64,104,185,157,163, 78,247,153,178, 69,
+ 8,129,216,196, 4, 98, 99, 99,136,229, 38,159, 40, 92,250, 40, 54, 18,137,228,240,137, 19, 39, 28,156,156,156,176,108,217, 50,
+ 56, 59, 59,215,170, 87,175,158,162,109,219,182, 50, 59, 59, 59,212,174, 93, 27,173, 90,181,194,165, 75,151, 0,160,220,152, 82,
+ 58, 70, 26,244, 38, 18,173, 83,210, 2,112,247,246,239,208, 40,213,104,228,249, 59,180,130,202,176,169,179, 20,220,187,131, 80,
+124, 60,155,167, 30,216,247, 68,108,116, 36, 8, 95,252, 82, 95,229,169,224,115, 96, 96, 32,142,156,245,135,131,171, 7,162,223,
+190,198,235, 91,215,113,223,198, 10,174, 30,181, 11,221, 64,165,166,145,133, 96,197,214,194,240, 14,146,180,180, 52,137,165,165,
+165,186, 32,239, 28, 28, 28,190,134,108, 13,157, 61,123, 54, 50,132, 66,192,219, 27,162,240,112,104,181, 90,180,104,209, 2, 77,
+155, 54, 5, 0,180,104,209, 2, 2,129, 0,245,235,215,135,163,163, 35,182,110,221, 58, 20,165,172,234,227, 17,188, 96,152,212,
+ 90,213,170, 85, 43, 36, 90,251, 15, 36,227,249,211,206, 32, 16, 99,211,150,191,163, 57,184,184,184,224, 99, 66, 56, 8,161, 33,
+229,164,113,185,189,189,253, 34, 7, 7,135,106,107,215,174,229, 75,165, 82, 76,152, 48,161,106, 78, 78, 78,229,124, 41, 25,243,
+230,205,203, 83,169, 22, 47,198,146, 37, 75,160, 86,171, 21,165, 25, 59,176,190,190, 99, 82, 26, 55,198,206,222,169,143,151,117,
+229,122, 29,186,116, 66, 85,247, 14,232,208, 37, 26, 0, 86, 89, 10, 34, 7,174, 94, 88,247,180,117, 37,203, 61, 87, 47, 95, 91,
+220,198,179,195, 2,159,241, 22, 43,252,118,164,151, 59,231, 49, 51,106, 95,246, 27,241,160,245,155,183, 31, 88,255,203,188,105,
+210,232,100, 77,122, 92, 58,205,145, 75, 4,114, 55, 59, 34,159,242,243,242, 15,241,241,225,179, 16,115,185,220,149,150, 28,199,
+ 33, 60, 60,188,112, 78,159, 74,165, 66,110,110, 46, 98, 98, 98, 10,235,140,210,216,180,235,228, 81, 61, 27,228, 42,149,138, 71,
+193,111,163, 23, 78, 29,214, 50, 87,169, 84,188,141,136, 14,163,116, 99,137,108,140,199,227, 5, 43,178, 21,157, 20, 25, 42, 36,
+191,120, 3,231,142,174,208, 49, 4, 26,134, 69,114,106, 54,212, 12,192,242,132,168, 51,240, 7,176, 68,128,148,248, 56,240,248,
+252, 64, 67,119, 99,128, 1,255,179, 40, 55,188, 3, 33,228,124,203,150, 45,143, 22, 85,157, 10, 62, 3, 80, 3, 40,107, 42, 79,
+114, 81, 50, 85,224, 78, 44,237,127,138,217,213,119,128,249,217, 28,173,114,195, 59,228,255,144, 52,168,231,234,184,122,241, 48,
+103,142, 97,106, 38,165, 36, 50, 2,129, 68, 88,201, 76,153, 80,145, 28, 84,171,213,231,175, 95,191,222,187,115,231,206,146,183,
+193,129,208,100,102, 66,147,153, 1, 33,199,192, 82,214, 4, 60,173, 26, 68,163,129, 83, 45, 14,170,108, 25,252,239,135,232,212,
+106,245,121,125,137, 22,143,207,255,116, 94,150, 92, 14,137,137, 41, 36,114,121,113,215, 34, 41, 39,163,140,122,245,234,213,177,
+ 69,139, 22,160,148, 98,231,206,157,208,106,181, 98,173, 86, 11,141, 70, 3,173, 86,139,172,172, 44, 28, 56,112, 0,219,182,109,
+187, 15, 96,111,185,157, 25,163,185,126,229,218,205,102,163,135,245, 16, 94, 60,191, 14,140,134,133,146, 56, 35, 55, 87,135, 28,
+141, 17, 88,171,225, 64,226, 5,240, 5, 82,180,172, 95, 21,103,255, 60,165, 5,163,190,161, 39, 11,255, 68, 21,138,137,142, 68,
+236,251, 48,200,179, 62,194,198,212, 8,138,240, 48, 52,250, 97,196, 23,169, 19,149, 42, 85, 2,199,113,240,242,242, 42,156, 92,
+253,165,100, 43, 53, 53, 21,231,206,157, 67,139, 22, 45,224,233,233,137,184,184, 56,132,135,135,163,123,247,238,133,215, 4, 6,
+ 6,226,249,243,231,112,115, 43, 91, 36, 76, 73,211, 93,140,141,121, 49,224,251,239,191, 23, 61,124,248, 16,148, 82,184,187,155,
+194,212,196, 24,132, 39,129,135,135, 45,128,188, 49, 64,251,246,237,145,149, 21,206,164,167,211,139,229,228,227, 97, 66,200, 25,
+141, 70,243,174, 93,187,118,142,239,223,191,199,140, 25, 51, 4,199,142, 29, 43,144,146,225,227,243,233, 98, 10,165,178,116,215,
+125,205,122,181,230, 84,101, 44, 60,165,178,202, 85, 76,173,235,163,170,123, 7, 0, 64,231, 30,163, 81,181,186, 11,178, 82,130,
+170,168,148,145,125, 68,130,116,139,160, 77,113,175,100,222,117, 71,169,146,110,191, 5,160, 79, 0, 96,170,124,123, 44, 49, 90,
+ 56,252,248,153,191, 46,141,239,222,163,151, 80,199, 50, 76, 93, 87,161,249,137,211, 23,146,226,162,162, 55, 34,250,114,200,223,
+250, 95,153, 42, 30,155,149,149, 5, 99, 99, 99,132,132,132,168,189,189,189, 37, 60, 30, 15,239,222,189, 43, 36, 90,182,214,150,
+181, 91, 55,173, 91,107,197,250, 3, 87,140, 37, 18, 73,151,246, 77, 60, 94,189,141,138,165,148, 68,150,170,182,234,116,215,130,
+ 95, 4,122,217, 56, 86,231,135,223,126, 8,171,182,221,161, 86,243,160,212,112, 80, 51, 0,195, 23,193,161, 97,115,152,187,121,
+128, 2,120,242,240,190, 78,173,211, 93, 49,244, 53, 6, 24,240, 63,173,106,209,178, 72, 82,254,231, 52, 0,145,190,190,190, 41,
+ 69,212,166,100, 0,129, 0, 26,228, 95,151, 92,236,119,201,200, 91, 61,216,180,136,157,228, 34,132,171,232,103, 77,177,107,244,
+ 26, 0, 22,157,163, 85, 34,209, 42, 99, 73, 37,172,173,173,109, 27, 53,106,226,182,235,143,227,160,148,226,205,243, 53, 72, 79,
+122,141, 69,171, 30,184, 57, 59, 59,123,198,198,198,250,235,147, 8,150,101,143,237,217,179,103, 86,243,198,141, 26, 85,113,118,
+ 70, 96,100, 4, 68,148,133,136,101,193,211,170, 33, 96, 53,112,174,203,130, 71,228,136,143,207,132,223,225,227, 33, 44,203, 30,
+ 43,207,110,173,238,189,176, 44, 54, 19,132, 16,172,109, 89, 23, 98, 19, 57, 68,198,114, 76,252,235,102, 33,185, 58,191,108, 30,
+196,114, 57,220,154,151, 31, 16,158, 82,170, 48, 49, 49,121, 26, 28, 28,220,180,110,221,186,152, 53,107, 22, 34, 35, 35,193,113,
+ 28, 18, 19, 19, 85, 9, 9, 9,113,201,201,201,145, 0, 78, 3,216,165, 79,228,113,145, 90,181,225,252,201,253,147, 91,182,241,
+180,254,190,207, 54,156,249,115, 38, 50, 50,179,160, 96,100,200, 85, 49,200, 85,243, 97,105, 85, 15,205,235,215, 71,124, 92, 18,
+ 94, 62,188,146, 35, 80, 43,214, 84,164,130, 18, 66,240,252,249,115, 84,115, 52, 65,216, 93,127, 88, 27, 9,209,192,209, 30,142,
+173,219, 20,198,151, 42, 11, 66, 62,152,161, 67,135, 22, 70,134,255,238,187,239, 34,134, 15, 31,238, 48,115,230, 76,252,241,199,
+ 31,184,127,255,254,103, 19,180, 61, 61, 61,113,231,206,157,165, 0, 22,151, 39,234,105, 52, 26,212,170, 85, 11, 79,158, 60,193,
+245,235,215,209,161, 67, 7,120,122,122, 34, 40, 40, 8, 87,175, 94,197,243,231,207, 65, 8,129,149,149, 21,116,121,228, 89, 87,
+154, 49,173, 22, 39,126,253,109,207,252,245,235,183,213, 25, 54,108, 24, 78,158, 60,138,209,163,106,130,240, 36, 32, 68,130, 94,
+ 61,107, 98,217,242, 39,104,222,188, 61,172,173,133, 88,191,238,236, 7,165,146, 61,160, 71, 54,174,184,122,245,170,163, 74,165,
+ 66, 70, 70, 6,149,203,229, 36, 53, 53,111, 69,107, 73,138,150, 66,161,144,150,102, 40,248, 89,232,154,140,108,154, 78,115,158,
+247, 73, 99,158,215,235,208, 37, 6,157,123,140,194,181,243,123,113,243,202,117, 88, 10, 34, 35, 96,156,125, 41, 37, 34, 37, 43,
+ 33,215,125,187, 71,227,177,252,216,220, 43,219,167,126,111,193,119,112,224, 78,248,108,203,204, 40,163,142, 82, 66, 8, 73,123,
+117,240,175,211, 20,189, 90,181,108, 94,189,174,139,131, 56, 61, 37,137,254,121,246, 82,136, 54,226,228,185, 2,130, 85,222, 46,
+ 11,148,210,101, 62, 62, 62,191,228,127,222,183,112,225,194,177,126,126,126, 54, 31, 63,126, 44,156,163,149,148,146,118,179,149,
+247, 20, 54, 53, 35, 83,179,103,253,207,253,101, 82,137,120,161,223,158,219, 58, 62, 30,150,102,151,225,184,173, 3,103, 44,154,
+246,246,205,115,167,202, 50, 49,206,254,188, 24,129, 87,111, 65,199, 19,225,167,235,143,160,214,178,200, 72, 73,197,141, 49,147,
+ 32,183,179,192,182,219, 39, 19, 57,142,251,221,208,213, 24, 96,192,255, 46,202,224, 34, 37,197,216, 75,212,227,186, 39,122,216,
+249,106, 20, 87,177,138, 66,175, 37,120, 41, 41, 41, 73,119,238, 60,194,237,243, 43,224,127,126, 5, 94, 62, 15, 68,124,156, 6,
+113,137, 42,152,154,154, 62, 40,163,227,239, 84,188,115, 80, 40, 20,125, 23, 46,250,229,163, 84,102,132,118, 29, 59,194,222,198,
+ 22, 70, 34, 33,248, 12, 7, 62, 17, 34, 39,217, 28, 97, 65, 10,204,221,115, 48, 41, 71,161,232, 91,188,147, 40,110,179, 40,201,
+ 32,132, 64, 98,106, 2,177,220, 4, 18, 19,211, 79,220,136, 82, 83, 83, 72, 77, 76, 33, 16,139, 75,154, 52,255,153,205,156,156,
+156,126,253,251,247, 79,207,204,204,196,216,177, 99,225,239,239,255,252,202,149, 43,166,129,129,129,178,164,164,164,234,148,210,
+239, 40,165, 59, 74, 35, 89,197,109,166,165,189,207,166,140,122,144,239, 47,211,149, 42,198, 10, 3, 70, 28,131, 49, 47, 6, 12,
+203,129, 2,112,180, 20,163,117,167,229, 72,210,180,194,177,237, 43, 21,156, 86, 53,172,104, 12,173,226, 54, 41,165,212,206,206,
+238,179, 60,184,126,253, 58, 6,244,239,135, 46,125,122,195,166, 74, 53,216,118,234,142, 46, 99,127,194,246,237,219,193,227,241,
+ 96,109,109,253,137,194, 81,212,230,190,231, 84,120, 56,136,146,195, 65,148,236,125, 70, 5, 0,126, 56,120,240,224,175, 13, 26,
+ 52,184,117,255,254,253, 53, 0, 6, 21,253,175, 34,105, 89, 82, 84,205, 42,165,140, 22, 76,155, 54, 77,249,246,237, 91, 24, 27,
+ 27,131, 97, 24,220,191,127, 31,219,182,109,195,218,181,107,241,252,249,115, 88, 89, 89,193,205,205, 13,106,181, 26, 79,158, 60,
+ 81, 2, 88, 80, 70, 93,226,146,147,153,126,155, 54,249,165,246,232,209, 22,123,246,108,129,189,125, 43, 8, 5,246, 16, 8,109,
+ 96, 44,175,133,221,187,126, 69,183,110,141,240,215,217,227,105, 41,169, 76,191,226, 81,220, 75, 73,167,234,209,163, 71,216,190,
+125, 59,250,247,239, 31, 55, 96,192, 0, 54, 51, 51,179, 80,209, 42,216,141,125, 73,254, 28, 51,181, 90, 45, 41,205,230,216,159,
+131,227,230,172, 8, 89,150,248, 49,174,133,255,173, 7, 67,111, 94,185,142, 15,111,111,226,230,149,235,184,123, 51,192, 39,241,
+ 99, 92,139, 70,205,106,136,250,142,157, 60,103,255,169,147,124,185,169, 3,246,159, 58,201, 31, 50,101,250,202, 38, 93, 58, 44,
+ 40,175,206,231,151, 35,205, 73, 74,156,183,106,205,230, 28, 70,171,226,173,222,184, 53, 94,153,156,176, 0, 5, 75, 49, 75, 81,
+179,138,218, 84, 40, 20, 59,148, 74,165,163, 82,169,116, 84,169, 84, 11, 34, 35, 35,219,205,154, 53, 43,153,101,217, 66,181, 52,
+233,229,217, 7,161,119,247,174,178,181,182,144,181,106, 90,167,230,186, 29,127,222,142,142, 73, 60, 84, 16, 67,171,148, 50, 82,
+229, 40, 85,253,122,247, 29,158,155,145,174, 70,203,233, 62,224,164,114,168, 89, 64, 71,249, 96,136, 0,193, 43,214, 65,102,105,
+130,195, 17,207, 20,153, 58,109,191,162, 49,180,202,185,247, 47,134,193,166,193,166,193,230,191,167,205,255,100, 16, 66, 28,138,
+238,117,152, 31, 87,235,111, 69,171,188, 37,149, 78, 78, 78,237,190,239,213, 9,237,123, 44, 4,165, 20,175,159,253,134,244,228,
+ 55,112,178,151, 32, 60, 58,171, 37, 0,127,125, 19, 67, 41,141, 38,132,180,152,182, 96,225,169, 1,223,117,244,168, 91,165,138,
+164,114,101, 87, 24,219,218, 34, 37, 37, 25,247, 30,190,210,173, 60,114, 34, 36,159,100,233,179, 5, 15, 56,142,203,155,228, 14,
+160,227,180,185, 32,124, 62,144, 31,198,161,160, 99,172,210,180, 21,136, 64, 0,150,114, 80,171,213, 84,143,116,198, 18, 66,250,
+ 13, 27, 54,236,198,249,243,231,121, 93,186,116,105,120,250,244,105,238,107, 10, 34, 39, 49,236,150,220,174, 70,143,149,243,198,
+ 31,107,209,161,183,169,123,157, 38,162, 38,149,249,208,234, 8,226,227,162,112,254,212, 99,237,171, 71, 87,178, 40,163, 26,148,
+155, 92,246, 22, 60, 90,173, 54,186,122,245,234,118,219,183,111, 47,156, 12,207,178, 44, 82, 82, 82,240,224,193, 3,212,107,218,
+ 28, 30,163,198, 32, 57, 57, 25,155, 54,109,130,139,139, 11,122,246,236,137,180,180, 52, 48, 12, 19,173,103, 89,177, 0,174,228,
+191, 62, 33,180,249,130, 10, 45,207,109,232,230,230, 38, 86,169, 84, 13, 29, 28, 28,248,132,144, 13, 26,141,102,228,188,121,243,
+ 28, 86,173, 90,133,154, 53,107, 34, 37, 37, 5,198,198,198,112,119,119, 71,114,114, 50, 30, 63,126,204, 42, 20,138,237, 0,150,
+ 81, 74,147,203, 73,223, 59, 66, 72,139,169, 83, 39,158,250,213,111,188,187, 74,221, 94,108,105,217, 6,148, 50, 72, 78,142, 68,
+118,214,125,237,242,101,123,223, 39, 38,233,250, 82, 74,223,234, 89, 76,139, 39, 79,158, 12,228,111,193, 19, 30, 30,254,194,195,
+195,195,189, 52, 69, 75, 31,172, 59, 17,171, 2,112,100,245,140, 86, 51,178, 82,130,220, 45, 5,145, 17, 45,234,114,155,214,157,
+136, 85, 45,157, 97,190, 34, 37,210, 63, 44, 33,247,202,246,253,167, 78,242, 71,244,233,199, 58,203,223,250, 72,109,233,159, 29,
+122,150, 91, 62,180, 97,195,134,149, 8, 73,171,154,148,250,230,233,232,177,227, 7,154,137,148, 23, 27, 56,167,186,241, 92, 26,
+ 73,159, 63,127, 30,161,239,158,161,197,236,134, 17, 66,218,205,155, 55,239, 10,165,244,147,185, 9, 73, 41,105, 55, 91,246,152,
+ 76, 51, 50, 50, 95, 36,189, 58, 27,172,135,173,199,132,144,142,117,235, 53, 58,249,235, 42, 63,187,246,211,102, 9,194,110,221,
+ 6, 88, 29,162,252,111,131,149,104,184,117, 1,215, 18, 51,181,218, 62,134,168,240, 6, 24, 96, 80,179,202,226, 34,255,238,201,
+ 47, 62, 25, 30,249,123, 31, 10,244,249,117,108,108,172,191, 91, 53,231,171, 97, 97,237,190,115,113,182, 1, 0,132, 71,196, 35,
+ 46, 81,125, 85, 95,183, 97, 9,100,171,201,193,115, 23, 7, 73, 36,146, 30, 36, 63,132, 3,253,130, 77,165, 25,134,137,173, 82,
+165, 74, 41,103, 75, 14,245,196,178,108,162,158,233,188, 77, 8, 25,238,230,230,230, 23, 21, 21,117,138, 82,154,251,181, 37,145,
+147, 24,118,203,210,210,173, 90,192,245,147,211, 31,222, 62,223,137, 50,154,122, 0, 64, 4,226, 10,109, 42,157,147,147, 51,126,
+194,132, 9, 59,132, 66,161, 11,242,231,156, 21,204,193, 98, 89,150,175,213,106,165, 44,203,242, 1, 16, 30,143,199, 8,133, 66,
+213,169, 83,167, 24,134, 97,162,213,106,245,248,175,144, 71, 43,244, 0, 92,188,120,177,178,133,133,197,119,132,144,254,148,210,
+ 90,217,217,217,234, 69,139, 22, 5,156, 56,113, 34,171, 74,149, 42, 93,189,189,189,137,165,165, 37,158, 60,121, 66, 83, 83, 83,
+255, 4,176,128, 82, 26, 94,129,244,252, 31,123,215, 29, 30, 85,241,181,223,185,119,123,205,166,119, 2, 4, 82,232,132, 46,189,
+ 40, 72,148, 38, 69,164,119,196,130, 40, 8, 10, 74, 71,249,161, 32,162, 2,210, 17,149,170,244, 46, 93, 58, 82, 67, 11, 4,210,
+219,166,103,251,189,243,253, 65,118, 93, 66,202,110, 8, 10,126,123,158,231,102,115,247,238,190, 59,125,222, 57,115,230,156, 88,
+ 66, 72,131,209, 99,126,120,211,195, 99, 89, 52,165,104, 0, 10, 66, 24, 92,201,201,225,119, 23, 22,114, 63, 21, 17, 70, 71,241,
+ 44,197, 52,105,179,174, 94,189,186, 26,128,176, 36, 27, 45,167, 68,158,191, 93,175,139,123,131, 40, 11,183,125,253, 77,130, 30,
+ 0, 62, 95,152,157, 3, 96,197,123, 61, 61,248, 27, 23, 86,204, 15, 84,223,158,244,205, 54,237, 42, 71,224,162,162,162, 66, 25,
+134,233, 7,160,174,143, 36,187,166,183, 56,135, 35,132,182, 39,132,241, 2,112,185,118,237,218, 59, 1, 36, 84,176,158,111, 1,
+ 8, 41,254,126,218,181,223,255, 4,240,167,147, 88,103, 9, 33, 53, 63,248,104,194, 56,177, 80,248, 50, 56,174,254,172,223, 54,
+ 81, 87, 80,105,151,184,196, 37,255, 49,173,214,168,146,222, 23, 56, 10,112, 55, 54,161, 51, 0,132,133,133,209, 59,119,238, 56,
+ 61,225,150,180, 26,199, 35,143,239,191, 60, 13, 78, 70, 70, 70,227,103, 89,112,148,210,159, 1,252, 92,153,152, 69, 68,106,102,
+209, 85,209,116, 93, 1,208,236,223,108, 84, 86,173, 22, 30, 5, 97, 46, 81, 94,121,229,149, 7, 38,147,233, 32,128,120, 66,136,
+ 6,128,214,100, 50,237, 51,155,205,169,132,144,198, 95,127,253,181,213,243,253, 44, 74,233,249, 10,166,131, 7,176,161,232,170,
+236, 60,110, 8, 8, 8,152,224,233,233, 89, 67,175,215,139,245,122,189,200,126, 13, 32,147,201,210, 29,197,210,168,200, 26,145,
+ 32,203, 83,163, 34, 79, 16, 41,143, 64,108,209, 21, 92,141,240, 8,196, 22, 71,241, 46, 94,188, 24,219,176, 97,195,245, 12,195,
+ 84,163,148,250, 2,212,141, 82,164, 83, 74, 51, 4, 2, 65,226,245,235,215, 19,159,151, 1,168,136, 72, 45, 40,186, 92,226, 18,
+151,184,228, 63, 37,101,217,104, 9,156, 5,187,125,251, 54,113, 21,169, 75,236,201, 86, 89,207,227,226,226, 12, 0, 78, 21, 93,
+197,191,123, 30,192,235,207,123, 30,147,146,146,162, 42, 3,103,196,164, 43,137, 0,198, 55, 46, 33,180,243,231,139,181,121, 0,
+ 38,182,239,230, 28,230,165, 75,151, 30, 2,120,232,106,137, 46,113,137, 75, 92,242,239, 73, 73,218, 44,135, 99, 29,186,196, 37,
+ 46,113,137, 75, 92,226, 18,151,184,164,116,177,146,170,146,252,104, 17, 0,157, 74,249,146,195,174,235, 43,114,250,160, 60,124,
+ 23,166, 11,211,133,233,194,116, 97,186, 48, 93,152,255, 61,204,255,170,148, 68,178, 0,128, 84,224, 80,146, 51, 63,218,169,178,
+ 11,220,133,233,194,116, 97,186, 48, 93,152, 46, 76, 23,230,127, 15,243, 69, 39, 89, 37, 16, 78,215,214,161, 75, 92,226,146,255,
+223,178,121,243,102,135,130,138,190, 57,105,197,107, 74,165,251,180,252,220,156, 47,126, 89, 48,108,155,245,253,222,189,123,115,
+174, 82,116,137, 75, 92, 82, 33, 99,248,208,208,224,218, 12,199,183,164,148, 97, 41, 67,205, 36, 87,247,235, 93,173,246, 49,183,
+ 3, 85,170, 84,209, 8, 25,188, 78, 40, 85, 16,194,115, 60,203,156,140,141,141,191,238, 4, 3, 20,187,187,187,191, 35, 18,137,
+ 58, 25,141,198, 32,134, 97, 18, 12, 6,195,193,194,194,194, 37,197, 29, 23,254,155, 18, 17, 17,209,255,200,145, 35,154, 86,173,
+ 90, 25,100, 50,153, 69,167,211, 9,246,238,221, 43,121,245,213, 87,179,239,220,185, 83,161, 19,137,129,129,129, 29, 86,172, 88,
+ 81,189,115,231,206,168, 89,179,102, 65,191,126,253, 68, 45, 90,180, 16,141, 24, 49,226, 94, 98, 98,226, 97, 39,153,116,109, 66,
+200, 58, 66, 8,203,243,252,160,162, 19,137,207,130,177, 51, 12,195,140, 38,132,244,164,148,134, 18, 66, 98, 41,165,219,120,158,
+ 95,230,136,119,252, 18,240,222, 0,208,149, 97,152, 40, 0,224,121,254, 34,128,221,148,210, 45, 79,145,198,103,134, 41,151,203,
+ 27, 2, 64, 97, 97,225,165,202,194, 36,132, 52, 44,234,164, 21,194, 36,132, 12,149,201,100, 35, 1, 64,167,211,253, 72, 41, 93,
+237,116, 98,150,213,162, 81, 51, 98, 0, 0, 23, 63,143, 4, 0, 56,117, 63,250, 6,113,230,183, 74,194,115, 10,227,201, 50,232,
+ 58, 96,192,128,185, 63,253,244,211,231,148,210,223,159, 69,219,247,243, 11, 94,242,213, 55,203, 3,198,191, 51,252, 11, 60,138,
+ 8, 81,166,212, 33,228,101, 49,203,118, 51,114,220,241,235,192, 38, 0, 2, 15, 15,143,254, 98,177,184,141,209,104,244, 23, 8,
+ 4,201, 70,163,241, 88, 78, 78,206,207,148, 82,243, 83, 39, 48,134,184,155, 10,225, 71,248,191,227,188, 81, 6, 6,145, 28, 41,
+136,164, 89,207,193,106,159,193, 35,127, 59,102, 0, 43, 43,226,206,131,101,217,241, 1, 1, 1, 61,115,115,115, 11, 89,150,165,
+143, 96,201,163, 63, 0, 24,134, 33, 60,207,167,101,102,102, 14,250,127,164, 69, 9, 41, 42,215,170, 69,111, 9, 1,248, 2,184,
+ 12, 96, 60,165, 52,223, 69,129,254,177,186, 40,174,209,218, 69, 41, 77,182, 17, 45, 59,119,247,237,162,163,163,143,134,134, 6,
+215,238,221,163,215,220, 49,163,199, 18,150,101,112,245,218, 53,193, 91,131,134,190,226,225,225, 17,168, 52, 24,106,129, 16,190,
+ 80, 42,189,106, 54,155, 18, 55,253,252,147, 42, 50, 34,130,227, 56, 30, 75,151,253,240,106,104,104,240, 39,142,144, 45, 66, 72,
+184,159,159,223,186,201,147, 39,251,117,235,214,141,245,243,243, 67, 92, 92,156,230,151, 95,126,137,248,246,219,111,251, 18, 66,
+ 6, 21,249,242,113, 54,179,173,253, 60,152, 87, 84, 50,210, 17,121, 28,242,204, 56,148,162,195,126, 74,233,241,138, 22, 96, 97,
+ 97,225,187,133,133,133,205,154, 52,105, 66, 87,174, 92, 73,134, 12, 25, 66, 9, 33, 68,167,211,173, 65, 5, 93, 63, 40, 20,138,
+239, 58,119,238, 28, 22, 22, 22, 22,123,247,238,221,174, 27, 55,110,220, 61,120,240,224, 80,133, 66,113, 27, 64,184,147,112,171,
+ 51, 51, 51, 27,232,116, 58, 4, 5, 5,173, 4,208,232, 25, 52, 34,194,178,236,182,192,192, 64, 58,127,254,252,223, 27, 52,104,
+224,171,213,106, 45, 19, 39, 78,236,116,250,244,233, 87, 9, 33,221, 28, 37, 91,132, 16,119, 66,200, 50, 63, 63, 63,175, 47,190,
+248,226, 78,227,198,141, 47, 75, 36, 18,241,237,219,183,229, 19, 38, 76,248,128, 97,152,190,148,210,209,148, 58, 62, 65, 88, 49,
+ 3, 3, 3,189,230,206,157, 27, 23, 21, 21,117, 85, 36, 18,137,110,223,190,173,248,248,227,143,199, 87, 20,147, 97,152,165, 45,
+ 90,180,112,255,252,243,207,111, 68, 68, 68,156, 98, 89, 86,156,144,144,192, 76,159, 62,253, 29,150,101,251,240, 60, 63,166, 34,
+233,244,245,245,117,159, 62,125,250,141, 22, 45, 90,156, 22,137, 68,162,155, 55,111, 50,147, 39, 79,126,199,153,116,122,122,122,
+182,247,244,244, 92,158,146,146, 34, 0, 0,127,127,255,166, 53,106,212,248,214, 62,166,165,213, 52,192,108, 54,231,233,245,250,
+ 1,153,153,153, 37, 58,194, 29, 50,101,241,235, 0,240,173,201,122,255,232,181,188,123, 96,233, 14, 71,242, 29,229, 79, 40, 0,
+244,255,112, 65,143, 71,175,143,222,255,170, 0, 16, 8, 4,252, 58,127, 66, 47, 38, 59,238, 50,134, 16,210,189, 67,135, 14,211,
+ 15, 31, 62,252, 67,187,118,237, 62, 94,191,126,189, 79,124,124,252,151,132,144,224, 55,223,124,115,200,161, 67,135,230,165,167,
+167,111,174,172,246, 47, 22, 73, 36,132, 33,144, 73,229,106, 71, 62, 47,100,152,215, 78,117,239, 62,242,199,155, 55,163,190,141,
+137,169, 94,224,239,223,236,189,247,222,243,237,213,171, 23, 19, 28, 28,140, 59,119,238,120,174, 95,191,190,214,143, 63,254,216,
+147, 16,242, 62,165,244,193,211,144,172,130,108,212, 51, 24, 17, 69, 41, 52,127,151, 17,178, 37, 38, 92, 84,196,144, 43,207, 1,
+217,250,108,245,234,213,159,223,185,115, 7,243,230,205, 3,128, 37, 78,142, 63, 19,122,246,236, 25,189,117,235, 86,217,166, 77,
+155,100, 77,154, 52,129,159,159, 31,138, 22, 83, 54,199,212,213,171, 87,255,127, 53,185,123,122,122,174,188,119,239, 94,123,133,
+ 66,241,216,251,177,177,177, 13,195,194,194,114, 0,124,232, 44,113,243,246,246,222,192,243,188, 33, 51, 51,115, 56, 0,168, 84,
+170,159, 20, 10,133,123,114,114,242, 39,207,106, 33, 99, 99, 38,197,184,200,139,172,209, 42,209, 97,169,125,196,108,134,227, 91,
+142, 25, 61,150,244,235,255,102,202,157,216,123,188, 64, 40,238,191,119,223, 62,121,237,218,181, 25,195,146, 37,176,164,167,195,
+252,193, 7, 47, 29, 60,120,208,220,167,255, 64,157,144, 37,171, 67,171, 87,147,255,250,243, 47,126, 91,183,108,110, 9,224,122,
+121,154, 44, 63, 63,191,117, 71,142, 28, 9,172, 94,189, 58,178,179,179, 17, 23, 23,135,130,130, 2,244,237,219, 87,216,178,101,
+203,192,222,189,123,175, 35,132,180,114, 84,179, 69, 8,241,173, 25, 36,216,249,213,103,125,195, 95,125,165,165, 34, 48,184, 6,
+104,138, 30,241,119, 99,154,236, 60,114,250,189, 48, 13,115,235, 78, 14,125,141, 82,154,234,108, 1,102,100,100, 76,234,217,179,
+231,150,246,237,219,123, 75, 36, 18, 4, 4, 4,144,110,221,186,165, 37, 37, 37,205,120, 10,226,130,162, 85, 24,103,255, 90, 60,
+ 60,144,131, 18,228,238,238, 14,119,119,119, 0, 8,124,218,149,167, 70,163, 89,162, 82,169,122,231,230,230,234, 24,134,161,132,
+ 16,170, 80, 40,100,238,238,238,127,221,136,185, 21, 96, 48, 24,106, 46, 88,244,227, 55, 29, 90, 55, 80, 31, 56,112, 0,189,122,
+245,162,251,247,239, 31, 13,224, 7, 7,127, 99, 89,207,158, 61, 11,167, 77,155,166,191, 19, 27, 23,120,227, 86, 44, 81, 72,197,
+188,151,151,151,240,236,217,179,130,133, 11, 23, 74,167, 79,159,190, 12, 64,111, 39,210,189,236,205, 55,223, 52,125,244,209, 71,
+201, 55,239,220,243,185,114,227, 14, 85, 74,133, 22, 47, 47, 79,246,244,233,211,124, 69, 48, 25,134, 89, 58,105,210,164,220,209,
+163, 71,103,101,106,115,252,178,114,243,169, 68,200,154,253,252,252, 4,191,255,254,187, 97,195,134, 13,204,200,145, 35,151, 2,
+232,227, 68, 17, 47,237,214,173, 91,222,228,201,147,179,111,199,222,247,187,114,253, 22,228, 18,161,217,215,215,135, 61,119,238,
+156,105,193,130, 5,204,236,217,179, 29, 74,167, 66,161, 88,187,113,227, 70,193,239,191, 63, 26,251,254,252,243, 79, 38, 52, 52,
+ 84,110,255, 25,157,222, 0,134, 0, 25, 25, 25,242, 22, 45, 90,172, 5, 16,244, 4, 9,154, 17,131, 33, 83,128,119,223,125, 55,
+217,217,246, 18,229,255, 30, 46,150,227,254,150, 95, 90,139,246,255,112, 65, 15,129, 64,192,143, 28, 57, 50,165,248,115,189, 94,
+ 79, 0,116,139,114,130,108,117,237,218,245,211, 93,187,118,213, 88,191,126,253,215, 27, 54,108, 48, 2,128, 84, 42,245,250,229,
+151, 95,230,245,237,219, 23,125,251,246,157, 6,160,210,136, 22, 71, 57, 19, 0, 72,164, 18, 73, 76, 76, 12,137,140,140, 44,211,
+184,213,196,243,231,127,188,121,179,241,219,145,145, 77,180, 60, 95, 83,244,234,171,249, 19, 38, 76,200,200,205,205, 69, 92, 92,
+ 28, 76, 38, 19,134, 12, 25,194,182,107,215, 46,160,111,223,190,139, 9, 33,111, 80, 74, 77, 14,104,117, 22, 4, 6, 6,142,202,
+201,201,201,183,106,117,106, 85, 83, 9,218, 52,180, 72,234,215, 52,139, 69,172, 69,244,250, 7, 60,217,191,132, 20, 68, 86,199,
+ 9, 0, 16, 21, 34, 93, 4, 60, 53,209,114, 11, 38,213, 57, 33,102,123, 87,149,191,156, 30, 91,248,121,254, 3,186,164, 44,141,
+173, 66,161,232, 81, 80, 80,176,185,104,114, 14,127,237,181,215,112,250,244,105, 0,104, 9, 96, 9, 33,164, 3,195, 48,111,241,
+ 60,191,130, 82, 90, 86, 40,183,247,186,119,239,254,242,214,173, 91, 85, 0,176,121,243,102,152,205,102,132,134,134, 66, 36, 18,
+ 65, 44, 22, 67, 40, 20,218,162,131,252,127, 18,134, 97, 36,151, 47, 95, 70, 64, 64, 64,241,118, 2, 0,109, 42, 0, 57, 45, 54,
+ 54,182,197,133, 11, 23,208,190,125,251,105,245,234,213,235,114,244,232, 81,191,204,204, 76,180,111,223,126, 49,128,223,159,117,
+158,236,185,200,127,166,158,138, 49,201,118,143,152, 25,195,178, 44,131,123,177,113,230,246,237, 59, 14,126,248,240,161,178, 89,
+179,102,140, 80, 40, 68,193,225,195,208,159, 59, 7,165, 82,137,158, 61,123, 10,143, 29, 59,166, 86, 43,213, 35,238,223,187,159,
+199,178, 12, 40,101,202,181,121,112,119,119,127,231,147, 79, 62,241, 11, 11, 11,131,197, 98,177,121, 52,183, 88, 44,136,143,143,
+135, 82,169,196,160, 65,131,124,228,114,249, 59, 14, 78,178, 85,195, 67,125, 46, 30,217,189,172,209,132, 49, 93, 21,225,242, 3,
+ 80,196,191, 15,229,230,183, 81, 43,105, 47, 38,247,104,166,216,255,221,180,168, 26, 1, 30, 23, 9, 33, 85,157, 45, 36,189, 94,
+127,226,234,213,171, 35,142, 30, 61,202, 3,192, 31,127,252, 65,111,220,184, 49,250,105, 86,161, 60,207, 35, 59, 59, 27, 60,207,
+179, 69,247,214,215,127, 85,189,175, 86,171,151,118,233,210,229,205, 7, 15, 30,200,246,236,217,227,249,240,225, 67,175,251,247,
+239,123,135,135,135, 11,230,205,155,183, 75,111, 48,177,102,142, 26, 45,156, 57, 47,249,218,181,216,172,212,212,139,171, 86,173,
+210, 17, 66,122, 58,248, 27,111,248,251,251,123, 78,153, 50, 5, 68, 40,111, 26, 81,171, 94, 24, 43,148,185, 49, 66,177,155, 78,
+167,231,238,221,187, 23, 63,101,202,148,106, 13, 26, 52, 8, 40,218, 94,115, 8, 51, 32, 32,192,235,163,143, 62,130, 64,162,106,
+ 88,191, 65, 84, 13,177, 68,161, 98,133, 50, 85,179,102,205,218,197,198,198, 38, 77,158, 60,217,191, 73,147, 38, 78, 97, 54,105,
+210,196,125,228,200,145, 22,169, 76,213,162,122,245,208, 90,245,235,212,138, 14, 15, 15,239, 33, 16, 8, 44,233,233,233, 15, 6,
+ 13, 26,228,255,250,235,175,251, 58,131,233,227,227,227, 62,121,242,100, 75,112, 72,104,231,206, 47,191,210, 92, 36, 83,185, 9,
+196, 10, 77, 97,161,158,187,121,243,230,131,169, 83,167,250, 55,108,216,208,199, 17,204,194,194, 66,161,151,151, 23,234,214,173,
+139,218,161,161,200,201,201,193,214,173, 91,177,122,245,106,172, 88,177, 2, 63,255,252, 51, 26,183,122, 5, 42,149, 10, 73, 73,
+ 73,200,205,205, 21,254,211,109,138, 95, 90,139,126,107, 28,213,109,236,216,177, 73, 35, 71,142, 76,145,201,100,124,241,203,195,
+195,131, 27, 48, 96, 64,234,160,143, 23,117,179,110, 45,150,165,201,234,216,177,227,229,221,187,119,223, 93,191,126, 61,106,215,
+174,141,206,157, 59,139, 1,224,157,119,222, 17,247,237,219, 23, 27, 55,110,196,230,205,155,175,135,135,135,159, 36,132,116,119,
+ 36,157,131, 6, 13,106,213,167, 79,159,227,125,250,244,185,212,175, 95,191,229,163, 71,143,126,108,230, 74, 78, 74, 56,111, 52,
+ 26,209, 32,170,137,124,214,202, 51, 3,202,195,187, 1,172, 95, 30, 19,179,250,139,107,215, 30, 76,171, 93, 91, 19,114,255,190,
+199,154, 5, 11,188,172, 65,186,205,102, 51,226,227,227,225,238,238,142, 1, 3, 6,120, 73, 36,146, 65, 14,180,159,133,221,187,
+119, 31,250,240,225, 67,229,143, 63,254,232,127,233,210,165,128,228,228,100,255, 67, 7,247,121, 79,252,240, 29,149,155, 82, 44,
+ 78, 74,127, 68, 84,239, 39, 65, 17,115, 15,173, 40,133,198,126, 59,177, 66,227, 66, 0,145,201,131,201,183, 53, 90,105,110,125,
+180,177, 97,191,201,191, 53,116,247, 10,150,126, 82, 70, 58,235,207,159, 63,127,211,142, 29, 59,250,183,106,213,106, 11, 33, 68,
+ 86,194,103,164,141, 27, 55,222,186,113,227,198,161,173, 91,183, 62, 65, 8,169, 91,234, 42, 50, 40,168,231,111,191,253,230,105,
+189,247,242,242,130, 84, 42,125,130,100,137, 68, 34, 48, 12,131,255, 79,146,158,158,254, 86,155, 54,109, 54,117,237,218,213,112,
+225,194, 5,164,167,167, 35, 48,208,182,214, 78,169, 0,164,135, 92, 46, 71,112,112, 48,194,194,194,250, 31, 59,118,204,207,108,
+ 54,227,254,253,251, 72, 75, 75,187,248, 79,228,201,158,139,188, 72, 82, 44,206,225, 40, 0,187,158, 32, 90, 69,177,133,142, 0,
+ 0, 37,164,224,242,213,171, 66, 86, 44, 30,248,211,134, 13, 18,145, 72,132, 7, 15, 30,224,250,245,235, 40, 60,116, 8,186, 83,
+167,144,154,154,138,252,252,124,248,250,250, 98,217,202,149, 10, 35, 71,135,221,188,117,139,165,204,223,246, 6,165,157, 72,144,
+ 72, 36,157,122,245,234, 85, 42, 33, 75, 74, 74, 66,215,174, 93,133, 44,203,118, 42, 65, 61,119,176, 88,230, 72,128, 55,217,113,
+104,203, 44,127,127,241,117,224,206, 4, 32,239, 34, 64, 13,128,197, 8, 36, 94, 1,118,205, 64, 72,126, 12,217, 55,107,176, 95,
+160, 92,176,131, 20, 83, 27, 57,112,188, 53, 52, 50, 50,114,197,192,129, 3, 25, 0,232,208,161, 3,137,140,140, 92, 78, 8, 9,
+ 45, 67,141,120,176,156, 73,242,116, 86, 86, 22,250,246,237,235, 89,163, 70,141,131,125,251,246,245,180,190, 95, 81, 76,171, 54,
+185, 78,157, 58,153, 50,153,236,103, 66, 72,185, 3,172, 61,166, 70,163, 89,210,181,107,215,222, 27, 54,108, 16, 1,192,145, 35,
+ 71,176, 99,199, 14, 92,187,118, 13,183,111,223,230,163,162,162,188, 23,173,216,180,116,201, 15,107, 23,246,104,217, 32,160, 93,
+211,168, 90,202,252,172,124, 95, 95,223,150,148,210, 80, 7,211,217,117,198,140, 25,215,111,220,125,224,198, 8,132, 2,145, 80,
+ 32, 81,171, 21,190,238, 42, 69,144,135, 92, 26, 40, 97,136,178,176,176, 48,229,231,159,127,230, 1,116,117, 20,115,214,172, 89,
+247,110,220,121,160, 33,140, 64, 32, 20, 8, 69, 74,165, 92,243,106,231,246, 77, 0, 64, 4, 42,202,205,205, 77, 93,189,122,181,
+201, 25,204,207, 63,255,252,170, 54, 59,223, 93, 32, 20, 10, 5, 2,214, 86,150, 10,153,204, 91, 46,145,136, 13, 6, 67,226, 55,
+223,124,163,115, 6,115,198,140, 25,215,111,222,125,232,193, 16,194, 18,194, 8,212, 42,133,167,167,155,220,219, 91, 41,243,146,
+ 11, 88,113,110,110,110,226,186,117,235, 28,194, 52,153, 76,162,212,212, 84,220,184,113, 3,193, 77,154,224,192,129, 3,168, 82,
+165, 10,250,246,237,139, 55,223,124, 19, 50,153, 12, 29, 90,212,195,148, 41, 83,112,247,238, 93,152, 76, 38, 73, 73,152, 54, 59,
+169, 98, 18, 16, 16,112,161,188,246, 99,255,221,226,233,140,242, 39,244, 91,227,168,110,246, 4,171, 52,124, 15, 15, 15,174, 36,
+109, 87,113,204,174, 93,187,126,122,232,208,161, 26,235,214,173,235, 54,104,208,160, 19,235,214,173, 67,243,230,205,113,227,198,
+ 13, 84,171, 86, 13,107,214,172,193,155,111,190,121, 98,241,226,197,221, 46, 92,184,208,160,122,245,234,159,148,135,217,175, 95,
+191,113, 13, 27, 54, 60,156,146,146,210, 66,171,213,214,221,186,117,235,176,158, 61,123,222,235,223,191,127, 71,155, 70,203,108,
+222,176,107,251, 22, 68,119,235,133,136, 58,117,151, 14,249,100,125,189,178, 48, 41,165,244, 26,176,124,117,114,114,250, 6,189,
+190,176,175, 80, 40,151,159, 57,227,177,249,135, 31,188,236, 79,122, 39, 38, 38,226,245,215, 95, 23,138, 68,162,214,101,165,147,
+ 16, 50,191, 71,143, 30,125,183,110,221,234,110,213,234,156, 58,117, 10, 87,174, 92, 65, 92, 92, 28,178,179,179,209,113,116, 62,
+198,206,123,132, 61,118, 30,197, 43,239, 80, 69, 5,199, 16,155,200, 67,136,159,167, 90,112,114,216, 55, 17,239,140, 90, 90, 91,
+160,244, 16,226,167,143,111, 35,245,142,126,115, 41,233, 36, 45, 90,180, 88,223,167, 79, 31, 98, 52, 26, 97, 52, 26,141,148, 82,
+ 93, 73,216,129,129,129,210,250,245,235, 99,244,232,209,140, 90,173, 94, 92, 90, 58, 11, 10, 10, 12,187,119,239,198,160, 65,131,
+240,254,251,239,163,102,205,154,112,119,119,135, 80, 40,196,218,245,191,122,189, 57,108, 76,120,163, 86,109, 26,212,110,212,188,
+126,158,129,109, 34,146,123,140, 36, 37,108, 13, 60,139, 19,114,207, 3,102,189,122,245, 90,157, 61,123, 86,210,166, 77, 27, 60,
+120,240, 0, 66,161,109, 61,197, 61, 77, 58,103,204,152, 33,209,235,245,248,235,175,191, 48,120,240,224, 68,147,201,244,193,179,
+206,123,113, 46,242, 34, 9,165,116,121,177, 43,185, 52,141,214, 12, 0, 48,243,216, 49,112,240,176,194,157, 59,119,202,197, 98,
+ 49, 30, 60,120,128,228,228,100,172, 93,189,154,235,224,227,147,215, 57, 48, 48,119,237,234,213,212,104, 52,130, 82,138,200,200,
+ 72,244,238,221, 91,246, 70,223,254,105, 36, 87,247,171, 3,204,207,223,186,191, 62,108,216,176, 39,158, 79,156, 56, 17,106,181,
+ 26,132, 16, 63, 7,242,215,231,189, 25, 61,130,220,171,107, 82,105,202, 90, 45, 88, 41, 32, 80, 1, 2, 53, 32,117, 3, 36, 42,
+ 64, 44,135,225,194, 97, 45, 67, 59,199,245,106, 61, 60,208,201,173, 30, 4, 4, 4, 76, 59,124,248,176,247,133, 11, 23,104,110,
+110, 46,146,147,147,233,220,185,115,189, 3, 2, 2,166, 85,180, 82,146,146,146,102, 69, 71, 71,167, 14, 30, 60,216,109,239,222,
+189,193,131, 7, 15,118,139,142,142, 78, 77, 74, 74,154,245, 52,149, 45, 18,137,216,107,215,174,121,204,158, 61,251, 77, 0,231,
+235,214,173,155, 25, 20, 20,116,190,200,104,178, 76, 81,169, 84, 54,146,101,213,174, 9, 4, 2, 8,133, 66, 4, 4, 4, 24,181,
+ 90, 45,215,186, 81,168, 44,210,141, 49, 7, 72, 68, 50, 15,153, 52, 72,165,118,107,150,153,153,121,153, 16,226, 80,124, 66, 66,
+ 72,195,166, 77,155, 10, 57, 42,228,199, 14,236, 16,240,206,208,246, 62,223,207, 30, 89,229,155, 89,163, 2,231, 79, 31, 17, 57,
+107,210,128,246, 12,207,235,171, 85,171,230,103, 53,104,119, 64,125, 30,213,184,113, 99, 1, 15, 33,110,220,138, 75,125,144,144,
+152,247,114,187, 22, 54,205,101,237,134, 81,157,189,189,189,219, 68, 70, 70, 54,118,212, 39,140, 76, 38,107, 24, 17, 17, 33, 96,
+ 88, 33,241,116, 87, 5,171,148, 50, 95,235, 51,181, 70,243,146,135,183,119, 31,134,210, 28,127,127,127, 31,153, 76,214,208,137,
+188, 11,120,136,224,235,227,225,230,237,165, 81,118,110,223,178,102,139,151, 90,132,215,107,214,188, 69,157, 70,141,223, 32, 22,
+ 75,110,104,104,168,143,213, 72,190, 44, 49, 24, 12,210, 13, 27, 54, 96,246,236,217,168, 31, 18,130,192,192, 64,248,248,248,224,
+212,169, 83, 56,123,246, 44,220,221,221,145,150,150,134, 5, 11, 22, 96,219,182,109, 48,153, 76, 42,103,219,147, 35,100,171, 44,
+177, 88, 44, 76,113,130, 85, 26,190, 76, 38,227,173, 70,242,165,201,238,221,187,215, 91, 53, 89,227,199,143,111,181,104,209,162,
+ 19, 49, 49, 49, 80, 42,149, 56,123,246, 44,134, 13, 27,118, 98,241,226,197,173,198,140, 25,131,213,171, 87,227,222,189,123, 43,
+203,194,235,215,175,223,244, 17, 35, 70,124,115,244,232, 81,198,215,215, 23,238,238,238,232,209,163, 7, 86,174, 92, 41,176, 88,
+ 44,171,250,244,233,115,169, 79,159, 62,151,184,248,253,159,110, 90, 49,247,212,213,203,151, 48,238,189,143,196, 70,139,121,178,
+ 3, 3, 47,213, 41,149,121,150, 54,109,180, 27,205,230,194,126, 34,145,220,237,210, 37,143, 29,171, 86,217,200,214,148, 41, 83,
+224,230,230, 6, 60, 50, 96, 70, 25, 90,157, 81,219,182,109,179,141,135,158,158,158, 16,139,197, 16,137, 68, 16, 10,133, 96, 89,
+ 22, 7,151, 42,240,195,148, 71,252,226,135, 41, 4,251,151,144,167,138,205,170, 8, 34,117,221,125,197,151,222, 94, 83,167, 65,
+221,142,158, 56,245, 75, 10,230, 70, 95, 72, 56,187, 49,125,130, 62,173,212, 80, 74,141, 38, 78,156, 88, 59, 45, 45, 13,231,206,
+157,195,185,115,231,102,151, 82, 54,250,237,219,183,127,153,159,159,143,234,213,171,163,123,247,238,109, 8, 33, 77, 74,233, 55,
+104,220,184, 49, 94,127,253,117,180,111,223, 30,245,235,215,135,209,100, 17,246, 25, 56, 42,226,218,189,244,192,185, 11,230,202,
+ 15,255,177,149, 57,113,226, 40,187,126,203,126,183, 22,237, 95,249, 70,164,242, 63, 77,228, 94,254,255,117,141,150, 84, 42, 93,
+116,244,232, 81, 63,147,201,132,171, 87,175,226,253,247,223,127,218,152,161, 54, 5, 72,112,112, 48,142, 28, 57,130, 1, 3, 6,
+232, 83, 83, 83,255,252,167,242,100,207, 69,254, 43, 34,176, 99,144, 54,121,248,240, 97,182,135,135, 71, 96, 68, 68, 4, 99, 52,
+ 26, 31,109, 73,108,222,204,173, 88,181,106,151, 94,175,127, 15,128,104,201,247,223, 47, 13, 12, 10,106, 63,112,208, 32, 98, 54,
+155, 17, 29, 29, 45,222,185,115,167,231,221,212,212,114, 3, 34, 23, 95,109, 12, 25, 50, 4,139, 22, 45, 2, 0,188,251,238,187,
+ 54,213, 58,113,192, 96, 73,233,134,174,157, 95,107,172,142, 87,124,171, 54,189,100,206,175,122, 87,117, 90,145, 47,107, 12, 70,
+ 44,128,148, 5,111, 50, 91,110,167,245, 60,127,247,118,173,218, 50,109,102,181, 78,117,218, 98,197,129,117, 93, 1,108,116,120,
+ 85, 39,151, 55, 85, 42,149, 56,127,254,188,182,113,227,198,217,148, 82,183, 89,179,102,121,201,229,242,166, 79,193,126,239, 19,
+ 66,218,180,108,217,242, 29,134, 97, 58,241, 60,127, 48, 53, 53,117, 9,165,244,190,131,147,246, 88, 0,159,195,206, 14,197,104,
+ 52,130, 97, 24, 80, 74,209,175, 95, 63, 76,153, 50,165,246,149, 43, 87,112,248,240, 97,143, 78,157, 58,157, 38,132,100, 3, 24,
+ 78, 41, 45, 81,107,150,155,155,171, 59,123,246,172,236,240,225,195,224,121, 30, 30, 30, 30, 80,171,213,144, 72, 36,232,209,163,
+135,114,242,228,201, 29,247,237,219,151,150, 91,181, 10, 43, 77, 78, 44,144, 40,149, 42,248, 5,182, 30,211,255,173, 24, 74,233,
+ 54, 39, 6, 7,177, 76, 96,209, 19,206,192,204,255,108, 49, 35, 23,137,136, 84, 36,128,132, 47,196,167, 95,206, 33, 34,202, 9,
+224,228,254,188, 72, 36, 18,169, 36, 48,178, 98,214, 44, 39,168, 20,231,112, 44,203,138,165, 34, 24, 74,123, 46,100, 24,134, 97,
+ 24, 17, 0,139,163,152, 18,137, 68,164,146,208, 82, 49,101, 44, 97, 9, 33, 98, 60, 58,157,245,132, 68,249, 19,106,167, 69, 50,
+216,147,226,214,173, 91, 99,215,225,243,216,188,227, 32, 50, 30, 92,198,212,143,199,163, 73,147, 38,216,185,115,103,153,105,178,
+218,104,149,166, 93, 14, 8, 8,184,144,148,148,212,168,180,239,150,100,163,197, 47,173, 69, 7,125,188,168, 91, 73, 90,170, 18,
+241, 63,115,123,132, 85,134,141, 22, 33,164,123,235,214,173,199,109,216,176,193,216,165, 75, 23,113,191,126,253, 80,183,110,221,
+ 86, 67,135, 14, 5, 0,116,234,212, 9,139, 22, 45,106, 53,116,232, 80,252,250,235,175,216,186,117,171,161, 93,187,118, 31, 19,
+ 66, 18, 41,165,187, 75,194,228,121,254,245,101,203,150, 21,215, 20,194, 98,177,192,108, 54,251, 91, 44, 22,255,162,177, 8,223,
+124,179, 56, 99,255,190,157,248,248,147, 25,240,241,246,107,232, 96, 27, 34, 67, 62,250, 40, 99,205,130, 5, 88,240,235,175,248,
+168, 90, 53,249,186,235,215,177, 95,175,199,198,195,135, 51,138,126,167, 92,219,204,130,130, 2,221,238,221,187,213, 27, 55,110,
+132, 70,163, 65,205,154, 53,225,225,225, 1,161, 80, 8,134,149,129, 21,185, 35,162, 78, 83, 0,103, 1, 0,213, 2, 80, 16, 89,
+ 29, 39, 8, 65, 54,101, 74,111,195,165,246,209, 16, 82,213, 55, 68,122,116,220,234,186, 26,181,143, 8,123,151, 60,196,190,111,
+227,183,233, 51,240, 53, 44,184, 89,198, 97,141,198,213,171, 87, 71, 90, 90, 26,118,239,222, 93, 0,224,171,210,126,131,231,249,
+ 47,191,255,254,251,137,159,124,242,137, 36, 50, 50, 18, 0, 26, 2, 56, 87, 34,233, 83, 40, 16, 24, 24,104, 35,150,253, 6,143,
+ 9, 29, 61, 97,140,172,231, 43,237, 33, 16,120, 33,187,192,140,204, 60, 51,220,189,148,248,120, 66, 31,233,193,198,129, 77,150,
+ 45,254,105, 59, 33,164, 9,125,150,206, 34,255,101,241,244,244,108,152,153,153,137,251,247,239, 99,240,224,193,137, 25, 25, 25,
+ 7, 10, 10, 10,134, 37, 37, 37, 1,128,182, 2,144, 54, 50,223,176, 97, 67, 52,109,218, 20,125,251,246,149, 22, 22, 22,246, 9,
+ 13, 13, 13, 4,240,210,179,204, 79,113, 46,242,159, 34, 90, 37, 78, 8,102,115,132, 97,233, 82, 20, 28, 60, 8,241,254,253,216,
+ 24, 16,144,175,215,235, 63,164,148,198, 23, 13,122,227, 87,175, 89,115,178,219,159,127,170,141, 49, 49, 8,189,114, 5, 66,141,
+166,161,179, 9, 88,181,106, 21,114,115,115,145,147,147, 3, 0,248,246,219,111,145,155,155, 11,171, 45, 67,185, 25, 16,161,149,
+159, 79, 53,164,224, 54,120, 1,163,140,139, 40,108,174,212,171,146, 2, 31,250, 22,228, 48,129,136,121,208, 76,161,203, 52, 54,
+ 39,172, 17,250,140, 66, 4,182,172, 9, 1, 4,173,156, 73,163,117,223, 95, 32, 16,104,111,221,186,245,122,120,120,248, 14, 0,
+ 94, 79,107, 15, 64, 41,189, 3,224,189, 10,146,128,207,239,221,187,231,179,114,229,202,119,102,205,154, 69,237,137,150,245,127,
+129, 64, 0, 74, 41,220,220,220, 32, 20, 10,125, 79,157, 58,229,219,172, 89,179,239,138, 6,180,146,242, 73,235,214,173,139,123,
+247,238, 65, 32, 16,192,205,205, 13,188,197,132, 25, 19,198,128, 99, 37,130, 73,147, 38, 53,236,213,171,215,213,149, 43, 87,154,
+213, 45, 90,190,148,153,153,121,109,220,128,129, 87,127,255,253,119, 35,207,243,203, 28,204,243,165,219,183,111,179, 65, 1,190,
+ 44,181, 20,242, 10, 17, 32,189,252, 13, 21, 43,253, 32, 21,176, 84, 68, 24, 72,164, 50,183,251, 9, 9,153, 60,207,223,112, 4,
+147,231,249,139,247,238,221,147,249,250,120, 10, 10,117,198,124,153,144,138,227, 46,158,143,173, 26,213, 56, 20, 0,244, 23,207,
+ 30,145, 68,212,146,197,165,166, 43,170, 85,171,230, 16,166, 78,167,187,148,152,152,200,250,250,250, 10, 30,196, 39,108,215, 40,
+ 21,222,106,141,166, 57, 0,152,242,114,206, 50, 6, 67, 58, 43, 20,248,166,103,102,106,117, 58,221, 61, 71,243,126,247,238, 93,
+129,191,191, 15,187,119,255,161, 29,190,114,137,143, 74, 44, 80, 75, 8, 33,114,150,228,138, 44,124,134, 84, 46,247,185,159,144,
+160,165,148,150,170, 33,252, 34,123, 96,207, 71,245, 53,227, 87, 59,108, 92,190,124, 25,123, 78,220,128,130, 26, 65,244, 57,216,
+191,250, 71, 12,152,244,201, 83,219,253,149, 71,182, 42,164,205, 90, 86,235, 66, 49,124, 36,149, 99, 8, 63, 96,192,128, 25,235,
+215,175,183, 25,160,220,184,113, 3, 29, 58,116,176,110,115,160,115,231,206,104,214,172, 25,110,220,184,129,176,176, 48, 28, 62,
+124, 88,194,178,172,100,224,192,129,115, 1,236, 46, 47,189,203,151, 47,199,176, 97,195, 74, 50,172,190, 11, 64, 79,220, 35,243,
+167,124,177,214, 75,155,153,129,180,244,148, 75,142,150, 3, 33, 4, 67, 62,250, 40, 99,153,209,136, 13,103,206, 96,144, 66, 33,
+ 95,115,231, 14,162,155, 53, 67,189, 14, 29, 50, 28, 25,235,172, 90, 29,189, 94, 15,161, 80, 8,181, 90, 13, 79, 79, 79,136, 68,
+ 34,176,194, 0, 8,196, 13,192,136, 68,136,106,221, 0, 11, 62, 84, 20, 14,126, 21,139, 9, 65,182, 68,140,139, 34,121,201,182,
+ 58,132, 16,162,168,130, 30,148, 34,183, 48, 30,127, 88, 9,137,166, 42,113, 83,170,133,251, 71,124, 23,169, 81,251,136,176,103,
+241, 3,236,255, 46, 97,139, 62, 5, 83, 1,220, 45,235,116,177, 68, 34,169,167,209,104, 16, 31, 31,143,135, 15, 31, 94, 47,203,
+192,159, 82, 90,216,162, 69,139, 88,137, 68, 82,219,219,219, 27, 0,170,151,150, 78,158,231,109,118, 88,235, 54,108,242,106,216,
+ 38, 84,250,114,171,218, 88,187, 99, 14,222,238,179, 24, 66,150,128,227, 76,248,122,209,107,224, 12,249,232,211,109, 20,105,219,
+ 41,172,193,193, 29,198, 17, 0,126,252,175, 18,173,132,132,132,247,218,180,105, 51, 55, 47, 47, 47,171,160,160, 96, 0, 0, 84,
+175, 94, 61,132, 97, 24, 9,128, 89,101,180,167, 16,148,236, 22, 66,116,229,202, 21,168, 84, 42, 36, 38,254, 29,147, 62, 62, 62,
+ 30, 60,207, 27,224,146,178,250,104, 20,165,244, 34, 33,196, 31, 64, 52,236,220, 59, 48, 69,170,186,182,187,118,237,162,187,118,
+237,106,107,155,188, 40,229, 45, 90, 45,168,225, 81,217, 10,133, 66, 10,192,254, 68,147, 92,163,209, 16, 97, 80, 16,136,228,145,
+233, 7,181,219, 19,126, 90, 49,155, 29,115, 45,195,115, 96, 65, 76,160,118, 74,140, 2, 41,193, 28,175,142,120, 79, 60, 13, 41,
+ 98,141,125,207, 6, 44, 20, 28,120,214,201,228,208,130,130, 2, 88, 44, 22,247, 26, 53,106,236,178, 88, 44,238,214,173,129,127,
+171, 82, 57,142,139,101, 89, 22,239,188,243, 14,172,218, 31,163,209,136,148,148, 20, 24, 12, 6, 24,141, 70,220,187,119, 15, 57,
+ 57, 57, 48, 26,141,184,118,237, 26,170, 87,175, 14,150,101,253,203,104, 40,148, 82,138,224,224, 96, 84,173, 90, 21, 44,161, 88,
+ 49,127, 58, 62,125,127, 12,222,172,206, 99,213,146,175,209,174, 93,187, 90,213,170, 85,107, 33, 16, 8, 56, 63, 63, 63,209,214,
+173, 91,183,115, 28,215,195, 9, 63, 90,187,167, 76,153, 82,181, 78,157, 58, 62, 26,181,202, 44, 17,179, 16,155, 11,168,196,144,
+ 73, 5,133, 25, 8, 14, 14,177, 64, 38, 15, 27, 52,104, 16,231,200,228,104,197,252,240,195, 15,253, 35, 35, 35,221,220, 53,170,
+ 2,177,144, 77, 19,129,102,228, 92, 62,119, 26, 0,196,222, 62,122, 72,229,181, 7, 15, 30,108,113, 6,115,218,180,105,213,189,
+189,189, 53, 12,104, 30,103, 50,253,189,223,110, 48,102, 18,161, 80, 7,145,184,241,187,239,190, 75,156,193,156, 56,113, 98,181,
+218,181,107,107, 52,106, 69,190, 64,200, 38,139,120, 62, 89, 10, 62, 69,104, 52,101, 73,189,189, 10, 33, 87, 70, 13, 26, 52,168,
+ 84, 76,171, 54,107,242,228,201,241,197,136, 55,180, 90, 45,244, 41, 87, 33, 74,140, 65, 3,165, 16, 77,188,221, 33,145, 72,108,
+ 71,223, 75,107,174,165,217,104,149, 68,182, 28,253,110,227,153,101,108, 1, 46,171,117,161,184,223,172, 34,252, 50,251,211, 79,
+ 63,253,244, 73,251,246,237,211, 58,119,238,108,220,181,107, 23, 8, 33, 56,124,248, 48, 18, 19, 19,209,185,115,103, 80, 74,173,
+167,218,112,233,210, 37,116,234,212,201,216,166, 77,155,196,159,126,250,233,115, 71, 42,103,216,176, 97, 48,155,205,200,207,207,
+135, 86,171,197,206,157, 59,209,160, 65, 3, 42,151,203,123,177,193,175,204,233, 51,226,147,151,234,214,111,136,239, 22, 47, 48,
+138, 5,194, 47,156, 28,132, 49,248,195, 15, 51,114,162,162,180,235, 10, 10, 10,135,168,213,242, 26,241,241, 30,231,247,237,243,
+ 50,153, 76, 14, 97, 88,181, 58, 65, 65, 65, 54,146, 37, 18,137, 32, 16,123,131, 85,212,131,216,179, 51,228,126,189,240,199, 69,
+137,193, 77,129,109, 42, 37,246, 42, 52, 40,213,181,131, 60, 24,115, 94,234,231,191,181,229,155,254,135,228, 85,176,146, 16,194,
+ 16, 66, 24, 42, 32, 91,135,126, 29, 94,195,187,170, 12,127,110, 74,193,254,239, 18,126,211,167, 96, 58,128, 59,229,245,115,147,
+201,164,231, 56, 14, 12,195, 64, 32, 16,216,219,136,158,252,237,183,223,112,254,252,121, 0,176,185,237,201,203,203,227, 88,150,
+133, 84, 42, 5, 0,101, 25,227, 29,132, 66, 33,132, 66, 33,142,156, 62,230,249,230, 27,175,145, 83,127, 29, 64,203, 6,253,145,
+153,111, 66,106,142, 9,217,133, 64,157, 38, 83, 81,183,211, 54, 92,190,151,135,134,245,235,178,172, 88, 49,248, 5,159,188, 67,
+124,124,124, 78,121,121,121, 29, 38,132,132, 16, 66, 66,212,106,245,201,128,128,128, 24, 66, 72,119, 74,233,239, 73, 73, 73,145,
+249,249,249, 45, 41,165, 15, 40,165, 15, 50, 50, 50, 58,164,165,165,189, 84,214, 97, 45, 79, 79,207,149,185,185,185,227, 57,142,
+235, 86,116,189,202,113, 92,195,219,183,111,215,110,216,176,225,245,208,208,208, 75,161,161,161,123, 66, 67, 67,183,135,134,134,
+110,111,223,190,253, 34,171,187,135,103, 41, 37,113,145, 23, 72,172,166, 46,209, 69,174, 30,162,109,115, 70,209,235,145,226, 6,
+104, 22,137,228,154,101,220, 56,104,182,111,135,240,246,109, 12, 29, 60, 88, 45,151,203, 23, 19, 66, 26, 17, 66, 90, 42,149,202,
+239,166, 79,159,174,242,154, 55, 15, 1,199,142, 33,110,231, 78,152,133,194,115, 21, 73,157, 78,167,131, 64, 32,176,105, 98, 20,
+ 10, 5, 56,142, 43,226,110,229, 16, 14, 11,254, 76, 76,141,129, 24, 85,193,131,230,239,205,109,115,166,127,236, 84,159,157,185,
+213,195,238, 20,136,194,102,122, 55,247, 89, 28,210,234, 76, 1, 17,228,139, 53, 82, 60,124, 24, 15, 14,188, 83,251,205,122,189,
+ 62,167,160,160, 0, 13, 27, 54,244, 60,127,254,124,141, 6, 13, 26,120, 20,189,127,246, 41, 59, 81,139,192,192,192, 77, 65, 65,
+ 65,247, 3, 3, 3, 55, 17, 66, 90, 56,241,245,149,199,143, 31, 7,203,178,152, 62,125, 58,242,242,242, 96, 50,153,144,153,153,
+137,135, 15, 31,194,104, 52, 34, 33, 33, 1, 55,111,222,132,209,104, 68, 92, 92, 28, 12,134,242, 23, 36, 60,207, 67,173, 86, 67,
+175,203,199, 15,115, 62,197,180,201, 19,144,115,247, 2, 18,146, 82,161,113, 83,224,189,247,222, 99,221,221,221,121,142,227,170,
+ 90, 44,150, 78, 28,199, 45,117,148,112, 22, 57, 45, 60, 17, 28, 28, 92,119,254,252,249,181, 63,157,179, 84,164, 22,228, 83,137,
+ 74,202,139, 85, 18, 42,174,213, 28,195,166, 46, 22,125,179,240,171, 91,127,254,249,103,162, 35,206, 59,173,152, 81, 81, 81,225,
+137,137,137, 13, 34, 35, 35, 35,188, 66,170, 73, 36,254,129,217, 34,255, 42,185,212,160, 63, 67, 2,171,180, 94,186,116,233,213,
+147, 39, 79, 38, 57,131,169, 80, 40,106,173, 93,187,182,174,175,175,111, 93,161, 76, 38, 45,204,201,217,104, 41, 44,216,196,106,
+220,165,140, 90,243,234,182,109,219, 46,108,217,178, 37,197, 25,204,176,176,176,200, 57,115,230,212,169, 87,175, 94, 29,191,234,
+ 53, 36,178,192,224, 76,105, 80, 72,166,172, 94, 3, 9,130,170,118,249,238,187,239, 46,253,249,231,159, 14, 97,178, 44,107, 97,
+ 24, 6, 66,161, 16,114,185, 28,123,247,238,197,184, 17,253, 17, 28,232,137,136,200, 72,116,124,123, 60,182,108,217, 98,179,225,
+ 97, 89,182,212, 25,125,205,188,247,118, 68,249,147, 11, 88, 86,235, 2,150,213,186, 16,229, 79, 46,148, 74,182,138,158,151,244,
+ 25,135, 70,163, 82,236,176,202, 35, 91,148,210,221, 71,142, 28,249,114,200,144, 33,226,174, 93,187,226,204,153, 51, 24, 54,108,
+216,137,173, 91,183, 2, 0,206,156, 57,131, 15, 62,248,224,196,161, 67,135, 48,102,204, 24,116,232,208, 65,124,252,248,241,239,
+ 28,241,253, 99,177, 88,176,106,213, 42, 88, 44, 22, 40,149, 74,120,120,120,224,181,215, 94,195,213,171, 87,199,172, 94,189, 58,
+134, 21, 10,223,138,238,246, 6,118,109,223,138,155,215,174,142, 89, 51,119,160,211, 78,129, 25,134, 65,215,193,131, 51, 50,234,
+212,209,174,201,205, 45, 28,238,238, 46,143, 76, 73,241,248, 99,211, 38, 47, 7,218, 15,225, 56,206, 70,174,172,164,195,122, 9,
+196,222, 16, 40,234, 66,160,106,130,203,119, 68,102, 97, 83,122, 81,212,152,222, 40,203,127,150, 80,204, 12,235,245,105,117,244,
+250,180, 58,186, 79,170, 54, 84, 94, 5, 43, 20, 85, 48,182,235,251, 85,219,135, 54,113, 67,110,154, 9, 59,191,142,123,160,207,
+196, 60, 0, 55, 29,233,231, 60,207, 95, 79, 76, 76,132, 88, 44, 70,149, 42, 85,194, 9, 33, 86,187,192,149, 35, 71,142,124,119,
+230,204,153, 19, 0,204, 44,202,147,178,125,251,246,117,242,243,243,113,251,246,109, 0, 56, 95, 70,221,219, 78, 25,106,115,227,
+ 36,213, 2,234,161, 65,173,209,112,119,175,143, 68,173, 17, 73, 90, 35, 86,252,208, 3, 23,142,207,198,249,253,131,240, 32, 37,
+ 5, 50,191,158,224, 44,134,186, 47,184,162,100, 90,108,108,108,139, 77,155, 54,181, 7, 48,173, 94,189,122,127, 62,124,248,240,
+165, 99,199,142, 69, 4, 5, 5, 45,174, 40,168,213, 45, 68, 92, 92,220, 99, 87,145, 91, 8, 35,165, 52,138, 82,218,149, 82,218,
+189,232,250,224,169,124,189, 57, 46, 71, 94, 84, 99,120, 0,187,138,159, 54, 44, 78,180,236, 29,133,161,134,135,135,202,108, 54,
+ 37, 28, 56,112,192,196, 48, 12,228,114, 57,134, 12, 27,198,252,240,253,247,173,251,183,104,113,120,212,203, 47,239, 57,124,232,
+ 80, 84,179,102,205, 64, 41, 5,195, 48,248,245,215, 95,117,122,189, 46,179, 74,149, 42, 26, 71, 6, 13,251, 14,148,155,155,107,
+ 35, 90, 57, 57, 57,240,245,245,117,120,235,176, 32, 23, 7, 15,237,189,144, 69,185,183, 31,118,189,179,208,244, 69, 74,143,102,
+217, 60, 39,200,225,204,200,209, 81,228,233, 33, 56,195,120, 52, 27, 18,214,211,116,175, 83,179,155, 71, 99, 78,101,234, 57,189,
+ 83,167, 37,210,210,210, 62,237,211,167, 79,166,191,191, 63, 81,171,213, 8, 12, 12,100,186,119,239,158, 17, 31, 31, 63,179,162,
+ 53,226,229,229,245,102,251,246,237,119, 36, 38, 38,246, 62,122,244,104,213, 99,199,142,245,110,223,190,253, 14, 47, 47,175, 55,
+ 29,132,216,248,201, 39,159, 20,136,197, 98, 52,111,222, 28,121,121,121, 40, 58,229, 83,230, 85,222, 68, 0, 0, 34,145, 8,203,
+230,127,142,105,147, 39, 64, 27,115, 6,151, 79, 28,192,145, 20,130,169,115,190,130, 72, 36,170,144,175,175, 48, 31, 69,189,122,
+ 1,170, 27, 31, 12,235,151, 52,101,242,100,213,165, 75,151,132,239,190,255, 1,141, 75,214, 66,220,117, 1,139,182,159, 50,127,
+ 21,120, 35,250,213,142,152, 62,237,163,122,148,210,209,229, 97,214,246, 81,212,171, 27,160,186,254,209,168,254,177,239,191,255,
+190,236,139, 47,190,208,183,104,209, 66,151,154,154, 42, 83,184,123, 68, 10,220, 52,117,227,146, 83,148, 45, 90,180,184,247,246,
+219,111,103, 59,139, 57,117,234, 84,249,190,125,251, 4,125,250,244,177,100,101,101, 41,133, 50, 89, 67, 34,145, 54, 77,207,202,
+114,235,221,167,207,157,222,189,123, 23,242, 60, 63,198, 25,204,207, 62,251, 76,126,243,230, 77, 65,139, 22, 45,204, 41, 41, 41,
+ 42,133,167, 87, 3, 86,227,209,228,126,114,170,186,105,179,102,119,223,125,247,221,130,178,210,105, 79, 82, 84, 42, 85, 98,203,
+150, 45,241,245,215, 95,227,155,111,190, 65,151, 46, 93,112,245,218, 85, 68,191, 59, 1,181,199,126,128,237,167, 78, 35, 49, 49,
+ 17,179,102,205, 66,131, 6, 13, 32, 18,137,110,150, 8, 58,250, 6,185,152, 76,201,197,100, 74, 48,250, 6,177,222,151, 74,134,
+102,230,224,177,207,151, 32,231, 63, 43, 89,211, 21,229, 79, 46,148,101,135, 85, 30,217,234,221,187,247, 56,171, 11,135,225,195,
+135,159, 88,188,120,113,171,225,195, 31, 45,180,155, 55,111,142,217,179,103,183,154, 58,117,234,137, 57,115,230,160, 99,199,142,
+ 8, 13, 13, 45,247,224, 11,199,113,176, 88, 44,232,223,191, 63, 44, 22, 11,210,211,211,113,235,214, 45, 44, 95,190, 28,148, 82,
+ 41, 0,248, 7, 4, 53, 22,139,197,248,235,226,185,194,105,195,155,253,228,196, 98,138,216, 47, 98,242,243,243,209,123,236,216,
+140,132,154, 53,181, 75, 51, 50, 10, 71,184,187,203,171, 61,120,224,161, 50, 26, 3,203,178, 73, 37,132,128,231,121, 27,177,178,
+ 18,174,226, 87,209, 68,233,144,152, 10,249,221,199,214, 39, 1, 0,218, 12, 12, 64,247, 73,213,134,250,135,201,191,109, 61,224,
+145,210,123,203,236, 88,154,151,196,125, 1, 51,174, 59,161,177, 62,115,230,204, 25,104, 52, 26,244,233,211, 71,194, 48,204,188,
+162,113, 94, 79, 41, 93, 66, 41, 93,104,197,146, 72, 36, 11, 6, 13, 26,196,100,103,103,227,242,229,203, 0,112,168,180,113,137,
+ 82,106,203,123,190,150,128,227,197, 56,121,113, 47,246, 31,219,140,251,137,233,120,144,166, 7, 4,110,208, 23, 36,192,164, 75,
+132, 49,251, 34,114, 13,242,255,194,142,212, 51,113,183,240, 12,220, 66, 84,166, 86,235,133,180,169,163,148, 38,219,159, 54,180,
+119, 96, 90,146,195, 82, 80,181,172,223,230,239,126,112,235,211,127, 96, 65,131, 6, 13,220, 3, 3, 3, 65, 8, 65,143,158, 61,
+ 73,251,163, 71, 85,194,128, 0,120, 54,106,100,219,142, 56,120,224, 0,246,238,221, 91,176,235,183,109,129,195, 70,140,120, 29,
+192,218, 50, 6, 12, 65,141, 26, 53,108,191,155,156,156, 12,137, 68, 98,179,137,200,205,205,133,183,183, 55,146,147,147,225,160,
+162,100,221,148,201,167, 39,167, 53,251,180,122, 51,149,144,236, 41, 72, 1, 71, 41,132,132, 3,116, 20,102, 14, 48,152, 41, 26,
+ 87, 99, 61,246,235, 44,238, 59,207,108,189, 7, 96,157,147, 26,173, 63, 8, 33,163,121,158,223, 12,128, 57,122,244, 40,127,253,
+250,245,113,142, 26,174,151,168,182,151,203, 39, 29, 62,124,216, 99,210,164, 73, 89, 59,119,238,204,121,237,181,215,220,150, 47,
+ 95,238,209,161, 67,135, 73, 0,126,113,160, 82,117,132,144,181,241,241,241,227,154, 52,105, 2,173, 86, 11,147,201,132, 11, 23,
+ 46, 32, 44, 44, 12,231,207,159, 71,120,120, 56,206,157, 59,135,136,136, 8,112, 28, 7,189, 94, 15,158,231,185,242, 6,115,109,
+ 70, 58,144,249, 16, 73,103,246,224,214,149, 11, 56,156, 68,176,228,151, 29,168, 82,181,122,133,252,212, 68,248, 42,234, 4,250,
+120,238,255, 98,198,103, 62,113,127,252,138,173,171,150,240, 71,246,236,169, 45, 86, 97,116,219,254,227,223, 48,154, 17, 2, 64,
+252, 82,179, 38,232,234,126,147,147, 87, 69,202,161,107,101,123,178,142,240, 85,212, 9,240,246,220,247,191,121, 51, 85,119,247,
+174,193,198,101, 95,211, 45,235,127,110,160, 7,154,213,169, 83,167, 43,195, 48, 26, 0,250, 34, 59, 47,135, 66,219,148,132,121,
+112,199,142, 40, 61,208,236,247,223,127,239, 42,151,203,253, 0,152, 11, 11, 11, 99,159, 6,243,208,206,157, 81,214,116, 18, 66,
+124, 0,152, 40,165,119,225,100, 8,158,190,125,251,206,254,224,131, 15, 38,115, 28,231,109,125,207,108, 54,179, 11, 22, 44, 16,
+240, 60,207, 82, 74, 77, 12,195,152,246,237,219,199, 89, 44,150, 36,189, 94, 63,246,105, 6,146, 55,222,120, 3,167, 79,159,158,
+129, 71,135, 48, 28,213, 86, 63,102,167, 85,214, 54,165, 35,248, 71,143, 30,157,245,214, 91,111, 77,249,229,151, 95,110, 45, 94,
+188,184,219,152, 49, 99,240,235,175,191,162,102,205,154,248,235,175,191,240,233,167,159, 2, 64,171,169, 83,167,110, 95,185,114,
+101,104, 92, 92,220,130,242,210,104, 54,155, 97,177, 88,240,243,207, 63,163, 71,143, 30,240,246,246, 70, 64, 64, 0, 8, 33,127,
+140, 24, 49,226,123, 0, 96, 9, 43, 2, 0,131,222, 96,136,140,108,226,176, 6, 55, 52, 52,212, 54,214,165,164,164,216, 78, 10,
+190,242,214, 91, 25, 43,190,248, 2, 63,233,116, 24,225,238, 46, 79, 8, 10,242,223,126,247,238, 40, 66,200,242,210, 52, 71, 86,
+173, 78,121, 36,203, 81, 13,179, 46, 25,159,252, 54,247,190, 31,128, 46,109, 6, 6,160,205,192, 0, 52,233,238, 67, 24,150,224,
+202,254, 76, 92, 61,168,221, 98,206,197, 31,206,132,203,161,148, 94,247,244,244,220,222,182,109,219,110,181,106,213,194,200,145,
+ 35,223, 22,137, 68, 34,179,217,252,190,213,205, 3, 33,196,141, 97,152,153,171, 87,175, 30,229,225,225,129,227,199,143,227,216,
+177, 99,127, 80, 74, 31,150, 54, 46, 1,176,249,204,170, 18, 28,174,191, 25,151, 47, 79, 75, 60,137, 19,199,127, 67,205, 6,227,
+ 33,243,123, 29, 30,145,115, 96,138,249, 6,198,204,253,240, 8,126, 13, 9,113,119,193, 10, 36, 87,241, 31, 17,171,187,133,171,
+ 87,175,150,232,110,193, 89,169, 87,175, 94,171, 99,199,142, 73,244,122, 61,142, 28, 57,130,166, 77,109,103,187,254,213,248,157,
+246, 92,228, 69,146,178,130, 74,151, 56,107, 18,158, 8, 35,194,195, 57, 17,131,213, 61, 94,127,189,240,210,165, 75,182, 85,159,
+254,236, 89, 20,236,221, 11,142,227, 64, 41,197,177,163, 71, 49,104,224,192,124, 33, 75, 86, 84,171, 86,149, 18,250,183,239,150,
+146,142,210,139, 68,162, 62,125,250,244,177, 13, 62,241,241,241, 80, 40, 20, 16,139,197,224,121, 30, 22,139, 5, 44,203,194,205,
+205, 13, 22,139,197, 88, 66,102, 58, 21,203,136,153,211, 22,244, 94, 25, 61, 32, 57, 32,223, 68, 71,107,170, 33, 68, 36,179,117,
+ 78, 63, 53, 65,183, 6, 66,120, 9,210,232,161, 5, 47, 39,241,134,204,222,197, 99,139,149,119,228,159, 16, 18, 94,191,126,253,
+239, 7, 13, 26,196, 0, 64,167, 78,157,152,250,245,235,127, 75, 8, 9, 47,227, 59,101, 98, 74,165, 82, 9, 0,236,216,177, 67,
+123,235,214,173, 46, 59,118,236,208,218,191,239, 32,230,242,249,243,231, 67, 46,151,195, 98,177,192,104, 52,218,236,179,236, 95,
+ 77, 38, 19,188,188,188,176,107,215, 46,112, 28,183,171,188,116, 6,135, 84, 5,241,174,129,181, 59, 14,227, 88,134,200,105,146,
+101,143, 89,211, 95, 25,225,231,229,121,224,127,115,103,121,103,221,185,128,132,132, 4,186,111,239,174, 63,117,148, 38,102,231,
+210,105, 89,249, 52,162,208, 64,165, 77, 67,241,240,192,178,143,233,212, 54, 48,163,132, 83,131,246,152,117,252,149, 17,129,222,
+158,251,190,250,223, 92, 85,246,157, 11, 72, 78, 73,193,238, 93, 59, 46,233, 40, 77,164,148,110,161,148, 14,229, 56,174, 46,199,
+113,117, 41,165, 67, 75, 35, 47,206, 98, 22, 20, 20,212, 43, 40, 40,168, 87,153,152, 60,207,215,227,121,222, 97, 76,123,162,178,
+112,225,194,152,228,228,228, 65,105,105,105,157,173, 87, 86, 86, 86,167,252,252,252,118,133,133,133,173,117, 11,171,186, 21, 20,
+ 20,248,228,229,229,249,235,116,186,198,148,210, 11,142,182, 79,123,177,247, 58,157,148,148, 52, 61, 41, 41,137,148,151, 78,102,
+204, 13,178,225,171,143,126, 91,182,108,153,255,211,224, 23, 79,103,122,122,250,230,159,127,254,185, 97,245,234,213, 67,135, 14,
+ 29,138,165, 75,151, 98,241,226,197, 6, 0, 88,185,114,165,193, 78,147, 21,124,255,254,253, 38, 37,109, 27, 62,150, 78,134, 89,
+247,202, 43,175,208, 99,199,142,161, 71,143, 30, 54, 71,162, 63,254,248, 35, 44, 22, 75,110,199,142, 29,121, 0,208,233, 11,115,
+ 41, 79, 97, 52,149,188,255, 94, 82,121,138,197,226, 87,237,253, 5, 90,157, 49,139,197, 98, 80, 74, 17,209,170, 85, 70,118,131,
+ 6,218, 85, 57, 57,133,211,235,213, 83,143,138,140, 28, 90, 11, 24, 88, 18, 38, 33,228, 49,173, 78,241,203, 81, 77,150, 61, 38,
+165, 52, 77,151,132,145,191,205,189,191,215,170,217,146, 42, 5,208,231, 89,176,237,139,251,233,250,116,252, 8,224,161, 51,152,
+ 0,160,213,106,223,253,226,139, 47, 12,238,238,238,120,227,141, 55, 48,103,206,156, 17,173, 90,181,202,241,245,245, 61, 29, 22,
+ 22,118,165, 95,191,126,201, 23, 46, 92,120,183,125,251,246,184,125,251, 54,190,250,234,171,236,172,172,172, 1,101, 97, 18, 66,
+108,154,188,238,209,157,180, 63,124,251, 53,223,177,237, 56,200,101,106,152,133,193,208,230,155,145, 85, 64, 97,148, 52,131, 88,
+ 36, 65,231, 22,117,112,122,223,154, 66,206, 88,176,182, 34,109,222,137,201,245, 89, 99, 86,138,187,133,226,233,172, 12,183, 16,
+207, 34,239, 47,178,148,224, 71,235,113,141,150,245, 72,165,245,149, 16,158,227, 56, 30,213,170, 87, 83,197,221,127,184,164,111,
+223, 62,195,187,118,141,150, 71, 71, 71, 75,235,196, 60,218,186,216,177, 99, 7,182,110,221, 90,184,127,255,254, 92,137,144, 93,
+ 25, 92, 37,216,151,227,120, 16,194,151,201,134, 85, 42,213,251,159,124,242,137, 44, 39, 39, 7,139, 23, 47,230, 27, 54,108,200,
+ 40, 20, 10,152, 76, 38,172, 92,185,210, 92,167, 78, 29, 33,195, 48,200,201,201, 1,195, 48, 55, 29,204,224,101, 66, 72,231,239,
+219,247,218,218,228,157, 97,158,181,219,191,228,222, 46, 56, 16,230, 70, 20, 73,241,247,113,235,208,254,172,107,251, 22,101, 66,
+159,218,139, 82,122,221,217, 2, 12, 8, 8,248,124,255,254,253, 62,239,190,251, 46,213,235,245,228,225,195,135,116,238,220,185,
+ 62, 35, 71,142,252, 28,192,155, 21,237, 79,217,217,217, 32,132,240, 69,141,214,186,234, 39, 78, 84,236, 85, 66,200,239, 61,123,
+246,236,222,177, 99, 71,196,196,196,216,182, 8,237,137,150,245,244,225,188,121,243,178, 1, 76, 41, 15, 87, 40, 20, 98,241,218,
+205,200,206,202,128,175,111, 0,164, 50, 89,133, 61, 46,139, 25,102,250,151,179, 62,243,201,184,113,154, 92,253,243, 48,191,233,
+114,106,154,133,163, 37,123,252,207, 75,162, 69,236,191,236,213, 12,195, 78,255,114,238, 76, 55,235,182,230, 47, 23,147,115, 9,
+ 71,223,125,170, 94,242,162, 96,254,195, 18, 16, 16,128,164,164, 36, 18, 16, 16, 64,173,219,122,165, 17,173, 39, 26,248,163,237,
+ 50, 82,214,182, 97, 69,241,239,221,187, 55,183, 81,163, 70, 31,221,190,125,123, 83,237,218,181,199, 0,168, 98, 48, 24,178,167,
+ 78,157,250,191,149, 43, 87, 14,119, 68,147, 5, 0,191,254,250,235,162, 97,195,134,237,125,253,245,215, 63,230,121,190,190,221,
+ 36,114,207,199,199,199,182,133,155,158,154, 50,121,244,240,254,147,243,243,179, 28,246,115,167, 84, 42, 71, 77,157, 58, 85, 90,
+ 80, 80,128,239,190,251,142,175, 83,167, 14, 99, 93, 20,173, 95,191,222, 18, 30, 30, 46,232, 51,110, 92,198,194,148, 20,204, 62,
+126,188, 96,114,221,186, 13, 87,221,186,213,184, 36,141,187,117,225, 88,146, 38,203,106,118, 81,193,201, 33,137, 16, 50,242,183,
+185,247,127, 4,208,229,165,190,126,248,125,254,125,100,197, 25,255, 7, 11,238, 58, 18, 22,168, 4,204, 4, 66, 72,231,212,212,
+212,223, 63,251,236, 51,183,198,141, 27,163,110,221,186, 66,165, 82,217,204,234, 46, 38, 39, 39, 7, 7, 15, 30,196,210,165, 75,
+141,215,174, 93,235, 73, 41, 45,117,187,138,227,184,180,240,240,112,107, 57, 80, 66, 72,102,174,129,184,109,172,213, 76, 57,116,
+244, 38,114,226,220, 41, 36,153,120, 24,204, 60,170, 85,143, 66,187, 46, 11,177,125,207, 21, 46, 41,238,250,117,179, 46,107,197,
+ 11, 62,127, 63, 19,119, 11,207,192, 45, 68,165,105,179,236, 95,255, 43, 82, 98, 15,229, 89,230,228,210,101, 63,188,250,235,207,
+191,248,177, 44,227,119, 55, 54,246, 92,183, 94,189, 19, 15, 28, 56,224, 33,114,115,107, 10,128, 55,142, 25,243,167,201,160,211,
+238,252,253,247,144,106,213,170, 54, 40, 10, 42, 77,121,150, 57, 89,214, 15,230,231,231, 23, 28, 63,126,188,112,202,148, 41, 36,
+ 62, 62,126,131,175,175,111,191, 61,123,246, 40,123,245,234,165,139,137,137,217,226,231,231,215,189,125,251,246,170,143, 62,250,
+200,144,159,159,191,196,137,206,125,157, 16, 82,235,236,103, 11,222, 58, 59,255,135,151, 33, 96, 91,194, 32, 4,120,243, 73,152,
+242, 14, 0,216, 64, 41,181, 84,164,144, 20, 10, 69, 3,185, 92,142, 75,151, 46,101, 53,107,214,204,168,215,235, 69,115,230,204,
+241, 84, 40, 20, 13,158, 98,128,163, 89, 89, 89,224,121, 94, 0,128, 20,189,130,119,254, 44,254,155,221,186,117,251,125,227,198,
+141,175, 68, 71, 71, 35, 52, 52, 20,102,179, 25,225,225,225, 48, 26,141, 8, 11, 11,131,193, 96,192,140, 25, 51,144,147,147, 51,
+161,172, 96,197,132, 16, 88, 44, 22,155,177,109, 96, 80,200, 35, 63, 61, 79,225,198, 66, 33,100, 66,111,238, 92,133,180,204, 12,
+126,227, 95,169,169,133, 38,174,243,237,180,130,107,197, 63, 87,200,161,160,253,208,247, 18, 1,192,192,163,204,136,243, 10, 49,
+ 66,111,237,250, 17,169,105, 25,248,245, 98,114,118,129,137,239,114,179, 4, 76,167,210,249,130, 96, 70,205,136, 65,239,247, 28,
+255,236,197,209, 21,255, 45, 71, 9, 85,105,114, 49,153, 18,126,105, 45,138,101,171, 74,244,145,245, 52,248, 69,154,170,223,139,
+218,109,124,255,254,253, 39,223,191,127,127, 86,145,191,172,101,206, 96,173, 90,181,234, 54,128, 97,101,125,230,151, 5,195,182,
+ 1,216,230, 12,110, 94, 94,158,254,194,133, 11,250,143, 62,250,136,196,199,199,239,241,243,243,123,101,239,222,189,242, 94,189,
+122, 25,174, 94,189,122, 40, 32, 32,160, 77,167, 78,157,148,187,207,156, 73, 44,188,123,119,231,206,251,247,131,204, 60,191,179,
+172,254, 89,153, 36,171, 56,217,218, 54,251,254,151,191,127,121,191, 19,111,192, 22, 99, 22,254, 4,144,240, 20,152,199, 8, 33,
+181, 7, 14, 28,184,241,181,215, 94,123,169,118,237,218,168, 82,165, 10,110,221,186,133,244,244,116, 92,190,124, 25, 59,118,236,
+216,161,215,235,203, 13,168,157,153,153,249, 68,120, 34, 34,243, 12, 88,243,221,244, 29,231, 78, 52, 13,111, 29, 61, 68, 86, 55,
+128,135,209, 68, 17,255,224, 46,102, 76, 91, 81,152,252,224,246,117,147,197,212,243, 63,224, 67,235, 88,108,108,108, 20,203,178,
+149,234,110,161,162,110, 33, 92, 82,137, 68, 43, 54, 54,254,122,104,104,240, 39, 91,183,108,110, 73, 41,195, 82, 66, 10, 52, 26,
+247, 29, 15, 31, 62,204,182,255, 92, 13, 15, 15,213,176,145,195,250, 17,158, 8, 9,225, 57,158,101, 78,198,198,198,151,169, 49,
+ 50, 26,141,163,251,245,235,183, 88, 46,151, 79,213,106,181,151, 52, 26,205, 95, 13, 26, 52,152, 69, 41,157,166,211,233,126, 87,
+169, 84,103, 94,122,233,165, 57, 33, 33, 33,139, 40,165,231,157,236,220, 22, 60,178, 15, 91, 91,201,170,220,153,148, 82, 55,129,
+ 64,144,115,229,202,149,159, 35, 34, 34,250, 83, 74,221, 8, 33, 57, 21,197,212,235,245,239,102,103,103,123,141, 26, 53,202,188,
+124,249,242,136, 33, 67,134, 76,190,118,237,154, 80,175,215,199, 58,153,103, 3, 33,164,123,223,190,125, 87, 8,133,194,142, 12,
+195, 16,158,231,169,221,115, 80, 74,193,113,220,246,242,202,133,227,184,196, 90,181,106, 61,182,130, 46,201, 62,215,108, 54, 39,
+ 58, 60,217, 24,185,241, 63, 28,190, 54, 79,111,166,212,194,211,209, 55, 83, 11, 74, 60,114,118,246, 38,173,227, 48,166,158, 31,
+191,120,223,245,121, 6, 51,207, 91,120, 58,166, 52, 76,167, 38,197, 23, 4, 19, 0, 38,107,214,111,195,178,245, 54,195,120,235,
+118, 98,241,251,202, 20,171,214, 9, 78,122,108,102,198, 60, 50,150, 47,143,240, 85, 20,191, 56,233,114, 86,122,247,238,253,204,
+236, 81, 76, 38,211,167,221,186,117,155,165,209,104,254,151,158,158,126, 73,163,209, 92,143,140,140, 28,207,243,252,162,194,194,
+194, 29, 42,149,234,245, 38, 77,154, 76,168, 90,181,234,154, 56, 74,215,148,215, 55,173, 90, 29, 0,212,218, 47,173, 68,194,158,
+ 80,152,205,230,132, 10,148, 97, 18, 33,228, 67, 0,213,240,200, 1,239, 29, 74,233, 83,149, 13,165, 52, 9, 64, 75, 66, 72,117,
+ 0, 29,241,200,127, 95, 54,128,123, 0,206, 83, 74, 47, 87, 24, 91,151,153, 68, 8,105,116,227,226,241, 49,183,174, 95,124,203,
+122,186,144,101,197, 87, 57, 83,225, 90,179, 46,107,197,127,196, 81,233,244,176,176, 48, 55, 0,245, 1,164,226,111, 71,198,113,
+ 0,190,169,140,133,138,157,116,112, 81,162,167,226, 9,163,236,183, 11, 31,123,246, 44,219, 34, 33,164, 83,101,199, 67,114, 97,
+186, 48, 93,152, 46, 76, 23,166, 11,211,133,249,223,195,124,209,137, 86, 9,132,118,121,169, 26, 45,151,184,196, 37, 46,113,137,
+ 75, 92,226, 18,151, 56, 46,165,106,180, 0,116, 42,229, 11, 14, 51,213,138,156, 62, 40, 15,223,133,233,194,116, 97,186, 48, 93,
+152, 46, 76, 23,230,127, 15,243,255,155,184,182, 14, 93,152, 46, 76, 23,166, 11,211,133,233,194,116, 97,254,235,152, 47, 52,153,
+114,109, 29,186,196, 37, 46,113,137, 75, 92,226, 18,151, 60, 27,177,146,170,146,140,226, 93, 68,203,121,214,202, 0,120, 27, 64,
+111, 0, 53, 0,220, 5,176, 25,192,247, 78,132,169,176,199, 83, 3,152, 12,160, 37, 30, 69,175,191, 7,224, 56,128, 47, 40,165,
+249,174, 18, 47, 89,188,189,189, 63, 17, 10,133, 26,224, 81,104, 19,235,171,253,255, 28,199,101,231,228,228,204,125, 70,237,128,
+117,244, 84,150, 53,173,246,105,179,127, 53,155,205,207, 44,157, 46,121,110,199,145,112, 15, 15,143,159,180, 90,237, 0, 74,233,
+ 45, 87,137,184,228,191, 36, 62, 62, 62, 99, 76, 38,211, 84,145, 72, 52, 39, 45, 45,237,135,255, 71,253,186,196,147,135, 54,162,
+181,107,215,174,163, 0, 16, 29, 29,221, 22, 0, 84, 42,213, 41,134, 97,170, 23,125, 25,192,223,177,240,138, 31,253,183,190,242,
+ 60,127, 47, 51, 51,179, 84, 7,106,114,185,252, 20,203,178,213, 9, 33, 96, 24,198,118,153,205,102, 21,203,178,121,165, 96, 38,
+104,181,218,198,207, 73, 33, 18, 0, 59,221,221,221,245,179,102,205,250,190, 93,187,118,193, 73, 73, 73,150, 73,147, 38,181,249,
+235,175,191,162, 9, 33,175, 58, 67,182, 8, 33, 45, 8, 33,107, 26, 54,108,184,109,240,224,193, 27,155, 53,107, 38,206,204,204,
+ 84,109,222,188, 57,112,237,218,181, 23, 8, 33, 3,156,117,113,241, 2, 52, 68, 65,105,254,204,202,122, 86, 92,132, 66,161, 38,
+ 33, 33, 65, 85,180,146,176, 18, 43,152,205,102,152,205,102, 20, 20, 20,160, 65,131, 6,149,158,126,127,127,255, 40, 66,200,146,
+176,176,176,198, 1, 1, 1,231, 0,140, 75, 74, 74,250,203,153,180, 90, 44, 22, 80, 74,109,233,172, 93,187,182,107,100,118,174,
+ 13,141, 16,139,197, 93,194,194,194,154, 26, 12,134,172,123,247,238,157,229, 56,238,179,178,156, 94, 58,137,239, 6,224, 51,137,
+ 68,210,172, 70,141, 26,193,183,111,223,142, 55,153, 76,103, 0,204,164,148,230, 84, 6,201,106,219,182,237,137,239,190,251,206,
+115,236,216,177, 39, 8, 33,173, 92,100,203, 37,255,150, 84,169, 82, 69, 83, 80, 80,176, 2, 64,148, 80, 40,244,147, 74,165,144,
+201,100, 41, 18,137,228,146, 76, 38, 27,126,226,196,137,108,103, 49, 57,142,251, 44, 46, 46,206,175,121,243,230,243,235,214,173,
+ 59, 35, 35, 35, 67,111, 50,153, 14,101,101,101, 77,160,148,230,150,245,221,226, 92,228, 69, 34, 89,246,175, 69,227,253,223, 91,
+135, 69,113,133,218, 61,198,192, 4,130,160,184,184, 56, 31,149, 74, 5,142,227,108,218, 2,235,164,102,111,219, 85,228,167, 9,
+145,145,145,166,114, 38,156,224,132,132, 4, 31,165, 82,105,123,207,100, 50,193,207,207,143, 79, 76, 76,244,145, 74,165,143,125,
+222,104, 52, 34, 40, 40,232,121,242,133,242,182,135,135, 71,206,195,135,241, 13,244, 6,211,204,145,239, 78,249,100, 64,239,151,
+221, 79,157, 58,197,191,250,234,171,134,163, 71,143,190, 13, 96,137,131,149,226, 70, 8, 89, 59,105,210,164, 25, 82,185,218,243,
+240,169,235,134,181,155,119, 37, 54, 12,175, 70, 38, 76,152,192,190,247,222,123,199,162,162,162,126, 34,132, 52,114, 70,179,165,
+ 82,169,246, 74, 36,146,170, 44,203,194,100, 50, 61,212,106,181,175, 60, 71, 13,177, 33,128,139,132,144, 40, 74,233, 37, 71,159,
+149, 37,153,153,153,208,233,116, 79, 92,181,107,215, 70,101,219, 31, 18, 66, 4,193,193,193,191,207,155, 55, 47, 48, 37, 57, 25,
+ 95, 47, 92,216, 28,192,247, 0,154, 59,242,253,180,180,180, 39,210, 25, 25, 25, 9,151, 56, 85, 7,147,103,204,152, 49,239,173,
+183,222, 2,199,113,208,233,116, 1,119,238,220,169, 51,117,234,212,158,132,144,166,148,210,216,167,196,247, 14, 11, 11,139, 25,
+ 63,126,188, 71,211,166, 77, 81, 20,165, 34,224,248,241,227,205, 87,174, 92, 57,136, 16, 18, 73, 41, 77,127,154,223,240,240,240,
+248,233,199, 31,127,244,148,203,229,216,190,125,187,103,199,142, 29,143, 19, 66, 90, 87,148,108, 17, 66, 24, 79, 79,207,247, 0,
+116,224,121, 94, 12,224, 76, 86, 86,214,108,103,189,186, 19, 66,252,149, 74,229, 22,134, 97,170, 21, 91, 96,123, 17, 66, 50,172,
+239, 17, 66,124,120,158,255,179,172, 69,181, 75, 94, 12,241,242,242, 26,145,151,151,247,157, 68, 34, 17,185,187,187, 67, 46,151,
+ 67, 32, 16, 64, 32, 16, 84,145, 72, 36, 85, 36, 18, 73,215, 14, 29, 58,140, 59,124,248,112,153, 30,246, 95,138,242, 27, 10,134,
+204,100, 9,195, 2, 64,237, 48, 79,181,155,155, 27,102,206,156,169,232,222,189,187, 2, 0, 78,156, 56, 49,120,200,144, 33, 29,
+ 9, 33,117, 75, 35, 91, 37,113,145, 23, 69, 74, 59,113,248,152, 70, 43, 58, 58,250,104,177, 78, 7,153, 76,134,141, 27, 55,130,
+101,217,199,162,198,151,244,127,149, 42, 85,202, 77,136, 85, 35,182, 99,199, 14,168,213,106,184,185,185,217, 38, 26,137, 68,130,
+ 67,135, 14, 65, 40, 20, 66, 32, 16, 64, 40, 20,162,113,227,198, 40, 35,160,253, 51,145, 62,117, 8, 5,128, 77,239, 60, 74, 87,
+159, 37,143,156, 64,110,122, 39, 18,173,107,200,208,251,189,233,253, 10,245,166, 38, 0, 10,178,179,178,178,206,109,221,154,212,
+ 48, 60, 92,244,211, 79, 63, 53, 13, 12, 12,236,237, 40,209, 2, 48,185, 81,163, 70, 91, 88,153,155,215,224, 33, 67, 7, 15, 23,
+ 48,166, 65,163, 63,154, 19,159,156, 81, 48,106,212,168,173,219,183,111, 31,252,229,151, 95,222,152, 56,113,226,100, 0,159, 58,
+154,126,177, 88, 92,245,206,157, 59, 97, 60,207,163, 94,189,122,207, 77, 24, 3, 43,145,162,148,130, 16,242, 24,161, 42,235, 89,
+121, 98,213, 96,149,116, 85,182, 4, 6, 6, 70, 14, 28, 56,208, 75,155,145,129,175, 23, 46,180,190,221,184,188,109, 68,235, 22,
+161,209,104,196, 27,111,188, 49,144,227, 56,129,149, 4, 26, 12, 6, 99, 78, 78,142,222,238,100, 79, 58,165,244,101, 7,202,179,
+186, 66,161,248, 31,128, 40,157, 78, 23, 8, 0, 10,133, 34,145,231,249,109, 5, 5, 5,159, 90, 3,248, 86,160,158,130, 1,212,
+ 65,233,161,160,232,188,121,243,110, 79,158, 60, 57,246,159,198, 36,132, 84,245,245,245,157,219,167, 79, 31,236,218,181, 11,187,
+119,239, 54,203,100, 50,193,144, 33, 67,200,184,113,227,220,199,143, 31,223, 21, 79,225,196,177, 72,186,206,152, 49,195,163, 86,
+173, 90,216,188,121, 51, 46, 95,190,172, 11, 11, 11,147,181,107,215, 14, 2,129,192,227,147, 79, 62,121, 21,192,154,167,249, 1,
+173, 86, 59,251,163,143, 62, 90,251,243,207, 63,171,238,221,187,135, 37, 75,150,120,245,235,215,239, 40, 33,164,173,163,100,139,
+ 16, 34, 1,240, 30,128,246, 44,203,182, 30, 50,100,136,229,221,119,223, 21, 50, 12, 99, 94,184,112,161,247,202,149, 43,251,121,
+121,121, 69,101,100,100,228, 59,128,197, 0,152, 57,124,248,240, 97,127,252,241,135,251,217,179,103,197,158,158,158,182, 5,118,
+209,171,143,181,205, 90, 44, 22, 68, 70, 70, 6,253, 23,136, 6,203,178, 38,158,231,133, 0,164,148, 82, 67,121,247,255, 37,146,
+229,233,233, 57, 54, 43, 43,235,123, 63, 63, 63,248,250,250, 62, 49,215, 26, 12, 6, 72,165, 82,145,159,159,223,143, 61,122,244,
+ 16,254,246,219,111,165,110, 1, 18,150,124,182,253,151, 89,129, 30,238, 42, 0,192,162,165,251, 10, 1,224,183,223,126, 67, 82,
+ 82, 18,220,221,221, 81,183,110, 93,118,214,172, 89,254, 19, 38, 76,248, 26,192,240,210,176,138,115,145, 23, 73,163,101, 79,182,
+236,239,203,180,209,226,121,222, 22,176,212, 74,168,172, 36,168,248,255,246, 43, 32, 59,134,119,176, 88, 66, 72,126,126,190,141,
+100,169,213,106, 20, 77,174, 48,155,205, 79,224,114, 28, 7, 66, 8, 45, 11,179,148, 12,143, 5,112,136, 82,122,215, 65, 38,106,
+195,220,244, 78, 36,214, 74, 38,245,183,186, 80,239,250,209,163,215,181, 0, 78,221, 31,190,228,187,182,109, 3,223,155,182,120,
+186, 46, 51, 41,227,147,129,175, 87, 13,243,243,148, 41,178,211,114, 60, 34, 34, 58,227,145, 71,101, 71,211,217,102,240,224,193,
+235,246,159,142, 35, 82,169, 72, 36, 96, 89, 97,171,122,225,158,193,110,172,155, 10,112,139,143,189,125,106,232,208,161,245, 38,
+ 78,156,216,218,153,188, 51, 12, 3,181, 90,141,117,235,214,129,113, 32,118,206,179, 56, 53, 82, 66,189, 11,172, 68, 74,171,213,
+ 98,215,174, 93,136,142,142,190, 72, 8,137, 42,250,200, 69, 74, 41,114,115,115,145,156,156, 12,127,127,255,139,132, 16,161,253,
+ 54, 98,113, 76,171, 86,213, 74,170,134, 12, 25, 50,208, 98,177, 8,236, 6,137,226, 4,230, 9, 18,227,104,222, 3, 2, 2,246,
+ 3,120,153,101, 89, 24,245,122,227,255,190,250,202,254,241,121,123,146, 85, 26,166, 53,173, 28,199, 9, 46, 94,188, 40,180,246,
+ 25, 0, 66, 0, 10, 0, 94,148, 82, 48, 12,115,197,129,242,140,148,203,229,167,118,236,216,161,110,220,184, 49, 17,139,197,176,
+ 88, 44,184,122,245,106,240,151, 95,126, 57,250,224,193,131,175, 18, 66,106, 23, 15,158,238, 96,189,215, 57,126,252,120, 65,104,
+104,104,137,196, 49, 55, 55, 87, 16, 30, 30,222, 22, 64,236,191,128,153,144,154,154,218,227,229,151, 95, 30,147,146,146, 18, 99,
+177, 88, 62, 6, 80,215,203,203,235, 98,175, 94,189, 32,147,201,218, 59, 66,180,202,170,119, 31, 31,159,238, 47,189,244, 18,150,
+ 44, 89,130, 47,191,252,178, 19,165,244, 16, 33,164, 99,110,110,238,193,110,221,186, 65,163,209,244, 40,137,104, 57,218,150, 8,
+ 33,225,109,218,180,249,113,230,204,153,170, 93,187,118, 33, 44, 44, 12,121,121,121,248,240,195, 15,125, 62,255,252,243, 35,132,
+144,118, 86,178, 85, 26, 38, 33,164,182, 68, 34, 89,243,243,207, 63, 43, 67, 67, 67, 67, 69, 34, 17, 19, 26, 26, 10,173, 86, 11,
+189, 94, 47,153, 51,103, 78, 61,153, 76,246,215, 55,223,124,179, 6, 64,175,114,218, 18, 3, 96,246,178,101,203,198,140, 26, 53,
+ 74, 51,112,224, 64,206,104, 52, 62,182,192,150,203,229,143, 45,174, 35, 34, 34, 28,206,123, 81,244, 12, 53, 0,141, 51,219,174,
+101,228, 61, 7,128,196,214,121,132, 66, 72,165, 82, 72,165, 82, 72, 36, 18,220,188,121,115,154, 84, 42, 93,104, 63, 22,151,133,
+ 73,254,158,180, 26, 16, 66,206,178, 44, 91,230,125,113,211,144,127, 98,252, 44, 33,205, 65,132,144, 69, 0,218, 63, 26,242,153,
+163, 94, 94, 94,239,167,164,164, 60,112, 20, 51, 32, 32,192, 51, 63, 63,255, 27,127,127,127,248,250,250,218,230,142,192,192, 64,
+152,205,102,164,166,166,130, 82,138,236,236,108,200,229,114, 4, 4, 4,124, 51,122,244,232,205,203,150, 45,203, 44, 17,147,199,
+151,221,250, 77,253,140,101, 89, 6, 0, 88,129, 82, 57,126, 10, 80,181,106, 85,180,106,213, 10,122,189, 30, 57, 57, 57,168, 83,
+167,142,128, 16, 50,152, 97, 24, 53,165,244, 7, 74,233,225,255,160,214,189, 84, 99,248, 25,197,247, 69, 9, 33,224,121, 30, 2,
+129,224, 49,162, 85,252,178,146,162,162,246, 74,202, 91, 57, 25,141, 70, 27,201,114,115,115,179,145, 52,139,197, 82, 26,209,170,
+ 8, 83,175,207,243,124,117, 66,200, 50, 71,201, 86,113, 25, 60,120,240, 19,246, 30, 19, 38, 76, 72, 72, 75, 75,163,111,116,110,
+160,136,217,147,148, 92,195, 93, 41,243, 86,169,170, 73,221, 61, 52,153,153,153,127, 2,208, 56,241, 19, 53, 27, 53,106, 36, 91,
+187,245,120,194,200, 15,230,205,106, 28,234,169,174, 31,228,229,238,231, 38, 19, 43, 25, 82, 32,181,152, 19, 60, 60, 60,194, 42,
+176, 66, 3, 0,104, 52, 26, 8, 4,130,231, 66,163, 69, 41,181, 16, 66,162, 8, 33, 23,119,237,218,133,102,205,154,217,200,150,
+149,132,228,228,228,224,234,213,171,104,211,166, 13, 0, 68, 57, 98,171,197,243, 60, 76, 38, 19, 76, 38,147,141,192,136, 68,162,
+ 39, 8,140,245,179, 44,203, 94,169, 96, 22,102,185,187,187,183,105,223,190,189,248,151,141, 27,197,148,210, 2, 60, 10,124,157,
+ 79,105, 41, 1,178,139,137,197, 98,177,105,217,132, 66, 33, 30, 62,124,104,155,184,172,154,225,226, 91,231,165,137, 68, 34,249,
+232,215, 95,127, 85, 55,109,218,148,100,102,102,130,231,121,219, 32,249,253,247,223, 75,123,247,238, 29,120,225,194,133, 79, 80,
+129,112, 54, 0, 72,105,132, 8, 0,212,106,181, 5, 0, 83, 25,152, 22,139,133,180,108,217,114, 98, 70, 70, 70, 61,157, 78, 55,
+199,145,118, 4, 96,123,209,101, 29, 83,254,138,137,137,209,245,237,219, 87, 86,173, 90,181,102, 79,219, 86,195,195,195, 91, 8,
+133, 66,156, 57,115,198, 0,192,186,178, 62,122,249,242,101, 67,175, 94,189, 36,193,193,193, 45,156, 24,112,195, 35, 35, 35, 15,
+248,248,248,200,172,218,160, 62,125,250, 8,151, 47, 95,174, 74, 76, 76,132,201,100,194,228,201,147,241,218,107,175,193,203,203,
+ 11, 19, 38, 76,240,157, 63,127,254, 79, 0, 26,149,129, 41, 21,139,197,235,238,220,185, 19,230,239,239, 47, 59,125,250, 52,234,
+215,175,143,140,140, 12,164,164,164, 32, 63, 63, 31, 41, 41, 41, 24, 62,124,184,207,215, 95,127, 29,224,128, 38,203, 70,178,150,
+ 47, 95,158,189,101,203, 22,118,197,138, 21, 42,251, 5,118,241,197,117, 73,139,106, 7, 36, 91, 36, 18, 65, 46,151,107,178,179,
+179,115,158,162,138, 36, 0,196,246, 36, 75, 34,145, 64, 34,145, 64, 42,149, 62, 85, 92,214, 23,100, 18, 15, 36,132, 92, 23,137,
+ 68, 18,185, 92, 46, 98, 24, 6, 18,137,164,179,135,135,199,181, 87, 94,121,165,238,254,253,251,227, 28,193,209,235,245,235, 36,
+ 18,137,208,199,199, 7, 0, 16, 22, 22,134,250,245,235,163,160,160,128,207,201,201,129, 70,163, 97, 30, 60,120, 0,157, 78,135,
+228,228,100,132,132,132, 8, 25,134, 89, 7,224,213,146,240, 78, 94, 72, 94, 10, 96,169,245,222,219,219, 59, 21,128,204,122, 47,
+149, 74, 17, 24, 24,136,196,196, 68,168, 84, 42,246,243,207, 63,239,181,113,227,198,158,132,144,193,148,210,245,118, 80, 51, 94,
+ 84, 27, 45, 43,201,178,127,125,140,104, 69, 71, 71, 79,223,181,107, 87,219,146, 38,178,162,253,218, 82, 53, 89,214,203,145,142,
+ 71, 8, 1,199,113,240,245,245,133, 92, 46,135, 92, 46,183,238,249,131,227,184, 39,240,139, 86,248, 78,103, 86,161, 80,224,173,
+183,222,162, 63,252,240,195,152, 34,178,117,199,209,239,246, 89, 18, 99,211, 98, 21,151,218,181,107,159,250,228,147, 79,186,255,
+241,199, 31,137,141, 67,171, 9, 20, 73, 15,242,165,106,141, 6, 65, 85,162,135,244,232,117, 25,143, 78, 31, 58, 42,119,242,242,
+242,100, 53,130,228, 70,134,209,147, 42, 18,129,202, 95, 33,146,248,185,187, 7,138,140,134, 52,181,187,187,216, 96, 48,100, 3,
+200, 42, 11, 68,173, 86,239,147, 72, 36, 33, 44,203,130,101, 89,120,121,121,185, 81, 74,161,209,104, 16, 20, 20,164,140,136,136,
+184, 37, 16, 8,192, 48, 12,242,243,243, 31,220,191,127,191,115,121, 9,115,119,119,223, 39,145, 72, 66, 24,134, 1, 33, 4, 44,
+203,218, 14, 46, 88,255,103, 89, 22,132, 16, 20, 22, 22, 58,132, 73, 41,189, 68, 8,137,138,142,142,182,145,173, 61,123,246,160,
+ 75,151, 46,200,206,206,198,181,107,215,236, 73,150, 67,219,134,246,198,239,148, 82,136, 68, 34,220,188,121,243,177, 45,109,235,
+165, 82,169, 42,220,121, 60, 60, 60, 78,244,233,211, 7, 63,254,248, 35,165,148, 18, 0, 10, 66, 72,125, 55, 55,183,155,215,175,
+ 95,119,200, 14,134, 82, 10,147,233,239,143, 90,219,184,125,255,114,130, 76,119,110,212,168, 17,201,201,201,177, 18, 72,219,130,
+136,101, 89,124,247,221,119,178,166, 77,155, 78,149, 74,165, 19, 69, 34, 81,174,217,108,254, 69,175,215,207,161,148,102, 63, 79,
+131, 82,235,214,173, 63,136,143,143,127, 45, 36, 36,100,199, 83,144,120,218,164, 73, 19, 35, 0, 25,203,178,194, 74, 24, 40,217,
+162,182,165,183,146,125, 74,169,165, 81,163, 70,250,162, 73,158,117, 20,203,203,203,235,167,221,187,119, 7,133,132,132,192,108,
+ 54,195, 98,177, 32, 63, 63, 31, 71,143, 30,133,193, 96,128,197, 98, 65, 88, 88, 24, 62,251,236, 51,253,251,239,191, 47, 93,182,
+108, 89, 90,126,126,254,128,114, 96,223,223,188,121,179,194,223,223, 95,166,211,233, 16, 27, 27,139, 70,141, 26, 33, 47, 47, 15,
+ 5, 5, 5, 40, 44, 44,132,201,100, 66,110,110,174,134,227, 56, 99, 57, 88,211,236, 73,214,232,209,163,175,136,197,226, 70,239,
+190,251, 46, 18, 18, 18,108,125,126,228,200,145,240,245,245, 45, 62,214, 59,197,180, 4, 2, 1, 36, 18, 9, 68, 34, 81,118, 72,
+ 72, 8, 8, 33,210,184,184,184,138,108,197,169, 1,228, 10,133, 66,177, 61,193,146, 72, 36, 56,115,230,204, 39, 98,177,184, 68,
+109, 86, 89,237,199,153,251,231, 96, 34, 95, 36, 18,137, 36, 30, 30, 30, 34,187,121, 90,164, 84, 42,225,227,227,179, 4, 64, 87,
+ 7,243,221,208,195,195,195, 54,190, 55,104,208, 0,241,241,241,219,114,114,114, 6,165,165,165,129, 97,152,117, 12,195,244,180,
+242,128,172,172, 44, 4, 7, 7, 55, 44, 13,175,101, 35,255, 49, 32,212,166,209,170, 93,211, 67, 89,108,158,130, 90,173,198,253,
+251,247, 81, 80, 80, 64,111,223,190, 77,198,142, 29, 75,140, 70,227,106, 66,200,159,148,210,123,101,113,145, 23, 65, 42,100,163,
+101, 45,224,210,136, 85,113,226,229, 8, 33, 50, 26,141,202, 70,141, 26,241,214, 9,220,122, 1, 32,165, 17,173, 34,205,129,211,
+ 34, 20, 10, 85, 99,199,142,205,251,225,135, 31, 70, 19, 66,150, 83, 74,111, 87,180, 0,119,108,249,217,247,203,207, 38,127,230,
+ 17, 80,173,198,196,137,211, 4,175,191,254,250,233,181,107,215,114, 30,181,186,118, 60,188,111,189,239, 55, 31, 78,218,179,123,
+247,110,224,145, 97,180,163,114, 98,231,206,157,126, 19,222, 27,135,207, 62,122,127,175, 58,204, 75,172, 36, 30, 10,169,161, 32,
+ 93, 9,170,147,212,140,124,109,235,142, 29,201, 0, 46,148, 5, 34,147,201, 66,110,223,190, 29,102, 79, 36, 76, 38, 19, 52, 26,
+ 13,214,174, 93,235,173, 82,169,188,149, 74, 37, 4, 2, 1,234,215,175,239,168,198, 36,228,214,173, 91, 97, 42,149, 10,133,133,
+133, 48, 24, 12, 48,155,205,224,121, 30,132, 16, 8,133, 66,136,197, 98, 40, 20, 10,167, 78,246,217,147,173, 61,123,246,160, 78,
+157, 58,200,202,202, 66, 76, 76,140,211, 36,203, 94, 75,100,111,143, 37, 16, 8,240, 83,104, 40, 70, 38, 37,217, 8,204, 34, 55,
+ 55,124,198,243, 21,170,251,122,245,234,209,147, 39, 79, 98,239,222,189,232,214,173, 27,249,253,247,223, 77, 28,199,137, 18, 19,
+ 19, 29,214,142,241, 60,111, 75,171,117,220,182, 39, 88,206, 18, 45,139,197,162, 18,139,197,208,235,245,182,173,125,251,171,122,
+245,234,208,106,181,130,220,220, 92, 65, 82, 82,146,124,246,236,217,239, 30, 57,114,196, 31, 64,255,127,115, 32,250,225,135, 31,
+ 66, 70,142, 28,249, 80, 32, 16,208, 46, 93,186, 12,124,240,224, 65, 15,127,127,255, 67,127,252,241,199, 87, 0,194,157,197,243,
+246,246, 62, 47, 16, 8,130,148, 74,165,104,211,166, 77,230,188,188, 60,145,143,143, 79,170,149,216, 90,203,218,108, 54, 39,228,
+228,228, 52,118, 4,207,219,219, 91,244,237,183,223,154, 51, 51, 51, 69,126,126,126,169, 86, 28,133, 66, 33,218,180,105,147, 57,
+ 55, 55, 87,164,209,104,206,103,103,103,151,139,151,145,145, 49, 96,240,224,193,199, 15, 29, 58,228,197,178, 44, 30, 60,120,128,
+204,204, 76,104, 52, 26,172, 91,183, 14, 33, 33, 33,216,188,121,179, 86,171,213,142,248,223,255,254, 55, 53, 63, 63,223, 17, 87,
+ 15,109,154, 53,107, 22,146,157,157, 13,141, 70,131,130,130, 2,156, 63,127, 30,181,107,215, 70, 82, 82, 18, 24,134,129, 70,163,
+193,247,223,127, 95, 72, 8,209,150, 51,118,244, 24, 53,106,148, 6, 0, 70,141, 26,165, 25, 53,106, 84,137, 19, 92,139, 22, 45,
+176,100,201, 18,167, 22,213,197,181,236, 86, 82,100, 71,142,244, 45, 90,180,192,145, 35, 71, 38, 57, 67,142, 40,165, 70,161, 80,
+248, 24,193,178,251,223,226,108, 27,226, 56, 78, 84,100, 35, 74, 28,185,127, 14,164,173, 76, 38, 19, 21,127,179,176,176, 80,228,
+239,239,223,218, 9,226,235, 41,147, 61, 82, 56,133,132,132, 32, 39, 39,135, 51, 26,141,253,214,173, 91,103, 6,128, 70,141, 26,
+245,227, 56, 78,111,177, 88, 88,177, 88,140,130,130, 2,248,248,248,120,150, 10,200,224,227,237,191,204,246, 43,110,163,229,239,
+239,143,168,168, 40, 24, 12, 6, 36, 39, 39,227,232,209,163,102,142,227, 54,252,240,195, 15,188,183,183,247,176, 55,222,120,131,
+189,112,225,194, 59, 0, 62, 40,139,139,188, 40,218,172,210,200,150,245,212, 97, 91, 0, 71, 0,180,179,102,210,126,235,176, 44,
+ 77,150, 51,171, 28,150,101,179, 19, 18, 18, 20, 10,133,194,246,158,217,108, 70, 64, 64, 0,207,243, 60, 41,254, 59, 21, 84, 81,
+ 63, 70,182,166, 76,153,146,253,253,247,223, 15,130,131, 6,229,155,222,137,196,218, 98, 36,107,233,151, 51,151,124,251,229,108,
+143,187,123, 87, 99,197,226, 5, 28,199,225, 66,189,122,245, 90,231,231,231, 11,220, 20,102,100,100, 99, 15, 30,249,209,162, 14,
+ 86, 8, 3, 96,213,217,179,103, 47,116,237,218,245,228,170, 95,183,122, 36,197,198,254, 41,201,205, 72, 86,215, 12, 19,136, 2,
+ 67,122,230,233,245,162,126,253,250,121, 3,120,163, 44, 44,134, 97, 16, 27, 27,139,184,184, 56, 40,149, 74,168, 84, 42, 40,149,
+ 74,168,213,106,168, 84, 42,168, 84, 42,167,203,144, 97, 24,112, 28,135, 45, 91,182, 64, 46,151, 67,161, 80, 60,118, 89, 73,214,
+211,212, 77,151, 46, 93,160,213,106,161, 84, 42,109,219,157,206,136,213, 70,203,104, 52,194,104, 52,194,100, 50,113, 0,132, 2,
+129, 0,195, 19, 18,108, 90, 30,103, 8, 76,113,169, 95,191, 62,253,243,207, 63,113,242,228, 73, 20, 20, 20,224,219,111,191,133,
+191,191,127, 7, 0,211,156,197,178, 51,210,231,114,115,115,133,185,185,185, 54,237,160, 80, 40,180,105, 15, 28,157, 28, 4, 2,
+129,109, 53,106,189,236,181, 90, 44,203,194,215,215, 23,126,126,126, 88,186,116,169,168, 90,181,106,175,253,155,131,208,252,249,
+243,107, 46, 90,180,104,229,218,181,107,247, 12, 24, 48, 96,227,213,171, 87,135,186,185,185, 93, 57,124,248,240,108,137, 68,194,
+ 87,176,127, 7, 37, 37, 37,249,216,191,197,243,188,220, 98,177,216,136,109, 97, 97, 33,234,214,173,235, 48,222,245,235,215,229,
+ 0, 48,123,246,108, 33, 0,185,213, 24,220,138, 89, 88, 88, 40,172, 93,187,182, 67,134,224,148,210, 91,132,144,214,157, 58,117,
+ 58,117,224,192, 1,247,144,144, 16, 36, 38, 38, 34, 49, 49, 17, 53,107,214,196,220,185,115, 11,114,115,115, 91, 22,145,171,223,
+ 29,204,118,128,187,187,187,240,225,195,135,176, 88, 44,104,216,176, 33,190,255,254,123,244,235,215, 15,117,235,214, 69,110,110,
+ 46,174, 95,191,142, 53,107,214,184,139, 68,162, 50,199, 14,157, 78,247,251,242,229,203,131,139,107,180, 6, 14, 28,168, 72, 77,
+ 77,181,181,201,153, 51,103, 62, 54, 46, 59,179,203, 80,180,181, 85,234, 85, 17,177, 88, 44,106,169, 84,154, 43,145, 72,196, 86,
+251,172,163, 71,143, 58,173,205,178, 95, 0, 58,115,255,111,138,149,180, 22, 23,177, 88, 12, 63, 63, 63,135,113, 36, 18, 9,177,
+142,141, 22,139, 5, 57, 57, 57,156,191,191,191,109,123,255,226,197,139, 92,213,170, 85, 57,150,101, 89,177, 88, 12, 66, 8,228,
+114,121,169, 3, 62,229,232,204,215,251, 77,179,157, 58,100,132, 10,245,248, 41,143, 22,253, 23, 47, 94,132,201,100,194,209,163,
+ 71,205,255,251,223,255,146,178,179,179,199, 3, 16,236,219,183,111,240,164, 73,147, 88, 31, 31, 31,155, 29,109, 73, 92,228, 69,
+ 35, 91, 37,105,185,172,179,208,145,232,232,104, 82,116,180,146, 88, 9, 14,165,244, 9,114, 85, 26,241, 42,234,124,164,188, 78,
+199,178, 44,246,238,221,107, 35, 4,214, 83,135,148, 82, 84, 54,209,242,244,244, 44,104,214,172,153, 58, 62, 62,254,231,138,106,
+178,150,126, 57,115,201,188, 89,159,123,104,111,156, 70, 66, 82, 50,180,105,230, 11, 39,174,220,223, 6, 96, 27, 0, 96, 89,173,
+ 35, 24,125,227, 59, 71, 49,107,121,203, 27,212, 11, 80,109,123,185,235,107,193,125, 71,125,192,188,253,246,219,173, 6, 15, 30,
+156, 51, 96,192,128,247,148, 74,101,184,201,100,202,218,186,107, 87, 92,223,190,125,171,113, 28, 55,184, 60,159, 35,102,179,249,
+ 65,175, 94,189,108,101,235,231,231,167,254,229,151, 95,124, 85, 42, 21, 6, 14, 28,152, 30, 23, 23,103,219, 46,202,203,203,123,
+224, 72, 26, 77, 38,211,131, 6, 13, 26,148,186, 93,104,213, 72, 58,131, 89, 84,151,182,211,133,153,153,153,184,121,243, 38, 4,
+ 2, 1,154, 55,111,142, 19, 39, 78,160, 85,171, 86, 78,157, 56,212,235,245, 8, 9, 9,129, 94,175, 71, 65, 65, 65, 33, 0,201,
+186,106,213, 0, 0,239,100,102,226,252,255,254,135,211,243,230, 85,168, 29, 53,104,208,128,158, 57,115, 6, 87,174, 92,129,193,
+ 96,192,136, 17, 35, 80,180,109, 8, 0,175, 56,145,231, 80, 63, 63,191, 46, 93,187,118, 13, 0,128,130,130, 2,114,246,236, 89,
+ 72,165, 82, 16, 66,144,156,156,140, 29, 59,118, 32, 49, 49, 17,132, 16,184,187,187, 7, 17, 66,170, 81, 74,239,151, 49, 49,144,
+251,247,239,227,139, 47,190, 0,207,243,152, 52,105, 18,194,194,194,108, 4,235,193,131, 7,152, 61,123, 54, 56,142,195,231,159,
+127,142,154, 53,107,194,108, 54, 75,157,241, 83, 86,217, 50, 97,194,132,187,219,182,109,219, 19, 31, 31,255,234,151, 95,126,217,
+150, 16,194, 79,156, 56,241, 11,181, 90,205, 61, 13,110, 86, 78, 30,110,222,121, 96, 35, 66,197, 47,111, 47, 15,167,241,110,199,
+198,219,190,207,113,246,120, 28, 60, 61,220,157, 77, 98,161,217,108, 46,232,217,179,167,102,203,150, 45,164,102,205,154,184,119,
+239,158,117,113, 90, 88, 1,151, 14,137, 90,173, 54,140,101, 89,209,157, 59,119, 80,181,106, 85, 52,107,214, 12,115,230,204, 65,
+ 70, 70, 6, 44, 22, 11,124,124,124,120,179,217,124,209,104, 52, 30, 43, 7,107,230,232,209,163, 69, 0,198, 20,105,182,234,141,
+ 31, 63,158, 95,176, 96, 1, 46, 94,188,104, 27,143,237,141,225,157,221, 58,180,215, 58,217, 95, 71,143, 30,157, 36, 22,139, 41,
+128, 51, 0,156, 34,218,148, 82, 99,149, 42, 85,138, 99, 91,158,151,201,246, 89,158,100,244,247,247, 63,170, 82,169, 94,203,202,
+202,122, 76,171,213,178,101, 75,147,175,175,239,113, 71,113,148, 74,101, 22,203,178,158, 0,144,152,152, 8,133, 66, 33,138,141,
+141,157, 71, 8,153, 12, 0,213,170, 85,155,167,213,106, 69,213,138,198, 83, 63, 63, 63, 24,141,198, 82,205, 88, 78, 93, 76, 89,
+ 13, 96,181,221,220,155,156,147,147, 35, 91,176, 96, 65,254,188,121,243,116, 28,199, 25, 0, 28,206,206,206,182,249,209,170, 90,
+181,106,142, 80, 40,244,208,104, 52,129,118, 80, 79,112,145,255,194,246,161,189,195, 82, 90,194,151, 74,212,100,149, 68,182, 28,
+209, 74, 16, 66,160,211,233, 30,211,142, 88, 79, 29,150, 68,180,138, 38,244, 10,109, 29, 22,145, 44,217, 47,191,252,178, 97,241,
+226,197, 39, 29,253,158,189,141,214,178,175,102,125,105, 37, 89,151, 79, 30,192,239, 49, 57, 25,147,230, 45, 92, 84,209, 74,168,
+237,173,168,239,231,235,117,228,127,115,103,170,239,238, 93,131,141,203,190,166,151,207,157,107,122,238,220,185, 65,227,198,141,
+171, 82,212,176,180, 0,254, 2,208,215,145, 83, 58,233,233,233,143,217, 71,133,133,133,221,210,104, 52,190, 82,169, 20,177,177,
+177,249,215,174, 93,115,122, 75,166, 56,102, 37, 49,253,199, 72,214,181,107,215,208,190,125,123, 0,192,137, 19, 39,208,178,101,
+ 75,167,200,150,217,108,206,174, 85,171,150, 77,187,149,147,147,195, 3,192,168,228,100, 44,247,247,135, 64, 32,192,233,121,243,
+240,169,217,140, 57, 66,231, 76,119, 26, 54,108, 72,207,157, 59,135,184,184, 56, 88, 44, 22,116,239,222,221,158,100, 57,147,231,
+186,145,145,145, 7, 15, 31, 62,236,173, 84, 42, 81, 80, 80,128,252,252,124, 12, 25, 50, 4,253,250,245,131,193, 96,192,166, 77,
+155,176,125,251,118,168, 84, 42, 20, 20, 20,160,160,160,192, 61, 58, 58,250, 20, 33,164, 77,105,182,133,148, 82,218,185,115,103,
+ 28, 63,126, 28, 44,203,162,105,211,166,200,204,180, 29, 6,130,175,175,111, 73,207,216,162,254,254,175, 76, 72, 2,129,128, 30,
+ 61,122,244,203,182,109,219, 34, 62, 62,254,213, 70,141, 26,125, 59,116,232,208,196,167,197,117,119, 83,161, 65,237, 80, 24, 12,
+ 6, 24, 12, 6, 4, 4, 4, 32, 47, 47, 15,119,239,222,133,193, 96,128,175,143,198,105,188,168,186, 53,109,120, 62, 62, 62, 40,
+ 40, 40,192,253,251,247, 97, 52, 26,225,229,229,238, 76,253, 7,119,238,220,249,143, 13, 27, 54,120,174, 89,179,198,216,174, 93,
+ 59,241,183,223,126, 75,212,106, 53,210,210,210, 42,154,229,163, 39, 78,156, 8,233,212,169, 83,196,141, 27, 55,112,244,232, 81,
+ 24,141, 70, 68, 69, 69,225,246,237,219,104,209,162, 5,242,243,243,207,156, 59,119,110,187, 3,147, 2, 79, 8,153, 58,122,244,
+104, 88,201,214,241,227,199,145,156,156, 12,149, 74,245, 4,209,178,218, 62,138,197, 98, 0, 8,112, 80,115, 98, 59, 21, 88,164,
+121,250, 84,163,209,152, 0, 44,122,154,182,248,240,225, 67, 73,253,250,245, 13, 82,169, 84, 92, 68,218, 22,254, 91,109,187,132,
+122,127,170,147,140,101,137,159,159,223,120, 47, 47,175, 78,213,171, 87, 71,106,106,170, 72, 44, 22,163,101,203,150,166, 38, 77,
+154,152,252,252,252,222,113, 20, 71, 34,145,220, 16,137, 68,109, 30, 45, 38, 56, 60,124,248, 16,148,210, 73,117,235,214,125, 63,
+ 47, 47, 15,153,153,153, 98,181, 90,109, 91, 84, 71, 68, 68,192, 96, 48,220,112,130,108,206,172, 90,181,234, 84,145, 72, 52, 39,
+ 61, 61,253,135, 18,202, 72,220,160, 65, 3,181, 72, 36,130,201,100,122,140,108,150,196, 69, 94,100,146,245, 24,209,178, 99,145,
+197,213,233,229,110, 27, 58,106,163, 69, 8,129,209,104,132, 66,161,176,109, 73,217,123,130, 47,137,104, 85, 68,130,131,131,209,
+172, 89, 51,217,198,141, 27,127, 90,176, 96,193,169,138, 96,108,222,176,222,223,141, 47, 12, 78, 58,179, 27,183,174, 92,192,182,
+235,217, 25,147,230, 45,124,239,245, 55,250,167, 22, 39,102,155, 70,151,143, 23,238,163,168, 27,232,235,121,228,171,249,243,212,
+218, 27,167,145,156,146,130,221,103,206, 93, 48, 82,122, 29,192,164,202,170,108,251,211,107, 21, 37,169,207, 96,224,177,185,119,
+200,200,200,192,245,235,215,173, 36, 43, 10, 0, 90,181,106,117,209, 74,182, 46, 92,184,128, 70,141, 26, 61,225,222,225, 9,205,
+ 67, 86,214,220, 98,191,209, 9,128,151,149,240, 11, 4, 2,180,156, 58,213,105,146, 69, 8,161, 28,199, 65,171,213, 90, 87,138,
+ 21, 34, 89, 69,131,226, 71,135, 15, 31,246, 94,181,106, 85,238,218,181,107, 51,121,158, 23, 54,104,208, 32,168,113,227,198,100,
+221,186,117, 0,128,190,125,251, 98,210,164, 73,184,118,237, 26, 20, 10, 5, 90,181,106,197, 77,159, 62,221,103,252,248,241,239,
+224,145,159,164, 39,132,227, 56, 81,181,106,213, 14, 1,232,112,227,198, 13, 0, 56, 69, 41,109,105,125, 94,214, 51, 7,132,207,
+203,203, 19,170, 84,170, 18, 93, 67,136, 30, 29,235,116,118,171,207,134,121,242,228,201, 47,190,250,234,171,109, 31,126,248,225,
+157,167,196, 44, 81,163,245,218,107,175, 65,103, 48, 33, 33, 53, 7, 28,103,129,206,148,230, 52,158,189, 70,235,181,215, 94, 67,
+161,222,136,135,201, 90, 88, 44, 28,242,116, 22, 71,219,145,252,229,151, 95,222,247,203, 47,191,248,253,249,231,159,224, 56,142,
+191,125,251,246,253,158, 61,123,170, 39, 78,156,232,105,103,131,234,172, 44,238,223,191,127,239,147, 39, 79,106, 35, 34, 34, 60,
+206,156, 57,131,180,180, 52, 88, 44, 22,116,232,208, 1, 98,177,248,225,188,121,243, 68, 0, 22, 59, 56, 57, 88,201,150,233,220,
+185,115, 35, 79,159, 62,237,225,225,225, 33,230, 35, 35,145,124,224, 0,182,108,217,242,196,119,150, 45, 91, 6, 0, 14,121,225,
+183,106,156,206,158, 61, 91, 41, 4,171,248,118, 89, 69,183, 31, 95, 84, 57,115,230, 76,226,184,113,227,106,171,213,234, 69,173,
+ 91,183,110,239,233,233,201,184,187,187, 31, 13, 12, 12,124,191,126,253,250, 15,156,152, 39,134, 42, 20,138,187, 22,139,133,205,
+207,207, 71, 65, 65, 1, 0,192, 98,177,136, 25,134, 65,181,106,213,108,202,147,166, 77,155,194,207,207,143,139,137,137, 25,234,
+ 40,126, 90, 90,218, 99,167, 16, 75,144,209, 45, 91,182, 20, 24, 12, 6,196,197,197,157,176,127, 80, 26, 23,121,222,165, 66, 65,
+165, 25,134, 1,165, 20,210,198,141, 75,237,112, 37,116, 62, 82,124,242,179,247,181, 97, 61, 93, 56,114,228, 72,219,103, 46, 92,
+184, 96, 51,138,239,222,189,251, 99,152,103,207,158,125,130,108, 57, 18, 49, 60, 45, 45,237,198,166, 77,155,206,205,159, 63,255,
+140,131, 5,100,195,180,218,104,245,126,107, 96,242,146, 47, 62,187,186,118,199,225,186,201, 58,154, 60,105,222,194, 15,139,147,
+ 44, 71, 49,107,249, 41,107, 5,249,120, 30, 93, 48,127,158,155, 85, 59,246,203,197,148, 28, 88,232,104, 39, 43,178,220,188,219,
+107, 22, 9, 33,124,101, 96, 86,160,193, 61,134,105,239,222, 33, 57, 57,217, 70,178,236, 28,150, 70,181,106,213,234, 98, 17,201,
+178, 62,179, 84, 36,157, 2,129, 0, 31,230,231, 67, 32, 16,160,221,140, 25,232, 48,107,150,211,121,231, 56, 14, 2,129, 0, 97,
+ 97, 97, 78,147, 44,123, 76, 66, 72,203,194,194, 66,172, 89,179, 38,239,206,157, 59,161,213,171, 87, 31,191,122,245,234,133,114,
+185,252,177,239, 20, 22, 22,226,245,215, 95,199, 15, 63,252,128,206,157, 59,155,135, 14, 29, 42, 97, 24,166, 83, 89,233,140,139,
+139, 27,221,177, 99,199,101,122,189, 94,144,153,153, 57,218,209,103,229,229,125,211,166, 77,119,194,194,194,218,162,116, 23, 14,
+ 60,128, 63,159, 6,115,209,162, 69, 0, 16,241, 52,152,165,105,180,126,253,245, 87,240, 60,143, 96, 63, 13, 12, 6, 3,138,151,
+117,121,152,197, 53, 90, 27, 55,110, 4,207,243,168,226,239, 1,163,209, 8,171, 1,113,121,152,158,158,158, 95,175, 93,187, 54,
+ 40, 38, 38, 6, 9, 9, 9, 88,184,112,225,131,236,236,236,174,217,217,217,146,233,211,167, 31,121,235,173,183,124,121,158, 55,
+ 56,219, 55, 41,165, 6, 66,200,208,151, 94,122,105,221,236,217,179,239, 69, 70, 70, 86,105,217,178,165, 38, 51, 51, 51,253,210,
+165, 75,247,151, 45, 91,166,180, 88, 44, 67, 75,219,146, 42, 5,147, 7, 48,157, 16,242,131, 70,163,217, 22, 23, 23,215,180,102,
+ 86, 22, 27, 64, 8,154, 54,109,250,152,233, 0,195, 48, 56,126,252, 56,120,158,191,235, 72,121, 38, 38, 38,206, 40,210,166, 58,
+ 69,176, 28,233,239,103,207,158,157, 82,132,125,206, 17,236,127, 98,172,179,106,156,157,185,119, 54,157,223,125,247, 93, 2,138,
+249, 71,115, 54,157,103,207,158,141,235,212,169,211, 44, 95, 95,223,233, 82,169, 20,233,233,143,130, 29, 88, 53,143,214,249,186,
+113,227,198,232,220,185, 51,110,221,186, 53,107,234,212,169,113, 79, 83,158, 69, 11,238, 80, 0,131, 58,118,236, 56,177,119,239,
+222,248,238,187,239, 64, 41, 93,249, 95, 32,193,229, 6,149,142,142,142, 38,246,175, 69, 91, 51,241,119,239,222,245,183,239,112,
+246, 49, 10,173,157,206,106, 80,119,236,216, 49,139,125,231, 43,101, 37, 30,127,242,228, 73,223, 3, 7, 14, 8,173, 21, 90,100,
+212,201, 39, 37, 37, 49, 71,142, 28,177,105,199, 4, 2, 1,142, 30, 61,106, 49,153, 76, 15,157,205,240,173, 91,183, 22, 87, 70,
+193, 29,187, 22,247,254,190,221,191,121, 53,111,214, 58, 91,237,225, 81, 98, 71,182,122,144, 47,179,129, 9,152, 57, 95,206,157,
+169,177,146,172, 95, 47,166,100,235, 13, 92,251, 27,233,133,151, 43,187,178,243,242,242,226,172,167, 11,243,243,243, 31, 62, 71,
+141,240, 18, 33, 36,202,223,223,255, 34,138,157, 46,180, 62,107,212,168,209, 19,207,156, 82,155,240, 60,220,220,220,108,131,132,
+179,118, 89,132, 16,106,221,202, 46, 74, 23,121,202, 60,159,188,122,245,106,213, 33, 67,134,168,194,194,194, 98, 9, 33,194,225,
+195,135,155,252,252,252, 68, 39, 78,156, 48, 3, 32,109,219,182, 21,164,164,164,208,196,196, 68,109,183,110,221,242, 70,142, 28,
+233,249,215, 95,127,137,121,158, 63, 88, 14,246, 61, 0, 29,157,125, 86,158,244,238,221, 59, 22, 37, 56, 14,125, 26,121, 22,152,
+ 86,209,102,231, 34, 54, 46,177,200,131, 57, 15,238, 65,170,205,174,202,108,182, 64,155,155,233,180, 70,235,238,253,196,162,144,
+ 99, 28, 56, 46,169, 8,239,145, 65, 60,205, 42,116, 68, 91,208,106,209,162, 69, 93, 25,134, 97, 78,159, 62,109,152, 63,127,126,
+124,122,122,122,119, 74,233,195,162,118,214,110,205,154, 53, 63, 57,224,202,161,180,186,191, 78, 8,105,241,241,199, 31,191, 7,
+160, 21,128, 42, 0, 30, 2, 56, 1, 96,113, 69, 61,152, 83, 74,211, 8, 33,175,116,237,218,245, 0,203,178,213,236,250,145, 23,
+128, 12,187,126,225,147,154,154,250,170,131,176, 11,159,225,176,178, 16,207,161,188, 40, 39, 25, 15, 30, 60, 56,163, 71,143, 30,
+130,144,144,144, 79, 66, 66, 66,152,172,172, 44,228,231,231,131, 97, 24,248,249,249,161, 78,157, 58,240,243,243,227,111,220,184,
+ 49,247,227,143, 63, 46,215, 39, 95,237,218,181, 67,205,102,115, 13,134, 97, 66, 1,132, 82, 74, 67, 9, 33,161, 0, 60,138, 52,
+ 99,234,170, 85,171, 10,154, 55,111,142,102,205,154,225,200,145, 35,216,188,121,243,106, 74,233, 62,123,109, 86,113, 46,242, 60,
+200,245,198,164, 45,225,113,132, 50,104, 87,251, 60, 61,122, 35,138,208, 90, 23,159,156, 31,202, 13, 42,253,196,128,147,149,213,
+185,132, 14,103, 15,248,216, 43,207,243,113,229,117,190,172,172,172,206,239,191,255,254, 1,150,101,171, 89, 53, 85, 22,139,197,
+160,213,106,223,110,215,174,221,247, 66,161, 80, 98,143,203,243,252,131,212,212,212,127, 52, 86, 95,113, 63, 90,157,187,246,200,
+120, 90, 76,165,136,169,113,107,215,143, 72, 77,203,192,175, 23, 83,178,242,140, 92,187, 91,233, 5, 87,159, 69,250,227,226,226,
+186, 60,199,140,255, 82,105, 91,130,101, 61,115, 80,210, 29,112, 72,154, 94, 78,250, 72, 17,217,170,148, 78,158,146,146,178, 96,
+234,212,169,175,204,157, 59,215,123,207,158, 61,234,162,223, 64,175, 94,189,210,174, 94,189,218, 26,128, 68,175,215, 31,156, 59,
+119,174,247,204,153, 51, 61, 1,120, 22, 13, 50,169,169,169,169, 75,224,146, 50,197,108, 54, 39,212,169, 21, 97,173,187,199, 92,
+ 58,216,255,111,177, 88, 18,156,193, 43, 9,199,254,158,227,184,132,114,180,202, 31, 54,107,214,140,253,240,195, 15, 83,247,236,
+217, 99, 13,164, 91,104,215,206,110,161, 12,167,164, 14,246, 37, 3,128,249, 69, 87,101,246,209, 2, 0, 45, 92,173,235,233,199,
+ 58,103,238,255, 45,249,237,183,223,166,245,235,215,111,141,135,135,199,250,208,208,208, 8, 95, 95, 95,181, 76, 38,131,193, 96,
+200, 51, 26,141, 55,111,221,186, 53, 96,234,212,169,247, 28,193, 90,179,102, 13, 11, 64,196,243,188,148, 97, 24, 5, 0, 53, 33,
+196,221, 74,180, 8, 33, 48,153, 76,136,139,139,195,167,159,126,202, 29, 58,116,232,127, 0, 62,119, 34,185, 77, 0,120,219,141,
+227,222, 0,140,120,228,192, 54,189, 72,179,249, 76,132,240, 56, 82,235, 34, 37, 55,162, 72,169, 70,250,229, 6,149,254,167, 58,
+ 92, 57,152, 33,207, 75, 39, 25,108,152,255, 51,150,205,127, 44,206,161,149,132,149,120, 95,206, 6, 96,142,206, 50,110,241,190,
+107, 11, 12, 22,202,155, 44,252,176, 91,105, 5,215,255, 31, 15, 64,150,138, 60,115, 0,247,229, 74, 74, 31,169,196,188, 94, 37,
+132,188, 52,110,220,184,105,114,185,188, 41, 0, 20, 22, 22,158, 78, 74, 74,154,101, 61, 85, 88,222,115,151,148,193,154,211,211,
+ 27, 63,143,120, 70,163,241,253,151, 94,122,233, 27,142,227,190, 50,155,205, 39, 92, 53,229,146,231, 89,126,253,245,215,123,214,
+121,185, 79,159, 62, 44, 0,108,218,180,201,233,211,192, 67,134, 12,225,138, 2,153,235, 1, 20, 0,200,197, 35,135,219, 4, 0,
+ 10, 10, 10,178,146,146,146,110,112, 28,119, 3,192, 79, 21, 56,113,235, 77, 8,217, 73, 41,125,173,104,236,220, 73, 41,125,205,
+254,189,103, 45,118,100,171,164,241,190,124, 99,120,151, 60,146, 77,215,254,158,104,139, 19,168,242,238, 75,147,155, 41,249, 71,
+159,118, 5,235,146, 23,150, 88,198, 2, 24, 92,209,231, 46,121, 33,235,252, 33,128,238,174,146,112,201, 11, 55,255, 85,128, 96,
+ 89,229,250,245,235,207,204, 68,224,223, 22,251,109,194,146,182, 12,173, 82,146, 54,203, 69,180, 92,226, 18,151,184,196, 37, 46,
+113,137, 75,202, 34,145, 69, 54, 90, 54, 18, 85,100,171, 85,156,100,217,147, 43,251,123, 2,160, 83, 41,171, 50,103, 78, 19,116,
+170,192,170,239,160, 11,211,133,233,194,116, 97,186, 48, 93,152, 46,204,255, 95,152, 21,148,232,114,182, 14,119, 61, 43,162,101,
+ 53,126,191, 30, 69,166,215,190, 72,167,151,100, 12, 95, 22,209,122,204,216,179,178, 47, 0,157, 92,152, 46, 76, 23,166, 11,211,
+133,233,194,116, 97,186, 48,159,242,106, 63,121,242,228, 41,120, 20,255,152, 78,158, 60,121, 10,165, 52,250, 17,141,161,209,207,
+242,183,175, 53, 66,219,235, 13, 65,173,215,181, 70,104, 91, 74,153,140,178, 94,246,239,187,182, 14, 93,226, 18,151,184,196, 37,
+ 46,113,201,243, 46,167,230,205,155, 87, 56,111,222, 60,171,225,123, 58, 0, 82,164,205, 74,127,150, 63, 92,180, 77, 88,238, 65,
+169,114, 67,240,252,211, 66, 8, 9, 96, 4,162,129, 66,145,164, 61, 40, 95, 7, 0,192,176,215, 56,163,254, 15,139,197,180,158,
+ 82,154, 84, 81,236, 90,132,212,170,169,145,109, 55,112,156, 40, 62,207,216,251, 6,165,103, 43,130,211,135,144,150, 18,177,120,
+191, 68,163, 41,209, 75,161, 33, 59, 91,103, 48, 26, 95,217, 68,233, 73, 87, 31,112,137, 75, 92,226, 18,151,188, 8, 66, 8, 81,
+184,187,187, 31, 98, 24, 38,196,238, 61,148,244, 63, 0,112, 28,151,172,213,106, 95,161,148,102,252,147,152,197,196, 8,224,236,
+243, 80,126,206,110, 29, 10,128,199, 98, 11,149, 27, 49, 59,210, 95,217, 58, 34, 52,100, 67, 82, 74,234,197, 92,189,113,248,205,
+196, 60,173,179,137, 20,136,164, 35, 53, 94,126,115,222, 28,250,190,103, 88,120, 4, 9, 14, 14, 4, 40,240, 48, 62,193,247,238,
+157,219, 29, 55,174, 93, 60, 65, 36,149,126,106,210,235,127,116,154,121, 18,162, 8, 81, 74, 78,252, 56,249, 45,141, 0, 22,244,
+159,189, 97,111,109, 66,130,175, 63,114, 45,225, 20,201,210,120,122,238,155,119,240,160,204,189,200, 1,168, 29,107,125, 20, 95,
+239,242,101,217, 39,175,188,178,175, 15, 33,157, 93,100,235, 63, 57, 24,249,169,213,234,241, 66,161,176,157,201,100, 10, 17,139,
+197,241, 28,199, 29,205,202,202, 90, 68, 41, 77,116,149,144, 75, 92, 82,110, 31, 42, 53,144,249,191, 25,228, 28, 0, 84, 42,213,
+121,134, 97,130,236, 73,128,213,191, 99,113, 63,145,118,254, 34,239,101,102,102,190, 84, 70,126, 67, 61, 60, 60,190, 7,208,164,
+ 60,135,201, 69, 91, 77,231,180, 90,237,219, 69,167,143, 75,194, 83,185,187,187,207, 32,132,244, 97, 24,166,220,128,194, 60,207,
+115,148,210, 77, 89, 89, 89,159, 83, 74,243, 74,251,156,187,187,251,193,152,152,152, 38, 62, 62, 62,229,106,105, 44, 22, 11, 30,
+ 62,124,232,221,180,105,211, 99, 0, 34,159, 37,166, 51, 92,228,223,148,178, 78, 30,150,200,121,172,255, 56, 26, 49,155,231, 49,
+112,213,156,183, 3,147, 31,220, 9, 28, 61,247,231,240, 72, 47,121,187,152,140,194, 20, 71,127, 80, 44, 83,109,111,213,225,181,
+246, 99,223,251, 80,113,233,234, 77,236, 63,242, 39,114, 11, 12, 96, 25, 6, 26,149, 28,225,225, 53,200,194,229, 91,188, 86, 47,
+ 93,248,149, 76,169,137,214,229,103,119,115, 38, 67, 10,185,224,211, 73, 61,155, 42, 60, 61, 56,128,231,240, 81,215, 6,138, 79,
+118, 94,252, 20,192, 20,167, 73,214,161, 67,242,180,212, 84,204, 12, 8,128,192, 98,129,148, 97, 32, 37, 4, 82,134,129, 66, 42,
+ 69,151,149, 43, 49,107,207, 30,249,180, 87, 95,117,145,173,255,152,168, 84,170,161,225,225,225,243, 87,172, 88,225, 89,189,122,
+117, 40, 20, 10,104,181, 90,175, 91,183,110, 53,252,224,131, 15, 6,187,185,185, 77,205,201,201, 89,230, 42, 41,151,184,164, 84,
+210,209, 16, 64,137, 65,226,203,122,246, 79, 9,195, 48, 65,137,137,137, 62,114,185, 28, 28,199, 21, 69, 3,224,109, 11,105,251,
+ 72, 57, 69,142,106, 17, 25, 25,105, 42,103,220,248, 46, 45, 45,173,147,125, 40,180,178, 34,238, 36, 38, 38,118,170, 93,187,246,
+119, 0, 94, 41,133,188,204,120,239,189,247,198,215,173, 91,215,170, 5, 42,138,130,240,232, 53, 35, 35, 3,227,198,141,179,253,
+ 6,207,243, 56,112,224,192,123, 67,135, 14, 5,128, 15,202,200,123,136,143,143, 15, 41, 10, 40, 94,170, 76,159, 62, 29,211,167,
+ 79,199,226,197,139,137, 80, 40,212,148, 83,158,149,130,233, 40, 23,249, 55, 52, 88,197, 61,196, 23,251,216,174, 98,241, 14,119,
+ 61, 65,180, 28,110,156,148,223, 61,123,209,138,225, 51,135,180, 34,171, 62,232, 20, 54,102,241,193, 63,107, 7,200,218, 92, 79,
+210,197, 59,160,201, 26,214,188,205,171,237,198,141,159,164,248,249,183,195,184,117,227, 50, 98, 78,252,242,216,103, 26,191, 50,
+ 20, 41, 25,121, 24, 58,246, 35, 37, 97, 5,237, 68, 82,249, 48,147,190,112,149,131,218, 44,223,218, 30,242,119,155, 55,173, 35,
+ 76,148,221,130,159,187, 12,173, 26,213, 20, 6,239,187,242,110,109, 66,190,185, 78,105,185,177, 10,139,147,172, 21,111,189,133,
+214,102, 51,124, 88, 22, 44, 33, 96, 1, 48,132, 64,111, 48,224,220,192,129,104,186,110, 29, 62,223,177, 67, 62,227,245,215,157,
+ 38, 91,114,185,124,181, 78,167,251,178, 2,142,219,254,205,193, 51, 92,165, 82,125,154,155,155, 59,240, 57, 74,147, 63,128,244,
+ 18,226, 35,138, 0,104, 40,165, 78, 69, 22,150, 74,165, 35,251,247,239,191,112,201,146, 37,242,212,212, 84, 36, 37, 37,129,227,
+ 56, 72,165, 82,132,133,133,145,131, 7, 15,122, 78,154, 52,105,129, 90,173,150,228,230,230,126,227, 68, 58, 25,161, 80, 56,196,
+195,195,163,135,175,175,175, 79,122,122,122,122, 86, 86,214, 14,131,193,176,170,162, 43,251, 34,204, 1, 85,171, 86,237, 17, 16,
+ 16,224,155,152,152,152,145,144,144,176,221, 96, 48,172, 46,138, 97,247, 52,101, 90, 31, 69,222,234, 1, 36, 87,173, 90,245,218,
+253,251,247,211, 42, 17, 51,169,106,213,170,215,157,197, 36,132, 40, 0,108, 4, 16, 80,206, 71,147, 0,244,165, 78,106,179, 93,
+ 82,121, 36,171, 40,164,213, 99,132,170,172,103,255,180,200,100, 50,252,242,203, 47, 16, 10,133, 16, 10,133,200,202,202, 66, 80,
+ 80,144,237, 94, 36, 18,217,254,175, 82,165, 74,185,120, 28,199, 53,101, 89, 22,249,249,249,224, 56,206,118,101,103,103,131, 82,
+ 10,137, 68, 2,142,123, 20,206,201,238,121,211, 50,202,177, 79, 64, 64, 0,126,254,249,103, 24,141,198, 39,158,171,213,106, 92,
+189,250,119,144, 17,150,101,209,172, 89, 51,134, 16,210,167, 44,162, 69,200, 35,167,155,163, 70,141, 2,203,178,143,197,179,180,
+191, 56,142,195,244,233,211, 97, 31,154,236,159,196,124,238,218,117, 25, 30,226, 41,165,201, 0, 74,180,209, 98,202, 2,141,244,
+ 83,190, 61,225,173,151, 11,167, 14,143,166,159, 12,126,133,126,252, 86, 59,250,106,155,122,191,177, 2, 1, 57,115,253, 33,130,
+220,128,213,227,154,132, 4,123, 41,174,214,245, 84,133,151,160, 26,181, 15, 40, 29, 32, 87,168,191,120,251,253,143,148,187,142,
+ 93,193,195,248,135, 79,144, 44, 0, 56,191,127, 53,146,147, 18,113, 49, 38, 1, 3,134,189,163, 84,171, 53, 95, 16, 66, 2, 74,
+194, 44, 46,110, 42,209,255, 38,247,109, 37,205, 55, 39, 33,207, 29, 96, 67,197, 16,202, 11, 48,233,181,250, 18,181, 74, 52,191,
+ 12, 21,174, 13, 83, 34, 22,239,159,119,240,160,141,100,181, 52, 24, 32,225, 56, 88, 56,206, 70,178,140, 22, 11,116, 70, 35,252,
+243,243,113,119,232, 80, 80,179, 25, 83,183,109,147, 75,196,226,253,142,164,211,110, 5,208, 85,173, 86, 31, 33,132,132, 59, 82,
+201,207,226,200,172,147,110, 60,194, 85, 42,213, 17, 66,200,171,207, 67, 58, 9, 33, 12, 33,100,246,240,225,195, 47,212,168, 81,
+227,112, 17,177,178, 62, 19,212,168, 81,227,224,240,225,195, 47, 17, 66,166, 19, 66, 24, 7, 49, 3, 3, 2, 2,230, 44, 89,178,
+ 68,126,251,246,109, 36, 38, 38,194,108, 54,163,127,255,254,224, 56, 14, 58,157, 14, 70,163, 17, 95,126,249,165,194,211,211,243,
+ 83, 66, 72,136, 35,121, 39,132,176,110,110,110,107,214,174, 93, 59,234,254,253,251,126,127,252,241, 7,115,229,202, 21,223,175,
+190,250,106,168,167,167,231,186,162,128,171, 78,149, 39, 33,132,241,247,247, 95,245,251,239,191,191,125,245,234,213,160,173, 91,
+183, 10, 79,159, 62,237,191,116,233,210, 17,254,254,254,235, 8, 33,108, 69,234,136, 16,210, 80, 46,151,119,156, 56,113, 34,127,
+234,212,169,196, 83,167, 78, 37, 46, 92,184, 16,173, 91,183,110, 57,107,214,172,168, 10, 98, 54, 82,169, 84, 29, 38, 78,156,200,
+ 31, 63,126, 60,233,204,153, 51, 9, 11, 22, 44, 96, 58,116,232,208,106,238,220,185,245,157,196,220,120,234,212,169,182,241,241,
+241,213, 19, 18, 18,170, 37, 36, 36, 84, 77, 72, 72,168,154,152,152, 24,146,156,156, 92, 37, 37, 37, 37, 56, 45, 45, 45,248,232,
+209,163,173, 0,108,120,222,250,209,127, 29,179,168, 45, 95,164,148, 66,171,213, 98,215,174, 93, 40,210, 94, 53,180, 39, 89,185,
+185,185, 72, 78, 78,182, 62, 19,252, 11,233, 4,199,113, 54, 34,117,224,192, 1, 12, 31, 62, 28, 90,173,214,246,158, 64, 32,176,
+253,111,253, 78,121,152, 86,205, 19,199,113, 56,115,230, 12, 70,143, 30,141,133, 11, 23, 98,195,134, 13,216,185,115, 39,180, 90,
+173,141,108, 89, 44,150,114, 49, 51, 50, 50,192,243,188,163,121, 68, 78, 78,142,195,245,110, 79,128, 4, 2,193, 19,164,200,122,
+ 57,211,150,158, 6,243,121,150,210, 60,194, 59, 34,182,198, 93,164,170,107,103,255, 48,162,170,223,167,243,199,247,145,129, 51,
+129,154,117,128,169, 16, 48,229,131, 55, 22,130,136,100,128, 89, 7,111,137, 22, 27,199, 70,168, 63,254, 57,246, 70, 45,111,117,
+244,141,244,220,189, 37,146, 10,129,104, 64,159, 33,239,121, 38,164,229, 34, 49, 53, 7, 44,243,247,188, 23,213,105, 8, 4, 44,
+131,179,251, 30, 41,174, 24,150, 69, 78,129, 1,217,249, 38,244, 30, 50,222,227,199,133,159, 13, 0,240,101, 89, 25,169, 71, 72,
+ 88,139, 0,143,158,181,107, 87, 97,110, 72, 98, 16,245,234, 9,112, 60, 64,143,191,142,134, 89, 62,108,228,126,113,207,122,132,
+204,185, 66,233,237,178,112, 36, 26,141,204,189,126,125,204, 12, 8, 64, 27,179, 25, 34, 74,241,114,106, 42, 46,143, 31, 15,195,
+150, 45, 96, 0,136,222,120, 3,237, 23, 45,194,177,128, 0,248,233,116,200,158, 48, 1,222,123,247, 66,164, 86,203,156, 41,124,
+145, 72,100, 90,177, 98, 69,192,136, 17, 35,142, 16, 66,218, 61,207,154, 45, 66, 72,184,135,135,199,145, 47,190,248,194,119,218,
+180,105,201,149,132,233,171, 80, 40, 54, 21, 20, 20,140,119,118, 69, 91, 68,156,102, 47, 91,182,108,204,168, 81,163, 52, 35, 70,
+140,160,119,239,222,213, 0,176,106, 71,188, 91,183,110, 93, 99,197,138, 21,126, 77,154, 52,121,111,244,232,209, 34, 66,200,212,
+242,180, 60, 74,165,114,236,138, 21, 43,188, 50, 50, 50,144,159,159,111, 27,100, 19, 18, 18, 32,147,201,108, 65,213,133, 66, 33,
+190,248,226, 11,207,177, 99,199,142, 7, 48,190,188,244, 74, 36,146, 33,223,127,255,125,205,206,157, 59, 11,226,226,226,192, 48,
+ 12, 36, 18, 9,222,122,235, 45, 97, 97, 97, 97,200,204,153, 51, 71, 1,248,222,153, 50, 16, 10,133, 3,150, 47, 95, 30,222,178,
+101, 75, 65, 76, 76, 12, 90,180,104,129,179,103,207,226,141, 55,222, 16,230,229,229, 85,155, 52,105,210,240,210, 86, 88,101,105,
+157,228,114,121,221, 63,254,248, 35, 62, 56, 56,216, 54,176, 84,171, 86,141,139,142,142,214,198,196,196, 68,252,249,231,159,153,
+ 45, 90,180,120,232, 4,102,160, 92, 46,143,220,189,123,119,242,204,153, 51, 59, 46, 91,182,172, 59, 0, 52,109,218,116,251,172,
+ 89,179, 14,107,181,218, 58,199,143, 31,215,182,110,221, 58,193, 65,200, 0,127,127,127,110,220,184,113,202,178, 62,180,114,229,
+202,108, 0, 85, 8, 33,213,139, 2,109,187,228, 31, 16, 74,169,133, 16, 18, 69, 8,185,184,107,215, 46, 52,107,214, 12,187,118,
+237, 66,116,116,244, 69,123, 50,112,245,234, 85,180,105,211, 6,120, 20, 72,254, 95,177,213,226, 56, 14, 2,129, 0, 9, 9, 9,
+ 88,185,114, 37,230,206,157,139,176,176, 48,152,205,230, 39,200, 86, 17, 33,114, 72, 5, 99,177, 88,112,238,220, 57,172, 95,183,
+ 14, 83, 63,253, 20, 42,149, 10, 0, 96, 50,153,160,205,202,130, 84, 42,181,145,177,114,202,114,211,157, 59,119,198, 7, 5, 5,
+ 61,182,101,104,125, 45, 26,179,192,243, 60, 44, 22, 11,244,122, 61, 22, 46, 92,104,161,148,110, 42,167, 79,218, 72,209,248,241,
+227, 97, 48,252, 29,135,188,126,145, 77,114,213,170, 85,209,160, 65, 3,219, 61,195, 48,212, 81,204, 31, 95,170, 11,157,221,167,
+ 35,166, 47, 0, 0, 4, 5, 5, 33, 34, 34, 2,254,254,254,165, 98,150,196, 69,254,109, 41,110,147, 85, 33, 27,173,210, 34,101,
+223,184,159,242,229,136, 73, 11, 22, 40,164,172,240,253, 30,245, 80, 69, 35, 2,100, 30, 16,181,249, 24, 68,243,104, 33, 79,181,
+247,128,253, 31,227,171,158, 90,102,212, 79,250,223,106,120,120,120,223,213,106,159, 48,194, 19,138,164,237, 67,107,134,147,135,
+201, 90, 8, 4, 2, 40,220,188,240, 82,143, 15,192,178, 12,148, 26, 47, 16, 78,247, 55, 35,102, 88, 8, 88, 1,180,121, 58, 84,
+173, 94,147,145, 72,101,237,203, 35, 90,106, 55,225,247, 19,251,189, 36,205,180, 36, 64, 86, 69, 10,206, 58,157, 6,136,193,120,
+230,225,195, 46, 97,178, 81,219,175,124, 15,160,131, 35, 5,195, 90, 44,240, 97, 89,152, 40,197,229,241,227, 17,181,124, 57, 46,
+ 90,137,225,242,229,184, 56,106, 20, 60,132, 66, 72, 24, 6,212,108,126, 98, 79,223,193, 9, 8, 61,122,244, 64, 70, 70,134,239,
+167,159,126, 90, 97,178, 37,147,201,214, 19, 66,186, 10,133, 66, 19, 33, 4, 12,195,216,130,128, 91,255, 55,153, 76, 34,150,101,
+119,103,100,100, 56,189,229, 71, 8, 9,119,119,119, 63,114,234,212, 41, 95,133, 66,129,233,211,167, 87, 10,201, 82,169, 84,167,
+135, 15, 31, 94,101,253,250,245,123, 9, 33, 93, 28, 37, 91,197, 73,214,242,229,203,179, 87,174, 92,249,163,253, 22, 33,165, 52,
+153, 16,178,170, 73,147, 38,111,143, 26, 53, 74, 3, 96,204,232,209,163, 81, 30,217,146, 72, 36,237, 66, 67, 67, 31, 91,213, 74,
+ 36, 18, 0,128, 66,161,128,155,155, 27, 68, 34, 17, 12, 6, 3,162,162,162,136, 88, 44,110,229, 72,154, 85, 42, 85,215,158, 61,
+123, 10, 78,158, 60,137,148,148, 20,184,185,185, 65,161, 80,128,227, 56,140, 28, 57, 82,180,104,209,162, 87,157, 37, 90,193,193,
+193,221, 59,118,236, 40,184,118,237, 26,238,223,191, 15,131,193,128, 91,183,110, 65,173, 86, 99,208,160, 65,162,249,243,231,191,
+238, 44,209, 2, 80,119,212,168, 81,169,246, 36,203, 42, 10,133,130,132,135,135,107, 61, 61, 61, 27, 1,120,232, 12,230, 59,239,
+188,147, 54,111,222,188, 54, 7, 15, 30,252,216,250,230,193,131, 7, 39, 1,192, 55,223,124,115,220,219,219,187, 17, 0, 71,137,
+ 22, 40,165,252,155,111,190,249, 64, 44, 22, 67, 40, 20, 66, 44, 22, 63,118,137, 68, 34, 48, 12,163,178,118,231,255, 42,169, 33,
+132, 52, 1,240, 53, 30,157,200,250,148, 82,122,230, 57, 33, 91,151, 8, 33, 81,209,209,209, 54,178,181,103,207, 30,116,233,210,
+ 5,217,217,217,184,118,237,154, 61,201,250,183,108,180,192,243, 60,132, 66, 33, 22, 44, 88, 0,147,201,132,159,126,250, 9,155,
+ 55,111,126,108, 12, 85,171,213, 88,188,120,177, 83,219, 92, 28,199, 97,205,154, 53,248,120,210, 36, 27,201, 42, 90, 92,195,207,
+215, 23,158, 94, 94,136,141,141, 45,151,104,101,101,101,125,190, 99,199, 14,148,101, 12,191, 99,199, 14,219,255,246,198,240, 14,
+205,115, 44, 11,131,193,128,151, 95,254, 59, 84,236, 59,239,188, 99,251, 95,171,213,130,101, 89,107, 89, 16, 71, 49,117, 20,232,
+ 33,253,251,189,174, 31,126,248,152,134,174, 52,204,210,184,200,243,168,221, 42,225,212, 97, 20,165,244, 98,145,137, 68, 52,128,
+ 93, 69,219,137,101,219,104,221, 78, 43, 88, 34, 32,201, 13,230,141,123,101, 72, 21, 31, 55,208,252, 84,136, 58,124,142,191,210,
+101, 88,176,112, 55, 0,224,163,183, 26,163,126,167,217, 48,174,126, 5,227, 91,176,226,129, 9,134,137, 0,166, 61,217,241,248,
+200,160,192, 0,252,117,247, 42, 4, 44, 11,177,155, 23,220, 60,124,193, 91,140,200, 73,187,143, 35, 91,191, 3, 0, 44, 91,179,
+ 9, 12,195, 64, 32, 96, 97, 48,114, 8,171, 18, 0,158,231, 35,203, 74,103,109, 66, 94,234, 21,238,223, 44, 56, 68, 67,174,185,
+223, 71,184,143,231,227, 31,104, 40, 65, 88,146,146,180, 80,202,154,214, 38,228,165,235,148,158, 42, 87, 3,193, 48, 96, 8,129,
+ 92, 36,130, 97,203, 22, 92, 44, 34, 88, 0,112,113,212, 40, 48,191,253, 6,149, 68, 2,150, 16, 8,138, 84,208, 21,233,232, 0,
+ 16, 17, 17,129,101,203,150,249,142, 29, 59,182, 66,100, 75,175,215,207, 81,171,213, 29, 87,173, 90,229,219,179,103,207, 39,158,
+223,189,123, 23,109,218,180, 73, 77, 73, 73,153,243, 52, 36, 75,163,209, 32, 62, 62,254,169,247,213,173, 36,235,192,129, 3, 33,
+ 65, 65, 65,136,138,138,242,254,232,163,143,156, 33, 91,211,236, 73,214,232,209,163,175, 0,240, 33,132, 20, 39, 42,164,232, 89,
+ 61, 59,178,149, 3, 96,126, 25, 43,209, 16,133, 66,129,180,180, 52, 12, 25, 50, 4,183,111,255,173, 0, 13, 8, 8,176,173,244,
+ 98, 99, 99,225,237,237, 13, 66,136,143, 35,121,246,246,246,246, 53, 26,141, 24, 54,108, 24,226,227,255, 54,103, 12, 12, 12,180,
+150,169,151,179,229,232,235,235,235,171,211,233,208,186,117,107,232,245,122, 0, 64,223,190,125, 33, 20, 10,145,150,150, 6,161,
+ 80,232, 85,129,234,241,138,142,142, 46,213,181,138, 90,173, 54,185,187,187,215,114, 18,211,243,245,215, 95, 79, 92,190,124,249,
+ 19, 7, 91,206,158, 61,219,205,195,195,227,160,135,135, 71,184,147,152,188, 61,169, 18,137, 68,143, 17, 45,161, 80, 8,134, 97,
+120,252,247,229,127, 0,172,167,224,126, 0,208,224, 57,210,108,217,200,214,158, 61,123, 80,167, 78, 29,100,101,101, 33, 38, 38,
+230, 95, 39, 89,118,196, 4, 2,129,192,182, 72,150, 74,165,136,138,138,178,145, 44, 66, 8, 10, 11, 11, 33, 16, 8,172,227,181,
+ 67,131, 95,118,118, 54,252,253,252,160, 82,169, 80, 51, 44, 12,119,138,198, 17,235,255, 18,137, 4,132, 16, 88, 44,150,242,202,
+ 48, 15,143,108,173, 62,168,236,234,177,146,162, 50, 85,199, 1, 1,224,121,222, 58,230,211,202,192,244,242,242, 66,126,126,190,
+163,152,207,165,148,162,209,138, 2,112, 17, 64, 52,165,116,121,145, 97,252, 99,238, 29,218, 2, 56, 2,187, 35,149,132, 16,166,
+150,175,114,229,188,177, 29,135,188, 82,199, 11,186,244,251,144,170,188, 64, 52, 85,177, 96,225,110, 92,187,151, 9, 0, 88,176,
+225, 60,126,158,217, 21,144,121, 32,194, 45, 3,126, 42, 65,207,146,136, 22, 1, 37, 60,165, 16,176, 76,209,222, 45, 11,150,101,
+160, 77, 79,198,162,207,199, 20,145,172,205,216,117, 60, 6, 65,161,117,254,222,199, 37, 4,160,101, 55,110,111, 55,209,242,177,
+189,154,203, 82, 73, 50, 52, 1,114, 72,165,197,248,163,187, 8,164, 42,131,113,237,130,228,231,118,232,151, 3, 40,119,162,144,
+ 50,204, 35,227,119, 66, 74, 52,100, 99,138,158,177,132, 60,242,254,202, 59, 63,166, 91, 9,139, 82,169,132,175,175, 47,230,206,
+157,235, 59,121,242,228,159,224,100, 0,106, 74,233, 45, 66, 72,187,145, 35, 71, 30,201,204,204,244,141,136,136,128, 82,169,132,
+ 82,169, 68,106,106, 42,122,247,238,157,154,146,146, 82, 81,109,217,186,225,195,135,251,138, 68, 34,220,189,123, 23, 30, 30, 30,
+ 54,130, 88, 81,146,165, 86,171, 79, 31, 60,120, 48,164, 70,141, 26,184,121,243, 38,106,213,170,133,141, 27, 55,122,247,239,223,
+223, 33,178, 37,147,201,122, 20, 17, 39,140, 26, 53, 74, 51,106,212,168,182, 0,218,150,247,219,163, 70,141,210,124,240,193, 7,
+175,151, 69,180,132, 66, 97,188, 86,171,245,147,201,100,216,186,117, 43,148, 74, 37,228,114, 57, 2, 2, 2,160,213,106, 33,151,
+203, 65, 41,133,217,108,182, 14, 22,153,142,228, 59, 61, 61, 61,149,227,184,224,189,123,247, 34, 61,253,111,223,122, 33, 33, 33,
+200,201,201, 1,199,113, 25,206,150,101, 82, 82, 82, 42, 33, 36,248,175,191,254, 66, 92, 92, 28,186,116,233,130,223,126,251, 13,
+141, 27, 55, 6, 0, 24,141,198,138, 56,241,227, 88,150,165,101,212, 31, 1,224, 94,153,152, 69,147,151, 83,152, 60,207,243, 86,
+146,101,255,106, 79,190,202,249,205,255,138,184,217,175, 19,158,215, 68,118,233,210, 5, 90,173, 22, 74,165,242,185,178,207,177,
+106,180,102,204,152,129, 49, 99,198,192,215,215, 23, 31,127,252, 49, 4, 2,129,237,178,223, 25,112, 70,124,124,125,203,124,110,
+ 53,136, 47,103,188, 84,185,185,185,205, 96, 24,166, 15,235, 64,193,113, 28,199,241, 60,191, 41, 39, 39,167, 76,247, 14, 86,195,
+117, 71,234,194,190, 12,202, 73,235, 83, 99,150,196, 69,158, 7, 41,126,218,176, 36,141, 22,254, 62,117,248, 68, 40, 32,107, 46,
+143, 20,169,236,142,216,147,172, 47,198,180, 31,242, 74, 29,119,108, 63,116, 6, 34, 83, 54, 96,204, 43,163,134,205, 32, 34, 5,
+124,221,132, 65, 37, 86, 2,195,222, 76, 72, 76,130,167,187,178,136,100, 21, 93, 12,131,250,117, 30, 45,102,119, 29,143, 65, 80,
+245, 58, 16,176, 44, 4, 44, 11,165, 76,130,212,148,100, 8, 4,204,205,210,126,182,158,128,244,234, 21, 30, 92,213,221, 83,136,
+ 12,111, 35,252,125,229, 37,127,176,145, 10, 65,254, 98,116,246,148,134,212, 19,144, 94,229, 16, 23, 27,209, 50, 89, 44, 16,189,
+241,134,109,187,240,226,168, 81,136, 90,190, 28, 92,247,238, 40, 48,153, 30, 83, 21, 59, 43,214, 6,105, 37, 68,211,166, 77, 75,
+205,204,204, 28, 80,193,213,227,173,172,172,172,118,159,126,250,105,106, 70, 70, 6,228,114, 57,146,147,147,159,138,100, 1,128,
+ 78,167, 27,180,124,249,242,212, 35, 71,142, 64,169, 84, 66,165, 82, 85,152,104, 89, 53, 89,159,127,254,121,149,224,224, 96,196,
+198,198,194,205,205, 13,158,158,158,168, 95,191, 62, 78,158, 60,233, 29, 28, 28,188,183,200, 96,182,172, 52,253,190,124,249,242,
+108, 0, 88,190,124,121, 54, 33,228, 40, 33,100, 41, 33,228,135, 98,215, 82, 66,200, 81,251,207,234,116,186,109,101, 97, 27,141,
+198,163, 49, 49, 49, 84, 46,151,131,101, 89,152, 76, 38, 72,165, 82, 91,125,229,230,230, 66,167,123,180,205,125,225,194, 5,152,
+205,230, 19,142,228, 61, 47, 47,111,207,234,213,171,205,193,193,193,168, 87,175, 30, 26, 53,106,132, 22, 45, 90, 32, 36, 36, 4,
+ 51,102,204, 48, 22, 20, 20,236,169, 0,209,218,181,113,227, 70,115,112,112, 48, 26, 53,106, 4,137, 68,130,250,245,235, 35, 32,
+ 32, 0,115,231,206, 53,230,228,228,236,169, 64, 53, 61,188,122,245, 42, 91, 6,201, 85, 3, 72,117, 18, 51,254,220,185,115,108,
+243,230,205,183, 23,127,208,180,105,211,237, 74,165,210, 13,128,179,118,127,212,158, 92, 73, 36, 18,219,101,125, 95, 32, 16,252,
+127,208,104,141, 7,112, 5, 64, 44,128,143,159,167,132,217, 27,190,103,102,102, 34, 38, 38, 6, 23, 46, 92, 64,243,230,205,113,
+226,196, 9,160,200, 64,254, 95, 76, 31, 40,165, 16, 10,133,136,136,136,192, 7, 31,124,128,221,187,119,227,214,173, 91, 48,155,
+205, 54, 34,100,181,201,116, 70,163, 37, 18,137,224,235,235, 11,179,217,108,211,102, 1,192,157,219,183, 33, 16, 8,192,243, 60,
+140, 70, 99,185, 26, 45, 55, 55,183, 25, 43, 86,172,120, 47, 35, 35,195, 63, 61, 61,221,199,254, 74, 77, 77,245, 73, 78, 78,246,
+ 73, 76, 76,244,137,143,143,247,121,240,224,129,207,253,251,247,253,191,252,242,203,247,220,220,220,102, 56, 58, 7,213,175, 95,
+ 31,239,188,243,142,237, 90,178,100,137,237, 58,114,228,136,211,198,235, 44,203, 34, 98,250, 2,116, 77,167,182,107,183, 55,177,
+ 93,215, 62, 26, 93, 22,230, 99, 92,228,185,105,203, 69,167, 13,237, 3, 75,151, 48, 7, 39, 83, 74,151, 91,183, 11,237,157,151,
+ 22, 55,134, 7, 0, 68,250,201,103,127, 49,178,205,144,151,107,185,225,247, 67,231, 49,115,219,189,155, 97, 67,188, 35,106,184,
+167,131, 79,143,193, 71,111, 53,198,130, 13,231, 1, 60,218, 58,228,211,174,129,102,197,130,170,130,113, 95,155, 81,226,182,131,
+197,168, 63,124,239,238,237,246, 17,117,155, 48, 41, 25,249,143, 29,255,140,106,215, 27,132, 16, 4, 86,175, 3, 86, 32, 0,203,
+ 50, 16,176, 44, 52,106, 41, 98,254,250,139, 55,232,116,135, 75,194,108, 71,136,192, 79, 41, 94,242, 86,231,250,210, 36,113, 26,
+188,253, 21, 16, 9, 31,145, 0,122,175,119,177, 25, 66, 0,212, 85, 97,104,162,167,236,112,170,126, 73, 59, 66,182, 31, 41,197,
+ 0,147,231,121, 40, 37, 18,232, 13, 6,232, 44, 22,180, 91,180,200,182, 93,200, 16,130, 75, 0,234, 45, 90,132, 83, 91,182, 64,
+ 45, 22, 3, 18,137,195,167, 66, 74,210,104,165,166,166,162,111,223,190, 79, 69,136,236, 53, 91, 99,199,142, 61, 50,119,238, 92,
+223,105,211,166, 85, 26,230,199, 31,127,124,100,195,134, 13,190,213,170, 85,171,112, 99, 85, 42,149,147,120,158,215,204,159, 63,
+ 63,229,171,175,190, 66,113,123,178, 34,162, 35,209,104, 52, 11, 0,180, 47, 3,106,230,232,209,163, 69, 0,198, 20,105,182,234,
+141, 30, 61,250, 20,165,116,106,177,242,157,190,108,217,178,190,118, 91,140, 75, 1, 44, 42, 43,141,185,185,185, 63,124,240,193,
+ 7,195,142, 29, 59,230, 37,149, 74, 65, 8,129, 72, 36, 66,205,154, 53,109,167,104,132, 66, 33, 40,165,248,240,195, 15, 51,210,
+210,210, 28,114,239, 96, 48, 24,214,204,156, 57,179,189, 78,167, 11, 25, 58,116,168,200,221,221, 29,169,169,169,248,250,235,175,
+141,107,214,172,137, 47, 40, 40,112,214,150, 10,102,179,121,205,103,159,125,214, 46, 63, 63,191,250,136, 17, 35, 68, 57, 57, 57,
+208,233,116,152, 56,113,162,113,213,170, 85, 9, 58,157,206,105,135,191, 45, 90,180,184,251,224,193,131, 86,133,133,133, 89,114,
+185,188,184,182,143, 40, 20,138, 38, 0,214, 57,131, 25, 21, 21, 21,251,240,225,195,230,179,103,207, 62,106, 54,155,133,103,207,
+158,237,110, 37, 89,223,126,251,237, 17,169, 84,218, 17,206, 27,237,243, 18,137,228, 49, 13, 86,241,255, 5, 2,193,127, 94,163,
+ 69, 41, 61,130, 71, 46, 51,158, 43, 41, 78,178,174, 93,187,134,246,237, 31,117,233, 19, 39, 78,160,101,203,150, 56,113,226, 4,
+ 90,181,106,245,175,186,119,176, 18, 45,129, 64,128,254,253,251,163, 83,167, 78,168, 82,165,202, 99,167, 13,173,255, 59, 67, 54,
+ 44, 22, 11,234,214,173, 11,131,209, 8,145, 72,100,219,154, 20, 8, 4,240,246,241,193,221,187,119, 29,210,104, 49, 12,211,167,
+ 71,143, 30,204,245,235,215,209,175, 95, 63,172, 95,191,190,212,207, 14, 28, 56, 16,191,252,242, 11,122,244,232,193, 76,153, 50,
+165, 76,247, 14, 86, 35,116, 71,242,100,157,167,203,211,232, 85, 22,166, 61, 23,121,222,196,206,181, 67, 73,109,126, 84, 9,237,
+107,249, 99, 68,203,206, 73, 24,170,123,203,135,118,170, 41,192,239,135,207, 99,230,239, 15,215,112,148,110,221,122, 49,107,231,
+199, 45, 1,211,166,183, 80,191,247,186, 71,219,133, 0,248,180,107, 48,109, 26, 8, 34,247,194,241, 68, 33,114,116,166, 93, 37,
+ 55, 60,211,250,223,126,250,238,131,230,223,183,242,246,247,113,131, 54, 71,103, 35, 91, 23,143,108, 6, 0,244, 26, 61, 7, 2,
+246,209,150,162, 90, 41,133, 76,196, 98,203,218,111, 50, 76, 38,125,137,173, 43, 79,200,140,153,242, 82, 77, 55,177,194,140, 92,
+ 63,138, 58,222,127, 31,250, 35,213, 55, 63, 73,184, 26,186,195,235, 90, 22,222,170,161, 84,127,115, 61,123, 12,128, 37, 79, 76,
+136,217,217,186,236,191,254,146,117, 89,177, 2,103, 7, 13, 66, 32,199,225,104, 64, 0, 60,132, 66,184, 73, 36, 96, 8,129,110,
+231, 78,156,218,186, 21,190, 18, 9,160, 82,193, 50,107, 22, 12, 49, 49, 48,231,229,233,156, 37, 90,119,238,220,121,106,173, 83,
+ 73,196,104,242,228,201, 63,101,102,102, 14,168, 76,204, 65,131, 6, 29, 57,116,232,144,111, 69,113,242,242,242, 38, 0,152, 80,
+ 9,233,225, 9, 33, 83,139, 28,227,141, 25, 53,106,148,230,220,185,115,195, 8, 33,223, 91, 87, 19,132, 16,159,225,195,135,143,
+ 44, 70,178,202, 61,117, 72, 41,125,168, 84, 42,103, 77,152, 48, 97,206, 87, 95,125,165,180, 26,190, 95,190,124, 25, 22,139, 5,
+ 66,161, 16, 28,199, 97,248,240,225,249,153,153,153, 11, 74,243,232, 92, 2,174,133, 16, 50,112,206,156, 57,195,191,249,230,155,
+215, 88,150,245,230, 56, 46, 93,167,211,237,213,233,116,203, 43,114,234,170,168, 28, 6, 79,155, 54,109,240,194,133, 11,123, 48,
+ 12,227, 99,177, 88, 50,242,242,242,118,232,116,186, 10,249,230, 58,117,234, 84,250,247,223,127,127, 47, 61, 61, 61, 50, 40, 40,
+ 40, 71,169, 84, 26,141, 70, 35, 43,147,201,212, 10,133, 34, 10,192,159, 0,110, 56,131,121,225,194,133,148,165, 75,151,198, 25,
+ 12,134,136,165, 75,151, 30, 87,171,213,135, 8, 33, 68, 36, 18,185,203,100,178,246, 0,142, 2,184,227, 12, 38,195, 48,188,189,
+246,170,184,125,150, 88, 44,254,255, 98,163,245,220,137,189,123,135,140,140, 12, 92,191,126,221, 74,178,162, 0,160, 85,171, 86,
+ 23,173,100,235,194,133, 11,104,212,168,209, 69, 66,136,240,159, 62,121,104,175,209,178, 18,170, 42, 85,170,216,238,237, 47, 59,
+ 27, 45,135,132,227, 56,136, 68, 34, 8, 4, 2,248, 7, 4,216,126,139, 82,138,187,119,239, 66,171,213, 58, 68,180, 88,150,101,
+ 9, 33,232,215,175,159, 67,191,251,230,155,111,226,232,209,163, 96, 29,100,133, 44,203,162,106,213,170, 14,237,188,192, 65,123,
+ 42,150,101, 17, 20, 20, 84, 97, 76,123, 46,242, 60, 17,172,146,254, 47,137, 84,149, 36, 37, 26,195,199,166,233,102, 15,252,250,
+228,148, 27, 41,250,173, 49,169,133, 31, 0,160,155,174,201,247,215,247,102, 95,121, 37, 60, 1,134,229,173, 64,212,143,156,183,
+209,252,100, 16,133, 47, 18,248, 64, 76,223,126, 51,197, 2, 50,191,148, 68, 36,137,164,242,169,107, 87,124,251,213,240,177, 31,
+ 42,175,197,166, 34, 39,223, 0,150,101,236, 7, 79, 8, 4, 44,212, 10, 41,130,253,220,176,225,199,175,243,242,114,179,167,149,
+ 22,247,176,138, 74, 52,186, 99,147, 26, 18,145,127, 1, 34,234,245, 5, 43,253,219,201, 44, 77, 41,101,119,176,229,126,188,250,
+176, 64,250,219,195,130,209, 37, 18, 45,163,241,149, 79, 59,119,222, 55,115,247,110,121,211, 53,107, 16, 59,124, 56, 2,116, 58,
+ 72,138,182, 18, 25, 66,160, 20,137,160, 20,137, 30,145,172,133, 11,161,179, 88,176,104,208,160, 66,131,209,216,217, 73,141,132,
+168,109,219,182,149, 70,178,236,137, 17,156,180,243,114,148,108,117,234,212,233, 8,165, 84,242, 28,172,228,173,100,203,116,238,
+220,185,145,199,143, 31,143,197,227,129, 69,179,143, 31, 63, 30, 59, 98,196, 8,178,114,229,202, 85, 0, 62,115,212,129,103,126,
+126,254,183, 26,141, 6,109,218,180,249,108,222,188,121,158,141, 27, 55,134,143,143, 15,242,242,242,112,225,194, 5,140, 31, 63,
+ 94,155,155,155, 59, 47, 43, 43,235, 43, 39,211,204, 21,105,110,150, 87,102, 57, 0, 88, 93,116, 85,138,188,253,246,219,151, 99,
+ 99, 99, 51,189,189,189,155,137, 68,162,122,120,100, 7,148, 2, 96,149,179,132,200, 42, 99,198,140,249, 43, 54, 54, 54, 35, 48,
+ 48,176,121, 17,166, 6, 64, 34,128, 21, 21,192, 76, 58,127,254,124, 80,147, 38, 77, 24,161, 80, 72, 89,150,133, 80, 40,164, 2,
+129,128, 22,217,213, 80, 0,216,177, 99,135, 4,128, 22, 46,249,167,251,166,205,189, 67,114,114,178,141,100,217, 57, 44,141,106,
+213,170,213,197, 34,146,101,125,102,249,151,210,138,153, 51,103, 98,217,178,101, 40,207,163,121,209,233, 62, 82, 30,158, 85,163,
+197,113, 28, 76, 38, 19,174, 93,187,102,243,217,101,221, 46,180,186,118,176, 88, 44,101,158, 86,231, 56,142, 51, 26,141,248,245,
+215, 95, 29, 34, 91, 63,255,252, 51,244,122, 61,184,114, 24,156,189, 43,134, 6, 13, 26, 64,171,213,218, 14,251, 68, 69,253,237,
+ 42,207,100, 50, 57, 69, 92,173,152, 17, 17, 17,200,200,200,128,151,215,163,243, 56,193,131,254, 86,246, 88, 10,254,155,254,131,
+203,210,104, 17, 71, 93, 18, 52,208,104,220, 12, 98,243,182,110,117, 36,237,250, 68,185,161,186,159, 10, 66,145, 20, 73,185, 22,
+ 28,188,145,139, 21, 71, 82,226,117,102,238,181, 91,105, 5, 87,203,194,145, 42,220,246, 54,126,169, 83,203, 65, 35,199, 43,242,
+ 13, 28,226,226, 30, 32, 61, 45, 25, 12, 97,224, 31, 24,132,144,144,170,144,137, 25,172, 95,254, 85,193,197, 83,135, 78,230,229,
+106,187,148,134,245,154, 70,124,106,225, 27, 45,155,135,134,170, 8, 44,102,128, 51, 3, 22, 51,192, 23,189, 90,223,227, 31,111,
+115,215,175,103,211, 41,151,180,167,119,102, 27, 75,140, 89,213,135,144,150, 26, 15,143,125,211,119,236,144,243, 38, 19, 50, 39,
+ 76,128,220, 98,129,180,104, 85, 2, 0,144, 72, 96,153, 53,235, 17,201, 26, 56,176, 48, 39, 59,219,233, 16, 60,222,222,222,171,
+ 51, 50, 50, 94, 56,207,240,158,158,158,159, 86,196, 77,196, 51, 76,147, 15,128,108, 74,169,169,132,149,181,183, 85,203, 85, 1,
+220,170,222,222,222, 83, 24,134,105, 65, 41,245,100, 24, 38,139,231,249, 63,211,210,210,190,164,148,222,117, 77,169,255, 90,125,
+ 91, 61,195,151,183,143,157, 6,224,125, 0,121,148,210, 56, 87,201,253,227,245,212, 16,143, 78, 97,149, 26,130, 7,255,226,201,
+ 67, 79, 79,207, 51,251,246,237,107, 92,189,122,117,198,222,140,193,234, 43,207,186,189, 37, 16, 60,210, 71, 28, 59,118,204,210,
+175, 95,191, 63, 83, 82, 82,218,148,134,169, 86,171,247, 95,185,114,229,229,156,156,156, 39, 8,149,189,167,120,235,125, 65, 65,
+ 1,198,142, 29,123, 32, 55, 55,183,196, 16, 60, 26,141,102,225, 87, 95,125,245, 94,175, 94,189, 24,171, 59, 10,251,203, 26, 46,
+200,122,153, 76, 38,172, 91,183,142,255,230,155,111, 22,103,103,103,151,186,117, 24, 16, 16, 16,159,148,148, 20,100,117,181,224,
+136, 83,209,170, 85,171, 38,199,197,197, 5,252,147,152, 47, 42,225, 42,174,221, 34,206,248,126, 34,132,144, 8, 31, 69, 95, 10,
+244, 97,192,215,101, 8, 17, 91, 40,110,129, 98,191, 92, 80,248,253,133, 36,234,208,214,153, 72, 46, 31,167, 82,186,127,222,107,
+192, 59,158, 85, 67,195,136,175,127, 32, 8, 24,164,166, 36,226,193,189,219,116,219, 79,223,101, 22,228,106,103, 20, 22,230,127,
+ 87, 22, 78,109, 66, 66,171,169, 69,155,196, 28,194, 97,205, 71,177,248, 84, 79, 48, 76, 0, 38, 33,115, 51, 46,207,220,247,122,
+ 25,219, 62, 86,178, 53,117,219, 54,185, 56, 60,252, 9, 71,113, 60,207,195, 16, 19,131, 69,131, 6, 85,136,100,185,196, 37, 46,
+121,234, 1,173, 58,202,247,145,101, 6,144,240,111, 6, 47,254,127, 94, 71,207,109, 80,105, 66,136,194,195,195,227, 16,203,178,
+ 33, 86,141,140,189,205, 80, 9, 1,165,227, 82, 83, 83, 59, 82, 74, 11,203,192, 12, 85,169, 84,223,113, 28,215,212,145,160,210,
+ 44,203,158,205,203,203, 27, 87, 86, 80,233,103,113,234,208,203,203,235,238,131, 7, 15, 66,173,167,168,237,231,202,226,229, 0,
+ 0,119,238,220, 65,219,182,109, 31, 36, 39, 39, 87,253, 39, 49,159, 87, 41,197,143,214,211,107,180,158, 65, 35, 15, 16, 73,148,
+131,197, 50,105, 7,222,108,137, 0, 1, 4, 66,225, 77,163, 94,119,216,160,203, 95, 91,218,118,225, 63, 41,125, 8,105, 41, 17,
+139,247,139,212,106, 89, 73,229,100,206,203,211, 25,140,198, 87, 92, 36,203, 37, 46,113,137, 75, 92,242, 2, 17,224,112, 15, 15,
+143,125, 66,161, 80, 98, 79, 38,139,255,111, 21,139,197,162, 79, 79, 79,239, 82,214,238,203,179,192,252,207,148,183,179, 68,107,
+215,174, 93,212, 81,239,173,132,144, 78,142,196,172,178, 51,124, 43,215,119,198,191,141,249, 12,243, 94,174, 87, 92, 39, 48,219,
+226,209,241,216, 25,209,209,209,211, 95,128,116, 86,102, 29, 85, 42,166,181,206, 29,197,117, 6,211,209, 54,229,100, 58, 29,106,
+247,207, 3,166, 35,125,169,130,233, 44,179,141, 86,176,222,203,236, 75,207, 81, 58, 43,179,142, 42, 5,179,120,251,113, 4,215,
+ 89, 76, 71,250, 82, 5,210, 89,110,187,127, 94, 48,159,118, 12, 41, 35,157,165,182, 81, 71,219, 82, 41,117, 95,238,220,244,188,
+106,178, 0,192,234, 79,171,184, 70,171, 52,131,120,129,179, 36,235, 89, 36,222,126,210,129,131,126, 74,254, 13,204,138, 16, 46,
+103,210, 90,137,114,164,178, 49,139,149,103,101,201,244,162, 1,253, 40, 28,112, 56,234, 76,222, 43,163,222,139,229,181, 82,112,
+237, 49, 43,171, 44, 75, 26, 20, 43, 51,157,207, 2,179,178,250, 82,113,204,202,104,247, 37,213,251, 51,172,163,202, 74,103,165,
+244,165,103,209,230, 75,104, 63, 79,141, 91, 28,179, 50,250, 82,113,204,202,104,247,255, 4,102,101,244,165,146, 48, 43,163,221,
+151, 86,247, 47,170,102,202,186, 93, 88, 68,184, 72, 9,228,243,177,237, 67, 43,241, 98, 42, 82,104,207, 66,158, 69, 32,201,202,
+ 38, 68,207,138,108,238,218,181,139, 22, 49,253,231, 30,179,146,235,104,122, 17,102,101,174,108,218, 85, 86, 29, 61,139,246,110,
+143, 89, 89,248,197,113, 42,163,158, 74,194,124,218,244,150,146,206, 74,207,251,211,182,251,127, 10,179,146,235,168, 82,250, 82,
+ 49,204,118,149,188, 24,104,103,119, 63,189, 50, 49, 43,171, 47,149,144,206,167,174,167,146, 48,159, 54,189,165,164,179,210,243,
+ 94, 25,115,200,179,194,253,183, 52, 90, 55,162, 8,165, 76,201,109,162,200, 97,169,237,170,144, 70,235, 89,146,172,103, 53,169,
+ 85, 38,246,179,208,234, 60, 43,205, 91,101,105,117, 74,192, 61, 90,137,112, 71, 42, 59,157, 69,233, 35,207,179,211, 59, 87, 95,
+114,245,165,255, 79,125,169,164,118, 19, 29, 29, 61,125,215,174, 93,159, 63, 79,237,188, 56,102,101, 17,162, 18,242,254, 84,125,
+169,248,119, 43,163, 47,149,131, 73,158, 69,254, 43,187, 63,253,147, 26,173,210, 72, 86,105,207, 4,207, 75, 6,172,141,164,146,
+ 87, 38,168,100, 13,204, 51,203,119, 37,167,179,221,179,208, 16, 62, 3,169,244,116, 22,173,148, 63,127, 6,121,127, 81,202,212,
+213,151, 92,125,233,185,235, 75,197,218,100,187, 74,212, 20, 85,170,230,185, 56,102,101,252,134, 61, 70,101,181,209,103,157,247,
+202,236, 75,207,162,238, 95, 52,249,191, 1, 0, 27, 20,197,251,159,141,187,244, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130,
0};
diff --git a/source/blender/editors/datafiles/prvicons.c b/source/blender/editors/datafiles/prvicons.c
index 2c606230345..5d6b63c1d80 100644
--- a/source/blender/editors/datafiles/prvicons.c
+++ b/source/blender/editors/datafiles/prvicons.c
@@ -1,409 +1,477 @@
/* DataToC output of file <prvicons> */
-int datatoc_prvicons_size= 12878;
+int datatoc_prvicons_size= 15052;
char datatoc_prvicons[]= {
-137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72,
- 68, 82, 0, 0, 0,192, 0, 0, 0,192, 8, 6, 0, 0, 0, 82,220,108, 7, 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,237,125,121,124, 20, 85,186,246, 83, 85,221,213, 91, 58, 59, 36, 16, 32, 48, 64,192,128, 65, 68, 17,
- 66, 8,171, 10, 40,174, 51, 46, 31,200,111,116,188, 92,113, 70,199,141, 77, 16,163, 51,138,128,224, 40,138,203,160, 32,202,117,
-197, 65,244,122, 85, 28, 29, 81,194,146, 24, 64, 48, 4, 66, 32, 9, 9, 16,204,218,221,233,164,151,170,250,254,232, 84,165,186,
-187,186,187,122,203, 98,215,195,175, 72,117, 45,167,158,115,234,121,207,121,207,123, 78, 85, 17, 28,199, 65,129,130, 88, 5,217,
-221, 4, 20, 40,232, 78, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,
-161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,
-138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161,
- 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138,
- 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,
-128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1,
- 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,
-130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,
-136,105,168,186,155, 64, 87, 98,252,248,241,233, 44,203,238, 6, 48, 58, 90,215,160,105,186,174,176,176, 48, 61, 26,105, 15, 31,
- 62, 92,147,148,148, 52,129, 97, 24, 99, 52,210, 7, 0,181, 90,109,219,191,127,255,238,104,165,223,211, 16,148, 1,244,102, 1,
-117,112,255,110,253,250,245,244,148, 41, 83, 80, 92, 92,140,140,140, 12,104,181, 90, 80, 20, 5,130, 32, 64,146,157, 13, 34, 65,
- 16,126,215,197,219,248,223, 86,171, 21, 51,103,206, 76,139, 52,119,192, 37,254,196,196,196,137,207, 61,247, 28, 57,125,250,116,
-148,148,148, 32, 35, 35, 3, 52, 77, 67,165,114,221, 70,138,162,124,158,239,111, 31, 15,187,221,142,169, 83,167,106, 34, 70,186,
- 23, 64,182, 1,248, 18,144, 70,163, 1, 69, 81, 32, 73,210, 75, 28,129,132,227,185, 30, 45, 1,241,220,159,127,254,121,205,148,
- 41, 83,134, 0, 64,113,113, 49,218,219,219, 17, 31, 31, 15,149, 74, 37,228,129,207,135,175,197,223,254, 51,103,206, 68,154, 58,
-128, 78,241,175, 89,179,134,156, 62,125,186, 30, 0, 14, 30, 60,136,209,163, 71, 35, 49, 49, 81,224, 47, 22, 57,111, 20, 0,100,
-109,167, 40, 42,106,252,123, 50,100, 25,128,148,128, 14, 28, 56,128,209,163, 71, 35, 33, 33,193,167,128, 60,197, 18,104,223,233,
-211,167, 35,158, 65,158,251,186,117,235, 52, 83,167, 78, 29,194,111, 39, 73, 18, 44,203, 10,199, 5, 18,183, 92,195,136, 52,164,
-196, 15,248,175,209, 67, 17,127,172, 34,160, 1,248, 18, 16, 69, 81,224, 56, 78, 56, 78,142,192,229,236,139, 36,120,238,107,215,
-174,213, 78,155, 54,109,176,120,159,248,166,135, 35,254,104,113, 7,124,139, 31,112, 23,179, 56, 63,161,138,223, 51,189, 88,129,
-223, 92,135, 42,160, 80,197, 31, 73, 17,137,185, 79,159, 62,125,176,231,126,222,239,143,148,248, 35,205,223,159,248,121,254,158,
-235,138,248,131,135,207,156,203, 21, 16,128,144,196,239,235,184, 72, 32, 16,119,192,117,211,249, 78,111,164,196, 31, 41,254,129,
-196, 15,192,203,231,247,220, 39,206,167,212,246, 64, 70, 19, 43,144, 52, 0, 57, 2, 82,171,213, 33,215,244,209,116,129,196, 46,
-155,103,171, 37,134, 70,163,241,186, 94,176,254,126, 52, 12, 64,142,248,121,254, 82, 80,106,254,224,224, 85, 2,114, 5, 68,211,
-180,219, 13,247, 39,144, 96, 12, 35, 28,136, 59,235,226,254, 10, 0,216,108, 54, 84, 86, 86,162,186,186, 26,141,141,141,208,106,
-181,146, 66, 14,183, 35, 28, 14,252,137,223,102,179,225,204,153, 51,168,174,174, 70, 83, 83, 19,244,122,189,151,216,195, 17,127,
- 44,214,254,128,135, 1,200, 17, 80, 85, 85, 21, 26, 27, 27,161,211,233, 4, 65, 68,162,230, 15, 87, 60, 0,192,178,236,238, 13,
- 27, 54,208,249,249,249, 67, 88,150, 69,109,109, 45,142, 31, 63,142, 19, 39, 78,160,190,190, 30,241,241,241, 72, 78, 78, 70, 66,
- 66, 2,140, 70,163, 91, 63, 32, 18,125,129,112,145,148,148, 52,225,249,231,159, 39,243,243,243,245, 12,195,160,182,182, 22,101,
-101,101, 40, 47, 47, 71,125,125, 61,140, 70, 35,146,146,146,144,152,152, 8,163,209, 8,149, 74,229, 37,124, 32,116,241,199,162,
- 17,184,149, 4,203,178,187, 59,226,252,130,128, 74, 75, 75, 5, 1, 25,141, 70, 36, 39, 39, 35, 49, 49, 17, 6,131,193, 45,254,
- 31,174,248, 35,228, 66,140,206,206,206,198,166, 77,155, 80, 94, 94, 14,138,162,144,150,150,134,148,148, 20,244,239,223, 95, 24,
- 52,162,105, 26, 90,173, 86, 16, 80,160,248,127, 48,251,194, 1,195, 48,198,236,236,108,188,242,202, 43, 56,125,250, 52, 40,138,
- 66,159, 62,125,144,154,154,138,156,156, 28,168, 84, 42,104, 52, 26,208, 52, 45,140,191,248,170,245, 1, 69,252,114,224,233, 2,
-141, 30, 53,106, 20, 94,126,249,101,148,151,151, 67,165, 82, 33, 45, 45, 13,201,201,201,184,244,210, 75, 5, 1,105, 52, 26,104,
-181, 90,168,213,106,168, 84,170,136,137, 63, 18,181,168,217,108, 70, 92, 92, 28,242,243,243,145,152,152, 8, 0, 66,235,194, 95,
- 75,173, 86,123,137,200,151,200,187, 58, 10,100, 50,153, 96, 52, 26,145,151,151,135,164,164, 36, 97,187,120,180,151,162, 40,104,
- 52, 26,129,191, 84, 43,160,136, 95, 30,188,250, 0, 38,147, 9, 6,131, 65, 16, 16,127, 83,197,238, 14,111, 4, 26,141, 70,248,
- 29,108,180,199,215,190,112, 97, 48, 24,144,147,147, 3,134, 97, 0,120,143, 64,147, 36, 9,138,162,160, 86,171,133,191, 82, 45,
- 64,168, 29,225,112, 17, 31, 31,143, 49, 99,198, 8,252,197, 16,215,248,158,226, 87,220,158,208,224,101, 0,188,128, 60, 71, 73,
-197, 2, 82,169, 84,130,112,104,154,118, 19, 80,184, 46, 81,216, 25,234,112,113, 56,142,147, 20, 63,127, 61,113,205, 31,169,190,
- 64, 36,248,243,181,187,211,233, 12, 40,218, 72,138,159,119, 7, 99, 13, 94, 57,230,107,119,150,101,189,110, 44, 47,244,130,215,
-255,141,226, 95,106,193,136,140, 36, 24, 28,221,185,210,167,168,194,133,248, 70,242, 70, 32, 94, 60, 7,192,130,169,249,187,162,
- 35, 44, 53,175,199, 95,116, 71, 74,252,114,250, 5,254,142,137, 37, 72, 26,128,248, 6,120,222,100,146, 36,241,236, 3,179,209,
-208,210,134,231,222,250, 22, 37,199,107,133,115,119,191,177, 8, 70,131,123,120,177,201,212,134, 83,213,191, 98,243,142,125,248,
-169,180, 90, 50,205, 72,137,159, 79,219,215, 0, 87, 36,230,250,248,218,199, 95, 47, 18,144, 19,213, 9, 69,216,138,248,189,225,
-229,116,243, 55,148,175, 93,248,133,239,240,242,219,211, 83,227,177,240,247, 19,221,206,165, 36,106,212,212,164, 56, 76,188,236,
-119,216,252,183,121,152, 60,110,152,112,141,104,245, 1,194,169,189,195, 17,127,180, 38,195,117,149,248, 99,181, 47,224,211, 0,
-124, 9, 64,188, 62, 36, 35,197,237, 92, 74,229,219,151, 86, 81, 20, 22,221,145,239,247, 26,145, 66,164,196, 47, 55, 60, 26,233,
- 86,140,135, 34,254,232, 67,178,253,227,111,100, 32, 67, 48, 26,180,110,231, 81, 18,130, 16,255, 30, 51, 98, 0,174,202, 25, 18,
- 85,241,251,227, 31, 73,195,144,218, 30, 9,120,250,245,252, 54, 32, 60, 97, 43,226,151,134,151, 1,200,185,233,190,106,188, 64,
-157, 74,146, 36,241,246,234, 63, 70, 93,252,129,150,104, 24, 70,180,160,136, 63,186,144,108, 1, 60, 59,145,114, 7,174, 40, 74,
-126,216, 51, 26,226,247,197, 63, 18,181,190, 34,254,223, 38, 36,251, 0,114, 69,236, 41, 96, 74,226,216, 71,215,238,232, 82,241,
- 71,195,229,233,106,241,139,163,112,138,248,163, 11,217,125, 0, 57, 3, 87, 36,229,222, 7,104,183, 59,177,167,184,188,203,196,
-239,201, 63, 18,226,247,183, 47,218, 80,196, 31,125,200,234, 3,248,243,235,197,224,195,160, 78,134, 69, 93,189, 9,111,124,188,
- 23,109, 54, 71,151,139, 95,108, 0,209,234, 8, 71, 19, 82,177,121, 69,252,209, 65,192, 62, 64,160, 78,173, 24, 99,110,121, 86,
-242, 34, 93, 37,126,241,245, 0,255, 81,160,112, 12, 35,154,144, 18,169, 34,254,232,193,103, 11, 0, 4, 14,131,122,138,225,216,
-167, 79,128, 32, 8, 48, 44,135,186,122, 19, 94,251,240, 7,236,248,186,164, 75,197, 47,206, 67,164,107,253,174,112,123, 60,161,
-136, 63,186,144, 84,165,156,154, 95, 74, 16,252, 62, 90,173,194,160,254, 41, 88,117,255,245,208,105,212,138,248, 67,132, 34,254,
-232,195,167, 1,200, 17,191,167, 40, 60,247, 25,116, 26, 76,187,106,100,151,100,196, 31,127, 69,252, 10,124, 33, 96, 39, 56,152,
- 48,168,212,121, 27, 87,222,217,101,153,145,226, 31,174,191,175,136,255,183, 13,159, 97, 80, 57,226,151,114,129,124,237,235, 74,
- 68,170,214,239,206, 60, 4, 35,126,229, 1,247,208, 33,217, 2,200,245,255,125,245, 1,186, 83, 56, 60, 15, 69,252, 10,228, 32,
- 96, 31, 32, 24, 23, 72, 17,127,100,161,136, 63,250,240, 59, 21, 34,144,248, 45, 86,155,219,185,158,191,187, 11,189, 89,252,188,
-168, 21,241,119, 13,100,133, 65,125,185, 68,167,107,234,221,206, 43,175,186,216, 37,164,253,193,159,240,123,186,248,121, 40,226,
-239, 58, 72, 26,128, 28,241,215, 92,104,194, 11,111,127,227,118,222,218, 55,191,196,169,234,158,103, 4,114,132,223, 83,196, 47,
-134, 34,254,232,195,111, 24,212,151,248,239,124,108, 51, 14, 29, 63,235,149, 88,209,209, 74, 92,123,239, 63, 48,242,119,233,216,
-246,220, 61, 72, 73,140,235,146, 76,120, 66, 17,191, 2,185,240, 25, 6,245, 23, 9,250, 96,195,194, 30,209,225,149,130, 34,126,
- 5,193, 32,232, 48,168,248,119, 79,133, 28,225,119,229,244,140, 80,161,136, 63,250, 8, 42, 12,218, 27,196, 47,167,198, 87,196,
-175,128,135,236, 48,104,111, 16, 63, 15, 69,252, 10,228, 34,232, 62, 64, 79,135,221,110,199,169, 83,167, 36,253,252,104,139, 95,
-173, 86,135,157,134,211,233, 68,121,121, 57,128,174,127,105, 21, 77,211, 93,122,189,158, 0,175, 18,118, 56, 28,168,168,168,232,
-150,206, 98,184, 2,210,104, 52,117,147, 39, 79,142,202,119,122,131,225, 16,234,185, 58,157,206,150,155,155,219,173,223,233,213,
-233,116, 61, 99, 52,179,139, 64,136,191,244, 56,105,210,164, 11, 54,155,173,219, 5,180,119,239,222,168,124,105, 93,129, 2, 79,
-184, 25,128, 2, 5,177,134,158,223, 35, 84,160, 32,138, 80, 12, 64, 65, 76, 67, 49, 0, 5, 49, 13,197, 0, 20,196, 52, 20, 3,
- 80, 16,211, 8,106,164,165,227, 59,194,187, 1,140,142, 18, 31,208, 52, 93, 87, 88, 88, 24,149, 48,168,194, 63, 48, 98,141,191,
-108, 3,224, 63,162,221,241, 29, 97, 20, 23, 23, 99,192,128, 1,208,104, 52,194,167, 82, 61, 7,204,130, 93,111,107,107,195,140,
- 25, 51,162, 50, 14,193,243,239,248,144,118,175,229,207,151,127, 81, 81, 17, 50, 50, 50,188,248,251,226,231, 57,144, 41,181,221,
-108, 54, 99,246,236,217, 49, 85,254,178, 12, 64,252, 5,249, 41, 83,166, 12, 1,128,226,226, 98,216,108, 54, 36, 36, 36, 8,159,
- 78, 10,244, 58,244, 64,251, 78,159, 62, 29, 12,119,217, 16,243,207,207,207,239,181,252,215,173, 91, 39,148,255,129, 3, 7, 48,
-106,212, 40,196,199,199, 75,242,151, 51, 29,220,115,255,153, 51,103,162,202,191, 39,150,127, 64, 3, 16,147,159, 58,117,234, 16,
-225, 68,149, 10,226, 65, 52, 57, 4,229,100, 42,210,248,173,240, 95,179,102,141,102,218,180,105, 2,127,138,162,132, 79,217, 6,
-203,213,215,254,104,160,167,151,191, 95, 3, 16,213, 60,218,169, 83,167, 14, 22,239,227, 39,150,121,126,138, 52, 28,242,145,190,
- 9,191, 21,254,107,214,172,209,206,152, 49,195,139,191,248,122,114,133, 31,232,152,104,240,239,201,229,239, 51, 10, 36, 38, 63,
-109,218,180,193,158,251,121,191, 13, 8, 92,248,193, 52,103,145,194,111,133,191,148,248, 1, 87, 11, 32,151,191,220,188,196, 98,
-249, 75,182, 0,129,200,139, 51, 16, 73,242,145,186, 1,191, 21,254,190,196, 47,230, 15,200,251, 14,130,156, 99, 34, 53, 93, 92,
- 78,249,239,218,181, 11, 9, 9, 9,208,106,181, 80,169, 84,110, 45,154,167, 97,120,110, 19,231,121,233,210,165,145, 53, 0, 15,
-159, 77,146, 60,224,154,186,236,121, 81,185, 5, 30,205, 38,248,183,194,127,205,154, 53, 26, 95,226, 23,243,231,121, 75,241,151,
- 43,124,241, 49,145,226, 31,168,252,111,191,253,118, 12, 24, 48, 0,241,241,241,160,105, 26,106,181, 90,104,213,186,178,252,221,
- 12,192, 87,135, 5, 0,108, 54, 27,170,170,170, 80, 85, 85,133,166,166, 38,104,181, 90, 47,194,225,146, 15,247, 6, 4,226, 95,
- 89, 89,137,234,234,106, 55,254, 23, 47, 94, 20, 62, 6, 62,112,224,192,128, 60, 43, 42, 42, 0,184,124,215, 75, 46,185, 36, 42,
-252,215,173, 91,231,214,225,229,249,159, 57,115, 6, 85, 85, 85,168,175,175,135, 78,167,147,245,174,163, 96, 91,134, 72,240,151,
- 42,127,139,197,130,195,135, 15,163,164,164, 4,199,142, 29, 67,107,107, 43, 12, 6,131,219, 7,216,229,214,252,252, 58, 73,146,
- 88,182,108, 89,228, 12,128,101,217,221, 29,113,218, 33, 44,203,162,182,182, 22,101,101,101, 56,113,226, 4, 26, 26, 26, 16, 23,
- 23,135,148,148, 20, 36, 36, 36, 32, 62, 62, 94, 32, 45, 55,252, 22,237, 40, 74, 40,252,139,139,139,113,235,173,183,226,179,207,
- 62, 19,106, 85, 41,191,146,223, 94, 88, 88,136,187,239,190, 27, 91,182,108, 65,118,118,118,196,249,119,196,249,135,176, 44,139,
-154,154, 26, 28, 63,126, 28,101,101,101,168,175,175, 71, 92, 92, 28,146,146,146,144,148,148, 4,131,193,224,183, 2,234,106,241,
- 7, 83,254,179,103,207, 70, 82, 82, 18,140, 70, 35,244,122,189, 48, 22,224, 75, 79,209,212,143,167, 11, 52, 58, 59, 59, 27,155,
- 54,109,194,169, 83,167, 64, 81, 20,250,246,237,139,212,212, 84,244,239,223, 31, 52, 77, 67,165, 82, 65,163,209, 8,190,155,216,
-151, 14,245,149,132, 17,188, 9, 65,243, 47, 41, 41,193,161, 67,135, 64, 16, 4,210,211,211,125,214, 62,252,178,111,223, 62, 20,
- 22, 22,130,227, 56,220,123,239,189, 81,225,255,242,203, 47,163,188,188, 28, 36, 73, 10,252, 71,143, 30, 45,212,150, 26,141, 6,
- 58,157, 78,248, 29,138,248,125,237,143, 4,127,169,242,223,187,119, 47, 8,130, 16, 62, 4,174, 82,169, 4,183, 71,220, 7,144,
- 83,243,139, 91,128,229,203,151,135, 85,254, 94,125, 0,139,197, 2,163,209,136, 41, 83,166, 32, 49, 49, 81,216,206, 23, 26, 73,
-146, 80,171,213, 80,171,213,208,104, 52, 32, 73, 82,248,172,103,176,133, 29,141, 78,100,176,252,139,138,138,132, 99,246,239,223,
- 15,192,229,222,240, 11,255, 91,188,157, 95,143, 6,127,179,217, 12,189, 94,143,188,188, 60, 36, 36, 36,120, 9,128, 23, 12, 77,
-211,160,105, 90, 40,123,185,131, 72,129,246,135, 11, 95,229,191,104,209, 34,175,242,215,106,181,194,186,167, 17,116,149,126,188,
- 12,192, 96, 48, 96,204,152, 49, 96, 24, 70,136,209,242,224, 51, 64, 81, 20,212,106,181,144, 25,169, 81,200, 80,200, 71,226, 6,
- 4,203,191,162,162, 2, 53, 53, 53, 24, 48, 96,128,236,107,152,205,102, 24,141,198,168,240,215,235,245,184,244,210, 75,193,178,
-172,215, 64, 17, 95,102, 60,127,113,237,201,239, 11,183, 79, 16, 46,124,149,255, 27,111,188,225,102,204,252,125, 16,115,231,247,
-121,254,245,181,141, 32, 8,172, 88,177, 34,178, 6,192, 55, 77,226, 48, 27, 31, 30, 19, 23,162,184,230,151,170,253, 25,134, 65,
-109,109, 45,206,158, 61,139, 11, 23, 46,160,190,190, 30, 77, 77, 77,104,109,109,197,250,245,235,163,118, 3,130,229, 15, 64, 16,
-127, 65, 65, 1, 72,146, 68,110,110, 46,178,179,179,145,146,146,130,134,134, 6,148,150,150,162,176,176, 16, 44,203,162,160,160,
- 0, 70,163,209, 45,189, 72,243,167,105, 26, 44,203,122, 9,198, 83,196,226,138,103,194,132, 9,168,171,115, 61,143,159,158,158,
-142,162,162, 34,217,125, 51,241,254, 72,240,151, 42,255,135, 30,122, 40, 40,253,132, 82,121, 70,196, 0,248, 90, 5,144,110,230,
-197,191, 41,138,130,201,100, 66,117,117, 53,206,159, 63,143, 95,127,253, 21, 77, 77, 77, 48,153, 76,176, 90,173, 48,153, 76,104,
-105,105, 65,115,115, 51, 90, 90, 90,132,245, 13, 27, 54, 68, 69, 60,161,240, 23,131, 36, 73, 44, 88,176, 0,153,153,153,194,182,
-126,253,250,161, 95,191,126, 24, 54,108, 24,182,109,219,230,118,124, 52,248,243,254, 49,239,110,249, 18,191, 88, 72,205,205,205,
- 24, 60,120, 48,202,202,202, 0, 0,179,103,207,134,201,100, 66,114,114,114,151,138, 31,240, 93,254, 27, 55,110,244, 42, 43,169,
-218,125,201,146, 37, 33,247, 37, 67,129,151, 1,240,133,202,175, 7, 34,242,204, 51,207,120, 9,188,165,165, 5,102,179, 25, 44,
-203, 34, 62, 62, 30,195,135, 15,199,184,113,227,144,149,149,133,167,158,122, 42,170, 55, 33, 88,254, 0, 80, 87, 87,135,180,180,
- 52,228,230,230,186,137,159, 32, 8,193, 13,201,204,204, 68,110,110, 46, 0,215,172, 67,157, 78, 23, 21,254,124, 58, 82,226,103,
- 89, 22,143, 60,242, 8,206,157, 59,135,167,159,126, 26,163, 71,143, 6, 73,146,104,105,105,193,196,137, 19,113,246,236, 89,161,
- 53,104,110,110, 70, 74, 74, 10, 8,130,192, 47,191,252,130, 37, 75,150, 96,208,160, 65,120,237,181,215,220,198, 64, 60,175, 17,
- 46,124,149,255, 35,143, 60, 18,118,237, 30, 13, 35,246,251,141, 48, 57, 68,222,125,247, 93,144, 36,137,129, 3, 7, 98,248,240,
-225,152, 52,105, 18,134, 15, 31,142,172,172, 44,100,101,101, 9,145, 21,254, 28, 95, 6, 16,169, 26, 40, 88,254, 0,144,150,230,
-154, 65,155,157,157,237,150,134, 39,248,253, 58,157,206,235, 58,145,226, 47,174, 17, 61,111,248,163,143, 62,138,113,227,198,225,
-233,167,159,198,242,229,203,145,158,158,142,249,243,231,227,253,247,223,199,132, 9, 19, 96,177, 88, 64,146, 36,178,179,179,177,
-101,203, 22,204,159, 63, 31,219,183,111, 7,195, 48,216,182,109, 27, 62,249,228, 19, 44, 90,180, 8,111,190,249,166, 79, 81, 69,
- 42, 15, 71,143, 30,133, 74,165,194,165,151, 94, 42,108,235,105,226, 7,100,124, 41, 62, 16, 9, 0, 56,123,246, 44,180, 90,173,
-108,193, 69, 83,252,161,240,231,145,146,146, 34,172,123,118,160, 61,247,139,211,143, 52,127, 95,229,200,215,252, 44,203, 98,243,
-230,205,248,207,127,254,131, 85,171, 86, 97,225,194,133,152, 51,103, 14, 14, 29, 58, 4,146, 36,113,227,141, 55, 34, 62, 62, 30,
-239,188,243, 14, 22, 45, 90,132,212,212, 84,180,182,182,226,134, 27,110,192,174, 93,187,100,151, 71,168, 32, 73, 18, 26,141, 6,
- 35, 71,142,132, 74,165, 2,195, 48, 97, 9, 60,154,238,155,223, 47,197,203, 33, 1,192,167,248,125, 21,112, 52,197, 31, 10,255,
-134,134, 6,161,195,219,175, 95, 63,159,105, 55, 52, 52, 0,112,189,126,145,166,233,168,240, 7,124, 27,240,223,255,254,119, 44,
- 91,182, 12,111,190,249, 38,246,238,221,139,156,156, 28,124,250,233,167, 56,119,238, 28,138,138,138,208,222,222, 14,173, 86,139,
-210,210, 82,140, 26, 53, 10,227,199,143, 71, 93, 93, 29,142, 31, 63,142, 17, 35, 70,224,137, 39,158, 16, 2, 16,209,138,194,241,
-233,100,103,103,187,137,255,197, 23, 95,116,171, 84, 60,239,145,231, 54,185,251,158,124,242,201,176,248,202, 50,128, 64, 29,143,
- 96,172,150, 63, 94,236,131, 71, 18,161,240,231,107,246,210,210, 82,193, 0,196,105,240,253,128,210,210, 82, 0,157,239,208,140,
-134,248,253,149,107,118,118, 54, 6, 12, 24,128,111,191,253, 22, 99,199,142,197,209,163, 71, 81, 90, 90,138,178,178, 50,124,253,
-245,215,194,224,211,184,113,227, 48,127,254,124,140, 24, 49, 2,173,173,173, 72, 73, 73,193,217,179,103, 17, 23, 23,135, 49, 99,
-198, 68,117, 28, 64,156,142,184,230,247,236, 3, 4,186, 55,114,195,185,225,194,103, 31,128,255, 27,168,105, 18,103, 90,174,224,
-162, 37,254, 80,249,243, 40, 44, 44,196,176, 97,195,144,153,153, 9,207, 55,230, 85, 85, 85,161,176,176, 48,106,156,197,220,125,
- 25, 0, 73,146,184,227,142, 59, 80, 80, 80,128,157, 59,119,162,180,180, 20, 59,119,238,196,158, 61,123,176,114,229, 74, 76,156,
- 56, 17, 0,112,240,224, 65, 44, 94,188, 24, 15, 63,252, 48,230,206,157, 11,154,166,177, 98,197, 10, 60,240,192, 3, 81, 31, 7,
-224,121,243,127,249,235,189,240,194, 11, 94, 45, 64, 56, 53, 63,191,190,106,213,170,176,184,250, 53, 0, 57,214, 41, 38, 37,199,
-114,197,233, 71, 11,193,242,231,111, 12,203,178,216,182,109,155,223,113, 0,241,241,209,230,207,115,228, 56, 14, 38,147, 9, 77,
- 77, 77,216,190,125, 59, 22, 46, 92,136,243,231,207,163,172,172, 12,123,246,236,193,247,223,127,143,196,196, 68,225,248,204,204,
- 76,204,154, 53, 11,121,121,121,200,207,207, 71, 90, 90, 26,102,206,156,137,119,222,121, 7, 11, 23, 46, 68,106,106, 42,146,146,
-146,162,210, 1, 22,243, 23,167,255,232,163,143,202,210, 72, 87,213,252, 60,252,126, 35, 76, 14, 65,241, 57, 93, 21,107,246,135,
- 80,249, 3,174,129, 48,185,215,136, 38, 60,203, 53, 55, 55, 23,131, 7, 15,198,132, 9, 19,144,151,151,135, 57,115,230,160,168,
-168, 8,187,119,239,198,202,149, 43,221,196,207, 47, 9, 9, 9, 88,181,106, 21,182,111,223,142, 21, 43, 86, 96,198,140, 25,184,
-112,225, 2, 94,120,225, 5, 28, 58,116, 8,245,245,245, 56,115,230, 76,196, 91, 0, 95,229,190, 97,195, 6,183,167,191, 60,243,
- 41, 62, 55,208, 62,241,181,162,210, 2, 4, 27, 69,233, 14,203,245,135, 80,163, 64, 61, 1, 98, 94, 60,223, 11, 23, 46,160,172,
-172, 12, 53, 53, 53,176, 88, 44, 56,114,228, 8, 28, 14, 7,202,203,203, 49,113,226, 68,159,101,158,155,155,139, 87, 94,121, 5,
-107,215,174, 69,109,109, 45,110,185,229, 22,104, 52, 26, 24, 12, 6,244,237,219, 87,242,156, 72, 64,170,252, 31,123,236,177, 30,
- 85,243,243,136, 72, 20,168, 39,137, 63, 20,254, 86,171, 21,122,189, 94,246, 84, 8,150,101,163,218,154,249, 18, 37,159, 15,146,
- 36,161,211,233,132,145,108,127,101, 47,158, 98,236,201, 89, 92, 54,145,230,238,201,107,253,250,245,110,199,120,254, 13,166,230,
- 23,167, 19,149, 22,192,147,188, 63, 95,218,243,216,238, 20,127,168,252,245,122, 61, 0,249, 83, 33,162, 45,126,207,114, 77, 79,
- 79,199,172, 89,179, 48,113,226, 68,100,103,103,227,198, 27,111,196,169, 83,167, 48,126,252,120, 28, 60,120, 16,153,153,153,146,
-121,219,191,127, 63,230,206,157,139,182,182, 54, 24, 12, 6,108,221,186, 21,229,229,229, 56,122,244, 40, 50, 50, 50, 34, 46,126,
-207,124,136,185, 44, 89,178, 36,232, 90,191, 43,244, 19,112, 36, 56, 80, 71,210,243,120,241,254,195,135, 15, 99,199,142, 29, 56,
-119,238, 28,170,170,170,144,156,156, 28,181,140,132,195,159,135,120, 42, 4,191, 79,106, 42, 68, 87,240, 23,231,163,168,168, 8,
- 38,147, 9,205,205,205,120,251,237,183, 65,211, 52, 38, 77,154,132, 5, 11, 22,224,175,127,253, 43,102,205,154, 37, 76,157,230,
-243,102, 54,155, 81, 80, 80,128, 3, 7, 14,192,102,179, 97,215,174, 93,104,110,110,198,170, 85,171,144,146,146,130,228,228,228,
-168,138,255,224,193,131,160, 40, 10, 19, 38, 76, 0, 0,172, 91,183,206,109,191,191, 26,223,243, 24,127,215,137,120, 11, 16,140,
-120,124, 25, 0,203,178,120,235,173,183,208,210,210, 2,131,193,128,182,182, 54, 84, 87, 87, 11,243,237,163,137, 80,248,243,115,
-123,196, 83, 33,120,225, 19, 68,231, 56, 0,191, 63,154, 46,144, 84,153,146, 36,137,228,228,100,164,166,166, 98,222,188,121, 88,
-182,108, 25,230,206,157,139,172,172, 44, 44, 89,178, 4,121,121,121, 88,181,106, 21,114,115,115, 65, 16, 4,246,239,223,143,130,
-130, 2,252,243,159,255, 68, 92, 92, 28,172, 86, 43,182,110,221,138,173, 91,183, 34, 43, 43,171, 75,106,126,154,166, 49, 98,196,
- 8, 97, 94,147,248,225,117,185, 46,115, 87,120, 14, 62, 59,193, 82,196,142, 30, 61,138,207, 62,251, 12,231,207,159, 71, 85, 85,
- 21,146,146,146,220, 50,205,147, 95,189,122, 53, 42, 43, 43, 49,104,208, 32,180,180,180,160,161,161, 1,109,109,109, 96, 24, 6,
-233,233,209,255,250, 81, 48,157, 45,160,115,110,143,212, 84, 7,241,120, 0,191, 63,218,209, 44,127,188,183,109,219,134, 7, 30,
-120, 0,141,141,141,104,108,108,196,220,185,115, 49,121,242,100,108,223,190, 29,155, 54,109, 2, 69, 81,152, 59,119, 46, 14, 28,
- 56,128,184,184, 56, 97, 0,108,254,252,249,216,188,121, 51, 94,122,233,165,168,243, 39, 73, 18, 87, 94,121,165, 32,126,130, 32,
-176,118,237, 90, 33,111,129,254,202, 21,126,212, 91, 0,126, 97, 24, 6,239,189,247, 30,172, 86, 43,226,227,227, 81, 89, 89,137,
-154,154, 26, 28, 60,120, 80,200, 48,255,151, 32, 8,124,240,193, 7, 80,171,213,168,168,168,128,213,106, 69, 93, 93, 29,154,155,
-155,193, 48, 12,238,186,235,174,176, 8, 7,130,220,154, 69,170,160,197, 83, 33, 60,197,207,239,239, 10,248,226,125,236,216, 49,
-212,212,212, 96,198,140, 25, 56,113,226, 4, 6, 14, 28, 8,163,209, 8,173, 86,139,199, 31,127, 28,171, 87,175, 6, 65, 16,176,
- 90,173,176,219,237,104,107,107, 19, 90,128,219,110,187, 13, 55,223,124, 51,142, 28, 57,130,177, 99,199, 70,157, 59,224,254,210,
-171,101,203,150, 5,236,139,117,101,205,207, 67,214,108,208,127,252,227, 31,168,173,173,245, 91,163,139,201, 27,141, 70, 97, 54,
- 32,195, 48,112, 56, 28,224, 56, 14, 79, 60,241, 4, 86,172, 88, 17,245, 76,201, 21, 63, 95,208,252,220, 30,241, 84, 8, 62, 29,
- 0, 94, 83, 33,162,237, 2,249,226,189,116,233, 82,188,249,230,155, 48,153, 76, 24, 54,108, 24,190,252,242, 75,188,250,234,171,
-184,231,158,123, 48,123,246,108,212,214,214, 10, 17,162, 93,187,118, 9, 51, 66,111,187,237, 54,168, 84, 42, 20, 20, 20,224,193,
- 7, 31,196, 15, 63,252, 16, 21,238,190,242,192,183, 0,190,230, 2,137,207, 9,246, 58, 81, 27, 9, 22, 47, 59,118,236, 0, 77,
-211,146, 53,250,188,121,243,188, 44,247,221,119,223,197,226,197,139, 81, 93, 93,141,184,184, 56, 36, 39, 39, 99,249,242,229,184,
-242,202, 43,195, 34, 43, 23,114,197,207,139,152,159,219, 35,119, 42, 68, 87,185, 64,158,188, 7, 14, 28,136, 79, 63,253, 20,115,
-230,204,193,125,247,221,135,161, 67,135, 98,227,198,141,216,182,109, 27, 26, 26, 26,112,251,237,183,131, 32, 8,108,217,178, 5,
-205,205,205,216,186,117, 43, 54,111,222,140,155,111,190, 25, 5, 5, 5,248,250,235,175,221, 34, 92,209,230, 47,206,199,242,229,
-203,123, 84,205,207, 67, 86, 39, 56, 46, 46, 14,191,252,242,139, 87,141,190, 98,197, 10,183,103, 50,121, 12, 29, 58, 20,159,124,
-242, 73,151,102,196, 31,127,127,226, 23, 67,238, 84,136,174,200,131, 20,247,215, 94,123, 13,247,223,127, 63, 62,251,236, 51,172,
- 95,191, 30,151, 93,118, 25, 8,130,192,194,133, 11,177,126,253,122,193,144,203,203,203,177,106,213, 42,100,101,101, 97,227,198,
-141, 56,124,248, 48, 30,124,240, 65,100,102,102, 98,235,214,173, 81,231, 46, 85,254,207, 61,247, 92,192,217,160,161, 92, 43,106,
- 45,128,152,252, 91,111,189,133,199, 31,127, 92,232, 80,137,107,244,238,178, 92,127,144, 35,126, 49,111,222,165,145, 59, 21, 34,
-218, 46,144, 47,238,106,181, 26,155, 55,111,246,218,159,154,154,138,195,135, 15, 11,227, 25, 63,255,252, 51, 82, 82, 82,132,227,
-198,142, 29, 27,117,183, 39, 80, 30, 30,127,252,113,191, 21, 83,119, 65, 86, 20,104,232,208,161,248,240,195, 15,123, 28,121, 95,
- 8, 54, 10, 20,172,152,187, 35, 10,228, 79, 60, 73, 73, 73,104,104,104, 64,159, 62,125, 0, 0, 25, 25, 25,194,227,144,221, 1,
- 41,142,207, 62,251,172, 91,222,248,245, 96, 16,137, 26,223, 19, 65, 77,134,235, 13,226, 15,135,191,220,169, 16, 61,137, 63,191,
- 93, 60,177,173,187, 70,223,253,241, 95,185,114,101,143,212,143,172, 78,176,191, 8, 74, 79, 68,176,252,121,151, 70,238, 84,136,
-174,158, 11,228, 47, 15,190,142,235, 78,244, 38,253,120,221,197,222, 68, 94, 10,161,240,231,197,236, 57, 21, 66,124,156,120, 42,
- 68, 87,186, 64,188, 97, 42,226,247,198, 83, 79, 61, 5,167,211, 25, 86, 26,126, 91,128,222, 38,126, 30,161,242,151, 59, 21, 34,
-154, 8,165,214,239, 41,226,231,209, 85,250, 9,247,121, 96,192,199, 23, 98,122,179,248,129,224,249,243,225, 77,185, 83, 33,162,
- 29, 14,237,205,226, 7,122,151,126,188, 90, 0,135,195,129,138,138, 10, 55,194, 93, 69, 94,173, 86,135,157, 70, 40,252,121,151,
-198,243,173, 16,124,220,154, 55, 2,126, 42, 4,127,252,201,147, 39, 35,206,191,181,181, 21,167, 79,159,246, 18,141,167,224, 61,
-183, 69, 2,221, 85,254,145, 66, 40,252, 9,113, 13, 55,105,210,164, 11, 54,155, 45, 42,223,137,149, 11,141, 70, 83,183,119,239,
-222,144,102,204,245,118,254,185,185,185, 23,236,118,123,175,229,223, 27,203,159,240, 28,242, 87,160, 32,150, 16,253,167,212, 21,
- 40,232,193, 80, 12, 64, 65, 76, 67, 49, 0, 5, 49, 13,197, 0, 20,196, 52, 20, 3, 80, 16,211,240,249, 90, 20, 5, 10, 34,141,
-142,239, 8,239, 6, 48, 58, 90,215,160,105,186,174,176,176, 80,118, 24, 84, 49, 0, 5, 93, 2,254, 35,218, 29,223, 65, 70,113,
-113, 49, 50, 50, 50,220, 62,184, 46,158, 99, 37, 30, 56,147, 90,247, 28, 88, 35, 8,215,179,208, 51,103,206, 12,106, 28, 66, 49,
- 0, 5, 81,135,248, 11,242, 83,166, 76, 25, 2, 0,197,197,197,104,111,111, 71,124,124,188,240,145,108, 57, 19,255,252,237, 63,
-115,230, 76,208,220, 84, 6,131,174,192,102,179,175, 96, 24, 86,150, 49, 16, 4, 97,231, 56,174,128,227,184,213, 65, 95, 45, 10,
- 48, 24, 12,227,108, 54,219, 88,134, 97,228,246,103, 88, 0,197, 28,199, 29,142, 38, 47,185,232,237,252, 3,129, 23,255,186,117,
-235, 52, 83,167, 78, 29,194,111, 39, 73,210,109, 78, 85, 32,113,203, 53,140, 96, 65,218,108,246, 21,101,199,143,170, 28,118, 43,
-228, 44,167, 78,158,112, 0, 8,127, 26, 94,132, 96,179,217,198,158, 56,254, 51,105,183,183, 66,206, 82, 94, 94,206, 2, 24,215,
-221,188,121,244,118,254,254,192,139,127,237,218,181,218,105,211,166, 13, 17,239, 19,127,161, 51, 28,241,139, 91,141, 80,160, 98,
- 24, 86,149, 57,120, 8,218, 90, 27,193, 50, 76,199,230,206,233, 17,158, 19, 37,250,165, 39, 95, 0, 48, 52,164,171, 69, 1, 12,
-195,144,131, 6, 15,134,205,218, 4,198,193, 4, 60, 62, 35, 61,197, 10, 32, 62,250,204,228,161,183,243,247, 5,177,248,167, 79,
-159, 62,216,115,191,248,219,192,225,136, 63,220,217,166,130,219,195, 48, 78,176,172,143,135, 11, 68, 86,192,114,108,224,187,212,
- 13, 96, 28, 12, 88, 56,164,119,138,102, 47, 51,140,179, 71, 78,126,234,237,252,197, 8, 36,126, 0,194, 23,238, 1,223,143, 81,
-134, 98, 24,193,194,197,128, 47, 82, 78,188,112,194,199,154,221,254,113,172, 10, 64, 59, 65, 16, 25, 65, 95, 45,218, 96,221, 23,
-134, 95,208,185,128, 98, 9, 0, 12, 65, 16,134,238, 35,234, 3,189,157, 63,220,125,126, 95,226, 7, 0,141, 70, 35, 25,201,241,
-116,107,130, 53,140, 96,161, 2, 0, 83,115, 29, 74,246,125,140, 54,107,179,203, 22, 56, 81,165, 47,172,187, 86, 40, 74,213,103,
-241,226,135,219, 55,108,120,169, 74,165,162,132, 99, 68,135, 19,158, 27, 57, 14, 94,204, 56,142,115,219, 70,145,164, 83,163, 85,
- 61,211,218,106, 43, 8, 54, 19, 45, 77, 23, 81, 82,184,195,229, 70,248, 59,144, 5, 8,138,210, 45, 94,252, 16,179, 97,195,198,
-255,199,127,209, 92, 26,157, 41, 49,140, 55,127, 79, 80, 20,197,106, 52,228,161,214, 86,251, 79,242,153,187,208,219,249,243, 16,
- 71,123,196, 29, 94, 0,176,217,108,168,172,172, 68,117,117, 53, 26, 27, 27,161,213,106, 37,133, 28,110, 71, 56, 88,168, 92,153,
- 39, 96, 48,104, 65,145,122,240, 66,119, 25,130, 32,125,215, 95,215,111,227,194, 63,206,197, 99, 15,223, 15,134,115,181,205, 4,
-231, 29,155,237,140,215,138,174,198,111,115,219,228,250, 85, 85, 85,165,186,114,194,140, 21, 0, 10,130,205,132,154, 36, 97, 52,
-106,161,166,244,194, 54, 22, 0, 24,119, 57,117,252, 82,255,247, 31,111,192, 99, 15,255, 5, 12,239, 91,116,252,161, 36, 10,208,
-109, 11,229,181, 91,216, 88, 93,125,134, 28, 63,225,234,177, 0,130, 22, 80,111,231, 47,112,102,217,221, 27, 54,108,160,243,243,
-243,135,176, 44,139,218,218, 90, 28, 63,126, 28, 39, 78,156, 64,125,125, 61,226,227,227,145,156,156,140,132,132, 4, 24,141, 70,
-183,126, 64, 36,250, 2,161, 64, 5, 0, 78, 39,139, 22,147, 21,214, 86,139,203,245,225,247,186,173, 11,255,225,208,193, 47,161,
-209,197,129, 36, 41,247, 22, 2,238,221,103,183, 71, 13,196,173, 4,231,214, 58, 0,224,208,212,220, 2,150,149, 23,138,245,132,
-131,101,209,210, 98,133,213,106, 6, 24,248,169, 69, 93, 74, 41, 41,250, 18, 90,109, 7,127,184,185,216, 34, 48, 96,124, 61,249,
- 40,113,129,166,150, 22, 4, 17,202,116, 67,111,231, 47,194,232,236,236,108,108,218,180, 9,229,229,229,160, 40, 10,105,105,105,
- 72, 73, 73, 65,255,254,253, 65,211, 52, 84, 42, 21,104,154,134, 86,171,133, 74,165, 18,250, 2,145,234, 8, 7, 11, 21, 0,144,
- 20, 1,131, 65, 3,138,208, 74,138, 83,122,221, 9,116,116,218,196, 45, 4, 33, 58,151,112,115,131, 56,209,118,215, 89, 28, 0,
-162, 35, 93,130,179, 7, 77,158, 7, 69, 2,250, 56, 13, 72, 82, 15,136, 98,203,110,247,159, 17,254,235,248,223, 33,240, 39, 37,
- 78, 96, 1, 80,110,189, 79,183, 63,240, 82, 17,107, 11,145,125,239,231, 47,134,217,108, 70, 92, 92, 28,242,243,243,145,152,152,
-232,226,231,241, 14, 80,181, 90, 13,154,166,161,209,104, 64, 81, 20, 24,211,175, 40,127,249,143,176,212,158,130, 46,181, 31,250,
- 93,115, 31,250, 95,243,167,174,139, 2, 49, 78, 22, 38, 83, 43,172, 22,139, 80,143,187,215,222,156,100,205, 46, 54, 10,215,111,
- 79,227,113,107, 56, 60,210,117,191,134,217,210, 22, 52,121, 30,140,131,129,185,197, 2,171,197,210,113,203, 61,110,174,140, 90,
- 21,112,211,158,248, 84,209,201,190, 83, 49,155,219,229,145,149, 64,111,231, 47,134,193, 96, 64, 78, 78, 14,152, 14,247,173,211,
- 21,238,124, 11, 31, 69, 81, 80,171,213,194,223,218,239,223, 69, 60,247, 43, 38,255, 97, 38,172, 86, 59, 14,125,253, 50, 90, 43,
- 15, 35,235,191, 94, 4,225,225, 38, 69, 58, 10,212,209, 2,144, 48,232, 52, 32, 56,109,199,102,119,113,250,111, 21, 60,143,247,
- 45,114, 78,212,187,246,236, 99,216,237, 97,188,223, 69, 77, 65,175,215, 0,208,116,110,115,171, 13,189,107, 66,247, 85,207,218,
- 80,114,213,245,203,171, 38,117,193,102,243, 17,194,148,131,222,206, 95, 4,222,197,145,122, 17,174, 88,180, 20, 69, 9,211, 31,
-250, 78,188, 25,199,254,253, 22, 26,207,213,162,239, 37,227,144, 55, 39, 13, 71,126, 44,198,145,167,102,227,210,165, 31, 65,147,
-144, 42,187, 35, 28, 52, 95, 0, 96,156, 12, 90,204,109,104,181, 88, 0,248, 18,185,184, 54,247, 45,108,241, 73, 82, 29,105,222,
-245, 17,210,233, 88,111,181,134,222, 2,176, 14,166,195,135,118,241,247,245,214, 18,198,253, 63, 63, 9,138,255,120, 39, 38,149,
- 78,123,123,232, 46, 68,111,231, 47, 6,239,215, 3,238, 31,200, 16, 11,223, 51,220,105, 24, 48, 18,163,150,126,140,146,231,239,
-192,104, 7, 48,224,242,201,184,252,154, 25,168,248,169, 8, 63, 45,155,140,203, 86,236, 68,220,160, 75,162,210, 17,118,181, 0,
- 36, 9,189,222,213, 2,136,197,233,202,132,235, 64, 95,181, 55,159,209,206, 51,208,233, 50,137,211,233,248,143,115, 75,164, 51,
- 93,135, 35,244, 22,128,164, 40,232,245, 90,184,213,160, 0, 14, 20,151, 99, 79,225, 73,152,173, 54, 56,108,237,176,182, 59, 96,
-179, 57,208,222,110,131,205,214,142,246,246,200,212,122, 60, 58,110,238, 66,169,125,106,181,154,205,201,201, 42, 43, 46, 62,246,
-227,111,141,191, 24, 4, 0, 10, 53, 0, 0, 17,191, 73, 68, 65, 84,226,112,164, 88,160,156,195,134,179,239, 46,131,233,248,143,
- 96,108, 54,112, 28,235,210, 9,203,186,214, 1, 16, 36,137,159,127, 58, 9, 34, 33, 3, 3, 46, 25,133,161,227,174, 66,124,114,
- 18, 74,158,156,133, 81, 15,252, 19,125,175,156,237, 55,252, 25,122, 11,192, 48, 48,153,172,104,181,180,186,251,254, 98,209,139,
- 5,223,241,191,103,132, 72,236,239,187, 27,140,111,215,135, 95, 55,183,134,238,131,178, 12,131, 22,139, 21, 86,179,213,109,251,
-158,194, 50,124,248,225,199, 72, 77,237,214, 55,117, 0, 0,206, 84,158, 33,115, 46,155, 48, 18,128,151,128,122, 59,127, 49,196,
-174,136, 88,164, 23,190,122, 13,134,246, 26, 92,126,211,181, 80,209, 52, 8, 82, 5,130, 82,117,252,165, 0,130, 2, 8,210,181,
-168, 52,224,156, 54,192, 97, 69,159,223,141, 64, 94, 82, 31, 28,120,253, 47,104, 61,187, 8, 67,127,191, 68, 82,252, 97,183, 0,
- 6, 61, 13,112, 90, 55,113, 30, 58,114, 26, 63,236, 43,131,181,205, 14,155,205, 1,187,221, 1, 91,199,226, 90,119,194,102,115,
- 8, 29,158,112, 65,146, 36, 75, 16,132,228, 80, 63, 65, 16,109, 28,199,173,224, 56,238, 5,175,243, 0, 24,245, 26,128,209,186,
-109, 87,171, 73,164,166,166,162,241,226, 47,112, 48,145,173, 45,131,133,181,165, 30, 14,135, 67, 50,204, 24,152,127, 25, 88, 38,
- 50,157,212, 80,225,143,191, 39, 60, 13,128, 36, 73,176,246, 54,232,245, 58,208,176,129, 96, 24,128, 83, 1,156, 26, 32, 85,224,
-160, 5,152, 86,128, 84,185, 12,193, 97,117,233, 80,173, 5,156, 54, 24, 18, 19, 48,249, 15, 55,163,248,203,119, 96,169, 60,138,
-203, 22,191, 3,130,144, 14,157, 6,139,206, 22,192, 98,133,197,212, 10,113,205,190,191,184, 28,239,125,176, 3,169, 41,169, 65,
- 39, 28, 34,124, 22,112, 77,109,141, 46,123,212, 21,107, 0,120, 25,128,131,101,209, 98,182,194,220, 98,133,187,127, 76,129, 1,
-224,112,216,224,112, 88, 61, 79,235, 82,248,187,190, 63,254,252,185,172,163,123, 13, 32,152,242,147,234,244,166, 77, 91,128,202,
- 45, 15,227, 68,201,215,110, 35,161, 36,165,198, 37,179,254,128, 65,253,141, 32,193,130,160, 84,112,201,128, 5,199, 56, 1, 16,
- 0, 99,135,154, 0, 38,220,112, 61, 14,253,251, 59, 28,255,231, 99,184,116,209,139, 97,139, 31, 16,181, 0, 58,157, 6,156,211,
-229,131,242, 46, 11, 77,107, 92,239,200,175, 43, 5,227,236,222, 27, 96, 51, 91,224,112, 58, 37,223,125, 71,145, 36,244,122, 53,
-224,112,241,231, 71, 72, 53, 90,254,240,224, 90,168,214,214,118,234,182,249, 75,238,254,240,221,181, 91, 12, 6,173,159,147,131,
- 72,215,207,161,254,248,243,145,127, 70,162, 51,235, 15,255,251,229,143,253,223,125,239,139, 73,167, 42,170,178,109,237,118,131,
-205,238,212,165, 36,199,159,203, 28,216,175,226,134, 27,166, 29,188,243, 15,215, 86, 6,149,160,204,172,250,234,164,234,210, 6,
- 35,123,249, 78,161, 69,176, 55,212,162,116,253,157, 24, 49, 97, 50, 50, 6,247, 1,103, 51,129,160,104, 16,201, 67, 65, 14,201,
- 7, 17,159, 1, 16, 36,184,230, 42,176,167,190, 1,123,254, 48,208,214,136, 49, 83,167, 96,239,206, 93, 56,251,245, 88,100,206,
-186, 39, 44,241, 3, 66, 11,192,194,108,178,194, 98,110,117,243,203,217,142,206,137,211,209, 6,167,195, 51, 74, 35,233,169, 68,
- 13, 38, 83,179,207,125, 12,203,194,220, 98,133,197, 98,113, 15,110, 48,162,152, 95, 16,110,218, 29, 11,150, 46, 56, 89, 94, 53,
-238,142, 5, 75,153,207, 62,220,176, 37, 84,206, 98,176,126, 4, 28, 73,254, 53,181, 23,181,127,186,255,111,127,172, 56, 83,227,
-245, 45,212,139,191, 54, 13,190,248,107,211,224,162,146,210,233,255,243,254, 23, 7, 86, 63,185,104,199,232, 81,195, 77,225,242,
-247,132,191, 89,158, 36, 73,194,124,234, 39,148,191,122, 31, 46,159,115, 35,146, 18,105,112,173,191, 2, 42, 45,136, 33, 83, 64,
-101,205, 1, 33,126, 52, 50,109, 52,200,190,163,192,156,248, 2,206, 35,219, 65,181,215, 99,252,172, 25,216,243,246,227, 24,116,
-245, 93, 32,213, 26, 95, 52,228,113,117, 17, 38,160,215,209,208,235, 53, 48,232, 53, 48,232,181,208,235, 53,208,105, 93, 31, 93,
-115,205, 10,101,187,117, 1,231,251, 6,184,106, 80, 23,103, 99,199,162,215,107,160,213,187,124,106,214,115,154,165,159,101,233,
-170,141,147, 79, 85,156, 29,195,113, 28,121,170,226,236,152,165,171, 54, 78,150,123,174,255,197,183,128, 35,201,255,238, 69, 79,
-221, 35, 37,126, 15, 16,199,203,206, 76, 88,176,240,169,197,199,126, 41,143, 15,151,191, 91,194,126, 98,244, 36, 73,226,226,143,
- 31,161,226,159,127,193,132,155,111, 69,146,222, 14, 88,235, 93,247, 54,126, 0,136, 97,215,130, 97, 89,148, 86,214,227,227,255,
-156,196,182, 47, 75,241,195,207, 53,176,218, 28,192,240, 89,224,172,141,112,254,252, 62,232,243,133,232, 51,112, 16, 46,150,124,
- 35,139,147, 63,116,182, 0,150, 54,152, 76, 86,239, 57, 59, 28,231, 34,232, 71,128, 82,224, 34,220, 66,112,254,106, 80, 7,139,
- 22,139, 21,150, 22, 15, 63,149,101,248, 89,101, 96,101,220,192,175,191, 61,144,254,213,238,125,179, 29, 14,167, 14, 0, 28, 14,
-167,238,171,221,251,102, 79,155, 58,182,252,154,233, 87, 93, 8,135,191, 63, 4,230,223,241, 83, 70, 30, 30,252,243,109, 59, 31,
- 91,246, 82, 54,195,176,234, 97, 67, 7,254,116,253,156,188, 31,114, 39,142, 62,103,212,235,156,187,191, 43, 26,180,235,243, 31,
-243, 78, 85,156,189, 2, 0, 76,230,214,190,119,223,255,183,135,118,127,254,210,179,241, 70, 67,120, 95,154, 16, 65, 42, 10, 68,
- 18, 4, 42,223, 43, 64, 91,121, 33, 38,221,124, 19,104,219,175,224, 28, 78, 16, 36, 5, 16, 12,184,193,249, 96, 88, 14, 21,231,
-154,241,213,193,106, 56, 25, 22, 37, 39, 47,226, 84,109, 51,254,235,250, 81, 88,112,205, 72,112, 19, 31, 1,202,191, 2,103,185,
-136,126,253, 47,195,217,221, 91,208,239,170,235,194,226,218,209, 7, 32,160,213,209, 96,156,180, 56,242, 9,157,150,239, 19,116,
-198,106, 35,135, 32, 13,196,223,245, 41, 64,175,209,128,213,187,119, 17, 52, 26, 45, 4,217, 4,160,223,216,100, 86, 63,249,244,
-230, 63, 89, 90,219,220, 62, 18, 96,105,109, 75,121,242,233,205,127,186, 98, 76,246,218,228, 36, 99,200,161, 36,198,223, 55, 5,
-252,242, 7, 0, 6,172,204,231,144,174,187, 58,247,220,161,146,147,111, 3,192,202,165,127, 44, 18,239, 27,122,247,128,227,247,
-221,125,243,241,213, 27,222,249,105,235, 59,159,255, 23,199,113,100, 83,147, 57,163,224,239,111, 78,222,176,250,193,239,252, 38,
- 44,243,155, 8,158, 97, 80, 62, 2, 84,250,210,221, 48,210, 44,174,186,118, 26, 40,214,138, 54, 58, 29, 78, 66,131, 56,107, 57,
- 8, 16, 96, 13,253,192, 57,157,216,247,203, 5,156,107,104, 69,113,217, 5, 88,218, 92,197,253,225,119,229,184, 53,111, 48, 52,
-125,115, 64, 18, 36,184,182, 38, 36,100,196,227,248,225, 34,127, 84,100,129, 4, 92, 45,128,197,210, 14,147,169, 13, 45,102, 43,
- 76, 29, 11,195,176,252, 67, 48, 81, 88, 56, 25,139,251,241,190,192, 50, 12, 44, 86, 43,204,102, 27, 90,204, 86, 97, 17, 68,195,
- 6,110,226,231,221,179,234, 79,109,109,237,241, 6,131,174, 65,156,182,193,160,107,104,107,107,143,159,119,207,170, 63,185,218,
-145,208, 22,191,179,121,252,242,103, 59,140,199,247, 98,179,181,147, 31,124,188,123, 48,255,123,229,210, 5, 69, 43,151, 46, 40,
-242,117,252,242, 71,230,149,204,156,118,197, 78,254,250,223,124,123,112,142,205,214, 78, 30, 63, 81, 97,252,223,175, 10,251, 75,
-157, 19, 76, 24, 65,236,242,216,155,206,227,231, 85, 87, 35, 61, 85,143,156,241,217,160,156,173,104,110,105,199,119, 91, 94, 3,
-107,109, 2, 8, 10, 28, 99, 7,227,116,130, 97, 24,212,254,106,198,247,135,207, 10,226, 7, 0, 45, 77, 1, 28, 11,135,195,193,
- 95, 0,148,154,134,163,205, 18, 4, 43,105, 8, 45,128, 78,171,134,211, 78, 67, 60, 98,165,211,209, 29,235,209,104, 1,130,131,
- 63, 3, 32, 41, 10, 26,173, 26, 14,155, 26, 64,103, 45,170,215,119,214,160,129,198, 42, 62,255,120,237,107,252,250, 37,227,230,
-189,206,175, 23,239,217,252,184,112, 80, 56,227, 29,126, 78, 13,151,255,226, 21, 47, 79,255,110,207,161,217,159,127, 85,184,247,
-173, 77,203,254, 69,146,100,192,230,245,169,199,239,253,246,187, 61, 37,215, 57,157,140,166,221,102,143,159,124,237,253,171,218,
-172, 54,227, 93,119,206,122,103,214,204, 43,207,121,243,151,159,119,222, 0,218, 47, 86,225,216, 51, 55, 32, 39, 63, 15,233,125,
-227, 0,214,137,186, 11, 45, 56,242,159,239, 17, 55, 96, 4, 28,173, 45, 32, 18, 40,112,237,173, 96, 27, 78,161, 13,122, 12,239,
-175,135,231,173,158, 62,166, 31, 24,198, 9,212,254,228,242, 4,212,122,216, 29, 28,116,201,225, 15, 16, 10,125, 0,139,165, 13,
- 38, 97, 36,210, 53,215,135, 97, 59,134,171, 59,106,227,238,132,191,235,179, 12, 3,171,217, 6,179,104, 36,149, 5, 58, 69, 35,
-199, 7,242,157,122,136,231,201, 79, 71, 30,127,105, 56,156, 78,162,168,228,196, 4,155,221, 17, 87,244,211,241, 25, 87,223,240,
-240,224, 87, 95,124,236,141,172,161, 3, 37,171,199,186,186, 70,205,194,191,174,157,223,216,104, 74,227, 56, 78, 8,183, 52, 55,
- 91,250,245,237,147,120,250,209, 7,239,240,241,186,149,224, 92, 32,130, 32, 80,254,250,159,145, 51,121, 18,210, 18, 9,112,148,
- 26, 85,167, 47,160,226,200, 49, 92,185,250, 59, 92, 60,248, 57, 26,203,191, 66,106,223, 75, 0,243, 5,224,135,213,176, 93,251,
- 38, 38,100, 37,225,246,252, 76,124,123,164, 14,118, 39,131,137,151,244,193, 13, 19,250,195,225,112, 64,115,240, 69, 0, 0,153,
-152,137,230, 38, 51,146, 70, 78,148,197,201, 31,132, 22, 64,163, 85, 67,111,231,163, 62, 0,192, 65,175,227,127,247,132, 22,192,
-247,245, 73, 0,106,173, 26,250,142, 56,186,203, 93,101, 93,177,117,184,220, 8,132,250, 44,127,132,222, 1,224,207,135,247,207,
-223,181,238, 75,128, 79, 63,251, 86,110, 83,179,185,159,235, 60, 86,117,238,124,253,136,187,238,253,219,226,249,183, 95,253,241,
- 3,247,221,122,212,243,248,180,180, 68,219,204,169,227, 14,190,251,193,238,223, 51, 12, 43, 52, 55, 36, 73, 58,243,115,199,252,
-232,235, 58,193, 56, 65,188, 1, 56, 77,191, 34,121,192, 36,112,156, 29, 39,142,156, 64,253,197,102,140, 95,179, 7,234,184, 68,
- 12,152, 62, 31,251, 62,127, 5,131, 71,143, 6, 89,251, 19, 84,109, 77,208, 22,254, 29,230, 43,151,226,150,220,254,184, 37,183,
-127,103, 95, 2, 44,212, 7, 95,132,186,250, 63, 0,169, 2,219,111, 28, 78,254,239,247,152,180,250, 37,217,156,124,193,245, 68,
- 24,223, 7,224,107,160, 14, 3,112, 58, 88,215,143, 16,162, 64,129, 16,108,140,200,159, 1, 56, 88,192,106,110, 71,139, 91, 20,
-133, 5,239, 50,178,108,176,195, 72,226, 84, 34,133, 80,249,119, 60, 14,239,195,128,246, 20, 30,201, 19, 63, 73, 71, 81,164,131,
- 86,171,108,223,252,231,167,241,183,221, 56,229,100, 90, 90,146,215, 52,207, 7, 22,222,116,244,218, 25, 87,156, 89,244,240, 11,
- 11, 47,212, 53, 13,101, 89, 86,149,152, 24,119,126,229,210,187, 10,125, 26,170,204,130, 16,183, 0,241, 35,115,113,224,255,190,
-129,195,106,129,113,216, 21,184,252,111, 31,128, 82,187, 30,134, 87, 27, 18, 48,112,246, 66, 84,252,242, 3, 70,102, 92, 1,166,
-226, 27,196, 29,123, 11,244,133, 98, 88,114, 22,194,158,154, 3,150,160, 64, 55, 28, 69,220, 47,111, 67,115,126, 31, 0,128, 28,
- 48, 30, 53,181, 77,232,115,217, 12,196,101, 12,151, 71,202, 15, 68,125, 0, 26, 14, 59,237,166, 76,157,142, 6,135,158,209, 2,
-120, 57,134, 34, 80, 36,160,213,171,225,112,184, 71, 81,244, 90,181,104, 80, 41, 68,254,161,158,231,153,140,223,145, 96, 63,252,
-225,106, 17,164, 6,162, 54,188,252,209,101, 45, 45,173,125, 19,227, 13,231,155, 77,173,253, 0,128, 32, 8,246, 95,239, 61,189,
-142,143, 88,249, 26,192, 26, 54,180,191,229,203,157,107, 94,184,247,254,231,111, 62,114,180, 98,210,149,151,143,216,175, 86,147,
-156,111,165,203, 47, 7,222, 0, 70,222,247, 50,172, 53,101,160,141,201,208,166,244,247, 26, 23, 24, 50,247,207,248,254,254,215,
-144,144,156,139,126,163,255, 0,230,196, 23,160,235,127, 70,242,183,127,145, 40, 36, 26,212,176,153,104,114, 38,224,196,193,111,
- 49,125,211, 33,217,124,252, 65, 5, 0, 44,195,194, 98,109,135,217,220, 57,218,203,193,213, 55,112,245, 1,196,157,208,174, 29,
- 1, 22,248,248, 49, 64,134,101, 97,182,218,208, 98,113,143,163, 59,120,241, 50,242, 7,114, 0,128,166, 85,173,118,187,211, 0,
- 0,159,127, 85, 56,224,250,107,175,170,113,187,158,236,148,228,157,229,151, 63,223,127,145,176,160,236,172,204,139,255,179,121,
-121,193,144,193,233,173,185, 87, 63,180,166,221,102,143,119, 58, 25,205, 83,207,108,157,254,226,154,251,191, 10,196,136, 2,184,
- 45,175, 60,250,201, 71, 59,247,148,220, 48,103, 98,181, 63, 43, 13,102,194,163, 56, 10,100,204, 28,229,123,254,190, 70,135,188,
-117, 63,160,248,239, 55,163,185,111, 50, 70, 92,182, 0,196,133, 18,112,230, 11,224,204,231, 1,150, 1, 17,151, 6,194,216, 15,
- 68,122, 14, 42, 79,159, 71,229,177,125,200, 91,243,111,104,147, 67,250,142,159, 23, 72, 0, 32, 72, 2, 90,141, 10, 58, 45, 13,
-157, 86, 13,173, 86, 13,157, 70, 13, 93, 71, 13, 20, 94,248, 50,130,163,193, 62,115, 65, 66,175, 38,161,215,104,161,215,168, 59,
-151, 14,254, 12, 24,183,119,235, 4, 90, 18,226, 13, 23,249,164, 55,109,222,117,227,174,175, 14, 12, 16,239,143, 56, 2,241,103,
-164,121, 94, 61, 99,220,185,225, 89, 3,205, 42, 90,205, 78,155, 50,230, 11, 62,185,127,239, 57,124,211,154,141, 31, 93,238, 43,
-127,207,108,120,255,202,191,173,251,159,171,248,223,183,220,148, 95,169,162,213,172,191, 50,145, 11, 57, 79,110,137,247,233, 82,
- 51, 48,121,195, 62,112, 41, 35,241,227,174,175, 80,209,148,136,166,164, 60, 48, 87, 60, 0,118,194, 35,104, 73,191, 6, 85,214,
-126, 40,252,247, 65, 52, 90, 40, 76,127,245,103,196,103, 70,238,131,229,157, 45, 64,107,187,240, 92, 46, 63, 25,206,238,100, 59,
-126, 69,218, 5, 10,190, 21,241,123,125, 7, 11,139,213, 6, 75, 71, 13,202,223, 48,135,184,214, 10,226,227,214,151,102,255,238,
-208,183,123, 14, 13, 1,128,170,179, 23,115,150, 63,185, 57,103,249,147,155, 37,143,253,185,240,245,255,150,151,106, 56,252, 25,
-255,231, 3, 88,185,100,222, 15,251, 15, 30,159,220,212,108,201,224, 56,142,220,182,253,235,255,222,187,239, 88,241,245,215,142,
-255,113, 90,126, 78,181,213,106, 87,237, 59, 88,218,255,139,221, 69,147, 43, 78,159, 31, 7,128,163,212, 4,179,244,161,219,139,
-195,230,239,129,160,223,240,160, 82, 35,231,254,141, 48,159, 45, 67,195,177, 31, 81,115,120, 55, 26,190,221, 14,142,113, 34, 41,
-235, 10,164,140,189, 6, 99,110,204, 67,210,240,200,191, 18, 85, 5,116,180, 0,180, 26,118,173,218,109, 50,156, 94,199,191,227,
-170,179, 19,220, 53, 14,144,212, 85,252,143,164,106,212,106,104, 52,158, 62, 52,127, 86,112, 46,208, 51, 79, 44,248,230,250,219,
- 43,198, 53, 52,154, 50, 3, 31, 45, 51, 93,127,209, 36, 57,252, 3, 68,163,140,122,218,185,105,195, 3,255, 88,248,224,139,139,
-205, 22,107, 95, 0,168, 56,125,238,138, 23, 95,221,121,197,139,175,238,148, 58,133,248,225,199, 99, 19,150, 62,248,123,153, 6,
- 16,222, 92,160, 64,207,242, 18, 4,129,132,204,108, 36,100,102,227,119,215, 73, 62,148, 22, 21,144, 4, 65,176,237,237, 54,180,
-181,219, 97,182,180,193, 98,105,131,197,226,106, 13, 56,182,195,165, 97,157,238,147,210,162,190,112, 94,139,211,233, 4, 65, 16,
- 82, 86,192,217,218,219, 97,181, 57, 96,177,182,187, 22, 75, 59, 44, 22,107,135,102, 92, 35,136,193, 44, 52, 77, 50,255,122,119,
-229,154,105,121, 57,159,244, 73, 77, 56, 67,171, 85,173,190, 10, 80,110,154, 86,215, 51,183, 82,150, 29,144,191,220, 80,236,168,
-145, 3, 77,111,188,244,192,186,145,195, 7,236,247,113, 45, 1, 67, 50,211, 15,189,254,210,131,210,205,154,143,124, 6, 74,147,
- 71, 40,226, 15,103, 74,115, 56, 80, 25,244,154, 95, 79,148,157, 72,235,155,214, 31,214,214, 70, 97, 46, 16,195, 48, 72, 73, 27,
- 8,198,233,128,169,165, 81, 56, 33,208,135,181,229,124,119, 59,208, 68, 57,207,107,112, 28,135,242,138, 90,104,181,244, 89,207,
- 99, 13, 6,109,123, 89, 89,185, 46,173,111, 63, 88,173,141, 66, 69,197,178, 14,100,244,205, 0,227,112,160,165,165, 62, 48, 41,
- 15, 16, 20,152,167,159,152,255, 21, 0,191,157, 73,171,156,135,201, 89, 6,149,213,231,161,211,209, 94,134, 20,144, 63,203,160,
-197,220, 36,155,247,144,193,233,166,173,175, 63,186,101,231,231,251,190,251,191,221,197,227,107,106,235,135, 54,183, 88, 50, 84,
- 42,170, 77,163, 81, 91,134, 14, 78, 47,253,253, 13,121,123,103, 76,205, 57, 7, 0, 86,171,188, 7, 93, 42, 42,206,195, 32,193,
- 95, 10,189, 69,252, 0,160,210,106,212, 37, 31,239,216, 49,251,207,247,223,139,227,165,135, 93,115, 50, 88, 14, 14, 7,131,153,
-179,167,163,169,241, 28,204,226,232, 68, 32, 3,144,113,209,192, 70,228,109, 0,133, 7,142,183, 51, 12,187,207,243, 88, 61, 77,
-215,239,248,100,199,192, 69,139,238, 69, 89,217, 97, 48, 14, 7, 28, 44,224,112,176,152, 49,107, 38,154,154,106, 96,181,118,239,
-195, 60, 96, 89, 20, 30, 56,193,112, 28, 91,231,185,203, 47,255,235,102,162,165,177, 86, 38,127,247,198,241,154,233, 99, 42,175,
-153, 62,166,210,215,209,178, 12, 87,148,244,190,226,147, 12, 35,193,223, 19,189, 73,252, 0,160,210,171,201,191,124,188,227,179,
-147,191,191,245, 22,234,206,187, 30,193,201,178, 18, 48, 12,131,172,145, 99,209,167, 79, 95, 28, 41,250, 20,182,246,206, 41, 18,
-129, 16,168, 5, 8, 36,126,169, 99,206,214,214,227,227, 79,247, 58,236,118,231,147,158,199, 38, 16,170,189, 31,237,248,236,246,
- 91,111,185,137,184,253,174, 71, 81, 94, 86, 2,134,113, 32,107,228,229,232,155,154,134, 35,197,187,130,124,229, 71,228,227, 60,
-181,181,245,248,104,231, 94,214,225,112,122,249,219,126,249,167,245, 67,217,225,207, 96,179,186,119,142,187, 26,213,213,245,120,
-127,199, 30, 73,254, 82,144, 35,252, 80, 94,100, 27, 13, 16, 28,199, 97,208,160,212, 69, 13,245,150,141,119,222,113, 3, 53,247,
-250,235,144, 53,252,119,104, 53,215,227,116,121, 17,236,182,206,218, 95,142,120, 3,217,136, 44, 3, 0, 7,134, 97,113,225, 98,
- 51,142, 28,171,108,219,249,249, 65,134, 97,157, 15, 57,157,220,155, 82,199,103,102,166,100,215,215, 91, 39,253,191, 59,230, 18,
- 55,204,189, 14,195,135, 14,133,213, 90,143,202,242, 98,180,183,119,207,179,192, 44,203,224,124, 93, 11, 74,142,156,113,238,216,
-181,143,115, 56, 28,251, 56,142, 43,147, 58,182,147,255, 77,196, 77,115,175, 67, 86,214, 96, 88,173, 77,168,174, 40,129, 35, 66,
-252,131, 53, 30,150,101,112,254,124, 19, 14, 29, 57,229,124,239, 95,254,249,243,184,226,138, 43,184, 3, 7, 14,192,102,179,117,
-139,248, 79,158, 60,137,121,243,230,161,184,184, 88,118,179, 66,240,130, 76, 72, 72, 24,166,166,216,151,219,237,206,203,172, 86,
- 91, 31,241, 68,169,238, 0, 65,128,165,105,245, 89,150,101,247, 57, 28,204,147, 28,199,157,244,119,124, 74, 74, 74, 60,197, 57,
-243,172,118,123, 74,107,107,187, 22, 8,252, 74,240, 40,131,211,209,116, 43,199,178,117,237, 78,103, 49,199,113, 45,254, 14,238,
-237,252,129, 78, 3,176,219,237,221, 82,243,135, 98, 0,194, 28,146,150,150,150, 83, 0,102, 69,133, 89, 23,160,161,161,193, 4,
-224,139,128, 7,246, 80,244,118,254, 60,236,118, 59, 78,157, 58, 37,233,231, 71,219,237, 81,171, 37,223,153,224, 23,202,103, 82,
- 21, 68, 12, 26,141,166,110,242,228,201,221,250, 22, 47,141, 70, 19,176,163, 46, 6, 33,203,175, 87,160,224, 55,138,158,209, 21,
- 87,160,160,155,160, 24,128,130,152,198,255, 7,109, 43,244, 49, 78,182, 48,112, 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, 0,192, 0, 0, 0,192, 8, 6, 0, 0, 0, 82,220,108, 7, 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,237,125,121,156, 20,197,221,254, 83,125,205,204,206,206, 30,236,194, 94,200,130,200,181, 34,
+ 32, 40, 1,228, 88, 48, 70, 64,209,168, 81,140, 33, 26, 77, 66, 98,242,198, 55,106,162,198, 11,242,198, 68, 5,209,188,106,140,
+ 49, 94, 16,125,127, 49, 30,241, 74,226,145, 40,162, 34,114, 9,114, 45,187,171, 92,123,176,176,247, 28, 59, 71,119,215,239,143,
+217,158,237,233,233,158,233,185,150,197,237,103, 63,179, 51,221, 93, 93,245, 84,245,243,173,250,214,209,221,132, 82, 10, 11, 22,
+ 6, 43,152, 19, 77,192,130,133, 19, 9,203, 0, 44, 12,110, 80, 74, 35, 31, 0,203,149,143,178,109,240, 93,222, 27,110,154,230,
+252,114,245,249,234, 56,213,219,218,223,122,233,234,241,136,119,142,206,113, 35,142,186,113,197,137,191, 60, 1,199,242,120,101,
+160, 87, 38,154,253,137,226, 55,228, 19,111,127,162,242, 77,230,250,104, 63,218,178,141,163, 15,109,222,116,243, 26,175, 76, 12,
+174,109,204,183, 94,124,102, 62, 81, 45, 0,165,244, 9,245,119, 28, 92, 72, 41,125,130, 82,186,205, 96,255, 19, 0, 64, 8, 89,
+174,108, 19, 66,150, 43,129,212,191,141,210, 85,199, 99,246, 28,147, 28,117,161,141, 95, 21,247,133, 70,156,180,199, 53,233, 62,
+ 97,176, 29, 21, 78, 57, 95,155, 31,163, 50,209, 73,207,112,191,230,120, 76, 89,153,189, 62, 58, 72, 84,182, 23,234,149,157,118,
+ 59, 81,153,196, 3, 33,164, 28, 64,115,130,248, 18, 34,161, 11,100, 80, 24,111, 18, 66,150,247,146, 72, 26,218, 2, 55,147,174,
+153,115,210,225,152, 10,167,222,237, 55,147,224, 20, 55, 62,147,225, 99,210, 75,151,135, 22,122, 6,161,124,122,119,197,148,173,
+ 65,217, 24,114, 52,202,123, 18,101,114, 33,165,244,141, 20,206,139, 66, 66, 3,208,179, 42, 74,105,147, 89, 75, 77, 38, 94, 19,
+233,154,182,240, 84, 56, 38,203, 41,219,101, 96, 16, 62,233, 22, 32, 21,232,181,198,170,150, 36,166,108, 13,202,198,144,163, 81,
+222,147, 40,147, 55, 9, 33, 75, 82, 56, 47, 10, 92, 42, 39,169,107, 2, 29, 82,203, 21, 66,234,154, 36, 89,130,169,158,151, 12,
+ 71,157, 99,122,113,196,212, 90, 9, 56,189,169, 9,167,221,206, 56,122,227, 87,220, 17,211,249, 75,245,250,152,141,223, 76, 28,
+137,210, 53, 10, 71, 41,109, 34,132, 92,152, 40, 92, 66, 30,212,154, 7,176, 48,136, 97, 13,131, 90, 24,212,176, 12,192,194,160,
+134,101, 0, 22, 6, 53, 44, 3, 72, 3,132,144,242, 84,135,223, 44, 12, 16,232,204,242, 37,154, 89, 77,102,182, 54,238, 57,113,
+102, 0, 19,206,226,170,247,233,165, 29,143, 71,170,233, 26,229,217, 12, 95,163,176,122,113,170, 57,105,243,169,141, 83,111, 59,
+206,185,134, 51,172, 38,174,101,170, 51,227, 70,231, 37,154, 65,143, 59, 99,159,169, 79, 50, 6,160,187, 95,239, 98,152, 61,199,
+ 40,141, 68,225, 18, 8, 44, 33,143,116,210,213, 11,147,204,121,102,202, 49,153,112,102,242,145,236,117,137, 87,134,102,211, 72,
+182,172,147,201, 95, 38, 63,105,185, 64,169,204,214,154,156, 1,204,202, 76,179, 94,124, 25, 74, 55,153,243, 18,206,162, 26,193,
+ 76,184, 84,103,139, 51,113, 45,227,165, 77, 77,142,207,167,122,205, 83, 69, 90, 6,160,151,169, 68, 25, 53, 58, 78,163,103, 30,
+179, 53,211,108, 52,139,154, 86,186,201,156,167, 23,214,172, 56,204,132, 51,226,145,136, 95, 38,174,101,188,180,147, 89,226, 96,
+ 50, 92, 70,160, 59, 19,108, 48,171, 22, 51,163,105, 98,246, 45,149,115,226,206, 52,166, 56,211,252,102, 18,181,167,110,186, 41,
+158, 23, 51, 43,171, 23,214,160,140, 50, 58,139,171,153, 45, 54, 74,211,204,117, 73,106,102, 60, 78,126,227,149,149,118, 59, 42,
+108,111, 43,113,161,217,138, 35, 30,172,153, 96, 11, 39, 29,146,113,169, 18,198,101, 25,128,133,193, 12,107, 30,192,194,160,134,
+101, 0, 22, 6, 60, 8, 33, 89,115, 83,190, 18, 6, 96,205,200,126,181, 65, 41, 37,218,125,132,144,106, 66, 8, 85,125,170, 83,
+141, 92,119,210, 2,250, 51,140,166,238,201, 84,109,155,189,183, 51,238,236,168,222,121, 6,124,210,186, 87, 89,143,115,162, 60,
+105,227, 78,162,108,226,206,160, 38,251, 1, 80, 13,128, 2,168,238,221,166,170, 99, 84,249,214,134, 49,216,214,134,167,154,180,
+180,219,134,105, 39,147,190,122,159,118, 91,179,175, 90, 47, 13,117, 60,166,203, 77, 79,252,102,127,107,191, 19, 29, 79,244,173,
+151,150, 25,110,201,156,103, 54, 47,233,114, 55, 83,142,241,226, 73,250, 66,170, 68,166, 21,146,217,111,163,184,140,210, 50,155,
+118, 42, 60,140,210,208,132,175, 86, 11,223,136,111,188, 79,202, 46, 80,178,247,128, 38, 64,202,179,163,137,226, 73, 6, 26,206,
+111, 26,140,123,235,230, 41, 25,238,217,114,215,180,190, 50,165,148, 36,242,159,123,143,207, 87,111, 83,149,203, 97,214,255, 54,
+ 74,155,106,220, 23,189,244,212,219, 70,113,107,227,233,197,251,148, 82, 66, 41, 93,111,134,163, 30, 82, 54, 0,154,220, 61,160,
+ 17, 49,233,137,136,166, 49, 59,154, 40,158, 36,207,127,130, 82,218,164,196,165,254, 86,113, 50,138,219, 52,247, 84,242,102, 6,
+122, 34, 49, 16,142,246,248,251,128,190,208,204, 26,131,217,180,213,233,233,109,107, 17, 71,252, 0, 48, 63, 45,255, 31, 58, 51,
+193, 52,205,251, 68,245,206,161,225,251, 55,163,190,245,206, 69,242,247,223,234,114, 64,156, 89, 70,154,230,189,202, 58, 48, 53,
+203,172,199,147,234,204,252,102,114,146,199, 32,237,184, 53,174, 34,114, 69,116,154,237,249,102,106,108, 19,233,255, 90,239,152,
+186,197,210, 51, 60,213,190,249, 42,195, 80,243, 76,154,151, 53, 17,102,225,164, 68,111,173,175,110, 57,230,167,226, 10, 89, 6,
+ 96, 97, 80,227, 43, 49, 15, 96,193, 66,170,176, 12,192,194,160,134,101, 0, 22, 6, 53, 44, 3,176, 48,168, 97, 25,128,133, 1,
+129, 61,211, 8,221, 51,141,208,221,103, 71,143,233, 43,251,247, 76,139,158,131,216,125, 54,169,214,134,215,134, 49,131,148,158,
+ 13,106,193, 66,166,113,250,182,240, 24,127,175,136,137,222, 49, 53,136,140,247, 79,223, 70,137, 18, 62, 21,241, 3, 86, 11, 96,
+161,159,160, 8, 52,158, 80,247, 76, 35,148, 50,177,147, 89,122, 45, 3, 0,236,158, 70, 86, 42,191,245,140,196, 12,172, 22,192,
+194,128,192,158,105,132,234,137, 56, 94,203, 48,113, 27, 93,185,103, 26, 89,145, 78,186, 86, 11, 96,161, 95, 64, 25,204, 87,215,
+240,122, 45,129,218,215, 87,127,235,157,167,141, 47, 85, 88, 51,193, 22, 6, 53,172, 22,192,194,160,134,101, 0, 22, 6, 53, 44,
+ 3,176, 48,168, 97, 25,128,133, 65, 13,203, 0, 44, 12,106, 88, 6, 96, 97, 80,195, 50, 0, 11,131, 26,150, 1, 88, 24,212,176,
+ 12,192,194,160,134,101, 0, 22, 6, 53, 6,213, 98,184,233,211,167,151,202,178,252, 46,128,137,217, 74, 67, 16,132,150,141, 27,
+ 55,150,102, 35,238, 49, 99,198,216, 10, 11, 11,103, 72,146,228,202, 70,252, 0,192,243,124, 96,211,166, 77,239,102, 43,254,129,
+134,164, 12,224,100, 22, 80, 47,247,247,215,172, 89, 35,204,155, 55, 15, 91,183,110, 69, 69, 69, 5,236,118, 59, 88,150, 5, 33,
+ 4, 12,211,215, 32, 18, 66, 98,126,171,247,233,237,247,249,124,248,250,215,191, 94,146,105,238, 64, 88,252, 5, 5, 5, 51,239,
+187,239, 62,102,193,130, 5,216,190,125, 59, 42, 42, 42, 32, 8, 2, 56, 46,124, 25, 89,150, 53, 60, 63,222, 49, 0,224, 56, 14,
+ 62,159, 15,213,213,213,182,140, 18, 31,224, 48,109, 0,122, 2, 42, 47, 47,143, 8,136, 97, 24, 16, 66,116,133,163,254, 29,111,
+ 95,182, 4,164,112,127,224,129, 7,108,243,230,205, 27, 5, 0, 91,182,108,129,223,239, 71, 94, 94, 30,120,158,143,201,131,250,
+ 99,180, 95,123,236,203, 47,191,204, 52,117, 0,125,226,191,255,254,251,153, 5, 11, 22,228, 0,192,230,205,155, 49,121,242,100,
+184, 92, 46,112, 28, 7,150,101,163, 68,174, 24, 5,208, 39,126,245, 62,245,126,229,251,192,129, 3, 89,225, 63,144, 97,202, 0,
+244, 4,180,105,211, 38, 76,154, 52, 9,121,121,121,224, 56, 14, 28,199, 69,137,193,232,119,188, 99,217, 16,144,194,125,245,234,
+213,182,234,234,234, 81,202,126,134, 97, 32,203,114,148, 17, 38, 35,124,163,227,153,134,158,248,129,176,104, 37, 73,130,122, 91,
+ 65, 42,226, 31,172, 72,104, 0, 70, 2,226, 56, 14,178, 44, 3,136, 21, 79, 42,226,207,134,128, 20,238,171, 86,173,178,207,159,
+ 63,127,100, 84,198, 57, 46,101,241, 27, 29,203, 52,140,196,175,240, 87,144, 9,241,107,195, 12, 22,196,205,117, 60, 1, 41,133,
+151, 41,241, 43,219,153,130,154,251,130, 5, 11, 70,106,143, 43,126, 63,165, 52, 35,226,207,180, 17,196, 19,191,194, 95, 11, 75,
+252,201,195,112, 24,212,140,128, 24,134,137, 18, 80,186,226,207,148,128, 18,113, 87,248,171,211, 76, 87,252, 12,195, 68,117,162,
+211, 65, 34,241, 43,252,141,220,151, 84,197, 63, 24,221, 33, 93,211, 55, 35, 32,197,133, 80, 4,148, 9,241,103, 66, 64,106,151,
+ 77,219,106,169, 97,179,245, 13,118,100, 66,252,153, 50, 96, 51,226, 7,140,107,109, 75,252,201, 33,166, 20,205, 10, 72, 16, 4,
+ 0,136, 18,110,186,226, 79, 87, 64,234,206,186,186,191, 2, 0,129, 64, 0, 7, 15, 30,196,225,195,135,209,214,214, 6,135,195,
+145,208,157, 49,227,242,104,143,167,131,120,226, 15, 4, 2, 56,112,224, 0, 14, 31, 62,140,142,142, 14,228,228,228,196,136,217,
+ 18,127,242,136, 42, 41, 51, 2, 58,116,232, 80, 68, 64,106, 55, 98, 32,248,255,178, 44,191,251,224,131, 15, 10,115,231,206, 29,
+ 37,203, 50, 26, 27, 27,177,119,239, 94,212,214,214,162,181,181, 21, 46,151, 11,133,133,133, 40, 44, 44,140, 12, 31, 42,174,203,
+137, 22, 63, 0, 20, 22, 22,206,120,224,129, 7,152,185,115,231,230, 72,146,132,198,198, 70,212,212,212,160,174,174, 46,138,127,
+ 65, 65, 65,132,191, 90,248, 64,122,226, 31,140,134, 16, 85, 90, 70, 2,218,191,127, 63,142, 31, 63,174, 43,160, 76,250,255, 25,
+112,129, 38, 86, 85, 85,225,177,199, 30, 67,109,109, 45, 56,142, 67, 73, 73, 9,138,138,138, 80, 94, 94, 14,158,231,193,243, 60,
+ 4, 65,128,221,110, 7,207,243, 81,121, 72,197,229,209,126,210,129, 36, 73,174,170,170, 42,252,225, 15,127, 64, 93, 93, 29, 88,
+150, 69,105,105, 41,138,139,139, 49,105,210,164,136,216,109, 54, 27,108, 54, 91, 84, 63,128,101, 89, 75,252, 41, 64,235, 2, 77,
+156, 48, 97, 2, 30,125,244,209,168, 11, 48,100,200, 16, 76,158, 60, 25, 28,199,129,231,121,216,108, 54,216,237,246,132,227,255,
+253,237, 2, 1,128,219,237,134,211,233, 68,117,117, 53, 10, 10, 10, 0,244, 77,180, 41,105, 8,130, 16,201, 7,195, 48, 49,147,
+ 96,233,244, 5,210, 69,119,119, 55, 92, 46, 23,230,205,155,135,194,194, 66, 0,177,162,213, 26,129, 94,127,192, 18,191, 57,196,
+148,156, 34,160,121,243,230, 33, 63, 63, 63,170,102, 83,220, 5,165, 22, 85,215, 66,122,174, 68, 42,134,145, 46,156, 78, 39,166,
+ 76,153, 2, 73,146,148, 55, 10, 70,226, 85,210, 82, 12, 89,201,139,194, 61,149,137,175, 76, 27,176,211,233,196,228,201,147,163,
+ 38,185, 20,168, 69,173, 22,191,214, 8, 82, 17,191, 82,153, 13, 54,196,228, 88,239, 2,104,107, 80, 69, 64, 44,203, 70, 4,148,
+169,254, 64,218, 25,226, 56, 8,130, 16, 51,203, 11,244, 93,108, 69,236,138,225,198, 91, 6,145,108, 95, 32, 93, 40, 21,139, 40,
+138, 9, 93,154, 76,138,127,176, 34, 38,231,106, 1,169, 71,119,212, 23,122,229,159,254,131,173,123, 26, 33,245,206, 4, 39,139,
+ 93,175,222,105, 40,172,116,161, 94, 23,163,204, 81,196, 91,162,145,168,230,239,239,142,176,222,186, 30, 61, 49,235,137,215, 18,
+127,242,208, 53, 0,165, 86, 49, 18,208,189, 55, 44, 70,107,167, 15,247, 61,253, 30,182,239,107,140,156,251,238, 19,215, 35, 47,
+215, 17, 21,182,189,203,135,250,195,199,241,228,203,159, 96,219,222,195, 0,226, 15,151,166, 11,181, 47,158,138,128,211, 57,150,
+ 41,104,125,114,189,213,158,153,232,240, 14,118,241, 3, 58, 51,193,132,144,136, 75,160,184, 58,138,127,168, 30,118, 43, 45,206,
+195,143, 46,159, 21,117, 46,167,114,131, 20,129, 20, 23,230, 98,230,148, 83,241,212, 61,203, 48,103,218,105,225, 68,179, 56, 19,
+156,140,128, 51, 41,254, 76, 27,129,130,254, 18,127,188,153,229,175, 50,116, 13,192,172,239, 62,178,124, 72,116,100, 44, 99,120,
+ 30,203, 48,184,254,202,185, 9,211,200, 4,210,173,217, 79,228, 40, 80, 60,119, 71,189, 79,217,159, 41,241, 15, 86,232,182,129,
+137, 46,188,242,219,229,180, 71,157,199, 38, 24, 9,154, 50,254, 20,124,109,210,168,126, 17,191,153,124,100,234, 88,166,196,175,
+ 32,153,149,158,201,134,177,196, 31,141, 24, 3,208, 19,144,217, 81, 27, 51, 35, 65,107,239,253, 94,214,196,175,206,131,154,191,
+ 89, 1, 15, 4,241,171, 97,137, 63,251, 48,108, 1,128,248,190,186,222,133,103,152,248,226,207,102,205,175,199, 63,219,226,207,
+ 84,199, 93, 11,163, 78,176,246,152, 37,254,244, 97,216, 7, 72,228,255,235, 93,124,197, 5, 82,135,189,121,213,203,253, 46,254,
+100, 4, 60,208,196,175,133, 37,254,236, 66,183, 5, 72,217, 5,226,162, 93,160, 64, 72,194,134,173,117,134, 98,202, 22,140, 90,
+176, 76,186, 60,150,248,191, 26,208,237, 3,168, 93,136, 68,174,140, 26,108,239,113, 81,146,113,172,205,141, 63,189,248, 17,122,
+ 2,161,126, 23,127,188, 78,240,201, 32,254,120,162,181,196,159, 89,152,238, 3,152,153,184,154,116,201,111,117, 19,233, 47,241,
+107,249,103, 82,252,153,156,171,136, 7,173, 72, 45,241,103, 23,134, 45, 64, 60, 97, 24,137, 97,247,107,119,129, 97, 24,136,146,
+140,150,214,110, 60,254,183, 15,241,242, 59,219, 7,132,248, 51,213, 17,238, 79, 88,226,207, 62,116,199,239,146, 89,200,166,119,
+158,192,115,168,172, 40,198,138,159, 46,129,195,198,247,187,120,146, 21,183, 37,254,193, 11,221, 22, 64,249, 78, 36,126,173, 40,
+180,199,114,236, 2,230,127,109,124,191,139, 39,211, 46,143, 37,254,175, 46, 12,251, 0,102,196,175,103, 0,218,243, 30,189,235,
+170,126,201,136,154, 67, 38, 93,158,254, 22,191, 26,102,132,109,137, 63, 61, 36,116,129,226,137, 95, 43,142,254, 28,237,137, 7,
+ 75,252,150,248,205, 34, 97, 39, 56,153, 97,208,129, 32,254, 84,133,111,137,127,112, 34,238, 98,184,100,135, 65, 7,130,120,180,
+ 60, 82,237, 11,156,104, 88,226,239, 31,152, 90, 10, 97, 36,126,143, 47, 16,117,174,199, 23, 24, 16,226, 57,153,197,175,119,111,
+174,122,201,179, 37,254,204, 34,169, 97, 80,237,144,225,129,198,182,168,243,234, 15, 31,239, 23,210,241,112, 50,139, 95, 15,137,
+214,251,107,143, 89, 72, 14,166,111,136,209,138,165,177,165, 19, 15, 62, 27,253, 34,145,251,159,252, 23,234, 15, 31,235, 55,242,
+ 70,208, 51, 86, 75,252, 22,244, 96,106, 24, 84, 43,150,111,255,226, 73,124,182,239, 72,204,121, 91,118, 29,196, 55,190,255, 16,
+198,159, 90,138,191,220,255,125, 20, 21,228,102, 61, 3,122, 72,101,236,127,160,193, 18,127,255,192,112, 53,104, 60,255,255,111,
+ 15,253, 40,242,123,160, 33,149, 81,160,129,134,100,110,115,180,144, 30,210,186, 39,120,160,226,100, 22,191, 2, 75,252,253, 3,
+ 93, 21, 91,226, 63,177,176,196,223,127, 48,188, 39,248,100, 20,191, 2, 51, 35, 64, 39, 3, 44,241,103, 31, 9,159, 10,113,178,
+137, 63, 24, 12,162,190,190, 62,102,189, 82,127,136,159,231,249,180,227, 16, 69, 17,117,117,117, 0,250,223, 0, 6,163,145,197,
+ 24, 64, 40, 20, 66,125,125,125,148,224,251, 75,252,233, 10,200,102,179,181,204,153, 51, 39, 43,239,233, 77,134, 67,170,231, 58,
+ 28,142,192,172, 89,179, 78,232,123,122, 29, 14, 71, 32,113,168,175, 14,136,242, 4,101, 0, 56,231,156,115,142, 6, 2,129, 19,
+ 46,160,143, 63,254, 56, 43,111, 90,183, 96, 65,139, 40, 3,176, 96, 97,176, 97,224, 59,245, 22, 44,100, 17,150, 1, 88, 24,212,
+176, 12,192,194,160,134,101, 0, 22, 6, 53, 44, 3,176, 48,168,145,212, 43, 66,122,223, 35,252, 46,128,137, 89,226, 3, 65, 16,
+ 90, 54,110,220,152,149, 97, 80,139,127, 98, 12, 54,254,166, 13, 64,121,137,246,154, 53,107,132,121,243,230, 97,219,182,109,168,
+168,168,128,205,102,139,122,215, 46,128,152,111, 51,191, 9, 33,232,233,233,193,130, 5, 11,178, 50, 15,161,240,239,125, 15,242,
+ 73,203, 95, 41,255,173, 91,183,162,188,188, 60,242,182, 72,189, 39,117,104,103,189, 19,229,203,237,118, 99,209,162, 69,131,170,
+252, 77, 25,128,250, 13,242,243,230,205, 27, 5, 0, 91,182,108, 65, 32, 16, 64, 94, 94, 94,212,139,221,146, 93,138,172, 62,246,
+197, 23, 95, 36,195,221, 52,212,252,231,206,157,123, 82,243, 87,202,255,147, 79, 62,193,196,137, 19, 77,243, 55,147,143, 3, 7,
+ 14,100,157,255, 64, 43,255,132, 6,160, 38, 95, 93, 93, 61, 74,217,207,178, 44,100,213, 91, 34, 83,185, 9,165, 63,238,202, 74,
+196, 95,153, 8, 28,232,252, 87,175, 94,109, 88,254,137, 4, 98, 70, 68, 39,170,252, 21,156,168,242,143,107, 0,170,194,183, 87,
+ 87, 87,143, 84, 31, 83, 22, 78, 81, 74, 51, 70, 62,211, 23,192, 12,127, 32,115,133,159, 45,254,171, 86,173,178,207,159, 63, 63,
+134,191,146, 94, 38,132,159,141,167, 94,159, 12,250, 49, 28, 5, 82,147,215, 22,190,146,129, 84, 11,190, 63,150, 41,127, 85,248,
+175, 90,181,202,190, 96,193,130, 24,254,106,193,102, 74,252,131,177,252,117, 91,128, 68,228,149, 12, 24, 93,132,116,158,199,153,
+ 9,124, 85,248, 27,137, 31, 8, 47,149, 78,100, 4,169,184, 69,153,228, 31,175,252, 95,127,253,117, 20, 22, 22, 70, 58,193,122,
+121, 81,126,107,191,149,223, 12,195,224,214, 91,111, 77,171,252, 99, 12, 64,227,179,233,146, 7, 0, 65, 16, 98,246,165, 42,158,
+ 76, 54,191, 95, 21,254,171, 87,175,182, 25,137, 7, 0,108,182,190, 85,211,201, 26,113,188,227,153,226,159,168,252,151, 46, 93,
+138, 83, 78, 57, 5,121,121,121, 16, 4, 1, 60,207,199,140,102,245, 71,249, 71, 25,128, 81,135, 5, 0, 2,129, 0, 14, 30, 60,
+136,195,135, 15,163,189,189, 29, 57, 57, 57,113,239, 28, 75,150,124, 38, 46, 64, 42,252, 91, 90, 90, 34, 15,163,170,172,172, 76,
+200,191,190,190, 30, 64,216,119,157, 48, 97, 66,191,241,247,251,253, 56,120,240, 32, 14, 30, 60,136,214,214, 86, 56, 28,142,148,
+ 90,169, 68,199,179,197,223,227,241, 96,199,142, 29,216,190,125, 59,246,236,217, 3,183,219, 13,167,211, 9, 65, 16, 34,163, 64,
+102,107,126,117, 11,240,171, 95,253, 42, 45,254, 81, 6, 32,203,242,187,189,227,180,163,100, 89, 70, 99, 99, 35,246,237,219,135,
+253,251,247,163,173,173, 13, 46,151, 11, 67,134, 12, 65, 97, 97, 33, 92, 46, 87,100,252, 54,149,103,240, 24,237, 79, 7,169,240,
+223,182,109, 27, 46,187,236, 50,188,241,198, 27, 16, 4, 33,174,112, 8, 33,216,184,113, 35,174,189,246, 90, 60,243,204, 51, 56,
+253,244,211, 51,206,191,119,156,127,148, 44,203,104,104,104,192,222,189,123,177,127,255,126, 28, 59,118,204,176,252, 7,130,248,
+147, 41,255, 69,139, 22,161,160,160, 0, 46,151, 11, 57, 57, 57,176,217,108,145, 22,160,191,245,163,117,129, 38, 86, 85, 85,225,
+177,199, 30, 67, 93, 93, 29, 88,150, 69, 73, 73, 9,138,139,139, 81, 81, 81, 1, 65, 16,192,178, 44,108, 54, 27,236,118,123,164,
+230, 76,165,179,146,165, 38, 56,105,254,219,183,111,199,103,159,125, 6, 66, 8, 74, 74, 74,162,120,168,239,136, 83,190, 63,249,
+228, 19,108,220,184, 17, 0,240,195, 31,254, 48, 43,252, 31,125,244, 81,212,214,214,130,101, 89, 12, 27, 54, 12, 69, 69, 69,152,
+ 52,105, 18,120,158, 7,199,113, 17,254,202,118, 38,196,159,237,242,255,248,227,143, 35, 2,231, 56, 14, 60,207, 71, 68,175,180,
+ 0, 64,252, 26, 95,123,140, 16,130,219,111,191, 61,163, 6, 0,143,199, 3,151,203,133,234,234,106, 20, 20, 20,196, 36,200, 48,
+ 76,132,188, 50, 11,169,231,187,165,218, 34,164,139,100,249,111,221,186, 53, 50, 23,176,105,211, 38, 0, 97,247, 70,249,104,183,
+213,251,178,193,223,237,118,195,225,112, 96,206,156, 57,200,207,207,143, 49, 72,165,188, 5, 65,136, 24,180,153, 73, 48, 51,198,
+145,205,242,255,233, 79,127, 26, 83,254,118,187,221,208,255,239, 47,253,196, 24, 64, 78, 78, 14, 38, 79,158, 12, 73,146, 34, 23,
+ 89,129,146,176, 98,193, 44,203,130,231,249, 24, 23,232, 68,118, 36,147,229, 95, 95, 95,143,134,134, 6, 12, 31, 62,220,116, 26,
+ 30,143, 7,185,185,185, 89,227, 63,105,210,164,168, 73, 58,109,139,148,168,252, 83, 17,127,134, 90, 0,195,242,127,226,137, 39,
+162,106,112,181, 49,107,107,251, 68, 53,191,250,247, 29,119,220,145, 86,249,199, 24,128, 98,157,138,107,163, 71, 64,177, 86,245,
+183,182, 48, 37, 89, 66,243,177, 6, 52, 30, 61,130,150,214,163,104,235,108, 69, 87,119, 7,124, 61, 94,252,230, 23,107,178, 34,
+158, 84,248, 3,136,136,127,229,202,149, 96, 24, 6,179,102,205, 66, 85, 85, 21,138,138,138,208,214,214,134,189,123,247, 98,227,
+198,141,144,101, 25, 43, 87,174, 68,110,110,110, 84,124,153,228,207,113, 28, 4, 65,128, 44,203, 81,252,245,202, 75,237,126,206,
+152, 49, 3, 71,143, 30, 5, 0,148,150,150, 98,203,150, 45, 9, 13, 67,207, 56,210,133, 81,249,255,252,231, 63, 79, 74, 63,253,
+ 85,121,198, 24,128,226,147, 17, 66,116,155,121, 45, 89,183,183, 27,141, 71, 15,163,165,181, 25,173,157,199,209,217,213, 1,143,
+183, 27, 61, 1, 31,186, 61,221,232,118,119,161,203,221,137,110, 79, 23,186,221, 93,232,118,119,226,158, 95, 62,152,181, 11,144,
+ 44,127, 53, 24,134,193,213, 87, 95,141,202,202,202,200,190,178,178, 50,148,149,149,225,180,211, 78,195,186,117,235,162,194,103,
+131,191,250,241,232, 70,110,150,242,173,124, 58, 59, 59, 81, 89, 89,137,125,251,246, 1, 0, 22, 45, 90,132,238,238,110, 20, 21,
+ 21,245,171,248, 1,227,242,127,228,145, 71,162,202,220,168,118,191,229,150, 91,146,106,193,210,205, 67,140, 1,168,107, 70, 51,
+ 68, 30,122,234,183, 81, 2,239,114,119,162,219,221, 5,143,207, 13, 89,150,225,114,230,225,212,202, 49,152, 50, 97, 26, 70,143,
+ 28,139, 85,127,252,117,220,248,210, 69,178,252, 1,160,165,165, 5, 37, 37, 37,152, 53,107, 86,148,248,149,139, 8, 0,149,149,
+149,152, 53,107, 22, 0,160,167,167, 7, 14,135, 35, 43,252,181, 34, 81,127,100, 89,198, 77, 55,221,132,166,166, 38,252,230, 55,
+191,193,196,137, 19, 65, 8, 65,103,103, 39,102,206,156,137, 35, 71,142, 68, 90,131,206,206, 78, 20, 23, 23,131, 16,130,221,187,
+119,227,150, 91,110,193,136, 17, 35,240,248,227,143, 71,220, 38, 61, 65,165, 11,163,242,191,233,166,155, 50, 54, 82,152, 73,253,
+196,125, 81,182, 25, 34,127,123,243, 57, 48, 12,131,138,146, 83,112,106,229, 24, 76,159,114, 14, 70,143, 24,131,209, 35,199, 98,
+204,200,113, 24, 86, 92, 26, 21, 94, 49,128,108, 93,128,100,249, 3, 64, 73, 73,120, 5,109, 85, 85, 85, 76, 28,106, 40,199, 29,
+ 14, 71, 76,252,153, 52, 0, 61,254,132, 16,220,124,243,205,152, 54,109, 26,254,231,127,254, 7,191,250,213,175, 80, 90, 90,138,
+101,203,150,225,175,127,253, 43,102,204,152, 1,143,199, 3,134, 97, 80, 85, 85,133,103,159,125, 22,203,150, 45,195,115,207, 61,
+ 7, 73,146,176,110,221, 58,188,242,202, 43,184,254,250,235,241,244,211, 79, 27,138, 42, 19, 32, 36,188, 50, 51, 47, 47, 15,165,
+165,225,165,249,253, 33,254,140, 24,128,222, 5, 72,212,235,222,245, 78, 3,108,130,205, 52,193,108,139, 63, 89,254, 10,138,138,
+138, 34,191,181, 29,104,237,113,117,252,153,228,175,196,171, 23,127,115,115, 51, 46,190,248, 98,200,178,140, 39,159,124, 18,235,
+215,175,199,221,119,223,141,229,203,151,227,130, 11, 46,136, 12,231, 94,124,241,197,200,203,203,195,186,117,235,112,253,245,215,
+163,184,184, 24, 94,175, 23, 23, 93,116, 17, 94,127,253,117, 67, 81,101,210,128,135, 14, 29,138,138,138, 10, 4,131, 65,200,178,
+156, 49,129,103,186,242, 76,216, 2,152,233,120,152, 21,191, 81,211,158, 73,241,164,194,191,173,173, 45,210,225, 45, 43, 43, 51,
+140,183,173, 45,252, 70,156, 80, 40, 4,158,231,179,194, 95,207,128, 21,190,247,220,115, 15,110,187,237, 54, 60,245,212, 83,248,
+248,227,143, 49,121,242,100,188,246,218,107,104,106,106,194,230,205,155,225,247,251, 97,183,219,177,111,223, 62,156,126,250,233,
+152, 62,125, 58, 90, 90, 90, 80, 83, 83,131,113,227,198,225,206, 59,239,196,154, 53,107,116,203, 67,175, 66, 72, 39, 15,133,133,
+133, 81,226,255,253,239,127, 31, 85,169,104,243,169,253, 54,179,143, 97, 24,220,125,247,221,105,149,127, 92, 3, 48,211, 52,169,
+201,153, 21, 92, 54,197,159, 10,127,165,102,223,187,119,111,196, 0,212, 92,149,126,192,222,189,123, 1,244, 61,194, 49,219,252,
+181,124,171,170,170, 48,124,248,112,188,247,222,123, 56,243,204, 51,177,107,215, 46,236,221,187, 23, 53, 53, 53,120,251,237,183,
+ 81, 95, 95, 15,150,101, 49,109,218, 52,124,247,187,223,197,184,113,227,224,245,122, 49,100,200, 16, 28, 57,114, 4, 46,151, 11,
+ 83,166, 76, 73,120,125, 50,197, 95, 93,243,223,116,211, 77,105,213,238,217,154,193, 54,124, 58,180,242, 59, 17, 17,117,184, 84,
+ 12, 38,211, 72,133,191,130,141, 27, 55,226,180,211, 78, 67,101,101, 37,180, 79,204, 59,116,232, 80,100, 6, 88,157, 86, 54, 16,
+207,128,175,188,242, 74,172, 92,185, 18,175,190,250, 42,246,238,221,139, 87, 95,125, 21, 27, 54,108,192, 93,119,221,133, 25, 51,
+102, 0, 0, 54,111,222,140, 95,252,226, 23,184,241,198, 27,113,209, 69, 23,129,231,121,220,113,199, 29,184,225,134, 27,250, 69,
+252,122,229,255,208, 67, 15, 69,141, 10,169,243,153,108,205,175,109, 1,210,129,169, 62, 64, 60,129, 43, 68,204, 90,180, 54,141,
+ 76, 35, 21,254,202,133,145,101, 25,235,214,173,139, 59, 15,160, 14,159, 77,254,234, 15,165, 20, 93, 93, 93,232,232,232,192,243,
+207, 63,143,229,203,151,163,185,185, 25, 53, 53, 53,216,176, 97, 3, 54,108,216, 16, 53,107, 92, 89, 89,137,133, 11, 23, 98,246,
+236,217,152, 59,119, 46, 74, 74, 74,112,222,121,231, 97,221,186,117, 88,190,124, 57,138,139,139, 81, 88, 88,168, 59, 79,144, 41,
+254,218,188,220,124,243,205, 25,237,236,102,170,252,211, 30, 5,210,134, 51, 35,184,108,137, 39, 29,254, 64,120, 34, 44,153,248,
+179, 5,109, 13, 58,115,230, 76,140, 28, 57, 18, 51,102,204,192,236,217,179,177,120,241, 98,108,217,178, 5,239,190,251, 46,238,
+186,235,174, 40,241, 43,159,130,130, 2,172, 88,177, 2,207, 63,255, 60,238,188,243, 78, 44, 88,176, 0,205,205,205,120,232,161,
+135,240,217,103,159,161,173,173, 13, 7, 14, 28,200,138,168,244,202,255,193, 7, 31, 52, 60,174,221,103,230,152,242,157,241, 22,
+ 64,143, 68, 42,157,218,108,142,244, 36, 66,178,252, 7, 18,244, 42,150,163, 71,143,162,166,166, 6, 13, 13, 13,240,120, 60,216,
+185,115,103,228, 61, 2, 51,102,204, 48, 44,251, 89,179,102,225,209, 71, 31,197,170, 85,171,208,216,216,136,203, 46,187, 12,130,
+ 32,192,233,116, 98,216,176, 97, 89,187, 62,122,229,255,203, 95,254,114, 64,213,252, 10,226,186, 64,102, 8,170,207,233,111,242,
+122, 72,133,191, 50,177,101,118, 41, 68, 54, 93, 32, 37, 15,218,188, 40,219,138,219, 98,183,219,117, 39,156,180,253, 45,189, 69,
+114,218,178,202,180,248,245,202,255,129, 7, 30,208, 13,147, 74,205,175,142, 39, 43, 45,128,150,124, 60,129,171, 73, 39, 90,119,
+210,159, 72,134,191, 50,177,101,118, 41, 68,182,197,175, 45,215,210,210, 82, 44, 92,184, 16, 51,103,206, 68, 85, 85, 21, 46,190,
+248, 98,212,215,215, 99,250,244,233,216,188,121,115,228, 70, 30,109,158, 55,109,218,132, 37, 75,150,160,167,167, 7,185,185,185,
+120,246,217,103, 81, 91, 91,139, 93,187,118,161,162,162, 34,171,215, 70,203, 69,189,196, 33,149,190, 64,182,202, 60,225,107, 82,
+ 19,145, 4,140,199,219,119,239,223,129,215,223,121, 9, 71, 91,143,162,161,233, 16, 10,242, 11,179,146,137,116,249, 43, 80, 47,
+133, 80,142,233, 45,133,200, 54,180, 6,176,117,235, 86,116,119,119,163,163,163, 3,107,215,174,133,205,102,195,172, 89,179,112,
+245,213, 87,227,191,255,251,191,177,112,225, 66, 20, 20, 20, 68,229,203,237,118, 99,229,202,149,248,244,211, 79, 17, 12, 6,241,
+218,107,175,161,179,179, 19, 43, 86,172, 64, 81, 81, 17,134, 12, 25,146, 85,241,239,222,189, 27, 46,151, 11,163, 71,143, 6, 0,
+172, 94,189, 58, 38,111,122,121,141, 23, 70,175,156,178, 54, 10,100,214, 66,149, 12,171,247, 73,178,132,255,251,251, 51,232,246,
+116,193,233,116,193,223,112, 0, 71,154, 14, 97,243,206, 79,178,222, 18,164,194, 95,153, 64, 82, 47,133, 80, 47, 69, 86,126, 43,
+199,179,237, 2,169,243,161,112, 30, 50,100, 8,138,138,138,240,157,239,124, 7,183,221,118, 27, 46,188,240, 66,140, 27, 55, 14,
+183,220,114, 11,102,207,158,141, 21, 43, 86, 68, 12,116,211,166, 77, 88,185,114, 37,254,252,231, 63, 35, 55, 55, 23, 62,159, 15,
+207, 62,251, 44,214,174, 93,139,177, 99,199,102,181, 86, 85,226, 45, 46, 46, 70,121,121, 57, 24,134, 1,165, 20,183,222,122,235,
+128,170,249, 21, 36,124, 73,158,154,224,222,186,207,241,214,250,215,209,210,214,130,134,166, 67,200,207,139,189,225,132, 16,130,
+255,125,234,126, 52, 30, 61,130,242,146, 10,116,117,119,162,179,187, 3,129, 96, 0, 84,150, 49,180, 40,251,111, 96, 74,166,128,
+ 1,192,110,183, 3,208, 95,234,160,158, 15, 80,142,103,243,162, 36,226,189,110,221, 58,252,236,103, 63, 67, 71, 71, 7,218,219,
+219,177,100,201, 18,204,153, 51, 7,207, 63,255, 60,254,240,135, 63,128,101, 89, 44, 89,178, 4,159,126,250, 41,114,115,115,209,
+208,208, 0,167,211,137,101,203,150,225,201, 39,159,196,195, 15, 63,156,117, 97, 17, 66, 48,124,248,240,136,248, 25,134,193,170,
+ 85,171, 98,102,130,213,249,213,238, 83,127,199, 75, 39,235, 45, 0,195, 48,144,100, 9, 47,255,243,255,224,243,123,145,151, 87,
+128, 35,205,135,209,120,244, 8,182,238,250, 84, 87, 84,127,127,235, 5,216, 4, 27, 14, 28,174,135,215,231,193,241,246, 99,232,
+114,119, 66,148, 68, 44, 93,242,221,180, 8, 39, 66, 50,226,215,142, 2,169,151, 66,104,197,175, 28,239, 15, 24,241,222,189,123,
+ 55, 26, 26, 26,112,238,185,231, 98,255,254,253, 24, 62,124, 56,242,242,242,224,112, 56,112,251,237,183,227,222,123,239, 5, 33,
+225,103,100, 6, 2, 1,244,244,244,192,233,116,162,167,167, 7, 87, 92,113, 5, 46,189,244, 82,236,216,177, 3, 83,167, 78,205,
+ 42,119, 69,184,234,135, 94,221,118,219,109,166,175, 77,127,142,206,197,109, 1, 20,130,143, 63,247,123,180,180, 54, 27,214,232,
+ 90,242, 46,103, 30,246,214,237, 2,207,241, 16, 37, 17,161, 80, 16, 0,240,203, 31,223,141,155,127,116, 71,214, 51,101, 86,252,
+202,133, 82,214,246,168,151, 66, 40,241, 0,136, 89, 10,145,237,137, 48, 35,222,183,222,122, 43,158,126,250,105,184,221,110,140,
+ 25, 51, 6,111,189,245, 22, 30,123,236, 49, 92,119,221,117, 88,188,120, 49, 26, 27, 27,193, 48, 12, 28, 14, 7, 94,127,253,117,
+ 60,243,204, 51, 88,182,108, 25,174,184,226, 10,240, 60,143, 21, 43, 86,224,134, 27,110,192, 71, 31,125,148, 21,238,234, 60,104,
+243,113,255,253,247,155, 90, 11,148, 76,185,102,165, 5, 80, 34, 86,147,127,253,221,151, 96,183,217,117,107,244,203, 47,248, 78,
+140,229,254,233,254,231,176, 98,205, 47,209,208,116, 24, 78,103, 46, 10,243,135,224,198, 31,252, 10,103, 78, 60, 59, 45,178,102,
+ 97, 86,252, 74, 97, 43,107,123,204, 46,133,200,182, 95,106,196,123,196,136, 17,120,245,213, 87,177,120,241, 98,252,232, 71, 63,
+194,232,209,163,241,200, 35,143, 96,221,186,117,104,107,107,195,210,165, 75, 65, 8,193, 51,207, 60,131,174,174, 46,172, 93,187,
+ 22, 79, 62,249, 36, 46,185,228, 18,172, 92,185, 18,239,188,243, 78,212, 8, 87, 54,249,107,203, 95,253,248,146,129, 80,243, 43,
+ 48,245,166,248,220, 28, 23,106,190,216, 19, 83,163,223,188,252, 78,220,180,252,246, 24,242,163, 78, 25,141,117,191,127,165,255,
+114,145,128,127,188,130, 87,195,236, 82,136,108,243, 55,250, 60,254,248,227,184,254,250,235,241,198, 27,111, 96,205,154, 53,145,
+133,109,203,151, 47,199,154, 53,107, 34,143,117,169,171,171,195,138, 21, 43, 48,118,236, 88, 60,252,240,195,216,177, 99, 7,110,
+184,225, 6, 84, 86, 86, 98,237,218,181, 89,231,175, 87,206,247,221,119, 95, 84, 24,237,119, 42,149, 74, 86, 91, 0,245,231,225,
+255,121, 10,191,125,228, 14, 52, 29,109,128,211,153,139,130,188, 66,252,252,251,183,225,204,137,103,159, 48,203,141, 7,179,226,
+ 87,187, 56,132, 16,211, 75, 33,250, 99, 34, 76,143, 63,203,178,120,234,169,167, 98,142, 21, 23, 23, 99,199,142, 29,200,201,201,
+ 1, 0,236,218,181, 43,234,118,200,169, 83,167,102,221,237, 73,196, 95,185,121,125,160,212,252, 10, 76, 13,131,158, 58,226, 52,
+ 60,253,192,223, 6, 28,121, 61, 36, 35,126,109, 77,148, 76, 26,217, 68, 50,252, 9, 9, 15,145,182,183,183, 99,232,208,161, 0,
+128,138,138,138,172,142,243, 39,195, 93,225,255,187,223,253, 46, 42,140, 58,108, 50, 88,177, 98, 69, 70,249, 38,108, 1,146, 25,
+ 69, 25, 40, 72,149,191,217,165, 16, 3,129,187, 54,140,222,194,182,254, 22,127,188, 60,220,121,231,157, 3, 82, 63,166, 70,129,
+140, 10,125,160, 34, 89,254,138, 75, 99,118, 41, 68,127,184, 64,201,136, 63, 94,235,118, 34,112, 50,233, 39,198, 4, 79, 38,242,
+122, 72,133,191,178,173, 93, 10,161, 14,167, 94, 10,145,237,252, 91,226, 55,135, 95,255,250,215, 16, 69, 49,173, 56,146, 90, 11,
+ 52,208,197,175, 32, 85,254,102,151, 66,100, 19,233, 10,127, 32, 92,159,254,210, 79, 38,250, 3,134, 45,192,201, 42,254, 84,248,
+ 43, 2, 55,187, 20, 66, 59, 71,144,105,156,204,226, 63,217,244, 19,211, 2,132, 66, 33,212,215,215, 71, 21,104,127,145, 87, 38,
+164,210, 65, 42,252,149, 99,218,167, 66, 40,190,190, 34,120,101, 41,132, 18,190,182,182, 54,227,252,125, 62, 31,190,248,226,139,
+ 24, 81,199,187,187, 46, 83,226, 63, 81,229,159, 41,164,194,159,168,107,179,115,206, 57,231,104, 32, 16,200,254,106,181, 56,176,
+217,108, 45, 31,127,252,113, 74, 47,106, 62,217,249,207,154, 53,235,104, 48, 24, 60,105,249,159,140,229, 79,178,221,156, 91,176,
+ 48,144,113,226, 7, 98, 45, 88, 56,129,176, 12,192,194,160,134,101, 0, 22, 6, 53, 44, 3,176, 48,168, 97, 25,128,133, 65, 13,
+195,199,162, 88,176,144,105,244,190, 71,248, 93, 0, 19,179,149,134, 32, 8, 45, 27, 55,110, 52, 61, 12,106, 25,128,133,126,129,
+242, 18,237,222,247, 32, 99,235,214,173,168,168,168,136, 60,224, 75,153, 45, 86,160,158, 56, 83, 79,250,169,161,221,239,243,249,
+240,245,175,127, 61,169,121, 8,203, 0, 44,100, 29,234, 55,200,207,155, 55,111, 20, 0,108,217,178, 5,126,191, 31,121,121,121,
+186,175, 73, 53,187, 4, 68,125,236,203, 47,191, 76,154, 27,231,116, 58, 86, 6, 2,193, 59, 36, 73, 54,101, 12,132,144, 32,165,
+116, 37,165,244,222,164, 83,203, 2, 28, 14, 71,117, 48, 24,156, 35,203,178,217,254,140, 4, 96, 61,165,180,255,110,145,138,131,
+147,157,127, 34, 40,226, 95,189,122,181,173,186,186,122,148,178,159, 97,152,200,251, 3,128,228,111,100, 50, 58,158, 44,152, 64,
+ 32,120, 71,205,190, 93, 92, 40,232,131,153, 79,125,109, 77, 8, 64,102,111,203, 73, 3,193, 96,112,206,254,253,187,152, 80,168,
+ 7,102, 62,117,117,251,101, 0,213, 39,154,183,130,147,157,127, 60, 40,226, 95,181,106,149,125,254,252,249,163,212,199,148, 55,
+ 73, 2,201,139, 95,121, 62,106, 38, 22, 2,114,146, 36,115,149, 35, 71,161,199,219, 14, 89,138, 94, 91,173,183, 72,162,172,116,
+200, 81, 0,163, 83, 74, 45, 11,144,101,153, 25, 57,242, 84,248, 61,237,144,229,104,254,122,183,176, 87,148, 22,122, 0,244,207,
+ 51, 26, 77,224,100,231,111, 4,181,248, 23, 44, 88, 48, 82,123, 92,241,251,227,189, 10, 54,149, 86, 33, 89,244,190,144, 22,144,
+ 36, 49,230, 2, 64,103,157,144, 36, 83, 41,233, 84,178, 13, 25, 16,101, 29,254, 58, 79,113,144, 56, 71,246, 31,237,144, 44, 78,
+118,254, 26, 36, 18, 63, 0, 30, 79, 27,159, 0, 0, 26, 61, 73, 68, 65, 84,195, 55,196,167, 42,126,165, 85, 72, 22,170, 51,104,
+ 88,240,189, 31, 74, 41,104,120,111,248, 67,195,203,131, 41,149, 56, 0,126, 66, 72, 69,210,169,101, 21,114, 88, 48,234,143,126,
+ 56, 6,128, 72, 8,113,245, 39,187,196, 56,217,249,135,161,246,249,141,196, 15, 0, 54,155, 45,242, 59, 19,226, 79,171, 5,232,
+238,108,193,246, 77, 47,161,199,219, 5, 0,160,138,243, 67, 85,110, 80,239,111,150, 99,135,254,242,151, 55,250, 31,124,240,225,
+ 67, 28,199, 70,142,169,130, 17,237, 78, 74, 17,195,140, 82, 26,181,143,101, 24,209,102,231,126,235,245, 6, 86, 38,155,137,238,
+206,163,216,190,233, 37,248,124, 93,189,123,228,200,151, 86, 70, 12,225,156,183,220,114,147,248,192, 3,191,191, 81,121,190,190,
+ 62,250,206,148,229, 88,254, 90, 48, 12, 35, 11, 2,243, 97, 79, 79,104,125, 82,228,113,242,243, 87,160, 30,237, 81,119,120, 1,
+ 32, 16, 8,224,224,193,131, 56,124,248, 48,218,218,218, 12, 95, 52,158,110, 71, 56, 89,112, 0,192,178, 4,185, 78, 59, 56, 18,
+236,149, 45, 85,137,159,106, 12,129,186,150,127,111, 9,126,113,227, 79, 33, 83, 25, 20, 20,164,183,124, 9,244,198,110, 17,181,
+143, 70,142,133, 35, 85,194, 29, 58,116,136, 59,123,198,185,119, 0, 88,153,108, 38, 24,142, 65,110,174, 29, 28, 19,236,187,236,
+154, 31,170, 77,225,135,215, 44,193,205, 55,254,180,247, 65, 87, 50,148,134, 48,170, 1,101,244,246,169,127,200,189,191,194, 59,
+ 15, 30, 62,200,156,253,181,115,231, 0, 88, 63,216,248, 71,168,201,242,187, 15, 62,248,160, 48,119,238,220, 81,178, 44,163,177,
+177, 17,123,247,238, 69,109,109, 45, 90, 91, 91,225,114,185, 80, 88, 88,136,194,194, 66,184, 92, 46,112, 28,103,216,161,237, 15,
+241, 3,189, 6, 32,138, 50,186,186,124,240,122, 61,145, 3,234,251, 4,162,238, 25,160, 64,199,230,183, 96,119,228,130, 48, 28,
+ 34,102,162,106, 42,212, 61,135,152,251, 13,148,198,133,246,109, 80, 0,237,237, 29,144,101,115, 67,177, 90,136,162,140,206, 78,
+ 31,124, 62,119,100, 95,180, 7, 33, 71,253,220,177,249, 95,176,231,184, 0,134,131,186,182,213, 9, 29,179,165, 19, 28, 0,208,
+222,222,134, 36,134, 50,191, 82,252, 85,152, 88, 85, 85,133,199, 30,123, 12,181,181,181,224, 56, 14, 37, 37, 37, 40, 42, 42, 66,
+121,121, 57,120,158, 7,207,243, 16, 4, 1,118,187, 29, 60,207, 71, 70,131, 50,213, 17, 78, 22,189, 45, 0,131, 28,167, 13, 12,
+ 9, 63, 38, 60, 92, 57,107,221, 32, 26,221, 39,166, 34, 40,148, 78,155, 90,244,209,225,162, 13,169, 55, 66,213, 87,164, 37,160,
+169,223,221,207, 49, 12,114,114,237, 96,152,240,155, 94,244,175,185,164,217, 31,130,140, 16,116, 79,136, 58, 89,229, 74,168,118,
+ 51,170, 42, 89, 6, 0,109, 7, 54, 9,156,236,252,213,112,187,221,112, 58,157,168,174,174, 70, 65, 65,223,227,243,129,190, 91,
+ 35, 5, 65, 0,207,243,176,217,108,225,167,143,119, 31, 71,221,163,223,131,167,177, 30,142,226, 50,148,159,127, 61,202,191,241,
+253,148, 12, 35, 89,244,182, 0, 18,186,187,125,240,245,182, 0, 17,205,210,228,133, 29,251, 91, 57,187,239, 95,244,254,176, 1,
+120,188, 61, 73,147, 87, 32,138, 98,152,191,199, 29,125, 32,202,135,214,212,139, 49,154,145, 13,246,171,142,246,253,139,217,239,
+241,249,147, 35,173,194,201,206, 95, 13,167,211,137, 41, 83,166, 64,146,164,168, 39,107, 40,223, 12,195,128,227, 56,240, 60, 15,
+134, 97,192,243, 60, 26, 63,120, 14,249,104,197,156,165,231,195,231, 13,226,179,183, 31,129,231,192,103, 24,251,195,255, 5,195,
+ 11, 73,181, 10,201,130, 3, 0,134,101,224,204,177,129,129,195,208,245,209,186, 44,138,138, 99, 92, 31,170,218,210, 49,152,168,
+115, 85,255, 66,161, 16, 82, 5,195, 49,200,205, 17,192, 32,199,176,198, 83, 95,124,125,239, 66,142,173, 71,163,220,138, 88, 31,
+ 67,157,146, 40, 6, 83, 96, 30,198,201,206, 95, 13,142,227, 32, 8, 66,204, 44, 47,128,200, 75,253, 20,191, 95, 89,254, 48,108,
+230, 37,216,253,159,167, 49,188,169, 1,195, 38,156,141,217, 23,148, 96,231, 71,159, 98,231,175, 23,225,140, 91, 95,132,189, 96,
+168,233,190, 64,210,124, 1, 64, 18, 37,116,187,125,240,122, 60, 26,161, 70,254,105,106,255,222,111, 3,145,171, 3, 81,221,237,
+232, 52, 40, 40,220,105,181, 0, 50,186,187,125,240,120, 60,136, 18,137, 81,109, 24,219,211,212,236,215, 57, 57, 74, 52,177,181,
+168,199,151,186,128, 78,118,254,106,112, 28, 7,150,101,193,178,108,212, 19,247,244,196,170, 24, 66,238, 41, 19, 48,241,182,151,
+177,125,245, 82, 76, 12, 2,195,167,205,195,212,111,124, 3, 95,110,219,140,109,183,205,193,153,119,190,134,220, 17, 19,178, 55,
+ 10,196,176, 12,114, 28, 54, 64,238,237, 3, 68,185, 41,250, 46, 11,160,105, 33,194, 59, 84,191, 35,161,117,126,107,226, 1, 69,
+ 48,152, 70, 11,192, 48,200,201,177,171,248,135,235,187, 79,183,212, 98,195,166,122,120, 60, 62,248,253, 65,248,131,193,240,183,
+ 63,136, 96,239,239, 76,162,247, 98,232, 46, 19,225, 56, 78,158, 50,101,194,182, 45, 91, 62,255,231, 87,141,191, 26,106, 95, 92,
+ 45, 80, 26, 10,224,240, 95,110, 69,247,190,143, 32, 5, 2,160, 84, 14,187,216,178,220,231, 42, 49, 12, 62,223,186, 31,108,193,
+112,148,143,159,136, 83,207,154, 1, 87, 81, 33,182,221,125, 62, 78,255,217,159, 49,236,236, 69,113,221,161, 84, 16,105, 1,186,
+220, 62,120,221, 94, 0,177, 53,187,161,176,161,250,173,221, 79,181, 34,143,236, 84,197,213, 23,222,227, 73,221, 7,149, 69, 17,
+157,221, 62,248, 60,225, 62,140, 82,123,110,216, 88,131, 23, 94,252, 59,138,139,139, 83,142, 59, 83, 56,120,240, 48,115,198,228,
+179,167, 1,136, 17, 80,182,249,203,178, 72, 24,134,163,122,251, 1, 64,239, 88, 50,252,213, 80,139, 81, 45,210,230,183,254,136,
+ 92,127, 19,166, 93,122, 1, 88, 65, 0, 97,121, 16,150, 3, 97,194, 31, 48, 12, 64, 24, 0, 4,224,108,128,232, 7, 66, 62, 12,
+ 29, 53, 22,179,243,139,240,233,159,254, 11,222, 35,215, 99,244,183,110,201,252, 40, 16,195, 50,112, 58, 4, 16,217, 22, 37,230,
+237,159,127,137, 15, 55,214,192,219, 19, 64, 48, 40, 34, 16, 8, 34, 16, 20, 17, 12,134, 16, 8,132,194,223, 65, 17,146,148,153,
+213, 17, 12,195,200,132, 16,221,139, 65, 8,233,161,148,222, 65, 41,125, 40,230, 60,197,135,150,237, 81,126, 45, 39,112, 40, 46,
+ 46, 70,231,177,154,164,125,220, 96, 48,196,132,164, 16, 3, 0, 60,203,203,130,192,199, 25,106, 73, 12, 95,103, 43, 68, 81,212,
+ 29,166, 72,200,191,181, 22,162,104,190,130,144,101,145,136, 34, 37, 84, 18, 73, 80, 18, 25, 42,202,132,112, 12, 21, 88, 78, 38,
+ 44,215, 91,247,136,164,167, 39,200, 50, 0,108, 54, 65,226,109,188, 28,207, 16,124,221,198,252,181,208, 19,166, 28,236,129,195,
+233, 0, 79,253, 32,162, 8, 80, 30,144,121,128, 97, 65,249, 28, 32, 20, 8, 15,235, 18, 6, 8,249, 0, 42, 3,172, 0,136,126,
+ 56,243,243, 49,231,242, 75,176,245,173,191,192,115,112, 23,206,188,229, 57, 16, 18,107, 4, 41,143, 2, 73,162, 4,183,167, 7,
+ 30,183, 55,202, 0, 62,217, 82,135,255,247,194,203,253, 89,131, 26,230,160,161,161,193, 81,117,250, 89,247, 3,136, 49, 0, 81,
+148,209,237,241,194,211,237,137, 62, 32, 43,199,253, 16,131, 62, 83, 4,100, 89, 36, 62, 95,128,235,234,236,180,185,189, 94,129,
+ 16, 66,115,115, 93,193,130,252,188,128,195, 33, 72,102,106, 75, 61, 4,227,164,159,144,127,208,103,202, 0,100, 89, 38,162, 36,
+ 17,159,183,135,243,122,220,130,183,199,207, 5,131, 1, 78, 18, 69,134,229, 56, 89, 16,108,162,195, 97, 23, 57,150,165, 61, 61,
+ 62,174,219,237,177, 49,132,208,252,188,188, 64, 81,241,144,158,156, 28,135,104,148,191,120,252,213,208,186, 64,202,167,100,254,
+213, 56,248,204,141,216,191,237, 95, 80,207, 75, 51, 44,143,170, 69, 87, 98,196,240, 92, 48,160, 0,219, 59, 21, 36,137,136, 44,
+ 32,144, 2,224, 65, 49, 99,201,133,248,236,189,247,176,247,137,155,113,198,245,255,155,182,248, 1,165, 5, 96, 24, 56, 28, 2,
+100,201, 22,229,162, 8,130,128,226,162, 98,180,183,236,131,164,115, 1, 82, 82, 66,178,177,244, 30, 14,184, 61, 8,137,162,238,
+179,239, 24,134, 65,142,221, 6, 89,180, 71,237,183,219, 5, 0, 50,100, 89,214, 27, 35,137,129, 40,138,196,231,243,241, 45, 71,
+143, 59,119,236,220, 87,242,215,151,255, 51,213,225,176, 5, 47, 94, 50,123,247,148,137, 19, 90, 74, 74,135,122,115,114,114, 66,
+ 28,151,138, 17, 24,167, 31,159,127,239,185,178, 94,247, 85, 21,187, 28,174,209, 59, 59, 58,236,199,219,218,114,106,235, 14, 20,
+109,218,188,103,196,161,134, 99, 69,221,157, 62,103, 65, 65,174,103,100,101, 73,235,244,179,170,142,148,149, 12,241, 29, 58,210,
+146,247,194,203, 27,102,129, 80,233,187, 87,156,251,241,215,102, 76,105, 44, 97, 75,125, 54, 27,163,223,156, 39,209,254,169, 71,
+127,148, 79, 78,233, 40,156,126,251,107,145,237, 96, 91, 35,246,174,249, 54,198,205,154,135,138,145,195, 64, 3,221, 0,103, 7,
+ 41, 28, 5,118,228, 57,128,171, 28, 32, 12,104,231, 65,200,117,239, 64,110,222, 1,244, 28,199,228,121,115,241,241,107,111,226,
+200, 59,103,162,114,225,117,105,137, 31, 80, 90, 0, 73,134,219,221, 3,183,219, 23, 61,246, 79, 41, 40, 40,196,144, 15, 98, 40,
+245, 81,154,116,160,116,144,186,187, 58, 12,195,200,162,140,110, 79, 15, 60,221, 62, 68, 15,248,201,125,223, 9,222,239, 37,138,
+ 34,241,121,125,124,211,209,163,185, 91,182,238,174,248,199,127,246, 44,254,247,251,155, 29,255,248,199, 63,112,247, 93,119,156,
+122,237, 85,254,127,157,125,214,196,198,242,210, 82, 79,142, 51, 5, 35,136,147,126,124,254,137, 13, 88,105,181,142, 29, 63,158,
+211,112,164, 41,127,237,243,111, 77,157, 56,101,246,164, 95,255,246,143, 76, 89, 89, 25,236,118, 59,142, 28, 57,130,109,219,182,
+141,123,250,169,167,100, 57,212,190,167,181,189, 51,111,243,214,125,229,219,182,109,195, 47,110, 90, 62,121,194,248, 83, 91,135,
+ 20,230,251,109, 54,206,192,159, 53,111, 1, 90, 3,208,250,236,238,250,109,168,251,227,143, 49,245,130,111,162,176,192, 14,234,
+ 61, 6,112,118, 48,149,231,128, 25,179, 16, 68,125,107,100,201, 25, 96,134, 77,132, 84,243, 38,196, 29,127, 1,219,115, 28,211,
+207,159,143, 13,107,111, 71,229, 55,174, 6,195,219,140,104,152, 66,111, 11, 64,194, 45,128,104,131,186, 35,235,176,135, 35, 15,
+175, 2, 77,203, 5, 54,134,105, 25, 25, 7,100, 24,244,214,160, 66,212,126,229, 5,216,137, 4,164,212,252, 77, 71,143,230,110,
+222,178,123,248,219,239,213, 44, 90,191,254, 67,135, 40,138, 56,239,188,243,112,202, 41,167,228, 92,119,237, 53,139, 36, 42,191,
+ 53,253,108,185, 33, 21, 35,136,151,126, 34,254,189,153, 48, 60, 63, 20, 8, 50,237,109,237,246,109, 91,119,151, 61,247,226,134,
+243,215,174,251,191,194, 41, 83,166,192,231,243,245,142, 22,249, 49,108,216, 48, 44, 94,188, 24, 11, 23, 46,100,158,120,226,137,
+ 51, 86,175, 94, 21,202,205,205,197,216,177, 99,209,218,218,149, 31,244,251,185, 80, 64,100,100,123, 80,183,195,156,168, 2, 81,
+160,238,140,234,137,255,216, 71, 47,162,233,141, 7, 49,227,210,203,225,100,125,128,207, 13,176, 54, 16, 87, 57, 48,250, 60, 72,
+148, 98,255,129, 86,236, 62,208, 6,175, 63,132,211, 42,242,113,246,248, 18, 8, 99, 23,131,110,250, 3,164,186,183, 33, 12, 29,
+135,161,167,140,192,177,237,255, 70,217,215, 46, 48,197,203, 8,125, 45,128,199, 7,119,183, 55,106, 20, 39,188,216, 42, 44,254,
+ 19,109, 0,241,210, 23,101,197,135,246,169,231,133,194,252,229,200,134,238,185,178, 44, 18,191,175,135,107,106,106,201,221,188,
+101,215,240,119,214,215, 46,122,127,253, 6,135, 40,138,240,122,195,163, 98,227,199,143,199,179,107,255,146,115,237,247,174, 94,
+ 8, 74,223,154,126, 54, 26,134,151,151,184,227,249,204,201, 32, 46,127,196, 55, 96, 89,150, 73, 79,192,207,118,116,117,216,159,
+123,241, 63,231,124,178,105,103, 33,207,243,104,110,110,198,227,143, 63,142, 15, 62,248,128, 30,109,110,236, 41, 45,171,112,204,
+155, 55,143, 44, 95,190, 28,223,255,254,247, 49,122,244,104,149, 59, 73, 33, 81,137,136, 52, 68,228,222, 86, 39, 38,157, 20, 90,
+128, 40,241, 3, 56,248,255, 86,162,167,110, 35,102, 95,122, 41,248,192, 49,208,144, 8, 66, 88, 0, 12,104,229, 92, 72, 50, 69,
+125, 99, 59,254,245,233, 33, 4, 69, 9, 59,235,143,227,143, 77, 93,248,225,133,167,227,154,243, 39, 0,179,110, 6,234,222, 6,
+245, 28, 67, 89,249, 20, 28,126,231,233,204, 24, 0,195, 16, 56,236, 2,164,144,210,156,132,199,254,237,142,112,159, 32,101, 3,
+200, 76, 39, 33, 28, 85,156,135,248,134,125,104, 33,170, 6,149,229,190, 62, 0, 12, 46, 42, 0,132, 66, 34,211,222,209,105,223,
+178,117, 87,197,219,235,247, 47,126,255,253, 13,118, 81, 20,177,115,231, 78,204,156, 57, 19,199,143, 31, 71,125,125, 61,198,142,
+ 29,139,103,215,254, 37,231,154,107,150, 45, 34, 4,255,116,204,226, 14,241,101,165, 94, 67,159, 89,139, 56, 53,104, 92,254, 9,
+ 12, 24,178, 8, 41, 36,145, 80, 32,200,130, 8,197,161, 80, 8,159,127,254, 57,174,191,254,199, 98,249, 80,254,179,111, 46,158,
+ 86,207,210, 9,228,192,145,163,133,207, 60,253,248,153, 47,189,244,210,208, 85,171, 86,145, 9, 19, 38, 68,162, 8,143,121,244,
+166, 33, 27,148, 85, 18, 45,128,182, 19, 44, 7,123,176,255,225,107,225,178,201,248,218,249, 11,192,202, 94,244,240,165, 16,137,
+ 13,185,190, 58, 16, 80, 72,206, 82, 80, 81,196,198,221,205,104,110,243, 98, 91,109, 11,188, 61,225,185,161,191,189, 95,135,111,
+205, 25, 5, 97,232, 25, 96, 8, 3,218,211,129,252,138, 60,236,219,177,197, 20,167,120,136,180, 0, 30,143, 31,221,238,222,158,
+126,239, 24,190, 44,135,151, 59, 83, 12, 4, 3,136,239, 67,123, 60,126,116,119,247,141, 84,200, 80,106,206,222,111,157, 11, 40,
+203, 50,233,241,251,217,246,142, 14,199, 63,223,221, 49,243,131, 15,183, 68,196,191,116,233, 21, 82, 83, 83, 51, 11, 0, 75,151,
+ 94, 33,189,240,194,223,216, 49, 99,198, 96,221,186,231, 29,215, 94,243,237,121, 85, 19, 78,125, 49,191, 48,207,207,178,140,204,
+ 48, 76,194,156,198,245,225,227,242,239,251,211, 5,195, 80,150,103,100,135,211, 17, 28, 55,186,104,203,130, 5,243,206,234,238,
+234, 12,126,235,226, 25,235,207,156, 60,246,168, 32,216,196,206,246, 14,231,191,215,239,158,191,119,223, 23,195,114,115,115,213,
+249, 7, 0,136,162,204, 82, 74, 40, 40,161,178,129, 1,164,210, 2, 16, 66, 16,236,104,198,222,251, 47,199,200, 9, 99,113,234,
+184, 74, 64,242,162,179, 59,136,141,175, 60,135,115,174,188, 26, 32, 4, 84, 12, 64, 18, 69, 80, 73, 66, 83,171, 27, 31,126,222,
+ 16, 53,249,106, 23, 88,128,202, 8,133, 66,176,133, 35, 6,203,219, 16,234,241,232,166,159, 12, 34, 45,128,221, 46, 64, 12, 9,
+ 81,171, 63,115,148, 81, 8, 42,135, 63, 90,152, 27,192,201, 8,226, 25, 0,195,132,107, 75, 81, 12,215,152, 74,200, 8,255, 56,
+144, 68,137,136,162,196,128,216, 10,125, 62, 31,246,237,219,135,107,174, 94,214, 67, 16,240, 0, 24, 10, 0, 4,129,246,107,174,
+ 94,150,187,118,221,115,142,202,202, 74,240,130, 93,160,146, 76,168, 72,205,207,188,196,109, 1, 18,240,143,123,135, 24, 96,227,
+ 57,169, 40, 63,175,231,202,111, 45,216,221,217,217,253, 5, 75, 8,117,185, 92,254,252,188, 60, 63, 24,192,235,245,216, 64, 56,
+254,200,145, 35, 81, 67,218,148, 82,108,223,190, 29,229, 37,133,109,246, 28, 94,228,121,197,152,211,107, 1,148,111,255,177, 67,
+216,253,219,139, 48,105,238, 28,148,150,228, 2,178,136,150,163, 93,216,185,126, 61,114,135,143, 67,200,219, 13,146,199,130, 6,
+ 61,144,218,234, 16, 32, 78,140,173,112,198,220,137,187, 96,114, 25, 68, 49, 4,182,113, 91, 88,135,124, 14,130, 33, 25,142, 33,
+233,191,138,160,175, 5,240,246,160,219,237,139, 74, 92,148,194,125,128,176, 27,164, 35,231,254,124,183, 64,130, 62,128,199,231,
+ 67,183,218,135,238,221, 15, 0, 48,104, 1, 0, 80,142,231,164, 92,167, 35, 48,122, 68,238,167,115,102,207,152, 26, 8,248, 67,
+ 23,157, 63,101,203,171,255,220, 60, 69, 9,196,115,156,116,209,249,103,124,240,131,235,174,154, 68, 88, 91,193,148,211, 43,182,
+229,186,156, 1,142,231, 36, 0,212,204, 27,228,227,118,194, 77,240, 55,238,195,200, 36, 24, 10, 50, 65,127,128,149, 66, 18, 97,
+ 9,161,148,202,196,231,243, 9,161, 80,144, 37,132, 80, 89,146,200,194,249, 85, 31, 95,250,205,133, 83, 65,216, 72,207, 90, 12,
+ 73,236,208,226,220,198,101,151,207,223, 94,224,116,249,109, 60, 39,197,185, 21, 51, 97, 30, 21, 40,174, 79,221,159,126,138, 73,
+115,206, 65, 73, 33, 1,101,120, 28, 58,112, 20, 95,236,216,133,179,239,125, 31,199, 54,191,137,182,218,183, 80, 60,116, 2,224,
+110, 6,249,240, 62,248,207,127, 10, 51,199, 13,193,210,185,149,120,111,103, 11,130,162,132,153, 19,134,226,226,153, 21, 8,133,
+ 66,176,111,121, 24, 0,192, 20, 84,162,179,195,141,194,241, 51, 77,115, 50,130,170, 5,224, 17, 10,132, 71,129, 20, 56, 28,189,
+ 45,130, 44,131,154,172, 1,162,145, 57, 3,137,223, 2, 48,176,219, 5, 4,237,118,168, 47, 84,142,122, 28,221,224, 2,218, 4,
+ 94, 26, 90, 92,232, 91,182,244, 27, 59,151,120,186,247,139, 65,137,117,123,189,118, 96,115,212, 98,144, 49, 99, 78, 57,126,230,
+148,113,255,228, 5, 78,204,115,185, 2, 67,139,243,125,188,192,107, 23,233, 27, 35, 65, 31, 32, 62,127, 99, 3,146,164, 16,233,
+236,236,182,213, 29, 56, 52,228,197, 87, 54, 76,170, 63,208, 84,198,178,125,171,253, 29, 14, 91,224,155,139,167,127, 94, 85, 53,
+234,216,148, 73, 99,254, 33,201, 18, 35, 74, 34, 19, 10, 73, 44, 75, 64,157, 46,167,127,104,113,145,215, 85,232,242, 19,150,208,
+ 56,157,109,115,249, 68,159, 1,136,221,199, 49,100,248, 57,160, 8,162,118,103, 45,142,183,116, 96,250,253, 27,192,231, 22, 96,
+248,130,101,248,228,205, 63, 96,212, 25, 19,193, 52,110, 7,231,239,132,125,227, 61,240, 76,191, 13,151,206, 42,199,101,231, 84,
+ 68,226, 2,149,192,111,126, 20,220,161,247, 1,134,131, 92, 54, 13,181,255,248, 0,179,239,123,196, 52, 39, 35,168,250, 0, 61,
+125,125,128,222, 90, 95, 18, 41,178, 62, 10,100,210, 72,226,117,130,195, 62,180, 79,197, 63,236, 71,132,223,160,217, 91,251, 27,
+ 92, 64,142, 1,117, 58,156, 65,174,140,147,134, 6, 10,124,221, 94,159,208,212,216,172, 37, 70,115,115,236,129,242,210,146,174,
+156, 28,123,200,158, 99, 19, 5,158,147, 57, 6,212,172,107, 16, 15,233,240, 15,244, 4,216,174,142, 78,251,186,231,223, 62,235,
+201,181,175, 78, 26, 59,118,108,212,113,175,215,139, 25,103, 79,201,187,245,231,195, 95, 43, 46, 42,240,130, 2,221, 30,175,205,
+237,118,219, 41,165,132, 99, 56,217, 97, 19, 68,129,101,100, 6,233,231, 71, 61,246,159, 63,225, 28,124,250,175,127, 35,228,243,
+192,117,218, 89,152,250,155,191,130,229,109,225,155, 98,114, 11, 48, 98,241,143,240,197,158, 13, 24, 63,252,108, 72, 95,252, 27,
+185,187,159,134,112,116, 43, 60,147,150, 35, 88, 60, 9,148,176, 16,218,118, 33,119,207, 90,216,154, 63, 1, 0, 48,195,167,163,
+161,177, 3, 67,167,156,139,220,138, 49,105,113, 5, 52,125,128,144, 35, 92,227, 40,139,216,114,114, 4, 80,164, 49, 10,148, 17,
+ 40,203,177, 19,251,208, 57, 14,117,141, 31,230,175,108,199, 29,135,231, 64, 29,156, 77,148,237,172, 36, 82,137, 48, 28,137, 9,
+ 44,138, 18, 35,209, 16,161,176, 33,216, 19, 96, 37, 81, 34, 34, 47, 17,158,231,204,117,130, 77,244, 1,146,229, 47,203, 50, 9,
+132,130,140,183,167,135, 63,220,208, 54,108,252,248,241,104,105,105,137, 10,211,210,210, 2,134, 99, 72, 32, 20,100,125,254, 30,
+ 46, 20, 18,217,154,186, 67, 67,223,124,251,243,185,146, 4, 97,226,132,161,219,190,117,113,245, 30,135,195, 22, 98,121,214,144,
+100, 50, 45,128, 50,252, 57,254,199,143,194,123,100, 31, 4,215, 16,216,139,202, 99, 38,198, 70, 94,248, 19,124,240,147, 63, 34,
+127,200, 44,148, 77,188, 28,210,254,127, 66,104,253, 28, 67,222,251,175,216, 72, 89, 1,236,105, 95, 71,135,152,143,253,155,223,
+195,185,127,220, 97,154, 79, 60,168,250, 0,126,184, 61,225,217, 94,165,182, 13,137, 18, 34,143, 72, 57,209, 6,144,200,135,246,
+248,225,233,173, 65,149,144,162, 40,246,141, 32,154,185,128, 50,192, 16, 74, 99, 23,228, 81,210,213,237,113,144, 35,148,242, 54,
+ 78, 98, 8, 67,121, 27, 47,230,187,242,252,133, 5,121,254,156, 28,187,152,216, 8,210,225,111,208, 2,200, 50, 36, 73, 34, 84,
+150, 8, 97,123, 7, 76,101, 25,199,142, 29, 67, 77, 77, 13,238,190,251, 46,217,239,235,106, 95,124,222,228, 29,238,110,159, 35,
+ 24, 8,242,235, 63,218, 61,210, 19,112,125,237,131, 13,155, 5,159,207,135,217,231,124,109,230,194,249,238,250, 96, 97,190,207,
+ 38,240,146,113, 62,146,155, 8, 83, 62,174,202,211, 13,103,132, 57,155, 3,179, 87,127,136,173,247, 92,130,206, 97, 69, 24, 55,
+229,106,144,163,159,129,186,155, 65,221,205,128, 44,129,228,150,128,184,202, 64, 74, 39,225,224,151,205, 56,184,251, 19,204, 89,
+245, 30,236, 67, 82,122,143, 95, 12, 56, 0, 32, 12,129,221,198, 33,100,231,163, 22,195, 69,106, 36,163, 81,160, 12,192,108, 47,
+ 33,209, 60,128,221,206, 33,232, 80,143,250,200,166, 91, 0, 68,133,146, 65,136, 38, 49, 98, 31,242,240,159,222,168, 86,211,117,
+ 56,132,192,165, 75,102,109, 59,103,230,196,195, 37,252, 80,175,205, 38,196,157, 15,136, 63, 19,156,152,191,190, 0,251,230, 56,
+212, 79,228, 56,124,248, 48,102,207,158,141,215, 95,127,131,121,228,145, 71,138, 63,219,190,173,250,189, 15,255,227,158, 56,105,
+170,235, 7, 63,186,139, 95,184,112, 33,188, 94, 47,234,234,234, 32, 75,129, 46,150, 37, 50, 97,137,254,232, 79, 84, 90,230, 96,
+230,198, 21,229,227, 40,174,192,220,135, 54, 97,207,159,111,198, 71,175,191,141,242, 49, 99, 80, 56,116, 52, 92,227, 74, 65, 24,
+ 6,158,214,227,232, 58,222,138,166,255,108,134,125,232, 72,156,251,248, 46,112,142,220,196, 36, 76,130, 3, 0, 89,146,225,245,
+ 6,208,237,233,137,186, 73, 37, 20,146,122,127,157, 72, 23,168, 23, 9,231, 1,130,232,114, 71,175, 88, 12, 6,195,226,144, 77,
+172, 5, 2, 0, 6,160, 28,207, 74, 54,155, 61, 84, 94, 86,216,186,125,251,246,242,178,178, 50,212,127,113,192,198,113, 92,153,
+ 58,172,223,239,199,180, 51, 79,119,157, 62,126,196,139, 5,121,121,126, 62,209,124, 64,130,181, 64,241,248, 71,250, 1, 49, 81,
+202, 32, 12,237,109, 28,251,146,190,238,186,107,165,123,238,249, 45,123,209, 69, 23,225,206, 59,239,132, 32, 8, 60,207,243, 67,
+120,158, 7,165, 20,173,173,173,120,229,149, 87,112,239,189,191,241, 92,121,201,244, 77, 46,151,211,207,115,108,220, 17,173, 84,
+ 58,193,137,196,223,119,140,197,164,159, 60, 2,247,145, 26,180,237,254, 8, 13,159,189,131,182,247,158, 7,149, 68, 20,142, 61,
+ 11,197, 83,207,199,148,111,206, 70,225,152,105,166, 57,152, 69,164, 5,176,217,120, 56,236, 66,212, 98,184,156,222,135, 20,156,
+216, 62, 0, 20, 18,198,199, 24,192,110,231,224,236, 29, 53,137,140,163,231,244,254, 48,154,221,212,129,192, 50,114,158,203, 22,
+184,228,130,233,187,190,243,237,203, 71,174, 94,243,191,121,211,166,197, 22,252,193,131, 7, 65,194,211,167,136, 55,202,212,135,
+ 56,199, 19,240, 55,154,156, 2,100, 16, 66,168, 32,176, 98,190,203,225, 13, 6,131, 56,118,236, 24, 10,242,184,166, 63, 62,242,
+ 59,255,203, 47,191, 60,102,233,210,165, 56,227,140, 51,112,202, 41,167,160,161,161, 1,187,118,237,194, 11, 47,188,128, 99,205,
+181,251,111,254,241,249,159,158, 50, 98, 88, 71, 65,129,203,207,243,140,156, 76, 45,111,132,228,197,223,183,157, 95, 89,133,252,
+202, 42,156,122,193,242,180,121,152, 5, 71, 8,145, 3,254, 0,211,227, 15,134,251, 0,125, 55,252, 66,150,195,247,117, 82, 89,
+ 60, 97, 6,160,208, 9,134, 66, 32, 36,182,115, 10,128, 6,253, 65,226,243, 7,209,229,241, 35,114, 17,101, 64,150, 57,200, 0,
+ 68, 49, 24,246,167, 77,128, 16, 34,231, 58, 29,129,211, 70, 86,180,126,111,233,244, 55,127,247,235,155, 38, 54,181,116, 20,107,
+125,181,130, 60,135,231,226, 69,103,237,204,117, 58,123, 88,134, 72,178, 44,199,157, 15,232,189,125, 81,207,138, 19,242,135, 44,
+ 26,206, 99,240, 28, 43,229, 56,115, 2, 23,124, 99,234,206,169,103,158, 94, 8,128,187,240,188,169, 59,198,140, 41,111,171,173,
+111,218,247,236,159, 87,143,104, 62,214, 57,164,167, 39,228,116, 56,120,111,217,176,130,246,179,167,141, 62,180,236,210,139,154,
+139,139, 10,188,249,121, 46,127,142,205, 38, 34,193,124, 70,239, 13, 69,166, 60,214, 68,194, 55, 58,126, 34,192, 57,115,108,199,
+107,106,246,151, 12, 43, 41, 67,143,167, 61,178, 22, 84, 18,101, 12, 47, 25, 1, 73, 12,161,187,171, 93,247,228, 68, 47,217, 54,
+ 51, 79, 70, 19,148, 41,237,237,132,215,127,217, 0,187, 93, 56,162, 61,238,116,218,124, 53, 53, 53,206, 97,195, 42,224,119,183,
+247, 45,128, 22,101, 20,149,141,128, 40, 6,209,221,169,207,223, 8,178, 44,139,206,252, 28,207,216,211, 42, 67, 63,190,110, 88,
+ 91, 32, 24,224,169, 36, 19, 74, 41, 33,132, 80, 48, 4, 2,207,139,185,185, 57,126,123,142,224, 15,133, 68, 89,146,226,184, 56,
+178,140, 47, 15, 54,194,225,176,117, 39,203, 95, 22, 69,120, 60,157,198, 75,129,100, 81,206,205,177,247, 76,157, 50,254,200,105,
+163, 43, 94,130, 12, 56, 93,142,128,221,102, 15,149, 13, 45,110,159, 62,109,252,193, 96, 48,196,201,162,204, 48, 28, 35, 11, 2,
+ 47,230, 56, 28, 33,167,211, 22,180,219,236, 34,195, 48,114, 80, 20,251, 30,241,164,151, 6,100,124,249,101,179, 46,127, 61,164,
+242, 80,171, 19, 5,206,110,227,183,191,244,242,203,139,254,235, 39, 63,192,190, 61, 59,194, 79,137,150, 40,130, 33, 25,231, 46,
+ 94,128,142,246, 38,184, 61, 6,119, 3, 37, 50, 0, 19, 4, 18, 27, 81,120, 77,210, 39,155,107,252,146, 36,127,162, 61,238, 16,
+184,230, 23, 95,126,249,180,159,253,244,135,216,183,231, 51,136, 98,184,182, 12, 6,101, 44,184,224, 92,116,182, 55,193,231,247,
+ 39,219,186, 83, 6, 76,200,238,176, 75,188, 32,248, 37, 81,100, 36,205,179, 76,121,142,145, 57,142,151, 32,129,250,253,193,184,
+153,144,101, 25,155,182,214,138,146, 36,198, 24,112, 60,254, 95,191,224, 92,116,118, 54,193, 23,255,153, 61, 20, 4, 98,158,203,
+225,181,219,120, 63, 0, 8, 2, 39,133, 39,195,108,112, 74, 14, 38, 16,148, 24,197,120,121,142,149,121,150,145, 9, 67,168, 36,
+201, 84,146, 18,223, 42, 42,203, 50, 54,110,174,209,229,175, 69,178,181,254,137, 20, 63, 0,112, 57, 60,243, 95, 47,189,252, 70,
+237,183, 46,187,148,253,246,119,111, 66,237,254,237, 16, 69, 9,227,198,159,137,161,195,134, 97,231,150,215, 16,240,167,104, 0,
+137,214, 10,153,104, 34, 40,165, 56,210,216,138,151, 94,251, 56, 20, 12,138, 49, 79, 44,200,145,185,127,190,244,210,235, 63,187,
+252,178,203,200,183,191,123, 51,106,107,183, 67, 20, 69,140, 31, 63, 21,195,134, 13,195,231, 91, 95,135,223,159,242,205, 60, 50,
+ 0,153, 50,132, 48,154,231,203, 82, 2, 26,146, 66, 8, 73, 72,104, 92,135, 27,142,225,197,191,127, 36, 7,131,210,122, 67,254,
+151, 95, 70,190,125,205,205,168,173,217, 14, 89, 20, 49,118,252, 84, 12, 43, 45,197,222,237,111, 34,152,152, 63, 5, 32, 50, 76,
+120,101,170,198, 29,147, 89,134,144,190,251, 16,101, 26,146,228,240,123,102, 96,238, 73, 28, 7, 15, 31,195, 11,127,223,160,203,
+ 95, 15, 39,139,248, 1,128, 80, 74, 49, 98, 68,241,245,109,173,158, 71,174,186,242, 34,246,194, 11, 47,192,216, 49,167,194,235,
+110,197,151,117, 91, 16, 12,196,185, 23, 52, 93, 3,136,211, 70, 72,146,140,163,199, 58,177, 99,215,129,158, 87,223,220, 44, 73,
+178,248,115, 81,164, 79,233,133, 29, 49, 98,232, 89,109,199,187, 23, 95,117,229, 69,100,201,197, 75, 48,246,180, 83,225,243,181,
+226, 96,253, 22, 4,253,153,121,226, 89,178,144, 69, 25, 77,199,218,177,125,199,151,226,203,175,109,146,131,162,248, 22,165,244,
+ 51,189,176, 17,254, 87,125,147, 92,188,100, 9,198,142, 61, 21,126, 95, 59, 14,127,185, 29,193,160, 87, 21,105, 22,249,106,183,
+101, 25, 77, 71,219,177,117,199,151, 98,216,120,141,249, 43, 56,235,172,179,232,167,159,126,138, 64, 32,112, 66,196, 95, 91, 91,
+139,171,174,186, 10, 91,183,110, 53, 29, 57, 81,106,225,252,252,252,211,120, 78,126,212, 31, 16,167,248,124,129,161,148,210, 19,
+250, 14, 97, 66, 32, 11, 2,127, 68,150,229, 79, 66, 33,105, 5,165,180, 54, 94,248,252,252,252, 33, 60, 43, 45,246, 7,197, 82,
+175, 55,144, 3, 36,126, 36,120,150, 65,109, 54,190,155,138,242,145,160, 36,173,167,148,182,197, 11, 60, 96,249, 83,249, 72, 48,
+152,152, 63,208,103, 0,193, 96, 48, 97, 71, 56, 27, 72,197, 0, 34, 79, 99,238,234,234,170, 7,176, 48, 43,204,250, 1, 93, 93,
+ 93,237, 0,158, 59,209, 60, 82,197,201,206, 95, 65, 48, 24, 68,125,125,125,204,227, 10,251,195,237,225,121,221,103, 38,196,133,
+245,154, 84, 11, 25,131,205,102,107,153, 51,103, 78,250,139,244,211,228,144, 76,120, 98,166, 35,106,193,194, 87, 21, 39,212,207,
+183, 96,225, 68,195, 50, 0, 11,131, 26,255, 31,244, 45,114, 84,193,188, 23, 3, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130,
0};
diff --git a/source/blender/editors/datafiles/splash.png.c b/source/blender/editors/datafiles/splash.png.c
index bbce480ecba..73a11f2fdc6 100644
--- a/source/blender/editors/datafiles/splash.png.c
+++ b/source/blender/editors/datafiles/splash.png.c
@@ -1,2483 +1,6328 @@
/* DataToC output of file <splash_png> */
-int datatoc_splash_png_size= 79258;
+int datatoc_splash_png_size= 202316;
char datatoc_splash_png[]= {
-255,216,255,224, 0, 16, 74, 70, 73, 70, 0, 1, 1, 1, 0, 72, 0, 72, 0, 0,255,225, 0, 22, 69,120,
-105,102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0,255,219, 0, 67, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2,
- 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,255,219, 0, 67, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,255,192, 0, 17,
- 8, 1, 15, 1,245, 3, 1, 34, 0, 2, 17, 1, 3, 17, 1,255,196, 0, 31, 0, 0, 1, 3, 5, 1, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 4, 0, 7, 10, 3, 5, 6, 8, 9, 2, 1, 11,255,196, 0,103, 16, 0, 1, 3, 3, 2, 4, 3, 4, 6, 4, 7,
- 11, 5, 9, 13, 9, 1, 2, 3, 4, 5, 6, 17, 0, 7, 8, 18, 33, 49, 19, 65, 81, 9, 20, 34, 97, 10, 21,113,129,145,240, 35,
- 50,161,193, 22, 23, 24, 66,177,209,225, 25, 26, 36, 40, 51, 56, 73, 82, 98,232,241, 72,104,105,136,168, 41, 52, 57, 67, 84, 88,
-120,150,178, 37, 38, 68, 83, 87,115,130,135,147,152,181,200,210, 54, 89, 99,114,146,184,213,214,215,255,196, 0, 29, 1, 0, 0,
- 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 5, 6, 7, 1, 4, 8, 9,255,196, 0, 80, 17, 0, 2, 1,
- 2, 4, 4, 3, 4, 6, 7, 5, 7, 0, 7, 9, 0, 1, 2, 3, 4, 17, 0, 5, 18, 33, 6, 19, 49, 65, 7, 34, 81, 20, 97,113,
-240, 8, 35, 50,129,161,209, 21, 66, 82,145,177,193,210, 36, 51, 98,162,225, 9, 67, 83, 84,114,130,241, 52, 56, 68, 85,116,148,
-211, 22, 23, 24,115,131,146,147,180,181,255,218, 0, 12, 3, 1, 0, 2, 17, 3, 17, 0, 63, 0,159,198,150,150,150,134, 6, 22,
-150,150,190,100,122,143,199, 67, 3, 31,116,203,220, 60, 68,108,181,171,123, 70,219,170,254,224,209, 41,183,140,167, 25,101, 20,
-135,189,241, 73,101,249, 28,165,136,243,170, 77, 69, 84, 74,116,149,133,163,149,185, 15,180,226,185,211,132,158, 97,151,159, 35,
-212,126, 35, 92,108,227, 63,131, 43,145, 85,251,143,120, 54,213, 18,235,236, 86, 37,191, 87,185,237,148,243, 72,170, 67,146,224,
- 11,147, 81,162,128, 57,167, 69, 42, 5, 75,143,213,230,242, 75, 94, 34, 50,148, 86,158, 42,113, 39, 27,112,159, 14, 38,119,193,
- 60, 55, 23, 19,212, 81,204,173, 89, 4,134, 67, 34,209,128,198, 87,130, 56,138,188,146, 2, 0,242,151, 49,169, 50,114,101, 1,
-128,179,188, 40,225,158, 7,226,222, 37,108,143,142, 56,150,110, 23,166,172,133,150,142,120,196, 98, 54,173, 44,162, 36,158, 73,
- 85,146, 56,200, 44,124,193, 4,140, 4,124,232,139, 41, 61,145,109,196, 58,132,173,181, 37,104, 80,200, 82, 72, 32,131,243, 26,
-247,174, 11,240,211,199, 61,219,180,206, 66,179, 55, 36, 79,186,108,118, 29, 68, 54,166, 58, 92,122,228,181,217, 65, 13, 22,219,
- 47, 30,106,157, 61,174, 95,242, 14, 16,243, 97, 37, 45, 44,128,150,181,219,219, 46,247,181,247, 6,129, 2,231,180, 43, 48,171,
-148,106,139, 65,216,211, 33, 58, 29, 65,232, 57,219,113, 63,172,203,233, 86, 66,219, 88, 74,208,160, 66,146, 14,147,240,211,197,
-174, 19,241, 67, 46, 53, 25, 37, 79,179,102,180,202, 13, 86, 95, 49, 2,166,156,244, 38,219, 9, 97,213,178,207, 29,212,220, 7,
- 17,201,120,194,158, 38,248, 69,197,190, 22,102, 66,159, 60,166,246,156,166,165,136,165,204, 33, 4,210,212,142,160, 95,115, 12,
-218,119,104, 36,179, 11, 18,134, 72,237, 33,202,244,180,180,181,103,226,173,194,210,210,210,208,192,194,210,210,210,208,192,194,
-210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210,
-215, 13,125,163,254,220, 13,158,224,130,240,159,178,214, 5,156,238,249,111,173, 45,150, 21,116, 81,219,173,155,110,200,219,199,
- 39,194, 98,116, 8,215, 53,192,138,116,167,170,213,245, 68,151, 17,255, 0,171, 32,177,132, 50,233, 76,186,132, 39,249, 26, 91,
-214, 67,195,217,207, 19,102, 9,149,228,116, 47, 95, 90,224,177, 85, 42,161, 80, 16, 11,200,238, 85, 35, 64, 72, 5,157,128,185,
- 10, 46,204, 1, 98,226, 46, 38,200,248, 79, 45,124,219,136, 51, 20,203,104, 81,130, 6, 96,204,206,237,114,169, 28,104, 26, 73,
- 28,128, 78,148, 86, 58, 85,152,128,170,196,119, 43, 75, 80,124, 63, 73,159,141,131, 84, 83,195,103, 56, 94, 20, 82,242,212,138,
-127,240,103,117, 13, 77, 44, 20,171,195,105, 85,127,227,115,194, 91,193,101, 37, 75, 16,146, 20, 1, 1,180,147,204, 58,247,192,
- 39,183,219,102,184,168,189,173,253,156,222,171, 32,236, 38,233,221, 18,227,210,109, 58,154,110, 6,238, 13,182,188,107,111,132,
-162, 53, 29,138,204,184,113, 36,218,181,233,114, 84, 26,131, 10, 91, 82, 88,144,233, 68,118,234,107,152,244,120,206,205,115,175,
- 7,248,243, 35,161,151, 49,169,202, 86,166,150,157, 75,200,105,230,142,102,141, 64,185,102,140, 17, 33, 10, 55, 98,138,225, 64,
- 44,108,160,156, 64,178, 47, 27,188, 58,226, 12,194, 28,174,151, 57,106, 90,186,150, 9, 16,169,134, 72, 82, 71, 38,202,171, 35,
- 3, 26,179, 27, 5, 18, 50, 22, 36, 42,130,196, 12, 72, 35, 75, 94, 80,180,173, 41, 90, 8, 82, 84, 1, 73, 29, 65, 7,204, 29,
-122,213, 97,139,107, 11, 75, 75, 94, 29,117,182, 91,113,231,156, 67, 76,180,133, 56,235,174, 41, 40,109,182,208,146,165,184,226,
-212, 64, 66, 2, 65, 36,147,128, 6, 78,134, 6, 61,233,107,140, 28, 63,123, 94,236,238, 39,253,160,119,151, 9,219, 61,108,210,
- 43,219, 63,103, 88,247, 29, 77,157,231, 77, 86, 91,178,239, 43,178,215,171, 80,169,213, 69,219, 84,214,227,166, 57,178,252,106,
-195,236,197,150, 92,117, 83,126,173,247,214, 23,238,178, 89, 3,231,181,219,218,129,127,123, 56, 15, 15,137,177,182,194,209,220,
-115,188,169,221, 85, 85, 13,213, 86,172,210,254,165,254, 47, 78,219,136, 94,225,245, 74, 79,188,123,199,240,222, 95,139,226,126,
-167,184,183,201,250,202,212,182, 30, 7,226,105,179,220,183,134,191, 71,242,179,156,218, 1, 81, 12, 50, 72,136,121, 70, 41, 38,
- 5,203, 48, 17,183, 46, 39, 37, 28,171,130, 52,149, 12,109,136, 92,222, 32,240,164, 60, 61,154,241, 87,233, 46,118, 69,147, 78,
-105,167,158, 56,228,145,121,162,104,160, 34, 48,170, 90, 84,230,202,138, 36,140, 50, 48, 58,149,138,139,227,180, 26, 90,134, 23,
-247,207,155,251,255, 0,155, 30,209,127,235, 93,227,255, 0,232,210,254,249,243,127,127,243, 99,218, 47,253,107,188,127,253, 26,
-152,127,247, 29,226, 55,254,233,139,255, 0,155,166,255, 0,234, 98, 19,255, 0,226, 11,194,239,253,245, 55,255, 0, 37, 87,255,
- 0,210,196,207,116,181,166,252, 3,241, 57, 89,226,255, 0,133,157,171,223,235,138,219,165,218, 85,203,250,153, 89,157, 81,183,
-232,178,101,204,165,211,157,166, 93, 53,202, 3,109,195,147, 56,120,175, 33,108, 82,154,113, 69,125, 66,221, 80, 29, 0,214,228,
-106,172,174,163,168,203,171,107, 50,250,180, 17,213, 80, 75, 36, 50,168, 33,128,146, 39, 40,224, 48, 36, 16, 25, 72,184, 36, 30,
-160,219, 22,246, 95, 93, 77,154, 80, 80,230, 84,110,100,163,204, 97,138,120,152,130,165,163,153, 22, 68, 37, 88, 6, 82, 85,129,
- 32,128, 71, 66, 47,133,165,165,165,173, 92,110, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105,
-105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,107,
- 3,168,110, 45, 6, 60,249,116,122, 75, 21,123,182,183, 5,239,118,155, 75,181, 41,174, 85, 12, 9, 92,174,168,197,170, 85,150,
-166,169,212,105, 67,194, 32,183, 54,108,117,130,164,229, 32, 40, 29, 12, 12,103,154, 90,104,166,239, 21, 38,143, 91,167,219,119,
- 13,169,123,209, 43,245,152, 83, 39,208,233, 9,165, 83, 46,121,213,134, 41,225,159,126, 83, 12, 88,181,170,177,130,134,188, 97,
-151, 38,251,171, 42,228, 95, 35,139,228, 86, 47,143, 95, 53, 54,130,157,111,109,119, 6, 76, 70,208, 28,118, 91, 44, 90, 40, 45,
-183,221,106, 77, 58, 85,222,220,217, 43, 74,114, 75,108,197,113,213, 99,149,182,214,178, 18, 70, 6, 28, 29, 45, 88,232, 23, 37,
- 18,231,136,236,202, 36,244, 76,110, 60,135, 33,205, 97, 77,191, 18,125, 54,115, 56, 47, 83,234,212,201,141, 55, 38,149, 80, 64,
- 82, 10,216,146,211, 78,164, 45, 36,160, 5, 2,111,154, 24, 24, 90, 90, 90, 90, 24, 24, 90, 90, 90, 90, 24, 24, 99,120,143,168,
-110,117, 51,103,174,233, 91, 65, 29,201, 23,200,138,203,116,255, 0,119,109,167,170, 12, 69,114, 67,104,169, 72,165, 50,240, 40,
-118,166,136, 69,226,200, 32,144,175,137, 0,184, 17,174, 20, 60,223, 25, 18, 95,121,199,215,190,238, 72, 83,138, 83,202, 92,139,
-187,156,186,165, 18,178,175,210,126,183, 54,117, 36,133, 36, 40, 16,160, 8, 61, 8, 35, 32,253,218,208,158, 40, 56,198,176, 54,
- 85,185,246,165,163, 22,151,119,238,105, 66,153, 92, 54,212,151,168,214,187,171, 78, 67,245,249, 12, 43,244,179, 83,148,148,194,
-109, 65,206,185,121,108,167,148, 47,157, 60,116,224,190, 27,204, 99,139,140, 56,175,196,124,203,131,114,188,170, 14, 66,193, 75,
- 56, 17, 77, 38,167,144,114, 96,182,185, 42,165,190,146, 16, 51, 50, 70,132,233, 84,102,199, 72,120, 15,198,220, 77,151, 75, 55,
- 7,112,151,134,185,103, 26,102,153,172,252,246,158,170, 2,101,134, 61, 49,198,121,211,223, 68,116,145, 17,172, 23,210,170,242,
- 53,139, 51,170,227,143,215, 53,223,196,133,153,238,191,194,219,167,117,237,195, 59,196,247, 52,214,107,151, 20, 5,201, 13, 99,
-196, 83, 45,200,148,149, 45, 41, 42, 0,144, 49,147,140,231, 88,195, 91,199,188,114, 93,109,134, 55, 39,112,100, 60,226,194, 90,
-101,171,158,186,235,142, 44,159,133, 40,109, 50,201, 90,179,216, 0, 78,177,155,198,244,186,247, 18,225,151,114, 93,181,137,181,
-218,221, 69,209,207, 34, 82,202,131,105, 39, 13, 68,134,194,112,136,145, 17,156, 33,166,210,148, 36,118, 25, 36,157,221,188, 47,
- 45,145,246,104,112,186,239, 19, 59,221, 70, 93,217,123,214,159,133, 73,179,173, 8,106,140,213,106,227,187, 42,177, 94,153, 78,
-181,233, 18, 37,182,177, 72,167,177, 22, 51,207,212,167,150,214, 25,110, 59,132, 37,229,170, 52,119,121, 7,194,159, 15,120,203,
-198,222, 60,159,134,248, 23,136, 51,106,108,146, 23, 75,212, 85,212,201, 45, 66,164,141,162, 37, 49,195, 36, 81, 52,243,178,187,
- 44, 97,214, 56,145, 92,188,204,177,150,110,196,241,107,196,110, 10,240, 51,128, 32,226,126, 62,225,252,162,167, 58,153, 28,251,
- 61, 37, 52,112,211, 51, 70,161,230, 97, 36,209,203, 42,211,192,172,138,210, 20,105, 37,118,141, 82, 21,105, 2,174,163, 72,218,
-189,222,170,162, 69,126, 85,135,123,206, 76,183, 23, 46, 77, 77,218, 13, 81,227, 33,199,137, 91,146, 29,120,199, 37,106, 82,148,
- 73, 81,238, 73, 58,203,118, 91,127, 55, 47,135,155,149,114,173,233, 18, 19, 1,201, 8, 23, 5,159, 86, 18, 27,166,212,210,217,
-229, 80,122, 50,192, 84, 10,130, 81,144,135,219, 1,196,246, 80, 91,101, 77,171,150, 85, 47,164,143,198, 35,151, 97,170, 81,118,
-183, 97,169, 54,130, 37,133,179,102, 61,111, 92, 53, 14,120, 40, 95,195, 22, 93,192,171,133,185, 46, 62,166,176, 22,235, 65,161,
-204, 74,144,218, 6, 18, 59,121,195,151, 16, 59, 31,237,121,225,250,232,188,108,251, 74, 62,216,241, 35,181,232,138,205,221,106,
- 37,246,165,173,185,210, 97,201,126,152,244, 42,139,108,182,186,213,159, 85, 16,103, 34, 50,222,109, 50, 33,200,136,182, 92, 7,
-194, 14,201,234,207, 16,126,128,222, 38,248, 71,147,143, 16,120, 59,138,106, 38,207, 50,127,174,217,162, 46,210, 29,204,124,216,
-156,104,105,141,227, 9, 42, 77, 79, 51,176,134, 89, 64,146,237,200,222, 28,127,180, 43,194,191, 25, 51,195,225,207, 24,112,181,
- 60, 89, 30,113,245, 32, 50,202, 17, 98, 29, 36, 17, 76,191, 88,176,139, 72,205, 19,193, 81, 10, 35, 77, 20, 76, 99, 32,118, 27,
- 96,248,137,177,183,250,218, 21,123,106, 66,161,213,225, 37,166,235,214,228,213,160, 84,232,242,156, 78, 64,113, 41, 56,147, 13,
-101, 43,240,159, 71,192,224, 65, 7,149,105, 90, 19,106,226, 39,139,222, 29,184, 78,110,198,145,196, 38,229, 82,246,206, 6,226,
-214, 42, 20, 27, 86,171, 91,137, 84, 93, 38, 85, 78,151, 17,153,211, 89,157, 82,131, 5,214,105, 13,162, 43,237,171,196,148,182,
- 91, 86, 72, 74,138,129, 26,224,102,199,110,133,115, 99,247, 86,135,116,199, 84,134, 26,129, 81,250,170,231,166, 5,148, 9,180,
-119, 95, 17,234,144,223,108, 28, 41,230,185, 75,173,103, 33, 47,197, 65,236, 8, 56,167,210,118,170,198,173,240,251,194, 53, 82,
- 35,168,126, 52,237,202,189, 36,178,235,106, 10,109,214,222,179,169,238, 54,226, 20, 58, 41, 37, 10, 4, 31, 67,171, 87,232,151,
-199,112,248,245, 61, 22, 67,196,119,203,243,234, 9,141, 61,127,179,133, 66,234,105,230,150, 10,168,209,213,213, 57,175, 11,164,
-177,216,133,120,223, 78,133,116, 11, 85,125, 48,120, 26,127,163,229, 30, 99,196, 92, 52, 23, 49,200,107, 97, 90,156,188, 84,150,
-112,140, 42, 96,138,162,146, 87, 70, 70,147,148,147, 35,197, 32, 96, 89, 36,143, 86,182, 71, 38, 80,214, 61,247,102,238,101,169,
- 68,190,118,250,231,162, 94, 86,117,203, 5,186,157, 2,229,183,106, 17,170,180, 90,196, 7, 74,146,220,186,125, 66, 35,138,110,
- 83, 5, 72, 80,230, 66,136,202, 72,238, 8,214, 89,168, 64,112,175,237,189,221,253,134,225,159,102,120,123,225,163,133,105,251,
-189, 82,218,155, 26, 53, 58,249,186, 43,172, 93, 53, 88,104,168, 59, 62,163, 61,244, 83, 40, 54, 52,101, 57, 18,156,216,146, 0,
-149, 42, 82, 84,242,185,200,142,216, 71, 50,250, 53,193,103,210, 48,176, 55,151,114, 45,253,161,226,123,106,154,216,235,138,230,
-171,179,111,210,175,154, 45,102, 69, 70,198, 98,189, 45,246,226, 66,166, 92,208, 43, 49,218,153,107, 54,228,197,120, 94,244,183,
-101, 50,219,175, 32, 72, 17,218, 11,121, 61, 57,156,120, 63,198,153,119,233, 74,154,108,168,214, 80, 80, 73, 45,180,205, 3,212,
-154,116,102,229,204,244,233, 33,144,107,140, 7,210, 20,181,143,217, 29,185,103, 35,241,187,128,243, 63,209, 20,149, 89,184,162,
-204,179, 40,225, 7, 84, 53, 9, 74, 42, 93, 19,153, 2, 84,188, 98, 35,203,145,140,122,139,232,184,251,102,226,253,250,171,113,
- 37,195,245, 6,251,107,107,171, 91,211,182, 52,173,200,122,165, 79,163, 51, 98,207,189,104, 17,110,183,106,213,101, 50,154, 93,
- 53, 20, 39,167, 9, 42,157, 33, 82, 99,134, 90, 13,243,184, 95, 72, 64, 60,195, 47, 80, 32,128, 65, 4, 17,144, 71, 98, 53, 2,
-158, 50, 84,211,191, 72, 26,128,243, 1, 10, 14,113, 65,195,147,232, 82, 80,159,137,193, 34,193, 91, 78,246,248,156, 5, 45,144,
-174,224,164, 16,122, 13,118, 87,143, 15,111, 68, 62, 31,247, 89,238, 25,120, 83,218,134, 55,231,120,232,117, 24,214,189,203, 90,
-170, 59, 86,145,107, 83,239, 39, 22, 24,122,204,183,168, 86,222, 39,222, 53,230, 36, 56,219, 82, 84,212,136,236,177, 41, 11,138,
-145, 33,196, 56, 91, 91, 48,240,167, 51,118,225, 88,120,116,201,154,212,103,249,106,102, 51,243, 57,112,197, 76,172, 19, 86,169,
- 89,130, 8,193,123, 6, 98, 25,182, 0, 19,182, 17,203, 60, 97,202,145, 56,190,163,137,196,121, 61, 47, 14,230,178,101,148,252,
-190,100,210,213,186,151,211,162, 37, 82,237, 35, 4,185, 84, 5, 84, 92,179, 1,190, 36,133,165,168,139,220,190,218,255, 0,106,
-111, 13,237, 80,239,190, 41,184, 29,183,169, 27, 89, 90,168, 69,138,228,225, 66,187,237, 23, 16,167,193,117, 20,246, 46, 35, 90,
-169, 70,163, 85,156,101, 14,120, 77, 84, 34,149,172,182,172, 54, 74, 84, 7, 85, 46,223,109,143, 13, 22,231, 5,182, 47, 26,148,
-171,102,247,187,237, 43,183,112,233,251, 83, 88,178, 40,166,138,205,225,100, 95, 50, 40, 85,218,228,250, 85,194,221, 66,123,108,
-120, 76, 51, 65,115,145,214,150,161, 37,154,132, 89, 13, 39,195,116,242,177,215,248,105,197,180, 35, 47,120,168,226,205,105,243,
- 57,189,158, 25,168,170, 33,169,137,167,177, 60,146,241,185, 8,246, 6,193,244,130, 65, 0,146, 8,196,131, 46,241, 91,131, 43,
-206,100,147, 87, 77,147,212,229, 48,251, 76,240,215,211, 79, 73, 50,211,220, 14,112,142, 68, 5,227,187, 45,202,106, 32, 16, 72,
- 0,223, 29,148,210,212, 92,183, 35,233, 31,162,243,160,209,233,124, 25,112,161,184,187,163,185, 51, 34, 63, 58,227,131,120, 83,
-170,147,233,118,147, 44,202,113,150,152,250,163,111,196,153,119, 10,221,142, 27,116,188,153, 48,153, 96,159, 12,248,202, 37, 72,
-198,248, 54,250, 69,151,109,251,190,214,214,200,241,107,178, 86,230,220,166,238,185, 96,217,113, 46,235, 45, 87, 21, 53,219, 86,
-231,169,204, 77, 62,159, 26,239,181,110,153, 50, 30, 76, 37,212, 94,142,195,174,178,251, 78, 69, 46,135, 23, 29,196,133, 99,108,
-248, 71,199,171, 65, 85, 94,249, 46,143, 99, 86,119,128,205, 7,180,136,210,247,113, 0,144,200, 87, 98, 84, 91, 83,129,116, 86,
- 4, 95, 68,120,211,225,211,102, 52,121,116,121,233,147,219,157, 99,142,160, 83,212,123, 33,145,237,166, 51, 80, 99, 17,134,243,
- 0,198,250, 99, 38,210, 50,144,109, 43, 29,120,113,198,217,109,199,157, 90, 91,105,164, 45,199, 28, 89, 9, 67,109,161, 37, 75,
- 90,212,122, 37, 33, 32,146,124,128,215, 14,253,164,222,219,221,157,224, 86,233, 59, 61,101,218, 15,111, 86,249, 34,155, 14,165,
- 92,161, 49, 88, 69, 18,210,176, 89,169,199,110,101, 41,155,170,176,220,103,222,151, 90,126, 19,172,190,154,124, 86,130,209, 30,
- 75, 79, 63, 37,143, 17,182,220,230, 77,175,244,142, 56,132,142,220,122,222,253,112, 91,245, 86,205, 92,140,191, 79, 85,221,100,
- 38,245,165, 74,102, 61, 69,151, 99,183, 46,153, 83,187,226,187, 77,174,184,128,224, 80,100, 59, 27,198, 13,148,165,214,201,230,
- 8,229, 94, 22,113,190,113,150, 83,230,244,153, 69,168,170,198,168,121,147, 65, 20,147,169, 23, 6, 24,228,145, 93,245, 13,211,
- 97,172, 88,173,193, 4,175,156,120,191,192, 25, 38,109, 81,146,214,231,119,174,163, 58,103,229, 65, 81, 52, 84,237,123, 17, 52,
-177, 70,232,133, 78,207,185,229,155,135,210, 65, 2, 71,219, 95,199,191, 8,187,217,187,147,118, 59,104, 55,194,208,220,189,198,
-166,208,234, 87, 13, 70,153,102, 59, 46,189, 76,133, 76,164,205,137, 79,158,183,238, 88, 81, 85, 78, 18, 91,151, 54, 58, 11, 41,
-148,167, 73, 89, 33, 4, 37, 68,109,254,160, 19,244,127,110,123,126,214,227,115,113,175, 26,237, 82, 45, 14,212,183,182, 43,113,
- 46, 74,213,102,160,164,196,131, 73,183,233, 85,139,126,167, 62,165, 57,121, 34, 52, 86, 32, 48,235,174, 30,161, 9,104,247,198,
-186,103,185, 63, 72, 83,125,183,147,120, 38,237, 23,179,215,133,198,183, 45,182,164, 77, 98,145,112,222, 16,174, 10,229,197,113,
-192,167, 58, 82,245,199, 30,212,183,230, 68,102,215,162, 45, 1, 42, 11,168, 75,116,161,181,165, 79,248, 14, 57,225, 53, 36,226,
- 95, 8,115, 26, 94, 38,172,201,120,104, 61, 93, 6, 89, 75, 4,245, 53,117,114,195, 4, 81, 25, 67,146,100,145,185,104,163,202,
- 74,160,212,224, 2, 73, 32, 18, 34,220, 41,227, 94, 89, 89,194,148, 57,247, 21,178, 81,102, 57,181,101, 69, 61, 45, 29, 20, 83,
-212, 77, 48,132,160, 2, 56,151,153, 35,155,184, 12,231, 66, 18, 85, 64, 4,128,101,135,165,168,156,219,158,223, 30, 44,184,114,
-221, 75,123,111,253,161,252, 36, 55,183,244, 42,247,131, 37,117,235, 78,155, 93,160, 92, 80,232,239,201, 68,119,171,244,186,109,
-102,169, 54,159,121,211,227, 40, 44, 58,212, 57,113,220,230, 73, 71,139,226, 0,218,186, 89,198, 87,182,211,135, 30, 14,235, 27,
- 75, 6,163,102,223, 59,171, 70,222, 93,176,167,238,197,161,117, 88, 18, 40, 31, 82,200,182,106,181, 25,180,248, 5, 70,177, 61,
-135,125,225,126,226,183, 10,124, 49,200,151, 18,149,128,224, 82, 83, 20,171,240,211,140,105,171,114,250, 40,178,177,152,182,106,
-143, 37, 52,148,179, 67, 60, 19,172, 66,242, 24,230, 71,208, 74, 13,202,146, 26,219,128, 70,248,152,209,120,173,192,245,116, 57,
-149,124,217,177,202,215, 39,120,227,171,138,178, 9,169,234, 41,218, 83,166, 46,100, 14,156,192, 28,236, 25, 67, 45,246, 36, 29,
-177,217,173,112,163,112,253,133, 28, 55, 95,188,105,212,248,162,173,202,171,215,108,187,186,163, 93,190, 47,125,152,175,202,157,
- 87,160,214,183, 90,175, 85,141, 82,118,228,122,179, 46,114,165,201,181,228, 73,126,179, 50,101, 17,245, 57, 25,115, 93,105,180,
- 56, 41, 5,116,160,202,240,191,237,190,220,158, 50,248,231,219, 77,158,218, 29,130,147,111,112,189, 93,145,119,193,184,247, 10,
-229,165,214,170, 87,151,189,209,182,206,237,185,233,142,205,168,210,100,170,143,106, 52,237,203, 71,166, 71,110, 59,134, 83,174,
-180,249, 30, 48,117,228, 33,185, 31,161, 92,200, 74,187,115, 37, 42,199,166, 64, 58, 74,170, 30, 49,240,218,181,169, 26,169,242,
- 74,252,226,140, 25, 82, 41, 81,156, 65, 43,200,129, 36, 40, 91,149, 48,104,217,133,136,150, 59,130, 25, 75, 17,133,169, 38,224,
-127, 20,232, 22,181,105, 35,207,242,236,146,184,136,164,154, 23, 84, 53, 16,164,110, 94, 33, 32, 83, 44, 44,178,170,155,131, 20,
-182, 33,149,130,131,134,126,151,176,123, 71, 74,180, 27,176,226,237,253,162,205,158,136,126,226, 45,102,173,218, 59, 86,224,136,
- 80, 27, 49, 69, 13,184, 98, 40,143,200, 0,228, 13,114,224, 99, 24,212, 4,189,180, 92, 57,109,223, 10,156,122, 93,182,174,205,
-192,141,105,218,119, 45,169,102,238,133, 50,218,161,145, 14,159,102,213,171,255, 0, 88, 69,169,211,168,140,199,193,165, 66, 53,
-106, 19,243,227,176,217, 74, 34,138,178, 89,140,150,163, 54,195, 77,254,136, 21, 90,173, 54,133, 75,169, 86,235, 51,225,210,168,
-244,120, 19, 42,149, 90,165, 66, 67, 81, 32, 83,105,180,248,238, 75,157, 62,108,183,214,148, 70,136,204, 86, 93,113,199, 22,160,
-132, 33,181, 41, 68, 0, 78,191, 57, 62, 35,175,107,151,218,161,237, 50,184, 37,109,235, 50,196, 29,229,220,202, 77,141,183,190,
- 43, 14,184,170, 30,215, 90, 80,163, 80, 97,220,243, 97, 43, 10,140,219,118,133, 14,117,126,160,198, 73,109,217, 50,144,146,162,
- 19,155, 39,192, 39,174,139, 62,226, 12,218,122,167,135, 34,160,161,145,235, 29,217,140, 69,217,213,208,184, 38,197,194, 71, 52,
-154,236, 88, 42,184,189,156,131, 86,125, 35,211, 47,155,135,120,111, 38,167,164, 73,184,135, 50,204, 35,142,133, 17, 84, 74, 17,
- 81,146, 64,132, 0, 66, 51,201, 4,122, 1, 10, 89,144,218,233,113, 61,206, 11,119, 14,189,187, 28, 40,240,239,185, 23, 75,138,
-118,228,190,118, 83,107,110,250,243,171, 32,173,202,197,203, 99,208,235, 85, 53,168,134,209,146,102,205,124,159,129, 61, 79,234,
-167,176,217,253, 55, 59, 75,100,210,182,231,110,237, 11, 38,133, 20, 65,162,218,246,245, 30,223,164, 66, 7,152, 68,165, 81,169,
-241,233,212,232,193, 88, 25, 13,196,142,210,123, 15,213,211,141,170, 34,178, 72,102,172,170,154,158, 62, 77, 60,178, 59, 34,126,
-202, 51, 18,171,255, 0,106,144, 62,236,116, 69, 12, 83,193, 69, 71, 5, 76,188,250,152, 98,141, 36,127,219,117, 64, 29,191,238,
- 96, 79,223,133,168,165,123,119,125,170,238,209, 91,175,240, 39,195,117,192,235,151, 29, 77, 14, 81,120,135,190, 40, 15,243,187,
- 74,135, 49, 41,105,123, 57,111, 76,138,162,181,214,165, 33,194, 46, 23, 26, 41, 49,152, 90, 40,225, 78, 63, 38,166,204, 61,237,
-246,205,251, 82,224,240, 79,182,174,108,238,209, 85,161,203,226,135,116, 40,142,253, 82,227, 78, 37,255, 0,226,146,206,156,167,
-161,191,184, 53, 54, 18, 8, 53,247,252, 41,108, 80, 99, 56, 82, 61,229,165,212,159, 75,177,161, 8,147,185, 93,236,136,246, 94,
-213,106,214,149,199,198,255, 0, 17,212,217,179,238, 10,173,173,115,221, 27, 61, 64,185, 22,228,217,136, 85, 70,147, 62,106,247,
- 98,229, 19,146,183,100,220, 18,214,234,221,164,120,203, 82,154,110, 66,170,174, 5,201,122, 11,177,110, 14, 3,225,236,179,135,
-178,212,241, 23,140, 33,215, 71, 11,133,202,168,154,193,235,170,175,228,151, 73,191,212,196,192,178,146, 8, 37, 76,132, 21, 68,
- 89,105, 31, 17,120,151, 54,226,108,214, 79, 12, 56, 34,126, 93,116,209,151,206, 43,214,229, 40, 41, 45,231,132, 50,145,245,242,
-169, 10,202, 8, 32, 50,196, 8,105, 29,161,210,223,163,211,255, 0,132, 11,255, 0,169, 75,243,255, 0,199,236,141,116, 43,233,
- 74,255, 0,148,224, 99,255, 0,154,226, 91,255, 0,107, 96, 53,207, 95,163,211,255, 0,132, 11,255, 0,169, 75,243,255, 0,199,
-236,141,116, 43,233, 74,255, 0,148,224, 99,255, 0,154,226, 91,255, 0,107, 96, 53,106,102,159,250,197,112,231,255, 0, 5, 39,
-255, 0,208,175,197, 59,147,255, 0,234,195,197, 95,252,124,127,255, 0,161,150,227,167,222,201,206, 30,246, 78,244,224, 27,134,
-234,253,209,181,155,125, 93,172,206,219,232,206,205,170, 85,108,219,118,161, 80,150,239,214, 85, 36,151,101, 76,151, 78, 91,146,
- 29,229, 74, 71, 50,212, 78, 0,235,174,142,127, 36,254, 28,127,249, 20,218,239,253, 65,181,127,255, 0, 21,168, 67,236,206,242,
-251,107,106, 27, 11,183,118,135, 14,118,230,248,218,123, 35, 96,219, 49,169,246,138,246,239,108,225, 81, 63,132, 20,246, 12,185,
- 95, 92,181,113, 85,232,203,170, 93,234,124,188,224,255, 0, 4,146,236, 21, 45,180,166, 60,100, 57,144,172,147,102,189,184,158,
-209,254, 22,247, 41, 54,175, 17, 19,170,123,167, 72,160, 84, 35,193,188,246,187,121,108,216, 86,109,253, 75, 99,149,165,201, 68,
- 43,134, 21, 2, 5, 86,143, 93, 49, 75,106,105, 85, 86,234, 49,190, 62,117, 68, 87,136, 87,168, 78,113,225, 63, 21,230,217,158,
-127, 91,147,241, 53, 5,117, 75, 84,212,207,236, 81, 87, 72,103, 68,121,153,145, 24, 4,229,164,150,101, 82,174,202,138,219,115,
- 58, 98,193,200,252,101,224,252,151, 41,225,202, 12,239,133, 51, 44,186,145, 41,105, 96,246,233,178,248,197, 59,201, 28, 17,171,
-186,157,124,201, 35,186,179, 6, 68,121, 25, 70,174, 95,164,237,173, 75, 62,218,177,233, 17,168, 22,157, 22,153,111,209, 33, 37,
-105,135, 73,163,193,139, 77,167, 68, 67,142,173,231, 17, 26, 20, 54,144,211, 9, 83,206, 56,178, 16,144, 10,156, 82,143, 82, 78,
-178, 93, 49, 28, 53,113, 19,183, 28, 85,108,189,139,190,123, 87, 80,118,125,159,125,210, 5, 74, 19,114,219,105,138,157, 46, 99,
- 18, 31,167,214, 40, 85,152,204,188,226, 34,214, 96, 85,226, 78,135, 45,180, 56,227,105,126, 18,252, 55, 93,108,161,197, 62,250,
-231,250,168,106, 41,170,106, 41,234,227,104,170,224,119, 73, 85,193, 14,178, 43, 21,117,112,119, 12, 24, 16,215,222,247,190, 58,
- 70,146,122, 90,170, 74,106,154, 41, 18,106, 58,136,209,225,120,200, 40,209, 58,134,141,144,141,138, 50,144, 84,141,172, 69,176,
-180,180,180,180,134, 54, 48,180,180,180,180, 48, 48,180,180,181,192,111,104, 5,251,125, 80, 56,143,220,198, 45,253,213,169, 89,
- 9,183, 54,167,110,238, 27,118, 11,123,151,122, 90, 50,220,172,139,138,158,153, 72,178, 45,251,125,102, 37,197,116, 63, 9, 82,
- 82,182, 38, 6, 89, 68,111, 26, 95,138, 30,142,216, 47, 57, 30, 78,249,221, 99, 81,164,226, 6, 84, 47,168,169,111,215, 68,181,
-129, 7,171,130, 78,246, 0,236, 78,216,215,169,168, 20,209,243, 10,234, 23,181,175,110,196,255, 0, 44,119,231, 75, 81,244,103,
-138, 29,229,219,186,190,226, 38,204,169, 55,100, 67,220,238, 34,247, 45,250,213,217,125, 65,164,205,147,104,206,165,216,118, 61,
- 94,129,106,212, 95,186,100,197,162, 91,207, 73,151, 86,156,153, 30, 59,169, 82,141, 53,244,196,109,181, 55,135,114,241,198,191,
- 22, 21,107, 15,123,247, 58, 21,239,182, 80, 41,252, 61,195,225,246, 85, 90,221,164,217,177,110, 10,125,254,238,232, 42, 29, 18,
-168, 34,221, 38,172, 62,174,129,245,162, 36,204, 82,163, 52,225, 82,101,134, 98,190,203,109, 37,110, 59,183, 5,230, 62, 70, 90,
-152, 57,114,114,192, 44,206, 14,169, 36, 72,144, 16,168,246,213, 43,132, 6,228, 91,204,218, 84,223, 8, 12,198, 29,193, 70,184,
-191, 64, 58, 0, 88,157,200,232,162,231,111,112,185,199,119, 52,181, 31,219,163,138, 13,215,187,247, 63,109,175,153, 87,125, 18,
-185,126,217, 23,151, 19, 82,104,252, 60,211, 45,201, 52,233,150, 71,240, 34,193,174,162,217,167,220,143,211,222, 93, 66,233,145,
- 84,147, 75,108,134,220, 72,230,113,130,136,203, 97, 74,115,194,187,218, 60,116,241, 71, 94,159,183, 22,253, 63,112, 54,166,175,
- 63,117,119, 39,104,237,104,115,229, 80,109,233,245, 11, 49,235,225,117,154,109,106,149, 86,182, 45, 90,232,117,138, 91, 85, 35,
- 79, 91,126,254,228,106,167, 37, 61,109,158, 66,226,214,144,220, 23,153, 8,213,214,162, 27,132,212,225,139,174,147,174, 69, 33,
- 78,131,172, 1, 25,109,118, 10,194,252,179, 32, 1,136, 25,140, 58,136, 42,221,108, 45, 99,125,129,245,219,115,107,117, 29,237,
-142,245,233,107,147,209,223,222, 43, 46,151,189,123,171, 87,168, 91,247, 45,193, 96,238,236,107, 86,163,184, 18,175, 13,204,135,
- 26,223, 51,155,219,155,122,229,185,225,109, 4,121,171,160, 11, 66,149, 6,229,173, 86, 75, 18,101,144,211, 81, 94, 47, 30, 86,
-130,245,116,153,197,253,205,104,175,125,224,212,119, 98,196,186,104,182, 78,217,238,236,253,159,220, 25, 80,109,250, 84, 61,204,
-189,109, 75,111,110,106,180, 88,240, 28,129, 37, 16, 46,122,140, 59,158,240,173,209,164, 71,165, 4,181, 37,202, 9,253, 10, 30,
- 67,199, 90, 31,253,157,169,144,255, 0,100,153, 42,109, 96,108, 24, 93,173, 25, 33,108, 27, 96, 37, 66, 3,232,144,141, 71,151,
-101, 98, 20,246,180, 31,222, 41, 75,252, 58,110, 5,250,122, 30,151, 3,109,247, 24,234,110,150,185,121,125,113, 27,190,246,141,
- 14,226,220,138, 85,122,149, 95,137, 79,221, 29,192,219, 42, 86,219,187,104, 69,247, 57, 66,135,195,181,213,186,212,122,171,149,
-122,104, 85, 74, 93, 76, 92,212, 56,173,120, 13,169,182, 94,140,242,153, 95,134,178, 36,161,188,127,125,171, 86,214,225,238, 11,
- 22,199, 16, 84,107,178,163,121, 39,108,124, 29,207, 68,141,169,183,108, 72,233,163,237,245,233, 92,170,211,106, 53,186,204, 89,
- 52,202, 39, 35,139,138,182, 99, 49, 2,101, 90, 83, 81,212,194,240,184,239, 73, 25,143,134,171, 36, 66,194,104,254,198,161,110,
- 97, 23, 14,138,202,199, 64, 11,164, 54,162,119, 6,214, 93, 86, 98,161,171, 35, 6,218, 79, 91,118,238, 9, 4, 11,239,126,158,
-238,246,218,253,134,210,215, 23,168,252, 66,238,173,122,152,237,253, 54,243, 85,110,231,171, 76,225,138,243,161,236,203, 18,102,
-193,102,123,213,219, 34,129, 34,173, 62,218,133, 2,172,137,173,218,242, 46,180,203,140,244, 86, 80,236, 39,101,213,208,220,211,
- 33,228,132,186,236, 80,248,135,221,139,146,237,218,187, 18,214,222,123,102,243,129,185, 51,246,200,220,219,133,110,217,182,220,
-151, 54,246,175,118, 89, 27,207,114,220, 59,126,196, 88,238, 61, 5,154,162,127,128,148, 71,161,179, 83, 67,181, 56, 13,161,255,
- 0,172, 27,152,151,144, 18,105,120, 98,178, 37,118, 51,199,104,151, 83,147,204, 1,108,138,237,184, 67,125, 33,173,125,181, 16,
- 66,106,107,129,133,173,141,136, 1, 79,155,167, 77,247, 32,119,239,248,119,182, 58,147,171, 69,118,187, 74,182,233,114,107, 21,
-153,105,135, 2, 47,132,149,185,225,188,251,206,189, 33,212, 71,139, 18, 28, 72,205,173,217,211,223,148,235, 45, 49, 29,148, 45,
-231,222,121, 13, 52,133,184,180,164,182, 60, 63, 94, 23, 13,249,180,118,173,203,117,202,141, 58,225,125,219,146,149, 84,168, 68,
-134,221, 57,154,140,139,106,235,174,219, 34,165,238, 12,168,183, 13,217, 13, 81,219,121,198,219,253, 26, 28,125, 73,108, 37, 1,
- 41, 13, 62,232,111,214,218, 88, 87, 53,221, 90,189,235,241,103, 84, 54,214, 35,223,192,237,191,166,243,212, 43,146,234,168,162,
-210,230,214,174, 85,210,219,108, 4, 84, 20,139,146, 5, 54, 10,228, 56,219,108, 55,239, 43,109,212,137,238, 41, 44, 50,192,240,
-207, 45, 59, 88,201, 19,178, 27,116,186,146, 13,137,182,215, 29, 72, 27,117,198,210,176,101, 86, 29, 24, 3,251,247,199,221,233,
-222,106,181,159, 75,167, 84,174,234, 93, 66,210,177,231, 69,184,235,115,168,180, 74,161,155,188,183, 37,187,104, 81,151, 91,175,
- 70,163, 80, 40,200, 81,166, 32, 83, 84,169, 82,149, 18, 91,178,216,139, 78, 83, 11,126,159, 42,107, 42,103,136,187,179,237, 34,
-226,147,119,235, 63,197,223, 8,251,124,189,158,219,184, 97, 16, 40,176,233,212,196, 92,251,157, 84,166,150,212,167,102,185, 76,
-180, 34, 77,106,221,117,114, 22, 2, 25,135, 45, 15, 52,181, 45,110,204,125, 71,175,108,182, 23,109,174,187,130,169, 84,222,157,
-223,125,186,149,249,123, 65,247,101,210, 60,100,212,104, 54, 69,155, 36, 7,224,237,133,176,149, 2,203,148,166,146,166,158,173,
-205,109, 3,235,170,160, 43, 86, 98, 69,134,211, 59, 51,104,216,150, 77,129, 77,110,141, 99, 90, 54,213,159, 74,109, 41, 66,105,
-246,205, 18,155, 68,137,132,126,169, 91, 20,232,205,165,197,117, 57, 82,129, 81, 36,146, 73, 39, 78,217,109, 94, 95,150, 60,146,
- 85, 80,254,145,169, 22,208, 11, 40,141, 58,223, 82,180,114, 93,186, 91, 96, 71, 98,164, 27,234,212,195, 81, 80, 21, 35,159,217,
-227,223, 81, 0,150, 61, 45, 98, 25,108, 58,223,168,247, 17,136,175,109,165,111,136, 46, 22,110, 90,253,251,188, 55,190,238, 65,
-226, 39,118,227, 73, 22,188, 43,214,173, 93, 15,170,216,230,151, 29, 53, 11,198, 13, 89,199, 26,118,108,119, 24,169, 38,135, 69,
- 37,232,207,174, 19,213,119,127,239, 68, 64,213, 43,151,138,189,231,148,233, 93,203,191,247,220,103, 10,148,232,142,246,226, 85,
-105, 32, 96,149, 21, 51, 79,141, 84,100, 37, 35,175, 68, 55,129,142,128,107,190, 92, 81,109,158,214,113, 35, 67,184,108,237,202,
-102, 60, 43, 2,198,163,212, 42,247, 21,248,211, 49,155,173, 80, 37,183,202,252,118,173,218,155,209,221, 83, 79,170,117, 53,160,
-227, 77, 36,169,228, 67,121, 32,178,242,233,207, 57,194,234, 71, 15,220, 39, 90, 75,109,193, 77,191,119, 2,124, 94, 96,220,151,
-161,219,182,108,103,243,144, 18,185, 21,119,174, 89,106,100,163, 0,129,224,171,201, 60,131, 83,252,135, 54,165,204,160,150,105,
- 50,197,106,184,152, 41, 60,176,194,223,170, 17,180, 5, 22, 29, 67, 58,155,146,119,189,240,193, 93, 73, 45, 59,170, 45, 73,228,
-176,184, 26,172,111,176, 36,139,220,223,181,129,216, 91,107, 91, 29, 21,246,100,113, 47,186, 91,235,125,110, 4, 59,162, 92, 75,
-222,214,164, 89,244,136,116,189,196,146,195,109, 87,221, 69, 6,164,227, 77, 68,157, 83,101,164,170,228,142,252,250,245, 93,166,
- 94,150, 12,132,127, 7, 30, 90, 93,113,183, 73, 87,102,245,197, 62, 8,247, 59,106,118,179,113, 23,103, 90,182, 36, 75, 2, 30,
-235, 85,168,116, 25, 13,199,172,212,107, 14, 87, 43,209,216,152,205,189, 33,239,126, 9,109,170,147,105,114, 75, 75, 16,216,138,
-219,177, 93, 46, 62,219,134, 27, 74, 71,107, 53, 4,226,104,132,121,180,197, 40,197, 20,114, 5,101, 80, 0, 13,113,230,112, 20,
-149, 23,107,139, 2,109,109,247,185, 47,153,107, 22,165, 75,205,206,101,184, 39,115,107,116, 27,128,122, 88,239,235,233,133,165,
-165,165,168,254, 55,240,180, 29, 66,161, 2,147, 6, 93, 78,169, 50, 45, 58,157, 2, 59,178,166,206,154,251,113,162, 68,140,194,
- 11,143, 72,147, 33,229, 4,178,202, 80,149, 21, 41, 68, 0, 6, 73,209,154,212,158, 53,182,250,255, 0,220,189,141,169,219,187,
-118,235,139,169,181, 89,166,213,106,148,134,158, 12, 59,113, 81, 32, 51, 52,201,162,180,181, 16,149, 58,102, 59, 6, 74, 80,165,
- 0,225,167, 6,243,149, 0, 88,184,159, 52,173,201, 56,123, 58,205,242,220,170, 76,242,191, 45,166,150,104,105, 34,254,242,162,
- 68, 66,203, 18,216, 19,118, 35,162,171, 57, 23, 8,172,214, 82,253,194,249, 85, 14,121,196, 89, 38, 79,153,230,209,228, 89,126,
-101, 83, 12, 51, 86, 75,253,221, 60,114, 56, 87,149,174, 85,108,160,245,102, 84, 6,197,221, 86,236, 52,131,138, 95,104, 4,186,
-199,214, 54, 22,197, 77,122, 13, 40,151,161,213,183, 5, 41, 91, 51,234, 13,245,109,214,109,116, 44, 5, 64,138,174,191,225,138,
- 1,245,164,254,133, 45,116,112,232,102,217,108,157,245,187,134,183, 88,166,198,146,138, 37, 30, 21, 78,171, 88,184,102, 54,243,
-205,188,244, 72,207, 77,118, 44,101, 40,243, 79,168,186,180, 97, 88, 36, 32,185,206,226,129, 32, 43,100, 54, 19,129,203,238,248,
-173,181, 55,114, 41,115,173, 91,118, 27,233,241,105,111,225,154,189, 85, 72, 80,230,100,242, 40,251,132, 63, 37, 44,159, 21, 64,
-225,180,167, 62, 34,123,107,102,109,165,171,100,219,108, 91, 52,106, 68, 40,116,214, 97, 24, 34, 35, 12, 33,184,233,142,182,203,
-107,104, 54, 7, 80,164,169, 92,196,228,168,168,149, 18, 73, 58,227, 46, 26,240,155,196, 15, 27,243,131,198,254, 48,212, 79,148,
-100,169,175,216,178,205, 50, 64,197, 79,217, 84,129,142,186, 74, 91,129,173,223,251, 93, 72, 91,234, 0,172,216,237, 78, 38,241,
-115,195,223, 3, 50, 97,192,254, 13, 83, 65,156,103,114, 20, 53,217,166,164,168, 64, 71,218,103,168, 81,162,174,168,169,109, 8,
-159,217, 41, 75, 17,164,144,208,226, 44, 52,185, 13,195,169,211,165,188,142,118, 98,207,137, 33,212, 30,203,109,137, 13,184,226,
- 8,249,165, 36,125,250,127,189,191, 59, 1,126,241, 15,193, 94,202,238,238,208,211,167, 93,244,109,151,184,170,119,101,215, 68,
-161,176,236,233,235,179,175, 10, 4, 24,142, 93, 76, 66,140, 20,185, 76,211, 95,167, 69, 50, 66, 18,165,179, 30,166,244,130, 3,
- 76, 60,164,211,226,127,101, 42, 59, 29,186,181,187,117,109, 62,187,118,168,251,213,155, 78,162,182,200,106, 93, 34, 91,202, 95,
-186,135, 57, 66, 85, 38, 43,203, 84,119, 64,193,253, 26, 87,128,151, 18, 75,183,195, 79, 26, 53,221,151,166,139, 34,240,164,187,
-122,109,226,148,224,141, 17, 46,182,154,189, 13,183,212,165, 72,102, 2,165, 31, 10,109, 61, 74, 90,213,238,238,148, 4, 41,106,
- 40,113, 41, 37, 5,151,232,189,226,236,127, 70,191, 20,115,188,175,140,233,189,135,151, 83, 26, 73, 43,163, 50, 69, 61, 47, 62,
- 45, 50,104, 12,254,207, 83, 5, 76,154, 39,141, 95, 65, 49, 74, 20,198,204,234,241,244,170,240,114, 79,164,247,132,249, 46, 99,
-193,117, 94,220, 37,165,149,227,137, 29, 21,229,130,168,211,204, 26, 46, 97, 84,246,154, 89,233,163,215, 79, 35, 71,204, 2, 88,
-139, 9, 21, 81,160, 87,169,110,253, 27, 78, 31,247, 14,201, 78,246,241, 53,120, 64,159,107,237,173,207,108, 82,237,139, 90, 69,
- 85,167,160,179,114, 68,163, 76,149, 92,175,220,241,144,248, 79,137, 70,138, 26,139, 29,153, 56, 45,188,228,137, 73,109, 71,193,
- 94,122, 95, 89,143,236,147,185,110, 37,110, 61,103,134,205,190,118,245,118, 71,214, 47,186,246,201, 80, 28,168, 63, 81,230,241,
- 76,135,214,152, 94,233, 38,103,139,215,198,113, 69,124,221,121,181,134,239,223, 25, 43,190,109,119, 54,195,105,109,159,226,243,
-110, 28, 97, 16,106, 24, 17,153,172,214,169,236, 0,134,169,158, 5, 63,244, 20,106, 55, 34, 82, 21, 29,165, 56,167, 82, 2, 22,
-180,183,204,210,189, 25,241,187,233,237,225,100,220, 3,152, 80,112,253, 92, 57,166, 99,153, 70,182,130, 10,152,234,164,119, 86,
- 89, 18, 33,201, 5, 97, 70,145, 87,153, 52,237, 25, 88,195,132,133,228, 42, 7,154, 94, 3,127,179,211,197,122, 79, 17,114,220,
-207,136,233,166,203, 50,220,174, 70,250,249,233,164,165,141, 17,213,163,121,155,158,193,230,117,141,219,151, 5, 58,200, 30, 82,
-133,230, 72,149,201,211,219,222,171, 18,185,121,221,181,168, 8, 8,131, 86,185,107,149, 40,105, 74,121, 64,139, 58,167, 42, 76,
-127,132,143,135,244, 78, 35,167,207, 77, 71,183,193, 83,207, 4, 92, 7,166,161,226,120,232,185,171,137, 62, 46,121,194, 5,131,
- 73,240, 82,160,174,160,134, 66, 7,221,173,145,216,173,173,169,238,230,227,208,109,120,108, 60,170,120,148,204,234,252,180, 33,
- 69,184,116,136,238,161, 82, 57,156, 72,194, 30,120,132,178,214,123,173,224,113,202,149, 17,210, 31,105, 23,179, 6, 31,180, 15,
-107, 54,119,111,211,186, 82,118,157, 59, 83,112, 85,238, 6, 95,131,103, 71,187, 17, 86, 21,122, 52,122, 72,130, 99,187,113, 83,
-133, 57, 44,166, 58, 86,149,165, 78,133, 5, 20, 20, 12, 5,107,144,127,217,239, 11,228,156,117,155,248,159,196, 50, 53, 6, 69,
- 81, 49,167, 14, 35,118, 89, 36,209, 81, 36,238,145,198, 25,217, 98,121, 98,141, 74,171, 13, 82, 58,223,200,246,236,191,246,140,
-186,241, 7,135,185, 87,133,124, 53, 18,230, 60, 67, 79, 0,168, 49,153, 35, 86,142, 62,101, 52,112, 70,242, 72,200,138,210,199,
- 20,210,176,118, 83,166, 56,218,223, 88,151,102,125,130,112,118, 42,169,192, 62,220,155, 3,248, 58,253,211, 14, 69,121,189,216,
-141, 20,197,250,250, 61,248,229,122,168, 93,114,229,109, 39,197, 75,206, 82, 17, 78, 84, 37, 57,240,170, 2, 88, 75, 71, 8, 80,
- 17,173,246,250, 13,156, 87,180, 78,224,103,100, 28,162, 63, 88,110,202,179, 25,220,245,218, 78, 69,118, 49,221,175,121,170, 25,
-141,184,237, 53, 69,181,220, 41,161, 42,215, 76,222, 83,227, 38, 98, 92, 68,140, 74, 75,192,117, 38,227,250, 54,119,189,161, 79,
-164, 73,216, 46, 46,110,123, 78,180,253, 25,154,101,232,154,149, 18,165, 73,135, 95,154,143, 16, 72,168,192,114,215,185, 18,237,
- 62, 19,168, 82, 1,129, 35,223, 2, 20,149, 45, 50,202, 86, 27, 67,243,193,111,209,227,219,173,146,220,107,127,118,119,231,112,
-164,239, 85,205,109, 84,218,174, 81,173,207,169, 81, 69,178, 35, 87, 35, 60,153, 16,234,149,118, 37,204,149, 42,232,125,153, 9,
- 75,205, 33,229,199,142, 93, 0,191, 29,240,156, 31, 80, 50,110, 36,240,255, 0,133,248,167,136,120,250,159,140,167,206,102,204,
-197, 81,139, 47, 20,147,199, 51, 60,242, 9, 52, 75, 52,159, 86,209,161, 80, 35, 44, 16, 5,210,199,204,186, 91,202,188,243,133,
-252, 73,226,222, 17,225,159, 14,106,120, 26,159, 34,131, 42, 52,130,108,204,214,211, 75, 2,165, 60, 92,190,100, 48, 71,245,171,
- 35,134, 38, 64,165,201,109,106, 60,175,173,120,101,186,226,227, 30,216,222, 31,145,113,169,212,222, 13,238, 7, 6,204,215,213,
- 43,196, 18, 19,114,181,106,109,123, 85, 19, 47,197,202,132,164,212,146,231,141,205,215,196, 74,201,235,211, 90,121,178,118,150,
-251, 86,248,244,118,209,176, 55, 14,149,181, 28, 67, 63,187,123,137, 77,165, 94, 87,124,150,160,183, 79,191, 68,251,137,138,172,
- 71,101, 79,167,202, 75, 85,121,111,253, 99, 25,144,182,148,167, 95,150,150,144,124, 71, 18, 12,191, 55,139,216,145, 27,114,184,
-246,164,241,181, 23,126,103,210, 85, 77,220,141,186,220, 36,237,202,118,242, 36,168,229, 86, 2,232,107, 69, 32, 92,230,240,109,
- 65,169, 66,136,128, 94,247, 2,166,125,229, 68, 33,194,145,159,188,127,251, 8,246,135,139,155,230, 86,246,237,181,237, 81,216,
-221,230,170,248, 18,174,153,244,186, 83, 85,171, 78,238,170, 68,109,180, 49, 90,169, 81, 81, 50, 35,244,171,136,165,166,146,236,
-232,146,128,119,194, 75,143, 69,117,254,103, 75,214, 91,226,215, 8, 67, 22, 85,150,205, 86, 35,138,175, 35,134,138,121,205, 36,
-147, 69, 73, 85, 26,176,229,203, 3,162,251, 69, 57,230, 48, 97, 30,180,109, 10,167,202,197,149,139, 52,240,103,141,106, 37,205,
-243, 72,104,140,147, 80,241, 4,245,244,244,226,182, 40, 37,173,163,149,163, 60,200,170, 35,145,189,154,161,121, 42, 80,203,203,
-117,214,204, 6,181, 8,220,174,226, 71,130,207,107,101, 91,105,167,218,220, 83,113,207,179,208,246,122,238,169,208,173,233,177,
-183, 54,243,164,208,173,170,181,102,101, 69,135,109,234, 98,103,201,178, 88, 45,207, 85, 69,134,150,209, 67,168, 82, 61,221, 78,
-173, 73,109,181,173, 58,117,197, 87, 1,155,253,192,167,179,178,235,160,238,229,199,101,215,173,141,200,226,147,102,174,107, 61,
- 22, 93, 90,117, 86, 35,117, 8, 59,103,187,240,170,243,222, 92,168, 76,160, 38, 69, 61,202, 40,109,109,115,248,137,137,146,174,
- 80,141,116,161,143,163,193,196, 46,228,213,168, 20,254, 34,120,219,187,111,155, 38,221,113,180,211,233, 77,199,185,174, 25,241,
- 97,167, 8,114, 37, 29,203,202,228,122, 53,190,165, 48, 57, 82,234, 35,200, 8, 29, 60, 21,142,154,234,183, 19,126,200,187, 31,
-124, 56, 36,218,238, 11,108,125,198,175,109,125,165,181, 87,181, 22,242,163, 87, 39,211,158,220,106,188,245,210,168,215, 85, 46,
- 68, 42,129,170,215,224,171,196,147, 34,233,147, 37,110,182,234, 91,105, 81,195, 44, 70,109,146,148, 54,214,158, 34,228,185, 53,
- 87, 15, 81, 71,196,212, 85,249,107, 87, 71, 81, 94,180, 57, 43, 81, 65, 18, 68, 85,227,149, 89,109, 43, 77,170, 53, 86, 9, 12,
-154,144,144, 89, 2,128,238,210,120, 95,158,231,148,156, 75,152, 73,194,149,249,118,106,153,124,148,217,123,102, 25,242,215, 84,
- 77, 36,193,146, 72,157, 90,240,164, 26,100,118, 66,243, 71,165,192, 96,175,172,152,216,127,163,207,182, 54, 85, 63,129, 26, 5,
-213, 18,131, 1,186,245,225,121, 94,117, 27,146,168, 35, 51,239,213,105, 84,250,195,212,170,127,190, 73, 8, 11,121,152,244,248,
-205, 54,202, 20, 74, 90, 10, 95, 32, 5,107, 39,133, 62,218,203,122,129,108,123, 96,109,245,210, 41,177,105,109,213,209,195,221,
-118,176, 97,180,134, 12,218,147,149, 56,208,159,168, 62, 91, 3,158, 81,133, 78,134,130,179,241, 17, 25, 57, 61, 53, 47, 47,103,
-175, 7, 75,224,115,135,139,127, 97,141,234,237,254,138, 5, 74,189, 81, 77,202,253, 13,187,113,201,102,185, 84,122,164,166,141,
- 41,170,164,208,194, 90, 47,114, 3,239, 11, 42, 8,230, 56,206, 53,160, 92,119,251, 21,218,227, 43,139,138, 79, 20,201,223,169,
-214, 59,244,232, 27,125, 4,217,141,109,212,106,251, 11, 22, 36,247, 38,120,191, 94,185,121,196, 82, 76,164, 44, 39,151,221, 15,
-128, 83,205,151,129,228, 17,110, 24,227,108,134,131,196,238, 46,226, 60,195, 51,120,242,140,217, 51, 4,134,110, 92,238, 92, 77,
- 42, 52, 0,198,177,153, 20,104, 81, 96,232, 2, 5, 0,233,176, 24,151,241,111, 0,241, 22, 99,225, 63, 5,112,190, 91,148,164,
-153,214, 76,249,107,207, 8,150,157, 4,109, 4, 46,181, 12, 36,105, 22, 38, 58,216,234, 40,236, 92,177, 35, 85,201,196, 94,166,
-255, 0, 4,227,251,102,171,138,226,141, 80,145,106,127, 43,106,227,151,155,183,111,130, 40, 41,134,253,197, 45,203,106, 77,100,
-206, 72,103,248, 45,250, 74, 26,201, 88, 17,189,203,148,159,208,106,118,219,255, 0, 77,225,202, 23, 11,155,155, 59,120,151,101,
-141,146,115,108, 43,142,220,242,235, 79, 83, 77, 2, 85,186,237, 13,231, 25, 76, 37,173, 94, 28,153, 78, 35,192,250,189, 49,242,
-243,146, 21, 28, 67, 5,242,214,185,225,237, 10,246, 37,236,223, 28, 51,160,110, 93, 50,230,159,180,155,231, 14,139, 6,141, 84,
-188,169, 20,168,245,170, 53,231, 14,149, 20, 69,166, 34,238,183, 93,151, 24,202,168, 48,195,108,176,204,230, 36,178,250, 35, 54,
-134, 94, 76,166,217,142,134,185,163, 99,253, 27,221,214,159, 80,165, 91,187,205,197,181,110,187,181,116,121, 33,246,109, 11, 90,
-155, 92, 73,125,180,171, 33,152,105,184, 43,142,194,160,169, 67,169,117,184,146, 84,156, 20,165, 25, 60,195,123, 59,206,248, 23,
-142, 41, 56, 79, 52,204, 56,182,110, 23,174,225,202,104,160,154,140, 82, 79, 49, 38, 34,167, 93, 35,197,104,209,156,173,149,152,
-146, 20, 70, 93, 84,165,153,191, 32,200, 60, 65,240,254,183,140,178,156,183,130,224,226,234, 14, 40,171,154,162, 10,227, 91, 4,
- 0, 9,129, 81, 29,108,114,131, 35,162, 6,187,162,128, 11, 25, 66, 51,137, 46,188, 20,224,130, 37,122,161,107,241,207, 22,205,
- 68,229,213,151,193,189,253, 34, 59,113,121,149, 53, 84, 40, 55,206,223, 79,185,147,150,134, 72, 22,172,106,177,123, 29, 60, 36,
- 57,159,135, 58,112,125,151, 27,107,197,206,231,238,109,253, 66,224,219,124,109,173,154,220,132, 90,144,164, 85,209, 87,159, 18,
- 13, 86,231,182,219,170,182,183,153,164,123,205, 6,114,159,102, 44,244,195,114, 64,108, 32,164, 58,218,149,148,246,148,183, 0,
- 30,195,186,103, 4, 59,219, 95,221, 41, 91,210,238,236, 81,174, 43, 18,191, 97, 78,179,235, 27,115, 6,133, 5,234,101,126, 92,
- 7,229, 25,178,149,117,212, 19, 61,159,118,131,224,173,133,199, 8,117, 50, 23,206,113,240,235, 95,184,128,250, 57, 52, 5,238,
- 92,237,211,224,251,126,238,109,132,155, 34,168,253, 90,157,107, 61, 18,125, 66, 21,175, 38, 90,150,227,236,218, 87, 93, 26,179,
- 18,165, 71,166,165, 75, 33,152,239, 9,107,109, 10, 40, 18,121, 2, 82, 39,213,158, 45,112, 93,125,119, 19,229,145,230,113,193,
- 73,155,199, 76,244,245,181, 20, 18,212,211,115,163, 69, 71,134,162,150, 72,214, 70, 81,203, 66,172, 80,165,217,219, 82,178,174,
-170,226,135,193,142, 59,203,114,254, 18,205,101,202,100,158,183, 36,150,174, 58,154, 26, 92,198, 42, 74,174, 68,178, 51,199, 61,
- 45, 92, 82, 52,106,228, 72,225,215,152, 30,200,138, 85,149,155, 79, 63,120,152,246,113,123, 73,247,246,235,219,109,167,226,139,
-140,141,138,188,175,178,213,122,187,181,118, 29,241,126, 64,166,221,115, 99, 73, 93, 54,159,112, 78,182, 41,145,237, 56,210,106,
- 13, 56,228,106,115,110, 33, 60,254, 41,132, 84,218, 23,238,207, 41,173, 31,246,169,108, 70,229,240,207, 70,224,147, 98,119,114,
-163, 71,170,222,187,125,195,213,118,150,252,234, 12,137, 18,233, 70,139, 43,118,239, 89,244, 56,177,164,203, 97,167, 29, 12, 68,
-146, 91, 60,200, 72, 79, 32, 74, 71, 40, 26,238, 94,204,253, 30, 26,228,253,212,164,238,167, 22,156, 77, 94,219,207, 82,164, 79,
-131, 56,192,167, 63, 93,167, 79,170,174,154,224,118, 27, 85, 91,234,181, 93,149, 83, 76, 20,173, 8, 10,106, 34, 99, 59,203,144,
-220,182,137,206,183, 63,218, 81,236,103,137,199,254,225,237,141,254,141,242,159,182, 63,197,206,219,177,183,108, 80,227,216, 76,
- 93,200,157, 30, 61,114,165, 89,102,162,106, 82,110,248, 10,142,176,154,138,153, 45, 22,157,230, 12, 37,207, 23, 42, 41,211, 54,
- 91,226,118, 67,149,113, 15, 14, 82, 84,113, 37, 61,110, 65,151, 37, 76,179, 61, 46, 80,244,112, 67, 83, 36, 82,198,139, 2, 70,
- 26, 87, 71,230,182,191,169, 81,168, 7, 46,218,138,163,238,105,225, 55, 17,103, 28, 53,197, 21,180,220, 43, 85, 67,196,121,172,
-148,176,195, 29,102,117, 29,117, 68,244,145,205, 12,142,213, 15, 41, 72, 99,120,249, 43,203,250,242,218, 47, 24,141,116,134,125,
-234,246,125,236,206,223,237,103, 9,155, 11, 64,179,173,250,125, 38, 3, 59, 97,100,212, 92, 17,163, 54,202,230, 85,234,214,237,
- 54,167, 88,172, 76, 82, 19,151,234, 82,234, 82,100, 72,125,213,100,173,199,207,100,132,164,111, 48, 24, 24, 29,135, 65,166,203,
-102,236, 37,237,126,216, 88,187,122,185,202,169,155, 50,212,183,173,113, 82, 83, 9,138,169,233,160, 82, 33,210,147, 53, 81,146,
-234,196,117, 58,152,129,101,176,181,132, 21,242,133, 40, 12,150, 11,143, 78, 49,236,142, 6, 56,109,189,119,206,237,247,106,133,
- 98, 35, 63, 80,109,189,164,235,165,183,175,125,198,171, 71,147,252, 28,183,209,200,180,173, 16, 18,168,242, 38, 84, 93, 65,230,
-143, 77,165,203,121,176,183, 80,219, 78,115,121,134,183, 63,207, 30, 26, 53,122,250,236,222,165,132, 99,114,242,188,210, 27, 18,
- 91,123,146,215, 98,214,176,185,107, 0,113,212, 98,122, 30, 27,225,232,231,174,100,203,178,252,150,145, 76,135, 96,145, 71, 12,
- 64, 48, 1,118,178,133,178,170,222,230,193, 65, 36, 12,113, 23,233, 10,251, 69,127,139,219, 56,240, 51,180,149,207, 14,246,220,
- 58, 76, 90,158,253,213,105,238,225,251,107,110,170, 45,166, 69, 35,111,195,236,175,154, 61, 90,224, 64, 68,138,131,100,165, 72,
-161,165,182, 28,109,216,245,192,166,197,250, 63, 62,207,199, 44, 27, 45,238, 46,247, 46,142,166,111, 45,207,164, 38, 30,218,192,
-168, 71, 90, 31,183,118,209,231,218,148, 43,105,105,228, 15, 10,125,126, 68,104,146, 26, 88, 10, 34,147, 18, 26,217,112, 38,161,
- 37,189,113, 27,217,255, 0,195, 62,227,251, 81,184,218,174,223,155,197, 50,161,115,219, 13, 92,234,221, 61,253,186, 37, 37,214,
-218,174, 63, 83,168,185, 34,149, 99, 68, 49,148,129, 0, 85, 37, 71,114, 43, 76, 50,166,145, 6,141, 74,151,238,188,134, 52,102,
-151,250, 18,218,182,237, 58,213,161,211,168,148,168,145,160,194,167,196,143, 18, 60, 88,140,183, 30, 52,118, 35,180,150,153,143,
- 29,134, 82, 16,203, 8,109, 41, 74, 16,144, 18,148,164, 37, 32, 0, 53,117,113,253,101, 39, 0,112,165, 23,134, 89, 44,193,243,
- 42,197, 90,140,226,116,234,236,225, 88, 67,126,160, 61,151,202,108, 86,153, 34, 86,213,206,123,208,254, 27, 80,214,248,145,198,
- 53,254, 44,103,208, 52,121, 85, 11, 61, 54, 73, 76,251,132, 68, 44,166,123,116, 38, 59,183,152, 92, 53, 84,146,178,149,228, 32,
- 25, 10, 82, 18,144,148,140, 4,128, 0,244, 3,160,215, 62, 61,164, 30,208, 29,190,246,125,108, 68,221,193,174,166, 21,195,185,
-183, 74,103,208,246,111,110, 92,144, 91,126,238,186,153,142,218,156,168, 84,144,203,169,118, 61,155, 75, 18,162, 72,171, 73, 65,
- 65, 8,121,152,108,172, 76,155, 21, 42,223,186,157, 78,157, 69,167, 84, 43, 21,138,132, 42, 77, 34,147, 10, 85, 74,169, 84,169,
- 74, 98, 13, 58,155, 78,130,195,146,166,207,159, 54, 83,137,106, 28, 38, 99, 52,235,142,186,226,146,134,208,218,150,181, 4,130,
- 71, 9,184,174,225,239,128,223,109, 5,235,103,196,178,120,186,133, 90,187,118, 26,145,116,193, 93,191,180, 87, 53,159, 80,147,
- 34,153,115,212,232,158,253, 88,147, 10,183, 72,146,245, 74,148,212,218, 52, 38,155,157, 7,154, 22,102, 37, 42,117, 74,117,156,
-212,252, 35, 69,149,207,156, 82,213,241, 20, 21, 13,195, 52, 45,174,178, 72, 34,146, 64,163, 75, 24,163,145,145, 78,133,154, 64,
-177,177,184,109, 37,180,144, 64, 34,228,227, 92,195, 55,166,201, 42,232,248, 98,122,101,226,188,193,116, 80,199, 81, 52, 81, 22,
- 98,202, 37,146, 53,145,135, 49,160,137,154, 69, 91, 50,235, 85, 12, 10,155, 24,223,112, 43, 69,217,158, 45,184,165,187,120,165,
-246,138,241, 35,182,116,170,123, 23, 91,119, 61, 74,223,220,203,198,221,164,212,247, 82,240, 90,154,145, 18, 4,155,122, 83,169,
- 76, 13,179,165,195,106, 27, 94,232,150, 88,134,243,109, 69,164,194,109, 80,163,204,105,153,125,220, 94,209,127,103,156, 61,184,
-186,232, 52, 94, 47, 56,125,117,247,237, 26,244, 24,113, 99,110, 45,186, 93,145, 37,234, 60,166, 35,176,203,104,151,241, 45, 78,
- 41, 9, 74, 64,234, 84, 0,215, 43,127,189,146,225,251,255, 0,151,141,236,252,108, 47,255, 0,212,117, 98,186, 62,141, 70,193,
- 80,109,171,134,184,206,250,111, 75,206,209,168,117,106,171, 77, 58,108, 79, 9,215, 41,240, 31,150,134,220,228,180,193,240,212,
-166, 64, 56, 32,224,156, 28,234,227,226,156,231,194,238, 48,205, 41, 42,234,248,179, 49,165,167,161, 88,226,165,164,134,136, 37,
- 61, 52,107,164,104,141, 76,102,218,138,130,204,119, 54, 10, 44,136,138, 40,222, 15,200,252, 93,224,124,162,178,142,139,131, 50,
-202,202,154,247,146,106,202,201,235,245,213, 85, 72,218,137,121, 92, 72, 47,160, 51, 4, 81,176,187, 49,187,187,179,241,151,216,
-125,188,123, 87,177,188,108,155,223,120,111,251, 87,109,173, 15,226,150,243,164,127, 8,239, 10,196, 74, 37, 35,235, 57,181,155,
- 69,248,144, 61,246,107,137, 71,189, 56,212, 57, 74, 66, 51,149, 6, 20, 64,192, 58,156, 37,241,179, 92, 40,241,203,106,237, 46,
-225,220,246,214,221,239,165,175,107, 85,218,191,118,150,241,196,122,245, 54, 52,165,184,202, 93,157, 69,169, 68,120, 38,161, 71,
-146,245, 54, 31,189, 67,112,189, 2,106,233, 81,140,168,239, 42, 43, 5,184, 0,123, 51,184, 59,180,120,227,226, 73,123, 35,122,
- 92,215, 45,167, 72,254, 47,238, 75,185, 21, 91, 80,210,133, 79,223,104,181, 43,126, 19, 17,149,245,197, 62, 75, 62,234,182,234,
-239, 21,254,143,159,153,164,114,168, 12,131,250, 11,240,185,177,214,207, 9,155, 29,181,187, 7, 78,186,100,213, 41,118,141, 53,
- 54,133,175, 62,230,151, 77, 98,183, 95,122, 59, 21, 90,234,227,165,168,172,176,212,202,144,167,198,170, 72, 83,113,218, 4, 70,
-167, 60,241, 64,109,167, 22, 49,227,201,203,105, 56,158,154,191, 47,204,234, 97,226,113, 20, 74,241,160, 40,145,211,114,230, 28,
-196,153, 44,218,218,229, 29,117,125,130,110, 45,140,253, 29, 23, 52,173,225, 42,188,187, 50,202,105,103,225, 38,158,102, 73,100,
- 43, 36,146, 85,137, 41,207, 41,224,123,174,133, 0, 58, 57, 91,243, 2,216,220, 12, 63,180,219,118,145, 74,138,212, 72,144,152,
- 67, 77, 33, 40, 72, 13,164, 97, 41, 24, 0, 0, 58, 12, 1,168,214,125, 36,238, 26, 44,170,175, 15, 59,113,196,205, 42,137, 14,
- 22,224,216, 59,137, 73,176,171, 53,136,200, 98, 51,213, 75, 2,242,167, 86,221, 76, 42,145, 5, 42,168, 46, 29,213, 78,163, 42,
- 16, 60,230, 50, 42,243,249, 18, 18,251,170, 18,111, 4, 30,160,228,122,141, 71, 19,233, 42,111, 69,183,107,112,145,182,219, 37,
-239,241,156,189,119, 91,118,169,119, 3, 20,143, 17,179, 37,155, 43,111,169, 53,105, 85,170,210,208, 57,148,210, 5,199, 87,180,
-163, 53,144,128,239,189,200, 40, 89,247,119, 16,170,219,194,167,174, 95, 16,120, 99,216, 11, 9, 94,160, 7,211,125,224, 42,220,
-240,214,234,188,157,100,223,109,175,219, 22,175,140, 41,151,191,134,156, 91,250, 68, 41,133, 41,137,143, 85,182,168, 14,158,207,
-166,253, 27,157,160, 45,183,222,221,240,212,253, 25, 45,199,171,212,118,115,136, 29,176,151, 33,247,169, 54,142,229, 80,110,122,
- 75,110,168, 41,184,138,190, 45,181, 67,159, 26, 49, 42, 42, 67, 62, 61,152,135,139,120, 8, 14, 76, 91,137,202,221,112,234, 82,
- 58,139,207,209,155,219, 90,149, 31, 99,247,187,115,230, 71,118, 60, 91,231,115,160,208,105,106,117,183, 80, 38,192,177,109,214,
- 20,185,241,212,165,114,187, 24,213,110,170,156,110,100,164, 31, 22,152,242, 20,163,202, 2,101, 13,163,120,178,105,219,196, 78,
- 41, 52,214,229,243,208, 27,116,230, 8, 34, 19,125,252,208,250,189,247,193, 60, 25, 90,149,240,199,132, 5, 93,249,190,206,228,
- 95,175, 40,212, 76, 97,251,185, 38, 61, 63,225,181,182,194,210,210,210,213,119,139, 59, 11, 75, 75, 75, 67, 3, 11, 86,231,168,
-244,137, 50,219,159, 34,151, 78,126,123, 74,105,109, 77,122, 12,103,101,180,182, 20, 20,202,155,146,182,138,208,164, 40, 2,146,
- 20, 10, 72,200,193,213,199, 75, 89, 4,141,193,177,247, 96, 98,222,186, 77, 45,198,165,199,114,155, 79,113,137,239,123,196,230,
- 87, 14, 50,154,153, 32, 41, 11, 15,203,109, 77,226, 67,220,237,182,121,150, 10,178,128,115,144, 52,195, 92,219,245,176,182,149,
-122,185,103,220,245, 58,117, 38,177, 14,165, 62,137, 88,166,205,183,100,165, 18, 94,180,182,226, 54,233, 43,153,126,224, 91,159,
- 5,155, 45,232,238,197, 88, 82,208,167,241, 10, 62,100,128,214,182, 39, 90,175,186,220, 34,237,174,239, 92, 87,189,203,114,202,
-174,179, 62,249,180,173,155, 70,114, 96, 73, 97,182,233,177,104, 55, 4, 90,205, 74,117, 39,196, 97, 70, 44,234,189, 58,155, 70,
-165,212,213,146,151,233,244,134, 89,229, 24, 36,239,229,230,133,166, 97,152,203, 44,112, 21,216,197, 98,193,245, 40, 4,130, 13,
-194,173,216,141,137,210, 0, 32,219, 9, 75,204, 10, 12, 42,165,129,253,111, 75, 29,135,199, 97,247,227,225,226,159,135, 84, 56,
-170,163,213, 95,119,172, 38, 13,219, 88,247,105, 22,125, 85,171,145, 66,203,155, 66,162,214, 18,136,138,166,123,195,149, 5, 46,
-227,166, 8,173,167, 43,148,194,220,113,158,102,153,112,164,250, 39, 17,220, 62, 92, 21, 58, 93, 58,145, 81,141, 34,185, 94,151,
- 97,212,226,211,133,167, 80,106,170,170,149,249,112,215, 45,203,118, 92,198, 28,166,133,197,168, 51, 86,164, 85,125,241,199,121,
- 87, 1,181,165,233, 10,109, 15,161, 74,182,220, 60, 32,109,125,201,123,215, 47,185,174, 86, 27,170, 87, 55, 43,109, 55, 45,216,
-204, 61, 29, 48, 33,205,219,106, 84,138, 75, 84, 24, 49,212,193, 12, 91,213, 70,167, 84,156,170,176, 58,201,118,122,151,204, 20,
-134,139,116,232, 92, 31,109,165,187,120,209,239,138, 92,218,235, 53,202, 30,226,110,142,227, 66,113, 79, 68,117,145, 63,115,169,
-177,233,206, 81,214,211,177,136, 85, 10,144,168, 20,183,233, 12,118,138,245, 57, 11,202,185,222, 14, 56,145,195,220,178, 86,106,
-161, 46,139,128, 74,144, 27, 78,161, 30,201,246, 67,125, 94,175,251,237,109,176,143,246,189, 67,202,133,111,239,189,175,107,245,
-235,111, 53,190,235,247,192,151, 23, 20,214,213,149,120,238,245,161,112, 90,149, 90,123,118, 93,223,110,218,116,155,146, 37, 34,
-165, 34,213,175, 92, 87,142,216, 91,119,181, 10, 5,199, 93,102, 0, 98,139, 83,155, 86,172,154, 91, 40,230,144, 74,145, 17, 79,
-169,147, 50, 58, 23,100,166,241,143,176,110, 91,118,252,155,150, 60,202,122, 85,111, 48,244,196,211,236,186,197,114,218,166, 92,
-206, 88,209,239, 59,138,199,163,207,137, 73, 87,214, 85,120,214,244,153,202, 90, 88,103,194,117, 48,100, 69, 14, 42, 91,110,197,
- 77,226,167,194, 53, 62,224,168,214,164, 92,187,177,184,117,202, 93,207, 86,176,238,171,166,132,252, 75, 34, 52, 75,138,247,219,
-171, 22,218,178,232, 23,101, 70,124, 75, 81, 19, 90,146,100, 90,180,154,171,241, 99, 73, 98, 19,149, 8,201,195, 8,139,207, 29,
-204, 89,174, 3, 54,230, 28, 89, 84,218, 93,213,112, 83,169, 85, 8, 13,183, 62, 50,109,173,179,153, 84,126,170,109,166, 45,137,
-213, 38,111, 9,246, 59,149,202,124, 73, 44,199, 68,199, 96,199,169,183, 24, 77, 91,133, 9, 76, 55, 93,134,181,227, 28, 52, 99,
- 65, 52,210, 44,161, 35,212, 99, 50, 88,176,141, 85,236, 90, 50, 67, 23,214,214,210, 86,214,179,139,144, 10, 77,101,201, 85, 4,
- 92,245,183, 75,220,116, 61,133,133,239,123,246, 56,201,110, 78, 45, 54,210,143, 71,187, 69, 26,206,190,106, 23,221,159, 10,239,
-174, 77,176,164,109,229,114,157, 93,162,200,181,109, 26, 5,194,253,122,230, 66,160, 17,111,208,220,164,222, 86,170, 68,245, 41,
- 75, 91, 85,192,134, 91,117,109,188,218, 1,107,139,222, 30, 41,208,160, 38,182,212,154, 96, 81, 98, 34,164, 83,236,138,173, 86,
-132,229,233, 73,143, 2, 77, 86,210,160,202,167, 82,150,229,102,224,167, 57, 85,155,240,177, 28,130,105,117, 4, 48,181,191, 26,
- 67, 73,200,239, 78, 20,232,247, 93,227,184,151,181, 59,113,239,187, 58,175,186, 16,107, 20, 59,177, 20, 6,109, 25, 81, 38, 91,
- 85,235, 26,194,177,234,148, 36, 49,113, 91, 83, 67, 13,174, 54,221, 80,228,162, 75,124,147, 24,118, 76,180,176,251,104,120,114,
- 97, 71,129, 29,185,102, 75,134,157,116, 87,233,212,215,107,237,221,142,192,102,217,219, 23,234, 46,220,107,153, 26,125, 70, 66,
-175, 41, 86, 50,235,200,165, 73,156,220,169, 11,130,138,162, 26, 67,243,150, 16, 68, 68,166, 32,196, 67,134,204, 81,243,102,154,
- 55, 96, 25,172, 90,225,180,141, 75,126, 89, 22, 86,190,141,141,197,203, 50,155, 12, 6,246,205, 70,202,164, 3,177,176,251,143,
-218,190,227,175,167, 96,112,231, 92,188, 65,108,253,156,237, 21, 85,234, 37,205, 77,117, 54,204, 75,162,127,188,109,197,114, 52,
-173,190,178,220,185,255, 0,131,148,235,130,242,141, 38,152,219,246,149, 21,117,198, 37, 41,160,227, 97,192,213, 50, 76,191, 5,
- 44,199,113,212,227,232,226,211,100, 21, 21,169,244,186, 61,249, 82, 97,202,109,126,252,241,169,187, 81,118,165, 40,183,173,245,
- 24,119, 77,250, 28,149, 70,101, 47, 81,162,201,144, 35, 61, 61,165, 56, 94,122, 73,102, 57,144,174,112,155,149,235,194,253, 54,
-254,147, 62, 77,127,114,247, 1, 75,185,109,201,150, 53,252,136,169,180, 27, 69,243,183,234,190,107,183,181, 30,208,169,151,173,
-119, 21, 76,139, 79, 23, 21, 86,150,196,154,122,162,203,114,155, 49,212, 72,121,217, 74, 76,164, 52,251,165,194,237,235, 26,209,
-179,173,109,147,172, 76,141, 81,133,182, 87,238,208, 87, 46,106,213,219, 71,163, 71,122,208,188,167,211, 39,166, 53,106,131, 47,
-109,107,104,172, 50,153,222,250,242,158,167, 46,147, 80, 97,184,166, 59, 47,172,204, 15, 66, 37, 60, 57, 12,220,152,228,168,144,
- 77, 35, 16,197,159, 68,106,161, 88,234,102,104,191,104, 88, 1,114, 84,173,192,114,193,114,237, 84,161,152, 32, 33, 64,176, 2,
-228,155,141,128, 13,233,248,131,216, 12,110,107,245,216,236,216,210,174,155,102, 19, 51, 24,254, 12, 74,185,104,144, 74,126,174,
-102,127,139, 76,118,175, 5,151, 65,108,123,159,142,181,183,206, 74,121,146, 94, 82,148, 50, 14,180,215,116,165,219,144, 32,213,
-182,215,234, 10, 53,122,167, 42,135, 42,149,118,221,213, 70,214,169, 21,107,134,188,202,229, 86,106, 18, 4, 96,219,174,148,212,
- 36,135,144,147, 32, 54,202,144, 24,109,164, 55, 29,160,157,199,135,107, 57, 22,193,139,100,166,162,160,236,107, 61,139, 88, 85,
-154, 99,195, 80,113,154, 42,105, 34,162,212,101, 58,174, 69,115, 39,197, 74, 10,206, 14, 19,204,123,235,144, 59,209, 19,116,167,
- 75,115,110,234, 52,115,107,213, 46,219,210,159, 99,220,151,204, 58,236, 73,212,214, 41,117,135,213, 18,124,250, 47,142,152,243,
- 99,207,171, 72, 8,129, 8,201,140,219, 77, 59, 90,111,154, 74,212,166,148,189, 76,174, 26,121,106,106, 29,239, 34, 68, 9, 80,
-110, 46, 9,181,201,219,183, 91,237,190,248, 60,236,234,136, 7,148,183, 95,203, 29, 10,217,141,236,135,113,237,133,155, 34,137,
-104, 94, 55, 7,131, 64,143, 79,110,109, 18,136,236,138, 4,185, 20, 96,229, 38, 91, 17,174, 7,228, 6, 36,186,204,216, 18, 99,
-188,239, 63, 35,146, 34,186,166, 84,235, 74,109,197,229,117,203,231,113,228, 81, 38, 76, 27,115, 80,181,169, 66, 35,130,109, 86,
-161, 91,167,203,170,192,109,238,102,132,198,233, 52, 53, 63, 33,184, 44,146,133,204,125, 1, 82, 99, 70,241, 95,139, 22, 83,173,
- 37,181,115,182,167,188,183, 37,129, 6,159,182,219, 79, 95,118,221,177,236,232, 45,208,224,166,152,212, 39, 19, 54, 68, 95,130,
- 92,184,146,164, 69, 83,145,233,254, 40, 83,113,195,107, 72,113,182, 68,151, 7,140,251,152,109,170, 91,157,184,213,165,133, 85,
- 47,171,178,127, 33,230, 75,114,171,213, 23, 35,250,156,199, 84,159, 15,147, 25,200, 41,229,229,200, 61, 52,228,156, 45, 83, 33,
- 46,213, 9, 12,109,184,184, 98,214, 61, 46, 54,177,183, 93,246,239,141,118,204, 17,118,208, 89,135, 93,192, 23,247,125,248,187,
-241, 61,191, 16,171, 20,120, 91, 43,100, 59, 38, 45, 50,223,155,227,110,163,143,165,182,103,212,183, 14, 41,104,204,160,206,247,
- 98, 91,122,157, 79, 90, 99, 41,149, 50,183, 97,190,216,132,184, 46, 57, 2, 52, 39,156,210, 5, 41, 40, 66,220, 89, 66, 27,109,
- 42, 90,220, 95,192,219,105, 72,202,150,226,212,112,218, 7, 82, 73, 32, 0, 59,247,214,204, 79,218,105, 60, 77, 67,171,238, 54,
-206,186,245, 31,112, 40,173, 83,169, 53,218, 12, 24,116,183,153,221, 11,113,130,220, 51,122, 91, 76, 85, 22,150, 26, 76, 26,164,
-146,195, 50, 28, 10, 83,241,203,235,111,199,134,228, 45,102,150, 23,179, 43,113,174,103,163, 78,220,186,172, 10, 83, 3,192,117,
-104,185,234,127,195, 25,237, 41, 32,164,174, 53,175, 72, 83, 84,104,143,114, 21,146,164,150,212, 20,190,185,198, 4,179, 46,173,
-203, 50,156,190, 58,121,100, 74, 87,131,103, 86, 97,169,159, 98, 92, 0, 11,184,125,138,176, 91,105, 32,109,107, 6,154,136,106,
-106,106, 25,213, 76,161,250, 16, 54, 3,176, 36,216, 2, 58, 17,126,183, 62,252, 48, 60, 43,109,125, 79,127,119,214,218,118,158,
-185, 44,218, 22,100,195, 85, 21,152, 78,173,176, 24,129, 33,164,215, 46, 72, 51, 89, 87,232,220,113,192,221, 34,148,242, 50,174,
-121,115,101, 55,205, 29,104,115, 82, 78,211, 25,177, 59, 3,102,236, 21,187, 50,139,108,185, 46,165, 62,173, 33,153, 53,170,245,
- 73, 17,145, 54,114,162,180, 89,135, 17,150,162,180,148, 67,165,176,133, 61,224,176, 57,202, 21, 37,197, 41,197,149,100, 62,122,
-131,113, 6,106,185,165, 96,104,175,236,208, 11, 33, 34,197,137,182,166, 35,168,189,128, 0,244, 85, 23,220,156, 61, 80,210,154,
-104,136,127,239, 28,220,251,189, 7,243, 39,212,156, 45, 45, 45, 45, 48,227,119, 11, 95, 8, 4, 16, 70, 65,232, 65,215,221, 45,
- 12, 12, 83, 67, 45, 53,146,219,104, 65, 61,202, 82, 1, 63,128,213, 77, 45, 45, 12, 12, 51,123,215,177,246, 78,250, 90,142,219,
- 55,132, 15, 17, 77,169, 82, 41, 53, 88,229, 45, 85, 40,211,185, 57, 19, 46,159, 36,164,248,107,198, 2,208,160,166,221, 72,229,
-113, 10, 24,199, 21, 55, 95,128,189,229,176,101,201,126,218,136,213,251, 65, 75,139, 49,164, 82,249, 99, 86, 27,103, 36,161, 50,
-233, 82, 22, 57,221, 9,192,203, 14, 59,205,140,242,163, 60,162, 65,250,242,180, 33,192, 82,180,165, 96,247, 10, 0,143,219,170,
-147,196,127, 5, 56, 23,196,226,149, 89,229, 28,148,121,204, 74, 17, 43,169, 25, 98,168,208, 62,202, 73,169, 94, 41,209,127, 84,
- 75, 27, 50, 11,136,217, 1, 55,183,188, 54,241,191,143, 60, 47, 87,165,200,171, 99,172,201,165,114,239, 65, 86,173, 45, 54,179,
-246,158, 61, 46,146,192,237,250,198, 41, 21, 92,216,200,174, 64,180, 88,213,177,251,198,219,222, 2,182,186,252, 11, 10,228,255,
- 0,246, 90,178, 91,207,151,233,189,211,147, 31, 62,108,117,239,167,207,108,248, 36,222, 91,238,100,115, 87,165,127, 3,105, 10,
-113, 62, 60,170,176,241,106, 37,172,142,111,119,166, 48,172,135, 49,156,120,203,100, 12,103,174, 48,100, 58,105,148,245, 30, 99,
- 13,130,123,231,195, 26, 33,168,236, 50, 48,211, 77,182, 63,217, 72, 31,208, 53, 83,100,223, 67,239, 15,232,107, 82,167, 52,206,
-115, 28,238,154, 50, 15,179,179, 69, 4,111, 99,246,100,120, 99, 18,149, 61,249,111, 17,244, 97,139,115, 58,250, 99,248,133, 95,
- 67, 37, 46, 85,146,229,217, 29, 76,128,143,104, 85,150,162, 68,184,251, 81,164,210, 24,131, 14,220,200,229, 95,240,156,107,150,
-193,112,227,103,236,125, 9,184, 52,136,161,218,131,220,143, 84,106,146,130, 29,168, 84,101, 37, 56, 15, 74,120, 32, 14, 80, 10,
-130, 27, 64, 13,182, 9, 8, 72,201, 39,100,244,180,181,212,185, 94, 87,151,100,153,125, 38, 85,148,209, 71,151,101,180, 40, 35,
-134, 24,148, 36,113,160,232, 21, 70,221,110, 73,234,204, 75, 49, 36,147,142, 85,205,115, 92,203, 59,204,106,243,108,222,182, 76,
-199, 50,175,115, 36,211,204,197,228,145,207, 82,204,119,233, 96, 7, 69, 80, 21, 64, 0, 0,180,180,180,181,191,134,252, 45, 45,
- 45, 45, 12, 12, 45, 45, 45, 45, 12, 12, 45, 45, 45, 45, 12, 12, 45, 45, 45, 45, 12, 12,104, 15, 16,151, 95, 24, 54,239, 17,123,
- 83,103,109, 12, 84,212, 54, 75,118, 69,182, 47, 27,216,219,148, 90,131,187, 24,189,180,184,101, 92,219,132, 23, 42, 76, 82, 37,
-139,234,202,151, 77,160,210,125,241,138,135,213,181, 58,116,137,140,248, 9, 90, 64,231,117, 43,136,239,106,117,199, 89,185,105,
-117, 10, 52,219, 42, 68,189,220,218,235, 50,177, 79,135,177,151,213,106,118,216, 64,186,248,146,182,109, 10,197, 94,196,168,220,
- 27, 33, 79,182,247, 3,109, 33,236,132,171,166,163, 88,171, 53,117,221,106,132,229, 62, 29, 72,212, 41,241, 36, 73,106, 28,131,
- 84,132, 47, 28,201, 10,199,108,140,227, 84, 76, 88,197, 69, 69,150,202,143,115,203,215,203,250,134,165, 20, 60, 69, 77, 73, 4,
-113, 75,195,212, 85,111, 18,196, 57,143, 18,150,102,142, 70, 98,238, 24, 50,182,184,244, 70,234, 2,130, 99, 89, 13,218, 73,249,
-209, 44,195,134, 42,235,106, 36,154, 46, 37,175,163,142, 87,148,152,210,102, 8,171, 36,106,161, 35, 42,200,203,203,148, 73, 42,
- 49, 44, 87,154,209,139, 36,116,252,158, 18,111, 54,228,113,174,250,120,178,217,207,122,222, 77,206,102,216,218,235, 50,169,182,
-183,141, 11, 96,170,118,165,187, 86,174, 81, 46, 93,174,102,187,109,151, 87,181,116,241,125,223,117,200,235,187,229, 59, 34,206,
-174, 87,232,109, 83,149, 52, 24,150,188,232,144,226,189,121,221,222, 37,189,160,182,229,237,191,208,108, 59, 58,250,169,203,183,
-173,190, 38,157,179,108,216,155, 3, 85,170, 88,180,107, 78,206,216,154,213,197,195,166,226,216,251,164,154, 35,177,247, 99,117,
- 46, 45,225,139,109,211,166, 90,113,234, 19,223, 67, 85,233,113, 87,111, 66, 52,228,205,149,220, 51, 22, 58,149,204, 89, 65, 80,
- 24, 4,167,168, 30,131,211, 95, 12, 72,196,133, 22, 91, 42, 29, 1,229, 25, 3,211, 75,197,197, 20,136,176,163,240,229, 36,235,
- 18,176, 33,145, 44,210, 60, 84,241,180,133, 86, 48,170, 73,131,152, 2, 42,144,206,124,197, 76,130, 93,105,120, 70,177,218,103,
-143,138, 43, 96,121, 93, 72, 43, 36,132,172,105, 45, 76,169, 24,102,149,157,128, 21, 28,178,100,103, 82,136, 60,129,132, 70, 29,
- 28,224,214,249,226, 54,181, 83,222,219, 55,136, 39, 43, 85,241,100, 94,246,107, 27,119,127, 86,246,245,141,190,145,120, 91, 23,
-102,204,109,181,247, 91,109,168,212,184, 17,169,213,150, 40,215,245,201,118,208,253,234, 19, 64,161,116, 5, 67,154,165,207,141,
- 37, 70, 41, 62,217,106,175, 29, 60,104,113, 79, 93,164, 80,248, 84,226,128,108,102,199,212,235,214, 38,211,193,135,178, 27,169,
- 46,147,113, 46, 44,255, 0,115,185,183, 61, 15,199,182, 20,196,245, 87, 38,211,216, 92, 23,154, 60,130,143, 6,156,148,254,148,
-200,113,217,206, 33,150,155, 57, 67,105, 73,237,144, 49,211,211, 67,187, 77,128,242,138,221,136,195,139, 61,212,180, 5, 19,247,
-157,111,240,175, 28,175, 11,103,243,113, 12, 25, 5, 53, 85, 91, 66,177, 70,164,152,227,133,180, 34, 75, 44,105, 26,133, 87,155,
- 75, 19,164, 5, 65, 35,170, 0,166,216,110,227, 15, 15,159,139,248,110, 14, 25,168,226, 74,186, 58, 36,153,165,149,192, 89,101,
-157, 4,143, 36, 48,202,242,146,204,144,234, 80, 53, 18,206, 99,141,156,150, 92,126,116,252, 63,207,246,190,240,179,111, 84, 45,
-109,128,218, 78, 44,118,210,133, 86,172, 61, 95,169,195,163,240,195,113, 77,114,125, 93,248,145, 32,174,108,185,213,189,175,149,
- 33,245,136,112, 98,182,132,169,210,134,210,214, 16,148,229, 89,216, 95,229,123,244,129, 63,242,126, 52, 63,251,173,204,255, 0,
-254, 61,169,231,253, 81, 76,255, 0,200, 99,127,246, 73,254,173, 47,170, 41,159,249, 12,111,254,201, 63,213,169,173, 79,140,244,
-149,147,203, 85, 89,225,206, 77, 85, 85, 49,212,242, 73, 10,188,142,118,221,157,162, 44,199,110,164,147,211,211, 16, 58, 95, 2,
-107,104,105,226,164,162,241, 71, 60,163,164,128,105, 72,162,157,227,141, 23,246, 81, 18, 80,170, 58,236, 0, 27,226, 37,155,115,
-253,212,126, 49,125,153,188,113,237,174,247,198,222,153, 59,193, 46,175, 96, 72,219,250, 22,228,109,202,182,202,225,187,172,138,
- 21, 82,137,114,222,246,157,180,203,246,205, 29, 85, 20,205,129, 74,154,216, 8, 67,198, 83,220,180,197, 40, 34, 90,211,174,108,
-123, 29, 56, 93,226,149, 28,122,109, 85,237, 78,219,189,198,219,219,123,106,234,245,201,187,145,114,220,214,181,114,217,129, 10,
-149, 34,223,173, 81,102, 90, 18, 69,110, 36,113, 58,173, 81,126, 98, 97,251,154, 2,223,101, 46, 57, 49, 77,165, 17, 22,226, 63,
- 64, 22, 96,195,143,159, 6, 51, 45,115, 12, 43,145, 0,100,124,245, 69,170, 85, 61,151,140,134,162, 50,135,137, 36,184,148, 36,
- 40,147,243,198,154,161,241,114,174,151, 42,226,204,162,135,135, 40,168,169, 56,157,157,130, 68,186, 35,166,230,211, 71, 75, 40,
- 72,213, 66, 72,165, 35, 14,129,130,132,145,152,182,181, 58,112,239, 63,130,212, 85,153,191, 6,103, 85,252, 79, 95, 95, 91,194,
- 43, 26,151,149,181,201, 87,201,170,146,174, 18,242,179, 23,141,131,202, 81,202,150, 47, 18,162,175, 45,134,178, 91, 28,254, 11,
- 94, 39,235,248,104,231,255, 0,249,185, 70,127,110,177,109,192,143, 34, 93,135,122,196,136,195,210,165, 74,180,238, 40,241,163,
- 71,105,111, 72,145, 33,234, 68,198,217, 97,134, 91, 73, 83,175, 45,197, 37, 41, 74, 65, 82,148,160, 0, 36,235, 46,210, 35, 32,
-131,216,244, 58,169, 35,115, 27,163,129,114,132, 31,220,111,139,166, 68, 18, 35,161, 54, 14, 8,253,226,216,132, 15,176,167,134,
-142, 35,182,159,142,131,114,110,159, 15,251,217,182,150,232,218, 43,214,152,107,251,129,181, 87,213,153, 69,250,202, 85,110,207,
-118, 45, 59,235, 91,142,131, 25,143,127,113,168,178, 84,219, 62, 39,136,180,199,112,165, 36, 33, 68,117, 47,219,205,195, 55, 28,
-251,238, 54, 30,243,225,142, 29, 70,225,177,182, 89, 85,139,166,109,187, 96,220, 82, 40,155,167, 77,220,121,146, 24,110, 13,239,
- 72,138,151, 99, 46,172,220, 26, 44, 70, 24,129,245,108,167, 42,145,159,169,206, 83,113, 11, 78,151, 83, 34,132,192,132,135, 60,
-100,198,101, 46,147,146,224, 64, 11,207,219,162, 84,132,172, 20,173, 41, 82, 79,112,160, 8, 63,113,213,149,152,120,159,153, 87,
-113,173, 39, 27,140,170,149, 43,105, 34, 16,136, 36, 15, 44, 37,116, 73, 27, 19,114,172, 24,164,140, 1, 7,202,108,119,232,106,
-156,179,194, 76,171, 47,224, 42,222, 1,108,226,174, 74, 26,217,140,230,162, 50,144,206,175,174, 41, 20, 11, 43,161, 85,120,148,
-144, 65,212, 46, 54,216,136, 25,208, 61,170, 30,218,237,168,164, 39,110,107,112,119, 42,161, 86,167,180,154,124, 73,123,145,195,
-123,147,175,152, 73, 79, 52,102, 82,236,185, 86,131, 14,213,229, 7, 80,172, 61, 80,106, 99,238,173, 39,196,113,206,163, 77,149,
-151,192,119,180,211,218, 97,189, 44,110, 46,255, 0, 64,220,170, 74,107, 38, 36, 90,246,237,239,133, 26, 85,175, 26,139,111, 48,
-234,221,106,157,101, 88, 47,198,128,235,144, 71,143, 49,200,112, 41, 20,248,116,144,252,135, 28,117,248,190, 58,222, 95,232, 6,
-237, 2,142,250,185,220,129, 29, 74,245,240,211,253, 90, 50, 61, 62, 20, 79,251,222, 43, 45, 99,205, 8, 0,254, 56,212,132,120,
-202,153,122,212, 79,195, 92, 13,149,240,246,109, 84,165, 90,170, 40,213,156,106,234, 81, 86, 56,128,223,205,165,153,208,176, 5,
-209,237, 99, 26, 62, 5,190,100,244,176,113, 87,136, 57,191, 19,100,212,110,174,148,114,202,202,135, 79, 64,238,210,202, 78,215,
- 82,200,169, 32, 82, 66, 58, 94,248,215,190, 20,248,114,178,184, 89,217, 43, 15,102, 44, 56, 70, 37,191,100,208,163,210,163, 45,
-222, 85, 76,168, 74, 82,220,153, 87,173, 84,156, 72, 1,218,172,250,188,153,211, 37, 41, 41, 74, 21, 34,123,133,180, 33, 28,168,
- 78,200,105,105,106,151,168,168,158,174,121,234,170,101,105,234, 42, 93,164,145,216,221,157,220,150,102, 98,119, 44,204, 73, 39,
-185, 56,189,233,169,169,232,233,169,232,233, 97, 90,122, 90, 84, 88,227,141, 5,149, 35, 69, 10,136,160,108, 21, 84, 0, 7, 96,
- 48,180,180,180,180,142, 23,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,
-210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,214, 53,117,217,246,213,239, 67,171,219,183, 69, 34, 21,
- 94,149, 91,165, 79,163, 84, 24,146,195,107,113,112, 42,113, 93,135, 45,182, 95, 41,231,142,178,203,206,114,173, 5, 42, 66,136,
- 82, 72, 80, 7, 89, 46,150,178, 24,169, 5, 77,136,238, 48, 8, 7, 98, 46, 49,196,171,235,133,221,241,219,202,252,170, 5, 5,
-186,133,255, 0,110, 54,227,142, 91,183, 24,180, 43, 87, 5, 89,218, 66,156, 34, 28, 91,130,109, 22,174,210, 93,171,176,128, 27,
-113,199, 24,105,215,249, 3,170, 47, 40,169,247, 49, 56,124, 52,111,189,235, 81,137, 67,173, 91, 85,184,244, 57,175, 52,212,250,
-127,240, 58,177,105,211,231, 52,181, 0, 89,174,220, 21,122,163,202, 77, 11,186,164,199, 97, 13, 46, 66, 17,224,173,197,178,183,
- 24,123,188, 58, 90,146,167, 20, 85,172, 74,141, 2, 59,168,182,162, 91,115,107, 92,168, 54,223,184,232,119,216, 13,176,222,114,
-248,203, 92, 57, 11,126,155,126, 7,249,225,157,217,141,156,160,236,245,178,138, 85, 60, 53, 50,183, 53, 12, 57, 94,173,134, 82,
-202,230,190,210, 57, 90,139, 21,176, 63,193,105, 44, 36,169, 17,217, 29, 0, 37,106,202,214,163,167,139, 75, 75, 81,233,166,150,
-162, 87,154,103, 50, 73, 33,185, 39,231, 96, 58, 0, 54, 3, 97,182, 55,149, 85, 20, 42,139, 42,244,194,210,210,210,210, 88, 54,
- 22,150,150,150,134, 6, 32,111,253,251,111,253, 25,127,246,206,255, 0,117, 13, 84, 31, 77,167, 61,189,153,157,251,127,142,111,
-251,168,234, 6,201, 25, 61, 71, 79,216,116, 66, 7, 92,227,160,237,253, 29,191, 61,180,202,213,149, 2,195, 94,231,220,191,150,
- 52,249,178,126,215,224, 63, 44, 79, 25, 63, 77,151, 39,255, 0, 6,119,218,127,150,103,111,251, 41,107,223,247,236, 95,244,103,
-255, 0,219, 47,253,212,245, 4, 4, 2, 7, 95, 63, 47,223,170,169, 25, 61,186,122,250, 31, 81,243,210,126,219, 83,255, 0, 19,
-240, 95,203, 24,230,201,127,181,183,192, 98,119,163,233,176,103, 24,246,104, 30,163,167,248,229,121,231, 24,255, 0, 53, 62,250,
-168, 62,154,225, 35,175,179, 71, 31, 47,229,149,254,234,154,130, 42, 65,207, 67,215,212,255, 0, 96,209, 9,238, 1, 57,207, 66,
-113,249,198,136,213,245, 67, 97, 37,143,253, 43,249, 99, 60,217, 45,187,126, 3,242,196,238, 7,211, 87,201,199,247, 52,251,255,
- 0,207, 39,240,255, 0,146,174,190,171,233,171,114,130,127,185,167,159,151,242,200,255, 0,117, 93, 65, 69, 9,235,159,151, 79,
-207,231,190,171, 4,115, 15,151,207,215,229,233,211, 26, 76,230, 21,118, 63, 93,254, 85,254,156, 37,237, 18,245,215,248, 15,203,
- 19,165, 79,211, 89, 73, 4,159,102,170, 83,233,158, 50,135,207,254,106,191, 45, 18,215,211, 80,241, 19,205,253,205, 94, 80,123,
-127,142, 62,115,255, 0,101,109, 65, 56, 67,100,168, 18,128,163,223,185,239,242, 25,237,223, 87, 54,211,203,202, 0, 0,118, 29,
- 49,229,158,131,238,210,103, 49,173, 22,250,254,191,225, 79,233,198, 13, 68,189,155,240, 31,150, 39, 74,159,166,146, 79,127,102,
-191, 47,111,249, 99,122,255, 0,213, 99, 85, 71,211, 69,207,250, 54, 71, 94,199,249, 98,244,199,175,249,172,106, 11,137, 0,145,
-159, 63, 79,199,240,209, 41, 7,203, 0,118, 57,237,143, 77, 96,230, 85,191,241,191,202,159,211,140,123, 76,223,183,248, 15,203,
- 19,158,254,253, 11,254,141,175,251, 98,127,186,206,189,143,166,127,144, 15,247, 54,241,159,249,225,255, 0,186,214,160,208,144,
- 8,234,123,244,199,237,253,218, 36, 39, 29,124,250,119, 29,189,116,145,205, 43,199,251,255, 0,242, 39,187,252, 56,199,180,205,
-109,218,196,123,135,229,137,201,143,166,116, 79,250, 55, 15,111,252,240,187,127,217,107, 94,199,211, 56, 39,191,179,119, 29, 51,
-254,120, 95,111,127,241, 91,233,219, 80,111, 66,135,111, 60,254, 7, 24,209, 8,238,125, 72,239,223, 31,119,231,182,138,115, 90,
-253,254,190,214,255, 0, 10,127, 78, 11,237, 51,116, 50, 88,250,233, 31,150, 39, 26, 62,153,166,112, 71,179,131, 57,237,142, 48,
- 63,221,115, 94,135,211, 49, 57, 0,251, 55,241,156,227,252,112, 51,219,254,171,154,131,194, 82, 70, 48, 64,232, 51,143, 33,242,
-252, 52, 66, 49,158,191, 96,244,255, 0,142,136,115,108,195,114, 42, 46, 7,248, 19,250, 48, 95,107,159,246,255, 0, 5,252,177,
- 56, 65,244,203, 15,159,179,135, 31,245,191,207,255, 0,149,221,122,254,252,175,166,127,185,197,246,143,229,127,219,211,254, 75,
-218,132, 10,112, 10,114,160, 9, 29, 7,168, 61,127,167, 94,243,144, 72,238,122,100,244,207,207, 69,253, 47,152,255, 0,204,127,
-146, 63,233,198, 13, 93, 64,255, 0,121,248, 47,229,137,189,127,126, 89,255, 0, 71, 16,255, 0,239,127,229,235,254,107,186, 95,
-223,150,127,209,197,255, 0,107,255, 0,247, 93,212, 32,130, 70, 78, 83,156,121,142,227,167, 97,235,175,129, 39, 36, 96,158,227,
-228, 15,174,116, 63, 75,230, 63,243, 31,228, 79,233,198, 61,174,163,175, 50,254,235, 47,229,137,191,255, 0,126, 86,112, 79,247,
- 56,187, 99, 63,227,127,235,216,255, 0,154,238,144,250,101,100,228, 15,103, 9,200, 56,255, 0, 59,241,143,159, 95,228,189,168,
- 65, 28, 19,201,158,160, 12,125,189, 71, 93,124,228, 56, 61, 58,142,199,215,215, 67,244,190, 96,127,246,143,242, 39,244,227, 34,
-170,163,188,157, 61,195,242,196,224, 26,250,101, 42,117,105, 66,125,155,238,173, 74, 90, 16,134,216,226,229,114, 31,117,110, 45,
- 45,180,204,120,237,112,184, 87, 34, 67,142,173, 8,109,180, 2,183, 28,113, 40, 64, 42, 80, 26,145,125,139,237, 28,187,106,123,
-107, 97, 92,219,161,195,163, 59, 99,184,215, 61,173, 2,228,186,182,189,141,220, 55,106,172, 25, 85, 68,137, 81,173,154,141,204,
-118,206,154,106, 53,248,244,231,225,154,131,105,167, 50,136,178,214,252, 70,220,146, 35,151,215,249,251,123, 18,120, 79,167,111,
-111, 18,114,247,186,251,163, 49, 85,218,222, 24,163,210,111, 53,194,156,128,245, 62,228,222, 74,163,175, 29,169,183,157, 96,172,
- 9,108, 83,222,131, 80,184,101, 52,174,132,209, 41,225, 89, 75,196, 25,105, 85,110, 39,101, 73,126,161, 41,197,174, 75,239,169,
-114,139,171,241, 63,239,176,162,251,170, 86,121,157, 65, 89,113, 67, 7, 35,169, 4, 18,115, 82,113,247,137,217,238, 79, 87, 22,
- 91,147,230, 34, 26,136,198,185,156, 69, 79, 33, 23,221, 80, 44,145, 56, 6,222, 98,116,157,153,122,110, 71, 99,125, 27, 60, 13,
-161,241, 3, 47,175,226,174, 50,162,122,236,146, 71, 48, 81, 64, 36,150, 14,107, 70,214,150,114,244,239, 20,133,117,222, 36, 93,
- 65,110,172, 77,203, 45,186,186,215,180, 61,151,139, 72, 78,210, 40, 56,230, 50,147,125, 47,149, 37, 77,151, 65,231,254, 5, 97,
- 72, 9,229,201,242,231, 29, 51,240,235, 38,139,199, 80,146,160,145,181,193, 5,104, 75,168,255, 0,223,202, 78, 90, 39,195, 82,
-214, 13,164, 11,120,116,164, 96,142,161, 65, 94,120,215, 37, 97,212,227,199,149, 78, 9,151, 17,105,146, 42, 43,109,228,184,158,
- 66,150,152, 96,162, 49, 81, 60,133,229, 15, 16,124, 93, 73, 25,192,198,117,127,135,119,198,133, 85,181,154, 92,152,232, 50, 28,
-186,224, 45, 77,133,168,134,145, 77,106,160,134,156, 25,228,241,210,136, 43, 91,107, 60,205,168,199, 90, 80, 50,188, 26,248,120,
-191,199, 91,223, 62,222,224, 91,217,168,122, 27,111,255, 0,163,123,205,183,183,173,183,183, 70,215,125, 26,252, 47,211,253,139,
-131,216, 17, 28,143,189,110,104,215, 17,164,174,118, 53,123,111, 17, 95, 80, 78,224,219, 29,102,143,198,144,125,124,131,109, 74,
- 72, 74, 85,145,120,165,105,198, 84,135, 7, 50,109,142,133, 46,164,167, 31,102,112, 78, 53,145,195,226,200, 74,117, 13, 42,195,
- 67, 36,164, 41,197, 27,185, 11, 13, 21, 41, 73,194,147,252, 30, 10, 94, 8, 28,197, 41, 32, 5,103, 39,166,121,115, 2,240,167,
- 70, 20, 80,180,187,134,229,185, 73,145, 29,134,150,242,101, 73,157, 30, 64, 97,134,152, 42,230,117,245, 61, 19,152,140,164, 39,
- 42, 42, 1, 32,105,211,165, 85, 16,235,177,228, 37,200,205, 55, 48,170, 47,130,211,169,144,168,175,186,194,157, 76, 57, 13,129,
-240,203, 11,104,243,140, 39,147,168, 74, 84, 64,202,195,197,222, 56, 99,182,126, 45,113,183,178,209,131, 98, 7, 66,105,253,247,
-233,115,110,128, 3,138,247, 55,240, 35,129, 40,195, 21,225,118,129, 72,107, 19, 85, 94,119, 82,194,219,213, 27,146,171,175, 96,
- 71,152,124, 11,113,237, 58,246,213,110,191,179,158,220,176, 55, 74, 7, 3, 3,126,182, 34,238,121,155,106,229,220,202, 87, 17,
- 78, 89, 19,118,199,113,165,190,239,212,246,205,239,105,183,176,245,193, 6,220,171, 67, 74, 62,167,174,138,129,141, 46,106, 28,
-166,201,143, 6, 89,138,153,124,121, 63, 76,188,131,211,217,192, 8,233,212,113,129,228,124,255, 0,205,115,211, 93,240,187,108,
- 11, 23,121, 44, 27,215,104,183, 62,212,167,238, 22,218,110, 61,183, 91,177,239,203, 66,160,208, 85, 46,224,160, 85, 98, 2,253,
- 61,213,161,121,131, 48, 56,162,244, 73, 72, 34, 68, 57,212,248,242,227, 45,183,153,109, 73,252,231,120,230,246,106,239,183, 6,
- 60, 82, 94,220, 62, 83,108,205,193,221, 91, 81,182, 13,241,179, 87,213,187,104,220, 55, 36,155,231,104,106,242,164, 10, 21, 78,
-166,154, 13, 41,239, 10,232,165,186,219,212,154,235,124,169,228,168,210, 87, 32, 1, 30,100,114,171, 79,131, 60, 72,204,115,136,
- 37,165,205, 43, 2, 87, 83,141, 66, 67, 28, 72,146,161, 61,172,129, 53,165,192,178,216, 50, 16, 84, 54,151,115,201,126, 41,240,
- 67,240,133, 90, 87,229,108, 70, 77, 84,193, 66, 19,169,160,115,246, 86,238, 90, 66,143,111, 41,114, 72,109,181, 29, 64, 44,156,
-255, 0,191, 47,234, 71,247, 56, 71, 65,159,243,192,245,237,255, 0, 37,221,124,254,252,192,255, 0,251,184, 58,127,233,129,251,
-191,146,230,161, 89, 94,176, 47,187, 81,114, 17,117,216,247,149,174, 99,171,195,147,252, 35,181,171,244, 20,198,115,152,128,219,
-235,171,211, 88, 13, 56, 84, 8, 9, 81, 4,144, 64, 7, 88,123, 74, 75,159, 19, 69, 14,164, 21, 0,180, 45, 46, 36, 20,146, 20,
- 9,109, 68, 2, 15,124,246,212,249, 51,218,185, 55,142,181, 92,123,132,103,248, 46, 42, 15,110,150,246, 51, 0,111,208,133,191,
-238,181,241, 56, 81,244,203,137,239,236,225,192, 29,201,226,255, 0,215,254,171,186,248,126,153,120, 29, 15,179,135,175,203,139,
-254,159,143,242, 93,212, 32, 71,158, 48, 9,235,223,204,253,191,118,188,167, 39,161,193,199, 83,242, 36,159,221,165,127, 75,230,
- 63,243, 31,228, 79,233,193,189,170,162,223,222,111,255, 0, 72,252,177, 56, 1,244,203,201, 56, 30,206, 14,191,250, 95,255, 0,
-186,238,190, 43,233,152, 4,128,127,185,195,159, 80, 56,191,234, 62,223,241, 93,212, 32,142,124,128,239,248,116,243,251,245,224,
- 2, 84,115,211, 3,186,122,117, 63,111,200,157, 15,210,249,143,252,199,249, 19,250,113,159,106,159,254, 39,224, 63, 44, 78, 11,
-251,242,241,128,127,185,197,247,127, 43,254,191,183,133,221, 47,239,203,198, 79,253,206, 35,129,231,252,175,186,125,255, 0,226,
-187,211, 80,130, 66, 58,149, 12,115,116, 4,159, 63,159,111,206, 53,240,167,226,206, 58,142,135, 29,189, 58,232,126,151,204,127,
-230, 63,200,159,211,129,237,117, 31,183,248, 47,229,137,190, 15,166, 96, 9, 35,251,156, 36, 99,204,241,125,223,236,255, 0, 21,
-237,123, 31, 76,184, 28,127,220,226,239,156,127,141,247,167,127,249, 47,106, 16, 24,207,151,108,247,244,199, 92,126,124,181,244,
-117,192,232, 61, 63,183,166,135,233,124,199,254, 99,252,145,255, 0, 78, 49,237, 85, 23, 31, 89,248, 47,229,137,191,143,166, 88,
- 79,250, 56,122,245,233,252,175,255, 0,163,252, 87,122,235,233,250,101,100,119,246,112,227, 63,243,191,235,248,127, 37,221, 66,
- 19, 3,190, 50, 71, 94,159,213,159,150,190,247, 32,249,119,193, 25,253,190, 93,244, 63, 75,230, 63,243, 31,228,143,250,112, 61,
-170,163,254, 39,224,191,150, 38,238,126,153,113, 31,232,224, 56,245,254, 87,248,253,159,201,119,166,169, 43,233,153, 17,254,141,
-252,140,227, 63,203, 3, 30, 93,255, 0,205,115, 80,137, 32,156,156, 0, 51,142,224,117,245, 61,123,245,213, 5, 32, 17,128, 51,
-158,253,127, 63,145,172,254,151,204, 44,127,180,111,255, 0, 68,127,211,140,251, 84,255, 0,183,248, 15,203, 19,121, 63, 76,212,
-130,113,236,221, 39, 7, 31,231,129,248,255, 0,201,111, 95, 15,211, 55, 35,183,179,120, 30,153,255, 0, 60, 47,217,254,107,125,
-245, 7,245,128, 51,129,133,119,198, 14, 62,255, 0, 77, 10,172,140,244, 29,122,244,245, 31,111,111,237,209,151, 54,175,239, 83,
-123,255, 0,129, 63,167, 25,246,169,251,191,224, 63, 44, 78, 33, 95, 76,228,167,253, 27,185, 30,191,203, 11,253,214,245, 72,253,
- 51,220, 28,127,115,115, 63,245,194,255, 0,117,175, 77, 65,216,247,233,128,113,149, 30,227, 30,127,111,150,188, 16,112,114, 0,
-207, 92, 14,248,249,244,232, 59,232,227, 53,175, 32, 30,127, 95,240,167,244,224,235, 81, 49, 23, 50,126, 3,242,196,226, 85,244,
-208, 57,127,209,181,145,235,252,176,255, 0,221,103, 84,207,211, 67, 35,253, 27, 63,135, 24,191,238,177,168, 57, 45, 35, 56,193,
-193, 29,252,191, 31, 95,234,208,235, 73, 57,230, 30,125,255, 0,163, 74, 46,103, 90,127,223,127,149, 63,167, 0,212,205,183,155,
-175,184,126, 88,156,137,250,105, 24,200,254,230,199,108, 99,252,113,123,255, 0,217, 99, 84,213,244,210,249,127,209,175,159,250,
-227,126,239,228,175,168, 52, 41, 61, 72, 62, 89,255, 0,142,168, 41, 56, 62,164,103, 31,126, 58,232,227, 50,173,255, 0,141,127,
-251, 83,250,113,145, 81, 41,232,255, 0,128,252,177, 57,179,244,211,113,219,217,173,147,233,252,177,255, 0,221, 95, 94, 15,211,
- 80,198,127,238,106,246,242,254, 88,253,127,254,213,181, 6, 5,142,164,147,229,220,116,200,251, 71, 97,211, 84,150, 6, 51,159,
-179,211,246,104,227, 48,172,218,243, 94,253,244,175,244,227, 62,209, 55,237,254, 3,242,196,231,207,211, 85, 32,103,251,154,121,
-199,252,242,113,255, 0,229, 87, 84,149,244,214, 72,255, 0, 70,150, 71,254,153, 61,191,236,169,168, 45,169, 56,237,219,247,143,
- 95,191, 67, 44,117, 35, 3,175, 92,104,195, 48,171,190,242,237,255, 0, 74,254, 88, 56,158, 75,253,187,253,195,221,238,196,233,
-215,244,215,249, 15,254, 13, 12,143, 95,229,149,251,191,146,159,174,168, 31,166,202, 57,185, 71,179, 56,159, 60,255, 0, 44,190,
-159,179,133, 62,250,130,147,205,243,116, 35,207,203,167,159, 76,103,203,250,244, 42,153, 60,221,200, 3,183,150, 62,206,158,154,
- 88, 86,212,216,125,109,255, 0,237, 95,203, 6,231, 73,183,159,240, 24,157,183,247,236,196,140,143,102,104,199,110,188,102,224,
-231,211, 31,201, 71, 94, 15,211,105,229,239,236,204,199,253,115,191,221, 71, 80, 71, 82, 0,206, 51,208,227,167, 94,222,154, 25,
-105, 72, 7, 35,174,124,242,122,252,243,246,104,235, 89, 57, 27,203,191,192,126, 88,199, 58, 77,183,189,253,195, 19,188,254,253,
-183,254,140,191,251,103,127,186,134,150,160,120, 80, 60,142, 63,111,239,210,209,253,170,163,254, 39,224,191,150, 13,205,147,246,
-191, 1,249, 99,234, 65, 0, 3,249,235,162,146, 15, 64,123,244, 31,156,106,138, 70, 79,203,207,243,246,232,132, 12,159,179,175,
-223,157,105, 22,185,191, 75,116,194,120,174, 1, 61,189,113,249,249,106,176, 0, 96,121,121,254,253, 83, 70,122,244,200, 36, 12,
-231,183,231, 58,174,144, 14,115,158,131, 61, 52, 76, 12,123, 74, 74, 73,234, 49,249,252, 52, 66, 7, 76,250,254,204,106,130, 50,
- 71, 92,224,158,153,235,223,231,231,253,154, 41,180,246, 7,203,169,252,253,186, 65,141,205,241,131,176,191,166, 43,163, 29,135,
-197,143, 79,159,217,162,144,140,142,131, 3,207,237,253,231, 84, 17,208,244, 3,175,125, 20,140,253,223,191, 68, 98, 69,192,194,
- 36, 91,248,227,210, 7, 98, 79, 83,230,122,244,253,253,180, 72,193, 3,207,211,167,159,110,218,164,145,147,246,117,209, 9,237,
-140,128, 1,200,251, 71,223,219, 73, 49,185,233,108, 99, 21, 18, 0,193,193,235,223, 61,241,233,162, 83,140, 14,157, 60,134,124,
-191,118,168,164,115, 31,219,247,116,237,162, 80,158,163,167, 65,235,162,147, 97,115,219, 4,244, 23,177,255, 0,199,207,250, 98,
-170, 64,242, 3,229,162, 82, 9,192,249,119,249,252,245,118,183, 45,171,130,238,172, 83,173,203, 86,135, 85,184,238, 26,180,164,
-196,164, 80,104, 52,233,117,122,213, 90, 99,129,106, 68, 58,109, 46,158,203,143,206,146,164,161,100, 33,180, 40,242,182,165, 16,
- 2, 73,213,222,187, 99, 94,182,156,151, 98, 93, 54,117,215,108, 74, 96,148, 63, 30,227,182,235,180, 39, 90, 90, 78, 20, 28, 77,
- 82,158,215, 41,230, 7, 90,109, 60, 43, 32,137,165, 81, 43, 11,133, 36,106,181,237,123,117,183,107,224,250, 36,229,180,162, 54,
- 49, 41,179, 56, 83,164, 27, 94,197,173,164, 27, 88,218,247,182,248,198, 80,144,123,128, 8,207, 65,220,156,249,122,157, 86, 70,
- 62, 33,143,179,215,239,252, 63,110,188, 32, 18, 50,217, 14, 1,220,161, 73,115,211,185, 65, 56,237,162, 27, 73, 86, 58,128,125,
- 7,127, 95, 61,101,136,223,126,191,127,195, 26,250,131, 11,131,127,120,239,138,168, 73, 56,233,212, 12, 30,190, 64,234,179,125,
- 79,108,128, 65, 3,191,221,251, 53,245, 40,236, 58,103,190,122,253,191,187, 85,144,140, 43,169, 3,207,228,114, 15, 95,217,164,
-240, 49, 84, 39, 42,193,232, 59,129,129,148,140,118,207,225,175, 74,108,245, 4,242,143, 47, 81,233,175,160,149,103, 24, 10,245,
- 30, 99,243,231,175, 67,174, 2,178, 51,230, 48,123,121,159,195,246,235, 24,199,195,174, 40,165, 56,206, 85,212,156,142,157,254,
-204,246,215,148,164, 2, 50,163,223,238,235,242,243, 58,172,224,201, 29,122,122,142,157, 51,140,159,151, 93, 92,168,148, 58,189,
-195, 84,167, 81, 40,116,202,141,102,177, 88,152,213, 58,145, 73,165, 65,153, 85,171, 85,170, 18, 20, 16,196, 10, 77, 42, 3, 46,
- 72,169,206, 90,136, 8,101,134,214,226,179,209, 58,195, 50,162,150,118, 10,171,185, 39, 96, 48, 91,133, 2,231, 97,181,254, 54,
-183,239,197,153, 93,240, 57, 64, 30,106, 3,174, 51,128, 61, 53,233, 88, 67, 69,215, 84, 27,101, 56,241, 29, 89, 8,105, 40,238,
-165, 21,172,129,140,103, 82, 39,224,247,232,242,113, 5,186, 44,209,175,126, 45,110,120,252, 41,109,245, 65, 45, 76, 98,212,168,
-192,137,115,111,205,126, 34,210,167, 80,219, 22, 95,189, 38, 13,132,167, 80,143,133, 85,151,221,152, 18,178, 69, 47,152, 99, 82,
- 25,217,126, 4,125,158,220, 32, 70,111,248,177,225,226,214,187,174,202, 84,112,204,221,208,222,132,198,220,171,212,205,121,104,
- 12, 72,241,238, 54,151, 77,163,211,164, 45, 56,103,220,169,241,154,109, 74,229, 79, 82, 64,134,103, 28,115,148,101,101,145, 24,
-213,204,187, 89, 14,215,247,144, 9,248, 27, 91,212,226,216,224,191, 5,184,251,142, 12,111,150,229, 38,134,142, 80, 8,158,164,
- 20, 4, 18, 0,100,140,217,216, 94,195,204, 99,185,176, 23, 36, 3,170,254,203, 46, 26, 46, 77,165,224, 39,102,233,180,203, 98,
-123, 55, 94,240,135,247,210,247,144,229, 50, 82, 28,149, 42,249, 17,191,130, 80, 39,169,184,229, 79,197,133, 96,194,183,154,100,
-100, 99,197,117, 73, 37, 43, 81, 86,234, 87,236,203,238,132,204, 33, 46,221,170, 32,138,139, 45, 45,243, 6, 98, 99, 20,165,137,
-143,123,195,179, 60, 34, 27, 65,240,249, 15, 57, 79, 42,214, 17,130, 72, 35, 99,155,223, 42,234,221,136,202,101,194,143, 66,171,
-184,105,112,211, 76, 5,132,211,101,181, 28,123,180,100, 71, 82, 83,238,168, 82, 80,227, 9, 67, 73, 8, 14, 54,132, 97,180, 20,
-130, 37, 39,125, 42,234,171,170,153, 34,124,151,131,206,170, 19, 32, 54, 57,101,207,141,200,137,172, 48, 57,190, 37, 8,222, 27,
-165, 60,170, 39, 42, 9, 10,109, 42, 35,158,243, 89,104,243,106,250,186,249, 38,156,203, 86,236,231,104,202,139,157,149, 87, 85,
-236, 1, 10,190,110,130,198,230,248,244,231,129,168,248,183,129,184,107, 38,225,202, 14, 30,163,155, 47,200,105, 99, 77, 38, 89,
-121,146,114,215, 68,146, 59, 8,236,178, 22, 87,121, 1, 82, 69,181, 95, 73, 7, 26, 81, 90,169, 61, 79,168,208,167,204, 91, 44,
-184,170,148,168, 83, 66, 11,141, 70,124, 78,167, 84, 35, 51, 29,198, 66,130, 11, 8,121,168,165, 36,146,181, 41, 14, 44, 21, 40,
-224, 88,100, 92,178, 84,252, 41, 12, 58,134,169,236,223, 20, 56, 17, 31, 91,158, 31,213,209,106, 45, 85,162,212, 38, 53,239, 67,
-159,220,194,222,100,171, 9, 37, 41,111, 45,133, 37,120,214,238,238, 21,145,110,110,237, 53,104,141, 18,147, 65,187,160,213,226,
- 84,226, 75, 44, 52,154, 77, 70,163,111,200,247,152,240,235,208,227,114,167,192,113, 14, 20, 25, 44,164, 59, 28,191,226, 56,135,
-145,206,141,115, 74,240, 69, 70,139, 58,226, 93, 94,157, 42,151, 38,217,171,209,163,191, 18, 75, 72, 91,241,167,211,107,148, 86,
-235, 13,120,141,225, 15,143,117,147,200,218,176,158,118,242,164,158, 78,241, 42,202,121,105,230, 69, 46, 37,138, 83,229, 96, 54,
- 39, 96, 53, 11, 27, 48,191,217, 61,150,247, 32, 99,163,184, 11, 53,202,248,178,154, 72,228,131,244,126,105, 66,170,147,211, 72,
-202,218, 17,229, 26, 94, 18, 8, 15, 27, 23,116, 14,187, 34, 6, 89, 17, 67,170, 54,206, 82,238,185,177,160,198, 76,229,153, 13,
-208,110, 74, 4,198,235, 44, 56,149,128, 69,106, 35, 41,155, 33, 8,201, 46, 37,233,173,153, 1,226, 91, 60,203, 41, 39,176,223,
-221,171,219,215,238, 40,178, 42,213,233, 10,163,209,233,181, 8,142, 38,114, 84,251,110,185, 54, 35,209, 31, 13,197, 91,138, 79,
-143,206,150,212, 57,242,124, 38,229, 16, 84, 73,240,213,204, 75, 50,143, 87,173, 84,164, 89, 20,181,168, 46,225,151, 26,159, 71,
-109, 65, 14,184,229,111,223,226,166, 53, 41,224,179,148, 64,114, 79,132, 90,113, 73,200,104,184,146,174,118,146, 79,101,175,201,
-205,219,204,155,102,128,180, 26,125, 18, 28,150, 98,195,105, 10, 14, 85, 92,139, 49, 44, 74,113, 69,160, 66,149, 34, 98, 36, 58,
- 20, 83,202,178,235,104, 56, 3, 26,125,225,170,120,167,231,215, 85,141,112,211,105, 68, 66,108, 25,200, 98, 1, 35,204, 2,129,
-118, 32,139,221, 73,211,171, 88,164, 60,112,168,124,170,167, 38,200,178,103, 72, 51, 44,237,231,149,166, 81,253,213, 50, 10, 79,
-172, 10, 67, 42,201, 44,175, 42,128,126,168, 90, 67,176, 82, 27, 44,157,124, 91, 86,163,172,210, 40,209, 33, 66,112,182,149, 48,
-228,143, 4,186,243,202,144,134,136, 71, 50, 71, 59,195,196, 43,253, 81,128,121,143, 54, 9,213, 9,123,191, 49,153,245, 55, 35,
-206,109,168,116,233,113, 41,236,173,165,115,203,126,108,150, 24,126, 66, 34,165,149,164, 32, 41,215,163,182,233, 78, 22,166,155,
- 90,143, 48,108,145,165, 85, 75,154, 37, 70,161, 46,164,219,243,155,165,183, 95,162, 83, 41,204,184,183, 31,120, 38, 3,190, 45,
-101,232,203,231, 40, 76,115, 83, 50,127, 74, 20,164,143,112, 40,242, 9, 31, 98, 92, 79, 79,129, 78,140,203, 11,121,138,245, 72,
-215,101,185, 49,196, 39,158, 19, 18, 21, 36,165,158, 84,115,163,196,105,234,116,116, 44,252, 60,143,172,114,249,234,105,237,243,
-234, 88,226,151,149, 96, 84, 34, 93, 22,215, 29,128, 4, 3,181,141,183,216,168,177,185,166,163,240,166,136, 67, 12,245,145, 53,
- 84,238, 0,153,166,177, 96,204, 18, 87, 55,144,155,186, 70,146, 43, 45,216,107,212, 1, 59, 91,122,169, 91,167, 70,186,227,184,
-197,203, 10,131, 87,163,189, 10, 69, 85,214,171,148, 90, 69,113,166, 35, 70, 56,136,137, 81,234,204,184,151,100,173,214,164,200,
-104, 6,254, 24,254, 26,193, 30, 33,214,177,238,127, 2, 62,206, 30, 34,208,151,119,167,131, 14, 31,170, 51,171, 76, 70,150,170,
-189, 2,208,133,100, 93, 16,152,156,135, 92, 15,166,232,176, 13, 54, 74,101,165,135, 57,220, 33, 69, 97,249, 39,169,192, 0, 26,
- 93,210, 95,153, 46,142,195, 48,212,207,240,138, 76,170,188,247,144, 86,212,166, 41,209, 88, 17,109,147,200,217,240, 91,113,230,
- 10, 86,128,162,166, 98,165, 96, 97,201, 9, 78,178,250, 69, 65,249,177,152,150,228,245, 53, 78,141,239,234,159, 40,211,220,125,
-234,189,102,123,128,204,166,210,121, 79, 70,152, 89, 40,114, 90,121,185, 11, 65,166,199,232,221,121,189,200,179, 42,152, 93, 92,
- 75,230,181,135,235, 18,204, 69,152,107,221, 75, 2, 72,234, 69,174, 46, 14, 32, 60, 65,225, 38, 67, 80,102,246,156,185, 96,142,
- 64,186, 65, 26,216, 43, 6, 40, 6,149,221,157,212, 46,150, 93, 69, 68,110,116,131, 41,199, 40, 55,231,232,175,112, 39,186, 52,
-233,149,158, 27,247,143,120, 56,116,174,173,153, 18, 34,210,174, 57,144,247,130,194,102, 74,185,149, 26, 52,200, 23, 10,162, 86,
- 96,176, 86,182,130,146,213, 93,197,161,183, 1, 8, 39,149, 38, 53, 60,110,123, 1,189,162, 92, 20, 64,171,222, 82,246,226, 47,
- 16,123, 65, 75, 15, 72,127,116,120,126, 77, 82,239, 20,202,115, 40, 46,174,117,219,183,111, 65, 69,126,215, 97, 8,232,243,169,
-139, 58, 27, 74, 74,185,166,114,142, 99,250, 18,209, 46,181,183,224, 68,113,102, 52,106,107,177, 37,200, 76, 89,105,113,113,218,
- 56,118, 12, 55,101, 50, 10,230, 23, 86, 85, 37,215,208, 22,167,192, 67, 77,169, 69,206,125,108,205,177,123,137, 81,132,228, 77,
-240,230, 79,154,105,244,170, 68,172, 70,170, 45, 44,243, 23,229,205,128,165,133,198, 42, 67,110, 60,176,176,144,220, 86,155, 75,
-156,175,184, 82, 37,249,111, 22, 85, 64,218, 42, 36, 46,150,235,171, 86,247,176,186,185, 5,172, 47,228,140,198, 46, 44, 72,234,
-121,147,139, 60, 39, 92,176,153,168,117, 68,140,198,218, 71,144, 3, 98,138, 64,212,159,103, 84,140,214, 0, 32, 12, 28,131,124,
-126, 50,105,198, 21,146, 20, 2,150,143,132,228, 7, 26, 81,109,214,212, 65,248, 92, 74,194,146,164,156, 20,169, 37, 42, 0,131,
-165,219,161,234, 58, 18, 58,228,124,254, 71, 95,166,111,180,163,216, 17,194, 7, 31,240,238, 45,193,218,248,212,110, 26,248,173,
-144,137, 82,206,229, 89, 52, 54, 25,176,183, 2,186,219, 40,113, 49,183,135,111,169, 74,106, 53, 73,215,223,228, 75,245,122,111,
-187,214,152, 50, 20,235,206, 84, 2, 61,217,127,158,255, 0, 24,156, 20,241, 33,192,134,239,206,217, 30, 38, 54,238,125,139,118,
-182,211,245, 43,118,166,211,159, 90,217,123,137,109, 53, 37,113,155,187,182,234,235,101,180,177,115, 80,148,226, 64,116, 0,220,
-200, 46,171,221,234, 49, 34, 72, 30, 25,177,178,252,214,159, 48,137, 36,141,135,159,161, 6,234, 78,231, 77,251, 48, 0,221, 90,
-199,202,197,117, 32,214,105,170,234, 26,172,186, 65, 29, 84,101, 65, 54, 87,177, 10,215, 32, 13,141,138,150,236, 14,199,245, 75,
-111,141, 87,232, 7, 78,223, 46,186,240,164,147,156, 28, 3,215, 4,145,249,235,175, 68,129,142,189, 7, 76, 99,191,151,125, 32,
- 65, 39, 61, 71, 76, 36,140,103,167,252,116,233,141, 78,248,166, 18, 9,199, 92,122,143, 95,234,239,175,161, 36,250,244,200, 30,
- 93,115,158,191,142,170,121,127,171,248,116,215,196,144, 1,202,147,156,231,167, 92,228,232, 96,111,143,129, 56, 33, 89,201, 25,
-230,243,242,215,164,117, 4,143,135, 25, 61,115,251, 63, 29,125,233,140,254,206,216,252,245,215,209,215,246, 12, 1,220,121,253,
-253, 52, 48, 58,123,176,136,207, 68,245,233,231,142,164,103,246,106,130,219,198, 9,242, 61, 70,124,244, 78, 14, 58,140,121, 2,
- 70, 49,246,252,191,175, 84,207,110,131, 39,246,103, 63,212,127,167, 88, 6,255, 0, 17,140,224, 37,160,224,249,103,215,184,207,
-168,252,247,208,170, 64, 0,231, 36, 18,123,250,252,190, 90,184, 57,205,158,184, 61, 58,231,190,125, 58,121,245,208,238, 32,242,
-231, 4,117,232, 58,231,175,203,236,214, 65,232,122, 99, 32,158,221, 78, 45,197, 1, 39, 32,245, 29, 49,158,152,199,174,188, 20,
-231, 36, 28,121, 28,159,179,207,240,209, 42, 73,234, 20, 7, 79,245,123,146,126,126, 67,174,168,242, 12, 40,100, 99,166, 0,243,
-235,158,231, 75,169,184,235,131,168, 34,219,109,243,243,111,195, 3, 40, 3,212,147,129,248,125,186,160, 70, 70, 63, 35, 70, 41,
- 35, 56, 30,153, 63, 44, 13, 12,180,144, 73, 3,167,246,126,206,186, 81, 79,108, 24,216,116, 23,254, 71, 0,184, 0, 32,116,206,
-122,159,217,215, 31,158,154,162,160, 78, 58,100,103,175,175,221,163, 20,147,230, 7,221,216,158,250, 25, 89,201,230, 56, 39,183,
-207,211, 31,119,244,105, 92, 1,208, 95,113,129, 22,128,114, 64,199,200,249,250,140,104,117, 35,166, 6, 1,239,246,103,200,244,
-209,138,206, 65, 56,207,160,242,208,199,169,200,207, 95, 92, 14,221, 63,118,149, 7,160, 39,167,207, 95,158,248, 54, 5, 87, 76,
-228,103, 25,253,159,187, 66,172,116,206, 15, 78,216,253,164,244,237,211, 70,172,100,142,152,235,220, 30,253,124,255, 0, 62,122,
- 25,196,228,156,100, 1,208,227,182, 79,228,104,248, 50,250, 91,127, 92, 91,215,128,112, 14, 73, 39,167,161, 29,123,232,115,223,
-168,235,158,191,184,104,199, 19,144, 83,211, 62,126,189, 61, 63, 13, 12, 80, 70, 78,114,125, 15,225,223, 58, 89,122, 97, 81,107,
- 3,210,216, 29,105,243, 25,206,133, 90, 72, 39,183,153,251, 62,223,150,116,105, 25,251,186,250,103,228,126, 90, 25,105,206, 73,
-200, 62,126,125, 59,253,250, 85, 79, 91,157,176, 69,216,144,119,183,250, 96, 34, 48,113,165,175,107, 73, 39, 35,175,224, 52,180,
-174, 15,113,220,216,227,234, 49,143,233,209, 40, 24, 3,231,215,243,247,106,128,198, 6, 1, 31, 35,223, 85,211,204, 59,128, 49,
-233,223, 61, 58,233, 18,118, 3,231,221,140,226,178, 60,250,253,223,191, 85,209,220,253,157,189,127, 63,191, 84, 81,143, 33,215,
-204,234,178, 6,122,231,177,237,249,242,254,173, 16,157,137,190, 6, 8, 78,112,112, 70, 7,124,143,196,244,243,233,162, 27,234,
-126,239,234,213, 4,125,189,188,191,126,189, 18, 64, 86, 14, 8, 30,125, 1,207,244,255, 0,102,181,216,133,193, 78,224,142,199,
- 7, 54,115,211, 61, 62,206,158,126, 99, 69,164, 14,128, 16,123, 15,151,236,213,189,146,233, 74, 78, 19,142,153,251,112, 63,171,
- 71, 55,223,162,122,140, 28,224,246,249,233, 34,215,194, 71,174, 43,165, 61, 65, 57,232,123, 99,191,167,237,209, 9, 0,142,169,
-249,103, 39,175,175,217,170, 64, 18, 71,145,233,231,230,123,231,229,170,232,200, 36,116, 29,135,203,168,243, 62,103,182,176, 73,
- 61,123, 96,167, 21,209,156, 1,208, 14,195,241,243,249,104,148, 3,216,156,228,224,103,250,117, 65,160, 72, 29, 58, 3,231,163,
- 16, 58,231,175,203,211,211, 73,191,175,207,108, 99,107,145,181,206, 58,159,236,114,180, 36,215,120,223,178,238,166, 92,121,134,
- 54,178,207,191,175,249, 50,154, 42, 65,101,248,212, 39,104, 52,196,151, 17,213,181, 46,101, 96,132,144, 65,248, 62,103, 82,170,
-147,119, 79,171, 52, 99,214, 12, 27,130, 56,200, 92, 43,154,147, 73,175,197,113, 32,149, 96,181, 85,136,238, 83,215,166,114, 61,
-117, 30,111, 98, 93, 13, 12,206,226,110,249, 80, 74, 93,129,102,217,118,147, 11, 61, 22,147, 89,172,205,170, 73, 66, 84, 58,128,
-180, 66,104, 17,242,215,110, 85, 89, 62, 34, 74, 78, 18,162, 18,178, 78, 2, 72, 24,243,252, 53,207,158, 33,214, 52,188, 67, 60,
- 91,218,146, 56,163, 6,254,160, 73,191,190,242, 16, 55,233,143, 67,190,140,252, 57, 24,240,222, 10,185, 97, 89, 6,113, 87, 87,
- 57, 12, 1, 4, 44,130,152, 2, 8,181,138,211,143,223,140, 91,113,184, 80,224,223,122, 90,127,248,197,225,195,111,141, 78, 74,
- 74, 28,185,236, 6,100,109,189,210,202,149,255, 0,194, 25,155,109, 45,182, 30,116, 14,184,114, 58,193, 35, 36, 29,114,235,126,
- 61,136,232,153, 30,101,195,194, 78,234, 11,142, 74, 18,167, 81,180, 59,192,184, 84, 27,145,224,126, 38,225,219, 27,129, 13, 41,
-129, 85,124,254,171,109, 79,106, 42,220, 56, 5,240, 78, 79, 93,141,126, 51,110,161,151, 93, 72, 82,213,250, 21,147,128,162,159,
-242,172,156,116, 75,192, 96,143,245,128,214,109,101, 34,179,125, 87, 98,219,150,188, 73,117, 58,171,235, 8, 75,113, 88,113,228,
-190,130,160,148, 6,130, 7,194,176,163,212,158,137, 41,207,108,226, 37, 67,197, 89,254, 85, 44,107, 65, 92,242,128,109,202,127,
-172,140,251,130, 53,244,131,234,154, 77,174, 21,133,241,105,113, 79,128,254, 26,113,109, 13, 76,249,182, 65, 22, 83, 80, 16,177,
-174,164, 11, 73, 52,123,127,120,210, 70,162, 57,108,123, 78,146,165,250,169,223, 16,133,191,246,226,251,218,171,186,173, 97,110,
- 77,165,112,216,183,165, 5,229, 49, 86,182,110,106,115,212,202,172, 69, 5, 40, 7, 80,219,163,150,100, 37,129,150,164, 48,167,
- 88,117, 63, 19,110, 40, 29, 97,233,193,243, 24, 29,250,143,184,116,215,232,143,190, 62,204, 45,147,226, 95,110, 34,219, 28, 90,
- 85,225, 64,173,211, 34, 4,217, 87, 45, 7,192,123,116,108, 57, 14, 35,197, 13,193,172,182,131,239, 52,194,172,248,180,249,101,
-232,171,201,194, 80,172, 40,106, 85,157,236, 48,246, 94, 89, 49, 96, 11,150,111, 16, 59,185, 80, 43, 83, 18, 93,168,222, 84,251,
- 54,159, 41,214,155,241, 92, 81,129, 64,166,133,196, 36,117, 74, 67,170,207,108,116,206,173,202, 63, 17, 40,214,142, 55,205,233,
- 13, 21,112,217,227, 87,141,135,185,128, 46, 29, 67,117,210,202, 74,244,212,246,213,142, 20,207,126,143,124, 95, 14,119, 61, 31,
- 6,200, 56,195, 36, 55,104,107, 68,114, 83, 2, 59,199, 46,168,204, 70, 69,177,250,200,100,120,157,124,223, 84, 73,137, 96,225,
-130, 70,121, 22, 8,237,202,133, 96,250, 28,227, 72,168, 32, 0, 58,146,113,140, 31, 63,151,222, 53, 61,230,125,146,190,201, 76,
- 62,208,225,254,252, 87,128,217,112,248,251,193,118,173,197, 4, 39,152,242,173, 11, 29,115,211, 32,117,193,211, 69,186, 94,193,
-159,103, 5,247, 75, 55, 6,222,220,187,247,177,170,142,168,178, 84,212, 27,150,141,124,210, 39, 70, 74,144,228,182,226,199,187,
-233,222, 60, 23, 11, 1,196, 7, 82,242,195,107,113, 42,240,151,142, 83,177, 77,226, 46, 75, 83, 47, 41, 81,193,177, 55,242,216,
- 0, 46, 73,185, 22,183,223,238,190, 25,235,190,143,254, 42,229,177,123, 69, 87, 14,170,171, 21, 80, 22,161, 11, 51, 57, 1, 84,
- 2,160, 93,137, 3,114, 63,142, 35, 1,192, 79,179,155,127,248,252,190,165,208,246,210,151, 26,220,219,219, 90, 68, 49,185,187,
-209,119,179, 45,157,189,219,184,210,112,227,112,228, 57, 29, 33,219,162,244,145, 27,153, 80, 40, 80, 57,165, 61,128,236,151, 33,
-196, 10,146, 38,173,194, 71, 5, 92, 32,251, 61,109,198,127,137, 11, 71,248,111,187,134, 47,186, 92,156, 68, 95,208,233,213, 77,
-203,169,188,166,210,220,230, 45,176,210, 20,198,221, 91, 60,222, 42,147, 78,163,161, 14,132, 16,169, 50,102, 40, 41,100,251, 2,
- 70,221,108,222,222,208,118, 35,135,219, 98,141,182,187, 99,183, 80,221, 22,253,169, 5,240, 28,175,120,202,109,117, 43,158,224,
-172,168, 42, 69,193,113,212,166, 35,154,109, 86, 73,117,239,122, 88, 75,220,172, 22,219, 70, 15, 39,112, 35,202,153, 34,108, 9,
- 83, 16,228,242,167, 30,167,205, 67,209,101, 60,247, 40, 75,203,132,133,184, 16,103,115, 6,213,204,193,117,183,249,130, 73, 35,
- 5, 53, 87, 20,120,131, 91,154, 84, 73, 73, 68,198,158,137, 73, 10, 65,221,198,214,239,181,250,134,185,234, 8, 61,113,217, 30,
- 12,253, 20, 41, 50,184,169,243,158, 45,133,115, 76,244, 44,114,114,236, 90, 10,109,118,101, 69, 7,109, 69,110, 68,166,247, 32,
-244, 91, 5,122, 46, 93,207,151,112,185, 82, 84,201,237, 85,196,152,174,184, 88,241, 23,239,197, 8,146,129,239,112,210,195,217,
-143, 82, 97,220,134,151,240, 7,148,160,230, 82, 64, 42,108, 46, 11,170, 52,200,142, 42,108,229, 75,154, 25, 10,128,251,176,220,
- 69, 62,231,164,248,160, 73,129, 34, 43, 32,148, 79,109,191, 21,101,149, 97,198,164, 54, 36, 52,149, 5,184, 19, 97,136,251,117,
-212, 9,207, 47,222, 75, 83,204, 70,166,198,109, 84,203,178,149, 49, 96, 25, 28,237,178,132,166, 28, 66,181,167, 45,188,144, 84,
-217, 47, 45,181,163,161,199,231,178,168,238, 61, 67,174,165, 50, 30, 68,210,138,101, 69, 41, 66,226,214, 24,154,175, 18, 68, 23,
- 25,200, 16, 43,237, 53,206, 89, 40, 41,101,229, 18,227, 11, 67,153,107, 85,228,149, 94,103,214, 88,177,181,218,251, 49,190,198,
-219, 19,126,194,199,107,117, 59, 14,220,202, 56,115, 41,161,100,166,134, 46, 65,164,220,199, 24, 80,202, 6,149, 99, 29,208, 93,
- 86,200,179, 38,148,109, 12,205,160, 36,107, 36, 87,151,170,161,165, 46,223,113,167,151, 78,170, 42, 43,148,218,139,143,133, 60,
-212,244, 50,100,136,203,150,242,135,136,250, 60, 22,164,198,112,144,183, 19, 29, 76, 58,165, 45, 0,185,112,131, 94,118, 83,239,
- 68, 41,110,145, 84,110, 85, 61, 77, 75,109,178, 94,166,215,169,104, 8, 67,209,226,188, 8,118, 28,136,175, 69,146,129,147,227,
-180,167,144,130,160, 73, 24,237, 74,148, 41,180,184,241,225,200,118,224,181,231, 71,136, 98, 84,161,159, 30,183,110, 75,101,207,
-122,101,135, 67,139, 34,171, 78, 67,173,161, 72,116, 98, 92, 85,128,204,132, 60,193,241, 18, 44,199,101, 84, 85,252, 43,112,177,
- 42, 84, 4, 52, 95, 52,245, 4,179, 84,167,160, 46, 60,163,202, 84, 82,137,173,158,119, 35, 43, 36, 50,180, 41,160, 2, 22, 0,
- 48,114,196,178,177, 80, 55,211,178,238, 64,223,114,118,234, 70,226,196,234,190,160,112,250, 40,232,234, 98, 13, 29,180, 72, 74,
-135, 58,129, 51,142, 88, 77,113,191,149, 76,133, 66, 76,142, 54, 49,137, 46,240,201,115,180,187,121,113,159,112,167, 74,168,126,
-134,164, 39, 75, 21,246,192, 76,150, 24,152,101, 59, 6,160, 22,251,164, 23, 22, 86, 34,169, 37, 64, 41, 77,186,215,114,156,150,
- 43,139, 43, 97,169, 85,218,101,105,162, 25, 69,219,106, 92, 52,234,159, 51,106,114, 59,213,187, 98, 11,114, 96,186,162,129,133,
- 58,105, 47, 71, 91,228,165, 74,112,210, 83,241, 18,146, 11,135,106,214, 98, 78,172, 73,102, 43,177,164, 67,184,105,116,249, 76,
-184,164, 4, 42, 59,240, 23,245, 98,155,113,151,208, 49, 37,216,174, 66, 88, 82,250, 45,200,200,202,137, 72, 26,161,196, 82,249,
- 44,237,191,114,123, 77,202,228,191, 13, 50,108,176,183, 27, 75,109,213, 41, 83,161, 73, 7, 42, 42, 37,230,219,111,224, 71, 41,
- 82,129, 72, 56, 26, 82,178,211, 80,176, 96,117, 33, 87, 27,130, 65, 15,123,139,250, 43, 17,247,133,176, 59,154,251, 35,230,229,
- 30, 34,101,181, 84,209,154,121,115, 5,168,137,162, 38,222, 89,169,228,145, 35,177, 23,211, 13, 74, 42,128,222, 98,209, 33, 93,
-247, 45,207, 13,114,155,103,122, 54,250,161, 33,214, 94,250,215,234,202,139,111,115, 54,235, 9,117,115, 33, 84, 25,247,117,161,
- 36,186, 75,171,142,226, 92, 32,132,169, 8,234, 2,250,244,178,232,151, 46, 85, 85, 97, 46,180,218,152,141, 41,185, 10, 82,146,
-133, 56, 87, 49,135, 28, 75,206, 54,128, 82,149,182,149,114,148,252, 73, 40, 42, 25, 63,173,202,173,165,149,245, 27, 59,105, 37,
-133,198,106, 75, 46,199, 11,153,201,226, 56,179, 68,204,101, 51,206,133, 4,148,184,138,122, 64,229,229,233,145,221, 56, 61, 81,
-185, 75, 51, 27,159, 80,109, 41,125,186,148, 24,239, 53, 37,180,135, 92,106, 52,136,171,113, 78,165, 68,140, 37, 16,223, 89, 4,
-156,167,195, 25, 30,171,240,236,165,105,234,169,128, 26,161,150,226,251, 18, 25,116,220,216,131,250,167,125,192, 39,222,113, 12,
-241,161, 4,252, 89,144,102,166, 63, 45, 69, 19,211,173,192, 32, 52, 53, 5, 73,183,217, 0,172,167, 96,196,253, 93,251,227, 89,
-170,116,137,115, 41,150,180, 88,239, 52,228,155,128,190,219,171,105, 45,132, 20, 84,125,242,101,110, 97,109,192, 60, 15, 6, 4,
-169, 41, 7,205,101, 42, 4, 30,100,235, 48, 98,100,183,170,109, 55, 77,129, 26, 53, 90, 77, 38,159, 64,165, 69,109,165, 59, 30,
- 52,118, 31, 90,205,199, 80, 1,144, 68, 88,139, 74, 3, 44,182, 0,117, 80,218,100,243, 23, 20, 81,245,170, 20,128,229,191, 57,
-231, 18,227,180,170, 21, 94, 83,170,231,105, 13,211, 41, 41,129, 19,194, 45,180, 74, 72,152,162,162,165,171, 24, 90,155, 91,121,
- 64, 1, 10,190, 89,208,106, 49,147, 38,123,140,190, 42,215, 59,205, 63, 4, 41, 77, 7,232,116,248, 77, 39,221, 90,229, 3, 45,
- 60,220, 25, 11,121, 77,164,169,180,203,154, 2,178,180,171, 50, 56, 55,242,106, 47,163,123,251,137,182,215, 39,127,128, 23, 32,
-147,183, 70, 90,252,198, 22,163,102,103,142,115, 15, 52,168, 39, 72, 47, 37, 68,133,131, 88,139,196,145, 68,178, 49, 42, 54, 4,
- 38,158,106, 17,126,147, 14,157, 74,146,213, 34,214,106,160, 3,145, 23, 72, 93, 65,214,154,147, 60, 45,214,208,171,150,181,227,
- 40,145, 58,176,135, 20, 0, 88, 40, 71,191, 85, 50,133, 16,199, 40,204,233,149,217, 16, 81, 74,106,213,167,196, 41,166, 68, 93,
- 61,218,202,202,222,163, 83, 36,180,202,163, 63,224, 83, 73, 82,235, 51,209, 30, 63, 41, 12,169, 45,248,223, 4,213,169, 74, 90,
- 53,128,211,101, 42, 82,164, 55,109,135, 89,147, 41, 74,163,196,152,181, 2,229, 14,132,196,169,105,114, 84,194,235, 37, 15,213,
-165,203, 74,222,142,144, 8, 75,184,116,146, 25,235,123, 77,126, 53, 26,159, 50,222,163, 82, 34, 87,170,209, 34,199,165,211, 98,
-196,145, 42, 52, 27, 97,182,148, 76,169,143,206,119,244, 45, 5, 21,254,145, 74, 46, 58,167, 16,167, 2, 71, 51,139,214,220,104,
- 21,172, 65, 37,238, 69,201, 58,119, 82, 55, 23, 34,254, 81,127, 40,177, 82, 54, 23, 48,154,250, 57, 42, 21,105,164,129,171,170,
- 20,141, 98, 87, 0,144,254, 73, 38,170, 44,234,129, 19, 88,176,146, 78, 89, 34,103,179,171,162, 77,157, 81,164,143,123,163, 8,
- 73,114, 60, 56, 14, 56, 25,153, 92, 82, 27, 64,113,230,129,159,116,212,234,141,165, 30, 35,232,150,149, 34, 26,138, 67, 35,195,
-229,195, 64,160,161,215,163,214,229, 61,114,193,118, 3, 18,169,144,234,116,244, 83,105,213, 73,128, 42,170,162,244,180, 53, 84,
-173, 73,139, 52,114,195,114, 72, 17,209, 13, 46,130, 91, 66,252, 80,144,164,132,233,150,102,139, 89,170,162, 58, 42, 11,109, 2,
-156,194, 86,221, 33,181,251,181, 38, 42,218, 67, 77,174, 97,127,153, 78,214, 92, 14, 2,191, 29,239, 13,182, 62, 55, 80,210, 57,
-121,206,113, 74,153, 54,127,189, 8,203, 67,140,225,184,143, 85,220,123,222,211, 87,121,197,162, 59, 80,232,138, 96,225,196, 37,
-231, 93,231,158,158,124,173,226,166, 18,183, 1,113, 59,104,206, 7,217,212,166,214, 54, 39,125,193,177,184,189,190,201, 2,219,
-129,115,109, 36, 64,115,202, 58,106,133,145,131,199, 51,172,111, 27,220,150, 84, 18, 57, 32,181,236, 38,119,102,187, 2,172,173,
-245,138,161,227,115, 42,109, 53,183, 89,113,151,211, 75,165,167, 49, 32,171,220, 30, 90, 20,243,205, 83,164, 33,100, 75, 87,189,
-190,190,121, 21, 18,250, 71, 48, 94, 91,105, 75, 43,121, 74,230,229, 45,103, 23,124, 32,112,213,237, 11,217, 74,166,193,241, 37,
-103,179,117, 80, 93,247,138,133,163,115, 83, 94, 17,183, 11,108, 46,100,165,216,113, 47, 43, 30,236, 12, 41,116, 27,141,183,211,
-202, 18,144,184,181, 22,208, 98,204,139, 46, 18,220,104,135, 30,225, 76, 56, 81,105,212,133, 48, 41,180,229, 70,162,206,126, 38,
- 92, 98,148,206, 66,164,193,166,164, 45,105,171,200, 68,140,120,203, 37, 97, 47, 60,174,114,244,144, 80, 29,171, 42,165, 30,155,
- 49, 51, 37,181, 81, 79,132, 15,185,196,151,151,234,114, 30, 44,248, 41,113,104, 4,248,238,184,148,190,180,184, 74,188, 52,182,
- 16,234,154, 81, 58,124,203,115, 9,169, 39, 2, 57, 12,104,246, 82,172, 26,204,163, 72, 34,253, 44, 52, 92, 91,236,149, 12,133,
-109,183, 62,241,103, 9, 69, 81, 77, 83, 52,208,150, 44, 27, 66,145,121, 36, 63,181, 37,206,204,250,129, 61,116,169,212, 89,131,
- 43,201,249,104,123, 74,253,155,155,225,236,203,226, 10,102,204,110,202, 63,132, 86,125,198,138,149,127,100,183,134,155, 1,112,
-237,173,219,177,225,202, 67, 75,152,211, 60,203, 77, 6,247,167,123,204, 54,107,180, 85,184,167, 33, 62,251,114, 35,170, 69, 54,
- 84, 73, 46,115,200, 36,167, 25,234, 60,137, 61, 71,217,242,198,191, 92,191,104, 95, 2, 27, 99,237, 47,225, 82,247,225,235,116,
-208,197, 6,191, 47, 55, 54,209,110, 43, 17, 27,149, 84,218, 45,211,165,197,120, 90,215,101, 56,171, 11,149, 13, 70, 66,225,214,
- 96,115,165, 21, 26, 85, 74, 92, 66,166,214,227, 79, 55,249, 64,239, 46,206,238, 55, 15,155,187,185,155, 17,187,212, 5, 91, 27,
-163,180, 55,157,106,194,190,104,165,101,216,241,171,116, 57, 30, 18,166,211, 37, 16, 5, 70,131, 54, 18,226, 79,167, 74, 70, 81,
- 42, 5, 78, 52,132, 18, 28, 26,183,178,186,229,171,129, 84, 73,169,212,119, 35, 85,129, 0,134,181,188,202, 72, 5,128,210,110,
-164,121,139, 34,115,126, 99,150,201,150, 78,208,177,215, 21,236,173,125, 91,218,250, 75,126,181,187, 55,113,190,246, 44, 91, 95,
-135,148,129,156,147,147,205,212, 31,144,244, 3, 58,243,202,158,132, 96,121,118,234, 51,223,167,152,213, 84,132,144, 83,212,144,
-122,231,250, 71, 93,121,229, 7,168,206, 61, 58,103,231,212,233,216,126,242, 48,223,133,202,123,243, 12,118,207,203,183,111, 61,
- 32, 14,126, 17,140, 14,161, 90,245,202, 0,199,235, 2,114, 60,191,110,190, 5, 15,139, 57,201, 32,114,253,216,239,161,239,192,
-233,108,123, 39,162,135, 78,189, 62,195,246,249,106,136, 10, 78,112, 73, 80, 61,113,230, 62, 64,254,122,234,166, 18, 83,202,122,
-103,184,207, 81,130, 49,223,236,215,174, 80, 6, 9,201,199, 47,111, 46,189, 71,203, 89,192, 63, 27, 96, 53, 1,149, 31, 49,140,
-143,183,211, 84, 10,122,103,152,159, 49,204,115,211,229,233,253,186, 57,109,140, 0, 0, 42, 35,161, 61,188,137,207,221,161, 86,
- 58,145,216,118,198, 58,231, 30, 93,116, 48, 63,158, 1,112, 96,228,246, 63,119,203, 84, 21,220, 28,101, 35,160,235,242,245, 31,
-102,138, 90, 22,121, 72,232, 51,231,247,231,247,104,117, 39, 61, 58, 2, 59, 96,249,104,234, 64,191,160,198, 65, 55,247,255, 0,
- 60, 14,160, 50, 60,137, 24,206, 58,103,203, 61, 58,234,146,135,124,156,121, 99,160, 31, 51,219,236,252,116, 73,206, 49,128, 51,
-231,231,251,123,106,130,209,216,142,152, 32,159, 63,195, 75, 14,184, 84, 94,215, 29, 79,250, 96, 55, 19,215, 9, 7,190, 79,166,
-113,212,157, 10,180,231,174, 51,219, 30,163,230, 61,124,245,112, 94, 8, 35, 56,199,150, 58,254, 63, 97,208,174, 36,246, 79, 78,
-132,250,231,203,175,160,237,165,148,155, 11,141,240, 1, 23,176,233,128,148,158,253,122,158,192,247,206,126,126, 93,116, 42,219,
- 61,126, 33,142,248, 29,128,238, 64,251,180, 98,130, 72,235,144,115,140, 99, 39,215, 61,190, 90, 29,105, 56, 32,252,142,124,190,
-223,195, 58, 58,223,238,254, 95, 39, 6,192,106, 72, 24,199,207,169,245, 30, 90,160,176, 6, 79, 92,227,183,145,249,118,249,104,
-165,167, 61,148, 78, 62, 93,254,239, 93, 12,179,220, 30,157, 60,198,115,242,249,127,110,150,193,148,246,192, 42, 80,207, 64,115,
-230, 7, 95,188,250,119,213, 21, 12,100, 99, 63,179,231,162,150,129,220, 12,103, 57, 35,191,246,104,101, 2, 7, 81,158,249, 35,
-174,127,183, 74, 39,124, 40,187,129,129,212, 62, 68,122,250,125,199, 84, 23,140,143, 92,117,213,117, 19,215,184, 4,231,175, 66,
- 79,245,106,130,251,142,158, 93,255, 0,118,149, 29,122, 95, 24, 34,198,227,107,126,239,159,158,216, 20,140, 18, 59,227, 75, 95,
- 85,250,199, 75, 75, 13,192, 56, 53,129,222,221,113,224, 31, 34, 70,125, 6,170,115,117, 4, 36,146,112,146, 71,252, 62, 67, 84,
- 57, 57,156, 74,190, 46,131,167,126,189, 72,198, 14,138, 73, 72, 0,249,103,174,123,247,243,198,181,201, 39,189,191, 44, 27,238,
-190, 43,164,129,129,211, 63,236,245,233,243, 58, 32, 97, 35, 36,140, 31, 65,231,246,249,232,100,242,133, 16, 14, 78, 58,158,157,
- 7,144, 58, 37, 4, 36, 28,167,155, 7,168,239,223,182,147, 44,119, 29,113,140, 86, 9, 88, 80, 33, 67,148,142,189, 58,147,229,
-223,183,125, 16, 27, 14, 36, 37, 73,206, 14, 71,113,233,215, 84,146,114, 59, 96,121,126,113,162,219, 33, 61, 20,122,227,203, 61,
-135,228,105, 51,107,111,211, 4, 38,221, 6,253,190,126, 24,172,132,132,167, 25,192, 31, 46,167,238,209,141,168,114,132,252,186,
- 31, 95,234, 58, 17, 41, 24, 32,168,146,115,128, 59,159,179,174,138,108, 18,115,203,216, 12,131,215, 0,103,174,144,194, 71,174,
- 42,227,160,207, 92,117,206, 62,223, 33,242,209, 40,194,176, 79, 64,124,186,245, 61,190,239,236,213, 16, 1, 81, 29, 64,242,237,
-249,245,209, 45,130, 6, 1,237,228,113,147,251, 59,104, 99, 7,241,193, 13,224,100, 14,158,159,183, 68, 33,125,121,112,122,103,
- 36,117, 25,207,111,219,170, 8,237,156, 12,250,116,207,217,159, 61,101, 86,165,169,113,222,213,218, 85,175,104,208,234,151, 29,
-199, 92,154,205, 58,143, 67,162, 64,145, 83,170,213,103, 62,174, 86,162,193,129, 17,181, 57, 37,226, 79, 92, 12, 36, 30,101, 16,
-144, 78,144,150, 68,141, 93,157,130, 34,110, 73, 54, 0, 1,212,158,192, 96, 14,194,219,159, 78,228,237, 97,234, 73,216,119, 56,
-239, 95,177,184, 52,198,205,241, 34,250, 82,145, 37,219,203,111,154,116,243, 97, 74,140,138, 52,229,161, 36,121, 36, 56,165, 99,
- 62,127,102,186,125, 58,178,168,165,224,240,108,180,227,106, 45,243,168,133, 3,219,224, 41,253, 99,156, 28,124,181,130,123, 43,
- 61,153,123,231,176,246, 46,230, 76,226, 66, 69, 19,109, 99,238,172,123,102, 85,189,105, 61, 82,102,161,115, 83, 77, 53, 47, 41,
-114,110, 56,241, 22, 91,166,201, 83, 79, 37, 41, 96, 41, 78, 35, 7,156,131,211, 91,183,187, 60, 21, 87,216,164,202,171,216, 55,
- 44, 43,172,211, 80,185, 34,157, 13,254, 73,133,108,167,153, 73,110, 58,212,124, 76,167,200,119,206,185,175,140,211,219,115,250,
-250,186,121,150,106, 87, 41,102, 86, 4,217, 99, 69, 62, 95,180, 64, 96, 69,237, 98, 6,161,177, 7, 30,160,125, 30, 51, 92,167,
- 42,240,231,133, 50, 92,240,205,148,102, 10, 42, 3,172,240, 74,138,188,202,201,222, 50,206,202, 2,106, 70, 70,243, 90,193,183,
-223, 26, 33, 89,187, 38, 56,211,173, 73, 82, 68,134, 29,100, 33,180, 43,195,241,146,165,129, 30,115, 42, 79, 82,234, 84, 82, 20,
- 61, 53,220,158, 22,104,113,246,115, 98,169, 87, 66,163,180,230,226,223, 48,159,157,245,162,217,109,215,233, 84,130, 15,134,212,
- 53,167, 42, 99,197, 78, 84,181,167,226,199, 98, 53, 30, 10,163,245, 54,234,111,196,144,202,209, 82,166, 75, 80,109,137, 72, 83,
- 78, 49, 38, 59,153,147, 79,146,210,250,165,126, 35,100, 96,227, 24,215,127,118,138,242,164,110, 62,192,109,157,106,149, 47, 30,
-229, 76, 54,197, 89, 17,150, 68,186,101, 86, 23, 51,106, 97,104, 7, 45,130, 23,217, 88,202,117, 28,118, 20, 81, 23,136,105,153,
-198,204, 58,139,149,189,143,111, 45,236, 65,254, 3, 29, 5,199,185,104,158, 14, 29,203,164, 80,217,101, 77, 86,170,133, 93,209,
-180,199,170, 20, 96, 14,241,187, 6, 37,127, 93,148, 45,136,181,242,106,229,223, 42,176, 31,122, 91,235, 11,114, 43,173, 63, 43,
-152,169,199,159,143,135,153, 45,243, 30,101,243,182,162,159,187,215, 88,194,171,109, 42, 52, 22,155,105,229, 73,168, 62, 22,203,
-206, 5, 45,198,219, 49,203, 37, 62, 31, 54,124, 70,223, 9,248,135, 92, 47,174,172,242, 97, 74,133, 54,150,235,136, 92,152,237,
- 58,252, 89, 13, 45, 92,139, 46, 50,219,136, 74, 20, 9,248, 28, 41, 32,143, 62,190,122,188, 83, 18,164, 54,242,101, 71, 65,114,
- 44, 22,132, 53, 40,114,187, 30, 75,239, 23, 82, 65, 72,234,224, 65, 70,125,121,117, 30, 87, 45,172,129,168,158,155,237,126,135,
-115,211,189,187,236, 62, 56,127,142,130,130,138,154, 49, 79, 24,120,134,234,170,193,123,180, 96, 91,169, 10, 66, 18, 15,151, 77,
-128, 4,226,231, 71,140,106,110,203,144, 95, 44, 50,131, 42, 92,249, 46, 56,161,202,196, 32,136,201,141, 24, 96, 36,190,183,201,
-194, 51,149, 21, 28,117,214,187,111,102,251,181, 33,243,106, 81,228, 61, 14, 37, 33, 97,130,251, 50, 21, 30, 63, 51,105,194,152,
- 98,106,148, 82, 95, 81,200, 60,195,245,138,142, 20, 14, 19,125,222, 75,250, 78,218,216,238,219,180,169,142, 42,187, 85,231,169,
-204, 91,107,109, 14,183, 50,106, 86,182, 24,105,167,112,133,173,168,202, 43, 80,230, 79,199, 45, 56, 33, 67, 58,228,228,187,229,
-250,132,217, 47, 75, 67,178, 96, 58,242, 83, 61,164, 56,226,208,226,208,181,175,198,125, 46,167,157, 35,226,117, 68, 43,152, 40,
- 32, 32, 40,140,101,246, 58, 73, 18,147,146,135, 76,211,128,242,145,107,170,177,186,198, 9,237,250,205,184,185,216,218,219,233,
-112,238, 72, 56,183, 63,169,204,229, 28,252,143,135,165, 49, 82, 40, 35,235,170, 18,203, 36,204,173, 96,202,132, 24, 98, 13,183,
-146, 66,118, 56,218,122,181,245, 81,114,145, 37,110, 60,103,198, 97,207,125,165, 84, 31, 79,131, 90,163,190,219, 97, 10,108, 48,
- 26, 9,169, 66, 90, 80,227, 47,128, 80,181, 33,204,169, 42, 79, 34,145,144, 27,238, 36,202, 77, 46, 61, 71,146,158, 91, 77, 34,
- 80,129, 80,121,196,192,149, 37,107, 67,234,250,134,230,105, 96,211,223,104,169, 92,205,169, 77, 58,128, 83,145,140, 41, 90,141,
- 75,174,173, 77,251,204, 9, 44,170,156,220,176,219,244,224,164,200,165, 79,117,183, 20,184,138, 75,160,173,218,100,118, 89, 33,
- 75, 40,230, 73, 95, 94, 82, 7, 38,179,218,117,105, 35,154,151, 61,164,211, 34, 50,180, 74,121,186,147,237,205,163, 21, 60,162,
- 29,110, 35,204,164, 37,216,238, 48,180,134,146,248, 5,180,189,243,232,211, 62, 92,169,112,162,228, 27,221,109,123,121,123, 16,
-109,110,225, 46, 44,215,186, 62,199,161,242,220,190,156, 36,113,114, 47,203,109,107,162,234,192,145,231, 26, 47,177,110,190, 75,
- 27, 13, 65,145,137, 24,220,138, 82,100, 86,167, 67, 85, 85, 5,217, 21, 54, 83, 26,153, 91,143, 41, 84,218,173, 77,175, 19,157,
- 16,100, 78,167,184,142,105,169, 96,169, 46,243, 41,104,121,178, 22,223, 34,202,155, 23,250,140,137, 20,138,148,138,125, 82, 20,
-234,253, 56, 69,122, 35,244,247, 86,135, 43,244,199,152,112, 33,197, 60,228, 96,159,173,226,132, 50, 84,121,113, 53,165,176,135,
- 82,167, 71,194, 53,242, 20, 11,121, 84,166, 35,198,155, 38, 4, 37,169, 19, 41,142,209, 42, 19,225,165,233, 62, 34, 25,142,226,
- 80, 30,113, 17,157, 66,149,252,196,164, 18,216, 82, 84,115,167, 38,148,205,126,152,227, 49, 97,220, 38,171, 81, 86, 91, 68, 26,
-187, 13,248, 14, 69, 97, 62, 35,143,138,156,112, 22,101, 41, 15, 18, 22,226, 10,194,136,230,230,233,134,127, 42, 6, 37,206,199,
-117,101, 43,181,186,143,180, 75, 2,110, 73, 96, 5,128,176, 42, 44,157, 77, 28, 1,181, 71, 86,166, 56,195,160,133,227,150, 34,
- 10, 48, 60,200,165, 70,147,146,168,163,204, 71, 45, 85,148, 2,193, 25,163,195,167,111,214, 86,203,172,196,137, 45,186,155,174,
-161, 10,167, 73,203, 62,227, 94,136,211,232, 33,202,160, 82,127,192,238, 54, 24, 88, 10,120, 37, 1,208,149, 43,151,151,153,182,
-170,166, 34,105,117, 25,181, 40,161, 79,194,159, 53, 78,221,148, 2,130,244,202, 62, 11,173,203,168,196,140,210,177,239,188,139,
- 79,188, 52,148,143, 25, 25,113,159,210,140,171, 8,167, 26, 85, 94, 65,131, 35,235, 11,102,226,130, 87, 49,132, 48,166, 27,155,
- 34,167, 24, 20, 49, 81,133, 37, 81,151, 26,170, 90,112, 31, 21,124,188,252,170, 13,201, 72, 73,201,204,105,149, 74,157, 57,200,
-147,110, 38,154,139, 18, 67,205,195,153,115, 70,104, 51, 79,155, 83, 70, 23, 21, 85, 85, 0,161, 70,146,242,249, 2, 78, 76,126,
-101,128,219,173,128,148,235, 34, 80,196, 0,231, 83, 92, 1,220, 90,204, 10,145,112, 0,185, 42, 1, 2,236,108, 45, 99,136,197,
-109, 57,134, 90,147, 78, 60,243,173,165,136,149, 15, 48,189,215,148, 86,241,202,190, 93, 81,152,134,165,148, 13, 11,202,242, 35,
-169,110,248,110,177, 16, 67, 42,158,104,128,170, 20,215, 22,194,141,110,142,176,131, 25,131,225, 54, 11,133, 84,196,180, 99,164,
- 18, 82,252, 36, 58, 2, 73, 90,181,243,137,137,169, 94,219, 91, 8,140,165,159, 30,241,143, 84, 66,139,156,202,240, 96,192, 62,
- 18,156, 82,206,124, 78, 89,140,129,203,241, 21, 30, 76, 19,163,109,106, 99,148,203,129,215,161, 22,149, 70,170, 36, 45,108,171,
- 31,224, 53, 5,243, 58,217,101,215, 79,193, 25, 79,185, 33, 32, 39, 1,165,190, 66, 50,135, 15, 45,187,123,227, 46,167, 87,178,
- 45,198, 26,115,194,143, 66,171,214,144, 26, 91,156,200,171, 26,148,118, 84,145, 31,151, 10, 8,167,198, 11, 4, 31,135,197,207,
-235, 37, 39, 74,201, 56, 20,179, 48,220, 2,160, 89,137, 27, 48,218,251, 92,218,224, 27,108,182,181,237,189, 90,213,112,199,197,
-185, 37, 66, 63, 50, 26, 82,245, 33,186, 21, 2, 41, 29,149,214,224, 41, 89,127, 85, 64, 0,155,129,164,168,195,121,106,210,157,
- 49, 16,180, 67,123,221,105, 23,132,151, 98,143, 8,133,181, 9,233, 2,160,114,132,149, 41,152,202, 77, 80, 0,122, 20,224,133,
-140, 19,174,145,216, 85, 22,174,139, 58,117, 20,167,255, 0,116, 45,215,218,183, 92,253, 48,116, 59, 66,168, 71,135, 84,162,201,
- 91,137, 33, 46,115, 83,165, 76,101, 96,101, 41, 92, 44,103,200,106,117,145,110,169,112,231, 15, 1,196,123,195, 84,153, 12,178,
- 20,148, 41, 94, 28, 38,226,200,119,157,100,120, 95,165,138, 1,112,228,146,114,114,161,173,186,219, 8, 70,145, 86,150,137, 9,
- 45, 70,158,138, 76, 55,148,216, 65,109, 45,150, 86,152,239,128, 57, 65, 12, 75,229,234,122,225,213,148,244,209,114,119,104,171,
- 4,128,125, 92,254, 87,191, 96,110,192,158,223,104, 2,109,189,142,214,189,197,123,226,102,115, 14,101,151,130,175,170,167, 41,
-126,116, 54, 59,220, 24,181, 41, 23,243, 93, 94, 65, 97,177,125, 39,160, 56,182, 92, 20, 69, 77,185,225,210,208,218, 12,121,177,
-214,245,101,132,175,147, 20,200,207,169, 77, 67, 12,161, 64,187,239, 14, 55, 24, 58, 82,112,164,176,232,229, 32,231, 94, 29, 77,
- 69,138,133, 70, 29, 29,163, 30,174,236, 24, 12, 74,171,176,182, 29, 93, 18,157, 80, 46,135, 10, 99,172, 22,209, 86,126, 34, 28,
-247, 86, 74,249, 90, 42, 50,212,149, 37,164,133, 61,149, 74, 50, 96,174,108,231,227,148, 73,104, 70, 98, 34, 90,232,251,142, 52,
-174, 65, 30, 63, 46, 28,230,126, 90,201,119, 25, 60,138,113, 64,225,189, 82,183,173,152,148,155,102,178,203,203, 68,215,166, 72,
-114,183, 95,156,227,173,149, 84,171, 51, 30, 74, 27, 67, 12,173, 36, 52,203, 81,219,102, 60, 68,130,144,203,109,165, 36,133,120,
-138,212,193, 31, 77,212,144, 72, 34,198,251, 27,245, 44, 15,154,214, 6,230,224,239,182,149, 3, 21, 18,113, 76, 43, 65, 3, 50,
-137,214, 49, 12, 40,135,117,121, 29,209,158, 71,223, 75, 42, 46,136,204,108, 8,145,132, 74,193,144, 72, 75, 74,213, 54, 21, 45,
- 76, 91,246,218, 94,139, 17,193, 28, 86, 29, 14, 46,115,208,212,249, 67, 77, 64,167, 72,144, 20,185,149,135,226,180,158,101,145,
-202,195, 40, 83,141,144,227,200, 2,245, 21,216, 52, 92,248, 96, 70,161, 83,252,103, 98,197,145, 15,156,115, 78,109, 49, 66,157,
-109, 1,110,205,152,167, 16,175,119, 65,203,206,130,172,229, 69, 42, 23, 85,184,213, 38,116,122, 77, 49, 30,243,112, 48,191,122,
-156,175, 0,120, 52,218,131,205, 97, 18,106, 83,146,149, 4,194, 76, 0,146, 91, 88,241,164,101, 41,109,188,184, 10,126, 34,216,
- 84, 0,137,213,234,155,149, 73,236,160, 76, 76,164,176,212,104,116,198,150,183, 7,131, 18, 42, 93,229,167,198,253, 69, 23,214,
- 76,149,151, 57, 71,195,200,157,109, 69, 33, 82,243, 60,133,180,234,176,248,250,244,211,107, 91,226, 72,211,167,112,188,181,209,
- 76,160,213,204,197,106, 0, 96, 24,179, 79, 82,204, 72, 51,121,144,128, 10,249, 98,149,218,225, 28,149, 89, 27,152,205, 94,144,
-220,249, 80,209, 79,171, 70, 91, 20,181,184,135, 92,141, 50, 72, 14, 84, 76,118, 19, 36, 34,177, 25,151, 21,138,119,187,114, 19,
- 21, 68, 12,117,150,149,132,150,213,150, 54, 98,220,136, 16,188,119,163, 67,101, 5,113,196,105, 72,165,185, 82,119,197, 5,126,
-248,228,114,219,144,233,141, 70, 67,104,106, 56, 82,124, 82, 79,136,218, 88, 9,105, 88,156,247,222,169, 82,227,191, 45,232,212,
-218, 11, 78, 71, 98, 59,143,161,113, 39, 84, 75, 46,153, 13, 76,172, 45,229,243, 37,135, 29,104,251,180, 52,101,110, 6,210,236,
-148,169, 74, 12,138,140, 74,153, 50, 51,206, 33,177, 76,164,162, 59, 73,171, 73, 72,104, 78,168,197,125,231,124, 63, 6, 48,109,
-102,142,200, 60,234, 28,229, 82, 93, 7,244,104,105, 39, 91,241,105,141, 99, 37,254,169,195, 11, 90,214,220,144, 53, 30,151,233,
-216, 2, 62,226,207, 81, 79, 37, 64, 53, 1,150,150,100,144,129,164,144,145, 57, 33,117, 0, 73,102,157,197,144,162,146,201,229,
-185, 91, 7,133,199,163,200,101, 79,198,131, 70,106, 76,183, 83, 33, 17, 40,212,166, 60, 24,241,189,234, 27,101,247,106, 85,121,
- 13, 51,138, 77, 9,190, 85, 34, 58,146,217, 82,185,213,225,182,227,202,108, 33,244,163, 51, 30,132, 13,122,179, 61, 46,206,167,
-178,218,106, 21, 83, 17,198,105,113, 16,255, 0,130,203, 84,152, 48,121,220,112, 58, 60, 70,144,219, 72, 14,202,154,226, 91, 75,
-137,117,229,164, 37,133,166, 84,233, 54,205, 18,152, 42, 78, 72, 74,100, 38,109, 70,157, 75,167,176,101,215,110,185, 45,168,183,
- 26, 21, 45,132, 58, 22,233, 81, 25, 47, 73, 45, 70,101, 9, 42,121,228, 37, 28,165,217,183, 32,206,171, 85,105,149,250,165, 82,
-149, 14, 75, 94, 12,218, 69,174,167, 26, 93, 42,136,182,199, 51,171,157, 33,213,135,234, 53, 63, 17,100,187, 57, 41,104, 33, 40,
- 8,142,218, 24, 74,121,221,169, 86, 22, 72,193,212,205, 96,202, 46, 67, 48,184, 22, 31,101,130,133,184, 4, 88, 49, 35, 72,181,
-216, 86, 28, 81, 1,116,150, 73, 25,169,242,225,205, 66,229, 73,146,164,163,105,104,209,130,181,131, 0, 76,135, 75, 68,143,118,
-149,228,145, 98,129, 95,138, 36,233,202,152,138,141, 93,169,141, 69, 80, 30,227, 5,244, 43,222, 82,165, 36,243, 74,171,176,208,
- 41,106,160,226,222, 82, 83, 28,169, 98, 40, 10, 73, 90,220,201, 68, 52,254,150,111, 2,144,225,187,179,158,209,187, 10,132,211,
- 79,213,165, 82,118, 15,137, 25, 20,246,210,148, 75, 91,140,190,246,200, 95,117, 36, 32,115, 57, 41, 10,102,175,109,202,146,122,
- 41, 18,232,108, 40,225,134,134,166, 17, 71,172, 75,173,183,254, 28,202,224,136, 19,125,223,220,189,237,247, 37, 21,179, 37,214,
- 81, 80,121,191, 1, 45, 16,166,130, 31,105, 33,106, 75, 76,149, 56,163,206,177,200,205,113,141,195,133, 51,141, 78, 12,248,147,
-225,150,176,148, 59, 23,119,182,166,230,182,237, 57, 15, 97,150,105,151,140, 70, 87, 85,176,107,200, 50, 27,253, 3,177,111, 58,
- 93,191, 49,181, 28, 41, 2, 57, 60,193, 74,200,158,100,149,102, 22,210,191, 88,166,198,203,123,107, 2,250, 84, 17,179, 17,170,
- 37, 36, 88, 6, 45,176, 1,135, 60,241, 94, 80,210,197, 55, 50, 52,167,146, 27, 38,149,177,141,119,250,189, 44, 46, 13,254,219,
- 16,222,117, 4,220,220,223,242, 16, 41, 10, 0,121,103, 35, 29, 63, 35,174,144, 0,146,129,231,232,122,252,251,246,242,213,103,
-105,213, 58, 52,201,244, 90,252, 69,192,174,208,170, 53, 26, 21,114, 3,128,135, 96, 86,232,211, 30,166, 85,233,238,115, 96,133,
-177, 82,139, 41,165,103,205,147,175, 33, 3, 57, 79,194, 14, 78,124,199,203,236,212,253, 72, 96, 25, 78,160, 70,198,251, 27,216,
-220, 31, 76, 83,251,247, 22, 56,241,142, 65,215,160,207, 76,143, 35,229,243,210, 78, 79,144, 72, 39,250,186,145,142,218,250, 74,
-136, 25,198,115,208,129,220,124,245,247, 36,146,124,191,217,244,236,126,205,103,127,191, 3, 30, 72,200,230,229,206, 58,121, 15,
-199,215,251,117,236, 5, 31,245, 72,242, 7,190, 62,223, 76,233,114,133,144,114,164,245,198, 7, 65,219,215,238,215,190, 92,127,
- 56,224,103, 31, 47,191,211, 67,221,233,129,138, 43, 71,124,156, 15,196, 14,221,186,244,208,171, 3, 3,191,166, 64,201,249,119,
-249,234,232,212, 41,147, 22,132, 71,105, 74, 46,186,134, 91, 32, 16, 29,125,194, 18,211, 12,249,188,250,213,209, 40, 72, 43, 89,
- 56, 72, 39,166,186, 71,195,191,178, 43,142,110, 36, 99,196,171,219, 27, 61, 83,178,237, 25, 97,151, 26,188,247, 98, 90, 54,206,
-131, 38, 59,229, 63,225, 52,182,171,241,205, 66,178,148, 52,175, 16,166, 60, 5,115, 36, 97, 43,202,147,157,121,171, 41,169,236,
- 37,148, 43, 55, 69,234,199,224,162,228,159,112,198,205, 37, 29, 93,124,188,138, 26, 89, 43, 38, 29, 86, 36,103, 32,122,182,144,
-116,143,123, 88,123,241,204, 5,140,156, 36,231, 29,252,135,224,124,251,232,117, 0, 14, 70, 1, 7, 7,183,159,203,207,166,117,
-177,124, 80,240,223,126,112,157,189,183,214,195,110,107, 49,211,119,216, 53, 54, 96,207,155, 77, 84,151,104,213,200,115,224,199,
-169,209,174, 75,118, 76,184,204,185, 50,223,157, 79,148,219,177,157,113,166,212, 74, 28, 66,144, 20,218,181,174,203,234, 48, 7,
-159, 79, 94,255, 0,111, 83,141,108, 83,203, 28,200,146,198,218,163,144, 2, 58,142,190,160,216,223,220, 69,240,155,199, 36, 18,
-203, 12,200, 98,158, 22,100,116, 59, 50,178,157, 44,164, 14,132, 16, 65,247,140, 12,160, 58, 18,122, 12,253,253, 63,179, 67,171,
-168,200, 61, 58,140,249,227,207,167,231,182,138, 63,173,208, 17,223,167,203, 25,201,252, 53, 69, 64, 1,142,253,115,246, 15, 67,
-173,144,108, 65,244,198, 70,227,125,199,254, 48, 26,129,245, 28,189,186,140,125,224,250,245,208,171,192,201, 25, 7,255, 0,104,
-122,103, 69,184, 70, 72, 57, 0, 30,195, 29,124,186,126, 31,179, 66, 47, 62,163, 30,158,121,249,116,210,202, 73, 23, 56, 0,108,
- 61, 54,192,202,193,193,193, 4,247,206,116, 58,199,159,175, 67,233,162, 87,235,229,140,122, 96,250,252,244, 58,129,201,200,200,
-251,113,131,219, 56,209,199,198,216, 54, 6, 88, 0,100, 39,175,203,167,231,251, 52, 43,131, 39, 36, 2, 64,236, 58,254, 63, 61,
- 22,231, 76,100,244,201,251, 60,134,132, 80, 30,188,221,127,104,193,245,251, 52,170,155,223,107, 91, 25, 22,223, 2, 44, 12, 18,
- 70, 49,219,212,117,237,161, 87,243,234, 15,111, 44, 31, 92,249,249,232,197,140,103,249,222,127,105,251, 6,133,115, 24,236,123,
-246,244,239,223,229,165,147, 10,139, 27,123,190,126,126,252, 12,188,246,199, 76,103, 62,152,254,142,154, 13,206,249,201, 78, 51,
-156,140,231,211, 31, 46,250, 49,194, 2,122,244,243,207,151, 79, 93, 90,212,167,148,162, 20, 50,159, 34,158,248, 35,184,244,210,
-152, 2,247, 55,232, 48, 59,171, 82, 85,220,156,231,177,199, 79,179, 75, 84,137, 89, 82,129, 64,192, 61, 9,238,125,123,157, 45,
- 11,159, 92,102,195,211, 7, 1,145,228, 49,230,115,215,175,153,251,245, 85, 41,199, 65,212,158,255, 0,159, 77, 82, 78,114, 7,
-145,207, 79, 35,223,203,237, 26, 37, 0,231, 61, 49,231,219,242, 53,130, 1,198,113, 85,164, 37, 39, 24, 29, 70, 51,230,123,121,
-232,129,156,245, 31, 8, 29,193,235,233,231,223,190,169,163, 29,176, 58,117, 7, 26,244,121,242, 2, 82, 20, 60,250,224,142,189,
-251,246,210, 76, 0,248,223, 3, 5, 39, 29, 51,146, 59,252,240,123,103,174,138, 64,206, 8, 35, 31,183,240,208,109, 54, 70, 78,
- 78, 73,235,147,144, 6, 78, 6, 51,215, 70,163, 57,233,142,157,199,203,229,162, 27,218,255, 0,203,124, 17,187,155,224,134,240,
-161,156,231,174, 64,235,211, 29, 63,164,104,132,168,143, 60, 14,199, 24,243,245,249,127, 86,168,160, 96,103,207,203,243,246,141,
- 16,132,224,228,245, 7,174, 63,160,231,215, 73, 16, 5,253,223, 39, 9, 28, 86, 71,127, 62,223,143,231, 58, 44, 1,220,122, 99,
-160,192,252, 52, 58, 82, 7,219,143,207,238,213, 86,242,162, 60,134,112, 57,142, 0,243, 42, 62,128, 12,232,167, 5, 97,182,231,
-108,101, 54,149,175, 93,188,238, 42, 37,171,108, 82,103,215,174, 43,142,169, 10,139, 68,162,210,216, 92,170,133, 82,169, 80,121,
- 49,225, 64,134,195, 96,151, 31,113,229,164,118,194, 70, 84, 72, 0,157, 78, 55,217,195,236,235,180, 56, 5,219,136,183,189,229,
- 6,143,114,241,101,120,210,144,245,197,112,186,195, 83, 99,109,101, 38,115, 41,113, 22, 77,152,167, 82, 66, 42, 9, 66,147,245,
-132,212, 0,227,174,130,132,144,210, 64, 58, 65,236, 48,224, 78,145,183,150, 91, 28,115,238,229, 25, 47, 93, 23, 10,101,211,120,
-127,163, 84,163,165, 73,163,211, 57, 87, 30,165,184, 46, 48,226, 73, 76,201, 4, 45,184,107, 35, 40,101, 37,105, 33, 78,103, 93,
-206,171,207,168, 77,158,242,214,234,165,120,206, 45,240,239, 57, 83,188,203, 36,252, 62,157, 9,239,170, 51,196, 46, 48,105, 37,
-147, 42,160,151, 76, 16,146, 37, 96,109,169,129, 27, 92,118, 83,208,119, 32,181,143,145,135,112,125, 25,188, 13,143, 54, 16,113,
-223, 19, 82,137, 17,172,244, 16, 72, 60,170,157,125,165,213,191, 93,246, 49,126,194, 16,247,212,254, 92,102,175, 95,155, 82, 46,
-162,100,151,208,236,151, 84, 86,135,157, 83,143, 45, 96,146, 94,142,181, 28,149, 31,231, 39, 61,245, 66,141,115,205,137, 57,175,
- 1,247, 75, 76, 35,195, 76,148, 41, 72,125, 46, 37, 67,149, 50, 80, 63, 89,178,122,100,246, 29,245,245,218, 59,147,164, 45, 78,
- 62,215, 50,202,148,134,101,254,133,244, 62,145,140,180,188,124, 11, 56,232, 71, 67,171, 83,148,233, 49,170, 13,190,247,248, 44,
-245,182, 90,104, 56,144,150, 39, 33, 63, 10,154,125, 67,225,241, 20,158,202,245,193,243,213, 56,106, 88,146,193,203,105,235,239,
- 59, 19,191,201,199,127,158, 23,202,218,157,233,146, 24,236, 81,136, 80, 46, 1, 43,107,143, 46,174,130,197,183, 3,169,212, 47,
-102, 23,138, 45,142,166,222, 16, 42, 27,183,108,211, 81, 10,232,163, 70,247,155,186,155, 13,174, 83, 92,132, 0, 8,170,165,134,
-192, 6,115, 39, 5,106, 72,203,136, 86, 73,233,166,207,131,205,208,115,108,174, 89,118,133,206,234,163,216, 59,146,166, 20,169,
- 42, 82,136,161, 93, 77,252, 49, 42, 33, 4,225,182,215,204,148,185,216, 20,171, 61,198,186, 27,110,114,132,166, 53, 69,148, 59,
- 30, 90, 23, 25,101,236,171,154, 43,201,240,223,133, 36, 17,241, 35,145, 74,229, 39,161,215, 63,238,253,167,145,106,238,109,193,
-110,177, 27,154,158,103,166,165, 71,109,208, 75, 65,135,207,188, 66,117,149,227,252,159, 41,228,233,219, 3, 75,181, 66,188,109,
- 27,157, 72,221, 61,223,199, 99,123,219,220, 65,219,108, 51,192, 88,210, 85,228, 53,174, 76,116,104, 30,157,201,185,229, 35, 0,
- 2, 19,125,224,147, 75, 37,239,101, 33, 13,213, 69,250,103,114, 80, 10,102,173, 46, 58,164,199,113,180,212,163,184,159,141, 18,
- 38,180,144, 27,150,219,136,255, 0, 40,194,218,193,244,234, 52, 13, 53,152, 76, 85,228, 75,126, 75,175, 83,218,112,212,170, 11,
-111, 28,170,135, 77,132,169, 78,242,115, 15,209,175, 45,242,143,153,236,117,227, 97,231, 85,171,148, 38,109,155,155,154, 91, 20,
-248,232,126,139, 84, 87,199, 38, 34, 85,134,223,163, 74, 82,186,185, 28, 40,126,141, 95,205, 7, 30, 67, 69,110,125, 33,219, 19,
-109,119, 58,172, 90, 66, 93,116, 66,166,211,214,225, 63,160,250,214, 82, 3,169, 64,233,241,150, 27,112, 39,168, 3,155, 62, 88,
- 58,244,144,243,106,233,148, 11,197, 35,128,123,129,109,205,246,238, 6,199,184,235,108, 71, 42,184,155,216,242,188,198,154,162,
- 95,237,180,208,232,140, 11, 90, 66,236,136,172,189,245, 3,160,145,212, 16,122,249, 73,227,159, 17,187,137, 50,231,190,101, 63,
- 18,112,228,140,252,162,176, 30, 62, 10,228, 73, 82,164, 22, 95, 72, 63, 2, 91, 10, 66, 22,112, 8, 82, 66,185,126, 28, 29, 79,
-145, 81, 80,168, 42, 68,213, 63, 12, 37,188, 63, 45,130,209,128,132,156,150, 26, 75,203, 73, 74,254, 39, 10,138, 92, 67,124,164,
-229, 42, 25, 25,186,221,245, 35, 87,185, 43, 18,155, 90,227, 77,126,164,251,143, 7,129,118, 51,188,178, 11,120,144,148,242,135,
- 91,232, 71, 50, 10, 92, 36, 36, 39,211, 88,139,213,131, 77,117,196,212, 27, 16,219, 83,220,225,196,169, 47,211,101,161, 71,194,
- 11, 92,133, 4,174, 9, 66,203,105,113,183,145,240,248,193,124,202,108,130, 38, 34, 59,179, 29,137,125,253,230,246, 63,127,165,
-250, 13,186, 11,218,248,225,108,186, 60,159, 36,202,104, 33, 80,239, 79, 18, 6,232, 36, 44,108,206, 88,216,171,134,102, 58,137,
-189,193,232,183,182, 51,138,107,197,167, 35,145, 32,194, 75,137, 45,162,170,204,129, 26, 59,172, 0, 57, 16,250, 88, 42, 67,173,
-168, 44,132, 33, 97,105, 81, 89,194,193,192, 15, 21,183, 34, 93,189, 17,133,173,196,213, 88,150,133,188,239, 51, 44,199,149, 29,
- 45,142, 86,210, 82,135, 2, 38, 68,112,144,144,148,168, 41, 39, 32,133, 0, 2, 89,200, 80,154,117,109,186,212,100,199,139, 80,
-101, 13, 33,216, 78,199,114, 51,238, 37, 74, 91, 78,189, 27,148,178,231, 80,164,172,130, 9, 41,201,238, 14,179,250, 11, 83,227,
-182,194,154,145, 2,161, 25,212,187, 44,196, 66,213, 18,124,111, 5,107,100,166, 20,148,169,198,211, 12,115,175,153, 42, 74, 80,
- 70, 78, 78, 51,166,186,192,172,178, 6,109,136,220,117,189,189,227,117,177, 30,160, 27,119,233,139, 14,158,162, 39,142, 0,101,
- 66, 93,128, 10,247, 70,216,130,108,214,176, 96,108, 65,243, 95,175,187, 27, 7,111,210, 27,168,182,211,116,199,151, 78, 75,232,
-110, 83,209,169,177, 26,125, 10,125, 72, 91,143,187, 34, 34,142, 34,172, 0,129,128,132, 45, 73, 72, 9, 43, 56, 80,206,163,202,
-184,216,125,223, 26,158,154,225, 56, 80,114,142,180, 69,150,162,178,150,227, 46, 61, 62,106,200, 76,129,146, 74, 91,146, 28, 87,
- 54, 67,121, 73,211, 37, 69,159, 9, 83, 19, 42,175, 34,171, 13,106, 74,227,154,156, 84,200, 79,185,120,108,229,135, 25,169, 81,
-213,250, 96,176,134,208,128, 65, 64,248,130,145,141, 58,116, 74,219,236,148,159,175, 97, 86, 33,180,182, 20, 87, 17,108,199,169,
-180,216, 91,106, 47, 79,130,128, 61,245,230,208,113,204,207, 34,215,156,148,247,212, 94,170, 25,163,109,148, 76,140, 5,245, 41,
-218,254,142, 8,213,107,116, 44, 47, 97,229, 55,198,205, 75, 85, 29, 71,255, 0, 73, 68, 85, 96,178,164,159,111, 98,202,179, 71,
-229, 98, 69,134,130,202, 77,238, 0, 83, 96,239, 82,107, 84,106,164,152,205,214, 16,245, 17, 75,247,101, 22, 43, 1,232, 83,105,
-203,136,165, 50,229, 98, 34,151,202, 17,226, 61,202,145,202,178, 48,162,146,142,250,216,251,105,128,186, 36,170,100,211, 22, 67,
- 77,176,209,122, 60,214,153,145, 30,167, 10, 65,240,214,164,164,158, 79, 13, 73, 45,115, 37,224,181, 33,120, 81,230, 79, 42,131,
- 59, 69, 16,106,201,139, 50, 64,129, 87,142,243,161,150,146, 80,211,168, 90, 71,134,148, 54,236, 25, 3,150, 43,129, 5,101,229,
- 41, 92,199,162, 51,130,112,245,208,236,136, 14, 52, 88,165, 63, 50,139, 34, 51,197,246, 98, 51,239, 14, 83,216, 91,139,113,121,
- 76, 73,110,172, 58,223, 48, 72, 13,160,134,135,112,144, 6,154,194, 70, 23,117,229,143,129,216,236, 71, 80, 47, 96,118,184, 4,
-222,231,114, 6, 41,222, 44,205,105, 4, 73, 28,205, 45, 7, 45,193,177,250,212,141,149,187, 31, 44,137,107,144,124,172,109,102,
-184,117, 1,243, 59, 82,158,154, 90, 88,167,200,142,181,210,164,169,181, 70, 81, 89,144,237, 61,164, 97, 8,142, 95, 89, 89,114,
-156,227,128, 6,143, 58,148,202,185,146,172,161, 73, 41, 58,230,163,187, 82,190,163,190,164, 15,240, 15,170, 97, 12,245, 79, 47,
-184,169, 46, 41,174,193, 14,169,111,140,231,161, 40,198,122,227, 89, 5, 18, 3,176,154,143, 6,166,202, 9, 1, 73,143, 61,174,
-116,199,117, 99, 11,126, 47,134, 18, 84,193,229, 10, 37, 10, 37,180,225, 64, 40, 28, 13,100,168,166,120,245,217, 15,133,120,168,
-146,220, 87,219, 46, 28,171, 6, 52,112,158,128,225, 60,175, 70, 87,197,205,140, 40, 16,112, 64,214, 42,193, 90,101, 10,126,211,
-169,184,233,123, 31,188,110, 72,220, 3,125,207, 67,138, 55, 49,206,155,219,234, 42,132,129,216,197, 32, 46, 15,145,195, 50, 2,
-235,191, 86, 80, 85,250, 18, 70,227, 86,166, 57,149,157,109,178,148,183,224, 71, 1,183, 35,200,142,217, 40, 25, 72,109,212,201,
- 82,185, 20,122,144,165,158,100,158,128,171, 25,198, 50,253,209, 40,136, 75,137, 56, 90, 16,244,102,139,216, 60,229, 92,174, 20,
-160, 14,224, 59,241,225, 62,105,200,244,214, 51,107,195,108,165,151, 16,146, 22, 20,133, 20, 2, 74, 64,121, 60,138, 65, 87, 76,
- 96,117,207,114, 8,243, 3, 79, 5, 53,182,146, 64, 57,193,111,145, 35,178, 84, 80,226, 28,232,165,126,162,177,219, 31,234, 19,
-220,105,223, 44,132,121, 88,223, 77,198,253,250,119, 62,253,247,252,113, 75,113, 30,119, 60,175, 32, 4,249,186,239,191, 91,252,
- 54,176,222,214,184,191,174, 50, 89, 20,195, 81,143, 72,144,180,173, 79,134, 84,226,176, 3,206, 10,131, 10, 49,156,120,149, 12,
-182, 3, 33,100, 31, 37,188, 73,238, 14,172, 46, 81, 36,215,106, 78,136, 82, 13, 46,159, 29,244,173,218,140, 98, 3,147, 86,130,
-148, 42,159, 79,101,212,148,184, 90, 82, 9,117,242, 64, 39,157,182, 86, 64, 39, 89,163,142, 4,210, 26,113,106,112, 18,169,104,
-109, 13,148, 32,151, 20,219, 9, 95, 85,156,163, 43, 88, 5, 64, 16, 3,157, 50, 73,215,199, 43, 45, 65, 83,113, 91, 14,161,136,
-145, 25, 84,196,198, 1,231, 22, 91, 74, 20,150,219,107, 33, 42,116,156, 18,165, 16, 57, 84, 58,142,131, 82, 86,141,140,129, 80,
- 14, 99, 42, 29,250, 93,128, 39, 98, 55,238, 64,233, 99,214,219, 98,176,130,186,186, 61, 66,153, 3,200, 12,138,151, 0,172,107,
-174,228,216,130, 24,139,170,168, 32,128, 73,218,246, 35, 9,159, 71,167,209,161,120, 20,248,236,194,134,100,203, 91,178, 29, 95,
-186,251,203,202, 90, 28,149, 81,118, 76,215,143,188, 39,196, 74,202,151, 33, 97, 35,155,151,196, 40, 72,195, 37, 84,174, 73,169,
- 84,154,106,129, 77, 18,105, 49, 10,229, 68,157, 80,241,218,102,167, 32,224, 55, 84, 90, 25,111,222,102,198, 15, 5,251,154, 64,
-109, 11,229, 46,180,231, 39, 33, 15,133, 74, 59,117,246,189,234,168,242, 95,136,212,199, 36,199,182,218,105,167,105,241,249, 74,
-146,211,181,151, 92, 73, 53, 87, 2,149,206,150, 9, 76, 54,221, 64, 80,109,197, 32, 43, 88,189, 94,149, 6, 43,205,191, 86,230,
-247,217,135,221,162,211,216,142,170,140,185,124,205,173, 45, 70,131, 10, 58,124,106,140,226, 75,124,160, 0,202, 50, 8, 82, 18,
- 57,198,220, 72,224,134,210, 45,176,191, 96,122, 95,208, 6,189,206,219,216, 29,247,196,207, 33,174,134,153,155,219, 85,171,171,
-156, 48,220,187, 89,207, 83, 96, 67, 75, 32, 91,221,193, 17, 45,216,175, 48, 50,178,224, 84, 74, 44,154,236,184,109, 72,113,234,
-237,116,165,197,177, 54, 82,143,185,194,138,164,184,249, 16,105,241,143, 44,103,208,121, 50,164,146,226,240,182,220,119, 4,235,
- 37,164, 65,153, 92, 80,137,106, 70,139, 82,125,151,164,197,155, 93,168,123,196,123, 46,150,251, 8,240,252, 17,238, 40, 42,185,
-170,222, 34,155, 80,141, 16,150, 88,230, 75,114,101, 51,130,141,103,113,118,222, 84,228,199,126,232, 95,240,106,136, 16,215,189,
-218, 86,235,201, 53,185, 52,220,146, 81,114, 92,236, 97, 49, 90,112,128, 36,194,166, 1,146,181, 52,236,199,138, 84, 53,147, 85,
-149, 73,182, 92,129, 6,223,109, 81,169,207,198,147, 79,163, 83, 41,232, 5, 82, 81, 29,145,152,108,180,165, 54, 91,134,211,156,
-200,113,210, 18,218, 3,193,103,153, 99, 39,101,145,165, 85,144, 39, 49,211,208,128,187,218,251,146, 58, 53,134,171, 94,215, 4,
- 88,173,147,175,226,120,170,103,246,122, 6, 21,149, 44, 27, 66,168,189, 44, 37, 67, 23, 6, 68, 33, 36, 54, 58,210, 58,127,236,
-202,171,173,165,149, 12,145, 11, 77, 10,223,167, 90, 47,203,153, 93,154, 39,203,117,178,229, 86,225,153, 22, 43, 10, 90,217, 97,
-108,173,148, 73,109,194,197, 34,138,149,128, 98,176,158, 86, 18,160,180, 32,169,197, 18,171,243, 12, 71,188, 39, 42,174,205, 61,
- 18, 45, 72,169, 45, 52,144,181, 82, 30,158,238, 86,184,179,219,134,160,218,163, 82,146,160,225,109, 14, 58,219,178, 20, 76,135,
-249, 18, 91,109, 56,227,176, 25,153, 75,137, 81,185,166,184,212, 78, 68,193,165, 81, 33, 56, 20,195, 85, 39, 10, 11, 82,165, 48,
-193, 47, 87,234,137,240,209,202,128,158, 72,168, 70, 91, 66, 74,214,240,187,209,162, 25,147, 29,241, 80,243, 20, 40, 45,185, 21,
-234,107,146, 57,170,243,146,235,172,178,227, 19,125,225,132, 36,196, 91,197, 42, 68,112,151, 28, 82, 94, 80,113,210, 62, 13, 58,
-210,106, 66,183, 75, 35, 17,168,117, 97,109,198,228, 16,111,212,237,190,224, 90,197,113, 23,172,103,117,158,190, 74,182,147, 48,
- 80, 99,105, 64,211, 10, 1,101,209, 78,168, 99, 38,107,105,141, 52, 17, 20, 68,221,110,162, 55, 14,212, 81, 18,171, 73, 69, 54,
-151, 80,170,193,183,229,135,231, 85, 42,149, 41, 47, 79,143, 80,247, 20, 52,203, 16, 98,229,240,126,168,115,170, 31,125, 39,149,
-208,202, 26, 10, 40,231,230,113,232, 15, 68,139, 87,166, 53, 26, 60,198, 94,122, 51, 68, 71,148,250,148, 25,103, 63,162, 83,229,
- 41, 41, 99, 37, 69, 44,160, 37, 60,201,103,152,129,206, 20, 27,135, 43, 8,141, 22,153, 2,220,110, 28,171,174,170,134, 89,142,
-153,169, 66, 35,209, 88,108,174, 57,126, 80,125, 99,220, 96,135, 91,113, 92,141,161, 33,199, 27, 75,101, 92,216, 34,241, 2, 53,
- 62,152,134,101, 34,161, 49,233,206,169,137,117, 56,178,156, 90,231, 45,245,190, 29,112,130,215,199,159, 17, 9,113, 10, 64, 72,
-240,130, 80, 82, 83,212, 76,105, 31,217,222, 25, 64,230,104, 8,110,162,224, 1,102,223, 85,193, 99,246,172,183, 96, 73,103, 47,
-101, 81, 84,230, 84,205, 52, 18,164,134, 72,163,156,202, 35,140,221,164,118, 98, 85,165,150,214,109, 39, 74,162, 72,246, 71,229,
- 5, 65, 26,139,159,203,207,219, 83,176,204,240,223,237, 79,227, 35,111, 41,204, 69,139, 67,175,238, 80,222, 59, 98, 36, 38,195,
-113,161,208,183,162,149, 7,112,132, 52,182,144, 3,101,170,213,102,182,215, 40,232,148,176,158,221,135, 48, 73, 36,100, 96, 99,
-184, 61,250,246,212,159, 62,150, 45,137, 6,222,246,135,108,254,224, 66, 67,137,123,117, 56, 94,183,220,168,135, 22,209, 74,230,
- 88, 87,181,215, 66,109,109,161,180, 2,209, 52,250,172, 0,176,165, 45, 68,165, 61, 64, 1, 34, 48, 64,228, 21, 18, 15,251, 56,
-236,115,211, 86, 37, 3,171, 82, 68, 23,236, 70, 90, 53,182,195, 76,108,209,131,111, 66, 22,227,189,136,190,247,199, 60,230, 49,
-152,171,170, 80,253,162,193,143,184,200,162, 66, 62,237, 86,255, 0, 76,120, 41,206, 48,160,113,145,142,217,207,150, 15,125,123,
- 0,227,148, 14, 92,116, 63,209,247,244,215,220, 39, 25, 35,191, 83,230, 71,159,125, 87,109,178,242,146,134, 70, 92, 87, 96,172,
- 36, 4,128, 84,165, 45, 71,162, 80, 0, 36,146,112, 0,201,233,173,195,210,228,218,223,187, 26, 93,174,118,199,134, 90,117,213,
- 33,166,208,167, 28, 90,185, 80,132, 2,165, 40,158,192, 1,174,165,240, 33,236,163,226, 11,141,133,195,187,161,181, 31,108, 54,
- 57,185,170,102,161,188,215,148, 9, 46,210, 42,138,140,234, 81, 54,157,182,214,243, 78, 53, 39,113, 42,232,234,133, 62,203,140,
- 81,226,186,164,251,205, 65, 68, 45,141,111,127,178,155,217, 11, 7,117,232,244, 30, 38,184,174,161,203,107,103,231,248, 21,109,
-173,218, 73,190,241, 78,168,239, 51, 13,168,169,155,182,242,228, 90, 36, 81,246,136,186,131,238,144,210, 90,151,113,134,203,171,
- 91, 20,149, 36,203,150,181, 2, 36, 72,241, 41,180,202,125, 62, 5, 42,149, 74,131, 14,149, 68,162, 82,162, 70,166,209,168,180,
-168,109, 37,152, 52,202, 93, 50, 19, 72, 98,155, 79, 98, 58, 66, 90, 97,150,208,219,105, 24, 66, 83,166, 25,243, 9, 42, 36, 48,
-211, 63, 42, 59,216,200, 44, 75, 90,215, 17,131,112, 7, 91,187, 2, 54,178,171, 92,178, 89,124, 43,192, 18,102, 49, 69,153,103,
- 74,240,208,200, 3, 69, 2,157, 18, 76,166,196, 60,141,179, 69, 19, 15,178, 22,210, 56, 58,131, 70,186, 89,244,203,132,143,102,
- 23, 8,220, 37,199,165,207,176,182,222, 37,237,184,240,218, 71,188,239, 38,234, 68,167,221, 55,203,178, 8, 5,199,104, 48,157,
-143,245,101,141, 16,184, 57,155,143, 75,138,210,217, 36,230, 83,228,243,158,151, 69,160,187, 49,126, 36,133, 58,235,129, 35, 46,
- 60, 86,226,143, 94,131,153, 68,246, 24, 3,200,118,213,202,135, 74,248, 27, 28,132,168,164, 41, 71, 3, 60,167,178,137,239,204,
-123, 15, 64, 52,232,211,232,248, 74, 64, 64, 35, 29, 71,146, 73,235,146,113,212, 96,254,205,107, 90, 40, 75,114,198,159, 86, 38,
-236,109,251, 76, 73, 38,219,253,162,109,208, 91, 22,226, 81, 83,208,192,148,180,116,233, 71, 78,189, 18, 53, 84, 94,219,144,182,
-187, 30,236,110,205,212,155,226, 36,191, 73,131,133,184, 14,237,254,198,241,107, 70,166, 37,170,205, 10,172,246,199,238, 12,230,
- 90, 72, 51,232,213, 6,101, 92, 59,127, 50,122,210, 50,227,241,167, 51, 87,134,218,213,158, 86,166, 6,193, 0, 1,168,116,169,
- 41, 33, 39,204,245,237,215, 39,203,251,117,250, 82,251,111,182,226,159,122,123, 47,248,158, 68,212,183,205,103,209,237,109,192,
-166, 56,164,149,248, 53, 59, 98,234,166, 45,165,183,223,145, 74, 98,100,132,103,253, 85,145,219, 95,154,217, 61, 0, 4, 2, 74,
-134, 8, 61, 7, 49,198, 52,227,147, 73,255, 0,165, 66, 15,216,112,195,220, 36, 0,159,222,225,201,223,169,197, 33,199,180,137,
- 77,196, 45, 34, 0, 5,116, 17, 74, 69,250,190,167,136,155,109, 98,194, 32,222,246, 36,247,192,206,116, 56, 35,174, 1,207,238,
-253,186, 25, 65, 61,243,212,246,243, 7, 26, 53,192, 0,199, 55, 83,220,158,189,254, 95,142,132, 88, 87, 83,128, 65,237,142,152,
-192,193, 56,199,174,159,241, 15,192, 46, 18, 50, 66,124,241,246,227,185,249,232, 98, 58,147,216,252,251, 39,236, 30, 90, 53,207,
- 47,191, 65, 58, 65,207,175,110,189,250, 16, 14, 52,178,244, 30,252, 20,218,254,159,207,182, 5,112,227, 39,190, 51,142,131, 31,
-120,199, 78,154, 17, 68,242,243, 31,159, 40,251,126,126,154, 37, 72, 61,249,137,198,122,121,118,238,122,245,213, 5,161, 68,100,
- 16,191, 34,124,135,231,247,232,227,183,207,254, 48,111,134, 5, 42, 36, 16, 71,124,114,231,182, 61,126,122, 29, 68,103, 25,234,
- 1,232, 6, 0,235,229,162, 84,147,145,215,246,116, 0,106,130,240, 62,121,237,229,142,217,251,124,180,162,141,133,183, 31, 63,
- 61,177,144, 1, 62,151,192,138, 73, 25,229, 57,201, 57,255, 0,103,240,208,221,251,232,197, 2, 50, 70, 0,235,156, 30,227, 61,
- 50, 61,116, 50,192, 29,129,245, 39,203,236,252,116,170,117,249,219, 10, 40, 4,116,183,200,197,185,230,249,199, 41, 42,198, 70,
- 82, 58,103, 25,238, 71,150,116, 51,141,184, 1,235,202, 2,112,144, 0, 36,143,159,167,158,174, 42, 0, 30,132,158,249,207,174,
-132,121,178,164,158, 85,169, 7, 39, 24,254,119,219,234, 51,165,176,110,158,235,226,222, 82,148,255, 0,148, 36,147,212, 99,211,
-208,244,239,165,175, 69,181,182, 0, 82,148,225, 61, 73,192,233,242,239,165,161, 99,233,140,227,210, 7, 92,249, 15,233,252,157,
- 20,130, 49,129,223,185,251,245, 65, 32,224, 12,117,234, 63, 19,255, 0, 13, 86, 64,238,124,199, 76,122,104, 96, 96,148,167, 3,
-175, 66,127, 28,126,227,253, 90,168,210, 0,200, 56, 61,207, 79,158, 58,231,243,223, 84,210, 73,233,142,131,166,126,239,219,162,
- 91, 73, 57,233,223,215,207,166,147,112, 55, 61,255, 0,241,129,143, 96,121,224,159,199,161,251,180, 91, 63, 23,113,203,215, 25,
-238,123, 13, 83,109, 35,160,235,215,175,223,141, 18,148,131,208,116,233,158,223,102,147,193, 77,141,238,118,193, 72, 79,216,122,
-118,249,250,227,203,207, 85,146, 1, 56, 61, 61, 49,251, 7,109, 14,216,230,198,125, 50,122, 99, 68,160, 2, 64,198,125, 63,225,
-164, 90,192,144, 62,122, 97, 28, 86, 29, 14, 58,140,121,159, 62,158,186,218,174, 11,120,121,159,197, 23, 18,123, 87,179,145,130,
-147, 79,185,110, 40,206,220,178, 66, 73, 76, 27, 74,150,164,207,184,229,172,143,213, 6,158,202,219, 7,253,105, 35, 90,172, 1,
-206,113,144, 59,143,159,245,234, 71,254,193,173,178, 98,146,141,245,226, 34,165, 22, 63,188, 82,169,144,118,234,211,150,250, 66,
-158, 98, 93, 83, 19,235,142, 70,200,253, 26,253,223,221, 91, 42, 24, 61,198,152, 56,151, 50, 57, 86, 77, 91, 84,173,166, 80,186,
- 80,142,161,155,107,143,122,130, 91,254,220, 76, 56, 7,134, 79, 24,113,142, 65,195,218, 75, 67, 95, 58,243,173,255, 0, 2, 48,
-101,152, 92,116,213, 26, 20, 7,179, 48,196,149,103,214, 45,203,102,139, 77,179,109,136,172, 83,237,139, 54,149, 2,215,182,224,
- 65, 9,106, 37, 62,145, 72,142,136, 76,165, 49,147,211, 5, 45,100,145,212,231, 39, 86,118,235, 42,143,200,227, 47, 37,210,234,
- 18, 24, 83,124,167, 5,120, 37, 7, 39,169, 39, 31,142,154, 22,235,241,228,173,213, 7, 98,188,149,229,164,178,233,228, 89, 82,
-186, 30,101,122, 21,107, 39,167, 33,181,182,204, 85, 70,113,109, 7, 2,195,161,204,169,167, 50, 20, 18,130, 15,196, 61, 53,201,
- 85,114,187,206,236,205,119,148,147,111,221,239,252,122, 91,240,246,231,132, 50, 26, 12,191, 43,166,165,142, 30, 84, 80,168, 93,
- 32, 13, 58, 85, 84,105,177,176, 1,109,176, 91, 3,211, 99,135,136,196,145, 38, 52,105,210, 76,121, 79,186, 10, 76,117,169, 45,
-200, 65, 31,170,160, 65,233,140,104,132,199, 66,144,161, 62, 50,221,107,148,150,150,164,248,168,109, 67, 33, 74, 86, 6, 71,200,
-131,160, 41,209,224, 56, 99,202,116, 72, 15, 50,217, 66,222,125, 75, 64,192, 24, 0,163,205, 35,215,229,172,162, 35,108, 56,218,
-125,222,104, 97,121,193, 42, 81,113, 50, 18,162, 73, 1,181,118, 3, 58, 69,199,148,148, 66,227,107,244,216,237,190,219,127, 28,
- 18,170, 83, 9, 43,230,178, 30,161, 74, 4,185, 54, 11,164,181,128, 27, 95, 77,200, 59,139, 97, 81,169,202,247,134,228, 67, 90,
- 39, 71, 36, 55, 34, 19,199, 15, 6,193, 24, 91, 89,234,160, 7,109, 86,220,221,191, 69, 90, 85,181,115, 68, 96, 46, 68, 6,140,
- 7,138,147,149,150, 82,160,166,208,188,140,168, 39, 39, 25,242,233,167, 58,137, 71,166,201,142,194,201,142,212,216,196, 6,229,
- 50,121, 11,153, 61, 65, 3,161,199,207, 78,207,240,125,201,244,162,195,141,165,106, 65, 67,236,188,216,248, 92, 90, 48, 74, 84,
- 7, 98, 83,144,126,221,106,152,228,100,145, 44, 64,101, 22,223,184,183, 79,141,173,235, 98,111,138,187,136,120,137, 99,171,130,
-101, 58, 30, 38,100,109, 86, 82,202,195, 78,228, 88, 56, 32,141,236,172, 58, 16,109,124, 91,182, 90,193,101,183,152, 82, 35,165,
- 30,248,200,113, 65, 41, 9, 79,140, 82, 57,198, 49,211,152,245,251, 78,155,223,104, 77, 33,251, 91,135,122,140,200,202, 44, 42,
- 69,199, 77,109, 75, 9, 39,197,247,120, 85, 7, 27,105,208, 6, 86,128,176,147,145,219,151, 56, 58,220,141,174,167, 53, 29,232,
-216, 70, 58, 14,152,232,133,143,214, 72, 31,205, 26, 97,253,170,148,143, 23,133, 86,229, 70, 46,101,187,202, 15, 56,105, 57, 89,
- 75,148,154,162, 84, 79, 78,191,171,143, 92,159, 93, 75, 50, 90,104,205, 42,203,166,242, 70,111,241,189,135,243,239,235,142,124,
-204,184,154,105,248,255, 0, 33,161,119,211, 75, 85, 83, 4,100,118,176,147, 86,254,237,133,254, 24,136, 5, 65,227, 38, 82,145,
-202,226, 39, 41,110,184,151,185,156,241, 27, 46, 17,149,180,210, 23,200,250, 75,169,109, 32, 45, 42, 64,235,207,202,174,244,225,
- 84,213, 6, 69, 67,223,225,189, 84,158,167,131,113,207,129, 29,150,216,138, 80,148,182,153,212,240,151, 19, 0,248,133,126,240,
-180,243,120,152, 79,110,128, 7, 61,166, 95, 74, 93, 83,147, 93,247,105, 92,175, 73,101,190, 69, 71,105, 74,202,153, 10,108,130,
-212,142,100,163, 40, 88,230, 36,130,160, 83,202, 52, 77, 26, 68,232,229, 30, 27, 79,123,184, 37, 79,205,166,196,101, 85,116,182,
- 73, 71, 35,108, 72, 90, 68,166,220, 46, 4, 56,180, 23, 84,209, 5, 97, 7, 3,149,225,214,234,123,129,216,253,221,239,113,176,
- 23, 3,174,219, 95,167,161,116,245, 3,200,177,221,159,162,132,176, 97,182,229, 73, 27,128, 53, 11,223,179, 1,176, 39, 14, 61,
-179,110, 49, 87, 92,138,164, 73,146,233,178,165,150, 16,227, 84, 69, 42, 50, 94,109, 10, 71, 71, 96,168, 22, 37,159,133,105, 75,
-193, 9, 83,132,168, 41, 95, 14,158, 74, 45, 26,235,147, 34, 76,184,244,134,171, 40,104,204, 83,146, 41,175, 68,162, 76,140, 26,
-117, 76,161, 51,233,207, 31, 0,115,161,149,165, 62, 10,135, 57, 87,234, 12,157, 54,148,138,123, 5, 81,133,159, 38,108, 39, 22,
-195,242,231, 68, 66,152,157, 2, 68,128,208, 83,174, 57, 5,247, 3,144, 18,140,142,105, 41, 91,107, 89, 89, 79,134, 84,158,109,
-108,157,156,170,253, 2, 24,110, 77, 1, 74, 65,106, 28,151,106, 52, 57, 77,206,132,236,118,255, 0, 72,150,159,167,169, 41,148,
-219,202,116, 37,124,170,241, 18,165, 16, 50, 10,136,212,110,190, 89, 0,102, 91, 57, 54, 10,173, 96,125, 45,246,150,247,176,217,
- 88,139,245,185,184,195,137,205,164,100, 34,153, 99,169,146, 43, 14, 92,202, 82, 66,118,230,106, 62, 73, 25, 71, 75,134,111, 41,
- 23, 70, 4, 1,238,148,138, 91, 79,179, 2,163, 42,161,107, 43,221,217,145, 13, 23, 52, 5,211, 28, 76,196,148,190, 35,243,188,
-223,129, 37,188,163,195,105,198, 94, 1,193,212, 37, 68,105,199,141,108,212,103, 60,153,146,233, 80,100,164, 73,113, 42,158,134,
-163,128, 66,210,128,223, 59,193,178, 90, 87, 40, 29, 82, 74,185, 79, 84,231,174,179,235, 33,170, 93, 82, 77, 65,154,147, 17, 46,
- 76,178,176, 41, 85, 40,140, 45,104,144,248, 64, 74, 13, 62,115,105,115, 41,101, 46,164,185,225,171,144, 31,132,142,153,120,104,
-155, 91,103, 58,196,127,118,165, 59,108,201,150,211, 50,140,139, 86,167, 83,165,188,209, 10, 66, 17, 17,112, 22,243,140, 60, 16,
- 72, 81,231, 97,105,115,147,153, 93,245, 22,146,172,134,180,138,209, 72, 58,244, 55,189,174, 71,217, 35,212,143, 54,251,139, 30,
-173,181,252,117, 14, 86,239, 28,240, 77, 72,225, 81,117, 42, 44,182, 50, 45,220,171, 22,130, 84,251, 42, 72, 28,237, 90, 65, 85,
- 58, 66,227, 1,178,236,216, 17,129,148,194,170,116,121,146, 79,188, 38, 93, 38, 95,133, 10, 82,217, 78, 91, 18, 24,229,114, 60,
-196,167,194, 87,134, 28,105, 10,115,149, 65, 71, 7, 26,218,107,126,109, 90, 10,162,154,132,152, 21, 33, 32, 55,133, 48,201,165,
-212, 26, 80, 33, 63, 20,102,159,113,167,222, 82, 65, 82,130, 11,105, 73, 39,225,199, 46,172,180, 45,177,175,198,113,230,233,151,
-117, 62,124, 98,178,148,183, 92,183,144,196,137, 9, 81,248,202,103, 82, 28, 65,109, 73,194,146, 20, 24,229, 74,149,158, 83,170,
-151,157, 90, 22,218, 91,117,139,187,113, 17, 73,181,172,155, 85,134,101,215,110,181,213, 99,253, 77, 72, 98, 68,134,161, 70, 15,
-171,149, 18, 12,199,165, 63, 30, 59, 44, 48,211,146,228, 58,240, 75, 8,112,149, 16,164, 80,243, 60,247, 50, 62,199,125,199,193,
- 73, 23,219, 99,125,143, 82, 0,239, 80,241, 39, 21, 71,196,149,209, 83, 82,212,174,107, 81, 80,226, 56,226, 80,230,162, 70,147,
-234,226,138, 33, 50, 71, 80,238,238, 21, 99,138, 13,122,152,170,128,194,195, 15, 28,122,147,162, 40,105,244, 58,132, 37,223, 18,
- 3,231,194,234,242, 86, 28,114, 59,165, 43, 30, 26,249,214,164,228,128,219,188,202,202,185,192,213,242, 37, 81,151, 30,143, 37,
-197, 57,226, 48, 3, 43, 43, 9, 11, 44,184,174,102,157, 83, 95,206, 90, 22, 66, 70, 64,200, 86,124,137, 13, 21,189,112, 82, 46,
- 11,114,151,114, 91,117,216,119, 21,175,113, 83, 33, 86,232,117,120,238,174, 76,106,173, 26, 82, 67,145,101, 66,125,192, 11,141,
- 45, 4,130,146,128,164, 41, 37,183, 57, 92, 66,210, 3,147,114,251,147,205, 46, 54, 83,202,178, 2, 20,226, 80,132,161, 96,169,
- 73, 10, 36,120,173,129,204,140,147,204, 20, 64,198, 59,150,162, 37,117, 42, 5,134,194,253,108, 65,216,110,125, 71, 75, 11,250,
- 92,139, 85, 45, 11, 75, 83, 85, 72,209,180, 51,196,206,140,172, 25, 25, 24, 29, 14,146, 35, 0,209,184, 32,134, 82, 46, 24, 18,
- 55, 26, 78,240, 90,213, 31,208,130, 86, 9, 4, 18,130, 72, 73,229, 80, 42,230,108,126,177,199, 46,112, 65, 25,207, 93, 58,209,
- 39,130, 16,145,159,214, 81, 60,157, 65,194, 72, 0,114,156,158,128, 96, 14,165, 71, 30,128,234, 46,217,220,212,153,116,202,237,
-193,112,215,105,214,197,177,108, 64,126,171, 91,175,213, 37,166, 53, 46,151, 79,136, 18,100, 76,145, 41, 67,244, 76, 39, 45,163,
-148, 5, 41,199, 22,134,154, 11, 82,210,147,121,177, 56,210,225,140,221, 20,202, 80,185, 43,180,231, 43, 85, 4,209,236,251,142,
-240,181,165,219, 54,109,110,224,123,244, 52,198,233,213,121,111, 56,150,164,191, 39, 34, 8,154,220, 70,223,145,203,133,133,114,
- 37, 82, 44,159, 40,174,158,140, 87,178, 8,168, 83,237, 72, 72, 38,202, 69,200, 91,220,219, 97,125,133,250,145,136, 77,103, 11,
-113, 14, 98,249,179,100,188, 59, 93,159, 12,160, 94,161,169,105,165,154, 56,137, 78, 96, 87,150, 53,100, 83,203, 28,198, 91,150,
- 88,129,148,174,133, 36,110,229,114, 79,128,205, 58,148,133, 31, 26, 20,100, 59, 45, 60,196,132,212, 39, 20,202,122, 50, 84, 70,
- 84, 27, 10,142,218,188,129,109, 73,206, 70, 5,137,201, 14, 46, 63, 35,110,172, 30, 98,236,137, 60,136, 43, 66,208, 65, 73, 5,
-196,225,111,114,171,166, 73,229, 9, 25,193, 3, 88, 95,215,200,158,183, 30, 67,206, 41, 43,116,248,202,117,107,231, 82,249,143,
- 62, 86,165,101, 75, 43, 42,230, 4, 2, 9, 87, 55,198, 14,178, 38, 92, 98, 67, 32, 20,251,201, 8, 88,240, 16,146,164, 41, 67,
-178,192, 65,194,147,145,216,231, 10,198,125,116,226,139,237, 51,153,109,101,216, 45,137,176, 85, 0, 40, 38,219,249, 64,243, 91,
-246,186, 2, 70, 32,113, 80,251, 44, 81, 44,131, 83,130, 89,141,129,187, 49,212,196,131,181,139, 18, 64, 38,192, 90,228,140, 52,
- 23, 71, 18,155, 27,182,247,133, 23,109,175,221,230,219,141,180,184,238, 72,209,228,209,169,247,213,194,220, 10,181, 86, 20,201,
- 78, 65,135, 62, 60,103,163,251,172, 38, 37, 75,102, 75, 81,164,214, 36, 66,142,250,153, 91,141,169,214,146, 84,119, 30,147, 66,
-165, 80,195,147, 41,232, 38,166,235,108, 25,149,121, 74, 76,250,173, 65, 50, 26, 67,141,184, 37,252, 94, 36, 34,194,208,182,218,
-140, 81, 20,180, 82, 89, 10,109, 73, 89,131, 15,180, 99,113, 31,190,120,217,226,105,247, 21, 37, 48,237,189,193,122,201,132,220,
-231, 27, 90,216,183,172, 58, 52, 11, 98, 37, 40,182,149, 41, 9,140,210,225,202, 12,167,155,149,105,150,162,177,158,154,222,143,
-101, 55,180,158,109,129,120, 91, 92, 38,241, 1,118, 84,165,108,197,201, 83,133, 67,218, 59,194,177, 84,117, 3,105,238, 58,130,
-145, 22,145,102,215, 42, 78,168,190, 54,130,167, 53,198, 99,180,128,239,129, 65,155, 33,153, 40, 74, 41,207, 76, 66, 18,163,204,
- 18,106,169,105,103,136, 44,113,146,169, 37,205,135,152, 11, 55, 64, 21,137,251, 98,218, 65, 1,129, 26,156,119,103,137,223, 65,
- 12,230,155,192,222, 23,241, 67,129,120,142,163, 57,207,166,202,105,115, 92,243, 34,120, 80,201, 36, 83,210, 71, 89, 57,203, 94,
- 45, 47, 81, 37, 18,146,173, 69, 62,179, 89,161,231,164,145, 39, 16,209, 79, 40,202,229,206,203, 50, 92,167,210,208,107, 18,249,
- 17,239,226, 44,119,234, 17,224,182,163,206,183, 36, 8,104, 87,141, 37, 68, 5, 37,149,169, 33,190,156,196,116, 73, 21, 52,233,
- 79,123,195,137,167, 34,158,186,130, 89,101,234,213, 77, 81,234, 87, 35, 64,168, 41,152,136,167, 35, 45,198,233,144,132,186,180,
-161,158,159,161, 42, 57,214,118,211,109, 82,144, 99,162, 60,122,107, 81,146,184,210, 98, 6,209, 25, 12,173,165,168, 41,185, 13,
-180,145,149,165,224,224, 89, 57, 61,193, 61, 53,141, 63,114, 33,233, 11, 85, 22, 2,170, 6, 42, 84,212,185, 46,120, 80,168,201,
-117, 77,148,182, 88,156,160,181, 73,125, 4,163, 41,105, 11, 32, 40,146,226, 20, 64,212,177, 40,249,104,218,136, 93, 29, 1,247,
-238, 71,235, 92,237,232, 58, 18, 54,181,252,231,165,168, 98,130, 44,186,134,201, 24, 5,166,121, 54, 99,112, 87, 94,233, 10,130,
-202,186, 81,249,136, 78,144,193,201, 44, 84,122, 5, 38, 28, 86,234,113,156,144,169,205,161,212, 57, 82,170,201, 76,201, 45, 60,
-163,153,137,113,197,182,159,113,143,202,130, 20,219, 0, 33, 33, 33, 36,173, 0,232, 37,215, 92,148,250,153,181,195,113, 24,204,
- 83,252, 40,144,178,220,218,116,212, 96,205, 77,188,203,169,196,146,181,168, 6,221,112, 41,150,139,220,205,165, 69, 32,139, 44,
-136,107,113,106,122,179, 49,215,100, 48,241,113, 20,248,234,113,186,107, 6, 70, 20,166,155,136, 28,230,125, 10, 89, 0,151, 66,
-148,164,164,149, 30,184, 24,253,199,122, 66,165, 47,234,152,208, 81, 88,170, 60,133,169,134,151, 37, 17, 89,142,182,144,160,195,
-138,116, 16,184,175,115,146, 26,228, 35,152, 2,144, 10, 70,182, 97, 64, 14,163,229,113,223,173,246,245,220,141,236, 46,119,233,
-208,144,112,239, 75,150, 79, 93, 50,162,150,205,103,109, 68,106,254,230, 52,186,181,201,144,170,200,168, 55, 28,194,177, 0, 89,
- 74, 58, 49,195,130,197, 46,151, 71,143, 89,156,136, 50, 16,226,147,239, 45,220,146,230, 75, 91,181, 22,228,134, 85, 46, 53, 65,
- 42,116,169,215, 27, 81,116, 21,143,136, 56,176, 83,223, 69,209,101,194,118,104,120,212,188,105, 41,116,182,242, 25, 83,206,149,
- 54,218,214,160,181,186,242,194,131,168,108,182, 83,205,250,200,108, 3,147,240,233,134,126, 83,142,181, 21,235,160,213, 20,137,
-105,109,136,245, 1, 33,149, 69,131, 86, 73, 74,228,162, 18,225, 47,194, 98, 66,176,143,133,208, 29, 73, 36,133, 44,128, 52,237,
- 91, 17,157, 91,145, 84,244,169,143,180,227, 68, 21, 75,109,133,243, 33,111,129, 20, 74,114, 56,241, 39,182, 84,174, 82, 70, 20,
-165,173, 69, 57,239,167,120,101, 42,241,198, 6,146, 55,181,138,219,126,164, 14,187, 16, 5,245, 16, 5,201, 45,115,133, 51, 76,
-165,169, 40,229,154,170,189,170,102,150,227, 88, 37,145,130, 42,169, 88,221,140,154,183, 83,169, 71, 40, 43,236,138, 6,155,195,
-227,233,107,174,155, 39,136,190, 10, 30, 97,107,118,164, 56,127,220, 70,158,146,160, 16,217,132,155,246,143,200,210,154, 35,155,
-222, 4,191,120, 37, 71, 9, 82, 86, 10, 64,235,168,152,132,228, 28,164,164, 19,215,231,143, 77, 73,155,233, 79, 95,204, 87,248,
-240,217,189,185, 66,217,147, 47,105,120,111,164,154,148,182,157, 83,138,126, 70,226,221,245,186,220, 86,150,133,146, 80,148, 83,
-104,144,212,158,249, 18,186,147,129,168,234,237,246,223,222, 27,165,119,219,150, 21,133,110, 86,174,219,186,237,172, 68,160, 91,
-118,213,189, 79,122,169, 91,174, 86, 39, 44, 34, 53, 58,153, 1,128, 75,239, 43,226, 82,212, 74, 91,101,180, 45,231,150,219, 72,
- 90,211, 98,229, 79,202,203,150, 89, 92, 34,171, 76, 88,147,176, 28,199, 55,185,216, 11,111,185,252, 49,198, 60, 76,139,250,126,
-189, 32, 28,197,102,132, 46,145,114,196,195, 16, 0, 0, 1, 44, 73,181,128, 4,182,214, 7,108, 96,193, 42, 89, 72, 66,114, 71,
-100,165, 36,149, 99,176, 0,119, 58,237,167,177,211,217,215, 3,138,221,197,169,239, 54,241,210, 85, 43,135, 45,155,171,194, 77,
-122,148,248, 83,108,110,166,227, 37, 13, 84,169, 27, 94,149,140, 21,219,145, 99, 42, 44,251,145, 77,156,169,135,162, 82,185,144,
-185,207, 4,246, 39,129,175,163,187,181, 22, 69, 46,141,184, 92,116,214,164,223, 87,121,101,186,140,141,132,177,171,110,211,108,
- 90, 17, 41, 14, 34,153,125,223, 20,181,162,117,229, 60, 3,201, 42, 45, 53,216, 84,224,161,200,151,229, 4,149, 43,177, 76, 91,
- 27,113,181,244, 24,150, 14,210, 88, 54,166,216,237,189,188,185, 31, 81,216,214, 37, 26, 21, 6,221,166, 25,110,243, 75,144,204,
- 24,141,132,174,107,238,225,201, 18, 29, 43,126, 67,129, 42,121,215, 23,130, 27,243, 44,205,164,167, 43, 26, 24,161, 39,118, 99,
-165,220,118, 10,191,105, 84,157,152,182,150,181,202,117, 86, 19,158, 18,240,238,182,106,218, 90,236,242, 5,138,150, 59, 56,166,
- 62,103,145,133,180, 9, 71,217, 84,185, 12,200, 75, 22,182,135, 80, 11, 12,100, 74,154,169,242,176,132, 54,203,109, 54,195, 44,
- 71,140,203, 81,226, 70,137, 29,164,179, 10, 4, 72,236,165, 45,195,134,212,102, 91, 75,109,182,148,182,219, 76,161, 8, 74, 80,
- 18,144,232, 90,112, 2,249, 93,117, 25, 66,146,209, 71, 66, 22,162,163,134,241,211,245,150,177,159,152, 58,106,104,113, 92, 82,
-188, 39, 22, 57,159,117,107,144,172,114,134,208,144, 20,235, 77,249,242, 37, 62, 27, 96,249,156,159,144,217, 59, 62,158, 23, 33,
-162,160,146, 26, 67, 60,168,236,129, 33,209,134,130,134, 48, 2, 26, 35, 31, 51,211, 77,180, 46,116, 52,199,224, 54,176, 30,128,
- 14,214, 29,134,219,219, 98, 14, 47,113, 78, 21, 72, 3, 87,123,254,238,135,222,126,240, 59, 91, 14,157, 22,158, 26,105,164,172,
- 5,168, 4,243,159,213,231,121,125,145,208, 99, 30, 93, 60,129,211,139, 26, 35,109, 54, 49,133, 17,220, 16, 79, 83,232, 60,250,
-246, 31,187, 86,138,100, 68,165, 73, 8,229, 81,142, 64, 42, 86,112,183, 22,144, 21,130, 15, 85, 36, 19,242, 28,218,203,218, 78,
- 49,240,169, 41, 70, 66, 74,122,165, 68,142,170,207,160, 57, 72,251,254, 88,216, 14, 90,230,251, 15,244,249,254,125, 48,211, 87,
-166, 54,210, 5,205,133,251,123,192,239,235,247, 3,211, 99,142, 83,123,105,234,144, 40, 62,204, 78, 45,213, 56,172, 10,158,223,
-193,161, 68,109,166,214,234,222,168,213,110,106, 44,120, 49,210,219,105,230, 42, 83,161,103,253,144,131,228, 53,249,148, 74,163,
- 86, 33,178, 31,157, 73,168, 68, 97, 73, 37, 15, 75,136,244,102,150,130,114, 10, 29,117,176,149,119,242, 39, 7,166,117,250,228,
-239, 21, 54,139,113, 81,162, 91, 21,234, 77, 58,187, 2,167, 53,185, 83, 41, 53,168, 81, 42,144, 36, 71,167, 16,227,102, 68, 9,
-141, 45,167,146, 37,173,178,146,164,171, 5, 25,232, 70,154, 39,182,131,105, 43,148,145, 68,173,237, 86,217, 86,168,230, 58,226,
-138, 93, 86,195,181,102,211,147, 24,131,204,194, 99,191, 75, 41,109,188, 19,219,175, 94,132, 30,186,205, 29,108,244,181, 21, 13,
- 12,113,200,178,104, 7, 83, 48, 55, 91,237,178,176,177,213,114,119, 55,218,198,215,196, 43,137,120, 6,163,136,230,167,205,151,
- 49, 90, 53, 72, 22, 32,134, 2,250,180,203, 43,106, 45,205, 75, 41, 46, 64,178,159,179,125,239,183,228,250,227,101, 60,188,224,
-140,142,128,244,207,144,199,168,198, 48,126,122, 21,192, 0, 3,155, 35, 57,233,215,215,166,191, 65, 78, 47,125,129,220, 19,241,
- 21, 2,167, 90,218,170, 35,252, 48,110, 99,233,144,252, 74,205,131, 29,202,134,222,212,103,172, 18,132, 92, 59,119, 53,242,134,
- 99, 45,220,115, 59, 76,122, 43,169, 25, 41,109, 88,229, 48,230,227,131,217,183,196,255, 0, 1,119, 35,112,119,146,205, 19,108,
- 74,180,247, 33,217,251,193,104,151,171, 59,105,118,144,165,248, 44, 49, 88, 13, 5,219,245,162,132,229, 84,234,138, 35,202, 73,
-200,108, 58,145,204,100,244,217,164, 82,178,199, 50, 26,105, 9, 0, 92,221, 24,250, 43,250,158,193,130,177,236,164, 11,226,164,
-206,184, 91, 56,200, 65,146,174, 1, 45, 32,219,159, 17, 47, 24,222,195, 93,194,188,123,216, 93,212, 33, 36, 42,187, 28,115,229,
-210,158,163,169, 24, 62, 96,119,253,255, 0,215,160,212, 66,187,167, 24,232, 58,249,116,198, 49,219,174,141,117, 3,152,133,229,
- 39, 56, 41,199, 80,122,227, 65,120, 97,165,169, 73,201, 43,238, 14, 79, 41,235,146, 61, 52,244, 14,192, 1,182, 35,160, 31, 92,
- 14,231, 32, 73, 74,186,231,203, 24,251,137,244,208,101, 3,148, 32, 40,165, 57,236, 60,201,209,133, 63, 26,186,168,231,201, 71,
-225, 29,187,121, 13, 81, 86, 50,122, 16,115,246, 12,124,177,163,142,222,236,103, 3, 40, 3,211, 29,186, 30,189,241,215, 57,208,
-203, 24, 36, 15, 67,140,252,199,207,203, 69, 47,208,103,166,115,229,147,129,215, 62,186, 25, 64,244,230, 29,124,143,175,113,215,
-212,233, 85,189,129,245,235,243,240,198, 69,172,126,125, 48, 42,129,193, 30,127,147,161, 85,246,156, 17,215,204, 2, 8,199,217,
-162,148, 58,146, 20,122,103,207,167,159, 83,161, 92, 42,235,233,230, 71,159, 95,232,210,139,215,173,176,170,143, 95,157,176, 50,
-206, 15, 76, 31, 80, 71,224,126,220,104, 85,168,227, 28,189,125, 61,126,206,154, 37,100,103, 3,200,156,244,243,249,232,117,227,
- 57,235,233,242,251,180,182, 50,126, 54, 56, 25, 99,175,159, 81,231,229,242,210,215,178,172,119,200,244,198, 14,127, 31, 61, 45,
- 40, 47, 97,229,191,200,255, 0, 79,155,224,126, 56,162,144, 64, 30,191,143,158,170,163, 62,125,137,232,115,220,250,106,159,236,
-213, 69, 35,156,131,204, 71,166, 63, 63,156,233, 54,219,160,220, 99, 35,227,108, 20,131,208, 14,228,121, 99,231,251,116, 80, 56,
- 35,184,249,250,104, 22, 57,146, 8, 81,234, 59, 31, 80, 60,243,247,232,209,216,117,207,207, 68,223, 77,200,244,254, 88, 24, 45,
- 24,207, 92,231,203, 69, 35,207,183,239,208,173,124,207, 92,126,127,118,138, 64,232, 79,221,249,252,249,105, 44, 16,142,190,251,
- 15,145,130, 80, 58,103,215,250,244, 66, 49,140,129,215,212,247,207,245,106,146, 48, 57, 79,150, 7,252,116, 64,193,232, 49,223,
- 31, 97,210, 44, 79, 91,236,127,211,253, 48,153,183, 97,138,128, 40, 5,103,208,224,119,235,169,123,123, 41,104,112,173, 78, 2,
-173,121, 73,134,167,220,191,111,139,158,183, 80,116, 97, 14, 1, 26, 65,131, 29, 41,199,146, 91,142, 0, 58,136,106, 65,193, 4,
-140,224,156,227,211,175, 77, 75,111,217,163,113,199,172,240, 9,183,233,105,231,146,187, 86,241,187, 45,249,133,131,143, 9,213,
- 78,114, 75, 97,196,121, 2,219,168, 32,158,224,244,213,121,226, 65,147,244, 28, 33, 13,148,206,186,191,254, 57, 45,142,131,250,
- 49, 71, 12,158, 42,209,137,118,101,162,169, 41,214,225,249,148,226,226,196, 27,233, 45,211,181,251, 99,118,128, 83,114,214,210,
-153,146,220,116,144,235,125, 10,212,129,205,144, 20,161,156,249,105,224,180,100,161, 50, 35, 25,130, 74, 80, 57, 85,206, 20,176,
- 26,230,198, 22,164, 30,253,198,153, 40,181, 49,238,232, 92,122,195, 47, 73, 82,210,211, 81,100, 39,149,110,184,178, 82,218, 1,
- 61,252,180,248,219,242,107, 80,222,162, 71,155, 77, 98,169, 61,192,124,102, 35, 56,130, 91,108,254,170, 94, 72,254,110, 58,245,
-215, 54,213, 70,193,217,152,217,148,130,111,182,219,117,233,112,127, 28,123, 9,151,215,172, 84,113,194,236,164,181,215,237,232,
-114,116,222,246,144, 11,142,228,222,194,248,216, 58, 84,210,135, 89,145,227, 49, 81,108,184, 26, 12,189,132,132,180,123, 21,146,
- 58,249,103, 78, 29, 49,216,145,157, 46,202,141, 0, 50,165, 99,153,162,151, 0, 10,255, 0, 80, 14,216,207, 93, 55, 22,253, 58,
-116,249, 14,180,186, 68,194,162,227,110, 41, 40,100, 22,154, 72,236,208, 41,238, 63,167, 78,237, 50,222,105,197, 50,210,160,203,
- 5, 43,248,209,238,139, 82, 16,172,254,170, 84, 6, 15, 64,123,246,209, 97,137,100, 58,121,100, 21, 38,219,129,125,253,251,159,
-203,124, 66, 51,202,138, 53, 13,169,202,221,119, 10,203,112,189, 71,216, 96, 1, 27,139,233,177,239,124, 60, 54,123, 86,252,196,
-161, 45,162, 50,155,229, 7,170, 74, 10,129,238, 6, 71,112,116,252,211,104,240,209, 29, 41,140,174, 68, 20,228, 53,207,204,217,
- 24,234, 19,232,174,250,105,109, 74, 83,112,209, 24, 57, 24, 70, 14, 44, 8,200,152, 24,136,167,206,112,124, 36,200, 90, 75,189,
- 71,243,115,233,167,174,148,195,204, 73,247,101,182,182, 20,172, 18,219,237, 41, 33, 67,200,161, 67,203,168,237,167,136,114,230,
-101,187, 11,252, 13,192,191, 66,125,255, 0,150, 57,147,139,234,195, 84,202, 96,169,114,138, 75, 0,206, 26,224,108, 77,134,219,
-119, 54,216,237,113,131,109,233, 2,149, 48,165, 68,165, 30, 38, 65, 7,177,206, 58, 19,172, 11,142,250,104,187,248, 72,189,156,
-100,243,201,160,212,173,234,211, 33, 37, 75, 0, 55, 52,196,120,156,116, 8,228,153,212,158,131, 26,214,142, 52, 56,200,162,240,
-178,104,182,149, 18,205,170,110, 30,239, 93,144, 68,251,106,214,167,179, 37,200,145,162, 56,240,138,204,250,159,186, 52,167, 29,
- 74,229, 97, 13,180,210, 74,150, 65,201, 72, 25,215, 24,110,255, 0,109,214,236, 89,181,169,123, 63,196,206,212,209,225,216,219,
-139, 33, 54,133,121,152,140,200,163, 86,236,207,172, 95, 67, 44,213, 92, 50, 29, 90, 28,247, 39,220,142,243,241,228,161, 37,109,
- 48,160, 22,133, 16,160,237,150,210, 77, 74, 30, 57, 24, 4,148, 29, 42, 55,123,122,233, 0,155, 3,252,176,190, 77,224,151, 30,
-113,173, 21, 7, 27,228,116, 52,241,195,151,149,172,136, 84,213,193, 77, 53, 92, 16, 72,162, 73, 41,163,149,129,100, 44, 12,107,
- 36,134, 56,222, 75, 34,185, 39, 28,240,171, 81, 92, 18,235, 15,189, 50, 83, 15,182,251,205,242,193, 1,135, 11,172,188,227,129,
-215, 90,116, 41, 15,167,152, 55,128,160,127, 87,190,113,171,197,186,251, 84,199, 27,110,231, 91, 11, 8,109,105,102,164,211,204,
-152, 75, 4,120,205, 50,166, 93, 67,142, 51, 33,194, 84,147,146,190, 85, 0, 82,178, 59,103,187,207, 96, 84,168,155,135, 92,164,
-148,251,168,139, 80,118, 74,101, 49,206,195,115, 26, 83,165,196,200, 97,164,164,165, 44,172,160, 41, 39, 56, 83,110, 36,144, 0,
-213, 45,183,165,251,180,225, 57,214, 41,211,231, 46, 59,134, 32,155, 57,137, 75, 47, 56,165, 48,251,207, 7, 20,216, 97,211,207,
- 28, 22,210,121,212,147,204,148,242,228,105,122,137, 21, 98, 46,198,247, 22, 0, 1,112,118, 0, 3,218,222,150,216,220,157,247,
-199, 91,101, 89,173, 61, 78, 87, 77, 84, 36, 38, 42,136, 21,215, 65,180,182, 96, 28, 89,154,203,123,157,181, 30,246, 5,126,214,
- 30, 11, 94,207,114,229,117,201,237, 69,164,202,120,197,143, 54, 85, 82,157, 37,183,147, 22, 59,235,108, 65,134,165, 70,194,224,
- 61,226, 33, 45,144,231, 55, 47,196,226,209,149,116,219,107, 39,110,107,207,161,154, 43, 53, 69,192,105,220, 59, 45, 51,224, 51,
- 86, 64,151,226,135,152,104,200, 64, 67,211, 90, 7, 24, 74, 94, 41,111, 9,230, 0,233,156,176,182,201, 77,169, 18,170,137,115,
-223, 42,193,152,112, 99, 91,243,158,143, 35,199, 74,144,226, 36, 74,147, 13,192,137,144, 80,224, 4,151, 2,137, 82,194, 64, 37,
- 56, 27,217,102, 90,215,133, 41, 49, 27,133, 84, 98,165, 57,224,159,142,189, 5,146, 26,113, 35,153,236,152,138,109, 46,169, 69,
- 25, 87,137,133,140,117, 36, 18, 53, 10,175,145,203, 5,138, 80,109,208, 48, 59, 17, 96, 8,190,160,123,246, 0,108, 20, 27, 91,
- 12, 57,247, 17, 10,106,116,134,130,190,154, 78, 89, 80,156,196, 87, 1,193, 91, 30, 97, 18,163,152,205,238,197, 65, 6,218, 88,
- 22,108, 90,237,237,189,152,234,185, 95,164, 89,245,210,228,149, 56,245, 82,107, 53, 74,100,246, 35, 52,164,165,243, 25, 77,135,
-115,204,242, 70,121, 29, 74,177,211,148, 96, 43, 79, 29,187, 98, 95,172, 58,106, 17,164, 80, 67, 45, 56, 12, 74,109, 70,100,217,
-240, 85, 24,171,153, 44, 69,113,113, 82,236, 53, 20, 4,149, 21, 41, 69, 5, 39, 41, 86, 6,179,123,118,157, 92,141, 29, 16,156,
-183,161,203,117,169, 45, 41, 85, 8,181, 70, 27,109, 47,173,212,248,236, 71,106, 84, 99,132,175, 36, 36,133,242,100,225, 68, 4,
-141, 58,241, 37,169, 36,181, 81,162,206,163,163,196, 75,109,173,245,177, 34, 3, 69, 39,152,189,239,177, 10,146,225, 89, 79,232,
-208,128, 73,194,129, 72, 61,117,169, 79, 70,103, 39,152, 2,179,118,234, 61,230,215,211,210,196,129, 98, 64, 29,141,241, 79,103,
-220,101,153, 30,114, 70,144, 85, 43, 2, 13,228, 73, 14,130, 64, 58, 33,230, 2,133,252,192,233,140, 21,185, 0,130, 72,108,110,
-143, 14,191, 8,188, 39,209, 80,234, 30, 65,115,252, 6,171, 17,212, 71, 73, 7,149, 40, 68,198,155,113,192, 74, 65, 61,137, 39,
-175,124,235,131,126,216,205,247,152,111,141,190,225,194,146,243,176,233,118,141, 10,155,186,215,228, 17, 33,165,138,133,245,119,
- 54,244,107, 38, 20,208,210,212, 86,213, 50,201, 6, 83, 77, 44,254,130, 77,220,242,193, 10, 9, 34, 68, 98,167, 69,113,239,115,
- 98,162,209,150,227,169,100,164, 50,250, 30,142,153, 10, 67,104, 47,161,113,185,149,250,217,193,234, 7,124,117, 58,132,167,180,
- 11,114,157,191, 56,207,226,110,235, 91,220,193,123,191,119, 82,161,167, 35, 13,210,109, 57,205,218, 52,134, 80,174, 65,250, 54,
-233,246,252,102,210, 48, 48,150,250,247, 58,147, 81,229,101, 16,136,212, 49,107,111,110,151,247,223,215,107,145,238, 29,206, 45,
- 63,161,246, 88,153,247,139,149,156, 79,155,208, 8,233,184, 47, 46,150,174, 32,203, 38,147, 89, 80,241, 82,211,189,164,119, 95,
- 36, 18,213,200,157, 74, 75, 28,114, 11, 50,130, 59,157,236,172,221, 24,215,231, 13, 23, 37,147, 81,118, 25,168,236,189,253, 46,
-152,218, 93,144,151,101, 53,102,223,141,191,116, 91,190, 19,107, 28,209, 97, 71,172, 69,186,152, 65,253, 80,165, 4,167, 7, 26,
-218,107,158,228,161,191, 61,218,125, 49, 94,245, 40,172, 37,210,202,148, 67, 42, 11,229, 81,117,224, 57, 60,114, 15, 92, 2,160,
-149, 14,100,228,234, 49,124, 2,239,229, 79,110, 55,233,155, 77,234,234,233,116, 45,237,130,141,181,173,200,114, 66, 99, 70,106,
-181, 46,104,159, 98, 79,117,194,147,225, 52,221,203, 17,152,171,112, 17,134,171,110,142, 96, 9,204,138,108,186, 50,226,248, 65,
-230, 94, 18,210,234,138,218,116, 40, 56,144,201,253, 42,228, 2,144, 82,232,125, 39,155,155,185, 24,199,163, 70,113, 75, 61, 53,
- 66,211, 24,192,102, 80,250,173,177, 4,158,128,236,109,107, 27,244,244, 55,216,120,245,195,212, 92, 51,226,119, 20,241, 60, 83,
- 51,208,241, 68,223,164, 41, 96, 4,170, 44,179, 42,251,111, 53,134,197,189,176, 77, 41,141,108,170,146,160, 98, 5,181, 97, 28,
- 75,220,181, 26, 38,200,211,104,247, 69, 74,235,183,182,170,177,190,251, 65, 11,117,110,107, 14,159, 10,179,117, 91,182, 75,207,
-220, 78,183, 82,133, 14,168, 4, 79,171,216,186,153,183, 21, 41, 82,210, 98, 36, 41, 9,115, 46,170, 58, 78,196,185,236,244,224,
-218,187,107, 59,115,220,156, 71,239,126,228,237,173, 2,138,187,170,107, 84,230, 45, 75, 86, 5,193, 65,109,135,229, 52,252, 91,
-142,223,106, 82,213, 70,114, 67,192,198,106, 35, 40,154,243,242, 91,140,151, 91,112,244,112,233,245, 17, 14, 44,120,174, 52,203,
-140, 76,104,179, 45,183, 16,135, 25,122, 52,130,142,120,210,155,117, 36, 60,203,137, 64, 5,181,165, 73, 88, 7, 57,232, 53,131,
-111, 20,122,181,183,183, 23,101,181,105,248, 52,138, 5, 74, 76, 74,251,148,250,116, 97, 1, 16,222,167, 60,106, 47, 70,165, 53,
- 21, 77,181, 6,159, 41,244,182,244,150, 67,100, 56,236,116,184, 10, 10,220, 42, 89, 95, 56,135, 46,142, 10, 39,138, 88, 81,180,
-202, 38, 14, 74,164,134,226, 72,138, 50,168,146, 61,200, 73, 86, 72,223,161, 85,177,213, 91,112,255, 0,139,220, 97, 77, 6, 89,
-195,156, 53,196, 21, 60, 22,207,152, 77, 60,242,208,138, 52, 21, 75, 82,148,144,150,121, 38,162,154,174,158,178, 4,129,185,117,
- 52,245, 41,169, 36, 80, 81, 94, 4,118, 96,232,187,243,188, 52, 58, 53,183, 22,179,113, 84,169, 53,196, 81,160,251,245, 41,201,
- 62,244,245, 37, 30, 24, 17,105,181, 9, 10,121,208,245, 77,152, 9,140,153, 37,110, 58,225,146,151,148,235,139,112, 41,106,217,
-189,151,227, 46,253,131,118,219,180,250,252,122,125,201, 79,118,165, 17,114,150,164, 24,178,216,166,197,117, 15,212, 36, 41,109,
-252, 46,145, 13,149,146, 84,156, 16,146,163,211, 58,229, 18,107,239, 62,242,147, 37,199, 31, 91,206,242,186,241,117,192,165, 58,
-115,211, 39,155,149,210,121, 78, 15,117, 43,161,198,175,245,237,208,133,180,123, 77,185, 27,181, 83,195,175,211, 41, 12,109,245,
-155, 17,197,165, 15, 85, 55, 47,117, 95, 93,149,109, 82, 48,149,164,169,198,162, 73,174, 84, 86, 89,234,134,109,247, 20,190, 92,
-115, 20, 34,161,174,138,166, 35, 73, 52,177, 73, 35, 11, 42,177, 35,177,251, 38,224,129,110,227,176,216, 3,139, 63, 49,225,124,
-159, 58,137,168,171, 50,122, 67, 83,155,200,176,199,104,150, 37, 89,170,228, 17, 68, 21,129,214,136, 36,145, 64, 37,137, 84, 80,
- 88,147,124,113, 55,116,247, 70, 69,253,187,251,165,124,248,206, 6,183, 3,113, 47,219,205,230,124,103, 29,108, 53,115, 87, 43,
- 21, 40,234, 47,172,146,232, 75, 18, 90, 9, 39, 39, 13, 39, 9,232, 14,172, 14,214,153,120, 48,183, 78, 92,152, 57,157, 10, 37,
- 43,109,167, 26, 13,184,150,207, 80,131,206,176,172, 30,169, 9, 5, 24, 32,105,155,145, 77,159, 79,177, 55,214,248,122, 99,102,
- 14,214,238, 37, 54,195,167, 33,244, 45,181,207,144,221, 5,213,204, 44, 21, 16,151,138, 88,241,164,244, 32,167,198, 64, 82, 64,
- 41,200, 53, 27,141, 40,118,147, 76, 15, 45,169, 62, 12, 25,243, 2, 86, 20,234, 16,197, 62, 19, 65,165,164,117,229,247,167,138,
- 73, 61, 22,177,202, 7, 66, 69,171, 7, 12,211, 48,141, 68, 97,196, 42, 34,118,176,243,125, 68, 82, 27,237,230, 26,101, 64, 77,
-183, 59, 94,221,125, 38,200,188, 76,203,114,202, 54,165,142, 67, 20,116, 65, 22, 8,217,183, 68, 90,250,204,182, 21, 7,236,171,
- 60,153,116,228, 2, 70,148, 58,202,134,186, 15,209, 95,217,213,187,149,126, 36, 56, 44,216,253,206,187,174, 26,157,110,227,126,
-218,126,193,186,149,240,199, 84,155,163,109, 39,191,101, 84, 39,204,125,144, 23, 80,149, 50,149, 75,163, 76,121,231, 85,202,227,
-245, 23,148, 15, 58,213,173,192,169,181, 57,184,233, 69, 62, 75, 17,217,117,148, 54, 25,157, 8, 41, 77,184, 20, 57, 18, 85, 21,
-196, 40, 55,148, 36,167, 33,106,235,158,185, 26,226,103,176,146,232,171, 73,224,105,202, 90,107, 52,248, 49, 97,111,182,232,183,
- 25,185,145,221,148,239,233,169,118, 36,151, 91, 74,223,144,136,236, 44, 74, 46, 41, 40,108,169, 68,173,101, 73,230, 86,187, 41,
- 49,154,218,209,205, 42,173, 52, 52,180,165, 74, 68, 70, 98, 69,116,182, 9, 42, 83, 15,150, 84, 82,172,173, 43,228, 0,100, 3,
-231,140,166,170, 86,154, 21,107,179,160, 10, 88,238,110,160,139,147,114, 77,254, 59,238,122,227,195,207, 25,248,114,151,135,188,
-100,241, 27, 44,203,158, 10, 60,158,155, 59,204, 26,142,156, 69,166, 56,105,158,169,228,130, 24,163, 88,121, 65, 97,137,146, 53,
- 32,147,100, 5,141,201,182, 5, 94, 69,230, 10, 94,145, 46,158,251, 79, 45,104,148,212, 6, 23, 14, 74,219,229, 12, 45,182, 36,
- 58,225, 37,149, 97, 25,231, 83,121, 7,151,152,115,103, 88,171,145,168,116,244,134, 97,194,115,222,240,219,142,210,234,106,145,
- 26, 99, 65,211,209,246,222,146, 74,159,116, 16, 64, 41,113, 93,130, 80,224, 61, 53,146,220, 18, 42,169, 71,189, 65,175, 23,224,
- 43,196,110,100,138,180, 52, 73,141, 20,132,150,219,121,201, 49,146,211,140, 32,184, 66, 20, 84, 8, 65, 74, 73,198,117,138, 87,
- 28,148,234,162, 34,187, 74,117,192,134,195,141, 85,221,124,204,165, 74, 66, 64, 8,106, 33,105, 1,113,212,225, 81, 86, 31, 66,
- 49,205,221, 67, 11,214,189,142,171, 48,185,237,109,186,218,221,251, 94,219,220,117, 0,118,198,190, 89,205,228, 83,161,104,226,
-136,234,212,180,224,194,199, 64, 4, 7,140,136,249,140,128,157,144,137, 21, 72,107,233, 54, 57, 45, 21,111, 50,239,128,212,167,
-155,106, 99,237, 53, 50, 5, 82, 58,170,112,130, 22,133,248,114,226,201, 82, 20, 84,194, 84,162, 75, 79,133, 20,150,202,144,180,
-144, 70,158,219, 70,151, 29,231,155,118, 60,104,204, 22, 63,193,222,142,151, 20,169, 10,146,203,194, 58,208,195,190, 63,232,220,
- 83,255, 0, 26, 27, 64, 12,165, 9, 10,230, 9, 32,105,148,162, 91,141, 33,248, 83, 89,126, 99, 48,230,182, 20,180,198,150,244,
-129, 79,113, 60,188,170,101,153,170,115,222, 32,173, 37, 93,149,240, 99,149,124,169, 9, 89,109,184,249,226, 98, 31, 5,220, 21,
-239,191, 17, 15,200,136,155,150,213,178,166,210,246,246, 59, 73,141, 4, 86, 55, 54,239,228,181,236, 42, 83, 8, 90,185, 31,124,
-220, 21, 40,178,202, 18,149,144,213, 45,220,101, 41, 86,157,232,209,181,169, 10,100,111, 40, 23, 59,177, 54,181,129, 23, 4,146,
- 58, 1,212,220, 92, 98, 11,198,117,212,212,212,243, 58,213, 20, 77, 12,210, 54,146, 52,132, 30,109, 96, 29,244,170,155,187, 57,
- 42, 0, 96,197, 77,204, 4,253,172,219,203, 47,139, 95,105,175, 18,183,101,176,204,138,245, 61,141,200,141,179, 22, 18, 41, 9,
- 93, 86, 93,102,147,182,162, 46,222,210,152,166, 51, 24, 19, 62,108,219,142, 29, 80,176,134,211,151, 87, 57, 0, 2, 78, 76,168,
-189,147, 30,205, 59,119,129,141,189,137,185,219,145, 71,167,212,120,177,191,168, 72,110,225,150,239,131, 57,157,155,182, 42,104,
-109,241,183, 54,188,132,130,150,171,238,183,225,154,253, 69,162, 22,251,224,192,105, 98, 36,114, 29,230,127,176,159,128, 53, 76,
-144,190, 60,247,198,152,229, 94,166,106,149, 39, 54, 34, 21,106, 58, 84, 43, 87,116,135,159, 77,209,188,211,162, 60,140, 58,227,
- 18,159,150,197, 29,103, 9, 19, 37, 74,154,140,150,153, 34, 80,232,121,231, 86, 94,194,151,206, 84,165,229, 89, 83,132,156,149,
-100,255, 0, 59,169,238,117, 52,214,174,144,192, 15,246,106, 75, 42,129,210, 73, 19,102,115,254, 20, 96,116, 95,171,221,172, 52,
-163, 53, 11,192,252, 48,106,170,102,226,204,206, 29, 53, 57,147,188,180,145, 48,254,234, 41, 9,101,148,237, 96,238,166,209,126,
-196, 86, 97,188,158, 91,213,199, 90, 49,104, 79,128,238, 30,144,121, 9, 61,192,192,201, 10,245,242,251,181,174, 71,196,148,241,
-192, 74,219,247,143, 25,101,101, 88, 83,109,158,100, 32,143,231,159, 20,183,140,231,245,116,231,222,179, 3,236,178,194, 18,160,
-158, 67,240,159,214,231, 63, 8,200,245,230, 7,246,107, 16,183,233,171,125,220,148, 41, 94, 26,193, 82, 72, 56, 30, 24, 42, 25,
- 7,182, 93, 82,127,254,159,144,211, 69, 97,106,138,152,227, 83,176,254, 38,222,238,150,252, 15, 81,139, 78, 53, 68, 46, 72,176,
- 83,107,124, 58,253,247,191,243,198,113,108,211, 19,227,169,194,215, 63,134,203, 99, 5, 93, 27,101,146, 22,246, 14, 62, 37, 45,
-242, 7,255, 0, 71, 91, 55,104, 83,196, 88,200, 91,141, 21, 62,226,125,225,196,142,201,144,233, 1,182,178,161,208, 1,200, 7,
-158, 18,112, 52,218,218, 20, 34, 11, 72, 82, 48,167, 29, 66, 86,162, 9, 37,168,227,198,115, 36,249,169,100, 15,158,126,122,216,
- 74, 93, 56,165,176,160, 48, 80,160,230, 79, 96,234,193,228, 24,207, 80,150,250,245,243, 58,216,145,194,132,133, 59,122,123,247,
-233,252, 61, 58,123,176,171,188,113,197,169,205,134,223,126,214, 23,251,250,216,250, 19,223, 23,184, 45, 45, 45,164,250,130,146,
- 81,130,165, 58, 79,198,161,205,211,205, 71, 39, 29,135,217,171,242, 82,161,202,146, 14, 66, 64, 79, 92, 18,112, 18,132, 16, 7,
- 82, 71,151,110,167,174, 79, 64,225, 49,204, 6, 74,148, 8,194, 60,151,142,203, 80, 0,244,206, 50, 62, 95,110,173, 87,197, 93,
- 84, 74, 17, 76,101,242,212,170,171, 93, 62,154, 51,254, 77,126, 25, 50,166, 56,148,245, 8,102, 57, 81, 78, 59,184,180, 13, 2,
-252,184,139,157,194,142,158,167,111,226,127,215, 17,237, 18, 87, 87, 69, 75, 8, 13, 45, 67,233, 30,130,251,146,127,194,160, 22,
-111, 64, 9,233,134, 94,191, 60,214,174, 57,178,155, 80, 92, 88,138,250,178, 34,146, 73, 75,205,197, 89,247,133,181,215,245, 87,
- 40,172, 41, 93,185, 91, 30, 93,117,113,101,178,148, 36, 20,167, 60,185, 33, 32,115,124,125,242,123, 32, 17,235,228, 58,103, 58,
- 6,155, 5, 49,217, 1, 3, 41, 72, 72, 43, 80,202,251,124, 13,167, 57,231,230, 87,116,142,188,202,202,181,122,119,157,164,242,
-182,128, 48,114, 74,210, 29, 82,148,174,231,149, 4, 14,112,122, 96,156, 36, 12,232, 82,130, 20, 22,181,207, 83,241,235,252,127,
-134, 38,117,241,198,136,144, 66, 60,145, 40, 65,126,182, 80, 5,205,187,158,167,191,125,177,107,145,209, 56, 56, 42,192, 31, 7,
- 50,136, 81, 39,245,114, 6,113,145,215,212,143, 62,186,109,183, 18,195,178,183, 58,203,185,118,235,114, 45, 74, 13,245, 98, 93,
-244,185, 20,123,178,204,185,224,179, 84,161,215, 41,210,208, 90, 83, 50,227,188,143,209,202, 66, 15, 51, 50, 26, 45,202,140,234,
- 80,244,119, 91, 90, 65, 46, 20,133,132,149, 18,121, 66, 82,146,158,167,227, 3, 9, 11,231,233,205,133, 28,116,233,240,231,231,
-171, 4,167,130,146, 70,115,130, 7, 41,230, 1,190, 97,133,140,168,119,230, 25, 87, 47,167, 66,115,128,228,164, 50,233, 32, 21,
- 35,161, 23, 7,226, 15, 81,234, 45,238,196, 78,170, 0,218,129, 93, 72,247, 12, 8, 22, 32,141,193, 7, 98, 10,220, 16,110, 45,
-112,118,216,254,127, 62,215,111,101, 5,107,129, 75,173,157,208,218,223,173, 46,126, 22, 47,170,217,166,219, 21, 73,139,114,161,
- 95,218,219,154, 98, 29,148,206,220,223, 83, 66, 63,194, 24, 91, 77,191,245, 45, 81, 88, 76,246, 99,150, 29,196,198,148, 28,226,
- 11,202,192,207,250,185,206, 65,252, 7,207,183,227,175,213, 99,121,118,187,111,119,183,109,239,125,163,221, 75,114, 53,215,183,
- 27,137, 66,147,110, 93,212, 9, 73, 66,132,168, 18, 70, 89,155, 1,197, 28,211,235,208,230, 33,137,116,249, 72, 41, 92,105,113,
-154, 90, 84, 7, 50, 85,249,178,113,225,194, 13,235,193, 55, 17,215,238,197, 93,238,191, 80,167, 82,159, 69,111,111,238,242,201,
-110, 45,251,182,117,197,186,245,165,117,196,233,203,239, 75,138,218,226,212, 26, 24, 84,122,141, 58, 75, 74, 74, 64, 71, 51,238,
- 85, 86,192,138, 57,152,176,223,150,204,110, 72, 29, 81,137,234,203,216,159, 51, 46,237,118, 86, 99, 65,113,143, 12,174, 75, 50,
-215, 81, 41, 25,101, 83,105, 43,215,145, 46,237,160, 27,127,116,226,230, 50,126,201, 86, 67, 97,203,213,166, 30, 57, 89, 86, 50,
- 57, 63, 91, 35,175,110,154,250,115,156,144,122,249,254,255, 0,158,190,132, 99,161, 63, 14, 7, 46, 51,204,122,121,244,234,117,
-245, 72,229, 29, 50,113,234,114, 6,127,226, 52,254, 46,118,196, 36, 11, 11,116,192,142, 40,231,160, 24, 29,207,175,231,166,135,
- 82,137,238, 64,232,124,241,143,179, 68, 44, 19,211, 24,237,156, 99,160,245, 31,126, 52, 50,128,235,212,121,128, 78, 49,215,207,
-246,105, 68, 59, 91,211, 6,181,253,109,251,240, 59,128, 1,240,171,174,122,121,121,246,207,159,246,104,101,244,200,243, 35,246,
- 1,147,162, 21,140, 28,140,254,113,161,148,112, 8,235,215, 56,237,248,125,154, 85,112,176,189,136, 39, 3,168, 0, 15,145, 62,
- 99,204,143, 35,249,242,208,203,229,235,235,211,242,126,225,162, 87,140,117,249,224,122,159,158,135, 88,233,231,247,118,251,254,
-237, 44, 58,142,248,193,237,183, 67,243,247, 96, 69, 12, 31,183,175,217,165,175,171,198,113,140,126,255, 0,187,241,210,210,202,
- 77,133,197,207,221,131, 99,202,112, 72, 7,242,117, 92, 15, 35,128, 60,190, 67,250,245, 69, 3, 39,236, 25,209, 40,239,246, 15,
-207,219,164,143,175,174, 6, 42,164,124, 64, 14,131,166, 15,207,236,243,242,209, 35,215, 56,198, 62,220,124,191, 62,122,164,143,
- 51,208,255, 0, 72,235,253, 31,213,170,160,100,227, 56,233,145,243,252,254,237, 17,175,109,186,223, 3, 4,160,140,231, 62, 93,
-207, 79, 77, 22,130, 49,143, 63,233,251, 52, 26, 72, 30, 64,143,179,183,217,162, 1, 74,146, 72, 61, 65,252,115,142,159,159, 93,
- 35,140, 48,184,235,108, 20,140, 18, 1,239,158,135,203,239,209,169, 7,166, 14, 79,145,253,186, 1,158,132, 17,149, 14,196, 19,
-140,124,243,251,180,122, 72, 79, 76,145,211,160,233,147,164, 9, 36,220,225, 54, 29,199,206,216, 33, 4,224,142,153, 29, 85,219,
-183,166,164, 73,236,110,220, 31,173,246,111,125,182,170, 68,175, 13,251,106,189, 68,191,169,177,199,196,183, 33, 84,227, 24, 21,
- 2,134,250,229, 41,151, 17, 57, 35, 63,229, 6,117, 29,198,252,179,144,122, 1,230, 79,219,211, 93, 44,246, 85,110,228, 13,175,
-226,214,210,164,215,229, 24,246,198,234,192,168,237,157, 95,227,228,108, 75,174, 32, 59,111,188,224, 39, 4, 38,172,195,104, 4,
-246,247,157, 70,120,186,135,219,242, 26,232,130,234,146, 37,230, 46,215,221, 14,166,255, 0, 32, 97,247,226,198,240,131,136,227,
-225, 95, 18, 56, 87, 54,157,180, 83,123, 64,167,148,237, 97, 29, 72, 48,220,223,107, 43,186, 57,255, 0,166,248,146, 36, 30,101,
-188, 76,200, 92,160,148,190,196,228, 14, 82,218,114, 10, 92, 8,242, 87, 93,108,205,136,136, 94, 60,105,208,170, 83, 26,151, 9,
-191, 29, 82,222, 74,157, 92,231, 64, 7,195, 90, 79, 64,192,244,244, 26,103, 63,131,149,104,117, 26,148, 68,184,195,109, 83,228,
-173,134,209, 44, 2,226,202, 22, 82, 16,178, 79,234,114,242,159,179, 79,213,149, 33,113, 88, 77, 61,112, 27,121,229,248,106,149,
- 58, 39, 41,101,148, 19,213, 63, 32, 79, 66, 62,237,115, 51,211,150,121, 6,155,219,175, 91,109,181,133,253,226,219,123,241,235,
- 75,241, 11, 79, 76,188,137, 11, 48, 93,149, 89,118, 13,107,151, 89, 1,176, 11,212, 3, 98, 79, 75,219, 27, 67,183,181, 74,244,
-214,231, 56,229, 74,158,135, 38, 41, 14, 18,160,166,156, 74, 16,156, 36, 32,118, 65, 62,159,191, 89,190,241,113, 11,110,112,191,
-176,215,206,245, 95, 6, 20,202, 61,145, 74, 92,138,101, 45, 18,130,100, 92,247, 68,212,150, 40,116, 70,185,198, 84, 94,156,164,
-120,132, 3,202,211,110, 40,118,198,137,219,165, 83,139, 76,133, 80, 28, 90,114,210,212,240,109, 10,241, 74, 15, 76,167,253, 94,
-159,126,117,202, 47,164, 21, 92,174, 69,225,135,102, 32,209,169,178,160, 90,181,125,216,152,229,206,180, 71, 8,142,167,224, 81,
- 11,148,102, 36,173,177,132,143, 17,201, 42, 66, 85,208,148,156,117, 26,113,203,168, 3, 58,157, 54,103, 33,125,118, 36, 94,196,
-237,222,227,213,182,195, 70, 89, 79, 69,197, 92, 91,144,112,245,125, 61,168, 43,234, 1,157,252,177,147, 20, 49, 60,207, 26,149,
- 58,245, 75, 28, 77, 18,149, 55, 93, 87, 27,139,227,130,123,191,198,175, 16, 27,247,184, 53, 45,208,191,119, 70,231, 85, 90,163,
- 41,199,233,180,154, 61,106,117, 46,133,107,211, 84,247, 52, 26, 77, 22,153, 17,228, 34, 20,118, 27, 40, 72, 87, 47, 57, 41, 37,
-106, 42, 36,235,167, 28, 15,251,109,119,107, 98,106,116,123, 7,136,169,179,119,107,102, 31,113,136, 72,172, 74, 90,101,223,214,
- 83, 75, 33,180, 78,165,212, 93, 60,213,120,109,143,137,113,159, 82,138,146,217, 13,173, 11,198,163,142,186,235,108,188,164,169,
-213,165,121, 56, 0,143,231, 19,148, 16, 58,242,145,159, 46,186, 6,109,204,220, 84,151,229, 73, 75, 76,165, 69, 13,186,181,124,
- 13,149,252, 65,167, 20,122, 32, 43,175, 41, 61, 51,208, 28,156, 25, 60, 92, 63, 80, 37, 67, 1, 49, 19,208,129,189,141,182,255,
- 0, 21,246,184, 55, 7,184, 56,236,142, 32,151,195,140,255, 0,133,223,133,248,147,134,104, 42, 50, 10, 88,196,113,162,172,112,
-123, 24, 69,210,178, 83, 74,129,100,164,145, 7,247,111, 27, 39, 75, 54,164, 44,167,244, 98,220,125,244,218,109,207,181, 44, 93,
-211,218,219,134,218,187, 42, 87, 53, 36, 51, 69,220, 10, 51, 17,100, 76, 69,191, 35,149,215, 40, 82,159,113, 5,234, 52,228, 57,
-209,198, 86, 27,121,151, 16,161,243, 44, 38,219,240, 59,195,109,247,187, 50,119,219,118,236,200,251,153,118, 75,170, 65,173, 67,
-182,174,118,154,153,103,210,171, 16,188, 32,197, 90, 69, 61,192, 77,102, 97, 83, 13, 41, 94, 54, 91, 36,117, 74,129, 58,135, 95,
- 6,188,107,223,252, 45,110, 43, 52,233, 52,170,149,203, 96,222, 20,101,215, 83,103, 60,250,190,174,187,227,193, 5,199, 38, 91,
-143, 44,148,196,174,178,208,123,149, 72,234,165, 37, 41, 87, 50, 84, 70,166, 95,193, 71, 19,251, 57,196,190,221, 82,183, 35,102,
-111, 8,119, 37, 13,224,211, 21,170, 59,206,165,155,154,207,170,129,201, 34,143,114, 82,138,185,226,186,219,193, 72, 75,184,240,
-221, 9,202, 85,215, 26,134,231,185, 70,123, 75,158, 38,105, 42,145, 71,202, 88,163,146, 50, 90, 29, 18, 16,197, 88, 92,133,119,
-146, 38,219,245,140,108,190,102, 70, 11,198, 92, 75,194, 16,120, 95, 13,105,224,204,246,176, 46,111, 21, 85, 20,213, 74,239, 79,
- 89,200,142, 74,121, 30,138,165, 99, 8,209,242, 82,106, 70, 89, 32,229,195, 52, 53, 48, 77, 24, 84,168, 68, 26,105,237, 7,217,
- 19, 64,220,153,215, 20, 88,210,156,133, 88,145, 38,124, 79,119,101, 69,163, 18,166,128,243,109, 37, 40, 1, 44,161,169, 41,117,
-174,100,245, 74, 25, 74, 0, 3, 3, 90, 51, 69,177,226,173,138, 60,234,204,122, 85, 38,221,129, 41, 51,103,211,161,176, 94,110,
- 91,208,250,114, 84,204,148,115, 56,210,150,121,194, 65, 70, 22, 18, 73, 35, 82, 72,226, 42,210,160,110,117,160,197,162,168,115,
- 29,188,213, 74,168, 86, 45, 9, 77, 65,126, 76, 10,156,120,126, 17,171,208,229, 78,105, 60,176,167,150, 84,151,226,161,194, 60,
-101, 71,113,182,200, 89, 26,226, 82, 54,226, 82, 43,245, 56, 55, 19,146,165, 82,168,173,189, 53,234,122,121,219,167,174, 92, 53,
- 21,161,215,162,173,172, 60,148, 33, 24, 82, 73, 88,113, 92,185,201,201, 27,117,108,244,241,194, 26, 80, 4,200,175,177, 5,212,
-177, 33,144,129,246, 88,144, 74,234,211,113,184,242,225,135,128,248,146,174,159, 42,143, 44,172,115, 72,249,120, 15, 20,146, 35,
- 63, 50,152, 72,218, 26, 20, 93,164,179,172,144,173,201, 8,234, 67,105,179, 12, 29,182,244,136,190,236,139,162, 43,211, 44,218,
- 8,144,234,232,245, 56, 11, 17,235, 21,134,156,116,152, 20,134, 80,176,164, 56,209, 72, 43,143,200,135, 22,133,101, 74,113, 57,
-214,238,237,187,251,130,203, 76, 67,151, 72,167, 84, 98,133,170, 91,213, 42,148,233, 12, 76,138,192, 82,148,219,210, 68,113,202,
-170,138,219,193, 89, 73, 67,106, 72, 42, 40,200,248,181,222,133, 7,252, 38, 61, 94,168,236, 48,218, 34,198,106,222,121,215, 12,
- 42, 5,177, 73, 72,109,202,131, 44, 54,165, 4,166,172,236,131,241, 5,128, 23,219,155,149, 1, 39,109, 54,169, 47,214,159,141,
- 78, 48, 42, 53, 11, 73,106,126, 99,142,173,244,196,145,119,169,196,182,166,100,201, 84,167, 3,137,162,161,194, 72,100, 6,202,
-154, 9, 82,143,134, 60, 50,195, 58,115, 25,121,138, 2, 2, 5,250,155,236, 2,134,216,220, 95,168,238, 13,133,186, 73,115,220,
-216,213, 80, 74,207, 75, 13, 76, 72,128,234,144,106, 49, 40, 80,161, 99,149, 74, 52,149, 4,141,198,181, 87,112,116,142, 90,187,
-151,130,212,169,221, 85,192, 81, 71,162, 69,143, 17,233,177, 66,234,213,121,210, 29,109,249,104, 83,136, 47,211, 99,197,142,149,
- 42, 58, 27, 13,132,100,161, 42, 4, 36, 14,234,214,192, 82,168,207, 6,100, 72,146,243,115, 36,115, 37,223,120, 83, 66, 40,134,
-150,151,200,182,225, 67,103,224,109,191, 19,152,143,214, 95, 97,205,166,202,221,175,203,122,100, 42,117, 14, 27, 48, 96, 45,217,
-109,187, 93,144,132, 73,164,149, 65, 11,113,200,212, 8,170, 80, 21,149,224, 37, 41,120,242, 70, 10, 10, 9, 83,160, 99, 78, 43,
-116,232,146, 18,162,237, 86,169, 54, 43, 79, 52,133, 63, 42,172,182,163, 42, 83,190, 32,120,165,166, 16,210, 27, 75, 65, 69,178,
- 18,158, 64,162, 82, 50, 81,157,111, 81, 68, 21,129, 8, 22,227,101,189,237,123,109,114, 1,185,236,109,232, 47,107,226,137,226,
-141, 77, 41, 30,203, 30, 87, 20,158, 96,168, 26,121,138, 19,111,172,118,118,179, 18,159,221,137, 20, 88,110,150, 85,193, 53, 73,
-145,226,170, 46,101,196, 76,164,184, 28,240, 12,134,153, 95, 43, 10, 74,155, 46,181,207,144,121,194, 7, 62, 9, 82,143, 47,108,
-234, 4, 62,210, 58, 72,219,158, 58,184,155,183, 37, 40,183, 29,237,225,189,234, 44, 58, 57,127,200,220,181, 35,117,198, 37, 8,
- 56,229,118,159, 89, 74,128,242, 87, 67,131,157, 78,142,170,138, 83,209,158, 69, 30, 52, 6,160, 54,228,136,114, 46, 38, 99, 50,
-181,206,146,133,248, 78, 67,166, 72,113, 37, 82, 16,149,149, 37,199,134, 91, 66,242, 26, 11, 88, 90,147, 16,207,164, 3,178,234,
-161,113, 5,183,251,173, 73,167,134,104, 59,189, 97,210,168, 85, 9, 52,211,200,236, 43,223,109,162, 38,218,168,185, 41,231, 21,
-137, 21, 23,168, 70,202,152,128, 87,226, 56, 92, 95,235,114,171, 51, 28,157, 98,150,190, 8,100,110, 92, 83,221, 79,199, 69,239,
-185,177,177, 27, 15,128,189,142, 45, 63,163,127, 17,212,112,127, 20,113, 29, 53, 38,185,106,243,156,177,196, 81, 58,133,230,212,
- 82, 85, 83, 84, 44,108,169,172,160, 52,166,171, 97,169,163, 3, 91,114,200, 24,226, 4,154,196,244,219,106,220, 88, 18, 36,123,
-230,213,238,117, 58,151,184,116,120,110,184,212,168,118,117, 66, 76, 20,196,186,144,180, 43,157,136,145,234, 12,197, 91,146, 81,
-132, 70,114, 83, 75, 43, 75,110,100, 74,151,217,207,198,213, 39,137, 54,238, 61,133,221, 10,180, 42,127, 21,123, 72,167,219,169,
-193,146,168,241, 90,223,139, 2, 44,118,170, 52, 45,207,178, 66, 74, 81, 80,184, 88,183,166,211,141,199, 76,103,157,106, 33, 53,
-232,129,216,210,102,162, 20, 59,161,215,121,234, 81, 43, 84, 91,170,177,103,222,204, 45,171, 98,241,138,155,114,161, 89, 69, 74,
-148,180, 59, 78,143, 92,122,151, 17,151, 83,112, 82,132, 69,184,196,200,129,133, 59, 38, 25,125,133,176,243,141,180,149,244, 87,
-132,222, 13,248,140,184, 47,203, 39,113,120,121,171,199,191,238, 93,185, 98, 53,251,111, 91,251, 99, 85,166,215,175, 87, 41,240,
- 42,241,155,165,214,182,154, 47,191, 41, 91,145,104,211,234, 42, 83, 92,148,103, 83, 85,163,199,117, 84,250,197, 33,136,225, 97,
-185,206,113,194,121,109,101, 27, 45,125, 80,163,171, 2, 95, 99, 38, 41,121,134,115,162, 78, 66,144,133, 38,141,138,205,202, 84,
-102,150,120,231,139,150,134, 90,104,163,158, 75,196,249,142,105,226,180,212, 89,118, 93,165,163,138,170,138, 74,220,202, 74,236,
-184,209, 80,208,200,239, 65, 46, 97, 87, 27,213, 71, 85, 72,252,182,203, 23, 53,133,225,134, 42, 12,195, 41,170,210,211, 69,154,
-203, 85,150,205,166,227,165, 61, 6, 5, 54, 97, 74,156, 18,227, 69,110, 35,140,180,165,169,249, 82,156, 67, 13, 71,138,218, 85,
-241,185,226,184,218, 91, 31, 9, 82,214, 50,122,244, 11,114,111, 27,114,131,182,251,199, 34,255, 0,136,154, 45,247,176,245, 58,
- 22,218,111, 22,216,181, 81,143, 85,184, 45,221,195,188, 89,183,161, 89, 20, 42,100,159,117, 96, 92,148,187,141,187,194,223,118,
-133, 84,102, 59,113,170, 72,126, 72,105, 41,114, 12,164, 55, 75, 99,119,122,224,174, 51,245, 7, 19,219, 89,112,112,215,186,220,
- 60,220,144,175, 61,215, 77,193,108, 87,174,237,159,151,101,211,226, 77,189, 33,110,173,151, 93,162, 70,144,154,221,142, 81, 76,
-164, 63, 80,165, 60,241,153, 77, 68,215, 72,114,100, 8,147, 31,135,146,113, 71,183, 59,103, 34, 92, 13,253,110,235,173,110,165,
-205,184,176,173,202,147,143,193,221, 91, 86, 92, 45,209,191,156,186,104, 59,129,181, 86,205,199,245, 20,121, 48,102,109,181,175,
-123,214, 32, 86,104, 82, 40,181, 28,208,209, 13, 52, 53,191, 38,135, 86,101,109,214, 19, 84,229,188, 53, 74,207,159,161,161,167,
-175,150, 56, 86,121,140,113,211, 67,100, 55, 51,107,101,157, 73,146, 72,180,145, 11, 42,168,147,153,162,197,146,162,201, 56,112,
-210,113,141, 46, 79,196, 20,245, 18, 53, 58,173, 84, 67, 46, 95,106,106,245, 73, 41,170, 2,208,207, 24, 52,245, 80, 86, 80, 37,
- 72,165,150,158,114, 90,122,170, 9,135,212,151, 87,227, 20,104, 45, 87, 24, 85, 86,218,241, 42,148, 71,110, 43,170,211, 76,212,
- 52,150,132,106,245,151,114, 85,109, 11,162,129, 84,104,168,251,149,106,157,112,209, 42,113,229, 48,188, 58,218,227,142,108, 33,
- 77,169, 90, 21,237, 94,168,222, 22,133,223,195,254,202, 10, 93, 82, 93,177,180, 43,183,183,154,236,164, 81, 20,153,146, 98,238,
-125,229, 73,129, 91,163,213,175,116, 52,191, 22, 53, 66, 29,188,253,173, 71,167, 81, 57, 76,150,133,213, 81,149, 33, 81,220,148,
-211, 74,150,182,225,218, 92, 50,112,247,195,165,153, 77,165, 90,219,117, 99, 91,150, 60, 43,174,244,174,223, 49,109, 27,134,228,
-218,202,205,255, 0,107,212,149, 18,116,251,243,114,104,207,201,168, 51,121, 72,220, 7,211, 38,169, 13,184,115,170,215,251,244,
-217,244, 88,238, 70,155, 37,169, 49,121, 20,212, 93,185,118,222,225, 46,203,225,223, 98,183, 23,120,253,160,252,116, 84, 55,118,
-117,213,191, 91,223, 72,247, 69,219,219,105,184, 23,221, 98, 20,254, 44,230,237,204, 42,236,138,109, 42, 84,217,212,251,153,118,
- 17,144, 93, 52,138,101,143, 85,175,174, 58,252, 58,125, 67, 79,254, 28, 54, 93,153,214,174,113, 79, 20,121,133, 44, 97,185,112,
- 9,150,105,100, 73, 41, 86, 94, 92, 38, 35, 21,167, 43, 81, 29, 57,169,144, 44, 20,142, 37,170,101,154, 49, 70,106,111,238, 14,
-168,151,137,248,115,244,207, 19,210,215,101,116,144,212,140,186,131, 48,134,146, 36,164,139, 59,164,121,107,219, 53,204, 26,181,
-229,163,139, 38,160,162,201,235, 36,205,169, 85,235,234,125,154,190, 36,140, 9,162,154, 90, 72,169,213, 45,253,208,118,151, 97,
- 90, 91,181, 38, 13,167,103, 94,215,213,102,231,174, 55, 49,215, 31,172,238, 77,247, 17,216,119, 14,228, 45, 49,233,233, 9, 77,
- 46, 21, 66, 69,159, 70, 41,134,135, 99,193,140,211, 84,180,200,231,102, 82,155, 18,155, 83,131,120, 85,111,219,154, 3, 50,105,
-148,169, 19,160,193,160,214,170,113,194,103,214, 98,211,229,168,183, 62,159, 72, 66,178, 89,147, 84, 14,152,173,252, 45,248, 13,
- 54,178, 84,149,147,169,133,123, 64,189,146, 86,255, 0, 13,187,109,182,187,145, 64,219,248,219,185, 14,215,178,234,116, 13,218,
-222, 42,148,217, 2, 53, 42,184,204, 22,226,237,117,131, 14,206,132,240,114,194,225,222,157, 83, 53,138,149,106,161, 29, 14, 73,
-171, 86, 42,171,153, 89,124,169,230,121, 34,177,182, 91, 65,116,111, 46,243,196,218,253,171,247,251,206,183,116,213,106,146,228,
-110, 45, 77,182, 89,136,139,118, 28,148,197,186,119, 9, 54,243, 47, 6,109,107, 54,152,143, 26, 45, 38, 35,139,255, 0, 5,141,
- 9, 78,190, 85, 41,232,140,170,115, 83, 86,212,245, 25,140, 21,212, 63,162,231,161,141, 36,125, 43,202,166, 45, 35,172,211, 73,
- 10, 63,152,169, 40,176, 6,149,220,186,195,120,162,104,238, 34,191,184, 15, 62,224,252,219,132,178,206, 51,225,190, 45, 60, 75,
-193,102,174,190, 55,168,174,180,249,164,116,185,109, 52,249, 86, 93, 75,153, 84,195, 32,246,103,141,107, 43,115,158, 82,101,249,
- 74,150,205,227,150,183, 49,167,173,118,253, 35, 52,143, 98,189, 5, 54,159,179,243,109, 77,101, 98, 4,221,196,190,119, 71,112,
- 90,102,181, 21, 8,139, 91,164,212,174, 88,182,196, 10,140, 85, 56, 18,219,240,220,254, 9,200, 41,115, 33, 74,231, 82,146,146,
-218,155, 42,234,187,209, 27,163,184,237, 90, 72,168, 42,130,200,240,165, 64,143, 38, 82,158,160,173, 74, 13, 9, 84,182,157,124,
- 46, 93, 57, 73, 90, 10,152, 73, 43,100,172, 41,160,180,115, 32, 49, 27, 9, 77,177,109, 93,139,217,139, 99,111,227, 72,143,183,
-214,214,217,218,118,173,163, 6,173,153, 19, 88,131,108,210, 99,208,101, 65,174,135, 83,148,212,157,159, 79,150,244,181, 20,148,
-123,204,229, 43,177, 57,114,208,124, 17, 57,202, 83, 14,170, 36, 5,137, 85, 10, 36,185, 75, 84, 55, 96,202, 71, 42,132,120,171,
-113,106,241,219,116,146,219,173, 15, 11,186, 85,148,168,114,194,132,136,200,173, 31,158, 54, 80, 65, 3,168, 34,224,129,232, 65,
-213,184,220,116, 23,199, 0,113,150,101, 55, 20,241,127, 20,113, 19,235,165, 25,245,125, 85, 67,198,196,108,179, 84,182,152,185,
-133,129, 73,145, 89, 34, 14,220,203, 72, 8,103,229,150, 86,247, 81,110, 91, 49,167, 78,161,215, 37,212,219,113,213,165,218, 85,
- 69,240,244, 26,132, 54,129, 11, 49,228,181, 29, 46, 66,168,140,245, 75,156,193,124,161,183, 27, 28,201, 86,190, 81,155,125,104,
-135, 34, 12,114,220,121, 41, 40, 98,157, 53,228,170, 35,114, 20,230, 86,221, 26, 80,200,167, 40,169,103,158, 59,169, 8,202,112,
-128,131,144, 60,211,163, 71,152,183,230, 83,229,191, 4,133,169,153, 76,134,179, 60,198, 89,109,232, 14,212,225, 62, 86,221, 65,
- 13,185,148,165,196,101, 78, 32,243, 37,209,130, 19,153,208,146,134, 81, 41, 19, 11, 49,214, 86, 24,121,165,178,165, 69,168, 40,
- 31,135, 1, 64,169, 46,149, 41, 36, 40,254,144, 5, 36,146,188,100, 38,134, 48, 25,152,141,172, 46, 77,136,220, 27,250,141,253,
-222,226,122,130,193, 89, 80, 41,169,164,139, 72,146, 84, 43,112,200, 85,236, 84, 40, 87, 84, 1, 94,219, 21,144, 93,244,155, 22,
- 69,101,209,125,183,168,209, 97,190,250,204, 70,152, 5, 64,200,140,166,150,203,176, 87,241,151, 94,136,160,178,134,218, 89,230,
- 82,128,202,114,162,164,100, 2, 53, 28,111,107, 60, 59,251,143, 63,104, 23, 11,126,205,170, 3, 53,106, 46,201,109,173, 53, 27,
-255, 0,189,117,166,249,216,137, 90,147, 49, 18,105,172,202, 66,146,174, 71, 98, 81, 45,102,106, 49, 24, 42,193, 53,155,189,229,
-160, 5,197, 73,215,123, 47,141,211, 98,142,167,173,155, 89,193, 42,229, 25,106, 76,148,165, 47, 71,180, 91,112, 5,120,181, 23,
- 14, 83, 34,182, 58,174, 44, 18,162,180, 43,149,249, 92,173,165, 40,113,184,160,218,118,243, 51,158,189,219,161, 64, 93,228,170,
- 58,109,137, 55, 99,177,210,229,194,253,186,103, 61, 86, 93, 46, 69, 85,196,248,174,194, 85, 90, 68,169, 42, 65, 86, 20,243,235,
- 89,234,113,167, 76,190, 73, 36,154, 36, 66, 2,174,204,196,216,168, 96, 86,235, 97,187,142,171,113,179, 0, 79, 96, 43, 78, 39,
-200,167,207,168, 64,172,169, 48,195, 60,176,243, 35, 59,153,169,213,129,145, 9,184, 40,178,128, 35,189,201,120,217,238, 72, 33,
-152, 74, 45,191,110,218, 20, 10, 5,159,104, 82,163, 80,109, 43, 50,145, 78,182,173,138, 20, 36, 37,152,116,202, 37, 38, 58, 33,
- 65,136,219,104, 24, 24, 97,176,165, 43,186,214,165, 45, 89, 82,137,214, 66,192, 44, 56, 50, 64, 66,255, 0, 84,246, 74, 22,174,
-188,167,230, 79,109,121, 92,114, 87,226,132,243, 5, 16,162,145,156, 45, 62, 69, 56,238,161,231,246,106,239, 2, 58, 29,109,109,
-140, 45, 4,158,231,170, 65, 29, 58, 31, 49,251,181, 41, 93,150,200, 52, 42,216, 5,236,161, 64, 0, 1,233,167,107, 95,107, 15,
-118, 6,132,133, 20,133,242, 45,129, 0, 88, 1,181,128, 29, 5,187, 14,150,219,160,198, 15, 92,140,185,115,138, 64, 42, 71,192,
- 48, 51,148,245, 42, 81, 7,237,199,237,198,179, 75, 74,130,162,174,110, 64,124, 66, 48,124,213,215,155,149, 64,142,249, 35,240,
-215,148, 83, 60, 73,124,161, 36,156,132,103,190,121, 71, 64,125,124,254,243,173,128,177,237,177,134,150,166,134, 7, 42,186,224,
-143, 44, 12,121, 14,154, 67,202,160,201,111, 49,218,255, 0, 63,127,239,196,120,213, 0, 90,237,117,185, 55,251,239,238,249,252,
- 47,182,197,185,224,181,226,148, 36, 57,202,148, 5,148,228,167,152, 5, 58, 79, 79, 76, 14,157,180,226, 8,126,236,203,104,229,
- 60,234, 39, 41, 0,168,144,160, 20,178, 64, 31,173,203,129,242,206,178,138, 93, 27,145,148, 5, 35,225, 35, 39, 61,212, 7,196,
- 78, 60,251, 1,143, 61,123,145, 19,153, 69, 69, 4, 41,106, 8, 66, 83,212,227, 32, 37, 32,103,190, 59,159, 85,124,134,144,177,
-221,137,249,239,127,225,134,106,140,228, 77, 49,141, 79,213,198,127,211,243, 54,237,139, 84,118, 89,109, 14, 61, 41,212, 70,139,
- 13,135, 37,204,148,176, 18,212,104,172, 36,184,227,206, 40,246,108, 37, 56,249,146, 7,158,181,250,179, 86,126,239,172,200,171,
-165,165, 49, 78,105, 40,133, 70,101,239,129, 48, 41,109,171,225, 88, 0,126,146, 83,234,203,139, 61, 57, 66,130,124,177,167, 30,
-243,170, 10,151, 53,173, 13,126, 37, 62, 51,173,185, 94,117, 25,228,155, 49,165, 7, 24,164,151, 19,254, 82, 35, 74, 8, 47, 36,
-116, 83,129, 32,146, 1, 26,196,209, 13,152,192,120,189, 72, 36,248,109,160, 56, 2,128, 5, 63,163, 79, 92,103, 3, 39,160,236,
- 58,233, 61, 70,161,194,166,241, 70,119, 63,180,195,227,217,127, 22,248, 41,196,175,135,160, 90, 56,228,204, 39, 66,107,106,150,
-209, 41, 6,241,194,108, 75, 91, 99,174, 91, 3,191,217,140, 1,191, 54, 69,192, 76, 50, 27,111, 13, 54, 73, 64, 9, 75,139, 82,
-155, 0, 43,169, 44,128, 9, 62, 93, 64,193, 61,206,129,152, 95, 41, 82,138,208, 22, 65, 72, 12,164, 32,165, 0, 36,148,163,152,
-144,217,234,147,145,223, 36,228, 96, 13, 93,159, 83,174,103,149, 32, 40,182,126, 55, 51,206,132,145,201,240,161, 7, 35, 62, 99,
- 32,129,158,249,214, 55, 45,212, 37, 96, 41, 41,120,167,152, 0,148, 0,129,149,167, 39,148,225, 32,224,247, 61, 71,166,116,224,
-158, 91,109,185, 27,219,231,253,127,117,240,237, 35,179,146, 77,153,143,253,199,183,115,176,223,225,139, 75,238,163,147,144, 21,
- 40, 96,142,116,142,164,165, 71,170,222, 82,187, 31,136, 4,140,243, 1,229,215, 88,252,183, 65, 72, 11, 82, 74,126, 16, 8, 28,
-184, 82, 72, 9, 66, 86,188, 18, 18,124,176, 62,100,224,157, 92, 39, 56,224, 82,146, 23,204,162,174, 95, 9, 9, 79, 55, 83,240,
- 40,169, 64,252, 33, 36,252, 92,160,245,192,214, 45, 49,208,142,112, 21,241,171,170, 65, 78, 85,128, 50, 82, 74,129,229, 60,160,
-143,187,169,234, 53,176,135,175,112, 15,243, 31,187,175,201,195, 45, 82, 13,247,235,252, 62,255, 0,187,182,253,175,139, 84,247,
- 82,160,163,130, 9, 39, 36,167,159,175,196, 10,138, 66,176, 19,215,191,145, 57, 25,215, 6, 61,188, 92, 35, 69,226, 19,132,201,
- 91,199,110, 82,195,187,161,195, 10,102, 93,241, 28,140,192,126,125,115,105,170, 47, 48,214,226,219,142,184,128, 86,242, 33, 44,
-195,173,196, 64,207, 34,224, 76,242,116,235,186,178,222, 24, 37, 41, 81,237,144, 82,160, 20, 48, 84, 0, 3,162,199, 82, 58,245,
- 31,127, 70,250,191, 79,164,215, 96, 84, 40, 85,216,173, 79,160,215, 96, 84, 40, 53,232, 14,182,151, 35,203,161,214, 98, 61, 73,
-173, 66,121,165,116,117,135,105,115,166, 54, 71,126, 85,224, 28,246,216, 14,203,105, 35, 63, 89, 25, 12,191, 17, 98, 47,238, 61,
- 15,184,145,176, 59,197,243, 92,186, 44,214,138,175, 46,156,218, 42,180, 41,114, 7,145,137, 5, 36,183,172,110, 22, 65,210,229,
-109,238,199,229,128, 82, 2,137,239,143, 49,212, 31,152,199,126,154,248,172,145,219,166, 51,147,251,191, 13, 61,188, 74,237, 67,
-251, 7,196, 22,245,108,212,198, 21, 21, 91,103,185, 87,117,161, 21,133,168,173, 72,164, 83, 42,242, 5, 1, 65, 71,170,194,232,
- 46, 83, 92, 10,235,144,230,114,115,146,198,169,106, 88, 4, 43,155,166, 71, 76,119,245, 30,186,153,211,202,179,197, 12,202,124,
-178,168, 97,235, 98, 1,254,120,230,119,142, 72,157,226,149,116, 75, 17, 42,227,209,212,233,101,251,152, 17,138, 46, 16, 70, 51,
-235,156, 28, 99,251,116, 42,177,142,195,148,103, 30,125,187,147,243,213,117,168, 30,224, 12,142,248,206, 79,217,161, 87,208, 31,
- 60,156,126,255, 0,221,173,192, 44, 0,244,192, 29,190, 56, 29, 89,193,233,255, 0, 14,253, 52, 34,142,113,223,207,184, 3,240,
-209,107,237,223, 29, 71,231,243,233,161,156, 32, 2, 51,147,231,142,191, 62,154, 85, 7,124, 42, 44,119,192,171, 35,203, 63,126,
-113,231,228,117, 69,125,179,147,255, 0, 31, 93, 87, 95, 55,158, 49,229,249,245,208,235,199,207, 62, 94,159,126,149, 2,228, 99,
- 29, 0, 3,231,255, 0, 24, 21,103,175,216, 49,159, 93, 45, 37,254,183,221,211, 75, 74,139,128, 0, 31,142, 13,143,168,198, 79,
-124,227,238,199, 79,219,162,145,140,118,235,230,113,251,254,205, 8,223, 83,147,145,208,244,251,241,215, 69, 35,177,235,231,219,
-247,232,141,107, 47,108, 12, 18,142,199,167,223,235,249,253,250,169,158,221,250,124,254,126, 94,154,164,140,245,233,211,215,247,
-124,245,237, 36, 40,144, 15, 99,131,223,161,210, 78, 54,248, 96, 99,223,140,142,249, 24, 0,103, 25,202, 78,139,108,149,129,212,
- 0,124,241,215,168,233,211,239,253,154, 16,180, 1, 56, 0, 36,228,159, 79, 44,147,243,254,189, 86,109, 65, 36, 14,184,198, 2,
-143,203,212,253,218, 64,155,117,192,193,237, 39,151, 3,175, 66,123,119, 63, 63,144,209, 8, 95, 51,137, 73, 78, 57,115,241, 30,
-221, 60,178,126,122, 8, 60,140,148,130, 85,216,224,117, 87,159,124,253,167,240,209, 63, 11,137,248,186, 28,252, 35,168,207,219,
-248,233, 22,234,113,131,235,243,233,139,187, 64, 43,162,136, 63, 49,147,235,233,247,106,247, 70,169,212,104, 85, 90,117,110,145,
- 41,200, 53, 90, 68,248,117, 58, 92,198,148, 80,236, 90,141, 62, 75, 82,225, 74,109, 67,170, 84,137, 44,180,175,184,141, 88,152,
- 10,229, 79, 96, 48, 57,177,219, 35,167, 79,219,162,211,156, 40,118, 30, 71,184,249,245,242,233,162,144, 24, 21, 97,112,118, 32,
-239,132, 15,196,169, 30,155, 16, 71,112, 71, 67,137,193,240,233,185, 20, 62, 44,120,124,219, 61,240,167, 76, 71,191, 84,105,140,
- 81, 55, 14,155, 5, 64, 73,165,223,148, 54,155,135, 89,139, 53, 8, 57,103,197,121,191, 25, 25,253,100, 72, 65, 4,131,173,161,
-180,210,245, 40,183, 10, 44, 52,248, 14,171,153,247, 36, 40,150,208,211,100, 16,181,171,201, 93, 7, 79, 83,168,161,123, 40,248,
-226,137,194,214,237,191, 97,110, 76,199, 6,196,111, 20,202,117, 42,239,113,106, 82,155,179,174, 82, 83, 18,135,123,178,146,127,
- 69, 25, 42,113, 12, 78,199,254, 43,149,211,158, 67,169,140, 46,220,104,182,207,128,184,210,104, 79,178,197, 70,159, 80,128,226,
- 36, 70,171, 65,146,132,189, 18, 92,121, 77,168,165,248,174, 52,182,212, 10, 73, 7,155, 84, 39, 16,240,233,203,115, 25, 99, 88,
-201,130, 67,170, 35,216,169, 61, 47,220,173,244,155,247,243, 17,102, 24,239,143, 11, 60, 80,110, 39,225,218, 88,107,103, 15,152,
-229,170,144,213, 33, 98, 60,234, 0, 89,236, 55, 34,117, 93, 98,219,115, 3,198, 8,209,135, 82,196,175,212,218,113,133,198, 84,
-117, 38, 71, 32, 67, 78,101, 4,182,142,157, 7,255, 0, 22,125,124,255, 0, 13,121,226,147, 97,169,220,100,236, 45,251,195,253,
-214, 96, 83, 89,184, 96, 55, 58,221,184,156, 71,138, 45,139,210,151,207, 34,220,169,161, 93,196,113, 36,248, 82,113,221,137, 11,
-244,198,172,116, 62,102,100,181, 29,160, 61,231,149, 60,142, 99,224,101,164,246, 3, 29,128, 25,233,173,128,164, 74, 18, 99,198,
- 73,116,183, 25,181,114, 60,178, 57, 76,151, 16, 50,162,162, 14,124, 60,129,246,235, 82,158, 2,165,118,210,203, 98, 45,216,245,
-190,219, 94,253, 7,223,139, 66,108,214,122, 57,232,179, 76,177, 18,150,182,141,214,104,102,243, 49, 73, 35, 33,209,244,220,171,
-217,133,180,176,210,230,225,188,151,199,230,211,196, 86,208,238, 55, 15,155,153,121,237, 22,231, 81,100,219,215,221,143, 82,149,
- 79,168, 71,125,106,110, 52,230, 88, 90,132,122,157, 46,106,128, 76,202,124,136,220,143, 71,121, 63, 11,141,186,146, 8, 36,141,
-107, 90,238,137,210, 99,242, 84,194, 39,208,228,243, 69,156,165,101, 50, 16,209, 35,156,184, 17,212, 56,158,138, 66,198, 72,229,
- 26,253, 19,125,160,126,206, 29,169,246,133, 88,112,226,214,219,129,100,111, 5,191, 18, 68, 91, 19,116,219,132, 28,148,220, 38,
-208,181, 53, 65,186, 99,180, 66,170,182,233,119, 30, 25, 39,198,138, 86,165, 50,121, 74,144, 97, 29,196,223,179,219,138,238, 14,
-171, 85, 42, 30,238,109, 69,202,253,158,137,146, 26,165, 95,150,229, 61,202,229,149, 91,134,219,133, 41,155, 18,173, 13,165, 6,
- 91, 82, 48,172, 57,202,180,231, 5, 26,179,178, 42,250, 57,225, 72,106,149, 86,169, 74,233, 44,116,220, 29,175, 27,118,123,216,
-133,216,130, 59,142,146,250,158, 42,173,226,215, 74,204,190,189,178,218,167,133,214,182,141,111, 32, 18,142,242, 68,219, 84,208,
-202,162, 69,119,250,199, 68, 58, 38, 17,181,158, 86, 98,205, 98,245,184,155,179,246,190,133,117, 81, 43,212, 69,205, 93,107,111,
-171,201,247,180,220, 22,125, 75,170,221,143, 77,172, 67, 70, 41, 51,212, 66,147,225, 62,180,195,146,121,152,117, 41, 82,145,153,
- 39,123, 14, 56,116,186,118,163,136, 57,119,139, 91,231,181, 82,105,117, 56,211, 85,187, 59, 81, 50,174,154, 46,225, 86, 41,142,
-178,236, 71, 96, 81, 44, 39,154, 15, 79,169,138,138,154,146,169,140,169,198,154,240,202,146,121, 8,214,156,123, 19,246,162,147,
-184,219,245,181,214,173, 74,157,114, 91,212, 68, 94,177, 46, 9, 87,209,164, 82, 35,166,152,213, 40, 26,147,148,152, 53,249, 12,
-182,135,161, 77, 92,118,163,188,212,150,221, 87, 43,171, 72, 10, 95, 41,212,194,248,217,224, 59, 96,239,203,211,110,184,157,163,
-220,219,119,195,142,224,236,189, 90, 53,199,112,238,141,180,213, 54,131, 86,184,173, 90, 80,241,158,162,204,105,137, 44, 68,247,
-146,216,120, 38, 83,136, 82,185, 95, 91,106, 14, 36,132,105, 42,177, 85, 95, 69,196, 84,180,235, 13, 45, 13, 59, 8,229, 63, 84,
-100,153,228, 44,254,209,101,229, 8,180, 29, 45, 34, 57,120,102, 98,238, 84, 54,248,177,115, 46, 32,224,110, 24,171,225,142, 26,
-226,122,217,198,119,199, 25, 21, 76,116,245,242, 71, 93, 93, 67,144, 67, 83, 72,217,122,208,154, 38,146,170, 74,254,122,137, 97,
-203,171, 80,123,126, 86, 13, 50,114,230,134, 52, 43,104,160,110, 52,106,229, 82,239,218, 10,165,197, 42,143, 92,155,112, 63, 79,
-182,109,170,172, 86, 42, 53, 42,212, 72,110,166, 83, 17, 83, 38, 18,137,166,133, 50,164,172, 60, 85,240,145,228,123, 92,248,153,
-225, 90,117,139, 14,223,186,217,144,212,184,247, 13, 37,217,245,234, 50, 30, 68,154,188, 47,118, 5,245,153, 13, 36, 5, 84,225,
-248, 64, 45,114, 16,133, 4,120, 5,183,210,145,135, 23,170, 17,120,166,246,122,210,239, 8,251,245, 73,221, 42,108,202,125, 54,
- 85,110, 12,136,116, 25,110, 42,164,252,181,186,183, 36, 84,100, 71,157,200,243,176,212,251, 97, 40,154,128, 27, 80, 87, 42, 0,
- 73,215, 28,248,248,246,138,238,223, 31, 27,209,100, 13,189,190,175, 61,174,217, 13,133,184,168,247,110,220, 46,215,168, 72,182,
- 43, 50,175, 26, 23,136,134,174, 58,133, 66, 41, 14,213, 96, 61,144,143,113,148, 85, 17,198,121,155,117,149,165, 68, 30, 78,240,
-151, 41,171,203,168,248,214,139,140,242,218,147, 61, 39, 46,146,154,176, 74, 94, 58,115, 70,238,237,110,102,210,194,237, 49, 74,
-101,167,176,152,106,242, 71,253,233, 17,120, 7,226,111,137,188, 85,195,180,126, 29,112,252,188, 55,150, 71, 72,245, 89,147,103,
-144, 54, 91, 11,230, 13, 18, 65,236,212,236,144, 84, 78,202,220,184,170, 37,144,199, 57,137, 21,156, 76,199,149, 3,245, 94,101,
-153, 14, 91, 11,118,106, 60, 38, 42, 50, 98,248, 52,232,255, 0,224, 76,210,169,176,210, 23, 58, 67, 75, 75,170,196,215, 65, 90,
- 66,200, 82,134, 70, 57,121,122,190,116, 74, 93, 58,224,113, 52,104,137,117, 22,180, 38, 41,236, 84,166,201,117,250,127,189,196,
-138,202,165, 63, 77,135, 61,213, 5, 70,128,166,194, 12,199, 18,144,165,140,160, 16,130,179,166,155,101, 55,170,133,187,214,166,
-214,220, 55, 67, 20, 74, 22,231,223,150, 76, 91,182, 85,181, 1,133, 66,160,215,231,197,159, 82,164,204,170, 90, 80,221, 39,244,
- 42,118,154,185, 47,211,155, 89,114, 42,164,175,221,144,228, 84, 39,195,216, 74,124, 72,107, 67,204, 60,133,205, 66,221, 76,153,
-140,248,200,105, 21,106,162,212,144,195,107,125, 39,244,116,228, 20,254,149, 32,124, 73, 74, 16, 82,160,149, 5, 73,200, 40,225,
- 8, 33,133,138,157,182, 82, 3, 95, 73,181,137,216,116,212, 13,238,110, 49, 90,230,167, 55,225,188,207, 50,225,188,237,100,164,
-205,114, 10,186,138,102, 10, 67, 66,181, 20,181, 15, 75, 52,145, 56, 33,102, 11, 36, 14,177,206, 9, 14, 84, 59, 29,188,174, 84,
- 59,173,112, 93,143, 85,131, 21,160,229,114, 44, 58, 45,153, 66, 12, 7, 27,139, 74, 91,136,101,170,139,205, 35,148, 83,216, 89,
-109, 47,175,160, 45,198, 97,150, 17,149, 40,129,153,191, 33,138, 45, 46, 76, 10,157, 73, 53,234,220,249, 45, 83,233,211, 28,109,
- 44, 82,226, 34,114,131, 18, 43, 40,129, 31,153, 48, 97, 70, 47, 36,186,181,120,174, 58,242, 82,209, 95, 50,212, 18,208, 73, 83,
- 80, 80,204,199,127,194, 85, 21,242, 79,187, 56,168,170,169,212,221,108, 50, 91,138,234,193,240,227,178,130, 24,101, 57,229,108,
- 41, 75, 86, 74, 20, 9,139,172, 74,165, 58,245,126,172,220, 89,142, 26,131,177,226,196,130, 86,202, 30,125,154,122,189,198,155,
- 17,167, 0, 8,166,198,149,239, 78, 60,238, 79,139,135, 31, 80, 75,139, 70,183,210, 72,208, 37,152, 14,131,107,157,246,216,129,
-183, 77,134,221,141,183, 54,195, 12,185,100, 85,145,194,212,139,125, 68,121, 69,150, 73, 36, 70, 28,168,213,141,221, 80, 38,242,
-239,121, 25,155,153,118, 55,137,194,174, 84, 41,148, 85,183, 64,162,120, 21, 9, 84,184, 49,145, 29, 46, 45, 79, 64,165, 64,110,
- 50,132,154,165, 69,214,148, 82,194,220, 74,138,147, 28,101,231,150,232,192, 66, 9, 86,185, 17,237, 36,216, 24,156, 79,108, 45,
- 91,106,157,145, 17,119,146,170, 52,251,163,110,235,115,214,150, 35,192,191,179, 38, 60, 55, 42, 47,160, 19, 2,219,168,211, 29,
-118,157, 56,164, 20, 50,202,227,203, 3,158, 10, 73,232,220,233,143,193,167,180,203, 82, 67,210, 37,192,145, 88,170, 20, 52,150,
-230, 54,253, 90,120,113, 41,119,149, 69, 38,115,235, 1, 12,182, 7,193, 25, 9, 82,185,130, 82,117,175,119,139, 85,218,217,157,
-245,121, 66, 42,143,213, 32,176,154,170,185, 28,143, 69, 75, 2,115,178,106, 74,141,250,175, 22, 25,108,248, 12, 35, 8, 91,142,
- 54,181,252, 5,122, 88,213,203, 28,145, 75, 78,229, 37,167, 97, 34,183,236,148, 33,148,223, 96, 69,197,183,176, 63,102,214,216,
- 58,240,190, 68,114,250,243,152, 23, 19,199, 8,114,242, 72, 72,231, 22,188,108,205,176,101,137,213,157,138,160, 37,149,131,121,
-245, 2, 96,171,183, 20,137,123, 31,191,149, 91, 47,123,232, 85, 27, 62, 93, 6,181, 34,220,190,237,155,214,132,186,220, 88,179,
-217,150,220, 71,128,149, 75,125,138,149,169, 90, 75,203, 96,211,110, 42, 91,143,176,165,184,194,229,195,126, 59,201,121, 83,127,
-216,175,102,198,192,241,189,192, 78,211, 93,151,173, 66,131, 11,121,110, 27,122,109, 78,202,226,103,134,152,244,170, 29,255, 0,
-106, 75, 77, 80,127, 7,147,118,200,183,170, 81,169, 27,137,124, 65,102, 20, 38,171, 53, 4, 24,110,205,241, 18,226,164,123,227,
- 13,202,211, 37,186,124, 33,108, 79, 16, 66,211,103,113,182,182,139,118, 84,173, 7,156,166,216,183, 99,192, 67,187, 32,202, 95,
- 52,202,236,231,238, 88,201, 46,213,173,214,193, 83,203,133, 49, 50, 99,173,245,243, 52,203, 11,115,159, 93, 2,225, 42,126,233,
-240,185,105, 84,108, 74, 45, 95,108, 43, 59, 35, 69, 97,250,141, 10,138,230,217, 90,251, 48,139, 9,233, 47,173, 83,167, 92, 23,
-133,177, 85, 69, 46,182,212,244, 48,183, 86,228,216,112,223, 43,138, 95,241, 29,230,228, 19,170, 78, 41,201,115, 12,218,154,183,
- 54,203,228, 66,244,207, 79, 57, 83,174, 48,118,211, 36,113,139, 51,236,182,144,200,197,209, 89, 4, 74, 66, 18,100,220, 71,196,
- 25,253, 47,135,176,101, 60, 41,197, 99, 32,207,114, 92,228,102, 52,138,194,116,168,154, 25, 34,146, 41,169,214,165, 68,180,176,
-199, 36,210, 6,122, 3, 28, 20,213, 45, 28,143, 83, 37, 84,238, 34,143, 74,120, 89,225,111,121,247,111,121,238, 89,155,225,184,
-220, 82,237,142,251,112,146,253, 17,207,229,239, 14,200,188, 40,150,199, 16, 91, 53,100,203,106,223,161,219, 59,177,105,238, 28,
- 8,141,191,184, 84,122,123,188,237, 86, 66, 93,102,187, 65,135, 61,155,146,157, 54, 68,117, 85,170, 29, 5,246,132,237, 76,171,
- 94,215,181, 54,235,103,182,227, 99,237,219, 50,147,100,221,151,117,186,253, 38,155, 38,143,114, 90, 87, 4,106,212, 53,220,242,
-118,242,194,180,160,179, 75,166, 81, 39, 84,235,112, 68,217,140, 61,226, 50,212,247, 22, 89,118, 35, 77,235, 83,184,202,246,199,
-112,111, 70,219,122,181, 6,171,108, 65,226,231,125,105,213,122,204, 75, 11,108,236, 27,130,252,141,176,118,155, 98, 2, 33,193,
-175,238,213,251, 13, 81, 98,223, 52,197,206, 75,206,187, 71,165, 38,170,196,168,241,155,138, 85, 9,111, 46, 98, 52, 47,111,189,
-188,183, 37,209,109, 10,103, 17, 22, 2,110,109,194,146,227,138,131,118,219,246,163,116, 11, 98,132,235,103, 52,122, 75,118,253,
-157, 38, 77, 80, 90, 17,210,101,178,248,116,206,118, 75, 83,212, 28,101,175, 1,149,162, 45,226,190, 70,185,231, 0,203,149,228,
-121,123,231,153,198,105, 91, 28,230, 88, 16, 36,112,211, 70,154,212, 24, 39,149,165, 18, 74,198, 72, 89, 35,105,100, 12, 41,231,
-158,112, 57,145,137,231, 10,100, 94, 51,241, 87, 23,112,111, 30,211,112, 52,153, 38, 73,225,242, 10, 90,124,155, 50,146, 42,116,
- 99, 45, 52,112,243,178,218,153, 12, 21, 85, 52,171, 42,205, 88,212,181,201, 75,149,209, 37, 91, 81,100,148, 51, 81, 75, 49, 50,
- 6,217,173,183,155,188, 84,118,173,158, 32,172,235, 87,118, 54,166,179,183,149,203,134,222,225,242, 30,215, 80,233, 54,151,241,
-165,100,213,106,245,122,156,138,221,227, 2,160,150, 46, 42,164,235,130,161, 57, 86,251,132, 51, 77,169, 64,173,174,167, 38, 59,
- 85, 4, 56, 26, 3,109,118,123,135, 41,252, 96,110,135, 23,245,109,254,221,189,165,168,219,173, 91,123, 97, 87,216,251,190,175,
-183,219, 85, 99,219,212,155,126,209,183,217,137,183, 10,131, 66,169, 76,169,205,176,225, 70,165,194, 83,180,116,125, 88,219,175,
-148,178,243,175,199, 75,173, 59, 29, 61,249,246,206,238, 94,228,237, 61,211,181,155,117, 97, 50,205, 62,247,110,151, 14,183,114,
- 57, 71,149,102, 55,111,211, 40,145,161,125, 74,213, 25, 54,141,222,227,180,202,188,130,169, 82, 23, 30,151, 57,136, 16,218, 83,
-108, 72, 50, 38, 25, 64,114, 67,110, 47,253,229,176,174, 10,205,199,103,238,253,237, 99, 85,238,119,154,122,231,157, 75,174,215,
- 74,238, 7, 25, 46,152,207,214,220,157, 58, 73,170, 74,109, 18, 30, 75,110,190, 29,121,180, 44,165, 42, 9,232, 21,240,162,151,
- 56,225, 46, 16,143, 36,205,178, 88,214,186,130,176,206,181, 50,212,206, 37,168,141, 97,228, 37, 63, 46, 9,201, 90, 37, 96,103,
-142, 25,155, 74,243, 26,157, 97,150, 33,237, 83,203,114,127,162,199,141,220, 86,188, 75, 85,151,241,125, 31, 2,167, 23,193, 83,
-150, 54, 91, 79, 78,166,152,101, 85,109, 75, 81, 85, 61, 59, 60, 98,150,158,166,174,122, 58, 72, 42,106,150,136,102, 51,123, 10,
- 85,205,152, 73, 43, 44, 16,206,123,218, 61,196,127, 12, 59,235,177, 53, 46, 29,169, 86,189, 55,136,234,109,215, 88,166, 26,197,
- 38, 53,233,116,109,198,223, 91,198,222, 80,171,209,234,119, 5,221, 67,164, 25,151, 10, 5, 85,136, 33,154, 93, 49, 37, 18, 15,
-233,100,202, 97,150,139,131,132,251, 87,179,251, 79,179,194,224,147,101,216,244,202, 5, 90,229,159, 17,119,149,211, 72,110, 69,
- 46,248,110,163, 29,217, 43,129, 66,171, 79,122,116,167, 35, 90, 76, 72,147, 37,216,236, 37,215, 98,203,117,126,245, 45, 50,100,
-114,186,222,133,219, 60, 77,113, 16,220,102, 29,123,136, 11,214,170, 86,194,217,230,148,229, 46, 98, 20,211,128,115, 50,125,254,
-146,190,100,228,116,200, 4, 30,163, 7,187,151, 72,226,234,249,165, 72,105,119,173, 54,145,119,199, 91,105,138, 42,209,169,240,
-173,203,214, 44,100,188,211,178, 16,205,110,152,208,135,112, 48,176,215,197, 10,171, 13,109,124, 69,109,200, 97, 95, 24,214,226,
-126, 46,204,248,131, 53,169,253, 34,207, 26, 53,144, 71, 4, 79, 21, 56, 17,133, 22,229,150,231, 57, 26, 1, 47, 34,187, 2, 44,
- 52,198,170,139, 50,202,126,130,126, 47,120,111,192,109,194,252, 57,154,229,220, 65,148, 9,205,116,180,137,154,214, 10,186,170,
-162, 10,137,109, 91, 69, 71,150,198,235, 25, 10, 22, 25,169,163,100, 69,105,125,166,116, 70,126,237,240,173,188,242,233, 18,100,
-237, 93,235, 42, 60,202,109,114, 92,138,190,220,221,209,196,104,148,181, 76, 74, 16,170,157,149, 92,105,110,132,210, 43,242, 74,
- 19, 42,158,164,115,198,158,234, 36, 48,143, 6, 66,144,210,247,177, 85,202,124, 85, 41, 50, 23,238,234, 96,171,220, 84,131,201,
- 81,167,186,242, 66,220,103,194,112,116,136,167, 49,204,218,135, 38,114,149, 36,142, 82,142, 24,109,205,249,100,111,109,188,154,
-141,169, 87,121,132, 69,149, 25,154,133, 12, 70,102, 35,244,170,162,202,228,211,227,215,160,171,156, 70, 90,220,109,197,198,112,
- 60, 25,150,134, 86, 98, 60,242,193, 74, 54, 70, 21,203,185,137, 49, 41,209, 55, 38,242,181,228,211, 26, 17,157,129, 46,114, 42,
-180,121, 76,135,128,240,207,214,112,156,148,134, 86, 18, 75, 79, 49, 33, 50,163,165,120,248,146, 57, 73,105,106,159,147, 26, 7,
- 37, 20,121, 74,249,129, 29,199, 81,176, 38,192,147,176,176, 11,229, 39, 28,113,196, 92, 57, 81,148,103, 21,249,110,121, 69, 46,
- 69,155, 81,200,201, 87, 73, 60,114, 67, 44, 19, 46,155,235,139, 65,117, 46,165, 73, 11, 30,131,175, 80,250,185, 64,199, 74,170,
-247,117,187,111, 83,215, 94,171,203,137, 65,135, 79, 67,143,174,161,207, 41, 13, 62,140, 15, 16, 83, 24,105,167, 37, 84, 28, 81,
- 82,130,227, 69,105,245, 45, 71, 41, 66,191, 91, 76,133, 87,124,171,187,130, 29,167,217, 76,213,237,251,106, 66,189,205,119,162,
- 28, 98, 37,199, 86,142, 16,162,185, 54,235, 12, 41,106,181,161,242, 45, 99,199,119,154,162, 48, 80, 81, 16,158,154,182,205, 62,
-117, 86,178,221, 66,238,151, 81,166,214,156, 82,227, 66,168, 73,171, 77,171,198,152, 82,188,180,236, 27,145,222, 95,115, 36,148,
-242, 70, 81,136,160, 29, 56, 67,138, 29, 54, 42,202,179,153,139, 37,154,143, 44,138, 93, 90,115, 13,179, 42, 84, 55, 84,228, 58,
-130,154, 32,177, 34,167, 76,116,248, 83,164,158, 85, 21, 58, 66, 29,194,202, 84,242,134, 53,191, 74, 37,168,148, 34, 92,139,239,
-126,187,219,125,133,150,228,146, 47, 98, 55,179, 1,136, 86,103, 62, 91, 69, 8, 36,153,106, 8, 60,182,111, 58, 40,216,157, 54,
- 98, 36, 0,234,243,171, 58, 3,101,229,106,179, 43,139,104, 91, 70, 44,120,176,217, 45, 59, 21,146,164, 50,232, 71, 43,133,111,
-117, 90,230,100,144,252,149, 40,149, 41,210, 74,150,181, 21, 44,149,171, 39, 97,160,209,196, 74, 98,138,211,204, 1,101, 39, 41,
-232,160, 84, 80, 91, 86,122, 5,117,207,217,171, 93,167, 74,230,109,190,118,227,151, 50, 18, 67, 73, 80,101,207,212, 10, 45,182,
-190,169, 65, 32, 16, 14, 72, 61, 50,113,157, 59,206,211,128,167,184,215,134, 84,218,139, 67, 9,202,136, 9, 81,207,134, 79,235,
- 28, 17,243,252,113,169,165, 53, 56,166, 68,176, 35, 72, 23,245, 29, 5,183,191, 78,155,254, 24,174,234,171, 13, 76,138,146,157,
-228,111, 49,216, 94,228,111,219,173,201, 22,181,250,250,130,207, 61, 76, 83, 78,129,201,136,206, 30,102,214, 63,241, 74, 61,219,
- 81,242, 79, 81,141, 92, 33, 83, 11, 11, 43, 74, 70, 79,235,128, 48,146,159, 95,183, 89,187, 48, 16,248,113,190, 78,100,130, 82,
-160,176, 65, 32, 28, 5, 99,215,168,252, 53, 65,216,162, 34,146,199,235, 39, 31, 2,200,193,233,215,144,231, 79, 81,206,164,117,
-233,252,125,253,240,213, 89,206, 82,241,176,243, 14,190,132,117, 7,227,110,189,143, 94,183,197,134,155, 9, 14, 77, 73, 35,160,
-115, 31,105,236,123,140,118,214,207,217,208, 91, 67, 45, 2, 19,212, 36, 12, 14,163,212,156,142,135,247,233,135,163, 69, 10,155,
-158, 95,135,196,200, 0,103, 57,200,252,115,173,138,183, 84,150, 18,214, 79, 47, 42, 82, 64,200,200,192, 25, 63, 34, 51,173,102,
-107,129,181,255, 0,158, 33, 53,234,201, 4,224,108,194,246,251,207,207,175,124, 57,232,109,180, 51,202, 72,248,130,113,142,248,
- 78, 0, 31, 35,235,246,233,191,188, 42,206, 66,108,193,167,132,253,103, 41,181, 0, 71,255, 0, 2,140,174,134, 73, 35,245, 92,
- 39, 33, 30,121,235,229,171,141, 90,228,106, 11, 32, 52, 80,236,183, 73, 12, 70, 4,229, 74, 7, 30, 43,152, 63, 3, 41, 29, 84,
-123, 28,224,100,235, 5, 13,173,197, 57, 46, 67,138,125,249, 46,120,146, 95, 88,253,117,156, 97, 40, 39,245, 91, 0,225, 35,176,
- 29,180,142,179, 80,220,168,205,149,126,211, 15,223,164, 16,122,250,158,195,208,145,134,108,155, 45,116,149,107,106,210,241, 41,
-186,161,255, 0,120,194,221, 71,236, 47,127,218, 35, 79, 77, 86,176, 66,163, 8,205,225,197, 43, 56, 37,105, 65, 56, 36,252, 75,
- 82,212,174,171,112,149, 28,156,245,207, 93, 15, 45,216,241, 57,146, 57, 27, 56,200, 72,192, 89, 78, 15, 85,168,159,128, 99, 39,
-226, 63, 33,223, 89, 20,167,114,130, 10,130, 80, 72,248, 26, 31, 30, 65, 0, 16,165, 3,208,231,174, 61, 61, 53,129,212,188, 52,
- 7, 20, 82,214, 78, 74,148,226,186,164,228, 18, 84,181,103, 36,244,238,122, 30,157, 53,185, 26, 44,106,170,160, 1,238,236, 54,
-253,214,249,247,206,169,100,122,153, 25,234, 36,251, 71,160,233,212,122,216,124,236,119,197,146,116,196, 43,156, 23, 20,234,176,
- 66, 83, 24, 44, 50, 18, 79, 66,235,132,167,159, 61, 50, 50, 18, 9,206, 15, 83,172, 58,116,165, 37, 64, 4,182,218, 73,199, 59,
-139, 10, 82, 73, 66,186, 33, 13, 30, 94, 96,174,108,228,231,168,198,123,139,140,202,131, 79, 30, 70,148,227,238, 33, 74, 65,102,
- 43, 97,196, 54,147,211,226, 81, 41, 74,129, 0,103,226, 56,236, 70, 51,172, 78,114,228,243, 5, 43,193,100,115,243, 36,120,134,
- 75,201,194,128, 42, 71, 54, 17,204, 60,206, 74,114,122, 18,116,112,214,210, 59,223,241,219,240,190,226,251,116,251,158,201,176,
- 10, 23, 73, 61,143, 95,141,182, 61, 58, 16,167,226,118,197, 23,220, 24, 42, 82,202,147,250, 50,234,130,146,217, 45, 36,168,133,
- 45, 94, 71,175,197,215,174, 49,223,174,177,233, 50,208, 66,131,105, 61,214, 66, 64, 78,114, 64, 32,244, 61, 27, 42, 36,100, 30,
- 80, 0, 29,250,232,185,104, 66, 49, 33,199, 21,150,220, 43, 66,158, 90,158, 9, 94, 72,229, 74, 84,180,165, 36,173, 63,234,146,
-156,146, 6,173,114, 20, 80,180,165, 72, 80,112, 20,145,206,164, 41, 92,139, 1, 96,182,144,172, 56,130, 20, 14, 50, 0, 39, 56,
-233,141, 46,141, 98, 54,244,254, 95, 29,247,198,133, 76, 90,206,166, 58,175,233,178,237, 97,238,254, 93,189,215,178,204, 42, 33,
- 93, 64, 42,248,136, 81, 57,235,147,209, 95,205, 61, 51,156,117,229,239,140,107, 16,158, 7, 42,147,206, 74,138, 85,241,171,148,
- 17,140, 96,145,216, 96, 12,125,253, 6,178,233, 89, 1, 42, 89, 0,224,140, 40, 16,146,179,204,164, 55,201,216, 60,158,153, 29,
-114, 59,100,118,197,106, 10,207, 40, 35,170, 73,230, 36,114,149,103,155,161, 9, 87, 86,241,147,231,213, 88,193, 58, 92, 49,218,
-223,135,110,159,187,221,238,253,216,103,145, 0, 34,219,123,186,124,143,147,136, 13,251,114,237,134,237,143,105, 46,242, 73, 13,
- 22,133,233,109,109,125,248,227,197, 1, 40,126, 69,118,199,166,197,148,182,249, 0,241, 0,122,146,174,101, 31,136,168,158, 98,
- 78,117,200,194,180,168,126,137,101, 88,239,233,246,107,183,127, 72, 24,180,175,104, 99,158, 27,161,215, 19,195,254,205, 37,246,
-129,255, 0, 34,180,195,184,124, 52,148, 17,150,202,152, 45,175,169,201, 11, 7, 0, 99, 92, 70, 83,105,199, 81,140,246,229,242,
-249, 29, 75,178,155,181, 13, 41, 59,217,109,211,176, 36,116,235,219,242,199, 51,241, 50, 44,124, 69,158, 34,159, 47,181,212, 31,
-255, 0,116,172,199,247, 18,113, 76,168, 40,116, 72, 29, 62, 47, 63,188,117,208,235, 35, 24,207, 92,244,254,221, 86, 40, 35, 62,
-152,207, 95,232,251,116, 51,133, 67,168, 78, 71, 81,243,251,244,236, 6,194,221, 48,206,160, 29,173,211,161,253,216,162,179,229,
-143,191,211,175,217,170, 11, 0,227,176,245,245,199,175,207,160, 58,244,188,254,177,201, 82,124,188,177,231,246, 29, 81, 39, 39,
- 58, 93, 70,194,221, 63,158, 20, 24,164,230, 60,136,232, 72,244, 39,183,109, 12,178, 9, 61,242, 59,122, 30,223,214,116, 74,241,
-130, 73, 3, 7,167,246,245,213,189,240,234,136,240,212,148, 97, 95, 22, 70, 74,128,236, 58,249,233, 68,235,140, 3,126,155,227,
-193, 36,156,254,113,165,175, 10, 63,237, 99,238,206,116,180,125, 62,182,191,207,191, 25,199,180,146, 15, 65,159,151,174,171,165,
- 93,142, 58,142,227, 61, 70,135, 31,120,254,145,251,117, 92, 96,245, 30,127, 46,250, 37,188,191, 15,195,231,231,124, 12, 86,241,
- 19,156,117,235,231,142,159,126,136,111, 10,193, 74,187, 28, 99, 24,201, 62,191,136,252, 53, 65, 9, 0,131,220,244,251, 58,232,
-164,225, 61,178, 7, 94,221,254,236,246,210, 76, 24,139,124,252,223, 25,219,239,197, 69,160,168,119,233,221, 93, 78, 6, 49,216,
-125,186, 33,164,115, 36, 40,247, 29, 66, 71,160,233,235,170, 64,133, 15,207,113,215, 69, 36,242,224,244,244, 35,208,105, 34, 0,
- 39,190, 49,143,104,101, 42,238, 57, 85,215,168,198, 72,251,188,244,123,104, 72, 72, 24,201, 79, 78,191,187,166,132, 65, 39,226,
- 72, 25,244, 39,167,152,251,180, 90, 22,144, 1, 87,195,147,231,252,236,250,124,244,153, 23,216,158,159,233,140, 17,124, 28,214,
- 58,114,244, 24, 61, 62, 93,191,167, 70, 32, 12,103, 39,230, 60,137,199, 94,154, 13,178, 23,215,168, 29,253, 59, 99,250,245, 93,
- 11, 73, 95, 47,114, 62,127,102,127,103,150,147,194, 39,221,190, 13,108,129,145,140,228, 16,160, 70, 82,164,158,133, 36,121,130,
- 9,200,212,133,253,149, 30,214, 40,187, 66,197,191,195, 39, 20,245,169, 15,236,235,143,162, 14,220,110,140,213,189, 54,163,181,
-211,100,184, 17, 30,135,114, 58,162,165,203,177,148,226,240,211,164,149, 65,206, 21,150, 70, 83, 30,118,242, 14,122,121,126,206,
-218, 33, 39, 37, 68,227,168,229, 32,128, 82, 65,232, 65, 7,184, 56,237,231,157, 55,102, 89,109, 54,103, 78,208, 84, 37,251,171,
- 11,106, 86,236, 71,240, 32,236, 71, 81,211, 14,249, 22,123,153,112,230, 99, 22,103,149,205,202,158, 63, 43, 43, 92,199, 44,100,
-130,209, 74,160,141, 72,214, 29,195, 41, 1,144,171, 0, 71,233,189, 78,163,199,149, 6, 5,118,137, 50,159, 88,161, 86, 97,179,
- 50,145,112,209,228,179, 81,164,214, 32,202, 66, 93,106,101, 62,161, 25, 74,109,214,150,210,146, 82, 66,186,115,105,198,165,210,
-220, 45, 54,156, 0,210, 18,130, 16,156,144,132,160,130,113,234,163,215, 63,102,191, 63,142, 13, 61,168,188, 90,112, 88, 35, 91,
-187,121,119,179,119,109,106,165, 54,185,123, 83,184, 1,218,213,172,195, 74,112, 25, 31,193,231,222,112,191,110, 58,164, 21,224,
- 48,176,215, 49, 7,195,198,117, 59, 45,161,226,130,149,124,109,157,131,126, 59,105, 34, 25,190,109, 42, 53,196,184,241, 30, 15,
-198,138,237, 78, 35, 82, 31,140,211,167,245,219, 66,220, 41, 7,190, 19,170,167, 56,203,165,200,101,140, 85,149,104,230,213,203,
-101,189,155, 78,155,220,117, 82, 3, 46,198,227,123, 43,181,137,199, 98,248,121,226, 4, 60,107, 28,144, 81,211, 52, 25,134, 94,
-168,243,195, 33, 13,165, 88,233, 15, 20,151, 2, 68,212, 8, 23, 84,117,184,212,128, 27,157,174,166,211,138,218,110, 68,166,202,
- 12,226,136,177,129,232,166,216, 72,248,148, 83,159,213, 41, 3, 58,199,247,101,136,115, 44,202,189,191, 58, 53, 62,165, 75,147,
- 13,232,255, 0, 85, 84,225, 70,168,193,124, 22,212, 1, 92, 57,109,173, 42, 25,207, 92,107, 7, 94,247, 82,222, 44,120, 49, 37,
- 54,166,153, 62, 27, 97,162,180,183,147,212, 19,228,122,244,251, 53,166, 60, 82,241,139, 69,219,203, 98, 69, 54,140,180, 86,247,
- 30,234,150,139, 66,201,183, 25,149, 29,233,234,185, 42,196, 70,134,169,113,219, 89,247, 70,154, 91,161,107, 46,114,242,132,100,
-244,206,153,205, 97,168, 2,158, 4, 44,100,219,125,135, 64, 78,228,219,222, 73,244,222,221,174, 76,131, 35,204,179,124,218,130,
-135, 45,164, 51, 85,202,227, 76,106, 62,206,255, 0,109,219,126, 90, 70,190,103,145,136, 84, 93, 78, 72, 23,191, 48,247,123,113,
- 54,107, 98,106,146,105, 9,180, 41, 21,123,162,141, 80,151, 62,153,110, 91,228, 81,105,212,218,178,156,241, 34, 77,169, 72,130,
-226, 75, 2, 57,229, 90, 91, 71, 95, 19, 25, 61, 49,174,102,239,183, 16, 27,245,196,245, 64, 82,110,171,182,181, 46,217, 96, 6,
- 35,218,212,137, 51, 32,219,108,198,105, 92,201, 85, 69,199, 30, 6,166,164,128, 10,220,112,144, 72,251, 53,214,202, 31,178,178,
-163,118, 58,154,214,227,110,196,250,141,229, 94, 90,234,215, 82,232,240, 89,168, 70,166, 84,170, 4,190,168, 41,121,249, 0, 76,
- 90, 29,119,151, 56, 9,248, 73, 25,214,146,202,219, 91, 51,104,184,161,111,104, 55, 2,101, 83,114, 54,198,194,191,169, 77,110,
- 68,221,177,164, 63, 85,175,214,237, 88,241,211, 82,147, 76,141, 78,128, 22, 91, 87,142,150, 98,205, 74, 85,132,248,171,248,142,
- 53,173,150, 83, 84, 83,203, 81, 44,142,139,160, 27, 2,160,233, 3,114,117, 16, 12,141,127, 70, 80, 9, 35,125,241,233,239,130,
- 41,224, 38,103, 13,117, 54, 67,153,205,226, 87, 28,112,190, 95, 45,125, 92,210, 83, 86,187,242,226, 42,178,174, 80,149,113,165,
- 44, 65,229,100,134, 4,141,150,122,141, 81, 51, 73,162,237, 30,168,196,225,210,109,131,180,183,158,251, 93,182,173, 90, 77,131,
- 96, 89,181, 75,242,173, 86, 98, 49,102, 9,183, 41, 18, 99, 82,213, 61,169,147, 28,108, 26,115,213,233,208, 41,241,139, 73, 89,
-155, 50, 88, 98, 57, 82,144,225, 71, 44,173,110, 47,174,107,174,254, 98, 13, 58,249, 85, 6,131, 87,171, 39,220, 44,241,181,244,
-153,180,166, 32, 5,149,154,122, 42,162,227, 19, 75,165,128, 71,188, 56,178,174,115,204, 82,145,128, 36, 3,237,235,223,234,222,
-215,112, 55,182,219, 31, 86, 98, 61,181,187,220,112, 95,208,183,126,253,180, 97, 54,220, 21,109,191, 13,155, 89, 33,113, 54, 95,
-106,218,165, 50, 18, 40,148,150,231,154,107,198, 55, 42, 67,242, 41,179, 93,113, 42,113, 74, 86,162, 97,177, 48,209, 39,113,161,
- 58, 64, 13,211,225, 75,148, 51,140, 36,165,190, 84,143,159, 65,171, 75,135,178,168,107,242, 90,172,214,180, 51, 59,234, 16,134,
- 17,190,133, 64, 20, 55,158, 54, 2, 70,146,225,136, 0,174,157, 43, 97,185,243, 63,233, 63,244,231,241, 66,159,196,102,225, 15,
- 14, 51, 37,224,188,143,132, 9,142,161,114,156,207, 55,165,122,154,211,180,201, 83, 95,148,230, 89,116,181,212,212,192, 8,224,
- 5,150, 25,142,186,190, 84,124,245,138, 25,117,109,141,230,157,201,225, 47, 99,174,184,147, 81, 37,251, 42,185,185, 27,109,239,
-116,234,109, 66,219,122, 4,155, 82,247,170, 85, 97,120, 77, 63, 82,121,198, 42, 45, 83,110,106, 65,247,182, 36,165, 14,184,226,
-150,194, 25, 9,113, 3,110,182,151,139,125,212,183,132,104, 23,139,113, 55, 18,137, 24, 33, 42,171,202,150,138, 77,231, 10, 58,
- 80,148, 41,215,106,105,101,113,238, 23, 2, 0,109, 6, 99, 41,127,224, 0,190, 84,115,174, 89,251, 50,110,182,111,109,161,226,
- 3,101, 36, 58,211,149,138, 21, 94,218,222,203, 78, 35,202, 81, 46, 82,231,199, 69,129,126,193,167,180, 63, 93,214,103,194,179,
-170, 50, 48, 15, 42,103, 21,168, 17,147,174,130,217,182, 49, 51,154, 91,177,188,102,144,164, 58, 35,144,191,242,169, 25, 99,159,
-148,124, 72, 7,226,207, 80, 49,207,131,216, 83, 92, 69, 69, 29, 6, 99, 95, 73, 34,235, 8,250,148,236, 9, 14, 17,197,138,133,
- 2,215,210,116,217,110,164, 91, 97,105,119,134, 62, 33,208,248,151,225,118, 89,196, 28, 81, 28, 85,249,213, 91,213,189, 89, 99,
- 36,143,237,143, 83, 41,169,117,146, 89,165,169, 6,105,139, 75,170, 73,228,145,245,134,150, 73, 9, 44,122, 97,110,111,221,149,
-120, 67,165,189, 58,161, 34,214,201,105,134,233, 55,148, 69, 83, 11, 50,221, 90, 92, 68, 40,213, 72,110,200,135, 46, 73, 41,108,
-171, 14,167,245, 84,130, 65,200,211,166, 94,171, 84,102, 51, 47,194,143, 89,131, 9, 5,184,240,105, 85, 40,147,218, 74,222, 40,
- 89, 97,227, 2, 67,137, 97, 78,252, 5,254,110, 85,114,132, 39, 9, 72, 32,233, 93, 14,201,122, 65,143, 22,156,212, 69, 86,100,
- 46, 44,135, 38, 57,135, 33,219,180,231, 22,234, 83, 60,161,192, 10,170,170, 8,144, 33,178, 71,233, 29, 30,242,191,208,181,133,
-191,182,125,129, 22,137, 24,184,219, 16,105,244,122,116,229, 24,172,196,140,227, 51,106, 82, 37,172, 0, 92,153,226, 37,249,213,
- 57, 83, 22,165, 18,225, 82,222,113, 69, 74, 9, 71,234, 68, 9,208,198,209, 94,219,218,228, 15, 83,112, 65,184, 62,227,110,189,
-109,178,169, 62, 83, 5,218,149,249, 37,181, 42,198, 87, 89, 80,199,253,217, 86, 70, 70, 98,204, 20,146, 89,197,201,101, 22,230,
- 59,242, 41,215, 69, 77, 73,128,236, 67, 18, 58,167,154,138,231, 60, 4,102,158,150, 80, 82,130,218,157,115, 45,198,101,174, 84,
-165, 1, 68,114, 52,130,156, 99, 89, 45, 34,212,134,228, 73, 16,146,227,205,181, 1,201, 78, 77,171, 38, 42,218,143,227,144, 4,
-201, 12,201,115, 36, 71, 12, 32,165, 43, 3,226,248,212,144, 10,146, 53,126,180,172,233, 73,154,154,212,168,202, 93,197, 80, 97,
-136,104,140,211,242,100,192,162,196,109,194,166, 41,208,221,148,163,201,135, 23,227, 62,232, 78, 95,127, 36, 0,218, 27, 1,238,
-160, 90,138,170,136,112, 34,196,122,116, 24,179, 26, 97,224,201, 66,151, 91,158, 22,121, 26, 8,112, 2,184,136,155,133, 28, 30,
- 89, 15, 32, 1,204,132,117,220,138, 25,100, 69,141, 33, 42, 95,185,185, 36,108, 64,216, 41, 3,125, 76,119, 96, 54,234,214, 58,
- 53,249,220, 11, 78,232,142,144,194,128, 23,101, 1, 6,175,214, 62,103,112,219,249, 82,197, 84,238,108, 17,110, 52,139,118, 47,
- 29,184,225,215,110, 42,187,173,184,204,207, 72, 80, 85,167,183,182, 36, 9,173, 70,184,111,106,192, 66,170,116,219,106,146,227,
-200, 80,164, 50,235, 10, 77, 66,191, 84,117, 10,106,153, 79,228, 73,241, 36,174, 36,119,184, 21,190, 59,243,185,156, 69, 84,159,
-170,238, 77,125,233,212, 64,224,114,153, 96, 80,157,149, 74,219, 91,113,168,200, 9,139, 79,161,218,173,191,225,204,247,118,130,
- 18,103,207, 18,106, 18, 92, 10,125,231,194,214, 80,151,139,218, 61,196, 11, 91,199,196,197,237, 22,149, 81, 84,157,189,217,229,
-191,180,182, 2, 88, 11, 17,100, 68,160,212, 84,221,239,112,178,210, 9,241,102,214,111,225, 52,151, 48, 84,168,148,168, 76,161,
- 74,109,180,160,115,231,137,235,103,118, 56,127,147,104,217, 55,156,251,107,111,175,235,178,220,141,117, 86,109, 75,154,123,113,
-238, 29,183,163, 87, 2, 87,106,211,239, 74, 50,150,145, 64,189,234,148,231, 29,158,154, 36,149,174,165, 75,167,166, 52,138,188,
- 24,138,159, 21,133,236, 83,112,252,185,180,169, 8,169, 20,176,234, 0, 18, 88, 7,176, 39, 89,211,114,119, 4, 70,189, 44,161,
-148, 22,190,159, 75,188, 43,225,207, 12,190,140,158, 22,229, 62, 49,120,177, 11,207,199,124, 79, 74, 43, 96,166,138,138, 92,199,
- 54,166,167,120, 99,153, 50,252,166,134, 37,121,162,150, 40, 36,137,243,154,231,228, 65, 75, 44,172,185,141,117, 61, 12, 49,202,
- 64,184,109,119,103,132,181, 74,129, 79,134,194,135, 43,190,237, 21,191, 29,100, 96, 37, 40,117, 73, 82, 99, 35, 32,124, 88, 42,
- 63,170, 53,226,221,219, 54,154,144,210,159,144,184,110,188,191, 9,111, 50,130,176,158,110, 80, 84,251,171,202,128, 1, 93, 73,
-229, 25, 56, 37, 0,140,233,155,215,238,236,178, 81,245, 6,230,196,184, 38, 72,117,114,146,204, 10,157, 18,124,222, 68, 55,238,
-229, 13,192, 85, 62, 51,171,139,134,207, 35, 41,140,233,231,202,146,147,144,117, 96,166,239,230,251, 91, 78,170, 52,187,154,100,
-238, 69,175,198,143, 95,161, 83,106, 18,154,101, 79,165,231,152,117,164, 67,133, 45,134,212, 82, 91,194,156, 5, 45, 44,164, 2,
- 66, 84,155, 34,147,133,243, 36,165, 20,116,217,188, 35,151,238,126, 97, 4,254,177,125, 68,239,211, 82,223,173,172, 0, 24,167,
-179, 47,246,170,125, 30,232,243,104, 31,139,124, 24,227,142, 30,161,169,102,142,147, 50,172,203, 50,121, 41,229, 42, 69,218, 3,
- 30,118,241,202, 0,243,200, 41, 94,165,129, 22, 42, 88,227,163,116,203, 17, 8,185, 93,183,106,208,252, 38,221, 75,239, 69, 82,
-148,212, 98,226, 86,217,118, 44,165,167, 9, 65,101,223, 60,148,144,181, 96,168, 43, 0,252,174, 91,214,181,183, 10,117, 86,179,
- 50,153, 73,166, 83,194,214,252,233, 83,209, 26, 43, 44,162, 64,140,219,206, 58,234,210,112,235,191, 11, 64,100, 44,244, 4,168,
-145,172,123, 98,119,186,189,184,148,118,141, 70,148,197, 50,191,111,207, 66,201,167,161,249, 52,249,241, 42,212,229, 7,204, 15,
-126, 66, 92,110, 3,140,161, 73,118, 19,202, 81, 97,108,148,161,199, 27, 91, 78,107, 86,119,238,216,221, 43,230,252,250,182, 13,
- 58,183, 46,147, 70, 13, 38, 4, 56,116,185,179,162, 69, 46,180,223,141, 81,142,184,140, 41,147, 41,114, 84,242, 75,171, 82, 84,
-194, 91, 72,230, 64, 90,214,181, 33,200,201,170, 43, 89, 94,208, 24,128, 15,166, 66, 20,216, 3,112,111, 96, 88,110, 78,159,118,
-155,220, 99,160, 60, 98,250, 99,112,207,134,255, 0, 71, 46, 29,250, 64,120, 83,195, 50,248,169,148,241,245, 69, 30, 93,144,193,
- 67, 79, 83, 28, 82,215, 85,189,122,153,115, 32,105,154,178,134, 26,105,168,101,163,146,156,211,189, 75,102,130, 44,173, 68,114,
- 77,207, 71,110, 15, 18, 59, 61, 18,251,183, 45,234,180,107,233,187, 1,250,171, 17,238,235,214,213,164, 83,170,247, 53, 22,146,
-247, 59,114, 43, 22,149,141, 85,159, 17,119,100,134, 63, 68,234,163,187, 34, 18,164, 53,206,152,138,117,244,161,183, 58,193, 87,
-225, 15,135,235,154,206,165, 93,187, 71,198, 37,215,186, 16,174, 74, 84,106,197,183,252, 7,217, 27,135,115, 66,233,111,133,248,
- 82,110, 88, 27,108,185, 18, 44, 98,226,138,217, 76, 74,176, 98,168,211,208, 31, 14, 67,113, 0, 40,199,138, 77, 58,219,219, 50,
-244,105,201,133,114, 94, 12, 56,227, 82,225, 41,246,106, 20,107,126, 74, 1, 10, 21,105,145, 29, 83, 87, 29,105,183,135, 90, 99,
- 14, 24,108,168,230,161, 33,210,145, 21,121,134,197,241,157,196,167, 13,119,204,187,239,101,247, 94,228,180,103, 85, 93, 74,238,
-122, 27,239, 11,130,196,190, 89, 74, 3, 65,139,247,111,234,106, 52,187,152, 37,129,200,203,193,152,211, 98, 54, 3,112,101,197,
-108, 4,133,235, 56, 58, 10,228, 87,202, 71,178,152,134,242, 75,119, 19, 27,222,225, 88,150, 31,254, 96, 54, 34,214,141,213,129,
- 30, 77, 63,251, 74,190,146, 28, 63,196,245, 21, 94, 41,241, 81, 90,138,137,238,120,103,135,232,114, 90, 51,145,166,250,161,204,
- 42,243, 28,191, 56,115, 80,172, 17, 36,201,106, 30,171, 49,165, 99, 58,215,215,101, 85,180,199, 46,155,165, 84,250,206,231,112,
-167,186, 84,202,229, 58, 84, 41,147,169,133,248,238,197,175, 91,119, 93, 18,221,187,232,146, 84,224,168,218,183,125,171,122, 80,
-169,146, 69, 62, 91, 77,165,197, 50,182,199,186,202, 90, 37,197,125,153, 76,161,221, 73, 67,102,161,181,186, 27, 75, 97,238,133,
-149, 75,174, 53,111,223, 86,211, 87,109, 54,213,185, 35, 77,146,237, 17,137, 14,200,167, 84,169, 77, 86, 23, 24,190,212,104, 85,
- 56,114,217, 98, 72, 75,241,159,101,166,228, 0, 16,240, 9,226,206,213,123,125,246,154,253,183, 26,179,248,203,225,125,202,139,
- 46,178,168,179,235,251,104,229, 22,255, 0,179,166, 52, 82,164, 41,247,246,211,115,158,110,161, 69,150,180,149,143, 14,155, 84,
-150,134,210,172, 54,180,249,236,206,213,123, 69, 61,143,214,236,216, 85,123,123,115, 55,238,195,166,195,122, 53,197, 19,108, 46,
- 26, 79, 16, 44,236,253, 26,226,128,250,223,131, 85,141,183, 84,234,188,232,106,173,199, 90,212, 89,142,137, 15, 83, 81,144,125,
-209,101, 40,228,141, 47, 10,102,180,149, 86,154,156, 24, 92, 29,108,129,135,154,226,204, 2, 44,137,115,111, 54,226,254, 93,182,
- 24,147,120,185,244,188,240,119,233, 7,195,249, 54,103, 93, 17,224,159, 17,114, 33,203,106,209, 45, 37, 92,121,173, 8, 71, 34,
-150,170, 58,150,200,101,166,150, 41,220, 61, 44,139, 5, 76,112,171,213, 71, 20,136, 39, 4,118, 6, 29,186,134,194, 27,148,195,
-193, 62, 44, 68,187, 21,106,102, 84, 30, 70, 85,205,142, 80,158, 87,201, 81, 7,153,192, 0,192, 80, 64,211,149, 66,165,180,203,
-136, 67,104,240, 27, 90,130,130, 17,226, 37,166,148,162, 1, 67, 73, 94, 66, 83,252,227,140, 39, 39,160,215, 35, 46,223,110, 95,
-179,178,219,105,233,244,219,195,120, 47,233,139, 89,112, 67,182,118,102,191, 77,247,149, 21,115, 41,196,213,175, 41,244,200,241,
- 80, 85,142,139,201,194,137, 9,207, 77,115,159,136,255, 0,164,222,229,137, 30,163, 15,134,190, 13,228, 85,153, 9, 87,213, 91,
-165,191, 87,204,167, 45, 40,174, 45, 76,182,204,169, 86, 14,216,198,101,228,255, 0,133,202,109,178,212,219,137,132, 41,194,148,
-158, 96,180,131, 37,202,248,118,182, 90,133,138, 42,118,185,221,117,133, 75,133, 32, 29,216,168,185,189,236, 14,163,109,129, 0,
-219,143,243, 63, 16,184, 90,150, 55,105,115,232, 42,165, 31,169, 77, 42,212,177, 32, 14,130, 18,226,224, 0, 53, 57, 0,216,238,
- 55,196,195, 45, 68, 22,211,205,146,176,133, 54,151, 20,132, 15,133,229,231,144, 40,224, 37, 5, 65, 39,151,155,148, 18,158,152,
-235,167, 48, 77, 75,205,166, 35, 10,241, 36,158, 64,164, 52, 60, 79, 9, 9,207, 48, 83,160,114,149,103,148, 96,103,182, 73,215,
-230, 7, 43,219,203,237, 79,157,190,246,230,253, 61,196,180,212, 75,181, 94,156,213, 51,101,233,182,221, 22,223,225,210, 69, 2,
-168,227, 11,169,218,181,125,167,162,176,212,122,212, 25, 8,142,218,126,176,154,244,170,211, 68, 7, 88,168,182,234, 82,177,213,
-203,167,233, 12,113,211,199,133,235,182,188, 54,240, 99,176,227,101,238,251,254, 37, 46,135, 81,183,246,214,113,190,247, 95,112,
- 47, 39, 98, 37,203,129, 54,157,199, 86,136,195, 22, 53,140,193,106, 91,252,225,149,204, 98, 19, 75,118, 84,180,165, 7, 18,169,
-178, 74,170, 69, 51, 56, 73,209, 23, 81,210,224, 42,219,115,204, 50, 5,109, 34,219,149, 87, 3,115,219, 16, 36,241, 71, 32,204,
- 22, 85,167,138,163,219, 12,129, 32,128, 37,228,152,177, 1,116, 88,216, 92,246,107, 17,218,230,195, 19,125,171, 92,246,205, 30,
- 90, 32, 84,171,244,168,149, 5, 16, 61,205, 83, 89,247,180,147,216, 56,218, 23,148,121,247,198,178,122,125, 22, 5,114, 40,154,
-138,154, 22,210,134, 80, 99,180,183,112, 79,162,136, 1, 95,118,123,235,152,220, 17,123, 63,247, 3,103,237, 26, 77,219,197, 85,
-255, 0, 51,114,119,174,160,202, 42, 21, 90, 12, 74,180,170,149,181,104,202,120, 37,197,211,222,171, 73, 81,114,229,171,182,181,
- 40, 63, 37, 88,100,184,149,120, 41,228,194,143, 75,153,101, 48,185, 91,107,153,134,155, 1, 8,109,165, 41, 41, 74, 64, 1, 32,
- 4,224, 99, 3, 80,103, 78, 51,204,101,157,185,180, 57, 21, 10,146, 34, 81, 20,149, 19,184,236,206, 95,148,177,131,216,104, 15,
-110,168,167,108, 60,209,182,123, 57,246,138,169,146,133, 91,117,142, 38,105,152,127,215, 43, 89, 24,145,251, 10, 7,241,197, 84,
-154,117, 14, 91, 72, 18,147, 35, 46,114, 97,104, 83,107, 42, 39, 25, 0,249,254,115,167, 66, 11,229, 77,120,141, 0,191,209, 21,
- 33, 25,229,241, 84, 82, 74, 83,146, 59,103, 90,221, 94, 77, 82,101,118,154,148,130,244, 86,221,202,228,255, 0, 60, 39,160,229,
- 89,254,119,200,247,211,203, 6,164, 88,105,150, 65,236,148,131,147,213, 56, 24,206, 62,221, 45,195,237,153,206, 43,169, 51,119,
- 73,100,164,125, 34, 72,211, 64, 97, 96,110, 1,191, 81,243,214,210, 12,210,138, 24, 41, 40,102, 89, 57,178,213, 33,105, 1, 32,
-244, 32,111, 96, 45,125,246,219,221,139,140, 97, 48, 58,236,154,131, 46,153, 46,146, 87,204,146, 82,132, 15,242,109, 36,167,167,
-132, 6, 59,119,206,190,200,170,100,132,160, 21, 41, 56, 1, 36,134,210,133,100,156,114,158,195,191,225,170,166,170,211,105,248,
-149,212,255, 0, 59, 56, 36,156,100, 15, 64,113,246,235, 24,171,213,226, 60, 10,142, 60, 84,244, 75,137,232,164,103,245, 65, 82,
- 71, 80, 58,100,117, 7, 79,209, 82,242,147, 69, 59,116,245, 27,159, 93,250,111,240,235,241,195,116, 85,144, 77, 56, 50,195,229,
- 27,121,122, 40, 22, 2,202,123, 1,254, 33,247,226,229, 38, 74,212,210,138,159, 75, 96, 2, 2, 89, 3,156,146, 72,192, 46,118,
-242,234, 6,176,138,131,208,130,143, 59,105,144,180,243, 97,114, 84,183, 74, 71,117, 30, 85,124, 41, 72, 32,103,160,201,234, 15,
- 82, 53,100,169,214,165, 52,218,131, 78,182, 91, 7, 5,229,115, 43, 41, 62,101, 9,253, 85, 99, 29,115,128,122, 16, 53,132, 78,
-168,190,250,242,169,137, 87, 33, 4, 48, 26, 80,111, 0, 28,172,132,175,226, 56, 4,128,162, 71,159, 77, 32,237, 34, 54,153, 1,
- 86, 59,239,247,110, 15,243,248,219,221, 40,164,162, 89, 84,201, 21, 66,136,191,195,112,122,116, 32, 11,143,131, 90,221, 78,196,
- 28, 93,170, 53, 86,220, 45,182,214,121,193, 56, 75, 24,202, 63,156,175,242,120, 8, 79,194, 49,147,208,172,140,107, 28,144,185,
- 14,165,196,243, 54,128,227,107, 95, 40, 1,247,148, 10, 82,160,148, 36,114,161,156, 18,146,126, 53, 99, 7,225,193, 26, 21,201,
-165,223,209,170, 87, 43, 69,196,145,224,199,109, 32, 21,142, 84, 37, 68,147,135, 50, 73, 61, 7,235, 99, 61,180, 42,150, 9, 83,
-110, 45,199,193, 66,138, 91, 83,156,173,178, 57, 84,149, 20,132, 36, 4, 47, 4,158,234, 33, 74, 7,212,107, 34, 85, 36, 91,174,
-195,111,187, 14, 2, 4,136, 88, 88, 50,239,114, 9,216,252, 64,239,107,131,210,253,111, 96,106,135, 9,241, 91, 90,152,154,224,
- 81, 10,117,183, 66,150,132,132, 32,132,199, 90, 18, 18,211, 62, 25,202,136,229, 86, 80, 71, 55, 78,180, 86,211,138, 90,218,109,
-210,132,173, 42, 40,195, 97,226,160,188,146,149, 61,202, 17, 24,252, 7, 4,147,128,148,146,114,179,143,162, 72, 66, 20, 93, 82,
- 91, 32,243,151, 0, 13,184,226,121, 87,250, 54,210,216, 3, 57, 40,248,112, 84, 48,188,119,233,112,142, 86,234, 29, 75,124,173,
-161,158,235,112,133, 50, 75,156,174, 56,246, 66,135, 48, 3, 10, 10, 0,128, 64, 10, 4, 29,108, 70,250,118,191,227,252,183,237,
-110,134,223,125,175,163, 80,140,221,139, 15, 94,194,214,251,186,251,205,239,140,110,108, 82,150,189,228, 33,212, 54,225, 10,142,
- 29,108, 40,168, 1,209, 40, 65, 63, 3, 28,169, 5, 42,200,193, 95, 80, 71,124, 14,168, 18,210, 86, 21,203,202, 82,160, 8, 0,
-169, 41, 24, 9, 81, 60,184, 87,196,165,224, 12, 28, 28,231,190,156,202,203, 43,100, 60,180,187, 46, 83,142,128, 90, 68,167, 20,
- 70, 74,148,144,167, 1,235,149, 35,157, 71,249,216, 72, 0, 37, 61,155,106,154, 76,153, 41,136,149, 4,169,231,163,196, 66,202,
-129, 9,117,245, 33,158, 98,160,112, 71,136,224, 32,158,132,126, 26, 84, 48, 2,250,134,223,233,191,126,157,125,253,112,216,241,
- 18,202,161, 65, 55, 29, 0,222,246,181,135,238, 29,126,252, 64, 99,219,127,112,181,112,123, 74,183,173,166, 28, 82,255, 0,130,
-214,206,212, 89,178, 82,176, 66, 90,159, 67,176,105, 47, 75, 67, 68,147,204,215,137, 82, 24, 35,204, 30,154,228,170,206, 51,216,
-231,166, 58, 99,237,251, 53,183, 60,121,238, 60, 93,220,227, 99,138,189,200,132,233,122,157,114,111,133,244,154,114,249,150,180,
-154,125, 6,168,171, 94, 25,104,172,228, 50, 89,161,161, 72, 29,130, 92, 0,116, 26,212,101,246, 56, 61, 59, 96,227, 63,241,212,
-247, 43,140,165, 5, 18,176,179, 8,144,144,122,130, 84, 18, 62, 32,155, 28,114,150,121, 50, 85,103,185,197, 66, 29, 81,207, 87,
- 80,202,123, 21, 51, 57, 82, 15,189,108,126,252, 8,178, 15, 79, 76,232,117,245, 36,142,192,224,252,191,179, 85,214,174,254,137,
-207,231,246,104,101,224, 28,231,161,235,248,233,200,126,252,104, 1,220,109,129,221,230,199, 97,142,189,189, 51,215, 63,159, 61,
- 14, 64, 0, 96,247, 29,126, 71, 68,169, 89, 62,120,252,245,208,202,238, 79,204,253,154, 92,108, 5,240, 48, 58,192,202,135, 67,
-215,243,231,249,198,133, 81, 3, 57,249,224,119,237,229,162, 28, 39,169,249,249,126,125, 52, 26,200,251,199,127,179, 74, 45,198,
-227,126,216,200,253,248,160,178, 50, 58, 3,211,207, 63,184,253,186, 90,240,163,147,159,195,236,210,210,184, 24,175,170,168, 61,
- 49,215,167,225,161, 16,112,122,156,116,213, 97,248,103,161,251, 51,164,216, 90,227,174,173,255, 0, 60,100,245, 38,214,190, 14,
- 73, 56, 0,142,152,239,145,247,116,213, 66,176, 7, 82,172,142,216,249,246,207,222, 52, 58, 84, 83,211, 29, 7,111,236, 58,242,
- 80,162,174,101, 47, 8, 61,128,206, 71,222, 7,174,116,131,222,222,236,101, 69,254,127,150, 46,141,168, 96, 0, 57,137,206, 73,
-254,145,243,192,215,213, 44,173, 73, 8, 39, 9, 56, 87,124,103,247,245,254,141, 80,105,188,242,146,174, 81,158,128,117, 61, 49,
-215, 25,244,209,205,167, 57,192,206,127,164,117,237,249,237,164,172, 79,207,166, 48,109,219, 21, 90, 56, 35, 35, 32,143, 46,221,
- 61,125, 15,125, 28, 57, 72, 79,160, 62,127,205,251, 62,125,244, 50,121,112, 0,252,253,190,154, 37,176, 85,142,192,124,135,244,
-231,207,166,177, 97,123,227, 24,184,178, 15, 76,159, 82, 63,163,247,234,184, 24, 57, 24,201, 57, 7, 31,135,219,161, 16,175, 35,
-231,219,250, 49,162,146,113,220,245,232, 65,198, 59,246,199,175,246,233, 22, 22, 36, 97, 50,187,220,155,223,231,255, 0, 56, 37,
- 43, 8,199, 58,186,159, 32, 59,244,249,104,146,238, 70,113,140,249,250,227,183,159, 77, 4,113,144,190,153, 63, 44,227,184,200,
-252, 53, 81, 36,116, 32,231, 29,201,251,125, 7,150,146, 98, 58,223,225,130,219,221,123,117,193, 41,119, 24,248,249, 64, 32,224,
-227,175, 94,160,122,244,206,167, 39,236,166,220,118,247,115,129,157,165,148,252,148, 73,171, 88, 74,169,237,245, 93, 33, 73, 46,
- 54,186, 44,133, 38, 1,113, 61, 74, 65,132,228,126, 92,227, 35,168,212, 42,118,215,108,110,189,211,185, 98,219, 86,181, 49, 83,
-231, 73, 5,229,186,227,137,139, 78,167,194, 66,128,145, 85,173, 84, 93, 79,135, 74,164,183,252,247,156,234,162, 66, 26, 67,174,
-148,160,203, 23,217, 2,214,215,112,241,106,238,110,209,215,119,102,143, 34,181, 87,151, 2,239,168, 76,172, 75,110,139,108, 53,
- 53,136,201,133, 34, 21,179,239,238, 5,184,218, 82,218, 11,139,119,149,215, 15,196, 91, 66,126, 17, 4,227, 9,104,167,142,154,
-137,228, 6,169, 95, 86,155, 95, 74, 21, 96, 75,158,136, 11, 5, 3, 81, 26,142,194,230,246,184, 60, 26,124,214,135,136,167,204,
- 41,105,100,124,178, 88, 36,167,158, 80, 44,129,137, 73, 35, 0,159,180,193,212, 2, 20, 18,129,238,218, 65, 23,235,214,231, 75,
-174,219, 59, 83,184, 21,235, 93,151, 30,184,224, 91,147, 13, 27,193,104,188,236,105,178, 18, 35, 38,162,134, 82, 50,234,163, 33,
-213,188, 0,207, 86, 70,181,171,102,120, 8,183,217,222,155,115,124, 46, 59,138, 53,229,105,208,108, 90,123, 86, 21, 10, 66,223,
-155, 42,179,121,215, 33,166, 69,211,124,221,210, 95,234,244,211, 45,231, 83, 25,177,128,216,198,122,164,107,107,162,239,150,195,
- 32,148, 57,188,187,110,233,193, 75,141, 34,227,167, 60,130,146, 48,180, 45, 33,226, 20, 8, 39, 35,207, 26, 14,226,227, 7,134,
- 29,183,182,107,183, 12,173,200,163,213,169,246,180, 23, 39,205,163, 89,141,125,115, 86, 84,102,186,172, 83,169,144,129, 84,133,
-127,178,128,126,237, 65,225,142,150,158, 82,226,162, 33,169,116, 0, 89,111,114, 69,200, 23, 59,157,133,183, 61,135, 91, 99,179,
-242,190, 62,226, 28,135, 33,205,114,204,161,165,203, 70,109,205,246,202,132, 82, 30, 74, 87,138, 56,249, 76,250,117, 70,177, 5,
-155, 76,136,234,116, 85, 84, 45,129,101, 97,144,207,224,179,103,238,181, 56,183, 81,123,208,158,152,250,158,156,245,169,125,220,
- 20,116, 60,235,202, 42,121,197, 48,137, 42, 66,150, 73, 60,184, 78, 0, 56,244,208, 91,129,114,240,113,236,166,216,187,155,114,
-235, 20,202,117,183, 21,229,201,153, 69,162,189, 37,138,222,236,111, 13,232,227, 74, 84, 26, 29, 62,109, 77, 74,149, 44, 56,247,
- 39,140,233, 40,139, 17,165, 41,231,112, 0,207, 27,248,128,250, 66,114,226, 82,170, 52,190, 16,184,115,190, 43, 19, 3, 14, 52,
-141,201,220,155,106,174, 41, 84,247,112, 66,100,195,183, 41,209, 86,185, 78,160, 14, 96, 30,113, 8, 56,248,186,103, 81,143,226,
- 11,136,157,247,226,127,114,100,238, 30,253,238, 45,126,244,188,158,105,214,162,199,173, 62,168,205, 81,169,238, 40,172,211,168,
- 86,223,192,221, 6,154, 50, 7, 43, 76,160,168, 1,206,181,158,186,127,203, 56,124,207, 46,161, 18,211, 34,253,166, 54, 14, 6,
-215,180,103,204, 24,247, 50, 42,129,179, 89,197,215, 20,239, 27,253, 36,248,135,244, 13, 71, 12, 80,113, 94, 97,196, 20,179,105,
- 38, 7,168,168,108,188, 50,127,118,243,135, 96,181, 38, 34,111, 20, 96, 58,169,220, 60,100, 95, 24, 39,180,115,137,253,201,226,
-247,127,170,251,223,186, 82, 27,254, 16, 94, 74,118,124, 26, 44, 87, 92,118,155,105, 91, 81,121,162, 91, 54,141, 31,196, 63, 13,
- 58, 13, 59, 9,230,192, 47, 62,243,210, 23,241,186,117,175, 92, 57,196, 97,202,237,211, 57,208,178,252, 42, 34,147, 24, 1,211,
- 46,149, 5, 18, 60,253, 6,173,251,228,231, 53,219, 29,128, 65,247, 42, 12, 6, 79, 41,200, 5, 73, 4,129,215,191,174,178, 14,
- 26,216,118, 93,122,230,134,202,121,164,204,167, 68,139, 29, 9,238,183,223,119,194,101, 41,207,153,113,104, 31,126,172,212,141,
- 41,120,124,197, 24,209, 26, 34,128, 46,118, 28,192,119, 59,147,183, 82, 73, 39,169, 36,239,142, 53, 53,117, 21,115,214, 86, 85,
- 74,211,213, 84,180,178, 72,231,118,103, 42,204, 73,176,238,123, 0, 0,232, 0, 27, 98,109, 63, 71,223,128,234,125,203,195, 15,
- 16,156, 74,220,244,174,123,199,114, 99,200,218,237,155,145, 45,177,136,116,123, 98, 92, 90,221,217, 83,134,149,167,225, 85, 82,
-187, 18, 29, 56,186, 15,197, 30,152,164, 14,138, 57,216,168,246, 17,161,213, 31,142,228,117, 50, 90,146,235, 97, 10,230, 75,225,
- 8, 56,228,115,185, 67,169,229, 41,229,239,204,112, 8, 58,236,151, 0,219, 99, 15, 98,184, 76,225,239,107,105,113, 83, 17,187,
- 99,109,109,231,167,180,148,132, 41, 85,138,164, 38,234,181,105, 14,116, 28,206,174,124,199,201, 39,174,123,233,168,226, 23,134,
-171,150, 93,110,226,220, 91, 38, 61, 58,161, 65,144,255, 0,214,146,168, 44, 62,182, 43,237,206,148,240,247,152, 52,168, 9,103,
-146,167,207, 53,197, 58,202, 3,136, 63,166, 80, 94, 2, 65, 52,151, 19,209, 54, 99, 28, 89,138, 38,170,131,118,127, 82,142,117,
- 40, 61, 55,137, 74,160,247, 13,239,215, 29,145,225,180,210,240,102, 89, 6, 69, 36,194, 24, 42,163, 73,100,212,214, 95,105,101,
- 94,110,228,237,169,174, 22,254,128,108, 0, 3, 82,108,234, 84,116, 52,134,210,201, 41,147, 33, 50, 29, 8,240,203,143,186, 2,
- 0, 83,220,201,207, 58, 67, 40, 7, 36, 0, 19,132,156,107, 99,104, 52, 8,210, 93, 98,116,150,210, 36,193,113, 47, 65, 13,129,
-225,199,203,101,135,198, 79,235, 74,113,133, 41, 10, 89, 5, 32, 16,148,242,167, 36,170, 87, 15, 59,203, 71, 82, 20,230,223, 76,
-148,128,134,151,205, 74,153, 75,168, 33,105,194, 64, 39, 19,144,162, 0, 37, 71, 41, 4, 99, 28,189,244,241,218,123, 83,186, 79,
- 41,180, 35,109,238,133, 20,114,133, 45,113,162, 37, 61, 14, 28, 74,221,114,104, 72, 79, 81,147,216,245,198,162, 81,100,213, 74,
- 64,146,146, 66, 91,182,134,244, 22,232, 13,237,215,211,210,214, 24,178, 78,125, 70,186,229,108,198, 24,237,177,102,158, 32, 0,
- 54, 4, 18, 91, 96, 64, 3,222, 5,177,113,161,208, 12,134, 16,211, 10, 90, 34,143,242,202,115,224,151, 49,158,230, 50, 29, 74,
-147,238,236, 18,160, 10,191, 89, 64,114, 35, 1, 74, 86,178,171,163,112,237,237,158, 85,185, 95,170,208,239,234,203,242, 38,132,
- 82,227,109,214,216,222,251,153, 34, 51,212,224,196,176,253,106,153, 99,209,229, 46,149, 79, 64,228, 45, 41,208,217,144,176, 88,
-142,149,168, 40, 7,150,209,216, 45,211,158,164, 57, 54,149, 73,183,217, 80,229, 46,213,234, 77, 72,113, 41, 0,142,127,114,166,
-182,234,138,136, 63, 8,231, 66,124,250,119,214,136,251,111,106,123,151,194, 15,179, 87,116,183, 91,103,247, 82,225,178,183, 81,
- 55, 54,223, 91, 16,111, 43,121,168,212,249,212,202,101,201,112,177, 6,177, 22,136,227,168,117,112,106, 47,198, 43, 67,115,185,
-253,229,144, 74,152, 83, 75,194,132,166,147,135,179, 55,167,146,177,104,218, 8,163, 49,131, 44,171,101, 82,242, 36,105,101, 37,
- 93,174,238, 0,210, 13,137,213,184,190, 34, 25,199,137,124, 27,150, 48, 25,157, 89,207,105, 98, 73,154, 90, 74, 25,209,101,153,
- 68, 78,197, 69, 87, 38,162, 8,201, 42, 11,115, 17,137, 23, 64, 22,225,150, 51,124,116,238, 62,206,240, 93,121,221, 53,125,139,
- 98,254,183,183,166,236,173,213, 46,123, 18,139,190, 78, 91,107,223,205,183,143,115, 74,157, 85, 27,132,254,217,209, 34,200,137,
-176,244,148, 57, 59,154,223,149,118,189, 34,254,168, 6,195,212,202, 37, 1,178,229,101, 17,220,184, 46,123,134,236,174, 85,110,
-107,134,183, 87,184,110, 58,228,233,117, 42,229,201, 93,156,253, 74,191, 90,168,206,125,114, 39, 77,169, 84,100,184, 86,235,239,
- 72, 90,214,224, 4, 37, 74, 86, 72, 39, 36,218, 42,181, 73,149,138,165, 74,181, 92,157, 58,167, 88,172,212,165, 86, 43, 53,106,
-148,217, 85, 42,173, 98,179, 80,115,198,159, 87,171,212,230,186,183,234,149, 55,158, 37, 78,200,125,199, 29,112,245, 90,142, 6,
-128,109,101,110, 97, 36, 6,179,241,128, 71, 49, 62,185,242, 26,176,114, 30, 31,163,201, 33,178, 14,117, 76,191,106, 66, 5,197,
-194,141, 9,251, 40, 52,128, 22,229,136, 85,214,206, 85, 72,164,252,120,250, 73,120,157,244,128,204,169, 36,227, 28,238, 99,195,
-217, 60,113, 67, 69,150,137,165,120, 17, 41,193, 88,102,171,119, 98,213,213,195, 83,191,180, 77,245,112, 73, 61, 64,160,130,138,
- 25,228,133,136, 90,148,234, 57, 93, 9,121, 9, 80, 90, 91,144,148,188,144,176,114,149,165, 14, 2, 18,224, 80, 4, 40, 96,130,
- 50, 8, 58,204,169,155,143,113,209,211, 21,169,110,192,185,160, 68, 11, 17,232,183,173, 53,187,170,154,198, 82, 82, 61,205,249,
-174, 9,212,229, 15,255, 0,131, 48, 54, 63,248,163,211, 24, 96,228, 10, 88,201, 41, 7,162,137,244,238, 63, 57,213, 53,164, 43,
- 36, 14,185,200,252,159,150,159, 39,166,130,161, 52, 77, 10,202,163,166,160, 13,137,238, 13,174,167,222, 44, 71, 99,138,111,135,
-120,167,136,248, 74,170,106,190, 27,206,170, 50,105, 42,192, 74,133,134, 66,176,213, 68, 13,249, 53,148,230,244,245,180,228,253,
-170,106,184,166,129,255, 0, 94, 54, 24,116,231,239,189,238,150, 89,133, 64,254, 15,237,252, 36,248,206,123,141,131, 77, 48, 29,
-151, 33,230,210,209,151, 80,170, 84,195,206,184,250, 26, 64,229, 8, 74, 50,160,149, 45,107, 8,109, 8,177,171,117,119, 10,108,
- 7,169,170,189,110,207,170,159, 74,208,253, 57, 21,201,173, 71,113, 46,161, 40,144,133, 73, 74,196,165, 54,232, 78, 92,111,222,
- 60, 37,149,168,148,124, 74,206, 0,166,219,230, 33,120, 36,117,206,124,251,143,219,175,170, 91, 74, 90, 19,207,241, 32, 19,200,
-147,240,156,250,254,205, 37, 29, 21, 36, 32,133,167, 64, 24,223,236,130,111,182,228,145,114, 71, 98, 73, 54,218,248,156,102,190,
- 58,120,209,157,242, 99,172,241, 87, 62,130,146,154,148, 80,197, 71, 69,153,213,101,153,108, 20, 34, 40,225, 52, 84,185, 86, 89,
- 37, 30, 91, 75, 70,241, 68,139, 37, 45, 45, 36, 84,242,232, 13, 44,108,196,177,172,227,188,193, 37, 92,169, 75,105, 8,109,150,
-208, 16,219,109,131,209, 13,161, 0, 37,180,228,147,128, 7, 82, 79,114,117, 72,146,163,205,129,140, 14, 81,216,140,129,158,184,
-237,223, 94, 84,177,158,216, 4,224, 31, 32, 73,237,246,107,233, 9, 80, 79, 50,129,198, 79,194, 64, 35,215, 61,126,205,109, 95,
-111, 47,109,189,216,170, 85, 2,233, 91,105, 10, 6,221, 0, 3,160, 30,158,131,165,177,229,212,133,160,131,128,125,112, 51,211,
-236,243,208,105, 11,230, 60,201, 8,109,191,139,226,248, 78, 71,159,207,251,116,122, 20, 20, 50, 7,145,200, 61,199,151, 95,191,
- 67,169, 36, 55,151, 49,215,161,201, 4,252,137, 0,246,233,161,179,111,219, 6,177, 6,221,251,126,255, 0,227,138,110,123,186,
-192, 82,130,150, 8,200,194, 73, 3,182, 73, 31, 61, 75,227,232,215,112,195, 99,223,219, 35,198, 38,227,110,133,131,105,238, 13,
-175,184,202,183,248,125, 93,173,121, 80, 32, 92, 54,253,118,207, 69, 45,203,170,246,167, 78,131, 84, 97,109,174, 60,137,213,122,
- 35, 78,132,242,171, 48, 16,160,164,173,180, 40, 68, 24,149,143, 8, 54,158,138, 74,147,205,144,144,181, 99, 24, 3, 29, 15,109,
- 77,123,217,103,184,103,103,189,143,246,187,116, 6,164, 81,171,123,149,186,219,227, 85,173,205, 79, 52,105,170,164, 82,174,168,
-214,139, 78,199,144,180,167,195,143, 48, 82, 93, 67, 79,160,169, 10,102, 26,210,135, 57,138,185, 98,156, 99,155,193,146,101, 73,
- 89, 80, 12,138, 37, 10,177,139, 6,150, 66,173,201,141, 9,232, 76,161, 9, 36, 16,136, 25,200, 33, 72,197,129,225,126, 86,115,
-110, 47,162,164, 72,185,210,136,228,101, 7,117,187, 20,132,234,244, 26,101,111,190,214,223, 28,193,223, 63, 97, 79, 4,115,184,
-194,185,209,179, 27,239,185, 54,175, 14,116,135,150, 47, 93,165,163, 83,105,149,186,237,191,122,205, 66,164,162,196,218,237,215,
-185, 31,144,220,155, 36, 48,243, 62, 60,137,208, 39,207,167, 56,164, 69,140,229, 65, 78,120,204,111, 6,212,251, 26,125,155,123,
-125, 58,216,185,109,203, 55,136,138,110,227, 80, 37,198,122,216,220, 26, 55, 21,119,221,175,121,219,245,200,177,194,145,114, 81,
-170, 86,149, 42, 2,105, 21,166,212, 60, 80,227, 40, 75, 45,172,132,134,150,223,194,108, 27, 71,113,203,157, 91,184, 42,197, 34,
- 81,147,122, 93, 21, 71, 34,115, 36, 46, 82,152,170, 10,100, 82,181,243,128,150,154, 17, 84,177,200, 6, 11,105, 81, 80, 1, 58,
-222,155, 74,229,118,163, 38,164,121, 90,136,212, 8,204, 83, 34,180,202,131,110,158, 98, 36, 84,159, 83, 97, 28,172, 45, 43, 91,
-109, 37, 72,230, 95, 43, 74, 4,164,144, 53, 71,103,220, 99,198,175, 58,200,217,245, 68, 48,132, 0,197, 3,242, 22,221, 8, 44,
-154,100,147,169, 93, 83,188,174, 86,218,156,144,111,212,220, 79,225, 79, 9,228, 78,100,161,201,225, 89, 2,172,143, 33, 82, 89,
-164,178,130,234, 9,180,107,204, 58,149, 35, 85, 80,157, 55, 14,113,212,219, 99,136,234,228,106,101, 18,155, 87, 66, 43,171,106,
- 35, 20,230,230,213, 86,165, 86,106, 81,233,145,219,143,245,157, 94,162,202, 82, 39,213,158, 8, 74,228, 72,240,144, 31,125,213,
-185,225,160,171,151, 78,181,189,187, 22,141,226,232,140,220,143,169,234, 75,115,193,110, 28,247, 27, 75, 82, 94,236, 27,137, 40,
- 30, 71, 22, 72,232,147,202,162,122, 0, 78,185, 81, 30,244,240, 36, 85, 11, 97, 75,143, 66,134,205, 38, 36,144,114,151,170,110,
-182,100, 75, 96, 4,171,162,144,234,163,165, 65, 32,245, 74,178, 8, 26, 10, 61,219, 41,136, 17,203,239, 31,124,142,204,154,156,
-175, 13,210,158, 95,136, 52,201,108,142,169, 62, 50,148,126, 69,191,150,148,202,184,199, 54,167,208, 37,169, 53,106, 7,153,101,
-243, 27, 0,162,250,143,152, 27,234, 59,146, 0,182,199, 21,248,142,186,130, 68, 16, 73,204, 22, 91,197, 37,200, 58,148,200, 0,
- 63,105,108,186, 23, 99,179, 29,212,244, 27,233,106,113,119,182,151,183, 20,183,231, 10, 22, 90, 95,184,110,205,174,179, 85,117,
-110, 45,213, 17,214, 92,183,173,234,168,126, 51, 38,204, 66,193,230,145, 91,105, 50,153,247,130, 7, 35, 78, 18,214, 74,210,172,
-108,130,235,136, 99,157,106, 88,230, 57, 24,206,126, 30,184, 29,122, 99, 35,174,184,239,193,253,153,180, 27, 99,196,214,228,110,
-244, 17, 42,218,187,248,132,179, 97,219,181,104, 40,144,201,180,230,222, 73,172,174,167, 38,226,195,235, 46,192,175,213,208,195,
-104,125, 33, 94,236,228,180, 23,194, 91,114, 74,129,232,125,205,113, 42, 50,221, 64,113, 73, 41, 74,147,200, 62, 21,165,105, 39,
- 60,201, 61,142, 2,178, 62, 90,181,184,106,180,102,212,111, 59, 48, 18, 60,132, 50, 0, 46,130,202, 66,144, 55,247,134, 61, 71,
-223,105,215, 25, 75,194, 85,210,100,173,193,144,212,211,209, 46, 91, 68,149,130,172,222, 99,154, 8,239, 94,118,188, 98, 35, 41,
- 2, 1, 17,229,242, 66,157,152,184, 14,149, 74,248,109,178, 71,136, 2,123,168,115, 2, 14, 14, 57,186,118, 32,228, 31, 62,191,
- 45, 97, 51, 47, 98, 23,151, 29, 87,134,165, 30, 85, 12,144, 73, 56, 9, 36, 28,115,140,128, 50, 48,190,217,242,214,190, 84,238,
-181,120,174, 53,206, 10,138, 20,251,121, 81,248,208, 14, 28,111, 62,153, 35,167,145, 94,177,148, 93,188,217,104,175,152, 41, 36,
-165, 46, 12,115, 32, 15,137, 25, 36, 18,180, 96,127,181,202,144,175, 93, 74, 99,129, 80,108,110,126, 63, 15,221,249,252,113, 22,
-167,164, 88,198,195, 87, 75,254, 23,239,215,227,252,142, 54,149,187,161, 46,158,100,184, 10, 85,203,158,101, 4,148,156,144,121,
-194,199,192,114, 21,229,141, 90, 42,114,158, 91,107,145, 76, 8,113,208, 10,213, 17, 74, 45,161,212,100,229, 76, 41, 32,144,224,
-234,174, 78,161, 92,159, 14, 20,113,166, 18, 37,213,201,202, 92,120, 40, 0, 57, 92, 36, 41, 65, 39, 56, 67,160,145,146, 15, 76,
-158,152, 57, 32, 19,157,102,144,110, 4,175,225, 82,207, 50, 70, 72, 4,148,117, 57,200,207, 83,144, 6, 64,237,203,243,234,149,
- 69, 58, 78,154, 36, 23,244, 61,193,236,111,235,211,249,140,110, 67, 81, 45, 20,162,104, 13,237,177, 83,114,174, 63,101,198,215,
- 30,253,136,189,193, 83,190, 47,109,215,101,185,200,130,228,102,194, 92, 90, 75,164, 58,231, 42,146, 73,229, 80,113, 35, 60,189,
-138,136,248, 74,128, 86, 58,234,234,212,199,221, 1, 78,200, 88, 33, 68, 16,142,102, 27, 82, 21,132,242, 40, 55,146, 82,112, 59,
- 17,133, 39, 33, 64,231, 88, 13,198,183, 11, 6,169, 79, 9, 91,204, 2,185,108,130,176,149,181,132,149,201, 71,135,250,206,161,
-180,146,226,123,173, 0,158,139, 29,113,232,181,233,174, 28,169, 77,128,142, 71, 27, 45,169,120, 83, 43, 79, 55, 50,121,143,249,
- 64, 84,147,211,161, 24,193,202,134, 98,211, 43, 81,204, 98,153,246,107,216,216, 88,131,109,238, 59,250,223,241, 6,248,157, 80,
-188,121,165, 42,212, 83, 34, 68,192,217,212,145,169, 24,117,235,185,235,117, 35,175,186,197, 67,227, 22, 64, 10, 60,141,168,243,
-128, 10,146, 74,212, 91, 65, 32, 37, 74, 41, 42, 91, 32,227,252,152,234, 9,207, 49, 35, 87,149, 84, 92,140,217, 90, 25, 74, 60,
-117, 4, 33, 47,165,213,199,195,201, 42,109,160,129,149,198,144,226,142, 19,206, 49,147,240,163,148,243,105,158,139, 82, 82,138,
- 1,113, 92,142, 19,203, 33,183,156,229, 70, 87,204,203,109,242,184,163, 29,174,101,225, 33, 28,203, 82,148,148,148,231, 35, 87,
-196, 84,214,134,138,188, 73, 40,112,151,217, 83,209,203,109,180,180,164,252, 94, 34, 22,162,183,100,103, 28,223,168, 83,130,148,
-143,136,157, 47, 28,195,190,192, 88, 95,247,119,235,183,190,247,177,191, 77,244, 42,224,209,114, 95, 93,183,232,119,183,196,245,
- 29, 59, 16, 63, 12,178,167, 82,117,101,214,158,116,143, 5, 24, 90, 23,206,135,176,149, 30,171, 28,152, 67,133,148, 37, 68,130,
- 72, 82,136,233,216,106,111, 20,187,199, 75,216, 78, 31,183,187,123,107, 14, 3, 11,107, 54,178,243,187,194, 90, 57,118, 69, 74,
- 29, 37,232,118,227, 17, 80,181, 15, 26, 67,151, 45, 70,140,218, 83,159,252, 98,186,121,105,253,153, 86, 47, 7, 9,115, 32, 43,
- 45, 41,124,222, 48,200, 88, 62, 39, 83,200,159,140,117, 57, 42,192,233,231,168,229,253, 33,126, 36,209,101,112,247,183,156, 51,
- 81,166, 20,220,123,253,118,139,190,234,105, 14,114,189, 19,107, 54,170,107, 47, 14,101, 54,172, 24,245, 77,192,149, 76,140,166,
- 92,229,230,106,223,125, 65, 36, 5, 99,118,157, 26,170,122,122, 52, 39, 85, 75, 0,125, 66,117,118, 29, 62,202, 6, 59,122,116,
-190,198, 41,159, 87,166, 83,147,230, 89,163, 16,134,138, 38,100,189,183,152,128,144,169, 29,124,210,178, 41,223, 96, 73,219, 16,
-244, 92,153, 82,150,236,202,131,161,234,140,247,159,157, 80,125, 32, 97,234,132,215,151, 38,107,224, 96,116, 92,167, 94, 87,207,
-155, 66,172,131,211,207, 61,115,246,127,110,136,115,169, 29,135,115,161, 87,230,174,152,245,239,216,121,254,124,181,105,160, 0,
- 11,108, 63, 45,182,199, 34, 42,236, 13,205,207,174,253, 14, 6, 86, 50,113,249, 63, 47,150,135, 81, 10,242,192,235,159,159,204,
-250,104,133,250,130, 20, 72,252,244, 26, 21, 71,161, 62,125, 79,223,165, 20, 18, 70, 21,192,234, 32,117,249,224,103,231,246,124,
-180, 51,131, 57,234, 1, 4,245,209, 90, 17,194, 14,122,247, 57,199,203,231,165,199, 81,129,129, 85,211,167, 82, 79,115,242,244,
-199,166,116, 42,200,207,108,117,199,219,215,207, 68,185,242,238, 7,159,111, 95,223,160,150, 79,126,152, 61,193,243, 61,127, 63,
-118,148, 65, 97,210,247,249,255, 0, 92, 12, 82, 36, 2,122,129,247,254,255, 0, 61, 45, 81, 95,235,119,242,252, 62, 95,159, 93,
- 45, 31, 3,108, 86, 29,251,103,229,162, 52, 42, 87,219, 61, 15,145,199, 76,131,229,170,129, 68,158, 94,108,116,207,111,159, 94,
-190,189,244, 71, 2,221,108, 70, 14,195,173,190, 63,195, 7, 54,123, 21,125,223, 63, 67,162, 7, 95, 35,246,121,232, 38,240, 58,
-100,147,243,252,247,254,173, 22,149,245,244, 62, 94,126, 95,102,146,193, 58,116, 56, 41,161,203,212,156, 99,200,252,243,216,104,
-214,200,243, 0,253,248, 39, 64,165, 89, 29,191, 17,231,231,131,157, 86,108, 20, 44,168,172, 16,172, 1,159, 47,179,238,210,109,
-233,109,135,242,198,113,112, 10,193, 1, 67, 4,249,129,223,237, 35,243,215, 68,167, 3,168,200, 39,161, 29,191,102,122,118,208,
-169, 81, 32, 12, 12,140,119,237,140, 1,140,143, 60,232,128,172,100,156,100, 96,228, 96,147,246, 99,229,253, 58, 79, 24,193,141,
-168,119, 61,113,211,239,233,131,248,104,132, 28,224,245, 56,235,243,233,235,143, 45, 0,133,103, 3,168, 4,250, 14,255, 0,105,
-213,126,108, 17,133, 41, 57,207,234,250,255, 0,195, 72, 55, 94,183,198, 45,251,240, 96,194,212, 65,206, 15, 99,156, 99,167, 83,
-223,166,178,107, 86,133, 46,228,174, 83,168, 84,230,131,242,231,203,102, 43, 41, 89,195, 69,215, 20,122,190,224,255, 0, 37, 29,
- 13,165,110, 56,175,230,182,210,136,235,140,226,141,149,172,148, 40,242,164,140,243, 0,115,229,231,167, 83,107,106,201,163,215,
- 27,102, 59,168,106,161, 80, 68,168, 17,165,168, 14,120,254,244,202,121,148,223, 55,119,212,203,110,165, 63, 53,159, 44,231, 74,
-177,164,138,154,105, 34, 0,200,138, 72,248,250,159,147,183, 77,240,231,146,208,195,153,231, 25, 94, 91, 81, 57,166,167,174,158,
- 24,157,199, 85, 87,117, 86, 43,125,181, 16,108,183,219, 81, 23,218,248,222,138,101,205,111,109, 53,188,139, 14,206, 6, 92,185,
-106, 97,219,158,165, 20, 33,169,181,218,147,105,229, 75,211,229, 39,172,106,107, 74, 42, 76, 88,249,229,105,177,148,165, 78,169,
-197,168,202, 52, 58,189,201, 45,107,152,251,134, 43,136,241, 26,136,133, 56,212, 96, 73,206, 22, 82,160,183,187,255, 0, 56,129,
-159,230,233,172,181,109,231,101, 77,113,174, 96, 84,151, 11,234, 90,143, 58,214,238,114,165,184,181, 28,173,106, 39,185,234,115,
-211,167, 77,109, 61,163, 22, 44, 22, 27, 91,137, 83,171, 74,128, 82, 1,207,234,158,188,201, 56, 29,255, 0, 15,232,173, 43,102,
-142,152, 57, 86,230,207, 39,153,152,245, 98,109,185,219,238, 30,131, 97,176,176,238, 92,135,135, 96,160,165,130,158,154,139,217,
-233,169,194,164, 80, 40,217, 20, 91,173,247,102, 39,119, 98,117, 51, 18,204, 75, 18,113,157, 88, 27, 77, 6,162,243, 10, 91, 45,
-173,210, 17,204,134,249,192, 79, 80, 63,214,237,246,249, 13,116,123, 98,182, 58, 4, 74,205, 30,167, 79,136,195, 21, 8,242, 27,
-109,110,132, 5, 41, 73, 87,235,167, 43, 4, 56,130,140,228, 96,131,208, 99, 90,225,182, 40, 67,142, 48, 16,148,176,211,139,108,
-165, 13,164, 41,196,146, 1, 0, 28, 0,122,103,200,227, 93, 65,218,186,205,175,107,194, 23, 45,203, 58, 29, 22,218,182, 96, 72,
-174,220,149,170,131,237,177, 22,155, 74,165,199, 84,185,211,101,200,116,132,182,210, 35, 52,242,142, 78,112,156, 0, 78, 6,171,
- 12,238,173,234,222, 88,228,156,164,106, 9, 35,215,160, 2,195,177, 61,189, 58, 92,224,103,185,230,105,150, 32,167,167,102, 26,
-193, 82, 7,165,183, 6,219, 90,219, 1,190, 56,205,197,103,181,207,127,173, 13,203,184,118,215,133,170,141, 31,104,108,203, 18,
-227,169,219,114,110, 38,173, 59,114,175,120,222, 85,138, 12,199, 41,181,154,156,153, 53,154,123,241,232,148,133, 84,163, 74,110,
- 60, 86, 88, 82,220,105,176,227,238,146,190, 68,232,182,233,123, 64,184,141,223,154, 60,154, 6,249, 57,181,123,167, 78,146, 84,
-227, 18,107,187, 67, 98, 81,110, 42,116,165, 0,145, 34,159,117,218,148,120,114, 99,114,227,163,101, 42, 70, 84,115,229,173, 86,
-221,155,170, 61,231,185, 27,133,121, 69, 66, 4, 43,174,251,188, 46,104, 37,150,148,210, 87, 78,184, 46,106,173, 86,152,226, 26,
- 95, 86,138,160, 76,140, 84,147,241, 37, 74, 32,128, 65, 26,194,202,138, 27, 72, 66, 66,146,164,249,147,216,250,231,207, 87, 69,
- 31, 7,240,224,142,134,170,163, 33,165,108,202, 5, 70, 19,180, 17,154,132,144, 1,186,205,167,154,132, 27,219, 75, 46,158,139,
-101,216,113, 46,113,196, 25,150,101,152,213,213, 75, 88,211,164,146,185, 69, 33, 74, 4,212,116, 0, 45,109,150,194,253, 77,174,
-196,146, 78, 25, 29,226, 14, 57,121,205,113,232,130, 3,142,211,225,184, 35,161,210,251, 60,158, 24,194,153,113, 74, 39,194,232,
- 48, 51,240,246,211,245,236,251,162,194,185,248,143,179, 45,121, 83, 19, 21,250,213,203,107,181, 9,165, 71,118, 87,191,186,213,
-102, 27,130, 3, 81,152, 66,148,243,239, 41, 41,105, 3, 24, 5,238,101,124, 41, 58,101,247,161,159, 22,181, 69,168, 39, 42,110,
-109, 13,166,193,234, 48,228,124, 36,164,245,239,145,174,129,251, 9,174,186, 5,165,237, 66,225,233,203,134,153, 75,169,179, 93,
-122,232,183,105,102,171, 29,185, 77,211,107,245, 27,114,161,245, 77, 90, 19,110,130,148, 84,153,121,149, 6, 86, 70, 82, 94, 37,
- 63, 16, 4, 76,106,145,166,225,202,216,163,115, 19,154,118, 0,141,244, 17,182,175, 48,111,179,107,216,131,211,124, 55,240,245,
- 50,102,121,237, 29, 36,238, 33, 74,218,128,140, 64, 27,115, 13,172,189, 64, 38,246, 91,130, 3, 17,112, 70,216,253, 60,108,203,
-170, 61, 38,218,163, 69,169,210,215, 6,123, 52,168, 12, 42, 18, 30, 74,149, 13, 45,197,109, 30, 2,136,232, 84,156, 96,142,195,
- 24,211,173, 99,205,135, 95, 67,163,195, 82,216,105,226,174, 71,124,148,149, 2, 51,235,129,141,105, 44, 90,227,175,203,110, 58,
-159, 60,234,145,200,227,139, 86,113,133,225, 74, 81,201,236,156,159,187,231,170, 28, 4,113, 50,246,254,220,188, 78,211, 27,167,
-174,157, 67,217,253,200, 98,198,160, 62,226, 84,149,213,154,110, 59,134, 85, 65, 74, 80,193, 38, 67, 46,128,145,156, 36,167, 56,
-206,171,117,160,130,138,122, 97,237, 82,206,210, 2,164, 74,193,245,233, 0,234, 42, 2,170,144,127,100, 1,189,173,233,213,116,
- 57, 94,103,152,229, 89,246,102,140,213, 17,228,201, 12,179, 73, 36,128, 58, 9,234, 18,153, 52, 40,182,162,210, 72,183, 8, 0,
- 85, 5,141,128, 24,234, 84, 22, 97,190,160,211,140,160, 37, 73, 9, 37, 39,151, 35,203, 4,118, 61, 53,114,153, 78,153, 71,107,
-235, 40, 14, 61, 50,158,222, 60, 88,104, 36,186,207,108, 43,161,248,155, 29, 63, 29, 97, 20,201,202, 47,103,152,116,235,202, 79,
-126,158, 94,167,229,242,211,203,110,200,247,142, 86,186, 45, 43, 28,139, 74,199, 69, 36,140, 40, 28,142,185,211,232,142, 26,149,
-210,124,143,250,172, 54, 32,246,233,212,123,143,108, 87, 57,193,168,203, 88, 74,126,186, 30,174,140,110, 24, 27, 95,115,186,183,
-163, 11, 88,251,182, 38, 90,149,147, 81,103, 43,113, 42, 36,101, 41, 4, 97, 63,236,131,246,106, 57,159, 74,191,116, 98, 90,254,
-207, 59, 39,109,189,229, 13,212,183,107,126, 44,232,173, 70, 10, 79,139, 34,151,103,194,170,220, 21, 37, 33, 4,228,182,151, 83,
- 3,152,129,211,196, 79, 81,158,178, 30,102,146,109,219,145, 41, 96, 40, 65,169, 43,197,142,145,209, 8,117, 68, 7, 25, 3,237,
- 80, 32,127,181,168, 24,253, 41,190, 42,105,187,177,198, 54,217,240,225,110, 85, 81, 54,139,195,101,145, 34,125,214,152,206, 7,
- 99,181,184,187,128,182, 37, 59, 9,124,170,199,189,197,183, 98, 83,146,176,122,161, 83, 8, 58, 74, 58,202,145, 17,201,101, 26,
-102,168,170,131, 88,244, 90,105, 22,173,158,223,176,226, 5,136,155, 90,243, 32,234,192, 98, 1,158, 71, 76,139, 85, 95, 79,189,
- 36,176, 18,155, 91,205, 48,228,232,235,246,147, 91,189,183, 39,148,198,196, 2,113, 23,105, 12,224,142, 92,114,128, 57,115,230,
- 60,193, 31,158,218,166,220,116, 96,148,167, 35,185, 0, 30,135,231,131,219, 70, 58, 91,112,228,147,129,219,200,129,212,245, 26,
-163,239, 1,162,164,182, 58, 16, 2,148, 48,123,246,233,248,234, 69,123,110, 78,199,253, 49, 95,238,192, 91,182, 41,184,218,146,
-112, 2, 85,145,205,128,115,240,232,117,175,166, 2,185, 84,122,144,123,252,146, 48, 58,249,126, 26,246,165,183,205,207,226,242,
- 41, 68, 0,146,160, 57,188,186,141, 8,236,164,182,248, 10, 66, 79, 40,192, 24,234, 78, 51,205,246,235, 5,182,178,131,140,233,
- 61,206, 62, 37, 37,100,130, 84,143, 85, 20,247,251, 9,215,196, 52,218, 22, 28,108, 23, 20, 73, 10, 73, 32, 16, 58,117, 3, 29,
-117,111, 83,203,146,247, 41,116,161,190, 96,162,140,245, 64, 79,113,246,247,209,173,134,220,112, 58,130,174, 68,156, 21, 96,167,
- 56, 29,142,124,186,235, 23, 38,226,214,237,108, 24, 0, 8,223,231,108, 84,202, 80,181, 45, 75, 37, 10,236,140, 14, 84, 19,208,
- 21, 19,249,206,145,240, 91, 89, 35, 4,168, 2,181, 39, 36, 1,143, 63,207,219,175, 14,180,248, 91,135,225, 44, 44, 19,203,230,
-113,158,202, 35,190,147, 72, 75,188,184, 10, 97,180,167,149, 94,101, 68,116,193,200,235,219, 67,113,176,234, 62,253,255, 0,241,
-140, 88, 27,158,199,247, 99,223,138,128,176, 16, 74,202,192,200, 64,234, 51,216,159,151,174,144, 56,112,168,255, 0,226,210, 65,
- 39,211,169,193, 30,191,219,161,201, 91, 97,101, 11,229, 33,124,169,112,164, 97, 67, 25, 41,193, 29, 62,221, 18,149, 30, 64, 28,
- 41, 83,138,201, 81,233,203,131,211, 7,167, 95,158,178,160,129,238,248, 99, 4, 11,219,211,111,159,187, 23, 91,122,216,174,223,
-151, 45,171,103, 91, 30, 48,173, 94, 23, 45, 2,211,161,169,134,124,101,166,185,117,214,160,219,116, 71, 18,206, 63, 72,148,213,
-170,176,202,135,110, 84,156,234,116,188, 70, 90, 86,214,200,237,141,191,195,253,145, 22, 45, 26,196,217,203, 30,212,219, 59,118,
-140,216, 15, 52,105,182, 85, 52,210,220,144,228,146, 7,188, 57, 58,187, 14,173, 81,121,213,101,199,100, 86,221,117,213, 5,175,
- 81, 5,246,122, 41,151,120,231,225, 49,165, 45,167, 25, 70,253,237,171,138,109, 68, 6,138,152,185, 35, 72, 66, 58,164,128, 60,
- 86, 81,140,142,248, 24,212,167,184,174,185,213, 80,146,133, 73, 46,189, 42,116,101,176,243,171,116,136,206,165, 92,181, 24,242,
- 29, 66,122, 56,175,137,244, 12,128,174,102,202,115,202, 19,170, 83,197, 9,101,168,206,184,107, 46, 36,242, 99,215, 57,177, 27,
-176, 33,119, 7,246, 0,242,159,241,145,183,126,148,250, 56,229,176,205,157, 87,230, 36, 3, 52, 82, 67, 18,237,186, 42,142,113,
- 96, 78,222,114, 22,253,238,138, 65,198,134,236,221,125, 48,227, 85,230, 51, 33,182, 20, 46,139,193, 78, 71,146, 11,172,173, 49,
-107,213, 39, 22,218,176, 65,104, 45,181, 17,240, 28,231, 10, 57,192,214,224, 91, 87, 56, 52,186,124, 87, 37, 60,195, 17, 27,114,
-181, 86,168, 52,165, 33,208,211,232, 84,135, 35,180, 82,172, 45,194,149, 57,206, 62, 17,225,181,156,149, 19,174,110, 88, 21,191,
-119,114,244,165,183,202, 67, 27,155,118,199, 87, 58,178, 4, 89, 50, 96,212,208,176,140,117, 30, 4,208, 18, 6,122, 47,168, 24,
-193,216,148,220,233, 17, 19, 8, 58,234,126,185,152,195,115,214,218,208, 94, 77, 49, 13,178,244,133,248,196, 0,223,193, 29,180,
- 33, 36,116, 68,133,242,242,101, 71, 81,250,188,185,106, 15, 67,113, 99,239,183,107,245,232, 9,183,107,219,224, 58,227, 63,165,
-142,190,158, 48, 77,158,254, 98, 55,217,118, 36, 14,246, 5,200, 7,112, 64, 22, 35,166,219,210, 47,185, 82,233, 80,131,107,114,
- 60,217, 83, 30,159, 55, 1, 97, 10,126, 99,143, 59,200, 93, 39, 36,248, 79, 52,216, 74,146, 85,208,149, 28,227, 87, 58,150,229,
- 67,154,202, 4, 96, 35, 72,171, 77,110, 44, 73,100, 36,180,229, 58,157,136,136, 91,136, 10,230,111,157,193, 37,215, 17,208,101,
-244,168,228,117,214,181, 64,187,158,122, 93, 82, 99, 15, 54,251, 37,214,153,128, 31,117, 72,105,199, 39,177,225, 23,146,164,156,
- 48,194, 20,135,157, 91,128,140, 41,148,243,100, 17,156, 82,117,230,220,185,110, 46,150,234,204, 86,210,213, 38, 18,207, 68,178,
-246, 20,194,221,232, 57,159, 45, 69, 67,133, 75, 72, 8, 74,217, 4,243, 28,107, 65,114,134, 28,192, 19, 72,150,215,216,116,216,
-247, 29,143,240, 35,215, 20,246,103,146, 44,245, 78,252,176,174,237,171, 80, 54,208, 8, 14, 67, 30,182, 4,169, 0,130, 8,141,
-150,215, 27,108,165, 82,240, 65, 91,130, 60,226,182,132,167,101,192,151, 29,238, 83, 25, 20,197,120, 81,158, 74,218, 87,253,240,
- 30, 74,156, 5, 56, 40, 82,144, 70, 78, 52,237, 90, 94,211,206, 31,238, 61,215, 87, 13,251,187,120,211,246, 99,125,216,166,219,
- 53, 27, 46, 70,225,213,169,180,173,188,223,218, 29,126, 20,116,211,238, 11, 14,254,117,214,224,219,183,114,235, 2,165, 77,157,
-110,215,151, 5,255, 0,172, 41,143, 26,124,233,201, 95,132,215, 47,235,155,134,253, 49,169,137,139, 33, 17,217, 13,120,112, 82,
- 15, 49,240, 35, 44,163,195,112,169, 32,252,110,120,100, 14,255, 0, 6, 84, 78,117,197,111,105,134,220,238, 93,231, 65,219, 45,
-247,167,109,213,197, 90,217,251, 58,155,114,237,149,225,186, 16,105,102,169,111,209,111, 26,133,206,237,223, 6,220,186, 37, 68,
- 46, 57, 71, 74,105,117,120,239,199,126, 99, 76,195, 90,234,170,101,153, 10,125, 14,182,139, 3,128,178,227, 14,113,200,102, 49,
-197, 94,146, 41, 26,186, 58, 14,100, 76, 1, 54,102, 4, 50,105,239,205,107, 48,109,241, 25,226,106, 58,222, 29,225,154,236,230,
-154,152, 85, 54, 88,209,177,136, 41, 60,216,218,101,137,193, 42, 24,198,232,143,175, 85,138,168,137,139, 93, 73, 6,112,183, 37,
- 78,163, 2, 75,208,150,135,161,212, 82,216,153, 17,169,141,173,151,176,166,195,172,115, 50,232, 25,142,243, 42,192, 88,248, 20,
-135, 67,169, 82,146, 1,214, 30,110,102,229, 6,164, 37,229,248, 15,167,153, 14, 21,167,199,131, 45,149, 41,178,218,193,232,133,
- 37,208,234, 20,133, 14,138, 74,146,161,200,172,136, 53,240,131,237,106,226,159,133, 24, 84, 59, 53,218,219, 59,239,178, 52,133,
-176, 33,109, 62,233,213, 42,115, 87,110, 83,210, 19,207, 27,108,183, 21,133,187, 86,176, 89, 90, 16,222, 98,161, 83,232,235, 9,
-248,233, 74,207, 48,145,223, 13,254,212,238, 15,184,152,159, 78,162,209, 47,183, 54,118,249,175,188,219, 14,237, 94,249, 74,164,
-218,245, 37, 92, 79,169, 49, 99, 27, 63,112,216,112, 91,183,164,105,106, 74, 80,226, 84,253, 38,123,107, 83, 14,125, 94,162,183,
- 66,108,186,204,183, 48,166,102,149, 71, 62,156, 30,169,168,233, 30,174,159,105, 0, 23, 14,192, 50,168, 43,245,131, 77,196, 95,
-135,248,215,135,243,244,142, 40, 42,125,147, 48, 63,251, 60,246, 73, 9, 31,170,141,253,220,164,236, 80, 35,107,102, 86, 28,176,
- 93, 65,235,149, 54,227,231, 82,252, 98,143,120,111, 30, 50, 3,153, 10, 74,242,148,190,207, 95,141,149, 1,219,201, 64,160,158,
-157, 92, 10, 45,120, 41, 72, 30, 42,210,211,129, 60,138, 36, 39,194, 40, 56, 9,201,199, 34, 15,194, 82,125, 71, 47, 98, 51,173,
- 78, 57, 42, 4,150,225, 74, 68,136, 85, 24,204, 38, 66, 27,148,194,153, 91,140, 60,112,210,188, 53,165, 42, 92, 71, 18,144, 65,
- 31, 2,199, 43,141, 41, 93, 9,204,232,245,213, 45, 41,192, 82, 28, 24, 15, 5,245, 67,125, 1,240,211,143,214, 37, 36, 97, 93,
-148, 8, 56, 7, 58,212, 89, 53, 45,155,126,155,250,244,189,247,220,131,214,195,222, 7, 80, 36, 83, 0,111,109,143, 66, 55,176,
-233,219,176,244,244,232,113,182,208,103, 41,109, 2,130, 8, 28,170, 10, 7, 24, 72, 25,194,155, 35,170,130,179,216, 16,115,215,
- 3, 58,111, 43, 10,114,143, 57, 62, 8, 83,116,247,138,158,104, 35, 42,247, 7, 50, 75,237, 35, 36,226, 62, 87,206, 17,241, 16,
- 21,132,140, 32, 1,125,182,231,180,168, 76, 58, 9, 40, 84,116,130,133, 30, 98,133, 5, 4,164,144,145,213, 29,122,131,213, 61,
- 0, 36, 29, 13,118, 6,157,142,165,164,161, 74, 66,131,137, 36, 16, 75,137, 11,198, 66, 58, 1,225,133,117, 7,177,199, 76,105,
-179, 52,167, 21, 20,206, 20, 94, 88,188,203,247, 14,159,247, 13,175,219, 99,141,204,138,188,229,245,233,172,222,154,164,132,144,
-123,143, 71,223, 96, 84,155,244, 59,106, 94,135,127, 84,218,177, 40, 8,109, 77,171,152, 21,173,176,163,224,169, 71,153, 72,125,
- 10, 73,232,160, 71, 80,122,228,147,140,224,235, 37,102,160, 10, 82,164,185,132, 45, 57, 74,215,202,149, 96,228, 37, 5, 93, 73,
- 30, 65, 68,115, 96,128, 73,233,134, 98,157, 41, 13, 56, 75, 78,101, 30, 32, 41,200, 60,139,109,106, 31,174,223, 79,137, 36, 30,
-189,207, 76,140,117,214, 72,221,101, 45,182,162,165, 36, 32,100,243, 41, 75, 81, 70,115,204, 0,245,193,235,219, 60,157,117, 24,
-134, 67,166,254,131,225,214,223,195,240,185, 63, 9,141,122, 6,118, 85, 58,239,247, 92,246,191,191,212,255, 0,166, 51, 26,229,
-207, 71,161, 82,171, 21,250,253, 86, 21, 10,222,160,210,170, 53,218,245,110,162,164,183, 78,161,208,104,176,228, 85, 43,117,153,
-206, 45, 73, 9,137, 18,151, 18, 91,238,228,225, 72,142,160,158,165, 57,252,241,248,236,226,198,175,198,143, 19,187,139,190,210,
-211, 34, 37,167, 54, 67, 54,134,209, 80, 36, 40,149, 91,187, 67,106, 59, 42, 29,153, 29,224, 82, 63,247, 86,123, 78,203,172, 84,
- 21,128,163, 54,224,117, 10,232,210,117,219,143,110, 55, 31,168,247, 9,220, 13,237, 45,117,106,153, 60, 65,155,196,245,118,153,
- 33, 73,250,186,148,129, 22,167,110,108,123, 50,218, 88,204,249,174, 8,181, 59,157,180,158,102, 99, 49, 2,144,247, 42,222,154,
-216,140, 58,201, 42, 87, 55, 92,245, 24,242, 62, 93, 51,208, 99, 86, 23, 10,101,174,168,115, 74,133,179,204,161, 98, 4,110, 35,
-184, 38, 79,255, 0, 83,109, 63,224, 1,129, 34, 76,115,135,139, 28, 75, 29, 69, 68,124, 51, 69, 46,168,168, 95, 93, 91, 41,184,
-105,192,178, 67,126,252,133, 36,200, 55,250,214,208, 64,120,119,164,226,207, 66, 6, 58, 99, 61,253,127,110,168, 40,146, 14, 79,
-145, 3,176,234,117,236,175, 32,140,119,245,254,173, 14,178, 50, 7,166,115,251, 53, 54,197, 56, 6,195,215,223,143, 26, 25,222,
-163,190,112,127,103, 95,199,190,136, 80, 4, 28,249,117,233,242,208,171,236, 62,223,191, 74,170,144, 55, 30,252, 27, 3,172, 12,
- 19,233,219,241, 26, 21,194,122,100, 96, 15, 50,122, 99,167,203, 68, 45, 88, 7,168,198,127, 12,119,207,207, 39,246,104, 39, 14,
- 65,238,122,244,207, 92,117,243,209,240, 49, 73,194,122,158,135,167, 78,221,191,225,160,214, 70, 49,230,127,175, 85,214,124,179,
-246,254,237, 12,162,115,131,131,230, 15,203, 74,168,176, 3,231,255, 0, 56, 24,164,161,156,124, 57,251,241,165,175, 42, 81, 4,
-128,123,105,104,248, 61,215,161,234, 61,195, 9, 4, 17,131,140,142,223,159,183, 85, 65,193, 7,254, 56,208,233, 56, 57,252,117,
- 84, 28,245,242,237,243,207,245,104, 16, 14,221,176,115,176,176,216,246,251,173,130,144,113,212,117, 31,209,147,251, 52, 64, 81,
- 7, 3, 57,199, 92, 12,227,237,208,169, 35,151, 56,237,220,122,227,174,171,161, 97, 64, 96, 17,233,247, 31,233,206,144, 35,125,
-251,225, 50, 15,218,181,186,127, 44, 28,217, 61,137,207, 79,219,211, 69,160,115, 4,228,115, 96,228, 12,227,183,110,191,142,129,
- 66,176,164,143, 53, 1,246,117,209,136, 61,199,167, 81,162,144, 13,182,219, 5,193,232, 56,201, 61,187,103,231,233,170,157, 57,
-128,201,237,219,190,122,158,195, 61,244, 58, 14, 70, 85,219,229,220,254, 78,137, 78, 6, 9,248,142, 58, 30,199,229,215, 73,176,
- 32,251,176, 49, 85,178, 80, 71, 49, 24, 29,179,128,122,159,234,206,170,161,228,172,227, 5, 63, 51,208,106,130,129, 57, 36, 12,
- 43,246, 12,103,250, 53,245, 33, 41, 28,169, 39,168,200, 39,169,243, 62,154,215,113,110,214,192,193, 69, 75, 80, 41, 11, 40, 72,
-242, 79,235, 44,117,198, 14,142,138, 84,193, 74,208,181,165,208, 82,164,172, 44,165,214,212,133, 5,182,227,107, 79, 84, 56,149,
- 0, 82, 71,108,122,116,213,184, 21,116, 32, 12, 36, 16,175, 92,121, 99,240, 58, 41, 11, 82,192,198, 50,156, 1,158,159,143,207,
- 73,144, 8, 32,238, 14, 5,200, 32,131, 98, 8, 32,251,198,227,247, 28,108, 53,141,190,213,107,108,134, 43,180,182,171,204,124,
- 41, 19, 35, 60,136, 85, 18,145,128, 11,205,175, 13,186,160, 60,210,164,149, 28,156, 13,108,141,181,197, 54,220, 70, 82,197, 66,
-151,116,195,121, 72,202,146,221, 49,185,109,229, 32,244, 75,141, 75, 60,221,199, 95, 93,115,201, 4,164,124, 94,189,207, 82, 7,
-168,253,186, 37,176, 66,144, 22, 84,164,142,169, 32,227,161,236, 8,243,244,251,245, 28,174,225,188,174,181,153,164,137,162,103,
-235,203,114,160,244,191,151,117, 31,114,140, 91,121, 55,141,220,125,147,211,199, 74,107,169,243, 88,225, 80,170,107, 41,214, 89,
- 52,139, 90,242,161,142, 87, 35,177,119,115,110,248,235,133,191,199,206,218,219, 45, 52,170,125,157,118,214,229, 55,146,132,186,
-136,148,166,213,201,219,244,179,102,224, 18, 71,250,170, 3, 29,180,196,241, 5,199, 86,232,111,197, 1,251, 8, 50,221,147,182,
-143, 56,211,211,237, 58, 60,167,100, 74,185,156,140,226, 94,138,213,215, 87, 83,109,251,229, 61,183,144,219,158,226,195,104,140,
-227,141,161,111,151,249, 82,145,162, 3,148,130, 92, 5,192, 20, 20,148,231,148, 55,212,227, 4, 14,186, 61,162, 86,176,146,225,
- 80, 56,228,194,113,201,219,161,207,235,116, 56,211,117, 47, 5,112,245, 21, 84,117,201, 69,207,170,132,134, 71,149,218, 77, 12,
- 8, 33,149, 73,229,134, 82, 46,173,163, 82,145,169, 72, 32, 28, 53,241, 15,138,188, 97,196,116,243, 82,213, 84,195, 69, 77, 80,
- 10,200,180,176, 44, 69,212,245, 83, 35, 25, 38, 10,219,134, 85,145, 85,193, 42,192,169, 32,158,135, 75,235,241, 20,165,243,156,
-130,149,228,227,191,234,252,191,175, 69, 53,226, 20,169,146, 9, 42, 80, 87, 50,134, 0, 79, 79,192,118,208,142, 44, 52,130, 84,
-175,137, 56,248,146, 49,143, 64,122,117,233,170,145,222, 81, 66, 66, 73,248,178, 73, 87, 82, 79,108, 12,246, 29, 53, 36, 61, 54,
- 29, 62, 70, 43, 94,183, 35,123, 91,175,205,241,136,238,148, 54,166, 91, 20,250,139, 88, 47,209,166,170, 59,233, 79,254, 76,255,
- 0, 80,172, 99,160,230, 39,240, 58,198,120,103,221, 57,187, 25,196,150,199,238,244, 21,134, 94,176, 55, 62,210,175,186,181, 28,
- 15,112,143, 87,142,138,146, 84,113,217, 84,215,101, 39,255, 0,165,167,117,218,108,106,205, 62,177, 68, 90, 2, 93,157, 79,120,
-165, 71,245, 68,134, 82, 86,218,243,228,123,254, 61,245,167, 85, 38, 11,109,188,210,135,233,152, 91,140,184,160,122,120,145,212,
- 83,145,142,255, 0,171,251,117,187, 66, 18,104,170, 41, 36,251, 18,234, 83,255, 0, 68,162,196,254,253, 93,251,227, 20,149, 82,
-101,249,133, 45,100, 91, 73, 4,145,202,189, 62,212,108,174, 63, 16, 49,250,180,211,238,200,245, 37, 67,171,211,156, 15,194,174,
- 65,129, 89,167, 45, 4, 20,189, 10,173, 21,153,145,214,133,121,160,178,242,122,249,231,190,180,239,217, 89,188,242,168, 28,101,
-113,223,195, 53, 74,165, 21,248,241,110,200, 59,151,105, 48,148, 54,212,150, 99, 85, 66, 25,171, 70, 90,211,133, 72, 8,121,198,
-149,215, 37, 35, 61,129,214,138,112,241,237, 18,181,246,247,217, 85,195,199, 23, 55,221,185, 92,188, 87,110,170,222,216,155,158,
-135, 70,113,168, 85, 74,133,213, 66,154,237,182,137,209,228,212, 2, 90,247, 81, 18, 12,119,150,178,172, 40, 40,165, 36,172, 99,
- 92, 76,225,195,218, 43,112,108,191,180, 68,241,163, 87,137, 53,218, 13,213,121, 85, 13,251,109, 69,117, 79, 59,252, 93,220,210,
- 61,214, 85, 57,148,140, 9,179,169,240, 12, 87, 90, 24,253, 35,176,207, 39, 85,140,213, 94,201, 95, 89, 89, 81, 50, 68, 88,229,
- 41, 44, 77, 97,114,211,137, 33, 50, 70,130,251,177,141, 24, 11,126,210,130,124,216,234, 92,247,139,178,110, 30,135,135, 86, 26,
-240,171,156,212, 69, 53, 68, 96, 18, 70, 89, 60, 14, 18, 89, 46, 45,161,102,104,166, 0, 18,247,167,107, 0, 6,255, 0,166, 5,
- 42,103, 57, 65, 82,185, 64, 32,133,247,194,134, 58, 28,253,191,183, 79,189,167, 40,130,133, 15,136,130, 15, 48,207, 92,244,234,
- 62,127,191, 90,215,182,213,122, 45,249,108, 90, 55,197,175, 49, 85, 11, 94,248,160,211,110, 91,114,123,145,228,195, 92,170, 77,
- 82, 51,114,163, 41,232, 51, 90,109,232,174,134,220, 0,165,196, 37, 67, 29,181,181, 22,173, 32,176,218, 22,172, 0, 58,144, 15,
- 48, 35,161,232, 51,211,182,149,165,204, 0,210,250,182, 96, 8, 55,216,131,107, 17,234, 8,177, 7,208,223, 12,252,106,244,209,
- 69, 44, 79,229,112, 89, 74,158,160,131,165,148,142,161,131, 2, 8,234, 8, 32,216,139, 99, 84,189,166, 92, 73, 94, 92, 36,240,
- 71,190, 60, 72,109,253,170,139,190,243,218,251, 81,202,181, 6,152,247, 63,185,197,151, 53,246,105,136,172, 84, 2, 7, 50,224,
- 67, 84,180,200,117, 35, 4,165,140, 2,158,227,242,123,220, 13,193,188,183,102,246,187, 55, 70,255, 0,174,202,185,175,125,193,
-184,106,119,117,217, 95,154,225, 92,154,165,106,179, 33, 82,165,200, 61,127, 70,202, 74,130, 26, 64,248, 91,109,180, 33, 32, 37,
- 35, 95,176,103, 17, 91, 65, 79,226, 3, 96, 55,155,100,106, 73,104,195,221, 29,180,188, 44,162,167,194, 11, 49,228,215,104,147,
- 33, 65,146,176,160, 71, 43, 83, 28, 97,207,145,107, 58,252,126,111,173,183,174,109,101,223,114,237,205,200,243, 14, 87,172,107,
-134,183,104, 86, 21, 21,196,191, 31,235, 27,118,163, 34,153, 41,108, 62,142,143, 50,181,199, 42, 74,135,250,248,242,211,205, 11,
- 23,205,103,169,168,185,146,170,158, 46, 83,159, 68,102, 90,132, 67,211,202, 69, 43,202,122,183, 50, 37, 98,121,105,106, 87, 55,
- 74,198,201,233,231,141, 79,232,234, 57,204, 82, 16, 6,132,158, 85, 50, 83,153, 27,174,169, 99, 74,129, 10, 55,149, 68, 19,180,
-118, 47, 41, 56, 67,100,168,171,151,155, 61, 79, 95, 60,122, 15, 61, 35,130,164,243, 43,195,200,232, 85,144,149, 30,190,103,160,
-235,163,138, 10, 81,148,161, 61, 1, 57,207,196, 1,237,229,215, 58,179, 73, 73,100, 1, 32,169,109,175, 10,108,133,117, 65, 61,
- 64, 35,211,190,164, 33, 71, 78,184,138, 6, 12,221,108,127,211,249, 99,203,205, 18,188,146,148,164, 30,157,114,114, 49,212,122,
-121,235,227,237, 45,212, 2, 7, 84,167,184, 57,230,251,255, 0,214,210,105,196,231,225,201, 72, 78,112, 71,161,193,239,249,235,
-162,163, 54,227,231, 9,229,102, 56, 25, 86,126, 37, 18, 58,142,158,154, 26, 64,223,165,177,147,211,115,112, 58,252,252,223, 22,
-213, 70,117,150,146,176,201, 81, 88,230, 39, 35,152, 1,253, 61,115,159,248,104,168,146,144,231,232,202,255, 0, 85, 56, 40,229,
- 0, 30,157, 78,124,245,114, 83, 5, 65, 72, 11,202,122,142,131, 4, 30,196,245,208, 41,136,220, 55, 57,130, 80,160,172,229, 74,
- 5, 71, 24, 57,192, 61,188,255, 0, 13,102,195,174, 10, 13,246,245,219,231,231,243,194, 75,106, 66,138,139,202,121, 62, 73, 39,
- 41, 64,244,249,235,195,175,165, 29, 16,164,129,215, 3,176, 10,244,237,242, 58, 13,247, 86, 20,162,210,241,205,219, 9,199, 76,
-118, 57,252,252,244, 57,121,183, 22, 18,162,114, 8, 46, 36,167,166,122, 30,132,122,147,160, 1, 61,122,224,218,109,176, 59,124,
-252,244,193, 73, 62, 42,249,210,160,160, 6, 10, 58, 4,243,117,237,215,174,169,202,116,144,148,163, 9, 35, 41,232,112, 73, 35,
- 26,244,226,149,225, 44, 52,218, 83,202, 50, 6,112, 73, 3,166, 20, 60,186,106,200, 38, 56, 22,159, 25, 41, 42, 74,136,229, 35,
- 39,237,230, 7, 25, 25,253,154,205,172, 79, 99,140,129,115,240,254,120,124,184,115,189,156,218,173,243,217,253,196,140,226,154,
-114,201,221, 29,189,186,157,144, 2, 28, 76,104,148, 91,202,137, 62,170,234,144,226,146, 10, 19, 71,106,164, 78, 72,192,235,229,
-214, 89,252, 84, 79,135, 38,165, 91,167, 64,144,125,222, 21, 90, 83,212,194, 9,203,148,103,102,202,149, 75,147, 29,226,231,198,
-199,134,165,180, 86,174, 83,250, 48, 82,145,204,117, 12,134, 36, 32, 58, 89,144,219,141, 68,148, 28, 97,215, 25,112,135,124, 41,
- 13,150, 30, 13,148,156,182,191, 13,197,224,142,160,224,143, 93, 73,106,193,222, 9,123,221,195,158,213,110, 37, 84, 5,220,177,
-173,145, 99,221,170, 9, 90, 82,245,211, 97, 33,139, 66,186,235,106,113, 41, 18, 89,144,221, 38,151, 80,109,206,169,241,170, 79,
- 3,133,165, 68,213,126, 32,229,133,243, 12,131, 53, 81,228,136,205, 3,157,175,169,213, 36,139,223,107, 71, 40,244, 5,135, 82,
-109,142,146,250, 55,230, 49,199,158,230,217, 92,205,165,166,142, 42,152,199,111,171, 99, 12,173,241,188,212,235,255, 0,117,239,
-229,177,215, 10, 45,116,211,119, 43,112,233,170, 37,182,230, 76,183, 43,177, 16, 48, 67,141,212,104,203,167, 84, 84,210, 85,250,
-200,247,186, 39, 42,135, 76,169,127, 17,201, 25,126, 41,181,229, 37, 94,246,130,227,139, 83, 98,158,134,210,180,160,134,139,132,
-169, 8,228,234, 57,157, 60,196,119, 33,160, 58, 3,173, 54,220,106,162,232,187,147, 64,173, 32,128,221,114,157, 86,182,101,168,
- 2,112,236, 98,110, 58, 71, 42, 0,200, 82,156,139, 85,108,168, 12, 37, 47, 14, 99,215, 89,237, 42,241,122, 42, 89,121,149,120,
-143, 68,240,228, 71, 67,193, 97, 42,112, 20,248,104, 82,146, 14, 81,149, 36, 43, 61,130,149,202, 79, 77, 54,154, 98,201, 79, 48,
- 93,157, 23,215,245, 64,140,254,242,183,247, 3,113,214,216,234,185,107, 85, 90,190,153,200,103,134, 73, 8,185,181,196,141,207,
- 0,122,217, 95, 77,199,166, 54, 18,161, 94,151, 79,143,238,201, 90,156, 74, 11,144,195, 67, 45,167,222,100,242,185, 41,107, 79,
- 47, 68,161,128,211, 94, 17, 4,143,139,237,214, 33, 94,188,163, 65,166, 48,194, 95, 91,117, 54,202,144,132, 54,165,128,183, 95,
-199,188,184,162,159,133, 33, 12,114, 39, 3,184,113, 99, 62, 90,108,110,125,200,155, 57,192,243,237, 54,135, 98, 37, 65,105,104,
-184, 83, 38, 67,170, 74,157,117,106, 82, 65,231, 43, 42, 36,158,164, 28,103,182,152, 91,179,113, 22,203, 82, 31,144,227,141,177,
- 29,133, 60,243,188,138,117,126, 27,202,229, 79,134,132,140,173,213,186,224, 64,230, 35, 28,249, 82,146,156,168,109, 83, 80,180,
-133, 70,155,131,247,250, 91,173,253,215,233,123,143,190, 31,153,230, 40,116,234, 94, 76,155, 11, 13,199,112,250,136, 0, 48,181,
-193, 30,164,142,215, 14, 21,209,121,205, 91,172,198,128, 37,214, 37,203,151, 18,147, 71,162, 69, 74,158,159, 91,173, 84, 31, 76,
- 74, 61, 38, 10, 82, 57,149, 46, 76,199,210,132, 36,116, 79,141,204,122, 13, 72,111,103,182,153,253,140,217, 59, 59,105,234,166,
- 43,245,214, 40,146,102,238, 75,165,136,243,169,213, 75,230,241,120, 86, 47, 54, 36,211,230,178,227, 21, 26, 75, 53, 55, 26,167,
- 24,207,180,236,119, 35,210, 16, 22,218,146,117, 21, 91, 99,137, 58,134,192,111, 54,211,110, 76,122, 84, 42,181,197,100,221,246,
-174,224,205,167, 84,216, 19,169,212,123, 66, 37, 89, 42,151, 77, 97,181, 39,195,159,114, 79,128,212,245,169,240, 22,212,111,116,
-105, 13,225, 69, 58,152,173,218,236, 42,179,108, 87,233, 14,186,253, 46,181, 6,157,112, 82, 30,120, 56,211,238,209,110, 10,124,
-106,204, 5, 62,219,128, 41, 18, 61,194,107, 60,193, 64, 44, 45, 4, 30,186,117,106,119,163, 48,188,177,253, 92,232,116, 31,218,
-177, 26,182, 29, 0, 5,108,118, 44, 24,145,181,142, 35,114,231,116, 85,239,152,101,148,181,162, 92,195, 43,146, 35, 87, 18,135,
-188, 13, 42, 22,128, 23, 42, 35, 98, 66,200, 24, 35, 57,137,208,164,161, 30,202,120, 41,197,183,177,147, 96, 55,194,117, 82,245,
-225,250,163, 11,134,125,197,158,169, 14,206,182,216,166, 75,169,236, 93,114,190,156,248,141,189,108,196, 90,166,237,169,121,196,
-181,250,106, 40,147, 79, 30, 49,116, 81,219, 78,117, 26, 30, 33,248, 90,223,142, 22,238, 53, 90,251,235,183, 21, 75, 77,169,146,
-228, 66,162, 92,232, 13, 87,118,250,239,240, 22,241, 75,150,189,233, 78, 11,167,214, 10,153, 99,198, 17,203,141,204,109,181,161,
- 79, 69,104,144, 53, 62, 58,210, 27,142,235,239, 21,135, 25, 12,160, 78,108, 32,130, 2, 20,150,218,156,215,108, 60,148,173, 41,
- 88, 7, 42, 65, 24, 28,201, 25,193,174,203,122,131,116,219,213,139,110,241,182,232, 55,173,161,112, 70, 84, 43,170,207,186,169,
- 84,234,253,183,113,211,152,109, 97, 46, 84,104,245, 86, 28,142,237, 70, 59, 5,226,196,128,132,200, 66, 22,182,154,125,146, 80,
-180,201,178,222, 38,170,167,211, 29, 71,246,200, 86,223,104,218, 69, 29, 1, 87,177,189,186,233, 96,214, 30, 85, 40, 0, 56,170,
-184,143,195,156,143, 60, 18, 84, 69, 23,232,156,193,247, 18,194,160, 70,237,183,247,176,221, 84,146, 79,219, 83, 27,110, 29,203,
-146,109, 13, 30, 23, 61,163, 28,100,240,219, 38,149,107,237,182,228, 73,189,236,148, 58,150,218,218, 61,216, 67,151,221,136,166,
-144,210, 25,240, 41, 6,169, 45, 53, 11, 53, 66, 58, 57, 80,186, 76,248, 97,190, 98,160,218,142,164,109,178,158,214,237,167,175,
- 65,161,127, 41,109,181,191,248, 74,174, 85,212,196, 72,247,141,118,159, 86,189,184,118,184, 38, 56,243,200, 67, 20,205,205,163,
- 65, 92,187,103,244,108,243,134, 42,113, 37,120, 42,121, 41,114,160, 80, 84,117,167,220, 73,251, 19,182,242,247,150,245,217,194,
- 29,220,173,162,186,165, 45,185,180,237,176,187,166,214,235, 27,115, 85,154,242,203,141, 53,105,221,169,247,138,213,131, 33,111,
- 58, 60, 24,243, 19, 85,132,218, 80, 19,227,198, 71,195,173, 7,218,190, 57,120,161,246,121,238,117,107,135, 46, 42, 54,246,212,
-222,125,182, 66,215, 76,220,221,149,190,133,155,115,191, 81,182,165,170, 84, 41, 82,173,155,198,146,212,216, 50,159,240,155,121,
-200,241,235, 44, 76, 97,206, 80,135,152,140,178,151, 90,121,170,146, 44,222, 17, 46, 79, 77, 21,101, 90,144,210, 68,210, 26, 90,
-141, 23, 26,157, 24, 36,177, 72,226,224,221,193, 66, 60,166,100, 39,106,230,105,184,247,129,158, 20,172,144,102, 25, 56, 96,130,
- 73, 11, 77, 13,172, 72, 85,114, 4,208,176, 63,238,220,198, 0, 12,193, 90,219,205,107,111, 55, 22,222,185,109,106, 77,203,105,
- 92,212, 27,170,209,172,183,227,209, 46,123, 90,179, 79,185, 45,186,219, 47,160, 44, 55, 78,175, 80,230, 63, 25,215,130, 20, 20,
-227, 72,116,188,206, 64,121,180, 19,141,103,175, 87,204,134,148,133, 47,152,148,124, 42, 90,135, 81,202, 0, 79, 42,142, 57,128,
-233,159,246, 64, 39, 57, 58,138, 47, 16, 27, 71,120,112, 95, 98,211, 61,164, 94,203, 13,207,174,217,124, 50,238, 29,187,102,110,
- 70,229,240,243,119,189, 42, 85,155, 77,162,222,245, 72, 16, 41,117, 22,108,155,169,231, 90,184,109, 7,235, 46,162,151, 58,152,
-243,203,175,208,101,130,245, 6,171, 58,144, 89,145, 18, 68,155, 3,127,214,247,155, 98,118,115,120,231, 91,109, 90,114,247, 99,
-108,236,173,194,145,108,177, 83, 77, 90, 45,188,253,219, 67,139, 87,122,147, 14,164,243,190, 44,248, 45,185, 37, 98, 59,143,101,
-242,194,155, 18, 15,188, 7, 73,143,214,196, 35,167,138,170, 9,185,212,211, 51, 37,153,116, 75, 28,128, 41, 49, 75, 29,205,152,
- 95,170,150, 83,177,218,235,123, 43,134,115,213,207,218, 72,189,141,233,170,169,213, 93,148,221,209,145,142,149,120,220, 40,189,
-200,177, 4, 41, 27, 0, 8,185,198,215,109,149, 22, 37,219,112, 75,167, 73,165, 92, 21,191,118,183,110, 26,195, 20,107, 85,228,
- 68,174, 84,165, 82,105,206,202, 98, 44, 87, 92,162,212, 48,165, 45,180,169,192,152,142,168,161, 4, 36, 36,229, 99, 64, 56,226,
-223, 77,219,218,203, 74,243,176,184,111,131,100,212,184,131,106,210,106,188,182,174,237,198,176,104,236,108,117, 26,191,107,238,
- 45,231, 67,159,114, 83,238, 42,188, 53,220, 59,203, 46,201,218,125,206,169,219, 54,146, 99,166,100,164,216,146,234, 18,227,161,
- 2,157, 2,167,204, 14, 62, 61,170,123,199,195,134,245,239, 23, 13,187,105,102,194,182,165, 83,246,238,171,105, 84,183, 81, 53,
-244,170,245,137, 87,220,107, 45,183,233,117,187, 54, 41,166, 73,133, 64,143, 76,250,217,135,130,156, 67,211,229, 61, 20,165, 50,
- 32,160,164,235,150,155,127,199,229, 2,218,166,220, 17, 47,141,155,184,239,201,213, 27, 39,106,105,180,122,212,125,229,250,134,
-170,214,227,109, 78,199,111,230,200, 68,190,174,249,149,109,181,172,187,121, 82,106, 16, 56,129,184, 42,147, 41, 97,218,124,229,
- 79,183,224, 36,215,213, 28,203,110, 70,206, 69,195,144, 85, 69, 5, 70, 98,154,105,203, 23, 84, 82, 9,145, 88, 2,188,203, 43,
- 29, 22,223, 64,107,155,217,130, 11,134,211,227, 63, 18,206, 91, 83, 89,150,100, 83,153,115, 5, 2, 9,166,100,112, 41,101, 77,
- 75, 50,195,172,141, 83, 43,150, 83, 39, 47, 66,149,186, 60,183, 82,141,110,225,240, 39,196,221,155, 81,191,231,222,141, 89,213,
- 55,237, 88,247,245,205,127,221,171,222,173,181,185, 61,226,240,182,175, 86,237, 91,186,211,159, 89, 98,236,113,202,246,245, 75,
-190,106,209,152,110,218,100, 61,112, 84, 36,212, 28, 91, 16, 22,220,105,170,139,127,159,236,242,222,186, 77, 26,239,166, 87,232,
-112,233,215,213,183,115, 90,106,118,188, 55, 27,106, 92,217,154, 61,128,237, 3,137,199,119, 10,177,114,223, 77,221,139, 75, 53,
-122, 53,223,195, 53,253, 73,112, 71,241, 98,181, 54,200,172, 83,221,113,115,223,163, 51, 57,230,147,199, 5,183,187,182,199, 20,
-139,188,118,233,203, 98,159, 84,186,183,115,137, 91, 34, 52, 27,238, 84,170,188, 61,236,220, 94, 32, 44,203,171,108, 40,237, 75,
-107,110, 95,141, 88,160, 80,145, 95,186, 77, 97,137,205, 83, 25,174,211,162,188, 99, 84, 40,149, 52, 64,143, 46,157, 75,218, 83,
-101, 77,186,105, 19,162,236, 45,249,108,218, 84, 43,254,198,220, 58,109, 34,211,226, 14,155, 2,237, 19,173,203,215,141, 77,199,
-186,173,217,247,125, 99, 98,170, 16,170,182,125,110,232,227, 78,236,167,187, 2, 77, 5,212,166,211,181,219,161, 84, 87, 88,151,
- 81,153, 91, 22, 42,173, 58,216, 2, 66,109,243,176,249,247,227,159,188,172,197,153,181, 23,220,146, 73, 36,158,189,183, 55,238,
-119,191, 83,134, 79,133, 94, 26, 54,163,119, 40, 23,245, 15,114,220,191,142,226,213, 56,139,225,227,133,189,165,172,237,181,249,
- 97,155, 30,221,191,119,242,131,196, 96,167, 93,151,172, 39,236,250,202, 55, 62,208,102,241,218,107, 53,128,138, 37,126,130,149,
- 83,107, 53, 9,204, 84,230, 17, 17,189, 55,212,190, 3,248,146,172,211,160,212,169,214,189,181, 33,186,142,219,211,247, 54, 44,
- 95,227, 14,196,106,162,186,125, 98,181,178,180, 58, 45,166,105,207, 92, 9,120,110,100,217, 28, 70,108,107,177,109,190, 79,173,
-221, 99,115, 41,203, 76, 94, 97, 37, 17,242,109,137,226,246,211,217,104,251,163, 81,127,101, 62,187,186,171,187,235,180,188, 70,
-108,210,237,235,249, 22, 93,137,180,219,153,179, 84,221,245,137,101, 55, 93,179, 23, 99,212,230,110, 13,155, 14,126,244, 71,153,
- 30,155, 22,183,110, 58,135, 44,136,172,191, 58, 84,105, 79,178,151,218, 87,181, 90,244, 52,109,183, 49,108, 26,164,171,191,110,
- 45, 11, 30,153, 2,181,115,110, 83,149,219, 97,171,198,196,221, 46, 9,183, 14, 21,126,223,177, 98,217, 80,152,183,109,137, 17,
-184, 39,182,216,149, 73,247,169,115, 94,157,126,212, 38,174,188,170,109, 62,145, 66,136,100, 17, 21, 93, 71,204, 47,211,227,220,
-219,115,111,195,225,108, 1,107, 11,252,252,239,134,106, 63,179,199,115,133,155,125,215,171,187,135,179,118,237,197,106,110,150,
-201,109,205, 10,223,153,185,246, 52,250, 21,249, 15,122,172, 61,215,189,169, 23, 85,173,123,210,110, 87,226, 85,161,161,221,180,
- 69, 50, 35, 16,154,153,245,133, 70,101, 86, 39,143, 18,101,191, 50, 43,173, 61,131,193, 94,250,238,142,241,110, 54,200, 89,144,
-172,105,247,150,215, 94, 63,197,253,209, 54,126,230, 88,150,253,156,245,230,245,238,157,187,165, 91,118,205,231,112, 87,162,211,
-175, 26,213, 74,234, 15,179, 73,139, 75,126, 92,138,179, 48,164, 75,167,183, 38, 43, 46, 58,157,172,107,218, 71,106,187,184,205,
- 93,151, 6,202,110, 37,197,110,209,175, 29,134,190,172,246, 39,241, 13, 5,253,203,160, 93, 60, 62,109,135, 18,118,213,139,112,
- 73,220, 10,142,200, 73,165, 84,170,177,119, 63,136, 8, 23, 60, 70,218,180,225,210,217,143,182,241, 40,114,169,117, 3, 80,155,
- 86, 12, 7, 9,252, 89,216,124, 52,223,247, 21,199, 92,217,203,159,115,109, 71,183, 27,106,119, 94,200,183,218,221,216, 86, 93,
-205,110,222, 91, 37,184,134,249,219,247, 46, 91,196,109, 93, 86, 53,227, 71, 49,101, 84,161,213,227,179, 69,164, 59, 61,217, 13,
- 76,139, 38,154,150, 85, 17,245,109, 21,212, 94,194,230,253,122,118,237,252, 63,118, 51,229,219,231,249, 97,202,188, 61,155,155,
-199,118,239,117,185,183,155, 45,111,219, 48,169,151,253,165,181,247, 29,144,197,255, 0,186, 86, 69,154,185,177,175,167, 54,191,
-110,233, 53, 41,149, 43,218,189, 9,184,108,215,247,190,249,155, 69,160, 50,234,210,253, 65,250, 53, 77,200,172, 42,159, 74,151,
- 45,166,227,134, 30, 29,118,127,120,246,186,191, 46,244, 59,148,198,229, 93, 91,162,198,209,109, 69, 98,214,187, 45,122, 85,145,
-109,220,147, 54,155,112,111,218, 69, 66,255, 0,180,170,251,125, 80,157,121, 82,101,220,150,181, 18,154,240,167,215,104, 46, 83,
-162, 85, 36,212, 19,245,147,172, 55, 5,237,158,182,189,170,118,111,241,175,183,251,177,186, 92, 50,213, 47,138,213,133, 67,216,
- 27,113, 74,181,183,186, 14,223, 84,174,122, 47, 11,119,174,202,223, 59, 29, 14,226,170,191,178,245,148,204,114,158,230,219,222,
- 52, 89,210, 61,212, 74,157,109,221,244, 74,100,119,233,207,218,140,207,171,105,175, 15, 60, 86,219, 59, 19,183, 23, 37,185, 55,
-107, 42,215,157,246,197,244,141,202,218,155,189,189,196,135,110,218,246, 85,232,222,219,222,187,117, 26,163,120, 88,142,109,229,
- 70, 70,225, 69,136,139,192, 85, 33, 71,143, 94,160, 33, 53, 10, 36,116,205, 53, 8, 43,126, 27,135, 2, 45, 74,111,229,107,222,
-224,251,173,219,227,235,252,241,159, 47, 99,243,255, 0,140,109,229,209,192, 61,139, 67,254, 54, 13, 55,134, 30, 56,238,159,226,
-247,134,189,165,221,155, 88, 82,239, 26, 58,127,141, 58,134,224, 29,184,254, 17,110,133,181,238,252, 37, 74,228,217,202, 39,240,
-190,165,239, 17, 99,253,100,191,208, 49,227,221, 17,185, 92,241,117, 46,135,178,187, 35, 81, 28, 31,213, 31,183,183,186,171, 31,
-122,172,157,204, 93,241,102,218,215,157,151, 58,233,188,119, 54,204,184,111, 91, 90,206,160,237,157, 94,102,218, 53, 31,110,232,
- 55, 5,201, 73,181, 97, 62,229, 82, 21,212,253, 17,170,156,202,136, 53,143, 5,170,122,233,238,255, 0, 21,182, 21,251, 73,221,
- 38,109, 61,163,187,173, 42,230,243,109,206,204,217,215,189, 66,226,221,186, 53,235, 74,102,187,180, 15, 88,202,106,225,181, 40,
-212,205,160,161, 61, 71,164,207,141,102,114, 42,155, 50,125, 77,232,203,169,120,130,166,250, 89,240,157,111,237,173,252,177, 83,
- 70,217,139, 67,114,246,121,205,192,178,182,194,199,221,235, 38,179, 78,133,124, 51,107,215,171,138,221, 10,189,205, 93,167, 93,
- 54,173,114, 93,149, 85,143,101, 93, 20, 42,173,118, 11,240,157,147, 78,174, 70,121,218, 70, 95,139,225,190, 91,109, 66, 82,230,
-223, 59,143,119,166, 50, 8,184, 3,231,127,135,166, 49, 78, 42,118,162,139,177,156, 68,238,246,208, 80, 63,132, 77, 83,182,246,
-242,168, 91, 74,166, 93,239, 65,153,117,219,117, 40, 41,100, 86,172,219,150,169, 75,166,194,137, 94,175, 81, 43, 42,159, 72,151,
- 83,133, 10, 28, 42,156,138, 35,149, 8, 81, 34,197,146,211, 13,173, 88,184,129,221,147,190, 91,193,122,238,130, 40, 10,181,162,
- 92,146,233,172,210,109,231,107, 47, 92,147, 40,244, 11,118,135, 75,181,237,216, 53, 75,142, 68, 40,170,184,107, 72,161, 81,105,
-222,253, 60, 68,134,137,147, 11,242, 90,133, 13,183, 81, 21,165,172, 21, 55, 58, 70,221,186,116,193,180,169,223,215, 31,255,217,
+137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13,
+ 73, 72, 68, 82, 0, 0, 1,245, 0, 0, 1, 26, 8, 6, 0, 0, 0, 8, 90,206, 70, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0,
+ 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 11, 19, 0, 0, 11, 19, 1, 0,154,156, 24, 0, 0, 0, 7,
+116, 73, 77, 69, 7,217, 11, 23, 13, 49, 40,184,203,133,107, 0, 0, 32, 0, 73, 68, 65, 84,120,218,236,189,121,148,101,199, 93,
+231,249,137,229, 46,111,201,151, 75,173,218,229,146,188, 27, 27, 83, 50,244,216, 24,170,161,212,110,179, 13, 91,137, 99, 6,204,
+176, 73, 3,211, 51,109,250,140, 37,205, 52,115, 12,167,177, 81, 21,208, 6, 26,152,163,106, 24,186, 27, 24,104,149,221,192, 48,
+199,224, 86, 25, 4,182,161, 1, 23,182,177,145,109,217, 42,107,177, 84,107, 86, 86,102,190,229, 46,177,204, 31, 17,239,229,171,
+116, 45, 89,155,164, 18,247,171,243, 78,170,222, 18, 55,226,222,136,248,254,126,223,223, 47, 34,160, 65,131, 6, 13, 26, 52,104,
+208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6,
+ 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,120, 78,160,158,227,235,137,248,202,129, 29,
+ 82,178,197,123,134, 64, 29,223,111,208,160, 65,131, 6, 13, 26, 92, 3, 16,128,148, 82,220,254,175,247,188,238,247, 62,241,243,
+223,126,252,211,191,248, 29,139,239,249,190,175,250,195, 84,203,157, 83,223,105,208,160, 65,131, 6, 13, 26,188,192, 61,117, 1,
+164, 63,254,214,151,191,251,231,191,251, 21,111,223, 86,143, 58, 91,122,157,214,155,191,230,165, 47,255,218, 87,108,217,253,145,
+207, 28, 61,186,212,175, 30, 3,124, 67,238, 13, 26, 52,104,208,160,193, 11,155,212, 37,208,254,250, 91, 91,223,245,207,182,154,
+215,140, 78,156,162, 94, 90,196,140, 74, 94,246,178, 91,230,191,251,107,111,251,214,207, 61,179,164, 62,255,236,202, 39,129, 81,
+ 67,236, 13, 26, 52,104,208,160,193, 11,219, 83,207,254,250,137,149,163,155,102,211,215,190,233,182,222,118,111, 60,118,117, 5,
+179,186,202,252,214,173,250,109,223,248,170,175,183,206,188,244, 35,143, 30,253, 56,176,216, 16,123,131, 6, 13, 26, 52,104,240,
+194, 36,117, 0,225, 61,171, 31,120,116,249, 19,199, 70,118,211,157,175,156,123, 89,174, 52,245,104,132, 61,125, 10,178, 54,119,
+190,233, 85,175,124,237, 45,179,187,254,252,211,207, 62,209, 47,204,225,230, 17, 53,104,208,160, 65,131, 6, 27,247,158,159,235,
+235,229,192, 44,112,227,215,222, 62,243, 3,191,253,182, 29, 63,114, 75, 75,231,195, 97, 13, 74, 33,175,191,149,252,166,155,120,
+252,217,197,149,123,126,229,145,159,253,208, 39,158,249, 53, 96, 53,254,222,191,144,111,166,247,126, 39, 48, 31,255,121, 88, 8,
+241,162, 54, 74,254,177,181,183,193,186,231,191,111,215,153,207,255,222, 71, 14, 95,203,215,105,208,160, 33,245, 75,135, 4,122,
+192,182,237, 61,253,109,255,249, 7,110,251, 87, 95,187,189,179,189, 24, 89,192, 33,182,221, 72,235,230,151, 80,121,199,255,246,
+155, 31,253, 79,255,238, 15, 63,245,147,192,211,177,190,151, 77,236,222,251, 29,192,142, 13,126,125, 73, 8,113,104,131,229, 62,
+ 12,236,142,255,188, 95, 8,177,247, 69, 78,234, 47,138,246, 70,227,100,119, 36,142,157, 83, 31, 29, 2, 14, 3, 7,132, 16, 75,
+ 87,224, 58,235,203,231, 74,247,193,203, 32, 75,128, 67,226,222, 71,150, 46,226,247,103, 62,255,123, 31,185, 42,207,255,185,186,
+206,243, 96, 16,237,158,106,215,184,191, 29, 18,247, 62,114,160,161,166, 6,151, 10,125, 25,164,236,128,153, 77,221,228, 43, 54,
+117,244, 38,231,133, 56,195, 82, 16, 32,132, 16,126,252,142, 24,191, 63,249, 84, 3,237,218,250,209, 79,124,224,248,159,252,226,
+183,223,244,237,111,220,218,153,171,106, 15, 75,139, 20,237, 46,201,166,109,252,242, 61,187,222,190,243,246,109, 47,127,199,131,
+127,241,206,211,253,234, 35, 87,136,216,247, 0, 15, 92,196,100, 12,112, 0, 56, 40,132,216,223,116,155, 23,141,202,176, 39,190,
+206,101,224,141, 39,220, 7,189,247,251,163,225,114, 57,228,190, 19,120,248, 18,126,119, 16,184,243, 10,147,202, 60,240,177,117,
+111,239, 5,238,111,122,199, 85, 37,243, 29,192,131,235,200,252,140,254,230,247,237, 58, 12,220, 35,238,125,228, 96,115,199, 26,
+ 60, 23,164, 46, 0,209,201,212,206,159,121,235, 45,239,121,219,235,182,238,154,109, 37,169, 19, 50, 16,182,148,225, 37, 4, 66,
+171, 51,254,141,148, 8,165,214,254, 45,194,103, 14,225,107, 47,156,209, 26, 57, 85,142,177, 53,110, 36,248,129, 59, 95,243, 53,
+175,191,125,203,251,127,248,189, 7,223,245,177,199, 78,252, 38, 80,242,220, 75,241,123,128, 61,222,251, 61,192, 93, 87,194,115,
+107,240,188,226, 99, 23,249,253,187,129,221,222,251,187,174,134,215,252, 60, 96,207, 57,218,216,144,250,213,245,206, 31, 94,167,
+142,156, 13, 59,128,135,253,190, 93,247,136,123, 31,105,156,136, 6,207,137,167,190,101,223,183,190,228,189, 63,254,198, 27,222,
+ 92, 13, 29,222, 9,148, 20,193,129,247, 34,188,144, 8, 39, 2,245,122, 64,138,224,219, 59, 15, 10,132, 16,193,223,247,160,132,
+ 16, 90, 10, 21, 61,226, 64,234, 30,240, 30, 39, 4,229,176,226,181,183,108,221,242,240,123,190,243, 87,126,252,215,254,236,165,
+191,251,167,143,253, 44,112,226, 10,121,237, 99, 79,136, 11,120,107,211,255,126,216,123,127,103, 67,236, 47, 26, 28,138, 74,204,
+ 33, 33,196,193,232,201,207,199,103,125,247, 84, 31,216, 1, 60,228,189,191,227, 10, 61,251,253, 4,121,255, 66,184, 26,253,236,
+238,179,188, 55,239,247,237,218,211,200,191, 87,133,208,231,207, 66,232,247, 3, 7,196,189,143, 28,142,159,143, 21,196,241,119,
+ 30,244,251,118, 29,110, 60,246, 6, 87,221, 83,207, 18,185,227, 91, 94, 57,255, 6, 63,168,169,139, 18,156, 11, 36, 61, 81,214,
+199,254,188, 88,227, 93, 37,145,155,182, 70,114,119, 8, 9,184,168,226, 11,152, 48,188,116,129,248,165, 4, 75,200,207, 23, 80,
+149, 53,179,105, 42,255,159,123,191,233, 39,222,240,242,237, 95,241,191,255,250, 71,239, 45,107,251,137, 43, 65,236, 66,136,243,
+ 74,155,209, 59,127,128, 53,153,118,103,156, 20,247, 54, 93,232,154,198,126, 96,255,217, 60,239, 72,218, 7,128, 3,222,251, 7,
+167, 72,112,199, 21,124,246, 7,198, 70,196,243,224, 49,238, 92,103,212,238,158,242,224, 27, 82,191,242,120, 96, 29,161,223, 33,
+238,125,100,210,239, 98, 46,195,126,191,111,215, 1,130,138, 52,158,107, 30, 4,110,107,110, 95,131,141, 66, 94,194,111, 84, 85,
+187,197,223,251,251, 19,127, 45,100, 73, 39,181,116, 90,208,206,125,124,185,181,255,207, 28,185,172,192,214,136,172, 29, 72,222,
+ 57,112,142,137, 87, 14, 64, 5,174, 0, 55, 2, 95, 0,101,248,183,175,226,247, 61,222, 59,106,235, 48,165,229, 39,190,235, 13,
+187, 31,222,247, 93,127,112,235,182,222,119, 70,218,151, 87,243, 38, 9, 33, 14, 16, 98,154,211, 30,211,158,166,251, 92,211,184,
+ 83, 8,113,207, 70,164,116, 33,196, 61,235, 60,234,251,174,241,182,239, 89,167, 82, 76, 75,188,123,162,215,216,224,202, 25, 81,
+ 59,214, 41, 35,247, 79, 19,250, 25,125, 45,144,251, 61, 83,111,237,240,251,118,221,221,220,197, 6, 87,211, 83,199,195,226,125,
+127,248,196,187, 62,240,233,147,223,249,202,237,173, 91, 4, 72,231,189,139,221, 18,231, 3,101, 15, 43, 39, 95,127,243,204,171,
+126,244,235,110,223,145,235, 92, 58,231, 64,169,224, 91, 59,135,175,250, 8, 37,144, 55,189, 14,185,229,118, 68,111, 59, 34,239,
+129, 41,113,131, 19,248,213, 35,184, 19,143,129, 25,129,104,225,177, 88, 15,174, 95,241,230,215,220,124,243, 7,247,125,215,111,
+252,243,251,255,139,250,226,145,229,247,179,150,188,119,181,136,253,176,247,254,192,212,224,220,121, 69, 6,252,151,103, 68, 31,
+186, 66,153,214,211, 25,254,151,180,220,236, 74,148,241, 92,180,119, 93, 61, 55, 84,222, 37,120,200,251, 89, 75,174,156,247,222,
+239,188,134, 99,235,211, 36,177, 95,220,251,200,129,152,156,181, 99,234,243,171,166, 66,173,203,186,191,168,140,251,243,144,230,
+ 90, 63,189,132, 37,111,151,187, 18,224, 34,140, 40,214, 25, 81,103, 35,246,131,126,223,174, 67, 83,227,100,247,133,126,211,160,
+193,229,144,186, 5, 6,192,103,254,252,241,254,123,255,252,241,126,139,179,111, 98,179,233,173,175,221,250,195,223,121,199, 75,
+174,107,203, 84, 26,231,131,244, 94, 20,248,114, 0,118,128,122,217,155,209,119,124, 47,234, 37,255,228,156, 18,130, 63,245, 4,
+230,241, 15, 97,159,252, 40, 66,165,224, 61, 94, 64, 53,172,120,217,245,155,102,255,224,167,255,251, 95,253,198,119, 62,116,234,
+228,114,241,167, 92,185, 24,251,185,112, 69,214,199, 70, 98,187, 59, 14,246,157,103,249,252, 48,107,210,240,210, 57,202,120, 96,
+234,183, 7,132, 16,251,167,202,189,155,117, 25,221,177,204,189, 27,201,222,247,222,223, 29,189,209, 29, 23, 91,175,171,209,222,
+243,180,245,190, 88,238,244,100,124,197, 51,197,167, 60,218,105, 92,147,222,172,223,183,107,207,186,186, 31,152,250,123,223,149,
+ 32,117,191,111,215,153,207,235,222, 71,246, 71,226,189, 47,246,129,249,117,223, 63, 8,236,189,152,216,113, 84, 19,206,222,215,
+131,129,178,247, 92, 73,102,241,183,227,229,100, 59,207,101,160,199,114,246, 71,195,231,114, 8,126,154,212, 15,108,176,172, 3,
+ 83,245,218,227,247,237,154,191,130, 70, 70,131, 23, 49, 46, 69,182,118, 64, 65,144,162,143, 17,214,143, 63, 9, 60, 21, 95, 79,
+ 10, 65,103,223,158,151,253,212, 7,238,249,202,239,191,165,157,118,140,181,248, 98,128, 59,117, 28,183,116, 20, 95,173,144,190,
+229, 94,178, 61,191,124, 86, 66, 63,195,106, 93,184,149,228, 13, 63, 76,242, 53, 63, 6,222,131,176,129,183, 5, 84,195,154,215,
+190,244,186,205,239,253,177, 93,251,128,155,185,250,235,238,167, 39,163, 75, 26, 96,222,251,221,192,227,209,235, 59,151,183,191,
+ 35,126,254,177,184,244,234,108,152, 94,231, 58, 31,191,247, 48,103,198,254,215,151,249, 96,140, 15,159,147,124,189,247, 15, 17,
+226,120, 59,206, 83,175,135, 35,169, 62, 87,237, 61, 91, 91, 31,143, 36,209, 72,197, 87,134, 96,166, 9,112, 71,244, 92, 47, 21,
+103, 62,175, 80,214,199,206, 98,128, 49,229,137, 62,236,247,237,218, 80, 88, 99, 42,139,252,252,125,125,223,174, 7,207,163, 84,
+ 60, 20,255,158,175,157,227,126,249,248, 21,184, 31,231, 50, 14, 55,106, 68,238,108,186,110,131,171,229,169, 19,189,225, 58,190,
+152, 34, 83,117,203,230,252, 91, 31,124,219, 43,246,190,229,101,155, 95, 90,142, 28,214,214, 80,142,192,212, 32, 60, 34,129,236,
+ 59,126, 22,245,154,111,158, 20,182, 50, 42,249,224, 39,158,224,131,159,124,130, 83,253, 17,137, 18,188,242,250, 5,190,237,142,
+219,249,170,219,174, 11, 5,223,244, 6, 68, 58, 67,253,145, 95,128, 84,135, 42, 72,129,233,151,124,223, 55,190,230,245,191,253,
+161,207,254,240, 7,255,246,137,119,115,149,150,187, 69, 18,219,179,206, 35,188,216, 50,246,196,201,100,253,224, 61, 56,101, 36,
+ 76,123,179, 59, 88,203,180, 63,116, 1, 99,227,161,169, 9,238,192,212,164,176,115, 93,189,239,246,222, 31, 62,199, 70, 49, 15,
+156, 69, 42,156, 46,107,207,148,103,243,208,243,212,222,245, 89,196, 75, 83,245,219,113, 21,199,202,238, 11, 76,186,151,211,175,
+174,120,248,229, 28,100,184, 99, 61,169, 79,140,231,144,129, 61, 45,249,222,205,153,177,221,203, 49,132,167,159,215,217,250,211,
+164,255,249,125,187,150, 46,176,140,235,226,250,122,200, 30,223,123, 1,245,237,240,186,241,188, 35, 62,239, 29,211,109,240,251,
+118,221,113,177,210,190,223,183,235,146,250, 77,148,224,215,147,122,147, 5,223,224,170,145,250, 25,253, 47,146,232,236, 91, 95,
+179,240, 19,251,239,122,249,189, 55,118, 91,173,209,192,226,109, 9,117, 25,175,164, 16,102, 64,242,166, 31, 57,131,208,255,219,
+231,143,240,206,223,249, 48,135, 79,174,146,103, 9,137,150, 72, 15,159,124,250, 20,239,251,171,207,242,173,119,220,198,255,185,
+231,205,180,179, 4,185,237, 21,232,215,220,133,249,248,111,194,204, 54,192,135, 32,186, 23,252,244,219,223,248, 35,255,245, 99,
+ 79,188,207,123, 62, 77, 8, 17, 92,105, 66, 95,239,189,238,191,200, 50,198,155, 78, 76, 79, 38,247,156, 37,182,187, 55,122,183,
+ 15,197,201,100,124,237, 59,206, 83,252,125, 83, 19,220, 61,235, 73, 33, 94,251,161,169, 9,244, 62,239,253, 25, 82,119,148,220,
+239, 94, 55,249,220,181, 46,142, 62, 93,183,221,207, 83,123,239,155, 42,239,254,152,196,184,254, 89, 93,109, 15,247, 74, 17,239,
+ 67,103,243, 92, 99, 56,226, 0, 33, 28,113,248, 42,181, 97,233, 44, 75,215,206,144,124,175, 16,169,223,119, 70,127, 58,147, 20,
+247, 70,210,155,190, 15, 15,250,125,187, 14,158,135, 60,207,236,235,235, 36,233,104,184,156,217,215,247,237, 58,155,124,190, 55,
+ 42, 21,135,206, 67,200,119,179,150,181, 62,238,151,119, 62,135,243,243, 82,163, 68, 53,184, 88, 92,110,214,248,152,208, 95,242,
+142,111,184,225, 87,127,255, 7, 94,249,174,235,178,180, 53, 44,107,188, 25,130, 41, 67, 28, 93, 9,192, 34, 54,223,132,254,234,
+183, 79,126,252,249,163, 75,188,253, 87, 63,200,167,142,172,224,211,156, 90,165,144,100,164,173,156, 78,183, 67,222,233,240,254,
+191,254, 2,239,121,255, 71, 39,191, 81,183,255, 83, 68,251, 58,176,195,112,117, 9,166,170,121,253,109, 91,183,127,245, 43,183,
+191,133,201, 34,184,139, 34,220,251,206,243,122, 24, 56,181,110, 66,188,231, 18, 18,173, 30, 92,231, 93,222,113,174, 50,226,251,
+211,217,246, 59, 35,233,158, 15, 7,133, 16,103,221, 20, 39, 18,195,253,235,188,157,221,231,152, 44,199,132,121,231,217, 8,101,
+170,110,207,103,123, 15,199,242, 14,156,165,172, 43,238,229,122,239,239,187, 28,131,238, 2, 94,231,217, 48,142, 63, 63, 30,175,
+125,165,112,247, 5,218, 48,253,222,252, 21,204,186, 14,253,233, 44, 68, 29,227,232,119,158,167, 47,158,189,175,223,251,200, 93,
+103,139, 49,199,107,156,183,175,139,123, 31,217, 43,238,125,228,254,243, 17,122,252,222,126,224,174,105,181, 38, 26, 13, 23,131,
+157,103,105,239, 70,113,232, 60, 74, 81,131, 6, 87,156,212, 5, 32, 22, 58,122,247,239,253,143, 47,255,253,247,126,203,173,255,
+ 3, 53,148,174, 14,203,209,132,133, 68,130, 22,160, 5,158, 10,245,178,175, 67,116, 55, 79, 10,184,255,119, 62,202,231,191,180,
+204,178, 17, 28,233, 27,158, 94,174,248,194,201, 17,135, 79,142, 88, 42, 44, 94,107,102,103,187,252,193,223,124,158,131,159,252,
+ 98,100,117,141,218,241,117,248,149, 19,160, 36, 8,143, 19,144,182, 82,190,103,215,203,119, 19,246,148,191,216,216,250, 3,231,
+121,237, 94, 55,233,221,121,177, 91,197, 78,237, 45, 62,105,250,133,200, 39,202,207,251, 47, 98, 80,223,115,129,242, 14,174,155,
+ 36,118, 76,213,111,253, 86,169,123,207, 87,191,179,212,237,185,110,239,222,231,106,227,159,216,150, 7,214,121,233, 87,130,212,
+199, 27,222,220, 63,245, 58,192,151,231,106, 60,112,190, 60,136, 13,183, 35,196,132,119,172,243,202,215,147,216,210,186,247,175,
+212,178,205,189,231, 75,242,138,228, 58,125, 79,239,190,192,178,186,123, 46, 64,198,231,236,235, 23, 61,201,125,121, 89,205, 82,
+214, 6, 47, 58, 82, 31,239, 40,211,125,243,109, 51,255,234,163,255,243,171,223,247, 61,175, 92,120,221,112,104,177, 88,112,117,
+ 40, 85, 9,132, 18, 8, 45, 16, 74, 34,180, 64, 94,255,154, 73, 33, 95, 60,118,154, 63,254,196, 83,208,110,133,101,110, 82,130,
+ 82, 88, 36,171,165,229,139, 39,134, 28, 62, 62,164,246, 2,167, 20, 31,250,212,147,107, 21,216,124, 59,126,180, 2,152, 88, 27,
+ 15,198,241,138, 27, 23,110, 3,174,227,234, 37,204,237,137, 94,228,197, 74, 98,211, 4,181,116, 17,164,112,112,131,147,201,161,
+ 13,202,180,231,178,252,119,175, 35,216,141,212,239,192,243,212,222,195,207,213,254,251, 49,132, 48,189, 87,251, 18,151, 39, 73,
+ 47, 69,242,190, 77, 8,113, 71, 84, 86,246, 78,189,238, 18, 66, 44,196,239, 44,157, 65,114,193,240,186, 82, 94,250,161,243,120,
+169, 7, 46,211, 51, 61,151,199,123,177,253,105,207, 57,251,250,198,226,218, 87,210,203, 61,176, 1,117,165, 65,131, 23, 4, 46,
+ 54,166, 62,150,219,175,255,161,127,178,229,167,126,237, 91,111,249,209,196, 41,134,149, 3,229,193, 59,132, 7,225, 4, 94,137,
+ 32,189,139,240, 19,161, 83,228,252,205,147,130,158, 56,177,194,104, 88, 67, 47, 91,179, 19,198,233,109, 82,130,247,156,238,215,
+212,149,225,198, 89,205,106, 81,175, 85, 98,102, 27,160,160, 28, 34, 90, 51,120, 60, 24,195, 75,182,205,108,205, 82,181,189,172,
+236,103, 46,178, 93,231,219,239,122, 58,105,102, 62,122,109,123, 46,114,155,216,221,231,152,108,184,144,119, 61,189, 73,207,121,
+214, 70,111, 84,210, 59,124,158, 54, 94, 84, 89,235,235,246, 28,182,247, 57, 89, 27, 30, 13,183,245, 49,239,251, 47,103,109,122,
+252,237, 70, 54,187,217,235,189, 63,200,153,251,211, 63,192, 37,238,244, 54,181, 5,233, 5, 13,178,184,102,125, 58,150,187,135,
+203, 91,179,190,177,254,244,229,137, 97,243,151, 83, 30, 23,177,252,116, 74,197,216,177,129,254,220,100,161, 55,120,209,144,186,
+ 0,152,201,213, 27,127,238,155,111,220,119,207,206, 45,111,170, 42, 40,146,176,229,171,183, 30, 81, 59,210, 84,178,108,173,107,
+ 33, 37, 90, 77, 86,176, 11, 0,111, 38,133,109,157,109,163,210, 4,235,136,251,197,251, 72,234,241,175, 23,160, 36,131, 97,205,
+147, 69, 65,246,186,169,170,122, 11,190, 6, 83,128,236, 33,188,195, 59,199, 66, 39,105,207,182,211,249,227,213,232,162, 20,136,
+141, 28, 25, 26, 99,155,227, 37, 84,227, 37, 53,119,108,240, 18,211, 19,193,142, 24,167,191, 20,204,159,199, 3,188, 28, 92, 18,
+ 9,199,239,238,124,142,219,123,213, 73, 61, 18,250,195,235,218,113,207,115,121, 66,159, 16,226,144,247,254,126,214,164,255, 29,
+222,251, 61,103,203, 35,216,160,194, 52,191, 65,149, 5,130, 20,126, 69,214,172, 95, 70,127,218,125,142,235, 94,145,176,203,212,
+ 58,247,102, 89,100,131,127,116,164, 62,150,178,147, 87,108,203,191,247,119,190,231, 37,123,191,106,107,123,235,168,114,144,233,
+ 64,232,181, 67,215,142,180,165,248,215, 31,122,230,147,183,204,165,115, 63,186,115,203, 45,133, 7, 49,246,214,235, 26,119,242,
+ 11,200,155,222, 0,192, 43,111,216,196,215,188,116, 43,127,249,153, 19,160,117, 32,113, 25, 9,125,188, 47,156, 11,191, 45, 78,
+ 13,120,233,246,181,113,231, 87,158,133,114, 5, 95,206, 33,226,137, 49,222,141,141, 2, 36, 87, 65,126,143,222, 19, 83,147,236,
+ 78,239,253,221, 27,156,232,231,215,121,197, 59, 94,192,125, 98,233, 10,124,247, 90,106,239, 70, 8,253,254,231,233,200,221,233,
+ 93,236,184,140,251,184,126,109,250,133,188,216,233,141,104,118,248,125,187,118, 95,198,161, 34, 75, 87,233,187,151, 67,232, 27,
+ 61, 45,237, 90, 29,151, 13, 26, 82, 63, 47,161,123, 96,235, 93, 95,185,240,206, 95,250,166, 27,255,215,237,121,146, 14,157, 64,
+180,131, 11,238, 43, 71,238, 60, 69, 10,255,203, 31, 61,249, 71,251, 63,122,252,247,127,227,174, 91,239, 21, 62, 42,239, 42, 30,
+240,162, 37,254,216,167, 39, 5, 75, 41,248,201,239,184,131,111,122,244,255,131,162,134, 44,141,167,187, 69, 82,119,128,119,208,
+ 31,242,250, 87,221,192,247,127,253,171, 39,191,117,199, 63,131,247, 53,194, 86,225,139,222, 35,133,231, 84,191, 24,173, 12,171,
+213,171,232, 61,237,141,187,155, 77, 79,150, 23, 59,217,143,215,197,254, 99, 25,216,215, 90,123,215, 19,250,254,141, 40, 57, 87,
+169,191, 45,121,239, 55,226,189,158,143,192,118,172, 83, 98,118,250,125,187, 46, 86, 57,217,195,139,100,141,244, 89, 78, 75, 91,
+138, 99,248, 16, 97,139,217, 67,103,249,205,125,235,140,171, 75, 86, 42, 46,210, 64,186, 84, 5,173, 65, 67,234,231, 36,116,161,
+149,120,217,187,255,249,245,191,244,206,255,110,251, 91,140,129,161,150,136, 76,226,157,199,143, 44, 29, 45,120,162, 52,197, 15,
+254,246, 23,127,253,145,199, 86,126, 7,112, 79, 45,215,199, 16,254, 21,126,226,169, 3,121, 27,251,196, 71,208, 75, 79, 32,230,
+111, 5,224,173,175,191,149,253, 63,246, 79,121,199,111,124,152,225,233, 18,242, 44,100,180,123, 15, 85, 13,195, 17, 95,245,138,
+109,188,239,157,223, 76, 39, 79, 66,173,234, 17,246,209,247, 35,210, 44,100,216,123,135,119, 22,164,228,241,163,167, 79, 20,149,
+ 61,193,213,221, 89,110,250, 68,171, 75, 73,192,121,222, 72,226,121,194, 53,211,222,152,101,190,158,208,239,121,158,171,117,185,
+134,205,250,132,179, 75, 81, 78,246,248,125,187,238,127,145,108, 83,122,247, 58, 66,191,243, 66, 75,219,174,240,243,219,216, 78,
+140,205,161, 58, 13, 46, 17,242, 2,164,190,245,129,111,186,225, 87,239,125,211,246,183, 20, 6,234,182, 70,180, 20,222, 1, 67,
+ 75, 39, 87,252,217,179,131, 99,187,126,237,179,239,122,228,177,149,255, 11,120, 2,120,230,115, 39,139,207, 33, 5,216,152,244,
+164,100,144,216, 77,159,250, 35,239, 61,227, 34, 63,250,141,175,230,175,126,246,187,121,199,183,124, 5, 47, 89,200,200,125, 77,
+ 87, 90,222,248,210,205,252,202,143,127, 3,127,241,238, 61,188,100,219,236,228,251,230,111,127, 29,127,250, 9, 72, 50,124, 76,
+194,195, 88,144,130,207,125,105,233, 73,194, 57,235,238, 5,118,159, 95,232,235, 77, 47,181,126,187,175,209,246,158,139,208,239,
+126,129, 17,250,149, 34,177,203,197, 60,151,190,148,235, 82,251,211,213, 34,218,233,118,236,221, 32,161, 95,206,146,184, 67,151,
+ 88,214,206,243,121,252, 13, 26, 92,138,167,206, 77,243,233,174, 31,252,138,133,111,172, 10, 7,221, 4,145, 10,124,229, 81,133,
+ 33,235, 40,126,235,147,139,159,253, 23,239,123,226,231, 86, 70,246,195,192, 34,225,160,151,252, 47, 30, 95,253,155, 35,171,245,
+ 15,109,110, 39,218,122,191,182, 8,174,213,198, 61,245, 23,152,143,254, 34,250, 77,239,152, 92,231,181,183,108,230,189, 63,244,
+117,252,236,247, 27,142,158, 26,144, 38,154,235, 23, 58, 95, 86, 31,251,232, 31, 98,254,254,183, 32,111,135, 1, 35, 21,222, 58,
+132,117,212, 69,201,251, 63,252,248, 71,129,213,171, 76,234,151, 50,192,207,144, 80,189,247,243,207,213, 58,235, 13,226,240, 84,
+253, 54,148,221,123,158, 61,233,175,133,246, 94, 75,132,126,201, 68, 23, 15,111,153,238,175,247, 95,100, 25,247, 77, 93,255,110,
+ 46,109,211,157,157, 27,172,235,206, 43,172, 80,108,164, 62,135, 46,225, 25, 92, 10, 14, 76, 25, 19, 27, 93, 77,112,230,178,208,
+ 75,207,105,104,208,144,250,218,103,183, 46,100, 47,157,207, 20,163,154,224,117, 15, 45,169,243,184, 76,240,206, 15, 62,125,240,
+231, 31, 62,242, 94,224, 31,226, 0, 28, 68, 50, 85,207,158,174,254,230,253,159, 89,250,196,191,248,154,173,119,152,194, 34, 82,
+ 25,101,120, 9,237, 25,236,223,255, 39,252,232, 36,250,141,239, 64,180,215, 54,163,201, 19,205,173, 83, 94,249, 4,245, 8,251,
+119,191,137,249,196,127, 64,100, 41, 72, 5,206, 66,146, 65,109, 72, 36,124,248,115, 71,142,254,229,163,199, 14, 18,246,126,191,
+ 42,164,190,238,136,207,139,153, 20, 14,174, 35,141,171,122,180,229, 37,224,224,212,164, 51,239,189,223,189,129, 29,243,118, 95,
+195,237,189, 38, 8,253, 44,187,234, 93,108,110,194,122, 98,184,156,120,252, 78,191,111,215,142, 75, 56,214,116,126,131,113,228,
+221,103, 33,194,231,255, 25,132,109,108,119, 92,193,241,181,209,251,184,231,133,118, 47, 26, 92, 27, 56,159,252,174, 30, 61, 54,
+122,236, 75,149, 53,237,182,162, 93, 91,218, 10,250,202,249,239,123,232,240,239,254,252,195, 71,126, 10,248, 36,112, 50, 18,122,
+ 60, 62,141, 26, 56,246, 75,127,126,236,192,114,109,209,181,133,218,133,172,185,184, 41, 13,157, 25,220,227,127, 76,245,254,183,
+ 99,255,225,253,248,149,103,206, 62,160, 6, 39,112,143, 31,164,250,253, 31,194,124,252,223, 67,158,131,210, 97,179, 25, 33, 16,
+ 50, 65, 20, 53, 40,207,207,252,222,199,127, 31,248, 66,188,254, 21, 39,245,169,117,203, 23, 61,241,196,101, 72,211,131,248,190,
+ 11,120,186,207, 53,214,239,100,118,223, 6,238,197,125,215,112,123,207, 69,232,135, 56,255,158, 5, 23, 52,250,214,109, 49,188,
+123,221, 61,187,216,254,246,192, 58,207,117,195,147,251,212,146,173,137,177,114,137,253,130,117,198,217,165,224,190, 13,212,117,
+250, 59, 7, 47,229, 76,244, 13, 98,105,163, 30,120,172,215, 3, 87, 97,124, 61,112,129,235,174,223,150,184, 33,245, 6, 87,132,
+212, 89,236,155,191,253,158,223,253,226,222,135, 30, 59,253,216,135,142, 14,143,253,202,161, 19,135,190,246,223,125,246,167, 15,
+ 28, 58,245,115,132,163, 47, 23,129, 17,103, 30,160, 98,129,209, 23, 78, 20,127,252,238, 63, 61,250,112,146, 41,124,223,224,107,
+ 7,196,229,109, 66, 64,187, 7,102,153,250, 35,239,161,122,255,247, 82,253,191,247, 96, 62,178, 15,243,223,126, 25,243,151,191,
+ 64,245,129,127, 73,245,190,183, 81, 31,188, 31,223,127, 2, 58,179, 97, 83,154,113, 10,156,147,248, 82,144,228,146,255,120,240,
+115,143,254,215,191,123,230,119, 9,210,123,125,165,189,243,232, 49,125,140, 51,165,187,165,139,156, 40,167,189,191,112,234,211,
+212,164,191, 17,162,184, 90,157, 32, 74,227,211, 94,220,238,115,109, 77, 58,181,228,107,254, 90,109,239,121, 8,253,206,203, 12,
+ 19,140,143,234, 28,191,166,251,203, 78,239,253,195, 27,217, 25,110,234, 24,221,233,123,124,177, 91,227,238,185, 92,207,247, 10,
+110, 27,187,251, 92,199,160,158, 37, 27,157,171,172,234, 76,183,231,238,115, 29,169, 58, 85,175,203, 54, 70,227,125,156,110,211,
+158,115, 29, 51, 27,149,129,245, 6, 78, 35,189, 55,216, 48,206, 39,191,215,192,169,191, 58,188,250,127,255,213,225,213,135,129,
+153, 72,226, 71,129,101,160, 31,191,179,126, 91,177,241,121,235, 71,127,225, 67, 71,222,251,250,155,218, 47,121,219,235, 54,221,
+ 62, 90,169, 16,189, 20, 50, 25,118,154,195, 67,146, 32,146, 36,100,176, 47,126, 18,115,252,208,164, 56, 33, 53,232, 20, 58,221,
+117,189, 30,168, 44,222,181,200,179,148, 67,159, 63,182,244, 47,255,253, 95,239,139, 94,250,122, 3, 99,163, 19,252,165, 28,213,
+122,207,197, 76,178,113,183,180,123, 88, 59,185,108, 76,116, 7,163, 60,183,126,175,234,177,244, 57,158, 84,238,191,202,125, 97,
+ 63,103, 30,133,121,119, 36,225,253, 83,117,219,205, 90,246,240,225,104,216,236,188,214,218, 27,219,117, 54,175,243,161,139,232,
+ 10, 7, 46, 97,237,250,238,104, 48,141,143,250, 60,188,238, 62,140,143,181, 93, 79,158,135, 46, 97, 5,193,116,251, 14, 95, 70,
+134,247,116, 60,120,135,223,183,107,207, 89, 78,119,219,200,239,239,142,132,117,174,254, 52,233,135, 87,153,196, 14, 76,221,155,
+121,224, 99,126,223,174,253,172, 29, 7, 60,222, 92,106,186, 94, 7,184,204, 61,223,197,189,143,236,141, 57, 14,227,254,253, 64,
+188, 31, 99, 85,107,126,234,126, 76, 59, 14, 47,134,100,205, 6, 47, 16, 82,183,145,184, 77, 36,113, 25,223, 43,227,203,114,238,
+115,203, 13,208,119,222,127,234,127,250,189, 47,254,204,166,142,126,247, 63,187,125,246,134, 98,185,130,153, 4,145,171,181,245,
+235,129,193, 33,205,207,191, 14,205, 3,206, 67,105,113, 43, 21,173,235,182,241,153, 35, 75,253,187,246,254,249,222,229, 65,253,
+225, 41, 35,227,106,227, 80, 36,244,139,158, 36,133, 16,251,167, 54,176,153,159,158,232,159,239,142, 16,215, 68,223, 21,189,147,
+ 29,235, 60,207,245, 88, 34,156, 94,245,192,181,218,222,179,224, 98, 61,178,203, 33,158, 29,108, 92,202,222,127,177, 6, 78,244,
+ 62,119, 94,142,151, 62, 69, 70,103,219, 54,246,192, 69,142,151,131,172, 29, 93,252,192, 5,238,233, 85, 53, 94,227,118,180,211,
+198,230,216, 0,186,251, 60,138,211,229,100,255, 79,227,206,117,222,255,249,198,194,120,185,221, 97, 26, 52,184, 8,200, 11,208,
+168, 33,196,203,151, 8,199,143,158, 6,134,241,125,127,129,223,150,192,242,202,200, 62,242, 29,251, 31,251, 63,126,235,227,139,
+159,205, 83, 73,178, 82,227,150,107, 40,220,164, 20,129, 64,136,179,188,226,127, 88,160,114,248, 21,131, 88, 42,105,205,207,241,
+200,225,229,163,111,121,215,193,119, 29, 62,214,255, 47,177,110, 67,174, 94,214,251,193, 56,185,222, 21, 15,226,184,156,253,191,
+247, 19,182,151,221,207,198, 50,124, 15,196,137,229,170,239,104, 22, 15,133,185,227, 2,215, 58, 72, 56,246,244,208,181,222,222,
+231, 24,227,120,253, 70,251,206, 1, 66, 56,224,158, 75, 8, 9,236, 57,139, 97,112,185,222,237,164,236,139, 93, 67, 29, 15,116,
+185,147,115, 39,250, 45, 1,247,139,123, 31,185,243,185, 88, 11, 63,117,164,234,225, 11,246,243,141, 29, 70,179,209,235, 46,137,
+123, 31,185,131, 47, 63,176,231,108,134,220,109, 87,121,253,124,131, 23, 41,196, 85, 46, 95, 1,237,104,233,190,250, 7,223,184,
+245, 71,254,205, 91,111,248,182, 27,102, 83,109, 74,143,209, 2,114,133,208, 50,120,238,114,170, 58,222,131, 5,111, 28, 20, 22,
+ 85, 59,146, 68,176, 98,225, 61, 31, 62,245,103,255,246,143, 30,127,176,182,238,111, 89, 91, 74,103,174,197, 7, 16,165,224,245,
+ 94,226, 97,194,233,102, 7,159,199,122,141,229,240,233,141, 58, 14,110,240, 52,184,107,174,189,207,211,115,223,193,151,231, 38,
+ 28, 34,200,237,215,236, 70, 47,113,199,186,177, 7,122,255,116,214,125, 84, 17,118,175,123,246, 7,159,175,141,109,162, 4,190,
+115, 93,125, 14, 61, 23, 30,242, 57,174,125,240, 69,178,201, 79,131, 23, 41,169,143,137, 61, 7,102,129,237, 55, 47,100,223,112,
+247,155,183,126,251, 15,236,220,252,213, 55,206, 36, 9, 94,224,189,199, 9,129,155,170,141,244, 32,189, 15, 91,205, 10, 88, 44,
+172,251,207,159, 60,245,169, 7, 63,122,252,143,254,254,233,193, 7,128, 47, 69,229, 96,116,173, 18,122,131, 6, 47, 74,131,229,
+ 60,164,222,160, 65,131,171, 11,253, 28, 92,195,178, 38,217, 23, 79,157, 42,223,247,147,127,248,244, 71,254,237,135,142,124,229,
+ 87,223,218,253,234,239,126,221,194, 27, 94,119, 67,251,186,249, 76,117, 58, 90,164, 90, 10,105, 28,126,104, 93,181, 92,185,225,
+231,143,143, 78, 28,248,196,169,191,251,203,195,253,191,121,246,116,117, 8,120, 6, 88, 33,196,208,175,218,154,244, 6, 13, 26,
+ 52,104,208,160, 33,245,115, 24,239, 64, 53, 38,118,160,127,170,111,158,253,147, 79,159,254,240,159,124,250,244, 2,176,173,157,
+201, 77,185,150,189, 68,137,212, 56,111, 10,227, 87,135,165, 93,244,158,227, 4,137,125, 37, 26, 7, 3, 46,156,168,215,160, 65,
+131, 6, 13, 26, 52,164,126,149,137,221, 18,228,242, 50,122,218,167,129, 99,192,227,195,210,233, 97,233,212,212,247, 29, 33,155,
+189,142, 6, 65, 25,141,130,134,204, 27, 52,104,208,160, 65,131,231,153,212,215,147,251,120,121,156, 96,237, 12,116,185,142,212,
+253,212,223,134,200, 27, 52,104,208,160, 65,131, 23, 24,169,175, 39,248, 49,113,195,153,137,123, 13,137, 55,104,208,160, 65,131,
+ 6,215, 16,169,159,141,228, 27, 52,104,112,109,227, 0,107,155,243, 52,107,173, 27, 52,104,208,160, 65,131, 6, 13, 26, 52,104,
+208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6,
+ 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 94,124, 16,223,251,117,175,243,166,191, 74,119,110,
+150,185,133,121,146, 44, 35, 77, 83,250,171,167, 57,125,114, 57,156,128,106,106, 90,169,230, 85,175,126, 25, 69, 97, 24,150, 35,
+110,184,233, 6,172, 51,124,250, 83,143,209,106,229,204,204,244, 40, 71, 35,182,109,219,202,204, 92, 11,179,184,140, 82, 18,169,
+ 19,150,158, 57,194,233,197, 37, 86,170,154,194, 91, 90,105, 14,194,147,181, 59,164, 89,142,183,150,178,191,202,112,233, 4,175,
+126,249,237,188,246,245,175,225,115,143, 61, 70,127,185,196,107, 65,214,238, 50, 51, 55,207,169,147, 39, 73,211, 4, 33, 53, 43,
+253,146,225,168, 64, 56,203,246,249, 46,155,102, 51,158,126,250, 36,127,249,232,103,153,155,233, 34, 60,120, 45,217,241,170,151,
+211,246, 32, 60,216,225,128,147,199, 79, 50,119,195,117,232, 86,142,176,142, 98, 56,100,241,228, 18, 91, 59, 25,249,168,207,202,
+137, 37, 78,215,150,190,117, 88,173, 24, 33, 24, 26, 11, 66, 80,149, 6,161, 60,183,110,218,202,188,146,100,206,210,109,207,146,
+221, 48, 79,237, 61,127,245,241, 71,209,194,211, 94, 94, 69, 46,151,168, 77,179,116,175,219, 6,198,144, 88,199,104, 48,160,191,
+ 60, 36,105,167,228,221, 22,179, 11, 61,182,110,221, 68,213, 95,229,115, 79, 30,230,248,192,209, 91,152, 99,219,245,219,152,153,
+155,103, 88,244, 57,114,116,137,214,112,133,217, 78,139,124,118,129,103,250, 35, 4, 48, 63,219,230,228,241,147, 84,195, 17, 69,
+ 85,179,108, 44,105,171,195, 13,155,230,216,218,206,232, 42, 15,163, 17,162,170, 65, 9,172,169, 49,198,209,175, 12,171,166,102,
+ 88,213,220, 52,215, 65,229, 57, 54,209, 12,156,229,139, 79,159,100,101,165, 68, 41,129, 21,146, 44,209,244,186, 29, 78,245, 87,
+ 41, 43,199,214,182,228,214,110,206,233,213, 17,171, 85,133, 19,208,202, 83,110,156,153,165,141,226,200,112,196,103,142, 45,226,
+ 80,108,206, 53,121,166,145, 74, 65,170, 17,157, 14,165, 79, 89, 58,125,138,165,229, 62,165,181, 56,239,145, 78,160,149,100,100,
+ 13, 42,145,180,179,140, 20,129,198,163,240,164,137, 70, 75,137,115, 14,149,104,242, 44,163,221, 74,201, 19, 9, 2,172, 19, 8,
+175,152,219,210, 98,243,214, 77,116,187, 57,167, 79,247,249,135,207, 62, 69,127, 48,100,199,173,215,115,235, 77,215, 33, 19, 5,
+120,180, 16, 8, 33,169,234,138,162, 95,132,227,125, 5,232, 92,211, 91,152, 37,239,180,144, 94, 32,132, 64, 72,137, 80, 18, 41,
+ 36, 2, 1, 66, 32,180, 68, 10, 69, 85, 84, 88, 99, 64, 72,140,181, 96, 60,197, 96,128,148, 96,107,199, 39,254,230, 16,171,139,
+ 35, 22, 54,207,178,101,203, 60,105,162,104,205,180,201,218, 41,189, 94,206,252,194, 2,115,243,219, 57,117,228, 8,253,163,207,
+224,218,115,108,222,124, 19, 71,159,252, 2,253,211,139,204,222,122, 19, 35, 83, 99,150, 87, 88, 58,252, 20, 89,103, 6,151, 38,
+ 56, 44, 46,205, 80, 73,130, 43, 28,197,114,159,178, 44, 41,107, 11,222,210,109,181,168,133,103,197,212,116,178,156,249, 78,135,
+ 76, 41,122,179,109, 28,158,194, 89, 84, 59,167, 59, 63,199,204,182, 57, 58,173, 28,101, 61, 30,144, 90, 33,132,192,185,176, 19,
+179, 0,132, 16, 88,231, 16, 2, 60, 14,239,194,126, 81,222, 58,156,247, 8, 17,246,139, 18, 2,240, 22,231, 60, 8,144, 94,224,
+140,193, 88,131,181,177, 60, 33, 81, 82,132, 45, 37,157, 5,239,192,135,107,120,239,113,238,204,179,153,188,119,241,229, 39,159,
+ 43, 41, 67,159,138,239, 25, 99,112,214, 78,213, 99,237,239,248,119,147,178,189, 7, 31,234,225,177,120, 15,136,184,227,149, 23,
+120,103,241,227,223,226,145, 50,252,245,206,199,251,178, 86, 23, 33, 68, 60, 30,218,175,213,211,121,140,119, 72, 49,238, 63, 2,
+ 41, 4,214, 58,140, 13, 7, 73, 74, 41,113,214, 82,151,134,149,229, 1,194, 58,180, 84, 12, 7, 37, 10,104,101, 9, 82,101,212,
+ 3,131,178,134,153, 86,135,180,149, 48,234,175, 66,191, 64,117, 58,148, 85,129, 82,154, 36,105, 83,121,207,169,122,192,178, 31,
+226,171, 26,239, 44,173,118, 11,239, 44,189,249, 46,174,246, 32,161,211,203,240,174,198, 57,143,243, 80,140, 12,197,176, 64,106,
+133,197, 83, 87,158,227,167,134,156, 60, 61,162,172, 44,131,194, 48, 50,142,109, 89,155, 77, 51, 93,102, 23,122, 8, 37,192, 58,
+234,186,166,246, 53, 2, 75,101, 61,139,131,154, 39,142, 45,210,175, 12, 74,105, 64, 80, 20, 37,206, 3, 72, 16, 2, 45, 61,219,
+186, 29,242, 44, 67,107,133,180,150,133, 94,155,185,217, 14,139, 75,171, 60,249,204, 49,188,140,125,206,131,119,142, 86,158,179,
+121,243, 2, 58,145, 8, 60,121,222,230,233, 99,139,100,221,140, 60, 73,241,214, 49, 44, 75,172,181,220,122,219, 45,140, 70, 21,
+167, 78,173, 80,123,135,247,130, 44,207, 25, 21, 5,185,134, 68, 41, 60, 26,167, 51, 28,158,118, 42, 88,152, 93,224,216,169, 83,
+124,233,216, 73,138,210,160, 50,133,183, 22,172, 37, 77, 18,188,115, 12, 71, 37,105,150, 48, 36, 52, 20,175, 0, 0, 32, 0, 73,
+ 68, 65, 84,211,235,210,206,114,250, 43, 43, 20, 69, 65, 34, 36, 72, 65, 85, 91,172,115, 36, 90,113,221,246, 45,156, 90, 58, 78,
+ 53,180, 92,119,221, 22, 84, 28, 79,139,167,150,217,118,221,102, 94,254,138,151,226,156, 99,121,101, 25,132,167,149,229, 88,103,
+ 57,117,226, 4,163,193, 0, 41, 21,121,171,195, 96, 84,112,252,196, 18, 89,174,153,153,233,178,121,203, 60,155,103,122,156, 60,
+126,156,147,139, 43,120, 47,184,249,182,109,220,254,242, 27,200,116, 74, 81, 12, 88, 25,140, 24,149,142,178,116,200,186, 40,144,
+ 90,147, 38, 9, 82, 42, 18,157,146,104, 77, 93,213, 56,231,144, 82, 81, 27, 71,187,149, 35,165,164, 54, 53,121,158,161,181,100,
+ 84,150, 20,163, 17, 74,105,164,148,120,225, 72,114, 13,198,226,141, 5, 37,177,117, 77, 85, 91,156, 23, 8,231, 72,128,196,123,
+148,243,104, 33,145,113, 79, 57,103, 29, 82, 10,102,123,109,188,173,232,175,174, 34,180,196,216, 10,157, 42,138, 97,129,179, 30,
+143,167, 54,150,202, 90, 16, 30, 37, 32,209, 26,111, 61, 95, 58,126, 2, 37, 53, 90,106,202,202, 48, 63,191,128,118,113,226,112,
+146,209,176, 32,107,229,232, 86, 27,143,199, 26,203,242,210, 50,157, 68, 51, 99, 42, 76,127,149, 85,111, 49, 78, 96,128,210, 91,
+138,218, 0,130,186, 54, 56,227, 89,104,117,232,117, 91, 72,231, 81, 82,147,116, 91,100,121,139, 47, 62,115,132,178,170,232,162,
+144,181,165,206, 32,105,181,195,196, 37,194,150,121, 35, 83,129,146,200, 68,147,104, 69,183,221, 34, 77, 52, 43,195, 1,101,191,
+ 2, 15,121,183,131,212, 9,214, 26, 70,163, 10, 95, 22,100, 90,145,100, 41,125, 35,233,247, 71,180,103,123, 12, 6, 35,234,114,
+132,113,150,162,182,120,167,152,233,116,153, 85,138, 92, 25,148, 51, 96,106,164, 6,111, 44,198,193,168,170, 25,212,134,190,177,
+108,154,105,147,165, 26,167, 36,131,170,230,248,201,101,250,163, 18, 41,193,163, 16, 2,242, 52,161, 40, 10, 10, 99,233,166,138,
+ 27, 59, 9,253,225,136,126, 85, 99,164, 39,211,138,205,173, 46,109, 4,203,163,146, 47, 44, 46, 99, 17,204, 39, 10,165,100, 36,
+ 69,133, 73, 83, 42,149, 50, 28,174, 50, 24,149,212, 54, 82,134,243, 36, 74, 80, 59,131, 80,138, 44, 73, 73,165, 64, 8,135,199,
+147, 42,133, 84, 30,231, 61, 58,213,164, 89, 66,154,100,100, 73,168,159,247, 2, 33, 96,102,174,197,230,235, 54, 49, 55,223, 97,
+121,117,149,207, 31, 62,198, 96, 80,112,253,117, 91,185,233,166, 77, 36,169, 68,198,201, 91, 41,133,173,106,138,213, 81, 32, 38,
+ 60, 73,146, 48,211,155, 33,111,229, 8, 60, 50, 18,135,148, 42, 76,208, 82, 34,165, 68, 72,144, 8,156,117, 56,231,208, 90, 3,
+158,186, 40, 41, 6, 67, 0,210, 44,229,217,167,158,101,249,248, 42,157, 94,206,236,236, 12, 66, 64,154,167, 36,173,132, 60,149,
+204,204,180,233,206,204,178,186,120,146,254,201,163,168,110,143,238,230,235, 88, 57,121,132,211, 71,159,101,126,251,117, 12,157,
+197,218,130,213,167,143,146,182, 59,160, 53,206, 59, 72, 19,116,146,226,173,160, 88,233, 99,171, 26, 39,194, 1, 9,157, 52, 3,
+ 1,165,181,100,105, 74, 55,111,161,188,160,211,206,241,194, 83, 58,131, 76, 53,173,217, 46,115,155,231,232,117, 59, 72, 17,140,
+ 21, 41,215,118,104,150, 82, 78, 72, 41,242, 94, 32,235, 56,217,186, 41, 66, 23, 66,226,189, 99,237,155,113, 60, 71, 2,180,241,
+ 94, 57,111,215,136,154,177,145, 48,222,109, 74, 76,174, 57, 33, 98,231,176,117, 53, 33,111,107, 45,222,173, 17, 38,145,168,167,
+119,171, 26,183, 97,124,109,177,174, 93,227,115,156,165, 20, 40,169, 16,200,201, 38,212, 34, 78,210,227,122, 4, 67, 46, 24,116,
+161,222,161, 95,140,235, 55,105, 39,145,228,227, 78,215, 74,105,148, 80, 8,169, 16, 94,224,172,141, 6,194, 90, 57, 8,168,108,
+ 48, 42,164, 82,193, 96,244,158,112,103,198,134, 72,168,152, 71,224, 92,104, 19, 66,224,157, 67, 56, 49,233,143,241,233,160, 0,
+225,195,253,247,241,187,196, 18, 60,110, 98,204, 72, 25,198,130, 82, 30, 33, 5, 2,143,150,225,124,108, 33,195, 75, 74,137,148,
+144, 68,187,197,225, 49,214,162,149,140,229,133,235, 78,158, 21, 46,212, 7,144,241, 83,165, 20,227, 26, 8, 60,198, 25,106,235,
+113, 16,250, 14,146,170, 54,184,218,210, 74, 83,178, 44, 9, 23, 11,246, 21, 78, 10, 42,107,168,157, 93,123,124,210,145, 9,129,
+179, 53, 8,143,136,247, 52, 73, 18, 60, 2, 99, 76, 48,188, 67, 47, 64,137,112,223,157, 15, 6,153,179,161,159, 10, 41,169,107,
+139,245, 21,237, 52, 65, 41, 21,142,253, 22,177,143,120, 98,159, 14,125,205, 91, 38,134,157,138, 6,165,137,125, 47,204, 13, 2,
+ 99, 13,131,193,144, 44,111,225,189,153,140, 23,132, 32,107,101, 12, 7, 35,202,170, 38, 73,211,216,143, 68, 52, 82, 21,105,146,
+ 0, 18,103,195,189, 74,211, 4, 37, 84,176,121,189,163,170, 42,106, 87,163, 83,133,210, 18, 47,160, 28, 85,161, 47, 0, 74, 18,
+250,169, 23, 56, 15, 18,107,145, 74,161,147, 36,144,114,166,241,117, 77, 89,153, 80, 39,173, 48,117, 69,150,101, 32, 4,198, 56,
+178, 44, 67, 32,169, 7, 35,164, 55,104,169,112,206,209,202, 58, 36,173, 22,222,122,132,179,225,102, 89,131, 53, 53, 94,132, 9,
+ 81, 75,129,116, 22, 37, 4, 34,118, 12,129,192,151,134, 86,222,102,211,230,205, 44,175, 12, 41, 87, 43,188,135,218, 38,100,105,
+139,178, 28,133,251,237, 60,214, 24,172,247,120,111, 73, 21,180,146,224,185, 31, 61,117,154,153,118, 6,222,161,149,100,166,211,
+ 70,198, 78, 98,170,130,213,193,128,214,204, 44,202, 7, 66,233,247,251,212, 85, 77, 71, 38, 80,148, 84,101, 77,133,103,136, 9,
+167,201, 24,176, 30,172,117, 88,227,200,243,140,109,243,179, 72,235,241, 78,144,164, 57,189,205,179, 60,123,244, 4, 79, 61,123,
+130,185,118, 70,207,123,124, 21, 6,149, 76, 19, 4, 14,225, 61, 85,109,176,206,162,180, 32,149,130, 86,158,145,181, 51,234,186,
+ 98,101,117,192,106, 85,146,119, 90,228,121, 11, 41, 21, 85, 93, 83,141, 74,242,106, 8, 90,225,178,148,149,178,143,110,231,228,
+169,100, 56, 24,226,140, 13, 68,141, 68,183,115,230, 82, 77,166, 28, 93, 45,241,197, 8, 41, 60,214, 57,172,119,140,172,101, 24,
+ 61,134,185,118,206,108,150, 97,165,166,116,150,213,126,193,234,234, 48, 60, 55, 37,113,194,145, 37, 26, 39, 4,131,178, 66, 34,
+185,190,173,209,149, 99,165,168,169,241, 72,169,153,239,204,176, 41, 73, 40, 75,195, 23,151,250,244, 71, 37,243, 73,138, 86,129,
+ 8, 85,162, 41,148,198, 38, 25,101, 49,162, 95,148,212, 85,141,136, 30,142,150, 10,188,195, 75, 73,158,104, 50, 41, 81, 94, 32,
+ 60,164, 90,144, 72,129,112,130, 44,145,228,105,130,214,138, 60, 83, 40, 68,244,227,161,221,205,216,122,221, 60,237,118,135,126,
+127,192, 83, 79,159,226,212,210, 50,155, 23, 22,216,113,235, 86,210, 44,197, 1,194,121, 18,169,168,202,138, 97,127,136,181, 97,
+ 10, 85,137, 96,102,174, 75,187,221, 14,147, 43, 18, 47,195, 4,143, 12,131, 86, 8, 17, 39,124, 5, 94, 80,149, 21, 58, 73, 16,
+ 73,206,104, 80, 96,134, 37,194, 25, 18, 45, 89, 29, 20, 60,251,212, 51, 40, 37,233,180, 91,104, 45, 73,210,132,180,219, 38, 73,
+ 20,189,110,139, 78,111, 22,129,100,229,248, 81,146, 36, 97,118,203,245, 36,198,176,248,204, 51,108,186,225, 58,202, 44,193, 72,
+193,232,217,163, 8, 82, 72,114,140, 4,180, 64,232, 4,129,164,236, 23,216,178,196, 11,207,106, 85,211,213,154, 86,162, 24, 58,
+139, 87,138, 78,171, 69,162, 36,173,150, 70,104, 69, 97, 45, 94, 73,178, 94,151,222,150,121, 58,189, 46,137, 84, 36, 82, 33,181,
+154,120,233,193,171,245,193, 9,181,246, 12, 47,215, 71,143, 93,140,137, 53, 78,158, 99,178,155,246,180,199, 4, 37,165, 64,105,
+133,214, 58,148, 63,158, 52, 93, 32,251,200,179, 56,107,227,191, 99, 29,140, 5, 39, 3,241, 73, 25, 72, 66,202, 64,246, 54,120,
+212, 99,130, 87, 74,157, 97, 20,172,121,250,107, 4, 19, 62, 7,149,132,191, 94,128,148, 4, 98,147, 2, 49, 38, 9, 17, 9,212,
+135,207, 38,237,137,215, 29,183, 59,144, 89,184, 23, 14,130,154, 17,141, 2,175, 2,181,249,104, 92, 76, 27, 74,227,251,235, 76,
+ 80,169,148,148, 88, 31,188,231,208, 30, 66, 93,132,192,187, 72,242,128,183, 22,161,166,141,150, 48,177, 73, 69,244,112,199,134,
+192,152,207, 93, 56, 72,195, 59,198,187,112,143,175, 47,165,152, 24, 82, 82,202, 48, 23, 11, 27,201, 80, 32,124,112,184, 52,114,
+ 98, 32, 56,231,145, 82, 33,100, 84,108,198, 50, 7, 2,235, 45, 40, 80,145,100,133, 8, 14, 26,113, 44, 35, 2,181, 91, 31,158,
+175,139,207,207,213, 22,227, 28, 42, 87,164, 89, 18,239,235,216,187,135,218, 90,106,107,226,184, 12,207, 90,167, 58, 24, 83,222,
+ 35, 84,184, 95,202,134,154,152,186, 6, 31, 8, 78, 18, 13, 51, 33,194, 61,116, 2,103,205, 68, 29,242, 66, 82,212,193, 9, 77,
+180, 66, 6,179, 6, 4, 24, 1, 99,187, 72, 8,129,243, 46, 42, 80,138, 36, 77,226,253,112, 88,231, 80, 50, 60, 67, 60, 20, 69,
+ 69,171,213, 70, 72, 25, 12,112, 66, 57, 73,162, 24,141, 74,234,162, 68,107,129, 74,194,181,172,245,144,128, 76, 18,148,212, 19,
+162, 79, 83, 69, 43,211,224, 28,206,122,156,245, 20,117,137, 74, 52, 90, 43,140,116,172,142, 6,152, 50, 24,136, 90, 42,100, 52,
+164,141,247, 72,103, 61, 89,158, 33,181,194, 35, 72, 90, 25,195,170,196,213, 53, 66, 8, 76, 89, 34,157, 37,207, 51,172, 21,224,
+ 29,105,154,226,188, 15,147,155,151,164, 74,131,117,164,105, 66, 42, 45,222,213, 72,173, 81, 74, 99,107, 67, 93,135,137, 92,120,
+ 23, 60, 29, 4, 94, 41,156,144, 88, 33,112,222, 82,148, 3,102,186, 9,221,133, 14,167, 79, 45,146, 70,139, 76, 8,208,194, 82,
+ 87,101,176,178,156,199, 24, 71,226, 29,218, 43,178, 36, 65,101,154,163, 39, 79, 81, 90,143,214,146,218, 89,122, 11, 61,210, 86,
+130,246, 30,229, 28,102, 48, 64,102, 18,221,107,225,165,167, 26, 13,233, 47,173,146,183, 91,180,234, 62,101, 49,160,111, 45,206,
+ 41,172, 3,107, 28,181,115, 88,103, 49,181,195, 58,197,230,110,135,118,162, 73,108, 24, 84,105,187,131,149,130, 47, 28, 61,134,
+196,179, 32, 19,188, 49, 24,239, 73, 68,130,212, 42,116, 80,231, 48,117, 9,206, 35,149, 38, 83,138,118, 39, 67, 41,137, 41, 12,
+171,203,167,177, 42, 33,239,117, 72, 18,141,195, 83,186, 10, 51,236, 35, 49,248, 68, 81,251,140,254,234,144,153,153,156, 65,127,
+132, 41, 10, 42, 3,149, 11,210, 86,175,149,145,136,138, 78, 55, 65, 21, 22,111, 28, 66,133,142, 51, 50,158,126, 81, 82, 24,131,
+206, 52, 51,121,138,147,130,194, 89, 6,131, 17,171,253,130,170, 12, 3,209, 10, 80, 8,100,170, 40, 76, 69,225, 44, 91,219,154,
+205,194,115,178,168,169,156, 67, 75,193,124,154, 49,151,164, 56, 83,243,196,242,128, 35,253, 33,115,121,134,150, 30, 47, 60,105,
+162, 24, 73, 73,157, 36, 24,235, 24, 12, 71, 84,149,193, 56,143, 5,148,112, 8,233,168, 68,176, 84, 51, 37,208,194,131, 51,164,
+ 16,228, 45, 33, 72,147,132, 60,107,161,165,164,149,104, 82, 21,102, 99,135, 39,205, 53, 91,183,111,102,102,161,135,169, 43,158,
+124,250, 20, 71,142,158, 98,110,174,199,205,183,110, 34,111,181,192, 71, 79, 77, 9,108,109, 40, 6, 35,172, 11,147,179,210, 9,
+157,217, 30,173,110, 14,202, 7,226, 22,114, 34, 59,135, 73, 80, 76, 60, 62, 33, 20,181, 49, 72, 37,201,219, 57,195,213, 21,250,
+171,171, 72, 9, 42, 73, 72,243, 22, 79, 61,246, 24,253,149, 1,237, 94,135,118, 43, 67,107, 77,187, 59,131, 74, 60,237, 92,211,
+233,205,210,206,186, 44, 31, 61,134,199,209,154,219, 2, 66,115,252,201, 47,210,154,233,194,252, 12, 21, 37,238,217, 19,212, 75,
+ 35,124, 59,195, 75,129, 84, 18,149, 5,175,162, 42,106,204,234, 16,161, 52,149,177,116,164,100, 62, 73, 25,120, 75, 9,228,145,
+208,211, 76,211,107,103,212, 56,156,148,164,221, 46,179, 91, 54, 51,219,235, 5,131,123,236,233, 10,129,159, 34,176,208,222,224,
+133,143,137, 90, 68,246, 13, 10,182, 95, 39, 69,199, 50,226,251, 19,210,145,225, 89, 41,169, 17,168, 72, 4,209,211,141,247, 84,
+ 42,133,144, 2, 99, 45,214, 90,140, 9,114,125, 80, 9,163,194,226, 61,194,123, 84, 12, 5,248,248,185,139,239,143, 73,127,218,
+139, 30, 27, 36,227,231, 40,165, 68,235, 4, 41, 53, 66, 41,132, 15,207, 83, 64, 84, 94,130,236, 59, 14, 7, 72, 37, 39, 78,199,
+ 52,177,251,169,144,195, 88, 69, 24, 27,128, 99,165,194, 57,183,230, 45,143, 13,153, 41, 37, 1,239,241, 54, 56, 77,225, 61, 57,
+ 49, 78,148, 82, 19, 47,216,137,105,149,129,120, 47,192,121, 23,148, 1, 1, 78,196,126,171, 64,170,177,163,196, 68,101, 16, 4,
+197, 64, 10,206, 8, 69,140,219, 17, 8,201, 79,188,122, 33, 4,210, 11,146, 72,136, 53, 62,212,223,249, 9,233, 78,238,137, 8,
+ 70, 87,232, 35, 14,169,228, 25,106,136,148, 49,238,233, 1,161, 48, 46, 26,137, 30, 28,142,186, 54,152,218, 34,140, 32,213, 26,
+ 37,166,119, 45, 23, 56, 47, 48,149,141, 36, 31, 60,110,165, 84, 12, 1, 9,146, 36,143,161, 18,135,244, 2,107, 28,120,131,132,
+160, 0, 11,135, 18, 18,111, 67,245,189, 15,252, 49,134, 53, 38,140,219, 68, 7, 47,217,157,249,172, 33, 26, 60,147,126, 93,133,
+144,178,140,134,130,117,103,244,151,178, 44,176,181, 39,109,183,130, 3,167, 52,198, 88,148,214, 56, 43,232, 15, 11,132, 20,104,
+157,196, 62,228,193, 10, 18,157,144, 36, 65,169,112,198,146, 40, 69,150,167, 65, 77,182,193,120,176,181, 33, 77, 20, 89,170,208,
+ 22, 68,237,113,133, 37,145, 10,225,195,124,233,157,197,121,135,148, 90,211,106,183, 48,198,144,104,141,140,158,136,113, 46,116,
+ 46, 99,144, 4, 9,175,170, 74,210, 36, 37, 75, 52,214, 58,138, 81, 65,170, 4,105, 26,226, 40, 82, 43,148,140,158,186, 86,120,
+ 9,166, 10, 49,143,224, 28,187,201,137, 45, 82, 37,184,104, 61,123,107,169,234, 58,120, 48, 94, 81,142,134, 8,157, 80, 87,134,
+118, 59,167, 24,148,216,170, 70, 69, 43,175, 46, 43,188, 9, 30,126,170, 21,117, 49,226,153, 99, 39,104,231, 57, 42, 78, 68,221,
+153, 25, 20, 50, 12,130,186,100,117,184, 66,119,102,150, 84,181,168,171,154,165,211,167, 81, 82,209,118, 14, 81,140, 40, 11, 67,
+233, 36,198,132,184, 96,225, 61,149,245, 88, 23, 58,224,124, 59,103,161,213,194,214, 22, 13,180, 36,180,231,230,248,194,211,199,
+ 56,189,218,103, 78, 39,104,235, 41,141,161,176, 6,223, 73, 16, 42, 13,138,134,177,212,214, 34,145,228, 90,145,229, 9,173,118,
+155, 68, 40, 86, 7,171,156, 94, 25, 34, 50, 77,187, 51, 19,172, 64,235,168, 7, 37,118, 52,130, 52, 71, 38, 41,253,209,136, 44,
+ 75, 73, 18,197,240,244,105,172, 49,140,170, 10, 3, 36, 73, 74, 7,207,108,158,210,147,146,170, 44,144, 82, 97,106, 79,101, 29,
+131,218, 80,214, 53, 82, 73,122,237, 22, 41,142,218,195,106, 85,177, 58,172, 40, 70,101,176,229, 69,152, 96, 84, 42,113,214, 49,
+170, 12, 51,137,230,134, 12,150, 70, 53,171,166, 70, 72, 65, 59, 77,217,156,181,200,140,231,169,211, 21,143, 47,173, 48,147,105,
+ 50, 45, 2,161,235,148, 74, 37,140,148, 70, 72, 69, 49, 42, 48,166, 14, 19,182, 19, 8, 44, 82, 75, 28, 2,157,104,180, 18,232,
+ 24,203,149, 82,144, 36, 73,152, 20, 82, 73,187,157, 35,149, 36,209,154, 44, 77,131, 90,228, 13, 73, 91,114,221,205,219,233,206,
+245, 40,139,130,163,199, 78,241,236,179, 39,201, 90, 9,183,222,188,133, 45, 11, 29,164,114,177,175,169,208,158,193, 8, 83,135,
+193, 42, 37,180,102, 58,116,123, 51,160,130, 92,170,116,156,240,199,146,180, 80,209,139,137, 3,221, 90,140,179, 36,173,156,202,
+ 25, 78,159, 90, 36, 65, 32,148, 36,235,182, 88, 62,185,204,211,143, 63, 67,146,165,116,187,109,116,146,210,153,153, 33,109, 41,
+242, 68,208,235,245,232, 44,108,102,249,196, 34,253,165, 37,122,115, 91, 81,173, 14, 75,207, 62,141,119, 21,201,182,121,138,186,
+134,149, 33,197,209, 19,208,234,224,132, 8, 6, 71, 34, 16, 42, 9, 74,193,233, 17, 66, 73, 42, 27,194, 80, 51,121, 78,129,165,
+239, 44,173, 60,163,173, 52,153,144,204,116,114,140, 10,132,157,180, 90,244, 54, 45, 48, 59,215, 67, 39,145, 96,165, 12,100, 46,
+196, 25, 19,218, 68, 70, 23,107,222,102,240, 30,153,120,119,114,226,149,177, 38,249, 78,123,200,206,225,173, 59,227,132,166,137,
+ 4,205,154, 52,238,195,108, 59,241,100,199, 6,132, 82,106, 50,169,213,117, 61, 33,202, 9, 89, 75,249,101,134,196,152,192,215,
+164,127,251,101, 68, 44, 68,148,169,165,159,120,219,161,156,160,104, 77,134,129,152, 18,154,207, 80, 38, 34, 57, 68,245,199,199,
+235,142,229,103,239, 61, 42,106, 21, 34, 90, 9,225,239,218,157,245,214,225, 29,209, 99, 14,100,172,148, 66, 43, 53,165, 48,172,
+ 93, 95,198,178,188, 20, 49,140, 17, 13,169, 88, 95,188, 71, 4, 22,195,141,115, 15,148, 66, 74, 61, 49, 70, 17, 42,146,109,112,
+ 52,164,208, 32,124,176, 71,132, 68, 40, 29,115, 13,130, 1, 44,162,145,224,241, 8,233,214,194, 47, 49,124,176,102,111,132,156,
+ 3, 28,104, 41, 73,148, 68,138, 96, 68, 72, 37, 38,125, 73,122,143,141,249, 22, 30, 79,109,253, 36,148,227,189, 37,209, 10,149,
+168,181,147,189,132, 4,124,200,201,112,193,225, 16, 68,135, 99, 28,134, 16, 30,165, 52, 58, 73,131, 55,109, 12,194,129,154, 50,
+ 78,181, 86, 19, 99,196,186,160,238, 6,131, 85,224,106,131, 18,146, 86,158, 34,132, 15,132,232,131, 65, 96,173,139,170, 70, 36,
+120,235,112,181, 69, 43,133,214,161, 77,214,217, 96, 84, 2, 74, 73,202,194, 82, 85, 21,105,146,226,157, 69,105,137, 53,134, 44,
+ 17,120,225, 88,237, 15,240,214,135,112,113,236,119,206, 57,148, 86, 36,137, 70,107,129, 53, 21,206, 65,158,231, 33, 84, 24,115,
+ 82, 42,235, 49,150, 48, 95, 38,146,218, 65,191, 24,196, 48,129, 67, 8,135,242, 14,172, 69,182,187,109,178, 44,167,174,107,242,
+ 44, 18,104, 89, 5,175, 82, 4,107, 70, 42, 73,146,166, 88,107, 73,242, 52,120,216,182,166, 42,170,144,176, 99,195,195,206,178,
+ 12, 41, 61,206,152,137,197, 89,151, 85,140,127,173,197, 83,226,236, 16, 30,140,247,224, 44,104,201,220,150, 89, 6,131, 1,171,
+171, 37, 66, 43,106, 83,162,179,140, 97, 81,130,179, 40, 1,214, 88,170, 24,239, 23, 2, 82,165, 56,121,122,137,165,213, 1,121,
+146,128,131,222, 76,143, 44, 77,195,192,247,158,122, 56,162, 86,146,172, 61,131,243,150,193,106,159,114, 80,144, 73, 65, 86,140,
+168,107,203,168, 50, 24, 36,181,135,194, 67, 97, 93,240, 30,156, 35, 17,146,249,118, 27, 77,236,176, 74,211,154,155, 99,213,151,
+ 60,254,244, 51,244, 18, 77, 90, 91,234,186,198,216,112,147,117,146, 35,165, 10,147, 82,244, 62,180, 80,100, 74,146,116, 90,232,
+110, 72,104, 90, 92, 94,193, 56, 79,187,215, 35,205,131, 7,234,165,160, 26, 14,130, 97,149,102,120,165, 41,170,154, 52,207, 40,
+ 87,135, 20,197,128,210,212, 88,239, 81, 82,161,164,160,155, 74, 54,119,115,234,149, 33, 54, 14, 60, 99, 45,131,170,166, 40, 43,
+140,128,153, 78,139, 84, 73,140,119,140, 76,205,112, 88,178, 58,168,168,156,139, 19, 70,240,206,164, 86, 84, 85,141,198,115,125,
+ 43,195,149,142,126, 85, 35,188, 37, 81,146,217, 44, 39,151,130,147, 69,197, 23, 22, 87,104, 39,138, 76,135, 88,147,214,138, 82,
+ 39,172, 2, 40, 77, 93, 27,108,204, 71,176,149, 5,111,208, 82,131,144, 40, 29,146,224,116,180, 50, 21,225,121, 74, 60, 90, 41,
+ 58,173,118,144,109,165, 39, 73,195, 4,101,241, 40, 13,219,183,109,163,183,208,163,246,134,147, 39,251, 60,253,204, 73,156,183,
+220,114,227, 22, 54,111,158, 11,147,152, 3,129,192,213,142, 81,191,160, 54, 38,144,147, 18,180,123, 93,122,189, 25,148, 92, 75,
+136, 11,241,196, 64,210,194, 71,209, 79, 6,111,221,123, 65, 93, 91,180, 78, 73,146,140,165, 99,139,193,170, 78, 82, 84,150,162,
+ 84,202,231, 31,253, 44, 30, 79,167,219, 34,203, 83,186, 51, 93,242,110,142, 74, 60,189,153, 25,230, 54,109,194,247,135,244, 79,
+157,162,213,155,167, 51,187,153,193,137,147, 12,150, 22,201, 54,205, 83, 89,139, 43, 42,250,199, 23,241,173, 28,167, 84,152,248,
+ 19,137, 72, 18,132, 75, 25,156, 26,224,157,193,224, 25, 86, 21,221, 52, 35,147,146,190,169,209,105, 74,158,166,104, 60,157, 86,
+134, 64, 80, 88,139,208,146,206, 66,143,249,205,243,228, 99,153, 19, 63, 49,178,197,148, 84,189, 38,211, 2,110, 45, 89,206, 57,
+127,134,172, 56,150,179,189, 63,147,216,148,148,200,104, 0,121,107,113,198, 68,239, 65,158,225, 53,135, 4,180, 64,198,214,216,
+ 73,204, 90,235, 64,110,107,177,240,232,109, 71, 15, 84, 69,163, 75, 76,201,239,211,222,231,216,107, 87, 83,101,140,219, 54, 81,
+ 95, 98,142,128,247, 30, 41, 98,157,101, 24,219, 83, 84, 53,145,211, 93,244,112,199,178, 53, 8,188, 35, 24, 1,129, 45,130,158,
+ 63, 86, 52, 98,125,199,247,108,146,112, 24,243, 2,156, 5,103,125, 80, 41,196,152, 40,131, 81, 97, 38,161, 15, 31,149,226, 24,
+107,117, 98, 18,166, 16, 72, 60, 14,227, 45,214, 59,188, 8, 42,198, 90, 34,224, 90, 61,156,240,161,106, 62, 18,186, 80, 65,129,
+241,145,233,164,192,199,159,138, 73, 92, 61,148,161,132, 64, 69,246, 14,247, 63, 42, 23, 30, 68, 12,175,184,113,243, 17, 40, 37,
+ 80, 2,164, 8, 30,186,148,227,103, 21,140, 20, 27, 67, 12, 32,168,106,131,241, 34, 36,166,121, 31, 56, 38,209,107, 33,217, 24,
+166, 49,206, 97,173,137, 33,147, 96, 32,105, 41, 98,174,146, 64,105,141, 74, 2, 73, 90, 99,241, 54,134,131,198,164, 47,197, 90,
+238,134, 7,231, 44,222,133,123,111,125,184,175,121,150, 34,188, 65,122,113,134,218, 66, 52,222,198, 70,171,115, 22, 45, 4, 90,
+141,199, 80,232, 39, 72,208, 90, 35, 19, 24,141,138,144,107, 19,251,128,192,227, 44,180,243,148,193,104,196,168, 52,164, 58,137,
+138,213, 56,227, 32,168, 90, 82,235,192,145,206,145, 36, 58,120,239, 34, 40, 73,198, 58, 28,144,166, 41, 58, 9,210,124, 49, 42,
+227,115,146,104, 9, 82, 6, 35, 68,102,237, 22,206, 90,242, 36, 33,201, 50,234,170, 12,129,100, 31, 72,221, 91, 27, 46,160, 67,
+ 12, 83,167, 9, 94,132,100, 53, 91, 27, 68,146, 6, 9, 8, 73, 43,207,113,174,196,155, 26,161,130,181, 86,246,171,137, 69,134,
+ 15, 94, 67,240, 30,228,196,130,173, 77, 77,150,231,204,206,245,232,175, 14,168, 29, 24, 66,103,213, 74, 83,150,101,140,215,132,
+108, 87, 19, 39, 1, 37, 64,103, 9,199, 23, 87, 16, 66,163,181,196, 90, 79,222,106,133,137, 33,140, 14,202,225,136,206,204, 28,
+105,214,102, 52, 42, 88, 93, 94, 38, 87, 26,101,107,146, 98, 72, 89, 27,134,198,134,172, 80, 7,133,247, 24, 31,100, 39,129,160,
+157,231,244,178, 20,137, 71, 9,137, 76, 19,218,179,115, 60,246,212,211,148,206,176,169,149,227, 70, 67,156, 8,217,175,169, 82,
+ 40, 21,172, 63,227,130,172,136,135, 84, 73,180,212,180,230,186,120, 17, 6,240,233,211,167,145, 90, 51, 51, 51,143,240, 18,227,
+ 45, 85, 89, 80, 23, 69,152,200, 85,136, 89,123,225, 73, 50,205,104,117,128,171, 13,133,117, 32, 53, 18, 79, 38, 5, 91,123, 45,
+ 84, 89, 81, 87, 21, 72, 65,105,106, 70,117,205,160, 50, 84,206,210,106,231,116, 82,141, 53, 21,165,243, 12, 70, 37,195, 81, 69,
+ 85,213,120, 25, 36, 66, 27, 45, 78,103,131, 74,177, 37, 79,233,224, 88, 46,106, 42,225,208, 90, 49,155,230,244,100, 66,191,168,
+120,108,105, 9,180,163,157, 40,132,119,168, 36,193,234,132,190, 16,212, 66,226, 76, 72,242,176,206, 83,213,150,218,185, 40,201,
+129,144, 58,196,221, 67,150, 36, 74, 16, 66, 41, 66,146,104, 69,167,149,145,199, 12, 84,173, 36, 73, 26, 60, 55, 39, 61, 91,175,
+223,202,220,252, 60, 88,195,234, 82,159,103,158, 57, 65, 93, 57,110,186,105, 43, 55, 94,191, 16,173,115,133, 20, 9,194, 67, 49,
+232,135,164,171, 56, 81,183, 58, 45, 58,179, 51, 72, 61, 78,238, 89,151, 80,133, 8,153,190, 82, 4, 15, 94, 37,212,181, 65, 74,
+ 73,150,231,172,158, 92, 98,184,184, 74,158,230,168, 52, 97,102,126,134,199, 31,125,140, 35, 79, 29,161,221,106,211,110,183,233,
+245,186,116,123, 93,148,246,228,185, 98, 97,118, 30, 73,194,202,179, 71,209, 73,194,204,150, 77, 44, 46, 30,167, 60,125,154,238,
+252, 28,190,221,194, 85, 53,163,197,211, 24, 3, 86,133,196, 85,157,134,248,190, 18, 9,102, 84, 97, 6, 53, 8,193,234,104, 72,
+174, 52,243,173, 54,253,178,164, 78, 20,121,222, 66,121,200, 91, 25,105, 43,163,118, 22, 39, 53,121,175,203,220,230,121, 90,237,
+108,205,211,140,147,230, 56, 73,107, 34,165,159,145,125,238,195,164, 25,147, 6,253, 84, 50,156,159, 34,143, 49,105, 78,164,119,
+231, 38,222,164, 24, 43,211,172,147,111,109, 72,128, 12, 82,180,195,198, 44,118,239, 60,182, 54, 24, 99, 38, 49, 98, 21, 37,122,
+169, 36, 90,107,148,214,129, 28,166, 60,252,105, 79,122,252,222,196, 0,136,159, 57, 31, 18,207,164,138, 74, 67, 84, 97,252,132,
+168,253,148,162, 16,141,133, 9,161, 75,156, 35, 42, 11,193,203,146, 74, 79, 18,233, 38, 4,185,214,131,214,254, 29, 61,191, 16,
+175,247, 33,233,214,251,104,148,248, 53,195, 69,201, 72,146, 46,132, 40,125,120, 70,214, 56,108, 84, 61, 66, 22,125, 36,216, 24,
+167, 70,128, 66, 77, 72,116,236, 55,249, 24,162, 24, 39,213,249,113,111,143,158,180,144, 65, 62,247, 83,121, 18,147,241,128, 64,
+ 75, 21,194, 96, 99,189,192,218, 73, 2,223,216,107, 15,202, 64, 80,217,117, 36,117, 49, 86, 98,116,184,238,120,158,247,128,137,
+ 9,129,149, 13,121, 81, 46, 26, 88, 82, 66,162, 19,116, 52,116,240, 65, 37, 8,234, 94, 72,150, 19, 42, 60,115, 37, 98,216, 38,
+206, 87, 73,150, 96,106,139,117,225, 53, 81,103,188,159, 36,123,218,113, 95,139,202,208, 56,133,175,172, 43,218,173,140, 68,130,
+247,246,140, 80, 4, 49,180, 17,114,122,131,225,104,129, 68,199,100, 55,130, 97,231,199, 43, 99,132, 96, 52, 24,162, 0, 37, 85,
+140,251, 43, 76,109,201, 82, 69, 93, 85, 12, 7, 67,116,154,134, 92, 10,235,162,161, 37, 67, 98,165, 84, 65,193,142,206, 81,162,
+ 53,146,240, 61,107, 45,214,212,228, 90,147, 37, 41,206, 67, 89, 86, 56, 19,212, 10, 37, 69,136,215, 75,137,204,178,140,162,170,
+ 72, 91, 45,188,115,177,195,173, 37,130, 20,101, 65,167,211,194,137,176,228, 69,107, 29, 6,111,109, 24, 21,101,144, 54, 5, 72,
+ 13,237, 86, 59,120, 99, 66, 32,148,198, 26, 67,109,106, 32,100, 7, 58,192,122,129,209, 10, 39, 37, 94, 72, 16, 26, 83, 87,244,
+102,218,100,121,139,213,254, 0,157, 36, 84,214,161,179, 78,204,244, 43, 65,170, 16, 99,177, 54,100,193,123, 71,170, 37,163,210,
+114,244,216, 34,157,118, 32, 81,153, 39, 36,105,130, 20, 2,229, 28, 85, 89, 82,122, 79,222,155,195,225,233, 47,175, 96,170,154,
+ 68, 74,124, 57, 66,186,154, 65, 85, 81, 75, 69,109,106,202,104, 45,187, 56,160,242, 36,165,215,110, 35, 99,236, 95, 43, 77,187,
+219,230,153,165, 69,158, 57,113,130, 45,179, 61,228,160,164,176,117,200, 19,240, 30,153,166,136, 44,129, 52, 26, 33, 54,196,161,
+211, 84,211,158,237,146,168, 12, 83, 11, 86, 86,250,156, 94, 89,166, 61,211,161, 59,211, 13,241, 41, 99,168,202, 17,117,101, 67,
+242, 34,130,218, 88,178, 60,165,168, 10, 70,163, 17,198, 10, 16, 58,100,198, 90,216,222,109, 51,159, 38,148,253, 17, 94,130,119,
+ 33, 4,176, 92, 25, 10,107,113,105, 66,119,166,133, 51, 21,181, 51, 12,235,154,209,168,100, 80,212, 49,228, 44,176, 46,198, 81,
+ 21, 84,198,208, 75, 21,155,180,162, 95,140, 24, 58, 11, 18,218, 73,206, 86,221, 66,213,130, 47,157, 94,101,169,182,204,170,168,
+ 14,107,133,215,138,190, 72, 40, 33,198,184,130,151, 86, 91,199,176,172, 66, 50,141, 86, 8, 45, 16, 50,116, 88,176,136,177, 33,
+ 36, 5, 73,162,232,180,115,218,157, 22,142, 48, 91,100, 73, 18, 38, 50, 41,216,186,125,129,217, 45,179, 8,105, 24,246,135, 28,
+251,210,169,152,233,190,192,173, 55,111, 33, 73,114,156,181, 99,247,147, 81,127,136,169,234,104,117, 11,242,118,139, 94,175, 11,
+ 82, 96, 8, 18,180,144,225, 89, 75, 47,145, 81,141,241,193,109,143,131, 47, 40, 45, 82, 75,234,106,196,234,226, 34, 82,134,208,
+ 65,103,166,203,104,101,200,231,254,254,147, 36, 74,211,110,119,152,155,155,163, 55, 59,139, 74, 37, 58,177,204,206,206,209,234,
+204,178,122,114,145,202, 84,204,110,221, 70, 85, 25,134, 75,139, 36,237, 12, 57, 63, 67, 81, 21,212, 43,125,138,165, 21,156, 76,
+ 80, 42, 33,203, 82,156,242, 40,157,224,107, 40, 6, 35, 84, 34, 41,170, 2, 89, 91,230,178, 22,163,170, 98,224, 44,237,118, 72,
+ 10,205,180,102,166, 59,131, 21, 14,167, 4, 89,183,205,236,182,205,116,123,221, 32,125,122, 31, 60, 18, 31, 38,239,105,217, 28,
+ 49,118, 63,162,151, 34,229, 68, 95, 95, 35, 11, 49,201, 10,102,146, 48, 44, 38,147,161,243,107,222,125,240, 98,198,196,105,163,
+ 28,110,177, 38, 76,188,184, 40,239, 59, 23,194,100,209, 81,152,168,121,177, 62,211,158,246, 36, 46, 60,158,124,215, 43, 12, 83,
+177,239,181,236,250, 53,111,107,236, 45,143,201,212, 58,247,229, 75,231,162,116,111,140, 9,177,125, 33, 39, 30,234,218, 50,185,
+144,153,236,198,249, 4, 34,146,113,108, 11,209,179, 12,147,125,240,142,199,247,109,156,167, 16,150, 60,201, 64, 62, 34,198,193,
+165, 12, 70,135, 8,201,168, 99,153,119,220, 38,198,203, 11,163,122, 20, 18,200,166,226, 32, 49, 86, 27,200, 44,100,112, 43, 29,
+146, 1,153, 34, 88, 33, 68, 48, 4,198,223, 31, 75,241,113,137,104, 72, 54,243,104, 29,250,136, 84, 97, 14, 31, 43,254,227,251,
+ 23,171,132, 20, 33,132, 38,133,140, 89,248, 62,182, 65, 50, 9,193,199, 36, 68,231, 29,131,186,192,184, 49,137, 70,181, 71,138,
+184,162,100,220,174,224, 96, 24, 23,157, 0, 27,140, 24, 41,130,234,224,189, 71, 69,101,198, 24, 19,140, 0,103, 34, 17,135,126,
+ 42,163,193, 98, 76, 48,202,133, 27, 39, 16, 6, 71,166, 54,134, 52, 77,104,103, 45,240,225,217,137,216,241,156,247,129,108, 17,
+147, 28, 14,188,159, 40, 65,222,199,254, 3,193, 0,215,154,178, 42, 66,168, 51,134, 15,148, 86, 24,107,208,137,198, 58,203,112,
+ 52,138,170,118, 50,233,115, 66,168, 16,102,147,129,220,125, 12, 93, 40, 29,115, 44, 28, 56, 23,140, 27, 41, 64,199,132,201, 81,
+109,169,203, 26, 23, 21, 11, 29,201, 93, 10, 28,101, 89,160,211, 20, 83, 87, 96,106,106, 87, 35,156, 71, 74,143,177, 21,121, 43,
+167,182, 54, 72,161, 42,116,236,209,104,132,117, 6,149,104,132,119,100,185,128, 44, 16,144,244, 33,113,168, 44, 11, 74, 99,113,
+ 8,106,103, 49, 34, 76,210, 10,137,139, 3, 16,231, 40, 77,193,204,252, 12, 74, 58,134,253, 21,112, 80, 89,135,200, 82,202,225,
+ 0, 41,100,200,132,198, 97,235,160,247, 24, 39,232,100,146,163, 39, 22, 41, 44, 49,174, 15,105,158,160, 85,156,140,189,163, 28,
+ 12, 73,186, 93,100,154, 51, 44, 86,233,159, 94, 34, 87, 41,174,170,104,153,146, 62,138,161,241,120,161,168,140,167,180,150,218,
+133,120,150, 18,130,217,118,139,182,214, 40, 28,162, 12, 75,203, 68,154,241,196,145, 99,228,105,198,246,222, 28, 43, 39,151, 81,
+ 42, 65,235, 4,239, 5, 42,203,145, 50, 44,179, 51, 85,133,112,150, 60,209,164, 42,165,213,107,199, 36, 23,205,210,169, 83,216,
+170,162,189, 48, 15, 58, 36,145, 81, 25,220,104, 4, 74, 32,117, 18, 38, 9, 45, 81, 42,101,184,180,138,183, 5,149, 31, 75,117,
+134,153,150,226,134,173, 51,140, 70, 67,156,175,249,255,217,122,175, 30, 89,178,236,222,239,183, 93,152,116,229,142,237,238, 25,
+154, 11,233,251, 63, 10, 16, 32,225, 62, 8, 50, 23, 2,174,112, 65,145, 20, 41, 82,156, 33,123,166,187,143,169,170,204,112,219,
+234, 97,237,136,204,115,200, 1, 26,152, 54,167, 42, 77, 68,236,181,254, 22,107,153,163, 28,162, 83,200,228,172,120,184,219,209,
+250, 68, 72,153, 37, 41,230, 37, 51, 76,194, 85, 41, 99,137, 21,206,179, 90, 19, 67,162,100,197,219,214,145,162,103,140,145,140,
+166,211, 29,119,174, 69,229,196, 31,206, 47,252, 58,120,158,156, 1,109,113,218, 80,140,227,172, 45, 99,169, 98,219, 20, 33, 69,
+116,201, 44,139,108,235, 86, 25,208,174,114,124, 1,136,152, 34,214, 56, 99, 12,141,209,236, 90,195,126,223,161,141, 12,143,206,
+ 90,172,117,160, 21, 15, 79, 71, 62,188,187,199, 22,205, 48,204,252,252,167, 23, 62,191,190,242,240,246,142, 15, 63, 62,210, 52,
+ 45,105, 19,246,192, 56,142,162,191, 40, 34, 24,234,250,158,195,195, 9,213,218,170,250,149,233, 56,223, 76,218,235,255, 12, 34,
+240,138, 73,208, 6, 99, 29,104,184,124, 57,227,115, 65, 57, 71,191,235, 56,220,159,248,175,255,251,223, 48, 79,153,246,216,113,
+127,127,228,238,238, 1,211, 58,180, 77, 28,142,119,220,221,191,225,242,252,204,252,250,137,253,155, 55,196, 98,184,252,249, 55,
+ 26,101, 81, 15,123,198, 16, 40,151,137,241,243, 87,146,113, 20, 5,109,231, 40, 54, 97, 48,152,220, 49, 93,102,177,206,228,200,
+ 48,205, 60, 29,142, 88,165,248,205,143,152,187,131, 64,112, 37,112,218,183,160, 18, 20, 3,198,114,247,225,137,247,239,238,113,
+198,144,114, 33,107, 81,107, 43,193,237, 4,165,209,144, 85, 22,100,106, 93,175,111,132, 96,155,130,187,226,180, 87, 78, 92, 96,
+207,117,155, 53,133,234, 76, 88,185,119, 75,201,213, 53, 86, 32,151, 72,142,114,168, 22,174, 16,127,174, 91,163,179, 86,108,132,
+218,214,237,209,108, 63, 99,227,206, 43,220, 95,170,176,238,214,139, 30,110, 32,120, 81, 45,215,131,189, 62,107, 84,213, 14,228,
+ 20, 55,248, 93,161,235,230, 45,206, 15,149, 5,238, 68,233,202,235, 42,148,184,103, 49,170, 10,167, 86,251, 88, 81, 50,152, 86,
+ 40, 91,175,214,180, 10,187, 27,165,170,126, 78,188, 26, 69, 33,215, 90, 54, 98,169,211, 5,140, 60, 11,149,210,104,163,208, 90,
+212,204,214, 32,202,246, 18,200, 49,138,224, 51,101,200, 81, 22, 12, 34,232, 34, 52, 81, 73,104,179, 30,204,130, 46,161,174, 54,
+173, 21, 29, 81,245,181,172, 67, 73, 34,145,148, 80, 39,242, 90,179,104, 13,180,108,197, 90, 23,186,166,161, 20, 77,171,148,104,
+ 1,182,109, 63, 67,209,248, 92, 8,213,223,111,172, 70,185, 2, 86,120,102,141, 12,234, 74,201,118, 78,253, 46,100,128, 86,248,
+156, 48,165, 34, 45, 81, 80, 51,227,234,103,142,104, 95,114, 41,132,148, 40,170, 30,248,197,139,186,254, 70,124,104,156,173, 57,
+ 1,245, 13, 43, 65, 49, 98, 1, 83,106, 86,192,205, 16,168, 74,217,174, 47, 31,146, 32,112, 59, 11,161,212,103,147, 80,145,169,
+104, 76, 17,161,166, 12,159,162,177, 82,230, 58,124,164,141,198,145,127,150,149,102,156, 2, 69,105,113,103, 89, 69, 40,178,245,
+234,198,241,114,121,169, 52,165, 35,248, 32,127,214,104,148,181, 68,228,158, 20,123,184, 32, 55, 90,107,172, 82,152,168,136, 65,
+ 16,108,227,100, 40,153,199,200, 60,205, 20, 43,239,201,162,208, 37,163, 83, 8,236,118, 59, 9,248,136,162,158, 43, 21, 38, 47,
+185,144, 74,161,233, 58,161, 48, 42, 44,133,129,101, 94,190,241,129,182,141, 64,127, 37,136,245,194, 24,195, 50, 45,132, 20,100,
+ 94,214,154,108, 44,217, 88,176, 2,141,171, 82, 40,113, 65,165,204,211,227, 29,195,203, 72,240,158, 84, 18,161,120,250,182, 39,
+120, 47, 40,136, 49, 84,189, 2, 73,116, 46,228,172,120, 62,191,224, 90, 39,147,145, 50, 56,231, 68,116, 80, 10,105,241,204, 41,
+209,236,118,152, 18,184,188, 12, 85, 8,173,201,179,112,234, 75,202, 68,228,194, 25,147, 8,203, 74, 77, 64, 56,116, 45,135,166,
+197, 85,219,137,113,145,254,238,192, 63,254,249,103, 46,203,200,199,183, 79,204,159,190, 50, 79, 3,218, 57,225,165,211, 36,155,
+186,113, 36, 47,162, 55,163, 53, 77,211,210,223,237, 81,189, 35,148,200,197,143, 60,191, 60,211,238,247,236, 30, 31,201, 33, 19,
+ 82, 96,246,139, 12, 52,213,187, 88,170,191,116,188, 12,248, 37, 80,180, 17, 53,100, 74,168, 8, 31, 79,123,246, 25,226, 16, 81,
+198,146,189, 80, 9,151, 32, 28,208,225,208,178,183,154, 16, 68,185,238, 67, 98,153,102, 38, 63,163,180, 28,232,185,126,190,168,
+ 66, 76,153,155,251,126, 8, 0, 0, 32, 0, 73, 68, 65, 84,135, 86,209,231,204,101,246,248, 36, 23,215,125,107, 57, 41,195,191,
+141, 51,255,250, 58,208, 55, 22,167, 52, 78, 65,114,154,139,117, 4, 20,148,132,174,124, 84, 6,150,152, 54, 59,134,118, 34, 80,
+171, 43, 29, 38, 37, 26,173,105,172,208, 59,125,219,112,220,237,113,214,137, 61, 5,196, 66,162, 97,127,234,121,120,127, 79, 81,
+150,156, 3,191,253,246,149,207,159, 94,184, 63, 29,249,139, 31, 30,185,235,123, 20, 50,204, 25,165,152,135,145, 48, 45, 98,171,
+ 81, 10,183,107, 57, 60,221, 97,187, 6, 84,221, 68,170,133, 73,124,203,213, 78,100, 86, 56, 87,182,138,101, 17,215,130,109, 52,
+126, 88,240,211, 34,215,251,190,227,253,239,126,226, 95,254,225,159,248,227,223,255, 63,180,206,113,255,240,192,221,211, 3,182,
+ 53,104, 93,216,117, 45,111,238, 31, 40,203,194,240,245, 19,221,221, 19,237,195, 91,198,151,223,200,241,130, 57,237, 68,156, 57,
+ 6,150, 95, 94,152, 82, 38, 24,197,110,215,161, 28, 36,173,176,182,197, 79, 35,197, 39, 76,210,124,157, 47, 28,119, 61,251,166,
+231, 57,204, 52,251, 29,141,181,176,120,118,187, 61,182,105,137, 57, 19, 84,226,254,237, 3,111,223,188,161, 32, 3,175,209, 34,
+ 28,189,133,204,215, 65,198, 84, 91, 12,122,229, 2,175,138,244,245,122,187,110,158,106,219, 72, 75, 17,139,105, 76,137,196,245,
+193,249,125,240,203,250,151, 4,209,136,144, 12, 37,155,174,232, 28, 64,217,170,154,222,230,138,132,210,165, 10,174,202, 6,237,
+175,170,253,111,160,245,155,127,119, 11,193,223, 66,242, 70, 95, 45, 78,171, 71, 88,215,205,104, 67, 46,180,132, 11,217, 85,207,
+ 64, 65, 64,215, 10, 83, 27,131,177,102,179,137,149, 27, 84, 83, 14,237,245, 0, 43, 27, 7, 93,170, 69,174,177, 13, 68,136, 41,
+212, 67, 88,158, 99, 37,177,121,200,203,250,249,101,181,169,248, 83, 78,215,208,158,154, 17, 32,135, 83,229,182, 85,222, 60,234,
+171,214,160,108, 40,134,250, 70, 95,112,117,114, 8,103,174,179,186, 18, 6,202, 86,104,190, 30,188, 70,139,133, 12, 97,100,229,
+115,191, 21,254,149,106,247,170,249, 1, 90, 73,246,136,210, 66, 5, 80,137,122,173, 43,100, 46,238,133,156, 10, 6, 67, 74,224,
+ 83,196,106, 69, 41, 87,199,131,181,213, 98,136, 32, 40, 57,103, 97,132,149,198,100, 39,232,134,186,126,175,182, 42,226, 75,181,
+204,149,148, 40,213,225,178, 90, 26,114, 89, 55,237,250,202,181, 80,108,113, 9,228, 12,125,223,215, 47, 99, 35, 79, 68,221,174,
+111,134,220,250,123,149, 46, 87,139,230,154,161, 80,105, 34, 99, 45,243, 60, 19,179, 12,140,214, 88,114,200,168, 92,232,173,101,
+ 25, 39,150,217, 99, 91,139,178,215,231,187,213,171, 40, 87,161, 52, 56,163,101,249,173,122,167,164, 16, 42, 55, 67,227, 26,180,
+ 19, 33,244, 52,121, 84,178, 85, 66, 40,223,137,206,177,208,118,157,220,124,117,242, 37,203, 47,202, 49,211, 54, 13,174,233,182,
+ 15,176,148,140, 74, 10,239, 61, 5,133,173, 30,213,182,237, 81, 70,145,115,148, 27,199,128, 31, 39, 92,117,118,164,146, 81,198,
+ 80,234,244,145, 75, 68,229, 76, 12, 1,107, 21,167,195,137,229,121, 36, 44,133, 20, 2,170,104, 9,213,240, 97,155,222, 98, 20,
+ 40, 23, 10, 70, 37,190, 94, 70, 62,191,188,210,183, 13, 80,112, 77,131,209,141, 64, 35, 41, 17,231,133,102,119,192,237,118,132,
+193,243,114,121,198, 24,141, 31,207,232,156, 40, 40,166,152,209,198, 16,115,102,142,149,203,162,208, 40,195, 97,127, 64, 87,101,
+182, 74,137,221,241,192,243,226,249,127,255,248,103,222, 62, 61,242,238,116,228,151, 95,126, 38, 33, 63, 67,165, 66, 14, 6,109,
+ 45, 16,136,113,166,164,133,214, 26,186,174,165, 59,236, 73, 62,227, 83, 98,248,250,194,249, 60,112,255,246, 45,221,161,149,128,
+ 24, 31,240,203, 82,175, 31, 43,240,115,245,168, 78,227, 40, 9, 90, 89,208,144, 28, 19,247,189,227,253,195, 29,227,121,168, 10,
+ 85, 24,150,192,197, 71,124, 44,216,198,113,119,220, 9, 23,155, 18, 75, 76, 76,190,112,126, 93, 4, 41, 49,134,165,134, 75,168,
+234,181, 61, 56,197,163,214,156, 23,207, 28,229,162,126,106, 28,119,198,242, 60,121,126,254, 50, 96,173,198,104, 9, 61,200,206,
+ 48,219,142,133, 66,200, 69, 66,132,170,136,165,160, 89,124, 66, 43,133,115, 18, 70,147,138, 8, 95,116, 22,200,189,113, 6,103,
+ 53,251,198,114,216,119,180,187,166, 6, 69, 36,218,182,193, 52,134,110,215,240,244,230, 65,224,232, 24,248,243, 47, 47,252,250,
+235,153,118,215,241,195,239, 30, 57,157, 14, 20,165,200, 74,110,196,249, 60,178, 76,139,216,150,180,166,233, 26, 78,143,247,184,
+206, 65,201, 24,170, 55,153,171,224, 10, 4,142,219,212,221, 40,162,247, 34, 14,117,150, 56, 78,204,227, 36, 1, 23, 26,222,191,
+123,207, 52, 37,254,207,255,249,127, 69,107,184,123,124,224,253,219,247, 52,125,135,115,176,107, 12,135,211,145,198, 90,198,223,
+158,113,125,203,238,237, 59,166,151,175,148,113,193, 30, 14, 68,103,153, 39, 79,248,250,194,171, 15,148, 98, 57,117, 61,205,206,
+145,116,193,154,142, 18,192, 79, 30,148,226,235,112, 97,135,227, 77,215,243,178, 12, 76, 6,220,190, 37,251, 64,215, 26,142,187,
+158,162, 10,197,104,238,158, 30,120,250,233,157,120, 98, 43, 60,123,171, 46,215,122,133, 73,215,237, 70,127,227,247,198,232,205,
+187,174,111,108, 86,183, 57, 46,249,134,131, 20, 49,118,217, 32,197,245, 16, 95, 15,147, 24,195, 85,196,180,254,153,237,255,139,
+101,169,160, 69, 12,165,203,166, 12, 79,213, 6,181,250,148,111,135,133,111, 14,238,239, 32,250,252,157,111,126, 11,194,161, 84,
+229,185, 6, 45, 15,251,245, 65,159, 75,174,126,117,110,148,217,171,101, 77,125, 11, 85,107, 13,170, 14, 26,138, 42,170, 83, 98,
+121, 50,186, 34, 1,121,123,221, 24, 65,195, 54,165,254,122, 24,213,231, 46,100,180, 2,167, 76, 29, 88, 76,101, 66,106,162,221,
+141,144, 79, 87,202,104, 61,248, 76,133,139,215,175,103, 29, 88, 5,238, 23,181,181,254,142, 46, 81, 21, 29, 49, 78,116, 1, 34,
+142,187, 6,251,104,165,112, 70,134,109, 9,103, 17,107,213,170,168,171, 49, 46,132, 36,124,191,169,215,147,174, 7,184,208,226,
+ 34,120,213,170,106, 27,140,170, 7,147,252,174, 41, 69,150, 84,233, 10, 32,167, 40,180,150,181, 87, 29, 64,185, 94, 83,169, 92,
+245, 10,235,231,161,129,214,181, 87,250,164, 14,108,235,192,180, 81, 65, 57,147,183, 33,161, 6, 25,105, 3,186,176,196,133,166,
+113,228,162, 43,101,177,218, 34, 43, 21,189, 58, 65, 42, 10,163, 87, 81,160,174,174,137,213,130, 89, 97,249,121, 9, 44,222,139,
+235,164,181,144, 19, 41, 70, 58,215,145, 19,156, 47, 23,122,215,201,242, 18, 99, 21,186,105,140, 66,212,235,136, 87,221, 90, 75,
+ 8,249, 27,145,102,204,162,115,105,156, 80,189,222, 71, 74,138, 88, 43, 30,118, 65,186,156, 92, 0, 41,198, 77,198,191,197, 46,
+230, 76,107, 28,182, 49,219,164,155,115, 65,101,185, 73,215,112,142, 12, 88,231,136, 41,225,103, 81,255,229,164, 8,227, 34,170,
+204,152,133, 11,170, 23,156,170, 1, 7, 84, 24,237,254,254, 14,173, 53,195, 40,129, 42,115, 88,112,198,146,163,192, 11, 86,107,
+200,133, 24,101,147, 36, 38, 82,138,252,250,252,140, 54,226, 85, 95, 31, 62, 78,139,122, 58,122, 79,136,158,118,183,195, 40,195,
+121,120,133,201,163, 20,204,195, 72,111, 20,175, 49, 51,229, 76, 86,154, 57, 38, 22,174, 15,164, 67,211,210,174, 23,151, 2, 21,
+ 19,238,208,241,175,127,250, 51, 86, 43,126,120,247,142,175,127,250, 21, 63, 77,216,178, 78,109,145,214, 88, 17,200,148, 53,172,
+162,208, 55, 13,251,227, 1, 85, 55,230,100, 20,151, 97, 32,229,196,225,225,129,156, 33,196, 72,240,158,114,163, 20,150,233, 18,
+249, 51, 81,148,142,193, 7,114,204, 52,218,240,225,233,128, 74, 19,209,123, 81,172,231,200,107, 8,140, 33,129, 86,236,247, 29,
+217,123, 73,245,139, 5, 31, 11,195, 52, 51,199,140,118, 13,177,110, 9,235,198,106,148,230,104, 45, 37, 69,230, 24, 41, 26, 78,
+206,114,111, 44,193, 71,126,126, 61,163,173,190, 66,106,218, 48, 27,199,108, 20, 49, 43,146, 15,232,146, 55,231,131,143,145, 16,
+ 34,206, 53,226,237,172,159,173, 42,153, 70,107, 90,231,104, 27, 71,223, 52, 28,118, 61,251,190,147, 8,214,106,191,107,219,134,
+182,109,184,127,251, 64,127,236, 73, 33,242,245,229,194,111,191, 61,163,117,225,199, 31, 30,120,247,116,218, 14, 0, 85, 52,203,
+180,176,204, 11,171,166,203,118,142,227,189,100, 22,128,192,149, 26,228, 97, 99,213, 22,232,177,218,125,214, 3, 47,166,196,178,
+120,156, 19,177, 93,152, 22, 66,140,196,156,121,120,124,228,233,253, 91,254,183,255,241, 63,243,242,233, 43,221,126,207,199, 31,
+127,160, 57,180,184, 70,211, 53,176, 63,116,220, 31,239,184, 60,191,128,201,236,239,158,136,139, 39,190, 14,168,174,129,110,199,
+236, 3,105, 24, 24, 47, 19, 99,206, 52, 93,203,225,216, 19, 17,135,128, 45,134,113,152, 41,192, 56,143, 76,203,204,125,191,195,
+199,200,179, 31,233,118,123, 88, 50,174, 36,142,119, 7, 17, 37, 25,131,217,245,188,249,241, 3,251,187,131, 28,242, 55,135,241,
+150,152, 86,211,254,244, 26,181, 87, 55,205, 82,214,192, 19,121,176, 27, 99, 54,222,114,245,214,150, 92,237, 98, 27,193,202, 38,
+ 64, 42, 85, 25,118,245,183,223,192,211,183, 73,117,107,128, 72,133,184, 73,108, 73,117,107,164,236, 10,141,223,122,206,111,125,
+196, 49,198,237,231,234,237,245,241, 77, 96,142,186, 81,200,167, 28,101,184,216,160,252, 76, 81,121,243, 86,175, 60,117,206,169,
+134,225,212,135,248,205, 6,157,146, 88, 51,115,221, 10,169, 7, 79, 78, 2,207,174, 1, 50,101, 13, 44, 89, 63,131,234,220, 9,
+113,141,139, 53, 91,216,136,216,223, 86,120, 59, 95,225,242,122, 24,173,239, 35,167,184, 89,201, 84,169,220,186, 82, 91,160,206,
+ 22, 30, 83,131,190,214,225, 75,107, 81,222,175, 67,220, 54, 36,173,223,199, 54, 20,148, 45,165, 81,163,234, 97, 99,132,195, 85,
+ 98,237,149,247,189,218, 9,229, 59, 75,148,186,208,138,234,206, 42,189, 5,232, 40, 84, 85,140, 27,114,169, 73,122, 89, 80,138,
+ 80, 18,177, 14, 9,206, 58,124,140,178,176,213,195,113,117, 60,164, 92,200, 74,174, 57,185, 95, 87,244, 65,161,235, 16,150,235,
+240,167,202, 42, 0,213,219, 97,172, 37,109,134,180, 10, 34,139, 44,116, 74,107, 98,132,236, 11,187, 93,183, 9, 39, 85,229,206,
+101,224,147, 77, 61, 38,249, 62,115, 69,154,140, 54, 88,107, 54,231,200, 45,191,175,200,204,227, 68,201,133,198, 53,114, 56,167,
+132,107, 26, 98, 44, 12,195,132,174,232,100,222,206, 69,176, 90,161,106,124,114, 41,101, 19, 7,167,152,234,103,169, 43, 53, 4,
+ 77,227,240, 37, 51,123,137,171, 86,149,131,183,206,160,117, 21,180,229,213, 58,112, 51,177,230, 36,211, 99,107,221, 38, 12,144,
+ 9, 61, 50,207, 11,218, 74,136, 73, 99, 45,182,107, 73, 49, 49, 79,115,221, 90, 51,203,235, 92, 21,232, 2, 63,216,149,119,171,
+188,171,162, 80,130,231,254,254,129,146, 11,227,101, 32,149,140, 47, 9,109, 69,237,171,171,248, 2,168, 34,185,132, 42,224,125,
+228,121,156,232,251,174, 66, 63,149, 83,119, 26,149, 11, 75,244,168,174,195, 52,162,158,127,121, 62,211,105,195,242,122,166,164,
+196, 78, 41, 46, 49, 11, 84,153,225, 18, 35, 81,240, 68,118,218,176,239, 59,156, 54,152, 26, 37,169, 93,195,207,207, 23,126,254,
+252,149,223,125,124, 71,223, 24, 94,126,249, 36,147, 17, 26,171, 37,220,196,180,118,243,154,231, 20, 41, 41,179, 59,236, 57,222,
+157,196,171,157, 50,211, 18, 88,150,133,253,225,200,241,233,158, 56,207,132, 20,197, 81,176,138,132,168, 98,157,148, 55,238, 37,
+198, 32,200, 69,209,188,123, 56,240,112,236,137,227, 34, 15,230, 92,120,141,145, 87,239,137,185,208,237, 58, 92, 3,121, 89, 72,
+ 57,227, 83, 97, 90, 18,195, 52, 64,107, 41, 74, 56, 86,189, 66,118, 40, 14,198,208,231,204, 16,196, 46,215, 27,203, 99,211,162,
+ 82,225, 95,191,158,153,235, 67, 69,139,236,148,197, 52,204,198,177,228, 44, 7,113, 46, 52,213, 26,134,210,132,232,177, 78,196,
+ 64, 37, 43, 82,138,148,148,104,141,161,117,150,182,177,180,206,114,232, 59,118,125, 71,107, 45,139,247,132,152,233,250,150,174,
+115,220, 63,156, 56, 60,236, 41, 41,115, 57, 79,252,242,219, 43, 49, 37, 62,124,120,224,237,211, 73,172,107, 74,166,119, 63, 44,
+194, 49, 85,129,148,117,150,195,233, 64,183,107,235,123,212, 2,185, 90, 43,252,232,141,221,104,221, 70,149, 82,164,152,152,198,
+ 9,165, 52,174,105,241,211, 76, 10,162,208,182,189,227,247,127,245, 87,252,237,127,251, 27,254,225,191,254, 55,250,190,227,135,
+223,253,142,221,221, 9,109, 21,141,131,182,117,236,143, 71,150,243, 5, 63,205,116,119, 39, 84,187, 35,156, 47,114,205,239, 90,
+166,152, 40, 75,196,191, 14,156,125,166,115,150,211,177, 39,106,241,209, 54, 52,132, 41,144,114, 97, 9,145,243, 48,112,191,239,
+113,192,231, 97,164,189, 59, 9,204, 58, 39,238,143, 71,218,174, 1, 45,208,240,219, 31,223,177,127,188,163, 36,245,157,184,235,
+250, 87,170,150,179,149, 11,222,212,188, 73,108, 82, 41, 70, 73, 52,219,134,124, 54, 88, 86, 40, 58,234,193, 94,190, 57,112, 75,
+253,119, 43,100,153,162,228,145, 43,110, 82,231,138, 40,141,115,172, 86,165,178, 50,116,234,102,163,148,111,108,165, 79,110,183,
+244, 91,218,160,220,136,228,110,173,121,155, 57,233, 54, 16,231,102, 75, 93, 55,218, 45,113,102,181,120, 81,237,183,155,191,157,
+ 77, 92, 87, 84,169,127,102, 77,161,187,254, 44, 85,174,191,175, 20,217,196, 55,186,146,245, 51, 43,164, 40,135,162,196, 40,171,
+ 45,212,199, 88,179,241,223,121, 75,107, 43, 91, 6,189,174, 30,245,245,208,205, 41, 95,115,246,213,234,235,174,222,247,154,128,
+184,122,247,175, 67, 75,217, 62,207,219,239,136,205,106,168,106,202, 30,117,195, 23, 74,206,213,236,143,235,107,187,138, 6, 67,
+ 12,226,211,182,122,243,230,155,245, 25,177, 70,198,106, 89, 4,200, 16, 99,253, 30, 42,107, 30, 98,220, 80,151, 88, 23, 75, 99,
+106, 2, 97, 93, 34,115,205, 76, 73, 37, 75, 18, 31,171,109, 78,180, 91,117,102,194,104,179, 81, 5,165,210, 44,235,123, 45,155,
+157,154,141, 58, 82, 40, 92, 99,137, 33,210, 56, 71,223,239,214,201,247,102,128,188, 58, 69,114,186,217,202,111,220, 21,226,224,
+144,131, 87,144, 9,197,112,190, 16,130, 12,231,109,103, 37,196,205, 26,186,182,101, 24, 22, 66, 72,180,173, 35, 5, 65,158,181,
+169, 26, 12,117,117, 74,216, 70,186, 51, 66, 12, 98, 65,212,245, 41,166,180, 4,198,169, 76, 72, 17,239, 43,101,172, 53,202, 26,
+137, 37,218,110,244,156, 5,150,173, 83, 86, 46,153,126,183,163,105, 13, 69,235,141, 15, 75, 33,202, 70,222,200,135,104,173,165,
+105, 27,210,178, 8, 87,165, 20, 33,204, 4, 63,139, 95,186,138, 59, 44,224,114,174,124,184, 28,160, 93,111,120,247,225, 61, 41,
+ 21, 18,154, 57,101,230,156, 80,218, 16, 22, 9,190, 81,213,171, 25, 98, 16, 72, 36, 39,166,121, 34,204, 11,189,147,248, 90,140,
+112, 18,214, 42,114,240,196,144, 49,109, 7, 10,198,215, 51, 75, 88,208, 57,115,254,250,204,161,181,132, 12,115, 22,123,196, 20,
+ 19, 83, 29,235, 52,176,215,134,198,216, 13, 89, 0, 77,208,138, 63,126,254,196,227,241,192, 95,124,248,145, 79,127,252, 85,144,
+133, 2, 69, 37, 76, 85, 72, 98,244,182,237,144, 35,251,182,229,244,120, 36,107,205,248, 58,224,115,102, 14,145, 97, 28,121,120,
+247, 6,213, 56,188,247,228, 34, 80, 86,174, 81,133,165, 42, 94,115,206,196,224, 73, 57, 49,123, 79, 6,238,143, 61,143, 15, 59,
+244,226,165, 16,194, 89,198, 20,121,153, 2, 83, 44,184,214,176,223, 59,212, 28, 73, 41, 50,135, 72, 42,145,243, 60,225,179,162,
+ 24,139,223,242,148,197,187,221,105,195, 14, 17,133, 45, 9,156, 82, 60,184,134,198,192, 47,151,145, 47,161, 78,183, 74,130,133,
+188,211,140,206, 18, 18,248,217,163,115,192, 84, 8,175, 32, 34, 62, 86,149, 42, 10, 31, 19, 41,100, 73, 75,178,154,190,109,232,
+156,227,208,182,236,251,150,166,177, 44,185, 48,197, 72,183,107,232, 58,199,225,180,227,244,102,143, 74,112, 25, 38,126,249,244,
+194, 56, 45,188,125,119,207,135,143, 15, 34, 94,171, 15,255,121,152, 89,134, 1, 34, 53, 64,199,114,188, 63,210,239,251, 26,248,
+ 85,243,190,141,100, 39, 23,173,234, 97,182, 70,164,106, 76, 13,224, 88,230,153,130, 98,119, 56, 17,198, 25,191,120,161,125, 50,
+124,252,248,145,203,243, 23,254,151,255,225, 63,163,172,230,233,135, 15,124,252,248, 65,160, 83,167,232, 27,195,225,116,194, 36,
+136,227,192,225,238,136,219,239, 9,203, 76, 73, 51, 28,122,150, 84,200,243, 76,184, 12,124,253, 58,144,149,226,225,254, 8, 86,
+145, 83,193,169,134,101, 73,204,147,132,229,140,227, 76,223,180,220, 53, 29,151,176,160, 14, 59,108,215,176, 44, 11,167,125,195,
+110,215,203, 96,105, 26,142, 63,188, 21,216,189, 78,246,183, 94,237,219, 96,150,117, 11, 44, 49,111, 89,237,235, 70,184,110,114,
+101,181, 1,149,235,131,117,117, 21, 84,139, 76, 61,252, 89,195, 76,175,106,248, 53, 20, 69,169,239,252,239,215,131, 93,173,233,
+114,100,114,142,117,219,170, 48,234,246,247, 10,138,222, 84,215,183,138,247,239,223,219, 74, 31,172,162,253,149,207, 94,249,246,
+ 53, 58,116,133,131, 75, 41,117,208, 83, 53,108, 38,111, 62,230, 53, 21,109, 69, 29,228,103, 72, 50,154,169,207,134,237,117,168,
+111,109,114,235,161, 79,165, 23, 82, 74,162, 29, 77,200,161,100,244,182,105,230,186, 29, 91, 91,245, 38,101, 85,175,235, 42,254,
+186, 70,191,202,134,107,174,246,188, 34,161, 35,234, 38, 45, 14,117,221,192,245,237, 38,126,141,229,255,246,117,235,155, 97,128,
+ 43, 7,173,149,108,138, 74, 75,168,204, 70,133, 84,248,121, 45, 93, 9,181,252, 71, 87, 45,138,209, 2, 77,111, 37, 72,154, 90,
+166,148, 4, 9,190,141, 18, 46,226,191,214,107, 16,108,165,221, 74, 41, 27, 4,191, 22,229,168, 82, 40,166, 82,133, 85, 55, 99,
+ 42, 50,149,235, 18, 36,185,232,130,178,149,237,218, 96,227,253, 75, 46, 53, 63, 63, 82,195, 85, 48,214,224,189,199, 41,205,126,
+215,214,159, 95,135,203,122,175, 24,189, 14, 88,137,148,227, 70,245, 88, 35,136,196, 74,247,220,126,230, 33, 75,138,166, 54,142,
+166,115,248, 16, 37, 45,179,113, 92, 46, 47, 44,211, 68,223,183,130, 28,145,177, 86, 87, 10,199,136, 88,179, 46, 37,125,223,212,
+236,253, 88, 45,182,106, 11,213, 81, 90,208,159,148,228, 28,163,162,142, 58, 87, 37,170, 15, 30,165,244,198, 91,160, 33, 1,251,
+211, 94,236, 4, 10, 98, 20,190,220,123, 79,136, 81,226,238,138, 36,128,181,214,224,151, 73,126,110, 99,241,203, 44,242, 77,103,
+200,250,154,113,168,106,185,192, 90, 52,160,181, 34, 59,248,252,233, 55, 34, 73,252,208,186,129, 34,118, 3, 83, 84,109,227, 74,
+132, 69, 32,177, 24, 19,151,121,162,107, 27,186,122,168, 39,141,132, 23, 20,129,129,149, 51,152,166, 35, 41,195,249,124,166, 45,
+153,243, 52,211, 91,199,193, 90,158,151,140, 15, 17, 93, 10,151, 37, 16,171,168,162, 81,208, 25, 69, 93,220,160, 64, 40,153, 95,
+150, 17,159, 18,255,221, 95,252, 68, 9,137,207, 47,175, 4, 52, 42,107, 40, 73, 22, 70,165,208,202, 73,206,176,211,168, 16,216,
+ 63,221,115,120,124,100,184, 12,204,151, 9, 79, 97,158, 6,148,130,251,187, 7,150,105,170, 48,157,102,172,229, 56, 20, 77,138,
+ 5, 82,221,156,146, 76,248, 75, 72,236,155,150,251, 83, 79,111, 21,202,199,141,151,123,241,145,243,188, 96,181,102,191, 63,162,
+125, 4,159, 8, 65, 54,252,209, 71,150,193,131,177,242, 94,139,220, 0, 90, 59, 26,109,233, 84,194,164,200, 88,211,255,238,154,
+134,189, 49,124,121, 93,248, 60,123,140,114,146,181,108, 12,147,182, 76,182, 37,231,194,184, 44,228, 28,112,181, 36, 3,109,200,
+ 90, 30, 88,182,218,154,150, 20, 25,226,130, 51,138,206, 26,250,198,209, 53,134,125,235, 56,246, 61,173,179, 96, 52,131, 95, 48,
+ 70,211,247, 29,187, 93,207,241,238, 14,173, 91,150,121,230,249,203,133,241, 60,242,246,233,196,135, 55,111,105, 93,191,249,164,
+195, 24,240, 99, 16, 65, 37, 10,235, 12,167,135, 19,253,113, 47, 15,173, 34,246, 52,204,170, 12, 94,163, 99,245,166,148, 85, 70,
+182,120, 63, 73, 7,192,174,223,145,253,204,178, 12, 34,230,202,112,120,188,163, 63, 28,248, 63,254,167,255,194,240,245,149,195,
+221,129, 15,191,251,137, 72,193,212, 3,125,191,235,105,154,134,120, 30,104,118, 61,205,105, 71,244,153, 60, 47, 36,231,240,141,
+ 98,153, 3,121, 12,124,254,237,133, 49, 21,126, 56, 29,216,117, 22,175, 50,216,134, 18, 21,243, 52, 19, 66, 98,152, 7,114,142,
+ 60,180, 13, 75,152,184, 24,112,167, 3,105, 14,236,148,225,116, 58,200, 53,160, 13,221,211,129,167,159, 62,214,180,176,107,168,
+202,173, 95, 91,223,112,229,219, 33,189, 90,217,178, 4, 31,217,202,241,173,185,224, 2,119,203,128,184,249,204,149,160,111, 42,
+215, 20,254,213,114,165,174, 9, 98, 91,132, 44,255, 30,254,191, 61,160,175, 9,112,114, 31, 72, 78, 55,223, 36,214,129, 66, 43,
+251,205, 65,126,141,164, 45, 55, 27,231,109, 83,219,245, 80, 87, 27, 26, 33, 3,196,109,113,204,182,233,215,244,181,219,196,188,
+ 21,234, 93,131,172,114, 18, 61, 75,138, 55, 97, 55,214,160,172, 60,231, 84,205, 54,200, 89, 6,159,237,165,101,181,109,101,110,
+243,254,171,250,188, 85, 87,188, 76, 41, 81,193, 87, 49,103,185,217,242, 11, 26,180,173,229, 46, 43,144,113, 83, 2,195,181,171,
+ 64,223, 12, 57, 84,165,183, 90,125,236,250, 26,251,203,119, 81,181,235,183, 37,215,141,208, 31, 77,211,108,156,242, 45, 74,146,
+171,232,109, 85,237,175,214, 62,173, 53,218,174,118,200,252, 77, 52,108, 89,209, 28, 37,195, 65,218, 14, 68,141, 43, 70,220, 17,
+117,243,151,175, 64,232, 30, 25,163, 36,201,180,172, 41,120, 53, 40,202, 40, 25, 18,141, 17,229,122, 74,153,213,148, 64,213, 37,
+172, 57, 4, 91, 57, 81,150,255, 96,205, 65,201,100,186,182,217, 60,250, 40, 65, 6, 74,142, 91, 33,142,174,250, 78,178, 12,132,
+114, 95, 85,116,160,198, 2,175, 69, 80, 74,105,190,190,188, 82,114,228,208,245,144, 19, 49,134, 10,197, 7, 46,227, 64,211,117,
+ 82, 70, 83, 41,158,213,223, 47, 22,219,130,118, 74, 68,224,218, 80,114, 45,150, 41,146,196,105,140,184,169,114,146,243, 48,230,
+114, 45,227, 89,231, 55,191,248, 27,101,232,166, 72,192,245, 59, 41, 40, 40, 50, 85, 26,219, 50,205,203,246,229,129,192, 4,202,
+ 24,226,101,193, 21, 73,220, 73,115, 32,235, 76, 82,133,164, 37,134, 80,182, 7,185,224,117, 85,111, 54,251, 29,126, 89, 24,199,
+133,164, 13, 62,102,138, 50, 82,103,153, 86,155,201,202,167, 39,113, 54,231,200,101,137,180,109,131, 86, 73,184, 30, 36,188,132,
+232,137, 37, 99,187, 29,218, 57,150,243,133, 97,156,176, 33,114, 25, 7,186, 70,218,174,190, 38,241,207,159,179, 98,140,185,110,
+233,138,190,232, 45, 17,200,100,176,192,146, 35, 95,134, 87,126,252,240,134,183,111,223,240,235,231,223,152,166, 17,155,171,111,
+212,105,156,113,219,164, 91,140,132,107,180,206,113,247,240, 72, 4,230,113,196,135, 76, 84,153, 28, 2,199,187, 59,218,211,142,
+ 24, 34, 90, 91, 41,147,153, 22, 26,107, 55, 72, 51,215,205, 57,165,136,247, 1, 93, 12,143,167, 3,135, 67,131,154, 2,186,128,
+ 53,142,175, 49,242,219, 56,147,150, 68,127,232,105,187,130,154, 3, 57, 36,230,232, 41,202,112, 30,103,146,213, 36, 37,168,139,
+174,245,120,198,104,172, 18, 37,250,228,165,172,229, 96, 20,247,206,113,246,129,207,163, 39, 38,133,210, 82,171,184, 24,139, 55,
+150,144, 21,131,247,164,236,233,140,149, 27,193,136,248,168, 49,170,250,211, 17, 27,221, 60,211, 43,195,190,177,236, 91, 39,135,
+186,179,236,187, 22,231, 52,166,181, 44, 73, 46,204,174,113,236,118, 13,199,135, 3,187,189,195,135,153,175, 95, 46,188, 62,191,
+114,127,183,231,253,187,123, 78,123,201,124, 86, 69, 17,166,196, 60, 46,228, 18, 37, 60,199,105, 78,119, 71,250,211,129, 82,213,
+124,186,194, 88,235,195,211,108, 74, 99,217, 40, 12, 18,218, 48, 47, 51,195,232, 57, 28,143,104, 5,211,112,185,166,165,237, 29,
+199,135, 19,127,247, 95,254,134,127,252,187,191,197,182,142,159,126,250, 11,218,166, 69, 89, 77,219, 42,250,190,161,107, 90,194,
+101, 64,181,134,238,112,172, 55,125, 34,199,140,106,157,180,241, 13,129,175,159, 47,188, 76, 11,239,158,246,236,239,123,166, 24,
+208, 81, 97,178, 97,153, 60,203, 20,152,124, 96,138,129, 99,219, 96, 80, 12, 62, 97,143, 61,113,153, 81, 41,242,244, 32,176,123,
+108, 52,221,190,229,225,247, 63, 72,178, 95,142,242, 48,213,183, 94,102,117,109, 31, 91, 5, 85,235,131,183,220,186,216,100, 3,
+204, 37,213,108,134,178,109, 35, 91,205,169, 86,255, 97,124,234, 22, 23, 91, 61,238, 90, 27,248, 38,120,230,150,223, 23,255,246,
+237,214,173,191,131,216,111, 85,242, 74,201, 32,113,123,224,126, 95,222,178,110,228,165, 92, 3, 93,196,173, 86, 95,127,136,242,
+ 64, 86,245,240, 70,147,139,150, 62,130,146,170,251, 65, 44,118,229,182,125,173, 66,238, 70,169,186,181, 94,131, 90,110, 45,128,
+229, 38,244,228,250,222,217, 30,252, 49, 4,148,102,171,228,148, 88, 87,217,125,212,186,125,171,171, 32, 47,165, 64, 73,101, 21,
+ 59,200,161,174,248, 78, 36,184,114,242,124,147, 31,127, 29,228,190, 87,189, 43, 84,209, 87,241,213, 58, 0,105,153, 92,237,154,
+ 36,167, 5,230,205, 37,227, 76,205,135,175,113,186,186,214,197,132, 34, 5, 34,118, 21,229, 85,203,154, 86, 50,224, 27, 85,208,
+ 37,139,229,110,141,209,173, 90, 6,106, 75, 95, 42,137, 92,155,226,138, 85,117,137,145,131,189,113, 78,210, 75,171,234, 30,163,
+240, 21, 69,210, 70,168, 25,163,140, 40,243, 83,146,120,233, 26, 37,174,203, 45, 29,147,209,170, 84, 49,173,156, 39,185, 72,123,
+158,181, 86,130, 92,130,167,171,101, 49, 87, 87,151,100, 89, 40,212,214, 42,184, 90, 42, 85,145, 66, 42,179, 53, 3, 10, 23,190,
+182, 83, 2,204,211,196,121,242,116,251, 35,218, 88, 66, 8,244,221, 14,171, 27,134,243,136, 69, 22,152,152,162, 12, 2,214,201,
+197, 80,175, 89, 98,193, 25, 75,227,108, 77, 36, 12,155,171,194, 88,139,109,141, 88,155, 83,220,114, 27, 36, 95,160,198,235,197,
+165, 6,201,196, 21,102, 85,132,146,104,251, 30,103, 28,177,242,186,206, 88,230,105,146, 80, 3,165,165,233,169,109,101,147, 14,
+ 51,182,105, 49,182,230,125,171, 92, 51,223, 87,184,143,237, 5,235, 44,208,215,254,112, 96,156, 7,194,188, 80,140, 98, 9, 9,
+109,173, 68,254,133,132, 81, 70,248,161, 27,117,231, 28, 61, 88,232,187, 22, 95, 68,165,218, 41,133, 51,162,216,199,106,225, 90,
+114,230,245,124, 70,199,196, 52, 77, 24, 63,177,183,134,193, 71,230, 10, 1,190,134, 72,172, 1, 40,125,209, 52, 74,109, 48,172,
+ 86,138, 24, 34, 95,166,145,182,105,249, 79,191,255,145,151, 47,175, 92, 94, 94,201,222,215, 69,167,160,140,195, 89, 43,177,168,
+245, 70,201,192,221,187, 55,156, 30, 30, 24, 94, 94, 25,167, 9,111, 13, 11, 16,114,230,248, 40, 57,223, 69,129, 49,150, 95,191,
+126,161,107,186, 90,150,147,165, 55,187, 68, 82, 10,164, 84, 88,124,230,241,208,243,225,225, 40,142,130,152, 48, 78, 19, 77,230,
+121,152, 25, 46, 11,237, 97,207,254,238, 8,195, 68, 78,129,113,153,200, 90,243,186, 4,150, 8,177, 24,177, 3,106, 73, 88,114,
+ 90,227,148,162,171, 57,221, 11,153,189,209,188,113, 13, 49, 38,190,158, 71,124,148,192, 3,103, 13,139,214, 76, 90,177, 20,197,
+ 56, 45, 76,203, 66,107,164,223,168,212,148,167,174,113,104, 68,220, 23, 98, 97, 24,103,148, 82, 28,155,150,125,211,176,107, 27,
+218,198,178,239, 91,218,206, 98,118, 78,110,214,144,104,156,225,112,144,112,152,238,208, 49,250,200,243,151, 51, 95, 95, 6,218,
+221,142,167,119,143,236,118, 59,178,146,141,103,241,158,121, 24,160,114,182,214, 58,118, 15, 7,118,119,135,173,172,194,105, 35,
+170, 84,109, 48,218,110,153,212,170,250,161,215, 27, 56, 44,158,151,151, 87,186, 93, 71,183,219,225,167,169,170,142, 27,137, 95,
+221,245, 60,255,249, 11,255,248,127,253, 29,121, 74,124,252,225, 35,143, 31, 30, 36,114,214, 41, 14,157, 99,119,232, 72, 33, 96,
+ 82,100,127,119,128,182, 35, 39, 69,140, 30,181, 51, 76, 99, 32, 15,158,225, 60,242,233,203, 23,238,143, 59,222,220,223,115, 89,
+198,218,248,100, 73, 62,115, 25, 39, 22, 63, 51, 69,207,189,115, 28,156,227, 92, 2,229,216,137, 72,117,241,220, 29, 78,156,246,
+157,128, 97,109,195,195,239, 62,114, 56,238, 43,212,200,117,195,219, 10, 60,249, 38,249,109, 13,135, 89,173, 88,107,241,136, 12,
+ 60, 53,230,116, 61, 96,191, 73, 90,147,252,236, 82,196, 99,173,140, 32, 31,235, 33, 86,110,248,232,173, 30,181,240, 13, 4,143,
+226, 10,179,171,213, 26,149,234,118, 37, 89, 22, 74,149,170,132, 87,215,215,250, 31, 4,206,220,230,230,168,218, 63, 81,244,150,
+218,122,181, 49,213, 72,216, 45, 0, 70, 34,202,182,152, 88,165, 77,205,193, 55, 53,148,167,108, 98, 75, 25, 84,242, 55, 97, 47,
+ 90,203, 86, 86,170,143, 89,252,182, 53,218, 53,149,154,123,175,234,251,148,237, 62,134, 82, 5, 77, 82,107,149, 75,164,148, 53,
+138, 86,120,120,170,136, 48,165, 82,213,215,185,134,159,172,245,171, 98,175, 93, 55,242,111, 62,137,200,141,240, 81,109,254,233,
+239,173,125,165,166,181,177, 37,200,177, 89,125,215,211, 75,138, 75, 36, 1,206, 52,238, 74,167, 20,161, 6,197,137,147, 54,193,
+160,222, 28, 21, 50, 48,216,218, 94,182,234, 1,172, 98,107, 51,139,181,153,209,212,170,208, 18, 69,100,214, 25, 83, 19,244, 4,
+ 73,177,107,165,119, 45, 58,201, 37,215,140,142, 82, 95,159,108,196,186, 20,129,208,157,219, 54,239,111,195,138, 68,128,153,111,
+ 82, 19,115,150,144, 49,227, 28,141, 49, 76,115,228,208, 53,184,166,136,149, 82, 93, 15,235, 85,126,112, 29, 28,203,214, 63, 96,
+215,133,166, 6,162,105,179,222, 63,154,201, 71, 94,207,175, 52,109, 75,215,247,196, 56,163,109,193,185,134,151,215, 87,114,150,
+ 65, 36,167,188, 37, 37,174,161, 57,130, 12, 20,201,210,175,233,172,166,100, 82,244,148,148,232, 90,139, 49, 50,180,167, 84, 72,
+ 90, 34,133,149, 2,237, 92,195, 50, 78, 91,138,156, 64, 85, 85,249,170, 37, 23,215,106, 83,149,166,130,162,135, 16,100,187,169,
+190,189,118,215, 17,131, 40,157,109,227,132, 3,136, 65,148,224,181,230, 84,175,242,165,181, 52, 0,133,109, 20,187,190,103,190,
+ 4,138,159,200,254,106,155,136,161, 66,232, 86, 87,207,108,217, 98,249, 94, 67, 96,239, 44, 77,107,165, 26, 21, 68,172, 87,114,
+237,230,110, 80, 90,225,253,194,120, 57,147,163,103, 90, 22,142, 77, 11, 69, 49,133,132, 75, 5,159, 37,211,156,218, 29,220,214,
+108, 98, 99, 36,237, 44,102,248, 50,141, 92,198, 11,127,253,187,223,241,116,247,192,203,231,103,150,105, 17, 81, 97,221, 98,172,
+115,100, 87,117, 7, 85,140,177,111, 91, 30, 30, 30,200, 41,178,204, 11,227, 56,145,157,244,178,183,157,227,116,186,175,125,202,
+150,203,112,102,153, 23,142,199, 78,162, 14,107,134,177,196, 67, 38,124,138, 24,149,120,115,127,164,239, 44,202,123, 73, 96,179,
+134,231,201,243,229,117, 2,165,216, 63,236,177, 37,160,125, 98, 89, 22,124,201, 68, 5,195, 20, 8,104, 60,235,123,147,165,218,
+ 25,131, 75, 5,157, 19, 33,203,180,120,111, 29,166,104,126, 27,102, 46,222,139,189,175,117, 68,215, 48, 27, 75, 84,134,113,153,
+241,126,102,103,100, 40,136,245, 38,235, 27, 71,215, 26, 41,181, 9,145,105,241, 64,230,216, 57,246,141,101,215, 56,220,202,167,
+ 55, 45,166,105,176,125,203, 28, 18, 49,102,186,190,225,112,218,115, 60, 29,196,250,241,122,225,203,231, 51,206, 52,188,125,119,
+207,221,233, 32, 23,127, 77,144,154,207,163, 36,189, 41,121, 8, 29, 31, 14, 28,238,142,155, 47,118, 83,116,175,155,202, 90,104,
+177,246, 74,215,232,209, 24, 51,227,235, 68,215,119, 28,251,142,225,249, 21, 31, 60, 69, 41, 92,219, 96,172, 99, 24, 2,127,248,
+251,127,226,211,175,191,113,122,184,231,253,199, 15,164, 92,112, 13,236,122, 17, 86,178,100,242,178,208,223,223, 97,107,133,174,
+ 88,158, 52, 62,103,150,203, 66,156, 50,191,126,249,130,113,134,119,111, 30, 88, 82, 68, 92,114, 22, 83, 52,195,101, 98, 24,103,
+230,224,105, 20,156,156, 99, 10,129,197,104,104,100,218,127,232,123, 30, 42, 18,161,141,230,233,195,123,142, 31,223,201,225,178,
+ 38, 83, 97,170, 40,170,108,130,183, 43,132,170,183, 0,144,170,120,186,110,183, 55,181,162,107,246,117,185,137,131, 93, 55,241,
+109, 51,229, 6, 98, 47,101,171,230, 76, 41,138,174,130, 82,105,218,242,239,183,250,154, 61,127,229,192, 83, 61, 28,212,154, 33,
+242,141, 93,237,123,161,220,173,223,190,168, 53,206,147, 77, 96,183,242,161, 34,139,169, 74,245,170,212, 54, 55,226,176,171,191,
+ 91, 75,161,199,141,151,187,144, 43, 28, 90, 57,114,106,180, 42, 55,244,194, 42,178,187,169,149, 93, 59,218, 87, 72, 56,134, 36,
+153, 21, 85,213, 85,110,210,251, 86, 27,151,170,195,140, 90, 97,226, 84,182,144,156, 82, 99,172,183, 1,160, 66,231,137,116, 77,
+223,171, 67, 16, 55,204,138, 68,181,234,186, 73,174,217,240,107, 86,124,253,252,215,193,188, 38,145, 43,242,230, 4,177, 90,213,
+ 64, 22,182,239,185, 20,249,222, 99,109, 41, 19, 79, 63, 21, 32, 87,219,159,179, 90,111,127,198,104, 57, 47, 74, 93,206,180, 82,
+149, 11,191, 14,157,186, 30,250,185,114,239, 27,125, 80,237,108,166, 40,138, 81,164, 28,197, 19,111, 12,170, 20, 82,214,226,229,
+111,228,153, 40,247,238, 90, 35,123,213, 66, 74, 86,127,190,230, 26, 80, 33,115,107,165,199,196,104,246,109,191,149,236, 40,165,
+235, 32, 87,203,205, 40,148, 10,163,151, 34,219,191,179,166,102, 25,172, 81,190,117,224,168,104,197,243,231, 87,172,213, 28, 79,
+ 71,150, 32, 67,118,215, 57, 22, 31,152,231, 64,219, 54,181, 5,238,198,251,190, 38, 92,214,223, 42, 14, 20, 48,107,155, 97, 29,
+ 52,154,214, 73,164,116,129, 24,145, 70, 62, 81,210, 88,194, 56, 85, 11, 68,157, 54,180,188,129,253,110, 71,183,235,240,201,147,
+124,160,113,194, 7, 44,126,169,144, 11,100, 93,232, 91, 71, 8, 98, 37,114,109, 75,140, 73, 54,150, 2, 37,102,217,202,139,124,
+ 32,172,245,137,100,140, 21,129,219, 60, 46, 24,215,224,125,148,164,162,106, 37, 81, 86,138, 54, 40,200, 5,164,192,215,174,247,
+125,183, 35, 43,181, 85,121, 54,214, 18, 82,148, 76,121,235,176,197,241,242,252, 74,152,103,162,159, 88,114, 97,103, 59,166, 4,
+115,148, 27,231, 82,211,211, 84, 86,116, 74,146,153, 86,171,135, 85,134, 97, 89,248, 60, 13,220,221,221,243,223,255,197, 79,188,
+190,206, 76,231, 1,239, 3, 33, 87,125, 0,242,224,215, 93,123,133, 25,149,226,241,233,129,166,111, 24,134,129, 16, 35,211,236,
+101,179,201,137,126,183,151, 60,111, 99, 73, 73,113,121,126,169, 45,100, 18, 29,152,235,205, 18,163,116,233,134, 28, 57,116, 45,
+ 31,158,238,241,139,199,228,128,107, 12, 94, 27, 62,191,142,204, 33,136, 40,172,179,152,217, 19,151,192, 60, 5,104, 27,134, 97,
+193,103,152, 75, 70, 57, 43,188,119, 70,148,253, 37, 99, 83, 34, 20,169,129, 60,105,203, 17,195,215, 37,242,121, 14,100,109,112,
+187,134,220, 90, 46,218, 16,148,102,156,131,180,245, 25, 69,111,196, 98,145,148,162,111, 27,246,141,193,135,204, 24, 34,195, 18,
+152, 99, 96,223,180,156, 90,199,190,119, 88,107,233, 92, 67,223, 52,216,198,209,238,118, 68, 95, 24,230, 64,235, 44,167,187, 61,
+135,251, 3,170, 81, 92,134,137,215,151, 1,165, 44, 79,111, 79,220,223, 29,104,173,216,107,130, 79,140,231,113, 11,237,192,104,
+246, 15,123,246,119, 7, 84, 13,146, 49,171,205,169, 62, 24,138, 84, 60, 85, 85,178,217, 54,174, 82, 10,195, 48,128,213,236,143,
+ 59,166, 97, 36,204,139, 12, 6,109,131, 54,154,121, 90,184,124,122,230, 95,254,225,159,232,246, 13,239,127,255, 3,202, 26,172,
+130,174, 21,232, 91, 43, 69, 30,102,246,119,119, 52, 15, 71, 43,151, 2,161, 0, 0, 32, 0, 73, 68, 65, 84,138,105,208,100,177,
+126, 90,195,229, 60,129,143,252,242,249, 19,243, 60,243,241,195, 91,140,134, 57, 44,148, 36,106,247,203,101,230, 50, 12,196, 32,
+ 52,211,222, 56,150,148, 88, 20,168,198, 17,188,103,111, 29,239, 31, 78,180,173, 65, 59,203,238,241,145,211,135,183,194,223,162,
+170, 27,160, 66,234,165,138,225, 86,175,109,133,133,141, 17, 63,248,186,157, 93, 17,241,155,237,124, 19, 82,234, 10,227,151,109,
+ 67,221, 68,116,185,108,145,178,235, 86,156,115,169, 28,112,222,210,203, 86, 97,157, 8,109,175, 10,236,154, 19, 43,246, 53, 99,
+ 4, 37,184,177,165,169, 27,240,254,155,226,150,117, 91,191, 25, 20,210, 26, 58,163, 36, 41,112,237,210,254,166,159,156,130,182,
+181,134, 85,138, 45, 54, 43, 20, 53, 99, 65,248,222, 53,152, 76,109, 93,222,235,193,169,111,248,104,245, 77, 52,171,218, 90,213,
+ 86, 56, 91,173,170,116,165, 9, 62, 66,169, 16,113, 69, 55, 72,146,112,103,172,222,208, 11,217,189,141, 32, 3, 34, 33, 68,175,
+ 57,250,198, 84,203, 91,218,196,111, 69,231,107, 65,139,173,234,252,172, 48,186,108, 8,140,120,210,205,134,198, 40,116, 13,187,
+ 81, 20, 4, 54,214,234,250, 62, 36,138,212,144,179,198, 58, 43,161, 68,219, 27, 43,149,107,150,248, 86,129,234,165, 86,123,245,
+197,175,159,219, 55, 42,248,117, 8,171,113,186,170,166,248,173, 88,146, 90, 11, 96,170,124, 61,215,102,182,206, 53,146, 88, 87,
+160,164,128, 86,102,107,211, 51, 70,227,172,150, 14,146, 44, 13,113,214,104, 74,140,130, 38,229,155,235, 52,175, 9, 36,245, 90,
+ 72,226,238, 72, 85,100,157, 99,168,144,127,187, 89,252,214, 12,122,117,211,209,174,138, 80, 53,107, 59,154,115, 22,180,150,127,
+ 22, 75, 77, 10,212, 34, 16, 4, 94,135, 51,195, 48,113,220,237, 0,141, 95, 60, 77,211,144, 98,225, 60,140,180,109, 87, 43,118,
+ 21,198,184,122,191,177,105, 0,132,187,183,178,220, 26,181, 5,132, 69, 10,174,105,193, 72,112, 90, 78,178, 48, 43, 10,122,153,
+206, 44, 62,200,180,104,228, 98,178, 85, 85,188, 63, 28,113,141, 35,231,196,101, 24,113,189, 37,204, 11, 97,152,177,213, 27,222,
+ 53, 29, 86,203, 63, 47, 41,211, 55,141,240,192,231, 81, 60,131, 49, 85, 17,205,149, 91, 42, 41, 99, 75, 97,215, 73,168,205,203,
+203, 11, 70, 41, 22, 63,227,104, 40,241,166,136, 64, 73,115,153,168,227, 97,152, 39,156, 81,114,168,123, 49,245, 55, 90, 90,106,
+ 82, 76, 96,164,199,124, 41,145,241, 60,144, 66, 34,206,129,190, 40,172,109, 88, 66, 33,162,153,115, 17, 81, 24,133, 6,104,215,
+ 68, 38,235,106,173,101,228,121, 30, 48, 86,241,159,126,250, 9,237,118, 60, 63,127,101, 94, 22,130,247,216, 21,147,201,242,192,
+117,182,138, 9,151,204,233,225,129,167, 31,223, 48,188,188, 16, 99, 96,246, 1, 95, 10,217, 25,172,115, 82, 11,235, 20,166,213,
+ 60, 63, 63, 19,230,200,254,208, 75,180,109,148,135, 98, 74,145,144, 68,105, 89, 66,225,195,187, 71, 90,167,200,222,227,108, 75,
+ 81,138,231,203,200,151,203,196,126,223,177,223,239,104, 2,152, 37,112,153, 39,146,211,248, 37, 50, 68,233,216,206, 90, 97,157,
+166, 24,208,214,162,139,198,164, 5, 16,120,191,181,134,147,133, 75,204,188, 94, 60, 90,105, 73, 18, 52,134, 87,109, 88,208, 76,
+243, 34,185,227, 90,211,217, 70,116, 22, 26,129,158,251,150,164, 52,227, 28, 57, 95, 38, 98, 72,156, 90,199,169,111, 57,236, 90,
+ 90,103,112,206,208, 53,162,122,239,246, 61,170,117, 76,243,130,202,153,227,195, 65,184,240,222,113, 25, 22, 94, 94, 7,188,143,
+ 60, 62,237,185,123,216,227, 58, 73,146, 10, 75, 96,120, 29,200, 33,111, 77, 90,251,211,129,227,211, 29,172,225, 41,218,144, 43,
+218,164, 55, 46, 89,118, 16,234,118,190,250,167,199,203, 64,244,145,253,254, 64, 14,145,101,158, 81,198,224, 92, 67,219,236,152,
+166,133,101, 92,248,183,127,252,123,150,203,192,199, 31,127,228,120,186,151,207,160, 51, 28, 15, 59, 26, 35, 60,122,127,183,103,
+255,238, 17, 67,131, 81, 45,243, 50,147, 53,156, 95, 38,242,148,248,237,203, 51,159,191,124,226,167,119,239,184, 63, 28, 24,195,
+ 66, 78, 9,171, 53,147,247,188,188,156, 69, 59, 1,236,180,195, 82, 24, 83, 36, 58, 83,183, 60,197,211,113, 79,179,239,208,214,
+210, 30,247,220,125,120,139,109, 28,122,141, 41, 85, 43,236, 94,174, 7,147,210,215,195,105, 51,252, 21,146, 18,143, 49, 55,208,
+226,170, 62, 94,159,227, 82, 36, 17,183, 7,239,118,232,223, 64,243,210,180, 22,183,108,117, 85, 4, 22,165, 62,148,178, 86,219,
+ 96, 32,238,149,184,169,233,111,109, 97,249, 54, 88,230,187,160,156,111,224,212,122,128,231,239, 54,247,237,117,213, 66,153, 91,
+112,126, 13,130,169,132, 25,169,168, 45, 32, 70,169,194,122, 2,173,175,115,165, 13,164, 13, 64,213,188,237, 68, 94,185,119,190,
+ 71, 29, 4,145,216,168,141, 90, 84, 67,109,161,139, 49,162,204, 42, 0,147,100,148, 88,109, 80,235,102, 39, 96,138, 32,126, 69,
+151,141,138, 16, 27,191,252,125, 42,137, 66,168, 30,117,182,140,242, 53, 59, 93, 21,217,186, 41, 34, 75,211,245,253, 80, 29, 31,
+171,103, 45,215, 33, 65,213, 4, 56,234, 48,160,138, 65, 89, 43,131, 95, 42, 24,211, 80,116,220,232, 44,173, 12, 49,233,202, 54,
+228,122, 24,223,112,206, 55, 8,136,179, 85,118,182,230,176,235,245, 51,170,155, 55, 16, 54, 65,165,198, 25,139,169, 13,126,235,
+ 0,104,106,228,119,161, 16,124, 64, 27,161, 34,174,161, 62,102,179, 97, 26, 99, 49, 74, 28, 29,102, 13, 61,171, 9,127, 90,105,
+116, 46,213,171, 14, 84,119, 17, 20,156, 49,248,101,161,228, 66,187, 70, 72,107, 83,133,113,121, 75,247, 83,232,173,248, 74, 6,
+133,245,222,146,249, 52,215,129,112,107,182,211, 34,120,253,250,245, 43,167,187,125,237,145, 72, 53,207, 61,115,185, 12, 24, 99,
+105,187,118, 43, 46,218,180, 24, 43, 77, 37,160,186, 8, 87,171, 46, 40,166, 76,244, 25,235,220, 38, 12,140, 49, 86,237, 73, 66,
+143, 95,191,146, 76,144, 24,215, 36, 23,188,214, 50, 37,247,125,143,179, 45,222, 7,226,178,208,116, 61, 97,158, 68,176, 86, 31,
+160, 77, 35,156,104,246, 53, 72,223,104,210, 18, 54,200,125,171,102,188,105, 14, 42, 37, 99,141,162,235, 45, 99,152, 57,159, 71,
+116, 46, 85, 52, 6, 33,164, 13, 34, 21, 43,191,136,162, 22, 31, 56, 79, 11,187,190,135,214,110, 5, 10,173,174,141,108, 90,161,
+141,195, 42,205,249,229,149,215,225, 34,246,182, 20,217, 59, 75, 44,137, 37, 69,178,134,151, 28, 9,181,135,214,106, 81,235, 26,
+ 4,206,180, 70,241, 60, 15, 76, 97,230,247,239, 63,240,195,253, 19,227,226,165,178, 53, 86,179,255, 54,184, 38,217, 58,173,147,
+ 9,218,194,195,199,143,148, 4,207,159, 62, 99,156,101, 89,162,116,254,170, 66,211,119,156, 30, 31,192, 40, 46,175,175,140,151,
+ 1,156,165,181, 98,183, 10, 33, 84,117,109,148,144,157,162,232, 27,203,143,239, 31, 73,243,136, 41, 25,211, 56,230,144,248,114,
+190, 80,148,166,237,123, 90,155,113,201, 51, 95, 70,153,220,180,101,156, 3, 83, 86, 44, 37,211, 58, 91, 31, 80, 82,212,144, 75,
+194, 20,241,254, 55, 10,158,180,131,164,248,116, 25, 9,165,208, 54, 29,217, 57,206,198, 48,167,204,101,156,121,157,103,148,130,
+157,169,194, 13, 13,157,115,220,117, 29, 70,193, 28, 35, 95, 47, 35,175, 62,209, 26,197,195,174,225,110,223,209, 88,135,181,138,
+ 93,171,217,181,150,246,208,227,246, 61,203, 60,179,248,200,113,223,113,127, 58,208,238, 58,198, 49,240,250, 50, 50, 78, 51,143,
+ 15, 39,238,238, 14,236,186, 22,167,164, 24, 97,188, 12,228, 40, 28,186, 54,154,253,169,231,248,112,170, 54, 37, 73,226, 43,255,
+129,149, 74,113,229, 83,215,237,109,158, 23,188,143,220,221,223,161, 77,193,207,139, 8, 51,173,193,181, 7,124,240,132, 24,248,
+245,143,127,226, 79,255,244, 39,222,252,240,145,211,211, 35,202, 64,211, 40, 14,251,150,166,107,137,175,103, 90,107,121,122,243,
+132,109,118,224, 26,226,114, 33,170,194,224, 3,203,236,185,188, 12,252,233,207,159,120,255,248,200,195,155, 19, 99, 24,201, 41,
+ 98,149, 37,107,203,243,235, 69,188,254, 10, 26,173,104,180,218, 98, 99, 69,144,148,120,216,117,220,237,119,104,163,112,125,203,
+233,237, 35,205,195,254,202,143,214,108,115,233, 70, 95, 25,243,107,255,249, 55,225, 44, 37,223, 8,221, 42,143,200,218,155,174,
+ 55,177, 86, 41,233, 74,157, 21,174,215,189,250, 15,162, 91,111, 20,239,130,210,223,182,182,173,210,225,107, 15,251, 42, 40, 34,
+ 23, 74, 44, 85, 85,172,170,114,236,223,123,211,191,241,163, 87, 63,241,181, 15,253,251,104,218,111,255,158,114,237, 63, 95, 5,
+112, 26,189, 65,179, 90,175,156,240, 13,237, 80, 97,213, 66,222, 14,158,162,111,126, 95, 77, 13,145,120,216, 26,177,107,234,129,
+185,110,165,165,144,130, 56, 88,172,117, 53,245, 75,215,236, 6, 73,146, 19,123, 82, 77,213, 83, 53, 46,180,138,185,214, 82, 29,
+ 17,151, 73, 78,182,162,110,135,136, 16, 89,175,194, 63, 99, 41, 70,196, 93, 69,233, 74,175, 84, 33, 29, 89, 26,212,234, 9, 36,
+ 46,164, 58, 68, 84,207,182,209,160,116, 18, 75,154, 54, 64,196,185, 76, 38, 84, 63,118,222, 26,203, 82, 17, 77,128,214, 72,184,
+204, 26,210,181,102,250, 87,127,186,173, 61,232,168,140, 86,249,138,116, 40,133,214,174, 94,117, 98, 85, 51,250,138,140,172, 3,
+146,181,106, 67, 48,215,160,161,160, 74,205,220,191,162, 57,210,240,230,174, 34, 51, 25, 91,107,102,251,181,186,119,189, 22, 19,
+ 53, 57, 53,101, 76, 35,153, 29,243,178, 72,196,248,154, 89,177, 6,175,170,178, 69, 0, 23,165,200, 89, 85,162, 66,218,229, 76,
+ 29,142,214,124,251,107, 72,163, 34,134,204,229, 34,205,108,199,227, 81,222, 83, 77,154,155,134,153, 76,192, 57, 83,157, 96,230,
+ 38,160,137,205, 82,185,194,255,186, 14, 73,146, 15, 32, 20,132, 51, 78,160,255,170, 67, 40, 74,161, 7,159,176,218, 85, 97,141,
+ 68,212, 73, 52,170,165,107, 91,172, 81, 44,243, 66,219,181, 88, 99, 8, 62,214, 56, 63,153, 56, 27,215,224,140, 33, 76,158,166,
+105,165, 32,196,123, 41,114,168,135,198,122, 35, 82,121,113,105,149,209,180, 77,207,249,235, 89,166, 73,181,246,151, 43,105,163,
+209, 6,173,174,249,186, 62, 71,134,121,166,228,204,161,239,137, 53,100, 69, 21,104,141, 38,229, 72, 50, 26, 26, 71, 82,133,225,
+242, 10,203, 66,246,129, 8,116,141,102,204,153, 5,152,146,212,145,234, 12, 38,229,122,204,201,133,102,140, 97, 88, 34, 95,135,
+153,251,253, 61, 63,189,123, 71,192, 51,140, 3,243, 44, 85,165, 41, 37, 44, 90,248,163,146,104,250,150,162, 45,195, 48,114,247,
+254,145,135, 71,105,228,210,141, 38,229,194, 48,123, 76, 99, 9, 57,243,238,253,123,172,115,204,243,194,229,229,140, 46, 17,109,
+ 5,138,151, 0,160, 64,202,137, 24, 4, 98, 91, 66,230,195,155, 7,246,173,195,207,158,166, 10,129, 62, 15, 19, 97,241, 28,118,
+ 29, 77,227,112,170,144,150,153, 97, 18, 46,120,246,129, 49, 25,150, 8,202, 90,169, 16,173,229, 0,164,130, 77,137, 88, 85,156,
+119,186,161, 41,154, 79,131,103,244, 25,219, 59, 98,163, 25,148, 80, 21,195, 56, 49, 45, 51,173,214,244, 85,184, 81, 20, 52, 70,
+113,215,181, 52,173, 99,201,137,175,151,153,215,203,192, 65,107, 30,143, 61,167,125, 71,103,229,247, 58,101,232, 93, 67,119,232,
+105,239, 14,120, 63, 49,143, 11,154,194,225,110,207,225,161, 39, 23,120,126, 25,185, 12, 35,247,119,119,236,239, 15,244,187, 86,
+186,143,163,196,191, 70,159,182,200,201,221,233,192,221,227,131,180, 80,173,133, 15, 43, 71,184,122,150,215,156,247,170, 65,208,
+ 53,157,112,158,103,194, 37,208, 31, 14,152,190, 35, 76,179, 8, 56,157,147,150, 64, 63, 83, 74,100,121,125,230,159,255,239,127,
+224,254,238,158,187,167,199, 26, 3, 10,125,239, 56,236, 15,164,113,132, 24,184,255,240, 30,125,127, 47, 15, 77, 31,240, 57,144,
+ 34, 44,175,158,249, 28,249,195,175,127,226,116,119,228,227,227, 19, 49, 44,146, 77,144, 21,202, 90, 46, 95, 47,188, 14,147,116,
+197,163,176, 69,113,137,158, 89,101, 66,141, 34, 61, 53, 13,247,135, 29,186, 49, 24,215,112,120,122,160,127,123, 47,133, 47,149,
+ 63,143,181, 52,100, 77, 87, 91,109,207, 87,193, 25, 87,238, 60, 83,147, 30, 83, 45,223,176,181, 2,178,242,160, 53, 78, 83, 14,
+111,217,204,184,141,129, 93,135,130, 27,225,221, 85,136, 37, 67,194,218,100, 86, 74,172, 27,177,145,231, 75, 45,204,209,149,135,
+206,232,107,140,109, 22,213,175, 8,153,190, 23,220, 85,143,251, 26,236, 82,109,104,229, 38,174,102,235,194,230, 59, 49,157,248,
+ 29, 55,154, 49,151, 80, 5,121, 2,115,230,186, 85,175, 92, 69,174,182,219, 84,179,223,165, 14,181, 90,238,234,118,189,249,159,
+ 43, 84, 43,229, 28,230, 38,168,171,138,224, 82,165, 6,156,222,138, 82, 40, 69,158, 95, 91,128,201, 53,244, 37,151, 88,147,238,
+214,193,167,194,229,202,146,180,240,232,185, 68, 32, 73, 36, 51,183,138,248,155,239, 80, 66,206,175,121,242, 37,213, 60,245,178,
+ 13,247,133,180,241,241,165,242,241, 86,233, 26, 53, 9,109,219, 83,178,174, 66, 83, 73,112, 75,229,106, 19, 84, 21,210, 47, 27,
+204, 95,209,129,170, 69, 88,197,108, 87,161, 94,205, 52, 88, 19, 8,213, 53,130,117, 85,239, 87, 62, 69, 32,120, 4, 65, 94, 43,
+108,101,232,118, 43,174,143,113,226, 59, 79,217,163, 93, 61, 20, 75, 22,222, 93,213,132,192,122, 48, 67, 38,213,136,104,106,150,
+ 70,174, 27, 62,202, 16, 67,160,237, 26,140, 51, 53, 46, 88, 17,115,230,182,200,176,100,161,143,147, 56,219,170, 8, 87,111,238,
+ 16, 74,141,176,173,177,185,198, 89,134,225,194, 18, 35,125,223,226,125, 36, 43, 69,223,245,156,207, 3, 97,137, 24, 45, 61, 31,
+214, 57,116,229,213,217,236,137, 90,250, 78, 80, 88,211, 74,236,115, 46,228, 32,191,203, 56, 45,118,201, 84,136,233,154,181,114,
+211,165,123,133, 25,154,222,209,247, 61, 57, 38,150,113,196,185, 6, 12,210, 75,173,100,210, 85,218,210,246, 45, 41,103,134,231,
+ 23,154,166,165,104, 77,156, 23,185, 89, 85,237,203,213,181,247,119,221,148, 74,193,181, 13,109,231, 56,159, 47,132,172, 5,158,
+174,113,124, 0,174,170, 26, 85, 45,182,159,131,231,245,124,161,223,117,236,246,123, 98, 78,196,156, 36,248, 94, 11,148,166,140,
+195,104, 24,207, 19,195,249, 34,176, 68, 72,236,148, 33,162, 24, 99, 98, 41,153, 41, 4,121,124,150,130,205, 25,147,213, 22,112,
+144,129,243, 50, 99,200,124,124,243, 72, 99, 12, 75,202, 76,195, 72,242, 53,211, 55,101,220,234,201,176, 13,237,241, 72,244, 11,
+165,181,124,248,235,223,179,156, 95,152,191,190, 96,218, 61,227, 18,132, 34, 51,153,253,190,231,195, 79, 63, 48, 76, 23,198,203,
+ 72, 88,194,141, 88, 71, 17,188,120,129,197, 58, 36, 15, 68, 99, 10, 63,189,127, 36,158,199,170,236, 55, 92, 6,207, 52, 5,104,
+ 26,172, 51,116, 86,211, 36, 81, 77,123, 5, 17,195, 28, 18, 83, 76, 91,226,159,174,238, 0,146,196,180,170, 18, 81,169,112,103,
+ 12,189,214,124, 26,102, 94,150, 72,119,220,145,172, 97, 68, 34,116,207,211,194,236,131, 76,228,166,150,159,212, 3,253,208, 58,
+246,109, 75,204,133, 97, 10, 60,159, 71, 48,134,199,125,199,253,190,151,162, 17, 13, 86, 67,219, 52,244,251, 61,253,233, 72, 46,
+137,105,156,241, 62,114,186, 63,112,255,230, 68, 65,241,250, 60, 48,142, 11,187,125,199,241,180, 99,191,235,113, 77, 67,142,137,
+241,245,178,125, 94, 40, 69,191,239,184,123,188,195, 52,110,115,107,172, 94,100, 83,123,174, 37,219,185, 22, 74, 88,179,217,166,
+ 98, 72, 44,243,140,221, 55,116,251,150, 48, 47,164, 92,106,254,185,197,135, 64, 38, 97,179,226, 95,254,254, 15, 24, 13,247,239,
+222,176,235,123,140,179,116,189,229,126, 47,101, 67,249,245,194,227,199,119, 28,222, 62, 97,180, 33, 21,197, 20, 71,146,130,225,
+121,100,190, 36,254,248,199, 63,208, 20,195,239, 63, 60, 17, 77,100,154,103,162,207,104,211,112,190,204,156,159, 71,164,192, 80,
+ 44, 64, 33, 69,150,146,241,117,211,115,214,240,120,216,211,119, 29,186,177,236,239,239,233, 31, 78, 88,219, 10,194,182,113,127,
+106, 27,182, 87,149,249,170,146, 22, 29,155,218, 82,207,174, 98,183, 82,185,187,180, 9,215,214, 84,180, 85,164, 38, 73,102,178,
+245,144,175,121,236,183,127,197,186, 41,228,155, 77,248, 42,112, 83,215,176, 19,101,171, 77,172,118,146,203, 18,183,109, 87,121,
+ 27, 24,216,168, 19,245,157,133,237, 54, 53,110, 29, 82,106,146,105,221,126,111,224, 89,174, 98,172,194,170,182,151,129, 37,165,
+184, 73,195, 86, 42,161,212,161,112,133, 62, 89,145,134,114,253, 93, 32, 7,155,169,246,192, 82, 61,233,106,157, 29,202, 21, 81,
+ 80,165,224,235,117,187, 90,174,182,207,120, 59,228,106, 4,235, 77, 89,108,201, 53, 1, 81, 85,191,246,234, 0,138,105,139, 66,
+ 77,148,173,152,100,237,103,151, 97,137,155,247, 81,191,107,165, 73, 89,218,199, 86, 10, 66,109,162,189,178,233, 46,116,209, 88,
+101,165, 31, 93,107,186,102, 87,197,191,210,218, 41,135,122,250,102,104, 89,115,251,175,225,117,107,149,108,145,198,204,117,224,
+ 83,101,173, 6,173,103, 72, 29,194,212,149,238,177, 55,223,117,240, 98,213, 90,237,121, 49, 8, 2,236,180, 44, 75,171,192, 48,
+133, 32,105,143, 86,208,187,166,109,170, 54,169,108,170,119,173,174, 88,209,138, 4,172,254,121,109,197, 9,227, 67, 68,235,234,
+100,170,195,219,149,190,249, 78,224, 89,242, 55,133, 57,107, 43,224,170,201, 18,221, 4, 88,171,249,242,229, 43, 33,120,246,187,
+ 14,165,170,178,223, 57, 66, 72,204,211,130, 49,215,123, 85,215, 36, 61, 17,119,150, 74, 55,228,106, 39, 23,133,188,132,209,212,
+178,163, 58,196, 73,140, 94,213,189, 24,125,245,141, 82,107,251,148, 86, 52, 77,203,254,180, 39,132,192,112, 30,176,173, 3,163,
+197,206, 86,121, 58,107, 44,253,190, 33,164, 68, 12,158,166,111, 40,120,210,178, 64,221,158, 82,245,203,110,211,117,125,144,180,
+173, 35,150,204,235,101,192, 25, 45,162,181,122,128,175, 23,179, 85,107, 11,148, 64, 35, 33,120,186,182, 33,164, 80,115,135, 19,
+174,222, 88,185,214, 52, 58, 93,120, 61,139,154,124,181, 31,244,214, 50,103,133, 79,176,228, 36,222,195,114, 85,213,234,122, 51,
+ 22, 96,140,145,179,247,252,240,254, 29,239, 30,239,241, 37,177,204,177,170,251,131,124,152,148, 43,111, 98, 45, 93,183,195,151,
+194,143,127,249,215,116,253,142, 47,255,250,111,149,114,177,248, 40,211,184, 47,133,247, 31, 63,144,137, 60,191,156, 73,139,175,
+153,190,219,108, 69, 12,137,224, 19, 33, 72,213, 96, 0, 62, 60,221,113,234, 37,128,197,182,150,133,194,121,156,201, 69, 97, 93,
+131,181, 10, 75,102, 30, 23,124, 40,132, 82,152, 66, 98,136, 5, 79,198, 53, 13,146, 7, 36,214, 9, 82,194, 20,105, 49,218, 89,
+197,222, 24, 46, 62, 48,248, 68,119,232, 73, 86, 51, 21,197,144, 50, 47,195,192, 18, 68, 52,214,104, 83,161, 38, 17,164,136, 61,
+173,197, 43, 24,150,200,235, 48, 19, 67,226,205,126,199,227,113, 71,235, 68,144,165, 20, 56,107,217, 31,247,236,238,143,148, 70,
+ 49, 77, 30, 63, 69,154,214,241,240,116, 79,211,118, 92, 46, 19,151,215,137,174,179,156,142,123,118,187,142,214, 57, 74,204,204,
+231,129,228, 99,221, 36,165, 33,237,238,233, 30,215, 54, 21,230,179, 87,123, 75,125, 74,106, 99,183,168, 78,165,175,117,160,209,
+ 71,150,105,193,185,150,221,105, 7, 62, 83,124,148,255,206, 24,177,195,104,197,174,107,249,255,254,254, 31,249,237,223, 62,113,
+255,244, 40, 29, 2,141,163,105, 53,167, 67,131,179,154,241,249, 43,247,247,247,220,255,248, 17,219,119, 80, 44,126,158, 65, 21,
+198,243,196, 50,121, 62,125,250,204,101, 92,248,221,135, 55, 52, 22, 22,239, 89,150, 9, 99, 90, 82,210,124,122, 57,227, 75,192,
+ 41, 48,245,160, 89, 74,198,107, 8, 89,248,246,183,135, 29,247,187, 94,120,244,211,137,195,187, 55,184,253,174,138,105,216, 56,
+211, 45,138,117,123, 96,149, 26, 5,155,183,115,124, 5, 38,175, 86, 39,245,109,157,122,206,155,120,108,133,173,245,218,109, 93,
+211,209, 84,249,214, 34,119, 45, 76, 73, 87,232,123,251,209,155,217,172,102,143,235,205,159,189, 37,208, 85,120,145,111,162, 86,
+175,175,172,220,100,184,175, 67, 93,249,166,176, 69,109,135,249, 74,173, 92,233, 6,189,249,243,175, 2,182, 53,186, 53, 81, 84,
+141,116, 69,158,125, 43,105,177,230, 32,232,170,164, 95,219,227,182,166,185, 27, 94, 93,213,130, 18,173, 52,185,170,147,215,135,
+127,240,169,210,138, 85,179,180, 41,228,215,162,150,235,123, 90, 35,177, 87,244,160,130,217, 27,106,176,198,188,218,106,209,204,
+181,109,108,171,194, 85, 85, 0,169,215,160,157, 27,191,126, 45, 89, 90, 95,115, 38, 95,251,234,179,108,160,186, 10, 39,215,109,
+217, 25,139, 54, 34, 2,211, 55, 7,246, 58,144,172,201,102, 91,159,192, 55,226, 68,181, 37,204,233, 27, 42, 69,175,161, 64, 37,
+ 99,171, 48, 46,149, 77,148, 94,109,135, 50,208,165, 36,218, 34, 83,211,250, 66, 16, 45,193,202,177,175,223, 99, 76,121,243,165,
+ 83,221, 58,171, 62, 46,213,207,122, 83,148,164,117,232, 84,155,230,195,106,113,229, 68, 89,117,113,141,251, 54, 32,233,198, 78,
+121,189, 93,214, 16,181,140,182,107,232, 77,250, 6,181, 90,241, 35,191,100, 94, 95, 95,105,219, 29,109,219, 11,210,107,229,179,
+ 61, 95, 46,184,198,109, 26, 24,231, 92,253, 60,203,214, 32, 9, 69,174, 41,133,216,222,170, 48, 52,249, 92, 99,130,175,129, 79,
+ 70,150, 68,189, 9,105,114,150,135,166,181,134,166,105, 48, 90,179, 44,146, 75,222,245, 61, 42, 20,166,151, 17,205,181, 69, 71,
+187,150, 24, 34, 86, 25, 26,215, 72, 61,104, 8, 87,110, 68, 75,130, 21, 70,139, 0,164, 78,119,125,219,177,204,137,243,101,162,
+ 49, 53, 41, 40, 23,114,140, 85,144,113,157,234, 82,202, 12,179, 76, 52, 93,223, 9, 79,149, 18, 42, 37, 90, 43,109, 53, 89, 75,
+231,120,240,137,231,215, 87, 41,223,240, 18,168,227,148, 98,137,226,113,244, 49, 94, 39,228,213,239, 89, 4,174,203, 90,177,228,
+ 68,223, 54,252,248,254,189,148, 14,196,204,188,120,114, 73,146,164,151,234,235,171, 19,246,254,241, 14,101, 20,205,126,207,155,
+247, 31,249,252,243, 47,248,243, 11,182,105, 8, 89, 54,173, 66, 97,255,112,207, 15,127,245, 59,254,252,199,159,201,243, 66,140,
+162,188,205,185,194, 87,165,224,131,175, 23, 86, 77,102, 82,138,247,111, 30, 8,227, 44,129, 58, 78,115,185, 76,140, 33,108,240,
+ 83,215, 55,164, 69, 28, 1, 49, 75,212,236, 24, 11, 83, 82, 40,231, 80, 10,172,117, 82,198, 19,133, 94, 81, 41,208, 41,195,201,
+ 40,198, 88,184,196,140, 57,246, 20,103, 24, 75,225, 53,201, 33,189,212, 98, 24,163,100, 59,183,218,208, 58,195,190,235,232,154,
+134, 4,140, 33,115, 89, 34, 99, 12, 60,236, 27,222, 30,228, 64,215, 85,205,107,180,226,120, 58,176, 63,237,209,141,193,207,158,
+101,242,228, 84,120,184, 63,114, 56,182, 12,131,103,184, 76, 52,173,225,112,216,179,219,239,232,187,142,146, 50,211,203,133, 48,
+251, 45, 45,171,219,117, 60, 60,221, 99,219,166, 90,150, 76,133,155,245, 6,187, 75,196,100, 85, 57, 87,175,171, 2,114,204, 76,
+211, 12, 26,118,135,158, 18, 50, 97,246, 85,253,171, 36,202, 17,184,127,186,231, 79,255,252, 7,254,249,111,255,133,187,199, 7,
+118,199, 35,174,111, 80,206,176,235, 45,251,190, 97, 56,127,229,208,183,220,255,229, 79,216,211,145,152, 12,211,248, 74,137, 30,
+ 63,120,230,215,133, 79, 95,158,249,237,211,111,252,229, 79,239,217, 31, 27,206,211, 44,109,123, 88,138,109,249,244,229,133,101,
+246,160, 11, 38, 11, 95,229,115,102, 86, 5, 95,123,150,239,250,142,119,167, 35,182,109,104, 14,123,142, 79,111,177,167, 29,218,
+186,205,246,162, 55,239, 52,155,101,180,108,253,231, 84,241, 91,222,182,204,173, 99,124,219,124,175,212,221, 53, 27,254,154,115,
+157, 83,185, 65,179,215, 34,166,111,121,244,111, 4, 99, 85,172, 71, 69,161, 86,229,249, 26,206, 84,123, 80,106, 89, 71,150, 46,
+247,181, 70,166, 30,214,233,187,190,244,111, 14,245,219,184,216,255,128, 79,255,214,254, 86,182,247, 80,138, 18,103, 78,186, 38,
+208,149,156,106, 71,131, 36,115,173,188,225,186, 13, 11,100,108,191,203, 71,175, 30,230,245, 96, 89,255,217,250, 16, 94,169, 1,
+132, 83,205,185, 72,209,134,213, 55,149, 95, 92, 61,234, 85,175, 96,181,145,237,186,230,156, 23, 37, 62,241, 85, 45,174, 81,196,
+ 18, 43, 85,120, 69, 97, 84,181,136, 81, 17,209,188,169,202,111, 61,254,185, 66,239,177,218,177,184, 22, 28, 21,209, 46, 81, 15,
+ 36,177,192,101, 92,235,136, 72,169,148,169,131, 82,222,226,119,197,130,101,141,174, 10,250,180, 93,135,234,166, 13,206, 26, 93,
+249,246,171,199,127, 61,224,183,185, 47, 11,210,154,171,125,235, 54, 92,200,215, 97,222, 57,123, 21,207, 89,189,249,212,133, 26,
+ 74, 50, 32, 20, 65,129,251, 93,143, 42,130, 40,165, 90,252,163, 54, 70,166, 34, 36,149, 79, 87,117, 64, 49,202,144, 67, 32,198,
+ 69,170, 77, 43,226,117,117, 89, 92, 47,255,117,112, 5,249,243,198,184, 45,153,114, 77,154,219,196,157,245, 93,126,250,244, 66,
+235, 26,218,166, 21,113,183, 19, 13,192,235,120,174, 86, 52, 57,135,157,107,234,119,182, 70,223,202,146,189,106, 1,172, 19, 71,
+ 79,138,114, 93,160,117, 69,218,106,203,157, 92, 11, 26, 83,106,205,159,241,194,121,105, 77,215,119, 40, 69,109,188,202,236,118,
+ 61,139, 95, 88,162,151,135,168,164,110,162,108, 75,156, 60, 57,131,107, 59,194, 20,200, 73, 4, 75, 41,131, 54, 14,101, 29, 73,
+ 41,178,145, 11, 88, 57,195,225,184,231,245,124,225,245,117,168, 15, 92,233,138, 13, 75,160, 53,215,110, 89,163, 52, 62, 71,198,
+113,164,239,123,154, 78,172,107,137, 76, 83,131, 13, 34, 74, 18,235, 76,225,245,249, 76,188, 76,242, 32, 75,210, 67, 60,149,194,
+146, 18,115,138,219,212,105,138,216, 48, 92,145,106,211, 72,102, 86,224,115,225,175, 63,252,192,169, 49,148,156,241,179, 8,227,
+ 98,200,120,191,136, 72,171,222, 80, 37,103,186,227, 1, 92,195,253,219,183,204,203,194,159,127,254, 25,219,237,176,109, 47, 41,
+105,128,238,246,188,125,255,129,152, 18, 95, 62,125,150, 66,154, 24,254,127,182,222,179, 91,142,235,188,214,125, 86,170,208, 97,
+ 7, 68, 82,164, 72,201,146, 45, 29,251, 30,251,255,255,142, 51,238, 73, 86, 22, 69, 16, 4,176, 67,135, 10, 43,222, 15,239,170,
+234, 6,174, 63,104, 12, 74, 20, 54,122, 87, 87,213,122,195,156,207,172,187, 40, 33, 90,229, 36,217,221, 41, 73,160,135, 38,243,
+234,110,199,109,231,152,231, 25,101, 12,167, 41, 48,140,190, 70, 62, 38,156,213, 20, 47,145,173,169, 32,222,240, 4,231, 92,136,
+149,232,101, 20,108,156,149,184,211, 34,135,135, 45,153, 91,101, 80, 73, 51, 37, 77,106, 27,188,129,115,134, 33, 22,158,198,145,
+ 49, 37, 17,219, 32,153,233,168, 66,103, 52,219,166,101,235, 26, 82, 41, 12, 9,134, 16, 73,201,179,177,154, 87,251, 13,189,171,
+163,163,186,210,184,221,109,217,221,108,112,187, 22, 31, 2,254, 20,200,243,204,205,253,142,251, 87,119, 76, 62,243,124, 58,163,
+148, 97,123,179,161,223, 54,244, 93, 75, 73,153,225,249,192, 60,251,245, 61,216,244, 45,119, 47, 95,210,117,205, 23, 17,148, 50,
+106,148,127,214,107,135,126,157, 72,150, 83,102,154, 38, 0,250,205, 6,148, 38,206,161, 90,221, 52,211,236, 33,194,253,203,151,
+156,127,250,192, 31,255,199,255, 21,171,220,126, 71,179,233,208,189,165,111, 52,247,219,158,241,112, 34,249,204, 87,191,250,158,
+254,171,183,148,220, 48,157,159,136,105, 98, 78,145,225,228, 57, 28, 6,254,246,195, 39,190,126,251,146,111, 95,223,226,199,192,
+121,154, 72, 73,108, 51,159, 30, 30, 57,140, 35, 14,133,205,242,125, 70, 96, 40,133, 41, 7,140,145,149,197,139,237, 6,211,118,
+152,190,103,251,242, 30,183,219,162,157, 17,225,169, 86, 40,107,192,214,152,202,156, 86, 15,182, 94,252,191, 95,170,200,151,172,
+237, 43,156,234, 37,184,162,124,150, 17, 46,182,170, 68, 33,137, 98,253, 42, 67,124,205, 72, 95,178,196,175,192, 50,194, 27, 91,
+188,226,215, 99, 75,201,100, 95,186,225,188, 42,216,235,206, 83,101,208,101, 69, 46,127, 6,172,185,238,216,175,130, 89,114, 74,
+ 87, 99,254, 84,211, 17,107,254,123,185,196, 21,137, 37, 42, 47,171,220,122, 61,170,151,127, 57, 36, 75, 70, 47,127,166, 18, 51,
+151,128, 94,153,172,214,128,153,114, 17, 38,162,213,103, 89,234,169,174, 41, 74, 77,121,243,126, 70, 41, 69,211,216, 53,141,141,
+138,220,214,215, 59,228, 75,164, 90,173, 43,114,101,245, 23, 1,207,160, 8, 57,145, 84,146,149, 75, 93, 53,164,250,156,150, 69,
+ 75,144, 50, 42, 8, 86, 58,103, 81,221, 7, 31,100, 10, 56, 71,252, 20,152,103, 95, 97, 56,162,204, 47, 57,227, 17, 34,227,178,
+ 11, 14, 41,208,116, 45,185,218, 43,181, 18,173,213,114,109,149, 86, 24, 85, 48, 74, 58,196, 37,157, 78,151,178,174, 31, 36,111,
+161, 32, 34,237, 42, 52, 92, 28, 26,162,237, 71, 45,192, 60, 77, 93,129,213,159,169, 36,242,101,204, 94,212,235, 92, 31,176,166,
+ 22,175, 18, 16,166, 10,168,198,214,105,107,161,105, 27, 84,200, 43, 52, 41,167,188, 90, 58,115, 46,117, 42,160,214,152, 86,107,
+ 12,182,177,196,144, 72, 62,210,116, 70,116, 58,250,250,233,184, 0,125, 36,165,176,174,150,151,124,133,202, 15, 72,139,134,236,
+202,131,111,140,230,225,112, 2, 29,233,186, 70, 86,172, 41,209,118,150,121,154,133,251, 82, 49,177,141,179,181, 64,225,234,189,
+166, 87,151,137,112, 58, 44,190, 58, 8,148, 86,132,235, 85,130, 54, 88, 93, 20,197,212,135, 58,130, 70, 58, 29,215,200, 78, 96,
+ 26, 38, 26,219,227,186,158,243,249, 64, 72,190, 50,180, 53,253,126,135, 81,153,121,154, 41,186,208, 52,142,249,248, 36, 47, 2,
+149, 73, 58, 73, 72,133, 50,146, 15, 93,187,234,214,106, 54,141,229,116, 56, 9, 45,167, 8, 45, 40,196,140, 83,150,214, 90, 41,
+102,141, 70,183,150,179,159, 24,231,137,237,205,150, 4,168,106,121,115,206, 80,180,252,114,141,179, 36, 10,207,167, 35, 41,199,
+ 90, 73,201,232,103,206, 16, 50,248, 36,159,165, 55,150, 56, 5,241,115, 86, 37,168,215,134, 51,153,175,239,246,252,226,237, 29,
+193, 23,114,214,140,243,140,113,142, 20, 61, 49, 68, 76,201,226,249, 52, 26,109, 44, 77,211,177,189,191,165,221,108,249,203, 63,
+126, 32, 12, 3,155, 87, 47,136, 53, 87,183,221,117,236, 55, 61,119, 47, 94,240,244,241,131, 88,252,140, 35,248, 32, 86,149, 34,
+170,199, 57,204, 85, 79,176,232, 26, 44, 47, 94,236,201,213, 18,168,157,230,233, 48,225, 83,145,223,223, 20,108,175, 9,207, 3,
+ 70, 9, 40,103,138,153,177,142,221,149,147, 8,218,190,233, 4,220, 19, 18,134,132, 46,129,173, 22, 10,210, 80, 12, 89, 23,102,
+ 20,147,207,204, 62,240, 92,147,228,196,242, 44, 2,153,146, 19,155,166,101,211,119,236,155,134,185, 68, 78,177, 16,234, 42,197,
+104,184,221,118,244,141,236,208,115, 22, 59,207,221,190,103,191,223,225, 92, 67,154, 35,126,148, 21,138,179,134,155,187, 61, 81,
+ 41,206,231, 1, 67,166,223,244,116, 93, 67,223,247,104,173, 56, 63, 28,136,115, 16,149,178,178,180,219,150,155, 87,183,184,182,
+ 17, 13,117, 29,235,151,170,158, 93, 58, 0,173, 63,127,233,163,164, 96,244,179, 39,229, 76, 91,247,244, 49, 4,178,150,123, 36,
+204, 1, 31, 3, 47,223,188, 70,149,192,159,254,215,127, 50,156, 39,238,238, 95,224,156,163,217,116,180, 38,115,123, 43,248,227,
+249,121,228,251,127,254, 37, 47,190,255,142,172, 27,198,243, 39,252, 60, 99,179,102,122, 26, 57, 28, 6,254,244,247,119,188,184,
+ 49,124,255,213,107,206,227,192,121, 30,137,227, 72,219,222,240,112, 10,156,207, 3, 77,213, 42,168, 10, 80, 10, 5,124,201, 98,
+169, 51,150, 87,125,199,126,187,193,118,142,205,203,123,218,219, 91, 92,107, 48, 57, 83,140,240, 6, 84,221,121, 47,233, 89,165,
+142, 24,169, 89,230, 11,242,121,137, 68,165,138,215,116,249, 66, 89, 94,212,149,160,170,142,108,149, 20, 67, 98,255,187,236,123,
+191,140, 52, 93,187,227, 85,143, 38, 99,224, 85,245,174, 63,183,162,161, 46,159,229, 50, 10, 23,150,197,245, 33,254,121,128,203,
+ 21, 63, 94, 41,217, 64, 87,230,247, 18,178,118, 25,125, 46,244,201, 44, 16,158,101,103,191, 16,216,180,172, 18, 4,231,106, 87,
+148,232, 98, 81, 93,160, 36,234, 42,229,107,177,213,171,171, 41,199,218, 37, 87,111, 69, 89, 10,148, 20, 65, 25,194,236, 25,135,
+145,182,239,229,221, 87,197,101, 57, 69, 82, 61,212,151,200, 83,212,133, 98, 22, 83, 36,228,128, 81,194,250, 46,171,191, 59,177,
+ 36,197,166,148,152,117, 36, 25, 89,169,201,212,196, 86,189, 67, 66,199, 12,216,250,181, 41,124, 12,248,152,136, 73,212,248, 42,
+131, 4, 91, 74, 22,122,201, 16, 82, 16,215, 81,145, 29,237,110,187,225,124,146,162, 90, 44, 94, 82, 20,169, 42, 60,180,118,217,
+253,139,179,168,232,186,104, 81, 34,134, 94,180, 21,182,230, 9,120,242,133,135,192,197,202, 88, 76,150, 46,187, 78, 55,156, 54,
+235,247,157, 67,181, 67, 27, 67, 70, 80,217,230, 98,128,199,212,180,192,166,109,170,239, 29,177,120,142,105, 45, 78,115,138,100,
+107, 69,127,144, 50,137,122,255, 71, 57, 39, 98,181,251,106, 50,209, 7,154,110,131, 51,117, 93,116,213,162, 95, 51, 20, 74,202,
+245,126,170,168,109,173,137, 73,138,181,198,185,186,122, 84,107,151, 63, 15, 19,167,211, 72,219, 89,180,147,238,218, 54,134,227,
+105,100,246, 65, 38, 30,165,224, 76,131, 91,132,138,170, 10,246, 22,253,104,140, 52, 77,131,179, 70, 86,222, 41,209, 88,177,239,
+ 70,192, 81,155, 25, 17,206,102,177, 98, 32,139,121,107, 45, 77, 99,201,185,112,122, 56,208,182,150,110,215, 50,157,206,100,159,
+209, 74,198, 19,125, 29,133,151,148,112,173, 67,101,117, 25,213, 21,133,178, 45,165, 74,238, 85, 53, 86,150, 82,232, 58, 75, 49,
+240,124,124, 90,119,219, 41, 23,124,152, 81,173, 37,187,134,162, 52, 70,146,255,120, 60, 13, 24,107,233,218,142, 56, 74,112,189,
+ 41, 25,167, 36,163, 87, 25,139,213, 45,195,241,196,233, 60, 16,114,134,146, 48, 20, 74, 49,204, 89, 49,196, 89,242,206,149,166,
+211,194,150, 55,149,130, 53,107, 77,208,134, 6,205, 47,223,190, 89,247, 48, 97,246,140,231, 73, 82,205,162, 23,127,122, 18,161,
+ 6,166, 96, 90,203,238,213, 43, 94,127,245, 53, 15, 31, 62, 50, 61, 31,104,108, 75,179,221,226,167, 73, 96, 33,247,247,152,206,
+161, 77,146, 34, 70,107, 66,152, 40,197, 83,208, 98,233,200,137, 56,132, 58,142, 19, 1,223,253,125,207,237,166, 71,249, 8,166,
+240, 60,204,156, 7, 47,120,201,156,105,219,134, 52, 68,129,252,163, 56,205, 51, 67,202, 12, 57, 83, 42, 96,166,105, 26, 90, 45,
+192, 3, 69,193, 21, 77,135,163,177,150,100, 52, 1,197, 88, 12,211, 36,206,130, 39, 63, 51,229, 76,214, 5,165, 13, 45, 6,149,
+ 11, 77,107,217,111, 26,182,157,163,168,204,121, 74, 76, 49,147,178,172, 72,118,141, 99,219, 24,148,150, 46, 41,206,137, 6,129,
+185,232,198, 18, 74,230, 60, 14,204,126,194,151, 72,127,183, 99,179,105,153,143, 71, 17, 29, 54, 13, 77, 39, 84,182,198, 41,206,
+207, 71,194, 56, 87,244,172,162,217,180,220,191,122, 65,219,247,117, 74,116,225,243, 43, 37,105, 73,186, 78, 38, 68, 28, 39,228,
+ 7,133, 34,251,128,247,158,152, 35, 77,219,114,179,217,212,253,107,193, 90, 45, 60, 0, 95,120,113,247,146,190,111,248,235,255,
+252, 3, 63,252,244,129,205,205,141,220,115,219, 13,198, 41,182,155, 30,163, 20,231,167, 79,188,126,117,195, 87,191,253, 13,182,
+233,240,195, 73, 16,196, 20,142,167,129,211, 41,240,151,191,189,199,218,204,111,191,253,150, 52,123,198, 97, 96, 56, 31,208,101,
+203,144,225,116, 30, 40, 41,162,116,174, 17,146, 5, 95, 18, 67,154, 41, 6, 92,103,185,239, 55,220,109,183,180, 93, 71,127,119,
+ 71,247,234, 94,246,246,214,176, 58,149, 42, 82,115,241,150, 47,120,179, 75,250, 89,185,116,135, 92, 5,159,228,154, 15, 93, 46,
+ 80,150, 92,167, 63,185,190,132,148, 82,213,251,158,235, 11,230, 34, 12,186, 6,175,148, 34,129, 46, 50,249,100,222, 64,200, 0,
+ 0, 32, 0, 73, 68, 65, 84, 74,162,162, 86,101, 85,133,175,100,186,146,106, 88,203, 37, 6,245,122, 76,174,191, 72, 16,203,245,
+112,151,206, 74,200, 65,151,209,109, 77, 93,203,172,127, 46,213,113,255,197,183,190,140,242,163,220, 11,213, 50,170, 20,148,152,
+ 96,241,203,215,189,122, 89,166,111, 87, 86,254,178,120,193, 21, 23,207,253, 23, 34,189, 82, 46,198, 55,116,117, 90,212, 0,172,
+ 16, 50, 42, 25,218,202,244, 46, 10, 66,241,210,209, 69, 49,106, 47, 46, 5, 1, 5, 41,230, 84, 56,156, 39,252, 92, 8, 65,146,
+205,114, 22, 31,118, 78,144,106,160, 72,200,178, 74, 76, 1,230,144,201,200,232,190, 40, 77,209, 22, 69, 67,139, 37, 39,205,121,
+ 46, 12, 67, 33,123, 77, 14, 10, 31, 20,115, 40, 76,190, 48,122, 56,143,153,243, 16,152, 71, 41,116, 98,241,226,197, 86,102, 77,
+216,164,250,230, 99,146, 49,121,163, 13, 78, 59,217,233, 27,185,103,108,201, 24,157,193, 20,116, 73,117,100,159, 47, 64,150,108,
+170,176, 76, 99, 87,219,164, 38,134, 74,110,171,220,132, 5,198,163,138,184, 46,114,157, 26, 45, 1,129, 86, 91, 84,145,235,156,
+ 80,196, 24, 49, 77, 67,140,153, 60,103, 26,235, 86, 7, 71, 74,130,229, 94, 29, 10, 68, 74,150,117, 98,169, 92, 6, 91, 10,214,
+ 54,160, 21, 49, 69, 84,209,213, 3,206,213,119,115, 49,137, 46,159, 73,229,197,187,185,164,121, 94,115, 19, 46, 14, 13,208,132,
+ 57,242,248,124,160,113, 29,173,105,136, 41, 96,173, 67, 23,131,159,166,149, 4,216,218, 74,150,171,121, 0,170, 10, 33, 75, 77,
+ 1, 85,186, 90,219,148, 38,134,188,198,196,230, 84, 8, 73, 92,237,186, 84,209,152,209, 85,108,162,138,236,211, 27, 71,241,129,
+113, 30,216,116, 91,156,115,132,217, 87,224,128, 94,163, 42,151,248, 69,215,245,164, 34, 34,145,172, 20, 73, 21, 80, 86, 80,128,
+ 87, 5, 79, 70, 2,222,231, 49,112,124, 30,215, 74, 56,166, 66, 8,243,186, 83,208, 74,209,219,158,179,159, 57, 28, 78,108,186,
+142,198,104, 98,138, 24,165,100, 36,172, 21,161, 20, 92, 99, 49,170,112, 60, 29,153,231, 32,219,185,148,208,245,231,250, 92, 8,
+117,167,216, 55, 77, 37, 95, 69, 65,222, 42, 8, 70, 19, 74,225,171,251,123,238,239,110,200, 62, 17, 75,225,116, 58,145,124,160,
+115, 13,254, 60, 49,196,128, 81,162, 38, 23, 44,235, 29,111,127,253, 29, 37, 71,126,124,255, 30,155, 5,189,106,247, 59,142,231,
+ 19,187,187, 91, 54, 93, 75,244, 51, 41, 36,198,195, 1, 99, 45,243, 28, 80,202,213,132, 34,200,115, 36,164, 84,117, 4, 96,141,
+226,254,110, 67, 9,242,210, 73, 40,158,143, 19,164, 66, 10, 81,196, 41,214, 48,141, 35, 69,105,230, 32, 25,232,231, 92, 72, 90,
+ 88,249,206, 25, 54,141,101,242, 1, 74,193,169, 66,175, 10,219,198,161,181,101, 76,112, 40,137,199,121,228, 48,205,140,115,100,
+ 70, 24,194, 84,145, 34, 8,195,249,110,219,179,109, 36, 84,228, 48, 71,158,252, 76,166,208, 90,197,182, 49,236,156,195, 40, 77,
+142,117,172,104,160,219,181,196,156,241,193, 51, 13, 35,211, 56, 49,141, 17,231, 28, 55,119, 55,156,135, 81,120,205,214,208, 52,
+146,220,230,156,226,240,112,194,159,166, 21,161,105,173,229,238,205, 45,205,182,249, 44,180, 98,217,253, 45,169, 72,162,120,151,
+157,173, 54, 74,198,235, 57, 17, 66, 36,198, 76,211, 52,108,182, 61, 73, 75, 96,135,209,138, 20, 18,211, 48,177,187,217,112,251,
+234, 5,239,254,239, 95,248,241, 15,127, 67,105, 71,219, 56,218, 77,139,235, 29,189, 85,236,122,199,240,233,196,166,223,242,205,
+191,253,142,246,197,107,134,113, 96,120, 58, 96,138,146,241,250,113,230,111, 63,252,204, 60,156,248,253,119,223,211, 57,199,113,
+ 60,113, 30, 79,164,104, 9, 24, 14,207,103,217,125, 85,113, 15, 64,204,133, 83,144, 1,104,219, 56,246, 77,203,253,110, 75,183,
+233,105,246, 91,182, 47,239,177,109,123, 25,213,102,245,153, 66, 93, 95, 9,147,150,176, 22, 99,204, 37,152,233, 58,168, 37,139,
+ 48,204,152,139, 58, 29,181,100, 43,200, 1, 94,178, 76,135,168,226,177, 11, 92,229, 74,209,180,164,116, 85,197,248,130, 29, 43,
+107, 2, 99, 89,151,171,121,113, 48, 85,155,214,218,174, 95,249,140,175, 35,217,214,209,254,162,164,215,235, 28,224,178, 42,184,
+138, 94, 85, 53,234,248,122,239,190, 0, 81,148,190, 8,235, 74,229,179,115,165, 98, 95,212,131, 43, 78, 84,171,149,182,183, 8,
+218,174, 20,124, 23,251,213,181,107,168,138, 8,139,146,196, 75, 85,195,130, 66, 76,152, 86, 97, 27, 17, 3,154, 66, 5, 76,165,
+181,152, 64, 87,159,127,204,156,198,137,199,167, 35,126, 14,162,122,103,225,172,171, 58,242, 13, 2, 57,201, 16, 82, 90,113,204,
+ 62, 70, 82,209,120,159,136, 62,145, 67, 33, 69,120, 60,123, 62, 60,159,249,116, 60, 75,241,108, 28,173,113,184, 90, 0,231,162,
+241,161, 48,205,137, 97, 74,100, 36, 29, 46,198, 12,218,225,131,175,118,188, 82, 87, 48,162,186, 46, 85,148, 41, 35,226,114, 89,
+ 71,202,162,191,238,214, 85, 37,156, 73,161, 99,205,133, 73,175,170, 18,254, 10, 98,183,178,245, 83,254,194,175,141,149, 16, 33,
+ 64,105,129,162,217,250,252,167, 42,236,180, 74, 11,165, 45, 37,166,105,164,113, 26,221, 84,203, 94,206,132, 36,187,245,117,205,
+ 82, 45,185,203, 33, 29, 98,172,140, 0,121,127, 25,173, 4,192, 86, 63, 23, 85,183,114, 21,251, 86, 99,104,115,253, 29,178, 40,
+216,201,107, 24,205,178,186, 41, 21,237, 27, 99,228,248,124, 66,107,187,126, 86,173, 53, 93,211, 48,214,181,160, 86,154,162,141,
+176,246, 23, 53,253, 21,213,112,141,157,173,182,201, 37,173, 79, 27, 35,133, 70,204, 53, 26,151,202,216,173,241,138, 70,107,218,
+174, 3,229, 24, 79, 3,211, 60,177,185,221, 9, 30, 48,165,117,119,150,138,224, 81, 75, 41,140,195,128,107,173,236,124, 66,148,
+119, 78,181,180,165, 34, 47, 8, 85, 42, 79, 55, 75,250,206, 52, 78,140, 62, 84,181,189, 40, 24,115, 46,116,141,176,112,173, 53,
+ 52,157,227,227,211,145,217,207, 18,103, 89,119, 42,166,102,252,138,217, 94, 99, 91,135,247,103, 14,199, 35, 41,200, 97,110,171,
+240, 35,148,196, 92,164,208, 48,218,176,177, 86,178,105,149,132,202, 68,171,201, 74,161, 83,228,237,139, 59,121,144, 82, 38,196,
+196, 60,121,172,147,241,156,159,166,122,195, 45,162,141,204, 87,191,254,158,219,251, 59,126,252,225, 31, 40,228,144,232,218,134,
+168, 68,241,222,223,236,121, 62, 62,209,109, 58,134,233,140, 9, 50,150, 12, 99, 64,105, 43,195,168, 34, 19,129, 66,145,202,150,
+204,203, 23,183,108, 27, 71,142, 1,101, 52, 15, 71,207, 48,137,222,129, 28, 49,173,101,154,194, 58,178, 58,249,200, 24,193, 23,
+181,130, 47, 54,157, 88,193, 38, 31,112,170,176, 49,178,242, 48, 70, 51, 39,137,106,253, 56, 12,156,103, 47,113,176, 85,109, 47,
+ 52,175, 5,217, 89,184,221,201,200,221, 40,205,228, 35,159, 78, 35, 1,232, 26,195,206, 89,122, 83,189,171, 9, 66, 85,143,246,
+219, 22,215, 53,204, 33,113, 58, 13,204,147,175,177,185, 18,120,112, 62,143, 76,126, 70, 91,141,179,134, 77,215,176,233,122, 14,
+ 15, 39,166,211,176,118, 73,174,117,220,189,125, 65,187,233,214,248,201, 37,110, 81,153, 26, 37,169,245, 21, 41,237, 42, 57, 44,
+103, 66,136,164, 44, 73,127, 93,215,161,181,196,249, 42, 99, 8, 41,114,122, 62,209,239,182,188,122,243,138,247, 63,252,149,119,
+127,250, 43,195,232,217,184, 6,109, 12,155,221, 22,235, 20,119, 93,195,116, 60, 96,125,224,219,223,255, 11,119,223,127,207, 56,
+ 14,156,159,159,209, 58,147,231,196,120,138,188,123,247,145,135,167, 71,126,253,237, 47,184,221,110,120, 60, 60, 51,140, 35,195,
+ 56,145,117,207, 97, 62, 73, 87, 61, 7,129, 53, 35, 69,231,121,246, 76,165,208,116, 29,157,147, 46,125,211,182, 52,187,158,205,
+171, 59,108,223,226,172,132,209,148,138,131, 93, 94,134,162,250, 55,255,127,216,206,138, 48,213,151, 81,102, 45,108,175,133, 76,
+159, 5,117, 44,241,167,229,162,168, 95,186,213, 69, 65,188,112,191,215,252,117,214,120,135, 5,224,190, 10,220,174, 85,208,133,
+ 5,160,162,185,200,149, 46,202,221,207, 32, 53,245,231,172, 43,133,242,133, 34,255,234,179,171, 10,127, 17, 7,132,190,242, 68,
+171,207, 70,160,171,162,126,217, 99, 47,135,198,146,138,182,252,206,185,172, 59,117,181, 30,166,233, 98, 16,186, 58,236, 37,223,
+188,142,223, 21, 43, 95, 61, 43,177,248, 77,163,199, 88,141,179,170,238,235, 21, 58,178,102, 58, 80, 50, 49, 4,198,201,243,124,
+ 26,248,249,241,145,113,152,176, 74,132,166, 57,101, 82, 72,235, 94, 56, 37,153,142, 37, 96,138,129,105, 14,162,245, 9,137,201,
+103,166, 41,212,162, 5,142,231,145,231,243, 72, 74,133,189,107,104,172, 28,210,195, 56, 18,131,176, 54,130, 79,132, 41,146, 99,
+ 89,226,197,165, 64, 73, 10,231, 44, 83,240, 43,235, 63, 84,171,109,168,124,139, 84,138, 88,221,202,234, 78,148, 48,147, 26,144,
+ 99,180, 90,109,138, 74, 73, 10,155,185, 2,207, 44, 23,178, 49,210,160, 73,126,142, 90,228,125,151,132, 64, 35,215, 63,196,184,
+ 66,145,148, 8, 71,200, 69,138, 12, 83, 25, 21, 37,231, 53,222,212,104, 93,207,157, 82, 11,179,117,144,181,190, 75,196,194, 88,
+149, 34, 85,191,149,115,193,167,112,217,109, 43,174,238,227, 11,217, 48,175, 68,186,218,252,212,223,125, 17,122, 94,138,146,197,
+154, 12,227, 48,201,170,192,185, 90,168, 40,172, 85,156,230,161, 18, 84, 21, 69,187,170,166, 55, 23,153,197,213,114, 63,215,156,
+ 13, 83,195,111, 98, 77, 50, 45, 64, 10, 17, 82,150,115, 66,235, 26,129, 88,146,204,236,157,136,219,134, 65,188,217,221, 70,162,
+ 46,115,140,178,111, 81, 74, 94,220,141, 19,127,106,202,184,214,146, 67, 88,111,130,162,145, 20,159,138, 58, 21, 27,140,116, 2,
+ 93, 35, 76,244,113,154,196,235, 9,248,152, 48,202,209,247, 45, 74, 41,218,182, 97,142, 51, 31,158,143, 56,237,176,141,195, 87,
+101,188,169, 41,159, 5,133,181, 45, 86, 89,158,158, 79, 60, 63, 31,201, 5,108,202,168, 32, 98,132, 89, 21, 66,221,229,180,206,
+ 94, 42,179, 58, 54, 73, 74, 81, 82,230,102,219,179,191,223, 19,147,140, 32,253, 20,152,199,132,117, 13,115,242, 76,243, 9, 87,
+ 36,173, 76, 41,205,254,238,142,239,126,255, 59,158, 30, 30, 57, 29, 15, 88,109, 24, 15, 39,218,205,134,156, 13,221,118, 71, 82,
+137, 97, 28,184,189,217, 49,158, 78,152,214,144,131, 84,232, 89,105,114, 86,196,217, 11, 8,167,222,240,157,213,220,223,237, 41,
+ 81,154,159, 41, 37, 62, 62,157,197,226, 17,102, 26,103, 8, 37,227,231,128, 54, 13,231,144, 56,133,200,144, 37, 88,165,144,233,
+172,163, 45,134,121, 10, 88, 10, 27,167,216,219, 6,163, 12, 83, 44, 60, 77,158, 79,195,200, 60, 39, 50,154,137,194,100, 50, 89,
+129, 69, 11, 35, 64, 41,110, 55, 45,119,155, 86, 48,138, 41,241,112, 30, 56, 77,145,155,174,101,223, 58,122,173,209,149, 23, 48,
+ 71, 81,213,182,141,165,177,118,181, 8, 77,115,224, 60,204,132, 88,104, 58, 7,170,240,240,124,144,157,118, 61,228, 59,103, 5,
+193,123, 26, 68,204, 68,193,244,142,219, 87,247,180,125, 87, 65, 86,170,234,148,170, 55,247, 10, 1, 43, 64,143,154,107, 93,213,
+160,193,139,119, 21,173,233,186, 6, 99,101,191,104,180, 33,133,192,243,249, 64,219,111,120,249,246, 45,159, 62,126,226,231, 63,
+253,131,199,199, 51,182,223, 64,130,110,187,193, 54,134,109,227,152,231,192,116, 58,241,237, 63,255,138, 95,252,238, 55, 76, 57,
+ 49, 60,127,164,132,137, 66,226,124, 24,249,225,221, 35,127,251,233,103,190,251,250, 43,126,249,230, 45, 79,135, 39,233,228,135,
+145,156, 59,142,243, 92,215, 66, 25,170,202, 62, 41,113,117, 60,207,129,182,239,232,219,134, 23,187, 13,251,109, 71,191,223,112,
+243,250, 37,237,126, 39,137,131,181,179,212,106,233, 50,242,149,124,231,243,140,113, 57, 4,210,133,134,181,116, 25,245,254,184,
+120,185,235, 33,157, 19,203, 91,253, 18, 37, 90,119,245, 57,173, 42,123,177,199,177,118,189,178,195, 94, 40, 98,215,228, 72,181,
+166,129,201,203,112, 97,123,219,250,125,233,245,239, 89, 66, 61, 20,215,169,106,101,141,111, 93, 15,252,207,104,113,215,255, 93,
+246,173, 90,153, 10, 9,209,171,109,110,241,199,171, 43,187, 92, 81, 23,164,171,186, 18,109, 93,143, 12,174,135, 9, 75,186,228,
+234,231, 79,249,242,239,175, 18,192,202,122,208, 71, 74,150, 9, 80,206,133,174,149, 16,169, 92,100,156, 30, 99, 36,133, 44,144,
+ 45,159, 56, 63, 79, 60, 29,206,188,251,116, 38, 71, 67, 83, 53, 44, 33, 4,230, 74,162, 43,245, 0,245, 49, 49,231, 76, 40, 48,
+167, 68,138, 5, 63,103,130,135,217, 39,150, 42,236, 52,141, 60,143,103, 64,210, 17, 29,138,243, 52,115, 28,103, 6, 31, 25,125,
+ 36,132, 12, 69,209, 24, 39,240, 34, 52,166, 50, 4, 38,159,132,246, 22,242,154, 80, 55,251, 76,136,133,209, 7,142,211,140, 79,
+145, 16, 11,114,142, 44, 89,222,226, 99, 95,190,127,153,150,136,191,221,233,186, 78, 85,122, 85,122, 95,159,239,105,229, 33, 92,
+ 98,100, 75,197,220,106, 37, 16,179,156,235,138,169, 78, 42, 65,130,191,180, 54, 52,125,135, 15, 2,238, 82, 74, 99,173,190,244,
+183, 41,201, 33, 90, 89, 36,215,156, 3, 65,139, 35,220,245, 58, 53, 46, 33,227, 26, 87,201,114, 95,100,207,215,119, 78, 94, 44,
+148, 85,121,169,245,165,177, 47,213,185,178,106, 56,106,234,221,225,116,102,158,189, 48, 51,172,140,204,173,117, 36,159,235,187,
+ 10,108,103,165, 64, 81, 11,233,175, 92,194,133, 22, 43,161, 22,239,191,216,254,214,228, 23,113,140,200, 59, 85, 94,132,185,166,
+142,181,109, 87, 59,247,194,120, 24,104, 26, 75,219,119,144, 33,156, 7,138,145, 95,170,235, 59,116,163,137,179, 95, 3, 52,114,
+242,168,186,167, 88,150, 15, 42,137, 26,210,212,177, 76,235, 26, 90,235,120, 60,158,152,231, 80,199,116,154, 41,196,186,123,118,
+116,109,195,182,235, 56, 60,158,120, 58, 30,113,182, 17,149,123, 12, 52,198,138,136, 65,137,196,205, 89,203,236, 61,143,135,103,
+ 74, 86,100, 45,128, 21, 63,207,132, 12,161,186, 72, 12,138, 70, 27,169,164,163,236,247,162, 19,159,100, 59,103, 94,223,222,163,
+ 27, 75, 12,129, 16, 18, 97, 74, 20,149,176,206, 50, 71, 79,156, 11, 78, 41, 97,222,107,205, 55,191,249, 13,214, 54, 60, 62, 60,
+160,181, 99, 28, 39,146, 82,180,125, 79,179,221, 50,167,196,249,116,102,187,221, 64, 10,204, 7, 81,239, 79,211,132,181,154,144,
+178,216,238,194,188,200,127,208,214,112,247,242, 6,189,236, 12,173,226,227,243, 64, 76, 30, 93,162, 20, 50,198, 48,204, 81,212,
+197, 73,113,154, 18, 83, 78,136,126,191,212,235,107, 25,188, 39,215, 3,126,223,244, 24, 10, 49,102, 30,142, 19,255,120, 62,227,
+ 67,198,160, 37,201,173, 20,116, 86, 88,148, 60,124, 5,246, 93,203,139,125, 79, 99, 37, 97,236,121,152,120,127, 24,185,217,117,
+220,109, 90,122, 99, 80, 20, 66, 46,178, 95,175,185,203, 93, 83,167, 55,179, 36,217,161, 36,180, 36,148, 32,244, 37, 12, 38,101,
+185,190, 73,147, 82,225,211,227, 19,231,231, 19, 41,102, 74, 6,235, 44,183,247, 55, 52,251,150, 82,164,163,201, 75,234, 85,214,
+232, 36,106, 88,165,107,119,112,229,118, 38, 65,152, 61,209,203,110,172,107, 90,121,177,214, 80,139, 28, 11,195,241, 76,151, 27,
+ 94,125,253,150, 48, 14,124,252,227,159, 56,127, 58,161,141,248, 91,109,239,232,182, 29, 93,163,113,100,166, 97,226,235, 55,111,
+249,197,191,255, 27,186,105,152, 63,126,194, 31, 14,162, 22, 31,224,253,135,103,254,244,247, 31,121,243,234, 21,255,244,245, 27,
+158, 79,207,156,199,129,105, 56,227,125, 97, 76, 34,114,106, 49,164,113,150,131,203, 24,166,201,243, 60,157,104, 55, 13,109,219,
+112,211,181,220,246, 45,221,182, 99,243,230, 5,253,253, 45,186,145, 0,144,117,155,125, 53, 53, 94, 64,166,210,141, 94,130, 89,
+114,190,196, 20,171,122,184,149,202,177, 38,229, 47, 80,170,121,245,163,203, 93,184,240,211,107,252,231,210, 37,215,148,176,242,
+133, 34, 61, 47, 73,108,117, 76,168, 10,159,101,164,127,158,159,174, 87, 75,156,186, 10,101, 89,254,254,101,215,190, 22, 22,255,
+133, 32,111, 21,163,149,171,252,246,148,107,252,238, 21,154,182,124,126, 72,107,181,100,112,179, 78, 25, 62,243,226,171, 43, 96,
+207, 23,191,135, 90, 4,116,215,104,177,245, 26, 84,181,122,172,135,190, 42,228,144,152,199, 64,239, 68,240, 24, 83, 33,204,145,
+217,143,156,198,129,211,233, 72,154, 2,222,103,206,163,231, 48, 68,156,109,217,152,158, 48, 7,230,105,102, 14, 85,177, 94,211,
+ 26,131, 23,247, 78,164,160,178, 22, 44,168,146, 48, 38,239, 11, 49, 20,230, 57,241,241,124,230,227,113,164, 4,141,202,154,211,
+ 20,120,127, 62,115,240, 51,185,106,118,140,177,104, 45,123,231, 72,196, 23, 79,206, 9,163,108,189, 39,162,228,140,167,234,124,
+ 72,129,146, 52, 57, 9,128,170, 49,212, 56,232,200,121,172,171, 59, 31,197,158,168,107,191, 93, 11, 58, 99,228, 63,202, 24, 17,
+ 88,171,250, 51,107,161,103,140,198,168,166, 82,211, 22,255,188,144, 21, 75, 41,216, 90,124,121, 47, 4, 53,189,230,196, 75,103,
+157, 82, 18,180,183, 18,219, 87,231, 26,201, 79, 48, 70, 58,223,156,177,186,173, 63, 92,206,162,107,145, 99, 73,153, 18, 68,116,
+109,156,140,180, 99,140,194,217,176,246,130,171, 89, 39, 78,139,255, 93,215, 4,198, 11, 73,113,177, 53,166,148, 68, 88,184, 76,
+156,170,194,114, 26,103, 78,207,103,186,182,165,177, 77, 21,213, 89, 20,134,217, 75,222,134, 41, 26, 99,155, 11, 89,174,176,114,
+ 20,116, 81,171,117, 81, 85,175,126,142,177,126, 6,133, 79,137, 41, 6,236,226,187,148,139,211, 98, 27, 43, 85, 80,134,113, 56,
+209,116, 61, 77, 43,222,186, 57,200, 62, 91, 23, 45,116, 27, 99, 8,222, 67,181, 4,204,167, 40,149, 75,229, 79,235,144, 48,169,
+ 86,144, 86,192, 14, 93,215, 98, 52,156,142, 3, 33, 95,168, 86,211, 60,113,187,121,129,237, 91,186, 77,143,210,154,167,243,137,
+ 24, 50,219, 27, 33, 4,165,146,177,206, 98, 74,198, 3,197, 26,148,177, 12,231, 19,167,131, 4,200, 88, 37, 85, 99,160,144,141,
+ 17,150,125,129, 70, 45,177,124, 73, 70, 84, 70,145,140,193,133,200,214,194,203, 23,123, 74,137,196,156, 25,166, 72, 72,139,202,
+ 93,145,230, 9,159,197,171,105, 82,225,229, 55,223,240,205,239,126,203,143, 63,252, 64,152,133,158,119, 56, 62,179,223,245,236,
+ 94,222,146,173,230,241,221, 3,205,109,199,205,247,111, 57, 28,142,148,198,146,172,193,143, 19, 56, 81,198,250,152,200,169,250,
+140,181, 68,146,246,219, 94,208,157,218, 48,204, 51,159, 30, 7,122, 11,196, 32, 17,129, 81, 17, 2,244,198, 50,248,153, 49, 71,
+230, 2, 41, 43,180,129,198, 25,114,168, 4, 34,163,216,183,154, 78,107,202, 28,121,255,116,226,199,243, 40,227, 91,171, 25, 13,
+204,245,133,175,169, 86, 18, 96,219, 58,238,183, 45, 91, 43, 96,161,227, 48,243,243,105,102,179,105,121,117,179, 99, 83,149,245,
+115,138,132, 40, 5,136, 51,154,206, 85, 63,124, 46,132,146, 46,214,159,218, 83, 14, 83,160, 47,213, 98, 87, 96,158, 38, 98,244,
+232,152,233,140, 67, 55, 64, 3,253,205,134,206, 90,114, 72,152,170, 45,214,186,102,117,171,140, 42,102, 77, 33,171,138, 42,217,
+243, 21, 81,240,198, 40,135, 67,219, 53,180,125,179,190,217, 99, 12, 28, 31,158,209,185,112,247,203,215,104, 50,239,254,240, 87,
+142, 31, 70,124, 18,187,149, 63, 79,220,190,126, 67,211, 22, 26,147,153, 14, 71,238,110,110,248,229,127,255, 29,155,187, 87, 60,
+127,250,137,231,199, 79, 34,198,153, 18, 63,127, 56,241,135, 63,255,141, 23,251, 29,255,237,155, 95, 48,159,143, 28, 79, 79,248,
+ 97,228,124,156, 57, 99,153, 73,236,157, 35,206, 19,201,123,180,213, 12,193,139, 0,180,111,233, 55,142, 91,103,185,219,108,104,
+123,113, 83,108, 94,221, 82, 42,222,183, 92,217,171, 74,206, 21, 3,121, 5,153,190, 94, 73,231, 85,204,190,114,213, 87,173, 23,
+234, 51, 49,154,160, 92,203,218, 41, 93,186,207,171, 52,171,149,130,190, 52,251, 85,193,125,125,186, 85,209, 90,169,147,129,203,
+ 33,156,214,207, 40, 49,180, 97,157, 36,104,189, 86, 32,235, 56,126,165,173,173, 74,122, 25, 53,171, 47, 68,117, 80, 9,146,138,
+213,174,166, 20, 87,227,208, 47,233,115,101,237,184,117,245,208,231,171, 16, 22,165, 46,191,127,169,157,227,245,207, 90, 71,253,
+229,178,202, 40,149,127, 46,224,171, 44,194,166, 98,200, 69,225,167,145, 28,206, 52,237,158,232, 19, 33,206,196, 36,207,187, 15,
+158,232, 53,174,105,153,138,226,121, 30,200, 40, 26,165, 56,156, 7,185,231,147, 66, 71, 57, 32, 83,141, 56,157,124, 96, 78,176,
+215,138, 82,102, 66, 22,212,117,170,182,222,121,156, 25, 66, 38,199,137,187,187, 45,174,107, 57,248,137, 86, 27, 90,107,209, 70,
+138,146, 20,165,184, 47, 58,202,122,180,138,175,208,114,144,198,180,240,204,203,234,127,142, 89,166, 25, 83,201,196, 40,172,122,
+107,193, 68, 17,221,165,146,137, 73, 17,147, 96,251,157, 18, 75,199,197,146, 47, 5, 85,227, 28, 41, 9,172,117,181, 21, 34, 22,
+198, 56, 37,177,180, 85, 82,175, 54,178,179,215, 73,116, 8, 49, 85, 18,155, 54,245,254,147, 21,109,140, 81,116, 76,182, 33,198,
+132,107,219,234,195, 95, 98, 99, 5,241,119, 17,103,170, 75, 96,209, 66, 28, 91, 64, 67,186, 65,169, 80,109,105,224,156,173, 89,
+ 4,203, 65,170, 68, 51,186,218, 58,101,186,205,146, 43, 97,244,197,137, 96, 21, 43,177,167, 86,226, 74,107, 78,211,153,215,230,
+ 94,246,236, 37,161,170,174, 55, 76,190, 22,187,137,198, 58, 17, 61,198, 10, 22, 90,169,144,122, 93,105,176,222,167, 21,164,166,
+ 4,173, 91,124,196,154,182, 93, 71,106,206, 58,140,115, 24,107, 9,126, 98, 28, 39,110, 94,221,201, 8, 52, 4, 82,240,107,144,
+139, 68, 8, 58,226, 52,215,221,131, 37,197, 34,200,224, 12, 58,102, 74, 8,152, 84,106, 8,130,116, 4,206, 73, 5, 56, 76,115,
+221,133,105,124,242, 68,160,239, 26,186,190, 99,183,219, 50, 30,158,120,126, 30,176,173,195, 89, 71, 8, 81, 58,101, 93,189,146,
+104,108,211,128,206, 28, 15, 71,185,249, 74,102,103, 27,210, 4, 25, 35,135,186, 2, 87, 41, 76, 74,107,188,159,136, 5,138,117,
+168, 12,206, 39, 54,175,239,104, 55, 59,202, 92, 8,163, 39,120, 57,168,230,156,120,209,183, 28, 62, 29, 37, 37,171, 20,246,175,
+223,240,205,175,127, 69, 24,103, 30,223,189,231,230,171,151,124,250,248, 9,171, 52, 47,222,190,193,117, 91,222,191,251,153,225,
+116,228,238,219,123, 90,215,240,240,116, 96,187,221, 50, 14,103,176,134,160,101, 71,159, 39, 95,181, 6,242, 32,221,222,108,112,
+104, 74, 12,168, 70,243,243,195,137, 66,148,148, 92,173,136, 74, 49,134, 8, 24,124, 44, 76, 57, 49, 18,136, 69,190,244,198, 25,
+121,113,105,249, 14,182,202,178, 55,134,224,103,126,122, 60,240,143,199,145, 98,165,104,243, 26,166,170,122, 94, 69, 63, 90, 4,
+107,183,187,142,155,206, 18, 83,230,228, 19,135, 73,198,254,111,238,246,220,118, 22,171, 52,195, 60,227,131, 28, 10, 86,105,122,
+ 39, 97, 21, 33, 70,177,171,212,236, 95,171, 21,173, 53,148,162,152,166, 73,160, 22,214,210, 25,195, 28, 60,113,148,196,190,228,
+ 50, 91,219,177,239,118, 96, 29, 67,204,168, 44, 66, 61,157, 36,103,219, 58, 71, 49, 26,107,171,136,164, 24,140,174, 52,166, 2,
+161, 82,255, 74, 22,161, 88,219,183,178,167, 1, 76,204, 60, 62, 29,152, 83,224,205,155, 55,180,173,227,231, 63,254,200,225,227,
+ 3, 99, 8,132,148, 8,243,196,230,229, 45,109,215,176, 49,138, 56,142, 52,174,229,187,223,255,142,155, 95,255,134,233,233,137,
+199,247, 63,226,180, 66,199,194,167,199,145,255,249,167,191,208, 53, 13,255,237,251,111,200,233,204,211,233,137, 52, 78, 28, 14,
+ 3,207,190,144, 45,108,187,150, 20, 60,254, 60, 98,180,194,167,204, 97, 28, 41,141,161,221,117,180,206,114,223,181, 18, 95,123,
+127,199,237, 87, 95,161,140, 91,119,131,107, 26,153, 82,164, 74,141,186, 78, 92, 91, 56,219, 57, 93,198,138,234, 51, 37,120,213,
+120,105,181,162, 80,175,193, 51,165,138,126,214, 23,222, 34, 36, 83,117,239,152, 46, 81,153, 84,168,199,197, 23,190, 8,232, 46,
+ 48, 24,245, 37,121,189, 44,160, 14,181,118, 47,139, 53,140,107, 75, 92,206, 43, 71,251, 51,127,112, 41,159,103,167,151,139,144,
+109, 45, 66,106,232,201,194, 93, 95,198,244,170, 10,242,202, 23, 44,120, 93, 19,251,174,237,120, 75, 34,214,133,243, 93, 62, 27,
+199,151, 43,104,138,174,162,193, 92,150,124,241, 58, 5, 77,145,249, 60, 67,110, 73,169,174,158,130, 8,117,133,182,218,160,140,
+ 98, 82,137,167,195,192,228, 19, 14,197,227,116, 34,135, 72,103, 90,116, 66,222, 81, 41,147, 85,170, 99,213,178,190, 7, 82, 20,
+157,208, 92, 50, 42, 55, 96, 13, 57, 5,250, 70, 99,247,251,138, 22,245,108, 91,105,188,114,201, 76, 49,144, 66,194,199, 10,195,
+ 81, 50, 18,214, 43,195, 0,108,129, 57, 69,154,182, 66,101,150,131, 80, 75, 97, 49,175, 93,161, 92,148,174,107,185, 37, 50,206,
+158, 24,197, 86,107, 53,100, 91, 49,191,213, 98, 85,148,116,210,141, 82,204, 85,171,179, 16,251,172, 86,146, 20,121,165,153,200,
+ 57,211, 58, 39,118,187,166, 42,189, 99, 93,227,174, 60, 96, 17,188,165, 34,194,215, 82,153,242,146, 42, 42,197,136,169,121,235,
+102, 89, 51, 85, 13, 86, 73, 98, 9, 46, 69,161,114, 70,229, 68,113, 5,109, 45,196, 74, 43,205, 18, 18,179,236,209, 75, 53,211,
+ 43,117,113, 59,196,188,120,237, 75, 5, 45,233, 10, 77,202,216, 98, 42,164, 76,173, 36, 64,163, 36,181, 45,230, 34,194,115,159,
+235,104,222,224,195,188, 90, 50,173, 49, 56,109,136, 74,238, 95,123,165, 65,144, 2, 85, 95,176,203,229,130, 40, 46, 10, 98,142,
+ 88,235, 28,201, 75, 37,105, 27, 9,179,112,109,203,241,225, 1, 63, 12,108,183,223,224,154,134,225, 60, 86,186,143, 66, 57, 69,
+191,223,146,195, 76,158, 37,156, 62, 86,202,212,242, 96, 40, 81, 78, 85, 43,130, 94, 71,135,214, 26,230,243,200, 84, 71,224, 74,
+107,102, 47,126,210,126,211,177,223,239,104,187,150,159,222, 13, 60,156, 14,108,250, 30,171, 21,227, 28,217,110, 90,148,146,145,
+111,169,193, 3,243, 48, 49,140, 3, 33, 39,130,130,219,219,158,247,199, 35,217,136, 47, 17, 36, 27,221, 25, 39,163,217, 20, 37,
+167, 93,131,245, 9,151, 51,155,253,158, 84, 1, 37,126, 20, 46,124, 46,153,182,149,138,201,207, 51, 49,122, 58, 99,248,246,247,
+255,196,246,254,142,191,255,245,175, 98,213,112,142,167,195,145,251, 23, 47,184,127,241,130,135,135, 71,206,135,103,116,103,185,
+185,191, 37,142, 19, 62, 4,110,250,150,195,207, 7,140, 49, 28,207, 18,247,153, 23, 66,146, 82,220,244, 13,251,205,134, 18, 3,
+198, 24, 14,231,153,135,231, 51,187,166,129, 28, 65, 27,230,152, 8, 89, 4, 40,158,194,152,146,132, 66, 64,181, 34, 58, 26,109,
+ 48, 21, 50,179, 49,138, 56, 5,126,126, 62,241,227,211,137,100,172,132,177, 24,133, 71,118,232,153,130, 45,178, 67,223, 52,150,
+219,109,203,190,115,228,162, 24,252, 44,163,126, 99,120,211,181,220,110, 26,122,103, 25,230,128, 15, 97,101,133, 55,206,210, 52,
+ 78, 14,114, 47, 10, 6,163,107,144, 2,138,190,211, 40, 43, 35,202, 97,242, 56, 99, 48,125,131,174,113,162,177,226, 81,199, 16,
+176,227, 68,177,150,216,181,130,173,172,227, 59, 84,161, 73, 65, 30,180, 82, 42,136, 94, 65,142, 34, 82,140, 81,184,252, 69,132,
+152,109,223, 95, 68,116, 89, 14,244,225, 60,241,234,245, 43,246, 55, 55,124,248,241, 71, 62,254,227, 35,211, 40, 34, 28,239, 61,
+ 56,195,246,166,167, 55, 26,124, 68,249,196,175,254,159,127,225,171,127,249, 45,100,197,195,195, 15,152,226,113,186,231, 60,102,
+254,207,159,255,193,121,158,249,143,127,250, 21,157,211,188,255,249,192,236, 61,231,227,200,211, 97, 98,180,142,155,182,197, 32,
+152, 99, 74,198, 23,120, 30,207, 12, 37,115,179,223,211, 53,142,155,190,163,235, 59,186,155, 45,183, 95,189, 69, 57,139,174, 36,
+188, 85, 76,182,176,190,235,119,102,174, 4,102,215,202,240, 53,191,124,237,150,115,237,104,229, 69,154,175,109, 99, 85,217,189,
+ 20, 13,170,228,149, 62,150,139,236,216,117,221,231,138,239,188, 92, 41,234,243,106,241, 50,168,139,207, 91,113,101,175, 91,199,
+ 5,117, 37,103, 46,197,194,213,232,221, 44, 99,205, 90,180,112,117,208,234,171, 81,188,254,226,192,231,154, 30,151, 43,174,243,
+179, 80,151,229,255, 35,123,217, 5, 18,179, 22, 32, 21, 86,130,174, 62,243, 58, 9, 89,127,135,101,138,176, 92,235, 10,232,145,
+221,186,252,115, 74,153,152, 36, 46,151,162,153, 78, 19,211,232,229,154, 70,152, 83, 38, 6,133,209, 86,196,196,177, 48,197,137,
+227,243,153, 97, 22, 4,118, 72,226,114,113, 90, 64, 79,165, 84, 49, 90, 10,180, 86,175, 73,113,166, 42,183,135, 92,240, 33,163,
+ 92, 97,187,235,104,155, 13,190,117, 98,115,243, 51,155,126,195,126,215, 18,162, 28,196,126, 10, 12, 99,160,228,184,118,166, 11,
+ 17, 84,236, 80,145, 92, 22,230,135, 56, 69,180, 81,171,102, 80,107, 77, 81,145,148, 99, 13,223,146,162, 58,229,136,115, 26,231,
+ 58,206, 67, 96, 10,153,152, 75,221,133,215,235,167, 76, 37, 59, 10, 93,206,104, 8, 73,118,197, 40,133, 85, 6, 82, 77,179, 91,
+100,156,229,106,114, 84, 15,241,188,116,192,106,217, 41,139,118, 70,146,211,140,184,132,170, 91,198,123, 89,113, 25,101, 46, 19,
+167,165,179, 54,124,230,102,200,213, 34, 92,116,221,211,107,161, 28,150, 34, 49,185,101, 65, 0,107,181,118,199,139, 46,163,148,
+194,114,186,169,154,214, 22, 43,204, 71,160, 54,130,245,174, 87, 4,148, 98,152, 38,252,228,113,206,162,244,188,238,223,231,217,
+ 95, 10, 23,181, 80, 60, 77, 13,166, 41, 92, 30,131, 34,162, 89, 29,170,198,198, 92,198,255,149,173, 96,141, 49,248, 20,133, 68,
+211, 56,140, 53, 88,109,152,206,103,124,140,180,109, 75,211,182, 60,249,153,152, 34,218, 58,148,134,190,237, 68, 66, 31,103, 92,
+183,147,208,249,148,215,139,152,151, 67, 94, 38, 59,210,189, 87, 1,214, 60,143,140, 65,168, 68, 74,107,230, 42,152,218,237,182,
+220,236, 55,228, 16, 57,158,206,228, 58, 2,153,115,194,199,192,171,246,166, 90,128,192,182,134, 86, 89, 30,198, 19,227, 52, 51,
+132,137,219,237, 13, 78,105,162, 82,228, 70,170, 44,179,136,101, 76, 77,215,169, 10,106, 29, 18, 54, 68,218, 78, 70,158, 74,103,
+230,113, 38, 76, 1,181,177,164, 57, 99, 90,177,157, 5,239, 73, 41,243,203,223,254,134,151, 95,189,225,225,225, 19,195,233, 76,
+187,233, 57, 60, 63,131,209,188,252,234, 45,227,249,204,233,120,148, 93,178, 51,108,182, 59,142, 63,191,199,181, 14,221, 26,230,
+ 97,196, 53,150,225, 44,121,227,148,140, 50,146, 88,119,179,219, 44, 51, 29,116,227,120,120, 62, 75,133, 91,227,254,124, 74,132,
+ 34, 15,154, 45, 16, 84,230, 28, 34, 89,203,161,231,140,193, 58, 75,131, 34,121, 79,171, 21, 42,122, 62,156,102, 30, 78, 19,222,
+ 24, 48, 6,156, 64, 32,226,146, 51,140,136, 46,182,109,195,109,223,112,211, 57, 26, 5,167, 57, 48,121,177, 56,222,110, 55,220,
+246, 13, 47,110, 54,140, 83, 96,242,115,189,145,132, 88,215, 53,149, 17,157,146, 20,125,117,204,151,234, 67, 57,199, 72,163, 11,
+ 59,235, 24, 18, 76,231, 1,130,167,119,150,174,113, 40,107, 68, 24,162, 68, 25, 31,125,164,219,239,105,250,142, 16, 68,215, 96,
+140,150,104,212, 50,210,117, 45, 93,223,209,244,160, 85,170, 93,122, 32,167,130,113, 78,244, 30, 70, 58, 92, 91, 52,167,227,129,
+243,233,204,221,221, 45, 55,183,183,140,227,145, 79, 63,252,196, 92,163, 87, 99, 12, 76,163,231,197, 47,238,233,157,193, 36,121,
+ 1,126,243,235,239,248,246, 95,126,131,234, 29, 15,127,255, 27,211,112, 98,171, 27,194,164,248,227, 31,223,241,241,112,224,247,
+223,125,199,139,109,195,135, 79, 31,240,179,103, 30, 60, 31, 31,207, 60,231,194,139,237, 70,160, 20,243, 68,142,129, 80, 10,199,
+113, 98,206,137,205,182,167,107, 44,183,109,203,190,237,104,247, 27,238,191,126, 75,187,237, 41,198,226,156, 36, 39, 10, 34, 84,
+215,148, 16, 93, 97, 51,162,200, 49,230,243,160, 19, 85, 71,125, 57,151, 53, 56,178, 32, 41, 83, 75, 94,247,117,246,184, 86,234,
+202,234,163,170,173, 40,215,241,232, 98,245, 42,171,255,182,168,242, 89, 30,251,170,160,175,220,229,114,213, 17,171,171, 28,115,
+ 73,219, 42,107,145, 33, 7, 69, 89, 59,250,117,191, 89,223, 27,234, 58,172,229,139, 46,253,218, 31, 95, 86, 68,238, 10,165,254,
+175,187,249,122,167, 47,197,193,197, 32,183,120,228,213,138, 16,189,230,135, 45,236,245,148,243, 26,165,153,243,197, 18, 23, 66,
+224,124,158,106,106,163,208,131,134,115,228, 56, 77,244, 93, 67,138,134, 33, 72, 58,157,213, 14,101,138,208, 6,143, 19,211, 20,
+136,232,154,197, 32,244, 64, 87,147,240, 66,242, 76, 33, 97, 74, 38,105, 89, 59, 10,165, 81, 62,199, 24,164, 48,118,155,134, 55,
+111,247,148,226,120,126, 40,196, 57,200, 20,172,130,195, 10,137, 68,162,107, 12,109,179, 33,134, 76,137, 81,202, 23,163,234,250,
+160, 58, 18,148, 19,175,115, 78,108,155, 77,197, 46, 11,221, 50,101,177,165,181,141,193, 24, 86,245,123,206,114,109,172, 86,236,
+122,139, 82,145,121,142,196, 80, 97, 46,139, 26, 60, 37,166,178, 4,250, 20, 12,121, 61, 11, 22, 39,130,143, 82, 60,234, 42,158,
+212,255, 85,225, 22, 43, 42,213,152,170, 95,168, 69, 71, 35, 90, 25, 73,104, 52,213,106, 38,135,165,209,245,153, 72,101,157, 42,
+173, 58,146, 43,103, 4,250, 66,165,148, 60,247, 72, 99, 36,229,241,178,194, 41, 23,110,124, 45,134, 47, 19,170,178, 18, 45, 37,
+ 76, 38,201, 36,100, 33, 56,214,201,208, 48, 14,132,224,177,214,213,226, 89,227,140, 35,228, 89,214,177, 37, 87,232,151,128,191,
+242, 74,239, 83,117,165, 33,215,200, 26,197, 92,106,138, 96,141, 29, 23, 80, 87,194,106,173, 41, 41,209,239,182,184,166,197, 88,
+ 71, 46,153,243,243, 19, 93, 99,217,238,246,104, 13,126,242, 43, 4,223,185,134,166,109,241,231, 51, 41, 4, 54,206,145,189,228,
+150, 47, 0, 62,129, 98, 20,138,169, 59,219,133, 73,173, 18,211,232, 5, 63,139,169, 8,207, 72,215,119,220,237,111,217,246, 91,
+126,126,126,199,199, 15, 15, 88,215, 97,173,229, 52,141, 24,103,171,229, 32,163,234, 52, 33,169,196,225,120,100,244, 51, 57, 21,
+110,154, 45,179,247, 50,234, 82, 66, 4,114,213,218, 82,140, 97,158,102, 98,169,177,239, 94, 14,245,205,155, 29,155,205,134, 50,
+ 39,230, 65, 70, 35, 86,201, 40,223,105, 67, 10,158,225,116,230,118,219,243,251,127,251,119,198,113,226,241,211, 39, 92, 43, 99,
+ 30,159,103,190,254,197,215,216,198,240,199,255,241, 87,118, 55, 59,162,133,221,237, 14, 85,224,249,249,137, 87,111, 94, 49, 13,
+ 35, 77, 91, 39, 30,179,176,207, 69, 40,162,232,187,142,205,190,193,251,200,214, 24,158, 14, 3, 31,143,103,246,141, 65,149, 32,
+106,215,172, 8, 89, 70,183, 27,215,240, 49, 12,132,130,120, 79,251, 22, 5, 56,173, 40,115,194,212,206,229,233, 60,242, 52, 6,
+134, 92,200, 74,240,130, 1,152,150, 24, 39, 68,136,178,237, 29, 55,125,203, 77,231,232, 21,146, 1, 30, 18,202, 88, 54, 78,179,
+233, 44, 55,251, 13, 73,139,216, 67, 56, 31,242, 64,110,187,134,206, 26, 66, 85,193, 75, 46,178, 8,224, 74, 78,204,100,178,178,
+132, 92, 80, 77,102,219, 52,132, 32, 20,183, 18,165,250, 54,206,225,115,160,168, 66,215,117,204, 62, 80, 30,159, 69, 24,185,109,
+241, 99, 22,224,132,177,100, 2,126,152,136, 49,209,134, 88,211,145, 36,167,187,115, 45,109,219, 92,220, 28,192,233,240,192,227,
+227, 51,247, 47, 94,176,187,217,145,203,204,143,127,255,129,211,243, 72,240,129, 16, 61,167,243,137,205,126, 71,191,223,225, 74,
+ 68,249,153,215,223,252,130,111,126,255,207, 52, 47,111,120,124,255, 35,199,159,255, 78,223,221, 64,182,252,229,207, 63,243,151,
+127,124,228, 55,223,127,203,119,111, 94,243,241,195, 63, 24,199, 51,209, 39, 62,124, 60,242,241, 60,176,125,243,154,166,239,201,
+195, 64,154,103, 98,144,151,253, 41,120,186,109,199,118,179,225,166,113,220,117, 61,125,219,115,247,246, 53,253,171, 91,148,178,
+ 88,103,185, 62,103, 74,197, 97,195,235,232, 0, 0, 32, 0, 73, 68, 65, 84,174,170,122, 0, 21, 36,201, 76,192,127, 53, 3,125,
+ 1,195, 22,214,170,126, 25, 67, 94, 40,107,159,239,156, 21,185,230,139, 95,186,253,154,117, 71, 41,177,198,175,150,171,206, 62,
+ 85, 64,124, 29,123, 87,207,123,169,158,166,178,144,220, 86,156,235, 66,124,215,178, 54,208, 50,134, 92,186,232,203,207,205,151,
+128,165,181,203, 95,226, 68,213,103, 80,143,197, 46,180, 22, 39, 75,210, 92, 41,168,156,191,208, 26,212, 86,179,200,125,169,149,
+ 94,255,167,235, 2, 32,199, 92, 15, 19, 46,222,227, 42,112,202,215, 74,247,148, 43, 40, 43, 49,142, 51,143,199, 3,113,154,113,
+165,131, 40, 48,152,193, 11, 81,108, 78, 6, 63,201,231,105, 90,136, 54, 51, 28,207, 60, 61,141, 76,115, 33, 42, 17,141,181, 54,
+211,219, 14,149, 4,107,154,149,102,170,174, 2,170,247,221, 44, 89,221, 90,198,200, 78,103,154, 94,225,122, 67,215,111, 56, 30,
+ 38,114, 42, 56,173,192, 90,180, 83, 20, 18, 77,239,216,219, 14,157,162,232, 95,146,162, 4,153,142,105,171,209, 86, 99, 0,149,
+196, 54, 59,141, 65,120, 32,149, 21,162,180,198,234,194, 48,123,124, 12,116, 78,227,118,134,211,144,136,161, 50, 54,178, 34,230,
+130, 81,153,174,209, 24, 44, 67,213, 45, 21, 45,148,185, 92, 20, 37,235,122, 53, 23, 33, 93,169, 97, 79,134, 82,237,176,242, 29,
+101, 82, 73, 4, 42,205,114,225,247,167,116, 57,184,202,149, 83, 2, 9, 57, 9,117,181, 71, 91, 5,102,169,198,218, 86,132,194,
+114,160,155,170,177,162,210,238, 84,174,252, 2, 93,160,142,203,151, 48, 25,204,213,228,233, 11, 76,241,106,237,172,227,253, 21,
+ 91,189,214, 9,178, 74,146, 4,181, 84,157, 17,153,146, 12,227,121,230,254,190,114, 39, 50,107,116,116,136, 81, 82, 25,175, 50,
+ 43,150,160,159, 11,200,102,161, 9,203,223,149,150,176,151,133,194, 39,118,238, 74,213,177, 22,107, 44, 78, 91, 66,140, 28,159,
+ 78,180,219, 61,221,174,199, 36, 37, 25,233, 40,108,105,217,238,118, 56, 11, 67,244, 53, 39,184, 37, 12, 99,213,238,203,195,160,
+ 82, 18, 59, 3,181,211,168,244,175, 66, 38,204, 34, 70,192, 20,156,178,248, 18,216,246, 13, 47,110,247,180,214,242,233,211, 51,
+227,232,217,238,111,160, 88, 82, 76,244,157, 3, 10,222,103,116,107,209, 93,195,248,240,204,211,243,153,152, 10,173,115,184, 78,
+243,241,228, 9, 21,138, 80,249, 69,104, 35,127, 54, 68, 47,213, 86, 72,152, 84,176,253,134,126,191, 1, 35,208,129, 97, 26,112,
+110, 87,211,164,100,132,236,135, 51, 83,240,252,247,255,248, 15,186,219,150,247,255,235,175, 56, 35, 29,188, 15,129,205,203, 91,
+ 54,247,183,252,240,255,254,129,167,159, 31,184,185,191, 37,148,196,253,221, 45,211,249, 8, 5,182,187, 61,239,126,122,135,113,
+154,243,233, 44,170, 98, 50,198, 90, 26,109,120,177,237, 9, 81,170,102,111, 28,239,159, 14,180, 70, 66, 73, 82,242,132,172,200,
+218,225,125, 68, 27,203, 92, 34,199,144,177,214,177,217,238,106, 32, 68,161, 9,137,152, 50, 46, 71, 82, 12,156,198,153, 83,128,
+164, 46, 99,247, 80, 33, 18, 66, 12, 51, 52, 78,104,113,251,206,208, 59, 81,214,207, 49,161,173,193, 89, 25,171,223,110,123,246,
+109,195,207, 79,207, 43,113, 76,107,197,118,211,178,219, 84,103,132,247, 24, 91, 32,101, 98,181,253,104,163,100,165, 49, 7,156,
+177,140, 49, 98, 20,236,108,207, 20,138,196,233,150,140,201,133, 70,195,243,225,128,159, 54,108, 55, 91,162, 77,184, 67, 32,148,
+ 13, 93,219,225, 82,166,215, 13,222, 57,166, 16, 24,102, 81,233, 6, 63, 49,140,103, 92,219,242,242,229, 75,118, 86,145, 82, 64,
+ 41,205, 56,142, 28, 30, 31,217,108,183,108,239,246,224, 12,159,126,120,199,233,221,179, 32, 51, 99,224, 60, 14,100,165,216,220,
+108,105, 82, 68,197,153,155,251, 59,190,251,237,239,216,191,125,195,249,124,226,240,227,123, 54,205,142, 70, 59,254,252,215, 71,
+254,247, 95,126,224,171,111, 94,243,155,111,190,225,240,248, 19,199,113,160,132,204,207, 31,158,248,243,199,103, 94,190,124,201,
+205,118, 39, 52,192,148,152,194,204, 56,141,204,179,199,117, 29,221,110, 67,223, 53,220,111, 58,186, 78,115,243,213, 61,251,175,
+ 95,161,138,193, 52, 6,101,234, 75,161, 84,122,156,170,228,185, 82, 36, 58, 83, 93, 29,172, 44,233,108,249, 51, 75, 88,206,161,
+130, 41,212,170,120,191,238,120,129,213, 46,181, 76,214, 86,203, 91,201, 43, 91, 66,246,244,245, 80,205, 43, 75,109,197,173,126,
+ 54, 10, 95,237, 61,250, 42,225, 77,132, 81,230,202, 59,191,252,251,235,207, 84,234,219,234,203,207,184,160, 62,175, 61,234, 75,
+ 55, 95,114, 89, 85,199,169, 58, 70,168, 22, 40, 83, 87, 13, 42, 47, 65,229,212,107,180, 56, 5,170, 24,112, 41, 10,116,181,182,
+229,140, 41,170,134,204,200,138, 80,254,172, 34, 5, 79,142,129, 97, 28,249,244, 60, 48,120,143,203, 22,173, 69, 68, 60,165,132,
+193,144,189, 97,244, 19, 69, 65,219, 26,114, 9, 76,135,196,115,237,208,151,220,140,214, 90, 58, 43,156,239, 18,234, 90, 44,165,
+ 74,150, 44,168,162,105,157,163, 49, 48,123, 89, 47, 24,171,232,173,133,141,194,110, 90,166, 41, 49,123,143,115,160,235,115,219,
+119,150,182,179,116,198, 49,250,192,243,156, 80, 69, 52, 75,110, 39,221,232,138, 65, 45,224, 71,143,174,245, 80,107,165, 27, 23,
+126,137,162,168, 74, 9,180, 50, 29,138, 17, 58, 43,233,108, 7, 34,177, 10,233, 98,150, 34, 78, 91,203,198, 88,188,175,160, 50,
+196, 45,164,146, 76,132,138,210,194,195,168,241,181, 74, 41,178,161, 66,182,164, 11,182, 85,245, 96,209, 43,202, 57,231,130, 53,
+142, 82,253,233,130,202, 13, 40, 29,209,122, 67,244,161, 54, 27, 11,215, 72, 87, 81,109, 13, 57, 82,151, 80, 27,148,144, 50,173,
+173,110,137, 2, 77,114, 53, 36,166,173, 63, 91,124,241,202, 40,168, 43, 79,205, 18, 81,171,214, 17,188,224,141,101,210,100,140,
+ 20,161, 49,139, 5,207, 45, 49,170, 81,175,144, 33,171, 45,227, 56,241,226,245, 93,197, 56, 71,168,171,211, 24, 2,169, 68,172,
+234, 42,138, 93, 24, 20, 90, 11,185,243, 18, 40, 36,172,150,178,164, 48,166,130,210,117,202,150,192,230, 4, 69,107,154, 74,172,
+ 82,214, 18,207, 3,227,233,196,237,171, 87,116,109, 39,226,140, 26,142, 18,139,116,213, 18, 53, 23, 43, 1, 78, 58,115,117,245,
+ 16,134, 5, 23,155, 5, 32,144,115,161,169, 21,208, 60,207,148,172, 80, 74,224, 0, 57, 38,238, 94,190,224,246,126,207, 60,143,
+ 60, 62,200, 72,187,105, 44, 99, 24,137,177,208, 59, 71,136,129, 57,102, 54, 93,131, 10,137,199,227,145,144, 4,220,226, 76, 67,
+ 8,129,113, 26,235,107, 78, 4, 6,165, 20,180,211,248, 36,106,209, 82,164,224,208, 10,186,190,163,117, 13,164,194, 60, 77, 16,
+ 21,110,107, 9,200, 11, 76, 27,205, 56, 79,188,126,253,150,127,254,215,223,243,211, 95,126,224, 56, 13,188,126,243,150,135,247,
+159, 48,219,142, 23, 95,189,229,227,167, 79,124,252,219,143,149,210,165,192, 42,118, 55, 59,198,231, 39,186,253, 6,159, 3, 57,
+ 68,252, 60,115, 30,230,202,144,150,100,164,190,181,244,155,158, 33, 6,246, 70,196,113, 79,167,145, 23,219, 14, 75,198, 71, 72,
+218, 16,146,248, 65, 59,167,121,246, 1, 99, 20,237,166, 5,163, 40, 33,210,166, 68, 72, 9,147, 51, 42,195, 48,100,142, 51, 36,
+ 91, 83,224,172,150,145,123, 89,110, 0, 67,231, 44,183,155, 13,251,198,208, 89,199, 24, 10, 99,140, 82, 80, 56,139, 51,134,182,
+177,108,186,142,231,211,153, 16, 18, 89, 9, 34,183,107, 27,110,119,123,137, 19, 13, 9,107,245,186, 63, 43, 89, 16,156, 56,133,
+ 51, 98,221, 72, 68, 20,142,105, 72,168, 94, 0, 17, 22,137,109, 77, 9, 92,223,224,148,101, 26, 71,230, 16,176, 93,195, 93,219,
+ 17,203,192,172, 3,126,179, 37,234,204, 94, 53, 40,163, 25,231,204, 49,121, 26,219,176,233, 27,162, 74, 60, 63, 30,201, 58,242,
+242,238,158, 48, 6,158, 30, 78,184,182,229,230,118,143,177,138,211,211, 3, 31,126,248,153, 24, 18, 37, 68,230, 97,102,156, 2,
+119, 47,110,233,108, 65,249,137,253,205,150,175,126,251,107,182,223,190, 36,251,137,135,191,252, 13, 99, 21, 54, 21,254,254,241,
+129,255,252,235,123,110,111,182,252,203, 47,223,114, 58,126,228,249,249, 9, 19, 34,239,159,207,252,233,253, 39,218,221, 13,175,
+ 94,222, 19,226, 36, 69,232, 60, 49, 79,158,147, 15,148,198,176,219,245,244,206,113,219,117,116,155,158,253,235, 59,238,126,249,
+ 21,166, 40, 76,107,192, 44, 99,103,189,122,188, 65,232,112, 75, 14,117,201,106,213,163,203, 24, 93,198,124, 50, 78,189, 40,122,
+151,238,242, 90, 56,183, 88,217,114,142,245, 80, 83, 87,182,182, 10,156,201,151, 0,140,101,160,190,122,194, 21,159, 41,192,175,
+199,225, 95,114,219,115, 73, 43, 78,228,203,255,255,117, 68,229,245, 33,190, 28,248, 11,240,101,241,164, 47,118,180,146,178,136,
+162,106,192,197, 26,216,147,101,220, 76, 29,203, 94,147,229,150,117,194,186,221, 44,153,172,193,164,234,227, 55, 18,154,162,114,
+ 65,101,177, 66,230, 34, 93,115,201,137, 28, 43,120,101,158, 57,156, 70, 62, 62, 14, 36, 10, 91,235, 48,198, 49,101,152, 19,164,
+ 40, 20,185,162,103, 26,167,105, 90,225, 11,248, 33,114, 28, 6,252, 24, 48, 42, 99,141,195, 57,135,179,138,146, 98,205, 69,207,
+235,228,178,113, 14,147, 35,206,213,248,234,117,252, 34,123,219,162, 5,142, 69, 76,232, 48, 11, 18,219, 24,116,105,113,173,102,
+211,239, 48, 58, 51,134,200, 48, 7, 54,214,209,244, 13,198, 72, 82, 99,206,162,167, 17,102,129,102,152,211, 10, 42,178,110, 41,
+172,162,140,162,139,164,119,222, 52,142,251,190,225, 48,141,124, 26, 35, 99,144,107,216, 53,154,201, 7, 66,150,140,115, 82,146,
+162,197,153, 10,181, 41, 24,147,208, 90,182,207, 69, 9, 79, 34,198,171,200,239,196,186,167, 95,160, 71, 49, 70,138,190,144,220,
+ 84,109,185,173, 85,149,209, 80,149,223, 90,184, 42,167, 97,252, 66, 10, 89, 87, 80, 70, 60,225,164, 37, 69, 45, 65, 54,164, 10,
+184, 81, 8, 30, 89, 41,133,213, 22,171,228,126,201, 41, 99,108, 35, 81,223,115,141,125, 94,146,230, 22,205,104, 94,248, 43, 53,
+ 33,174, 78, 41,163, 18,177,156,179, 92,162,116, 43, 34, 29, 5,195,233,180, 82, 31, 5,212,132, 92,147,202, 30,112, 27, 39, 22,
+103, 83,115,217,131,208,231,204, 26, 75, 43,150,110,169,204,235, 53, 51,122,101, 77, 89,165, 20,141, 49,180, 93, 43, 66, 57,163,
+249,244,124, 98,156,103, 94, 54,142,182, 19,222,246,249,124, 38,214,199,211, 54, 13, 5,136, 62,160, 26,135, 6, 98,244, 43,114,
+ 49,171, 43,201,237,146,215, 43,240, 92, 84, 44, 12,243, 44,129, 0,232,122,176, 43, 94,220,236,185,185,217,242,240,238, 35,159,
+ 62, 60,136,151, 79, 43,158, 83,160,111, 45,206, 88,124, 12,160, 53,206, 9, 34,245,116, 58,203, 78,176, 10, 11, 78,167, 51, 62,
+214,248,192,172, 4, 70, 34,203, 40,230, 41,172,216, 88,157, 21, 6,104, 55, 45,198,105, 82, 12,156,171,213, 75, 91, 43,144, 29,
+ 39, 95, 66, 76,133,127,250,215,127, 38,248,153,247,127,249,129,151,223,125, 77,240,145,201, 79,124,245,253, 55, 40,171,249,240,
+215,191, 19,206,103,186,237,134,108,161,105,165,186, 30, 78, 39,250,215, 47, 24,207, 3,186,192,227,195,137, 57,200,196,195, 24,
+ 75,163, 69, 71, 16, 74, 70,151,204, 84,224,253,195, 51,206, 53, 24, 32,134,128,207,138, 98,140, 8, 99,140,101,200,145,168,197,
+ 62,166,141,102,154, 71, 92,184, 68, 8, 10, 36,164,112, 24, 61,147,220, 57, 18, 79,168, 36,229,169, 40, 69, 65,211, 91,195,205,
+182,227,182,179,180,206,212,168,218, 76,111, 45,214,181,104,163,232, 26,203,221,126,199,113, 56, 75,138,153, 18, 34, 96,219, 54,
+236,182, 27, 17,108,216,130,211, 70,190,243, 5, 40,163, 53,217, 25, 70,239, 41, 37,179,233, 90,169,212,115, 17,252,238, 52,163,
+141,199, 26,197,206, 25,134,232, 57,143, 69,190,103, 20, 37,102,230,195,192,167,198,115,179,217,160, 76, 96,154, 38,230,121, 67,
+222,111,177, 78,163, 98, 97,156, 61, 7,165,185,189,217,179,237, 55,140,243,192,227,211,137,121,136,232, 10, 24, 82, 27,199,241,
+124, 36,122,207,207,127,255,137, 48,120, 98, 40, 76,179,231,233,112,100,179,235,233,123,135, 33,177,239, 91,190,250,245, 47,185,
+251,238, 23, 52,214,240,225,135,191,131, 31,216,180,123, 62, 62, 30,249,223,127,124,135,235, 12,255,254,171, 95, 97, 98,226,227,
+227, 71, 84,142, 28, 15, 35,127,248,251, 7,138,182,188,125,125, 47,194, 41,165,137,227,200,241,120,100,152,103,138,133,254,102,
+203,166,107,184,239, 58,246, 93,195,238,118,207,139, 95,127,143,117,173, 56, 68,244,130,165, 52, 85,212,150, 46, 99,194, 74,132,
+ 19,209,210,101,159,157, 75, 94, 73,109,186,142,105,203, 21,231,125,185, 47, 46, 7,122, 90, 69, 71,168, 58, 10,173,182,152,149,
+224,182,100,150, 43,209,186, 92,236, 64,229, 50,166, 87, 95,218,204,248,172,235, 47, 69,246,232,215, 7,247,114, 8,127, 38,118,
+227,243, 61,191, 76, 16,210,103, 69,194, 37, 95,188,142,223,209, 87, 17,177,245, 64,202,233, 18, 90,179, 20, 10, 90, 14, 11, 85,
+150, 21, 77, 21, 71,229,203,212, 80,166, 21,117, 50, 66, 70, 23, 72, 37, 17,163,176, 22,102,239,193, 39,166,105,226,105,152,248,
+244, 52,161,140,102,223,117, 96, 28, 9,240,163,172, 26, 99,140,132,156,104,218, 22,215, 88,148, 42, 2, 95, 58,205,204, 62,208,
+ 88, 48,166,193, 53,182, 82, 41, 35,202, 74,136, 86,200,194,210,112,117, 29,106,179,166,132,132, 82,137,148, 53,169, 68, 40, 70,
+ 24,247, 69, 24,233,157,177,116,206,161, 82,213, 11,145, 48, 78, 65,137, 76,115, 34,149,196,102,211,209, 55,173,128, 90, 82, 21,
+183,214, 9, 75, 44, 50,205,136,126,233,104, 51,202, 84, 11, 40, 17,165, 44, 57, 73, 81,161, 44,152, 77,195,222,101,148,110, 56,
+142,158,199,243,140,247,129,146, 5,154,147, 64, 26,167, 44, 64,168,198,170, 26,103,123,161,205, 81,144,102, 75, 21,138,214, 56,
+ 93, 69,114, 57,175,187,233, 82,105,122,170, 90,225, 74, 22,123,172, 64,167, 76, 29, 10, 21,193,240,106,141,181, 2, 38,203, 69,
+ 34,118,149, 54,178,234,201,162,131, 48, 90,163, 84,148,245, 81,182,235, 94, 61, 23, 73,121,203, 85,160,166,149,184,144, 40, 50,
+ 49,201, 37,136,109,206,167,122,134, 45, 88,220,106,245,252,114, 44,191,116,210, 69,173, 63, 95,105,181, 90, 75,151,168,239, 88,
+139,125,107, 52,126, 25,153, 59, 75,136,146,216,182,144,108,180, 17,157, 66, 81, 21, 48, 87,215,108, 5, 69,209, 90, 0,102, 37,
+ 93,116, 98, 85,195, 96,181, 54,130, 50,108,220, 26,246, 62,143,103,114, 72,236,110,247,184,214, 81,162,188, 84, 23,235,131,235,
+ 28, 37, 21,166,243, 72,223,119, 43,133,109,177,169,196,156,185,138,175,149,138,105,217,127, 77, 1,159, 51,177,128,171,187, 63,
+215, 91, 94,222,223,210,184,142, 15, 31,159,152,231,129,253,221, 29,115,206,210, 41,223,190,192,106,195, 41, 78,180,219, 22, 99,
+ 20,167, 39, 73,183,201,249,178, 63, 28, 43,122, 83, 21, 41, 24, 4,242, 45, 9, 69, 41, 37,116, 46,232, 36, 15,119,179,105,104,
+183, 50,133, 8, 49, 50, 12,158,126,187,161, 44, 83, 9, 37,187,182,215,223,126,205,235, 95,252,130, 31,255,207, 31,200,186,112,
+247,250,158,191,252,159, 63,115,115,123,203,221,155, 87,188,123,120,224,253,187, 15,216, 74, 13,202, 70,177,237, 58,134,227,145,
+168, 52,251,221,142, 79,159, 62, 17,124,226,124,158,106, 60,158, 40, 43, 55,189, 99,187,113,204, 49,210, 91,197,251,135, 51,126,
+ 14,236,119, 27, 98,242, 34, 68,180, 13,161,200,168, 84, 59, 67, 36, 98,156, 67,107,141,159, 2, 49, 76, 52, 90,136, 90,130, 94,
+202, 28,166,153,195,236,209,155, 78,138, 20,228, 48,205,213, 59,218,106,195,237, 70, 14,150,109,227,240, 49, 16,124,160,113, 45,
+109,227, 36,129, 78, 43,110, 54, 61, 62,132,122, 56,151,170,188,212,236, 55, 61,187,190,147,170,115,246,104, 99, 49,117,125, 35,
+ 73, 79, 34,102,113,147,103, 58, 31,177, 74,225,218,150, 92,121, 4,195, 48,161,157, 32, 98, 91,157,112,206, 18,114,100, 28, 2,
+157,117, 40, 20,141,210, 60,159, 7,108,206,244,155,142, 84,224,195, 56,113, 62, 79,220,221,110,105,116,198, 42,131,143,145, 79,
+143, 15, 4,191,165,221,108, 8, 99,224,221,135,159,185,187,217,243,242,245, 45,218,128,159, 70, 62,254,249, 61,243,224, 81, 25,
+230,121,230,116, 62, 81, 52,244,125,139,203,153,214,105, 94,127,255, 13,111,126,245, 29,183,219,142,199,247,239, 24,158,159,232,
+157, 99, 24, 51,255,249,183, 7, 98, 8,252,235,111,190,167,183,134, 31,255,241, 19, 41,100,124, 44,252,231, 63,222, 51,250,204,
+ 47,190,125,139, 89,196, 59, 89,241,244,248,200, 56,121,130,134,102,211,209,181, 45,155,166, 97,215,181,244, 77,195,139, 95,126,
+ 69,211,183,148,162, 49, 85,220,116, 57,228,190,204, 6,191,136, 80,175, 92, 69,162, 2,174, 24, 81, 85,243, 16, 36,246,118,113,
+165, 95,186,221,203,168,187,102, 99,231, 64,138,185,238,190,175,132,108,229,194, 68,207,165,134,100,214, 72,213,107, 45, 89, 81,
+151,159,125,193,103,202,231, 48,122,157,131,126,246,226,251, 18,245,122, 61,134,191,238,224,115,206, 43, 30, 83,125, 17,246, 66,
+185, 88,213,114, 13,231,225,138,253, 94,174,146,180,202,154,225,125,201, 15, 79, 84,245,122,145, 2,120,117, 8, 84,150,253, 97,
+ 26, 25, 78, 51,243,232, 9, 57,161, 18,124, 58,159,121, 58,122,172,214,108, 58,185,151, 79,126,194,150,134, 28, 50, 62, 68,124,
+ 12,184,206,210, 54, 86,162,148,167,192,105,152,240, 33, 10,178, 86, 43,140, 51, 40,107, 24,253,140, 81,154,166,107, 68,123, 84,
+187,207,190,179, 20, 18, 42, 20,114,182, 24,212,154,194, 39, 97, 43, 1,141,194,181, 29,155,219, 45, 22,199, 52,198, 53,248,195,
+ 24,225, 68,104,173,177,141,197, 26, 67,202,153, 16, 18,147, 23, 97,168, 94,176,179, 69,166, 62, 57,200,110, 86, 87,155, 27, 42,
+203,225,165, 33,164,194, 57,204, 52, 57,243,244, 28, 69,159,144, 69,221,190,105, 4, 47,254,240, 52,130, 86,178, 2, 93,108,173,
+ 89,213,169,131,172, 79, 23,117,118,169, 8,240,152,202,122,159,164,148, 25,198,136,235,204,202,209,207,181, 57, 51, 90, 38, 0,
+ 37, 83, 15,112, 57,212, 83,229,208, 55,109,131,210,226, 40,160,104, 82,202, 85,180, 43,135,184, 90,119,221,250,162,181, 80,106,
+197,195, 46,232,229, 80,237,114,198,168,122, 77,106, 40,152,213, 92,197, 64,174, 72, 92, 85,212,138, 66,254,220,192, 89, 86,241,
+232, 34, 70, 93,138,224, 82,157, 1, 83,138, 12,231,137, 93,223,115,174, 22,209,174,109,137,209, 19,227,213,116,171, 92,160, 54,
+203, 74,189,212, 3, 79, 91, 39,106,251, 36,212, 65,140,172, 62, 74,142, 88,173, 45,182,105,113, 11, 56, 36,101,252, 52,209, 24,
+ 77,191,221,210,108,234, 95, 22,164,243,113,219, 13,219,253,158,236, 19,243, 52,177,219,111,101,223, 94, 22,164, 98,134, 44,149,
+ 99, 89, 73, 82,213, 95,153,243,255,199,214,123, 52, 89,114,165,105,122,207, 81,174,174,136,136,148, 72, 36, 74,117,245,144, 51,
+ 70,227,112,197, 37,151,252,185, 92,112,197, 29,255, 0,185,160, 53, 73,227, 76,119, 21,128, 66, 66,164, 8,117,165,139,163,184,
+248,142,251,189, 89,213,101, 6, 51, 88, 33, 51, 50,242,134,251, 57,159,120,223,231, 37,107,203,228, 3, 49, 39, 26, 99, 80, 41,
+ 81, 53, 53,175, 95,190, 68, 1, 31,239, 31,201, 74,209, 84,142,253, 48, 98,146,230,102,181,230,216,159,137, 64,237, 28, 41,193,
+208, 15,248, 24, 11,118, 48, 19,147, 39,204,187,112,145, 83, 72, 55, 98,192, 39,193,215,170, 66, 21, 66, 41, 86,171,142,170,114,
+ 24, 3,199,125, 79, 8, 30, 85, 85,101, 87, 34,150,134,238,102,197,187,223,125,199,225,233,153,143, 63,253,194,239,255,248, 7,
+166,209,147, 83,100,253,226,142, 41, 78,236,190, 60,138,170,221, 26,180, 19, 88, 72, 85, 55,140, 79,247,116,183,107,233, 78,125,
+224,233,120, 98,154,124, 97, 82, 27,172, 85,108, 86,205,114,128,142, 83,226,233,233, 68,219,200, 58,195,135, 68, 86,146,247,236,
+ 99,177, 20,105,217, 21,233,172, 56,143, 19,126, 24,233,172, 17, 14,126,241, 44,134,201,243,124, 26,136, 86,212,240,179,152, 34,
+148, 7,188,178,154,219,174, 97,219,212,116, 78, 51,250,200, 52,121,234,186,162,170,157,216, 64, 20,172,186, 6,227, 28,187,231,
+231, 43,129, 85,164,174, 43,154,166,194, 58, 35,120, 72,107,241, 62,200,223, 73,107, 54,221,134,213, 77,199,249,116,198, 57,199,
+202, 9,109, 47,165,132,177,134, 42, 59,134,113,226,112,244,108,214,154,172, 34, 58, 37, 26, 39, 25,201, 99, 16,219, 77,101, 44,
+173, 54,156,250,129,202, 26,172,213,152,144,120,252, 50,114, 56, 29,184, 91, 55,116,109,199,182,235, 56, 12, 3,187,221,142,110,
+204, 76,253,145,221,254, 64,213,173,248,118,189,101,211, 54,124,249,249, 87,206,187, 19, 74, 57, 82,142,156, 79, 7, 78,231, 51,
+155,187, 45, 78, 43, 90,157,121,247,254, 29,175,254,244, 29,245,118,205,225,241,145,253,195, 61,181, 49,196, 41,242,215, 31, 62,
+242,120,216,243, 31,127,247, 29,175,183, 91, 62,126,248,153,113, 28,200, 89,241,255,125,255, 27, 31,159, 78,188,127,255, 45, 77,
+211,146, 73,212,198,242,249,243, 47,156,134, 51, 94, 41,170,182,101,181,106, 88, 59,199, 77,219, 80,215,150,187,223,125, 67,125,
+119, 67,138,197, 66,164,175,132, 93,243,190,177,188, 59,169, 88,204,140,113,151,203,145,139,199, 59, 21,136,202,236,153,157,119,
+206,203,206,189, 28,166, 95, 7,188,164,101,172,153, 75,183,175, 10,251,122,185,224, 83,153, 2,112,201,166, 6,181,136,201,174,
+ 59,238,185,216, 80, 75, 82, 92,121, 98,202, 37,125,233,224,191,222,165,207,249,211,249,239, 8,111, 75,108,165,214, 11,157, 50,
+ 95,165,202,169, 60, 35,115,243,130,236, 92,118,249,179,181, 46,166, 5,171,171, 75,177, 35, 26, 61,249,187,133, 40,233,113, 70,
+131,159, 2, 57, 36, 14,167,158,253,241, 76, 24, 36, 1, 49, 42, 24,199,192, 62, 68,172,169, 88, 55, 21,144,232,199,128, 45, 90,
+134, 97, 28, 25,199, 17,235, 12,206, 57, 66,136,194,116,159, 38, 6, 31,202,133, 38,190,102,149,197,118,166, 77,201, 88, 79,130,
+ 45,142, 83,164,233, 42, 42, 7,201,103,136, 26,159, 60,104, 83,114,187, 41,158,110,121, 70, 92, 93, 99,156, 20, 20, 49, 75,214,
+185, 42, 93,171,171,237,114,145, 76,147,216, 79,167, 33, 9,115, 50,137,253, 80,207,113,161, 83,102, 44, 23,184,201,174,232,120,
+ 60,174, 42,148,198,148,112,206,176,110, 43, 76, 78,248, 0,202, 6,108,134, 14, 77, 93,105,180,211, 60, 61,159,217, 29,123,154,
+214, 81, 57,161,232,201,207, 75,152, 38, 24, 41,244,117, 9,223,153,188,232, 31,140,150,149,133,159,147,254,148, 94, 50,219,107,
+ 83, 56, 13, 49,160,180,132,182, 40,165, 36,252, 42, 38,166,113, 98,213,182,139,195,130,168,240, 83, 16,229,189, 45,231, 63,178,
+255,151,201,211,140, 88, 70,186,233,101,181, 20, 73,132, 34, 70,211,139,168,116,198, 74,207, 2,208,153, 83, 48,179,255, 47,118,
+210,203,234, 72, 27,153, 62,207,147, 41, 83,200,118,105,193,253, 70, 72,138,243,185,231,102,123, 35, 52,215, 50,221, 52,198,202,
+218, 33,197, 50, 93,184,132, 87,201, 70,159, 5,208,164,203,218,105, 46,190,243,236, 86,148,103,192, 66,116, 84, 85,181, 28, 40,
+253,185,103,204,194,191,173,172, 99,236, 71,137,248,204,153,166,107,168,219,154,225,216, 75,213, 85, 85,244,253,176, 84, 38,233,
+ 10,229, 56, 99, 30,208,165,155, 8, 1,175,196,187,153,146,236, 31, 80,176,217,108, 88,221,221,208,143, 35,207,207, 7, 92, 85,
+ 99, 45, 12,211,196,170, 93,163,181, 98, 56,143, 84,141,163,210,154,211,177,231, 56, 14, 37, 89,170,136, 19,114, 34, 41, 25, 95,
+173,156, 99, 26,197, 34, 17,202, 15, 71,130, 14,228,165,110, 43,197,170,173,177,214, 50,134,192,241,121, 15,181,195,214,149, 20,
+ 30, 49, 96,215, 45,111,127,247, 29, 42,103, 30, 63,221, 83, 25,205,139,215,111,120,126,254,194,234,102,131,169, 29,211,121,100,
+255,248, 76, 72, 9, 29, 13,174,170,176,181,133, 56,145,124,160, 94, 53,140,125, 79,156, 2,199,195,137,144,226,146,176,211, 85,
+ 21,235,174,198, 7,121, 65, 62, 61,157, 73,113,164,105,215, 4,239,229, 0,176, 14,147,139, 69,162, 32, 15, 51, 48,141, 3,207,
+227,196, 90,107, 26,235,176,243,161,233, 19,207,195,196,190,143,180,219, 21, 74, 91,178, 74, 76,133,176,230,140, 97,211,214,172,
+ 27,203,182,174,152,162,231, 56, 77,172,171, 74,130,116,180, 33,102, 69,231, 12,155,117,203,195,110,143, 47,212, 44,200, 84, 77,
+ 85,172, 86, 25, 31, 60, 25, 45, 47,234,204, 76,182, 90,194, 71, 90,199, 42,183, 76, 74, 86, 7,206, 57, 78,195,153,113, 24,104,
+186, 90, 84,236,249,128,159,196, 54,232,201,196, 33, 80,107, 45,187, 56, 20, 67, 8,104, 37, 9,123,199,253,200,237,182,161,182,
+ 9, 85,103,158,119, 39,166,211,196,106, 61,242, 98,237, 89,175, 59, 30,134,145,207,187,143, 52, 78, 83, 85,142,199,253,145, 31,
+254,246, 27,175,182, 27,250,135, 35,214, 56, 66,204, 12,253,192,110,183,167,238, 58, 42,107,232,116,230,205,251, 55,188,253,195,
+183,172,183,183,248,241,204,195,211, 35, 54,103,180,138,252,244,241,196,143,143,207,252,249,219,111,248,238,219,119, 60,125,252,
+141,211, 81, 50, 6,190,255,241,103,126,249,237,145,151,111,111, 89,223,172, 73, 25, 58,219,240,252,248,153,253,243, 51, 30, 5,
+181,164,189,173,234,154,187,182,161,107, 27,182,239, 94,177,122,247, 86,144,184, 51,175,126,241,147, 95,117,194, 87,157,185,190,
+ 18,165, 93,239,193, 23,180,106,137,123,204,197,215,154,230,125,223,223,239,173,243,156, 36,154,151, 28,241,188, 12,215,211,162,
+ 10, 87, 23,131,132, 92,248,139,226, 56, 45,234,241,107,140,235,117,183, 12,106, 97,207,255,123,251,246,127,176,157, 93,143,231,
+249, 26,211, 58, 7, 95,204, 17,165,186,236,186,153,109, 94,179,121, 78,125,237,211,207,170,192, 97,146, 90,210,178, 82,150, 29,
+111,136,129,113,232,197, 54,100, 50,211, 24,240, 67,226,220, 15, 28,142, 61,126,140,232, 36, 23,193,144, 18, 81, 41, 92, 46,147,
+ 37,107, 57,140,189, 36,249,101,197,190,239, 57,143,190,124, 45, 67,152, 60, 33,228,226,230, 16,113, 84, 76, 25,157,228,242,203,
+104, 92,101,208, 86,178, 49,252, 48,113, 58,120, 42,163, 89, 53,150,170,214,248, 65, 19,226, 0, 49,200,152, 53, 35, 49,196, 74,
+203,106, 69, 11, 51,156, 84, 4,130,115,178, 93,217, 33,171, 50,134, 21,160,159,136,176,236,186,192,207,138,198,201, 88,200, 90,
+113,126, 10, 76,202,147,117,198,228, 10,173,101, 61, 99, 77,189, 8, 23, 55, 93,205,221, 86,118,187, 83,128,144, 52, 78, 71,146,
+205, 76, 41, 2, 22,189,237, 48,102,100, 55, 76,120, 63, 81,215, 78,240,222,243, 90,168,208, 5,141, 49, 84, 21,140, 99, 44,208,
+ 50,201, 86,159,145,197, 90, 91, 66,202,248,152,168,139, 64,108, 10,194,169,183,214, 10,101, 70,201,243, 53,141, 3, 90,223,161,
+ 80, 24,196, 35, 62,197,132,174, 26,201,122, 72,242, 76,207, 24,243, 60,135,187,204,239, 70,150,231, 73,165, 68,158,100, 50,164,
+140, 91, 96, 50, 33,148,196,184, 57,238,248,234,157,152, 99,129, 53, 23, 10,162, 82,170,192,217,132,193, 62, 95,214,122, 86,192,
+231, 76, 12,145,166,169,232,135, 17,180,188, 47, 49, 70,180,181,232, 73, 49,157,167,242,251,230, 68,185,162,128, 23, 36, 96, 9,
+ 34,210,104,149,100,178, 82, 58,125,157,196, 25,128, 68,211, 26,154, 70,172, 99,179,234,175, 63, 30,169,140,149, 61,187,117,236,
+134,145,190,239,165, 90, 50, 22,107,106,206,254, 32,124, 91, 83,145,194,105, 25,219,229,152,200, 49,139,248, 33, 9, 2, 48, 23,
+ 15,179,210, 74, 96, 44,177,140, 62, 68, 98,192, 55,223,190,227,102,187,226,135,191,252,141,167,167, 71,238,238,182,244, 62,226,
+167,145,151, 47, 55,248,148,232,241,188,168,165, 42, 59,159,207,197,211,151, 47,227,182,242,225,214,149,165,209, 21,147,159, 68,
+184,193,101, 60, 47, 30,211, 68,229, 28,202,201, 3,213,159,206,156,134,158,237,102,139,117, 6, 63, 6,162,209,188,126,247,150,
+166,105,248,248,233, 19,211,169,231,237,119,223, 65,231, 24,127,238, 49,117, 37,126,239,144,120,126,218, 83, 17, 81,218,226,154,
+ 6,235, 52,193, 79, 36,171, 89, 55, 43,190,236,191,112, 58, 79,156,207, 35, 74, 41,156, 54,212,214,112,187,234, 72, 81, 14,154,
+126,138, 60,237, 7,154,186, 38,145, 24,189, 71,161,177,133, 85, 30,162,204,236, 99, 76,248, 24, 24,198,128,203,153,218, 25,180,
+138, 24, 35, 97, 37,189,159,120, 30, 71,108,109,113,214,146,141, 28, 74,158, 44,251,251,166, 97,221, 88,214,117, 67,140,145,195,
+105, 98,221,214,180, 77, 85, 24, 15,138,160,225,229,221, 29,207,253,153, 97,156,228,243,213,138,218, 89,214,221,170,160, 19, 51,
+253, 48,149, 42, 84,178,205,149,213, 84, 93, 67, 85, 87,132,193, 99,146,166,173, 91,146,139,184, 54,176,190,109, 57,247, 35,251,
+243,137,206, 52,160, 12,143,143, 15,197, 48,161,241, 90, 32, 28,117, 72, 84,206, 96,157, 89, 66,109, 78,126, 98,218, 79,108, 91,
+199,186,110, 80, 27,197,113,240, 60,157, 18,207,167, 51,239,134, 27,172, 81,196, 67,207,176,169,233,182,183, 4, 31,249,252,249,
+129,225,215, 39,106,163, 48,206, 17,130,231,233,225, 1,239, 44,109, 83,209,101,199,171,111,214,124,247,251,247,220,188,122,133,
+ 53,129,221,207, 95, 80,227,153, 70,175,248,219,175, 79,124,255,233,145, 63,188,121,197, 31,222,127,195,241,241,158,167,231,123,
+ 18,240,183, 15, 31,249,203,175, 95,184,189, 93,243, 98,187, 37,197, 72,221, 54,140,187,103, 30,239, 63, 49, 41, 77, 82,150,182,
+109,168, 42,197,186,118, 52,109, 75,251, 98,195,205,183,175,196, 86,100, 10,240, 66,165,197,154,165,245,191,167, 0,159,139,228,
+ 36,150,182, 43,107, 26,115, 28,170,214,101,175, 92, 64, 44, 5,210,113, 13, 98,153,169,105,115, 65, 32,231,148, 46,255,126, 69,
+166,154,247,127,243,168,113,158, 10, 44, 1, 39,151,168, 83, 22,116,108, 42,227,197,175,199,234,115,247,252,247,216,213,185,235,
+214,165, 83,201, 87,137, 95,151, 85, 64, 46, 17,148,169, 20, 40,242,253, 46, 50,231, 60,179,133,100, 28, 60,127,173, 24, 69,237,
+173,116, 81,191,147, 25,163,176,235,251,211,192,177, 31, 88, 89,133, 39,227,163, 39,250, 68,152,224, 60,156, 9, 83,198,160,105,
+219,154,195, 48,200,142, 55, 38,116,202,220,180, 53,189,143,196, 0,218, 38,206, 83, 42,169,144,242,153, 76, 41,112, 28, 70,114,
+176, 84, 86,194,147, 78, 83,160,177,150,202, 25,218, 70,118,237, 83,138,244,125,144, 48,145, 16, 73, 38,113,247,226,150, 85, 87,
+145,189,240, 62, 68,168, 39, 23,120,206,166, 52,100, 18,190,163, 84, 37,249,223, 89,244, 64,178,145, 80,139,208, 49,169, 11, 78,
+ 87, 43,139,113,115,176,136,112,250,151, 6, 33,100,217,121,151, 66,202,152,138,172,142, 40, 35, 57, 20,113, 46, 0,156,140,164,
+179, 86,104, 99,169, 48,196, 60,161,117, 4,101,136, 38, 16, 27,197, 86,137,150,168,239, 3, 49,106,114, 65, 99,104,155,137,147,
+ 34, 69,201, 49, 55, 74,212,247,166,228,136, 76,243, 20,102,153, 76,101,124, 10,132, 44, 73,105,146, 8, 44,246,223, 25,152, 19,
+ 66, 36, 5,177,179, 77,253,132, 49,150, 33,142,132,232,169, 59, 97,167,139, 53,124,238,118, 69,171,129,150,105,236,172,180,159,
+ 25,243,105, 22,156,234,242, 14,162,136, 94, 10, 88,103,236,194, 39,184,102, 42, 45,207,248, 28,220, 50,175,153,204, 37,216,101,
+ 94,165, 37, 53, 91,218, 18, 90, 89, 78,167, 51,193,103, 92,101, 56,159, 6, 44,138,160,133, 1, 47,107, 3, 3, 49,151,117,136,
+ 76, 9,172,181,178, 47,152,127, 94,101, 85, 17, 67, 17,235,169, 32, 52, 59, 25,215, 72, 55, 61,103,163,199,209,227, 54, 43,186,
+213, 26,167, 53,199,254,196, 48,122, 9,114, 89,175, 48, 86, 51,244, 3,181,177,210, 69,150, 7, 91,226, 19, 37,143, 57,229,176,
+168,241,212,108, 30,201,130, 14,141, 73, 30, 90,107,196, 82,117,123,187,197, 58,203,253,253, 35, 41, 5, 33,241, 12, 3, 14,197,
+122,213,241,124, 62,226,172,162,117, 50,158, 24,189, 84,195, 95,129, 9,148,196,173,182,206,145,209,196,226, 50,173,141,147,177,
+ 83, 1,103, 8, 44,197,149,232, 78,216,239, 14, 36, 12, 77,221,200,158,122, 10,108,223,188,224,213,235,215,220,223,223, 51, 77,
+ 35, 83,152,184,123,253, 10, 19, 51,135,253,142,187,183,111,105,234,142, 95, 62,252, 36,163, 18,159, 49,157, 65,151,128,152,233,
+124,166,219,172, 37,129,109,154,216, 31, 15,144,101,204,232,156,162,107, 45,235,174,101,156, 38, 98,204, 60, 31, 78,100, 34,181,
+107, 57, 78, 3,125,206,108,172,147, 49,123,138,248, 28,201, 65,137,128, 39, 69, 66, 78,116,198,208, 24,141, 43,100,168,105,240,
+156, 6,241,180,215,181, 3,147, 9, 42, 50,165, 88, 46,244,154,182, 49,172,170,138, 26,120, 56, 13,212,173,161,173,171, 2,104,
+ 80,120, 31,121,241,114,203,232, 35,187,211,185,120,163, 69,228,210,174, 87, 52, 78,130, 92,206,222, 19,148,146,236,225, 50, 30,
+170,106, 75, 93, 57,114, 20, 27, 23,218,130,138,184,202,113,179,121, 65,189,170, 57,237, 79,108,207, 61,135,221, 14,235, 32,231,
+141, 20, 22,206,161,131,194,235, 76,204,208, 79, 1,151, 21,117,109,168, 66,162, 15,145,211,144, 56,143, 19, 47,218,204,237,139,
+ 14,103, 44,231, 49,114,234, 71,126,249,244,153,237,186,195, 86, 86, 0, 53,250,136,117, 14, 59, 70,178,170, 72,218,161, 35,236,
+158, 15,156,198,137,102,179,162,117,138,187,215, 29,111,127,247, 59,218,151, 47,193,194,233,243,103,206,251, 71, 86,166,225,211,
+ 46,242,151, 15,143,188,184,189,227, 63,188,255, 22, 61,236,121,122,252, 68, 38,243,225,215, 7,254,237,183,143,212, 43,203,234,
+246,150,100, 12,173, 53,152, 16,248,245,225,129, 33, 64, 42,152,218,174,169,216, 84, 53, 93,221,208,108, 11, 96,166,174, 5,168,
+ 83,201, 40, 55,204, 21,253, 87,173,250,223, 95,232,151,231,188, 84,196, 95,193,100, 72,137,168, 40, 84, 56,233,218,116,254, 90,
+141,174,174,173,224, 87, 86,177, 69,229,126,197, 97, 79,165, 72, 79, 49,125, 37,204,227, 31,246,225,169,136,207, 74, 80,203, 21,
+245,237,223,181,162, 93, 89,219,230, 75,127,238, 86, 22, 8,206,149,174, 96, 9, 96, 89, 4,122, 95,235, 12,198, 81, 46, 42,231,
+ 76,129,245, 68,241,124,151, 17,105, 12, 73, 52, 35, 57,177,223, 15, 28, 15, 39,218,198,210,123, 69, 63, 37,226, 20, 10,132, 70,
+161,163,228,140, 87, 78, 98,164,149,134, 60,101,166, 33,210,213, 53, 33, 39,238, 79, 39, 66,134, 87,166, 98,240,153, 83, 47,163,
+ 91,227, 12,253, 40, 34, 67, 77,166,239, 71,252, 16,113,141,166,174,157,172,171,114,226,124,238,153,166,137,164,160,209,150,174,
+173,216,116, 13,171,186, 18,229,244,149, 7, 59,149, 81,117, 68,170,219,164, 34,185, 48,207, 93,229, 74, 55,174, 80,202, 22,186,
+ 93, 44,235, 17, 74,136,143,252,126, 66, 1, 11,165,153, 88, 38, 9,122, 41, 40, 4, 45, 82,214, 25, 46, 48, 5, 73,140,212, 74,
+225, 67, 66,107,104, 42, 53, 39,170,131, 41, 1,151, 42, 45,207,162,209, 6,167,161,173, 50, 90, 85,146, 60, 86,132, 98, 2, 32,
+ 50,133,245, 95,186, 99,160,118, 26, 83, 86,164, 49, 73, 70,251, 76, 15, 12, 41, 19,146,228,165,163, 23, 66,145,232,118,172, 37,
+167,204, 56, 9,171,205,148, 21,143, 53,134, 16, 3,125, 63,177,217, 38,108, 99,229,226, 47, 15,187,112,226,227,133,213, 94, 64,
+ 95,115, 51, 58,111,220,103,162,141, 82,138, 88, 38,171,186,232,172,174, 49,200, 82,124,148, 66,188,100,187,115,149,163,190,212,
+219,204, 83,182,120,177, 97,102,240, 57,113, 56, 29,233,218,154, 83, 62,203, 74,193, 26,114,156,240, 65,246,251,145,132, 65, 96,
+112, 30,177,233,154,162, 13, 80, 36,140,206,101, 42, 23, 72,121, 90, 2,137,172,179, 70, 58, 35, 45,156,220, 16, 38,252,232,169,
+111, 27,214, 93,135, 66, 49, 14,226, 57,116, 25,234,174,129,164, 24,250,158,218, 26, 98, 14,168, 36, 22,177, 24,139, 69, 45,203,
+ 8, 71,151, 11,189,184,150, 37,255, 53, 4, 66,148,253,135,181,150,174,109,185,189,123,137, 82,138,207,159,238,233, 86, 43,140,
+ 81, 76,103, 79,215,172,192, 40,250,113,164,173, 26,180,173,217, 31,159, 24, 3,130, 67,232, 0, 0, 32, 0, 73, 68, 65, 84, 38,
+137, 85, 37,171,114, 89, 23, 85,190,130,218,104,166, 40,187, 11, 99,100, 20, 59,156,134,101,231,136,181,116,117, 67,173, 13,195,
+148, 56, 63,236,168, 54, 55,216,166, 42,147, 5,203,251, 63,253,142,241,116,226,233,249,137,166, 18,241,216,221,187, 55,252,250,
+215,239, 57, 28,158,249,231,255,244,159, 56, 15, 3,135,221,158,228, 3, 42,131,107,106,178, 81,114, 72,132,200,230,197, 13, 83,
+239, 57, 29, 7,250,211, 89, 96, 16,174,145,145,111, 87, 45, 60,231, 62, 5,158,247,103,214, 93,195,148, 34,195, 16, 48, 86, 70,
+244,209, 39, 6, 47,200,200, 84,114,180, 67, 81,143,214, 78, 83,105,141,211, 21, 33, 36,206, 83,224, 24, 19,149,169,176,214, 18,
+181,102, 10, 30,173, 20,155, 34,204,218, 90, 75,163, 21,207,253,128,117,150,109,237,176, 38,163,180,136,245,110, 55, 29,171, 77,
+199,231, 79,247, 20,178, 9,168, 68,187, 90,139,205,198,104,129,200, 40, 69,229, 46,251, 93,109, 74, 88,206,224,113,197,175, 41,
+ 61,149,163,219,172,216,188, 88,137,133,111, 43,193, 63, 77,227, 56, 31,207, 84, 85,205, 52,254,138,113,134, 77, 83,115,236,123,
+137,197,213,138, 49, 6, 24, 35,171,182, 99,152, 60, 57,136, 16,228,254,220,179, 27, 38, 94,220,109,232, 86, 13,168,196,225,224,
+121,222,157,185,187,219, 82, 53,150,211,113, 79,231, 58,154,170, 69, 85, 22,140,102,191,219,243,240,112, 79,189,234, 88, 55, 53,
+119,183, 43,190,253,221, 27,110,223,190,198, 85, 16, 14,207,156,118, 7,156,178,236, 6,205, 95,126,250,153,182,173,249,167,239,
+222,162,178,231,211,151, 39,134, 62,240,241, 97,199, 15, 31,126,197,170,154,205,250, 6,235, 42, 42,107,168,156,227,243,111, 31,
+101,205, 98, 52, 85,109,233,186,154,206, 86,108,219, 21,171,205,138,151,239,223,177,222,174,192,136,255, 53,167, 88,124,213, 74,
+186,108, 65,173,241,143,255,187,176,172,103, 91, 12, 95,141, 1,227,178, 34, 73, 74, 70,130, 41,201, 94,254,186, 19,206,249,186,
+ 75,207, 11,241,237,186,253, 16, 77,140,116,237,233, 43,171,219,172, 64,191,198,181,166, 11,109,174,248,214,245,223,137,225,254,
+ 30, 52,115,129,227, 92, 58,164,235, 76,115, 84, 97,142, 47,191, 62, 21,192, 78,249,245,164, 5,240,113, 58,159,137, 49, 97,180,
+164,105,169,146,146, 38,152,106,137,229, 76, 37,221,108,127, 60,226, 99,164,170, 20, 97,138, 76, 41,211,143,137, 16, 3,235,202,
+ 97,148, 3, 29, 49,217,145,179,188,155, 41,206,116, 62,153, 98, 62,245, 61,126, 12,220,221,172, 57,140,158,251,221, 1,155, 20,
+218,105,188, 15, 18, 0, 5, 76,193,147,114,192,118,146,163, 17, 35, 28,207, 19,168, 68,200, 10,219,104, 94,173, 58, 42,101,208,
+ 38,211, 56,133, 85, 50, 86,205,186,104, 40,102, 22,127, 18, 97, 95, 42,221, 26, 42, 99,106, 7,149, 70, 69, 75, 78, 94, 56, 4,
+230, 18, 21, 59,135,124,200,165,162,139,179, 65, 19, 11,167, 77, 37,153,146,250, 16,202, 26,166,100,207, 91,100, 12,109, 77,153,
+174, 4,140,149,209,111,142,113, 89,210,196, 44,239,168,206,162, 57,208, 86,201, 29,144, 52,181, 83,160, 2, 49,105,114,214,196,
+ 40, 86,180,202,104, 66, 97, 33, 40, 20,201,136, 31, 93,105, 37,225, 89,229,162,180, 37,235,192,207,184, 94, 53,135, 11,105,116,
+ 73, 81, 51, 86,154, 59, 93, 62,159,148, 5, 96, 21,162,216, 14, 67,200,226,233,159, 29, 65, 69,112,103,180,250,187, 21, 22, 75,
+ 60, 47,153, 98, 43, 84, 37, 22, 86, 47,122,143, 57,211, 98,241,178,205,240,163, 84,214, 67,133,136, 56, 51, 16,102,251,155,112,
+ 19,132,191,175,205, 92,252,166,229,239,211,247, 3,111,238,110,121,140,123,201, 89,175, 44,131, 55,140,227, 68, 83,139, 24, 90,
+101, 10,136, 70, 45,250,144, 37, 73, 80,205,147, 6,105,252, 42,107,203, 74,212, 57, 92,125, 81,212,122, 47,137, 85,155,170,161,
+235, 90, 50,153,190, 31,202,127, 87,116,155, 13, 41, 69,198,113,164, 89,175, 36,212,161, 8, 99, 83, 17,214,204, 21,127, 74, 25,
+ 45,208, 28, 82, 76, 88,163, 9,197,190, 96,140, 84, 95,155,187, 91,110,238, 54, 60, 61, 60,113,255,240, 72, 93, 55, 76, 83,164,
+247, 19,111,110, 54,156,251,145, 24, 2,110,189, 33,121,207,216, 15,120, 31,150,195,160, 48, 48, 33,139, 29, 69, 91,197, 52, 70,
+ 66,246,172,235, 53,174,170,241,251, 29, 77,129, 28, 84,218,226,170, 10,165, 28,195,110,207, 56,142,172, 94, 56, 76, 85, 51,229,
+204,155,119,111,184, 91,111,249,151,255,251,255,164,189, 91,227,125,224,221,251,247, 52,235,150,191,253, 63,255,149,237,237, 29,
+155,151, 47,248,240,151,191, 18,125, 96, 12,158,181,214,184, 70,186,175,224, 71,170,186,162,105, 91, 62,126,126,226,176, 59, 48,
+ 77, 19, 74,105,170,202,208,181, 13,117, 83, 17, 38, 41,110,246,187, 51, 10,195,186,182,124, 57,156,153, 66,226,166,109,202, 88,
+126,100,138,177,112,144, 69,151,160, 82,166, 49, 98, 33,169, 10,220, 96, 26, 61, 71, 31, 72, 74, 81, 89, 81,215,250,146,131,189,
+106, 36,138,181,115,154, 85,229, 56,142, 61, 19,240,178,109,177, 90,198, 59, 62, 4,177,175,221,221,240,249,241, 81, 24,234,136,
+176,164,109, 26,186,166,198,149, 73,206,148,164,163,210, 90, 97,140, 60,120, 66,251, 83,101, 23, 87,201,169, 97, 52,237,106,205,
+122,179, 42,217,213, 80, 55, 13,202, 9, 3,218, 89, 71,219, 53,184, 90,243,241,215,123,234,198,161, 12, 12,163,103,156, 70, 80,
+154,126,244,140,254, 72, 93, 57,170,162,113,172, 93, 77,239, 71, 62,252, 38,163,239,174,174,232,234,154,227, 52,241,188, 63,115,
+107, 86,116,186,162, 74, 37,174, 80,107,152, 50,247, 15, 15, 80, 57,186,198,113,119,211,241,205,183,111,184,125,121, 71,163,128,
+ 48,114,122,122, 66,133,140,162,226,251,223,158, 8, 57,243, 31,191,251,142,117,227,120,252,242,137,195,241,196,253,243,142,239,
+127,254,149, 73, 91,182,171, 13, 85,213, 80, 57,205,170,174,216,237,118,124,121,120, 36,104,133,110, 44,109, 91,211, 57,203,186,
+171,104, 87, 13, 55,111, 95,178,218,110,139, 66, 89,198,129, 50, 86, 46,223, 99,217, 38, 95, 51,201,191,238,140,175,198,226, 74,
+ 0, 43, 51, 19,188,164, 70, 47,153, 15,249, 10,175, 25, 75,190,192, 5,117,121,221,113,231,175,149,185, 37, 28,227, 90,193,171,
+ 22,225,208, 21, 67, 59,167,175,190, 38, 57, 45, 59,125,242,165,171,249,199,193, 67, 94,206,145,203,126,127,198,109,170,197,114,
+247, 53, 17, 47,127, 69,148,155, 45,105,135,131,216, 44,115,206,180, 14, 98,200, 24, 37,126,246,144, 50,227,105, 36,199,128,202,
+138,231,195,158,113, 10, 24,107, 25, 39,143,198, 50,122, 25, 91,182,149, 76,196,172, 82,196, 98,125, 11, 81,186, 94,157, 21,163,
+151,243,237,228, 37,221,108,187,222,240,184,219,243,184, 63, 82, 87, 21, 74, 43,166, 32, 0, 17,149,242,194,208,115,198, 17,114,
+ 36, 76,137,172, 28, 70,103, 92,101,185, 93, 55,108, 87, 53, 55, 93,195,176,239,137, 57,160, 85,181, 76, 44,102,129, 86, 46, 8,
+ 80, 51, 95, 14,170, 76, 1,148,162,170, 26,114, 44,182,180, 36,147, 20,163, 53,100, 51, 51,137, 74,120,161,196,115,202, 56, 95,
+200,110, 0, 58,102,130,202,130,141,141,242,249, 91,235,164,147,215, 96,180,168,247, 65,248,229, 51, 61, 80, 44,190, 34,172, 77,
+ 73,140,150,177, 88, 0,149, 54,104,157, 10,108,200, 64, 72,164,168, 80, 70, 62, 17, 83,216,232,126, 10, 66,197, 51,102, 65,120,
+199, 28, 23,170,218,188, 78, 73, 37,115, 32,149,137,172, 54, 26, 87,187,146, 49, 32, 88,104, 59, 23,165, 73, 82,242, 98,130,126,
+242,132,226, 54, 72, 81, 23,188,175, 46, 2, 57, 81,209, 95, 85,196,151,169, 72,240,104,235,208, 70, 73, 63, 51,195,101,162,224,
+152,151, 96,151,191,155, 64,133,148,190,154, 32,169,121,170, 69,177,237,205, 68,123, 37, 44,132, 5, 87,171,224,216, 15,242,179,
+115,110, 73, 73, 53,214, 49,249, 64, 87, 53, 75,129,102,203,154, 83,128, 52, 69, 4, 90,138,188,172, 53, 49, 69,124, 74,212,149,
+196,237,106, 9,113,177, 98, 27,200, 25,159, 4,214,190, 90,175,105,234,138,156, 18,135,227,153,156, 50, 85,215,208,174,196,230,
+148, 83, 22,156,101,200,196, 44,129, 26, 66,174, 82,203,195,131, 50, 37, 12,225, 2,126, 24,163, 80,177,146, 18,254,240,234,102,
+205,221,237,134,207, 95, 30,153,178,140,115,135,105,162,106, 43,186,182, 97, 24, 71, 17,140, 85, 21,227,228, 9,147, 39,198, 36,
+227,159,172, 80, 89, 23,182,124, 34,121,207,177,151, 96, 15,109, 52, 77,215,226,167, 9, 63,150,209, 94, 9,148,209, 90,145, 53,
+ 28,158,158,165,122,111, 90,180, 54,172, 86,107,222,190,127,199,111,127,251,153,231,221,142,245,122, 67,210,153,223,255,211, 31,
+249,229,199, 15,124,248,225,123,254,240,223,252,153,167,243,153,221,110, 79, 74,153,177, 63, 81,181,173, 8, 29, 20,164, 56,208,
+109, 55,156,135,192,121,127,226,124, 62,147,178, 36,254,212, 86,179,234, 42, 84,148,131,224, 60,140, 28,142, 61,155,182,129,152,
+ 56, 14,169,136, 1, 13,227,228,233,167,177, 60, 52,151,135,169,210, 80,105, 69, 93, 82,188,166,224, 57,140, 35, 62, 23, 63,166,
+ 51,140, 5,239,217,213, 21,141,179,212,198,208, 88,195,201,143,132,148,185,105, 91,225, 26, 91, 91,236, 16,240,234,229, 29,207,
+199, 61,231,190, 95,192, 97,174,170,232,186,181,228,248, 38,228,231,190,144,191,116, 81,108, 74, 70,122,158,130,228,213,107, 5,
+198,209,118, 29,205,166,147,184,207, 40,240,133,152,165,171,106,218,142,182,235,104, 87, 29, 47, 95,191,224,247,127,124,207,106,
+211,114,123,187,230,246,166,229,238,102, 77, 99, 29,198, 58, 73,135,154, 38,249,122, 77, 77, 78,145,182,105,112, 77,203,211,254,
+204,241, 52, 98,156,101,187, 89,147, 28, 28,250,129, 90, 87,101,143, 41, 42,224,199,251,123,166, 24, 88,181, 13, 55, 55, 43,222,
+125,251,146, 87,223,188,160,105, 26, 42, 29, 25,158,118,196,126, 66,141,153,191,252,186,227,220, 15,252,249,219,247,188,218,110,
+ 56,238,158,217,237,246,220, 63, 61,241,211,175,159,240, 73,209,212, 13,166,118,212,181, 99,211, 85, 76,227,200,231, 47,247, 82,
+ 72, 57, 67,215,214, 52,149, 99,213, 84,108,182, 29,219, 55, 55,172,191,121,133, 50,151, 61, 52, 41,149,196,167, 75, 48, 68,186,
+ 26,135,171,252,117, 82,216,114,176,150, 68, 53, 81,166,199,203,174,186,116, 11,186,116, 32, 5, 11,118, 21,190,146,150,160,137,
+ 84, 38, 63,210, 53,164,194,124,207, 87,236,246,188,136, 80, 33,125,149,105,126,189, 71,151, 78, 59,205, 11,196,242,245,243, 82,
+ 76, 93,188,187,122,193, 90, 74,147, 51, 79, 12, 18, 49,196, 11, 79,123, 86,226, 23, 72,212,124,169, 95,255,147,114,228,241,105,
+207,254,249, 44, 23,180, 49,164, 20,136,229, 92,240, 83,224,227,175,247, 60, 60,237, 73, 62,242,180, 63,114, 26, 70,124,204,244,
+125, 32, 39,139,247, 9, 31, 36,240,195,100,168,140,129, 44,226,172, 41,122, 66, 76,196, 8, 79,167,129,135, 83, 79, 76, 94,210,
+ 39,179,230,243,211, 19,191, 62,237,208,214,225,202, 46,213, 88, 91,254,142,133,101,174, 4,159,154,131,240, 5,156,203,116,171,
+134,215, 47,110,120,115,183, 97,221, 88,134,243,137,148,189, 36, 83,214,245,133,157, 31, 4, 92,146,162,236,198, 75,196, 14,118,
+254, 12, 53, 24, 91, 75, 17, 84,158,133,164, 75,246,204, 18, 86,163,200,218,200,165, 24,195, 69,116, 88,158, 1, 41, 40, 21, 97,
+154, 47,185, 92,132,204, 94,216, 30,165,163,181, 70, 99, 77, 57, 95, 75, 3,149, 98,198,135,204, 52, 5,250,209, 51, 76,129,113,
+138,210,104,165, 72, 38,149,240, 22, 39,105,108,200,184, 57, 21,155,165, 49, 34,246,211, 42,203, 20, 35, 37, 66, 10, 50,129, 48,
+226,155,143,105,182, 30,170,130,162, 45, 62,108, 99,231, 25, 55,222,123, 84,101,240,209,147, 66, 32, 77,113, 17,246,133, 40, 30,
+123, 99, 77,225, 46, 80,180, 42,122,121,166,174, 65,194,177, 20,147,162,136, 87, 66,223,156, 3,139,162, 20, 84,250,250,179,205,
+151,236,129, 88, 38,154,194,141, 23, 63,249,197, 5, 82, 38, 77,186,144, 29,185, 56, 62,140,209,236,142,123, 38, 31,104,219, 10,
+ 63, 77, 40, 35, 98,102, 31, 3, 57,201, 93,152, 73, 24,171,139, 59,230, 42,130, 89,203,133,158,181, 33, 33, 19,145,140,216, 38,
+173,179, 22, 93, 22,249,202, 88,252,105, 66,107,205,122,179,198, 88,169, 32,246,251, 61, 41, 39,218,174,165,170, 42,217, 9, 33,
+137, 56,177, 72,240,231, 81,133,186,174,100,148,128, 34, 98, 18, 22, 59,200, 88, 37,165,132, 77,153,117, 87,177,217, 72,199,115,
+255,240, 68, 83, 96,248,163,159,216,214, 50,230,159, 98,160, 49, 22,188,116,112, 33, 74,215,175,179,236, 13,147, 18,190,187,206,
+130, 36,237,199,137,132,162,173, 58, 86,166,225,243,248, 72, 54, 23,193,143,177, 86, 14,130,201, 51,238,143, 2,253,175, 29,218,
+ 90,182, 47, 95,144, 43,205,175,223,127,224,197,235, 23,196, 20,121,243,246, 45,235, 23,183,252,203,255,242,191,114,243,230, 53,
+ 47,191,249,134,191,254,229, 67,177,161, 77,196, 16,176,117, 93, 70, 86,145,152,224,197,171, 23,124,122,120,100,183, 59, 51,250,
+ 32, 32,134,202,208,212, 21,181,179,244, 33,210,143,158,253,121, 32, 41, 81,164, 63,158,143,100,163,105,108,197,228, 61,195, 32,
+213,112,214,186, 84,127, 2, 70,176, 90,203,184,215, 74,166,248, 97, 26, 25,100,201, 37,158, 78,157, 73, 62,210,214, 21,117,101,
+177, 86,211,185, 34,178, 75,137,170,174,105,172, 69, 91,181, 96, 53,239,238,182,132, 52,113, 60, 12,168, 88,160,120,198,112,179,
+ 90, 75, 54,114,142,132, 20, 22,184,205,114,120,205,185,210,222,227,156, 28, 6,202, 66,189,106,233, 86,107, 80,154, 36,160,224,
+ 82, 24, 20, 48,132,177,152,198, 97,180,197, 42,135,123, 81, 49,180, 13, 49, 76,156, 78,154,243,105,192, 25,135,218, 31, 24, 12,
+244, 39,233,158,214,155, 53,102,232,241,163,103, 85, 85, 84, 70, 51, 4,143, 75,129,155,186,227,150, 10,155, 12, 86,105,140, 19,
+106,215,238,105,199,195,211, 35,237,205,150,110,219,241,238,253, 75,222,189,123, 73, 87,183, 56,147, 57,159, 79,244,199, 35, 90,
+ 53,124,120,234,249,248,116,226,159,223,189,229,155, 23, 55,132,211, 19, 79, 15,247,124,254,120,207, 79, 31,159,233, 39, 33,228,
+ 85,206,210,214,150,205,218, 98,130,225,167,207,191,240,124, 60,160,157,165,107, 27,154, 74,252,255,155, 77,199,246,246,134, 87,
+223,190,197, 42,131, 42,182,163,116,149,188,166,224,171,160,145,101, 10, 93,104,140, 95,179,218,139, 66, 56, 21,161,143, 82,139,
+ 90,253, 58,190, 52, 95, 5,162,124,117, 33,166,203, 20, 45,231, 88,216,237, 37, 95,124,158, 0, 44,232,217,162,190,205,169,140,
+ 40, 47,201,110, 74, 73, 71, 22,230,157,169, 18, 7, 68, 10, 18, 19,116,217,155,171,175,124,236, 51,238, 83, 46,254, 57,165, 77,
+236, 69,194,136, 42, 43,131,101, 92, 47,145,178,115,119, 53, 69,207,238,241,196,238, 56,210, 86,134,182,118,228, 56,113,158, 60,
+ 86, 67,127,206,252,252,235, 19, 57, 71,222,108,183,236, 14, 71,142, 99, 32, 38,137,179,212,198, 48, 69, 8, 65,161, 83, 66,153,
+ 72,109,133,123,241,116, 30,136, 41,227,148, 16,187,158, 78, 35, 63,126,121,102,181,233,232,108,141,159, 20, 95, 30,158,121, 78,
+131,192,101,148,150,239,203,202,129,157,149, 46,155, 78, 95,252,252, 26,157, 51,109, 91,113,183,105,233,218,150,198,106, 76, 41,
+162,140, 21, 87,200,186,105,208, 89,136,151, 66,243,131, 24,138,216, 56, 43,146,153, 97,245, 82,208, 81, 87, 36,173, 72, 33,202,
+ 31, 19,229,103, 40,153, 30,115,170, 88,134, 88,130,127,202,248, 62,230, 80,172,136, 26,175, 32,123, 73,152,155, 81,173,114,190,
+ 24,176,178,194,152, 51,186,181,186, 92,250, 90, 27,156,133,156, 12, 65, 75,186, 34,101, 69,145,114, 17, 40, 98, 74,208,147, 66,
+ 85,178,102, 12, 33, 45, 69,154, 82, 6,103,117, 41, 46, 50, 30,136, 73, 46, 82,171,228,231,146,203, 69,153, 17, 17, 93, 34, 96,
+107,131,211,142, 88, 46,188, 24, 50, 86, 89,129,223,100,133,247, 1,173,161,170,139, 45, 76,103,153, 4,204,238, 17,117, 29,170,
+203,146, 98, 56, 79, 5, 68,239, 97, 81,106,146,187,162, 20,159, 49, 6,106,237, 68, 92,151,178,224,117, 53, 87,107, 45,153,104,
+104,237,136, 25, 89, 53, 43,141,210, 9,149, 74,129,157,197,129, 16, 67, 40,159, 67, 64,107, 71, 26, 18,253,112,166,170, 26, 78,
+231,147,136, 1,173,140,253,167, 20,209,218,200,122,169,178, 75, 56, 89, 46,150, 78, 20, 68, 37,108,249, 24, 89,108,157, 70,105,
+172,182, 22, 53,103,118, 89, 24,199, 1,173,197,163,110,157,208,116, 66, 47,140,119,107, 45, 86, 91,134,225, 84,140,255, 53,167,
+131,236,116, 84,146,244,248,148,229,210,157,213,151,228,146,125,173,132,230, 59,197, 32, 3,137, 24,169,171,154,215,111,223, 18,
+ 66,224,243,253, 61,214,213, 76,227,132, 74,137, 77,211,208,199,145, 64,166,118,150, 20,162,136,228, 66, 20,193,134,154, 25,216,
+ 25,167, 4,163, 25, 74, 56, 67,183,234,104,109, 69, 74,129,209, 79,212,214,202, 77, 85, 42,174,218, 88,246,135, 3,211,121, 66,
+173, 29,186,118,108,222,220,209,173, 87, 60,252,244,145,112, 62,240,250,219,215, 88,231,120,243,237,183,124,252,248,137,143,127,
+253,137,255,241,127,254,159, 72, 65,241,240,249, 1, 85, 59, 78,231, 19,141,178,180,237, 10,101, 20, 41, 76,220,110,110, 64, 87,
+ 28, 31,247, 28,246, 7, 98, 76, 84,181,168, 97,219,166, 6,228, 1, 28,124,228,124, 30,105, 42, 67,204,158,115,204,180, 78,227,
+148,226, 52, 78,132, 52, 17, 74,231,155,201,184, 25, 67,168,160, 81, 22,163, 28,167,105,226, 52,137,197,199,104,161,249,132, 16,
+169, 74, 23,233, 52,180, 70, 97,146,102,202, 17,171,140, 84,222, 26, 41,138,114,102,187, 94, 83,183, 13,159,191, 60,148,177,169,
+124, 78,221,170,197, 57, 77,246,190,140,174,212,140,193,150, 81, 95, 57,120, 67, 8,212, 70,252,173,218, 40, 92,211, 80,181,173,
+ 80,142, 66, 4, 83,210,173, 74,119,143,138,242,239, 90,161,107, 39,121,233, 94,186, 16, 31,172, 68,255,218, 19,207,143, 59,214,
+155,138, 54,214, 52,110,226,120, 62, 99, 27, 75,179, 89, 99,245,137,227,254, 76,179,110,233,170,181,168,137,115, 98, 85,175, 81,
+ 94,188,205,174,117,244,231,158,199, 47,247,228,182,101,221, 84,124,247,246, 5,111,190,121, 41,144, 12, 13,105,154,232,119, 59,
+ 12, 53,191, 61,120, 62, 60, 62,243, 79,175,223,242,205,235, 45, 33, 14, 60,239,118,124,252,244,192,143,159,190,136, 45, 80,107,
+148,117, 52, 93,199,237,106, 77,173, 12,191, 62,124,226,241,241,137,108,196, 59, 92, 87,142, 90,107,186,117,203,234,102,205,246,
+205,157,140,255, 72, 69, 93, 60,163, 55,175, 18,206,150, 3,143,197, 71,107, 84,201,110, 46, 23,106,113,113,149,190,187, 80,187,
+244,215,162,179, 37,235, 27,137,170,188,236,189,175, 16,173,234, 58,105,236, 34, 66, 83,215, 98, 58, 68, 8, 37,245, 92, 1,193,
+240,119,138,223, 34,174,154, 99, 73,115, 1, 79,169,116, 69,209, 90, 4,117,243,110, 94, 20,242, 41,202,101,173, 50, 37, 30,147,
+ 5, 22, 34,133,134, 41, 65, 22, 2, 67,241, 68, 78,167,145,167,199, 29,231,115,166,109, 52,206, 73,118,244,105,127,162, 54,154,
+179,143, 28, 14, 35,167,113,224,166,107, 8,113,146,203, 59, 87, 34, 52, 83, 90, 32, 89, 41,203, 88, 54, 70,234,202,225, 42,203,
+167,135, 3,143,103,207,237, 74, 46,204,253,185,231,151,167, 29,109, 93,243,221,230,150, 56,245,252,252,124,226,204, 68,101,197,
+218,166,163,184, 22,170,218,144,173, 98, 28,203,126,213,233, 66,253, 75,220,118, 43, 94,108, 58, 81,128,171,136,210, 18,134,101,
+140,147,198, 68, 27,148, 83,228,233,107,187,212,146,252, 85,166,139,233,138, 3, 96,157,147,169, 87,146,255, 32,108,254,130,200,
+ 45,157,102,138,136,178, 94,171, 5,120,146,196,144,180, 68,232,102, 31,151, 46, 30,157,201,170,196,106,147,229, 88, 45,182,170,
+ 37, 80,101,214,101,164, 44,145,211,101,109, 99, 12, 24,139,248,198, 67, 92, 30, 96,209, 54,104, 73,245, 84,114,177,203, 90, 35,
+148,201,134,194, 36,197, 84, 34, 83, 77,241, 88, 15, 37,130, 85, 52,107,226, 48, 82, 73, 50, 40,210, 21, 32, 41, 37,137, 92,141,
+ 5, 38, 22,188, 23, 5,187, 49,140,126, 42,247, 78,153, 92, 21, 31,254, 87, 9,124, 69, 44, 74,206,139,231, 60,155, 9,249,148,
+ 68, 23, 15,154, 16, 38, 82, 42, 80,158,171,247, 68,107,117,153,118,101,241,152,167,146, 45,178,196,159, 47,171, 19, 89, 85,162,
+ 4,205,156, 82, 66, 91,209, 49,156, 78, 35,111, 94,111, 57,229, 51, 49,102,108, 37, 69,137,247, 30,231,244, 18,177,100,180,196,
+129,235, 37, 59,240,106,202,151,149,128,202,138, 80,213, 90, 35, 72,213,148, 36,218,206,123,233, 60,187,245, 10, 91,213,236,247,
+247, 75, 72,132, 91,173,208,214, 16,124,160,105, 90, 65, 19,198, 68,244,129,156, 37,126,112, 78,145,202, 41,131,206,197,175,167,
+202,200,199, 51,198,204,148,160, 85,142,182, 93,115,247,226,150,251,251, 47, 28,118, 71,148, 86,210,165, 55, 45,174,170,216,157,
+207,212, 70, 82,119, 82, 73,125, 27,189, 47, 15,186, 84, 65, 53, 34, 50,233, 81, 68,103, 89, 89,203,166, 91, 99,141, 97, 26, 39,
+166, 97,196, 52, 21, 42,205,227,119,217, 67,159, 79, 71,198, 0,171,170,166,187,189,227,237, 55,223,242,233,183,223,184,255,237,
+ 51,237,237,150,186,109,233,110, 54,108,215,107,254,143,255,237,127,103,181,222,240,135,255,246,159,121,252,248,145, 49,140,104,
+ 87,243,180, 63,240,170, 91, 19, 53, 84, 6, 66, 72,220,220,189,228,116,234,121,126,220,113, 26, 79,232,210, 85,175, 26, 71,235,
+ 12, 67,136,244,227,196,185,247,104, 35, 59,178, 83, 47, 22,182,202, 42,122, 31, 25,166,114,248,104, 13, 69,151,160, 72, 50, 42,
+ 68, 18,124,114,206, 28,250,145, 52, 63,160, 90, 51,166,140,182, 26, 87, 89,180,206,226,251, 70, 17,150,188, 93, 77,163, 77,217,
+ 99, 10, 77,109,189,105,249,242,180,103, 26, 75,204,130,214, 52,173,172, 89,210, 24,138,240, 81, 68,122, 90,201,120, 39,149,136,
+ 85, 16,187,135, 41,222,201,166,110,169,234,166,168,166,133, 34, 21, 11,232, 65, 23, 38,129, 8,185,204, 87,193, 48,166,146,104,
+ 85, 53, 57,140, 14,140,227, 68,221, 85, 84,185, 38,167, 44, 74, 89, 39, 58, 11, 51, 25, 92,213,112,247,162, 18,141, 68, 93,163,
+148,102,240,158, 70, 59,162, 19,139, 31, 33,243,248,248, 68,168, 12,119, 77,197, 55,223,190,228,155,247,175, 89,215, 21, 86, 3,
+ 42, 48, 60, 31,201,222,242,208, 71,126,125,124,224,245,205,150,215,111, 94,162,167,129,199,227, 19, 63,254,242, 27,191,125,124,
+ 98,242, 16,178, 38,106, 69,215, 58, 94,109,215,212,181,225,203,253, 35,247, 79, 79,100, 45,232,220,186,182, 56,157,217,172, 26,
+214, 55, 43, 54,175,110,105,186,182,136, 9,103,113,153,190,112,213,103, 96, 83,142,203, 1, 42,222, 90, 37, 86, 38,117,221,141,
+203,239,204,112,245,251, 47, 23,115,202, 81, 68, 51,215, 89,226, 87,137,230,178, 26,154,189,235,178,141,191, 4,187,136,132, 74,
+205,128,154, 20, 23, 63,250,162,255,201,106,225,194,171, 82, 84, 95,236,164,210,237,155, 37, 79, 61, 94, 4, 72, 92,144,156, 58,
+ 11,152,195,152, 75,160,138,116,144, 69, 52,168,248, 10, 82,163, 77, 65, 53,251,200,126,127,226,112,246,108, 90, 25, 73,134, 73,
+246,234, 24,240,231,137,195,110,160,182,142,206, 56, 42,229, 48, 56, 38, 21, 25,252,132, 46, 54, 76,133,236,204,163, 31,168,157,
+165,117, 13,159,159,142,124,248,242,200,203,219, 27, 34,137,113, 72,124, 57,140, 24, 52, 47,215, 45,135,254,204,199,221, 65, 84,
+225, 86, 97,141,197,164,146,176,214, 88,108, 85,113, 26, 7, 66,140, 18,177,170, 44,182,146, 40,210, 55,219, 77,193,103, 39, 90,
+ 87,211,182, 21,117, 85,131,130,105,244, 24,180,236,180,203, 37, 49,123,218, 23,206,190,150, 75, 90, 25, 49,147,104,147,169,170,
+110, 89, 37,198,226, 36,178,214, 22, 1,165, 46,157,103,144, 21,104,128, 52,167,246,150,192,149,164, 68,173, 29,124, 44,247,151,
+232,106,102,118, 65, 74,160,202,179,183, 20,239,115,165, 24,243,178, 91, 86, 42,151,139, 77, 52, 16, 86, 43,177, 46,103,129,252,
+160, 46, 43, 29,109, 17, 77,142,215, 34,114, 14,158,202, 86, 56,163, 73,147,128,200,172,170, 48, 90,198,233,242,154,168,114, 89,
+ 7,177,226, 25,189, 8, 42, 3, 16,149,140,249, 67,136, 56, 20,147,159,100,188, 95, 68,126, 49,134,130, 86,149,239, 75,118,209,
+186,136,182,255,158, 1, 87,222, 39,175, 46, 83,145, 44, 43, 2,161,249, 93, 4,167, 41,167, 75,234, 33, 82, 92,205,244, 67, 97,
+ 41, 40, 41, 12,148, 42,136,230, 92,252,249,138,133, 21,147, 20,217,139, 0,239,120, 56,241,221,251,247, 56,109, 9,193, 83,183,
+150, 16,144,149, 99,221, 45,231,130, 53,134, 40,217, 58, 82, 16,199, 18,212, 68,198, 42,185,135, 67,150,233,132, 68,175, 2, 42,
+107,194, 20, 24,195,136,107,107,218,174,193, 40, 56, 29,246,196,224, 49,149,165, 91,175,200,136, 72,161,105,219,133, 80, 21,188,
+151, 84, 54,173,153,151,129,105,246,182,198, 72,212, 74,148,121,101, 87, 21, 72,232, 74,179,185,221,208,117, 29, 63,252,237, 67,
+ 73, 84, 74,168, 16,104,214, 27,134,178,183,215, 70, 23, 0, 5,140,222, 23, 82,221, 69,184, 99,139, 34, 48, 22, 63, 95,215, 53,
+212,149, 20, 2,135,195, 68, 82,186,136,188, 88, 88,194, 97,154, 56, 31,207,196, 4,245,102,195,239,254,252, 7,250,190,231,241,
+211, 23,140, 74,108,238,110,169,215, 45,171,187, 91, 14,143,207,252,245, 95,254,133, 63,253,231,255,142,186,169,185,127,124,166,
+106, 26,158,143, 7,242,228,169,110,110,209, 86,170, 56,219, 85,212,235, 21,127,251,254, 71,158,159,246, 68, 5,141, 51,212,198,
+208, 54, 13,209,192,112,242, 66,121,154, 38, 89,119,164, 68, 82, 18,211,151,149,252, 48,133,227, 92, 2, 28, 0, 83,188,144, 70,
+107, 42,235,192, 24,142,163,224,118, 77, 33, 24,133,114, 65, 54,174, 42, 74,201,178, 7, 42, 23,132,202, 66,147, 51,197,215, 84,
+ 55, 21,119, 47,111,217, 29,207,156,206,231,130,249,205, 37,219,125,133,142,101,220, 87,138, 52,173,203, 3,187,120,142,197,189,
+ 96,180,140, 78,171,166,198, 54, 77, 1,160, 20,198,119,137,147, 68, 75,218, 82,212, 50,150, 76,170, 32, 76,203,212,217,105, 85,
+172, 42,226,170, 64,105,110, 95,188, 16,125,197,185,199, 90,168,234,138,253,254,196,233,116,132,174,229,213,235, 55, 56,231,152,
+ 38,225,172,215,195,136, 74, 89,196, 75, 74,115,127,255,204,254,116,162,189, 89,243,246,221, 45,191,251,253, 59, 86,181, 65,231,
+ 68, 93, 25,206,135,158, 48, 70, 14,131,226,151,143, 59,186,186,227,221,203, 59, 12, 35,167,161,231,251, 31,126,230,215, 95,238,
+241, 81,246,221, 67, 74,108,218,134, 87,183, 91, 86,171,134,135,135, 39,190,220,223,115, 60,246,184,206, 82,213, 14,155, 19, 78,
+ 43,186,182,230,230,110, 75,187,237,202, 62, 79,127,165, 24, 55,203, 72, 89, 62,215,124, 77,101,227,146,155,144, 75,136,139, 86,
+146,250,148,191, 74, 64,203, 95,141,218, 41, 2,212,235,253, 55,153,194, 10,159,119,223, 87, 80,155,196, 18,133,169,203,220,119,
+233,198, 98,185,212,245,101,140,126,233,246,175,176,207,197, 10,148,230,242, 33,203, 72, 53,166, 8,152, 11, 11,190, 76,238,138,
+158, 91, 60,195,101, 13,103,150, 4,181, 75,171,154, 10, 80, 37, 71,136, 19, 60,239, 79, 28,142, 71, 54, 51, 61, 44,123,142,135,
+129, 16, 3,149,178,124,126, 60,209, 21,173, 76,109, 53,109, 93,161,115,230, 60, 14, 4, 52, 46,230, 50,202,140,156,142, 19, 21,
+134,174,117, 60,247,158,127,251,241, 87, 94,188,186, 35, 3,231, 62,112, 28, 38,142,227, 68, 87, 57, 78,131,231, 56,246,156, 99,
+162,182,154,106,166,123,229,132,171, 20,205,202,137,224, 78, 38,225,172, 42, 67,219, 58,186,206,177,170, 21, 42,201, 90,160,106,
+106,214, 93, 71, 99, 13,104, 35,238,159, 43, 49,214,220,141,167, 12, 97, 73,212, 75,196, 92,128, 59, 37,216, 71, 89,139, 46, 76,
+ 10, 65,191,250,178, 78,153,227,114,231,207, 53,151,119,204, 80, 12, 11,164, 28, 23,231,132, 20, 54, 97,150, 81,151,156,248, 2,
+233,146,146,141,172,181,184, 40,174, 1, 67, 90, 45, 60,131,124, 77,253,155, 61,241,148,224,146, 25,101,156,230,130,178, 60, 43,
+202, 80, 87, 37,244, 38, 65,182,138,168, 10, 86,216,234,101,138,148,138, 35, 35, 41,152, 98,192,145, 5,122, 85,154,137, 60,138,
+109, 90, 24,241, 17,178,193, 79, 94, 10,140, 66,128,139, 94, 38, 2,202, 92,166, 71,185,188, 95,233,106,218, 52,239,205,101, 74,
+ 25,151,200, 18, 61, 91, 39, 67,121,238,117,233,134, 75,158,185, 49, 22, 31,166,229, 93,212, 90,186,233,156, 46,186,147,217, 34,
+ 39,184, 91,181, 64,129, 82,226,178, 87,223,159, 9, 49, 98,107, 57,203, 86, 20,107,117, 8,133,253, 46,149,128,181,182,228, 53,
+ 92, 52, 57,164,128,202, 17,146, 20,119, 33, 68,180, 51,216, 92,254, 15, 85,246,113, 97,154,112, 85,205,106,213,225,172,208,219,
+198,105, 66, 91,129,209,164,148,100,143, 92,186,197,148, 2, 97,244, 24,157,151,170,126,174,224, 85, 22, 65,218,252,205,196, 40,
+158,196, 20,161, 94, 87,108,183, 27,114,214, 60, 62, 63, 81, 57,203,185, 31,168,128,218,106, 14,193,163,141, 37, 18,137, 62,224,
+106,199,185, 63, 22,178,143,196,207,233, 98, 63,152,146,140,228, 93,210,232, 98, 33,112,214, 20,148, 39,229,215,101, 76,241,249,
+141,199,145,225, 44, 20,188,215,239,223,243,226,238,142,127,253, 47,127,161, 63,246,220,172, 58,186,205, 6,215, 53,172,214, 13,
+255,246,255,254, 95,100,224,219,127,254, 3,231,231, 3,187,211,142,186,219,114,254,244, 17,149,133,128,166, 74,102,252,118,123,
+203, 24, 39,158, 31,159, 25,135,145,202, 41, 42,235,104,107, 71,211,212, 28,135,129, 97, 26, 25, 71, 9, 86,152, 33, 19,202, 9,
+136, 97,154,130, 60,156, 57, 17,181, 28, 30,202,232, 37,109,206, 24,141,181, 21, 83,206, 28,139, 24, 16,164, 26, 71,103, 26,231,
+ 48, 18,119, 33, 93,186, 49,203, 5, 97,141,194, 21,139,161,179,142,237,166, 99, 28, 70,118,135,211, 18,228,129, 86,172,214, 29,
+206, 26,194, 56, 46, 25,218, 74,107,129,165, 92,177,190,157,181, 50,134, 52, 96,107,139,109, 42,161, 91, 5,217,233,229, 57,155,
+ 24, 93,172,142,197,106,163,108,241,163,206, 93,168,150,188,229, 28, 25,135,158,224, 71,214,171, 21,117,227,228, 97,183, 70, 4,
+129,253, 64,142,130,244, 28,153,120, 60, 60,241, 98,123,199,106,181,194,247,163,164, 36,105, 77, 83, 55, 60, 63,239,120,222,237,
+112, 85,195,155, 23, 55,252,238, 15,239,216, 52, 21, 58,122,170, 78, 8,137,211,121,226, 52, 40, 62, 62, 28,169,172,230,219,215,
+119,172,106, 71, 26, 6,254,250,227,223,248,240,203, 39, 82,148, 24,197, 62,120, 92,211,242,122,187,101,219,214, 28, 79, 61,159,
+239, 31, 56,238,247, 88, 39, 52, 70,157,229, 51,110, 42,139,107, 43,214,183, 45,102,246,158,107,201,146, 54,101,112,166,149, 46,
+ 32,151,114,192,124, 21, 10,113, 57, 4,229,226,142, 36,125, 65,194, 94,123,192,245,178, 27,140, 69,121,205,226, 25,215,186,180,
+104,113,166, 47,241, 85, 18,155,196, 34, 95,132,120,121,161,186, 93, 41,229,185,136,221,114, 76, 92,231,176,204,130,187,139,240,
+ 79, 14, 99,169, 25,213,162,114, 95,178,218, 83,241, 53,231,204, 85,232,244,210,217, 47, 95,107, 49,223, 75,222,193, 56,121,142,
+135,115, 25,149, 70,252, 20, 25,199,158, 97,156,208, 74,241,248,112, 36, 71, 77,183,169,201, 41,225,208, 52,214,240,229,249,192,
+152,229,153,117, 74, 97,181,225,126,191, 35, 37, 77, 87, 59,140,213,252,245,195, 3,198, 89,186,166,102,119, 18, 65,235, 97,148,
+236, 2, 31, 19,147,143,140, 49,225, 52, 75,244,165,192,171, 4, 78, 99, 92, 73,208, 50,134,151,235,134,109, 39,211,154,218,105,
+156, 5, 21, 21,182,178, 84,141, 4,101, 41, 35,122,138, 56, 11,138, 89,144,125, 37,101, 60, 47, 34, 72, 9,164, 81, 69,127, 81,
+ 20,228,174, 38, 23,255,180,206, 69,189, 94,188,249, 57,138, 14,134,164, 23,249,123, 42, 51,230,184,224,122,229,162, 13, 33, 44,
+ 24,127,165,149,184, 40,202,122,111, 38,239, 73,144,202, 5,202, 50,207,171, 51,241, 98, 53, 75,178,171, 78, 41, 45, 23, 59, 89,
+244, 83,185,140,224,103,160,194,204, 70,176,166, 16, 20, 67,105, 16,144, 76,117,157,212,226,181,207, 73, 82,199, 50, 48,133,128,
+211, 10,231,170,139,134, 39, 36, 76, 33,254,197,148,153,130,151, 36,200, 40, 88, 86,165,141, 16, 57, 67,201,227,200,178, 50,208,
+204,207,183, 94,242,213,211,149,247,156,175, 10,223, 75,144, 80,240, 97,153,134,164,148, 36,249, 77, 95,208,199, 41, 74, 83, 22,
+141,104, 82,102,157, 11, 75,230,137,168,243,173, 53, 76, 83, 88,222, 51, 99,133,139, 50, 76, 19,206, 57, 14,135, 61,232, 27,172,
+213, 28,207, 18,221, 59,127, 45, 83,242, 56,174,185,242, 57, 69,108, 22, 50, 96,158, 63, 59,103,176,106,222, 19, 40, 17, 95,248,
+105,228,229,237, 55,116,171, 21, 33,100,206,103, 81, 67,119,174,162, 91,117, 66,116, 59,156,184,189,221, 10,119, 57, 6,194, 56,
+161, 26,189,140,196,115,217, 13,234,226, 57,204,229, 67,237,189, 8,174, 84,138,108,186,142, 87,183,119,156,207, 39, 30,118,207,
+228,152,152, 38,207,182,105,240,185, 0, 57,140, 99, 10, 19,138,204,241,212,227, 67,190, 98,201,103,108, 18,250,107, 72, 73,186,
+124, 95, 30, 52,171,201, 58,211,159, 7,170,202, 72,197, 89, 54, 53,206, 90,206,251, 29,193,103,214,119, 45,223,252,135, 63,177,
+127,218,243,116,255,136, 53,134,205,221, 29,117, 43, 65, 40,126,240,252,248,215, 31,248,238,207,127,100,251,250, 53, 31,255,245,
+ 71,172,173,136,126,226,249,233, 25,215, 84, 88, 83, 14,106,231,184,185,185,225,211,151,207, 60,220,239,137, 25, 26, 87, 97,181,
+162,109, 27,124, 12,140,147,103,242,129,209, 71,208,154,201,123,140,146, 66, 36, 1,126,244, 75, 71,147, 75,117,110,203,225,111,
+140,161, 50, 18,201,215, 79,158,168,114, 81,254,202, 30,165,178, 26, 91, 54,162,149,206,212, 70,232, 67, 49, 39,116, 22,143,166,
+ 43,244,183,182,107,200,198,242,244,180, 35,132,184, 28,226,171,166,163, 93, 53,132,193,203, 33, 60, 79, 11,202, 59,157, 74, 17,
+ 98,172, 22, 22,187,209,184,218,226,106, 39,208,143,156, 22,234,152, 70, 75,188,161,192, 11,165, 0,210,154,140, 39,150, 52, 16,
+163, 13,168, 72, 84, 10, 63, 78,244,199, 35,117,235, 88,175, 90, 25, 49,105, 37, 83, 16,229,136, 62, 80,213,142,166,173, 73, 57,
+178, 63, 13,220, 63,124,225,229, 77,194, 37,249, 51,170,186, 97, 24, 2, 79, 79,143,104,171,120,245,122,203,119,239, 95, 83,181,
+ 13,169, 63,178,222,174,132, 34,184,239, 9, 67,226,195,211, 4, 33,240,251,111, 94,177,233,106,114, 8,252,245,199,159,248,203,
+ 15,191, 72, 53,157, 97,127,158, 48,157,227,237,237,134,151, 55,107,198,209,243,249,254,158,221,241, 64,208,138,174,169,228,115,
+205,153,186,118,100, 35,184,220,201, 71,234,166, 4,174,164, 84, 80,201,197,242, 57,219,105,210,178,160, 91,186,116, 53,199,176,
+148,201, 73, 76,178,167,252,251,248, 84,217,179,139,125,140, 37,109, 85, 45,251,190,124,213,121,115,229,109,207,197, 94,131,186,
+160, 96,175,199,245,179, 90,184,136, 96,228,123, 93,150,189,255, 24, 18,243,181,194, 62, 47, 30,223, 25,145,169, 74,231,119,233,
+210,213,162,190, 87,165,232,204,177,116,163, 37,220, 99,206,112,247, 33,209, 15, 35,253,105,164,109, 42,124, 8, 12,231,158,211,
+185, 71, 43, 17, 73,158,167,196,109, 93, 83, 41,197, 80, 44,143,187, 83,207, 97, 10,120, 52,149, 73,220,108,214,252,252,229,153,
+211, 24,105, 93, 98,221, 53,252,244,176,231, 48, 12,188,123,185, 97,127, 58,113,242,137,148, 3, 99,148, 88,211,104,102, 82,152,
+146,119,171,172, 12,140, 22,107,106,213,136,253,169,109, 21, 93,103,185, 93,213,116,141, 4,142,136,152, 74,132,116,206, 89, 89,
+159,149,206, 51, 5,105,138,116,201,107,200,145,101, 26,150,151,139, 83,236,108, 75,187, 87,198, 53, 89, 25, 2, 9,147,138,245,
+107,246,209,167, 80, 84,217, 23,139, 23,243,238,185,140,137,211, 60,210, 73,133, 64,150,202, 25,109, 21,198, 42,162, 47, 41, 96,
+186, 92,104, 89, 23,132,145, 18,187,160, 94, 64,192, 50,221, 81,154, 56,239,159,165, 58, 93,112,198, 51,155, 95, 14,178,249,236,
+239,100,191, 0, 0, 32, 0, 73, 68, 65, 84,162, 44,127,171, 44,231,157, 80, 79,101,186,228,140,172, 9,117, 9,106, 73,170,156,
+ 13,169,232,179,140, 20,206,243,202,206,135,136,109, 75,238,121, 33,105, 46, 36,193,100,168,157,147,175, 93,146,222,140,210, 24,
+ 61, 59, 52, 36,237,110,206, 16,152,125,240,243, 38,127,230,188,207, 59,247,172,228, 82,119, 11,113, 85,166,163, 66,122,203,139,
+ 26,222, 90,240, 41, 47,147,234,139,133,115,118,144,176, 56, 64,230,130,216,106, 75,136,129,227,238,192,171, 55,175, 36,126,213,
+ 75, 14,123,140,137,161, 80, 59,125,240, 56, 99,150, 21,222,188, 64, 48, 90, 84,240, 49,235, 69,171,146, 41,209,171,243,156,254,
+116, 62,227,207,145,237, 31, 54,180,109, 43, 17,163,163,196,103,174, 87,107, 76,101,152,124, 64, 91,201,196, 69,101,226,232, 9,
+ 97,164,166, 19,111,161,154, 29, 46,229,177, 84,102,169, 66, 67,136,132,152, 49, 57, 81,213, 13,221, 77,203,253,243, 19,126,136,
+120, 63,145, 38,207,234,246, 22, 31,147, 8, 11,128,105,154,112, 74,115, 30,199, 50, 74, 74,165,115,148, 93,238, 24, 70,217,121,
+196, 36, 62,205,156,168,218,154,225,124,102,244,145, 85, 55,231,193,151,136,208,152, 25,251, 51, 97,128,247,255,195,159, 88, 53,
+ 53, 31, 63,126, 38,132,137,237,246,150,213,235, 59,136, 35,245,102,197,199, 95,126,101, 56, 29,248,243,127,255,159, 73,211,196,
+254,121,143,181,150,135,167, 29,199,115,207,205,237,150,202, 25,148,142,180,171, 27,178,214, 60,254,118, 79,127,218, 99, 43,137,
+139,109, 43, 71, 87, 85,156,253,200, 52, 37,134,193, 67, 82, 4, 5, 67,138,172,173,236,186, 39, 47, 64,157,116, 97, 15,201, 65,
+ 87,104, 74, 78, 57,180,177,140, 41, 45, 63,248,160,197, 0,170,213,124, 88, 42,106,147,169, 69,153, 83, 34, 13,193,105,168,140,
+ 92,170, 77, 85, 81,173, 28, 79,135, 19, 99, 31, 74, 34, 19, 84, 85,197,186,107, 80, 83, 36,205, 23,189,154,199,189, 23, 11,147,
+209, 69,108,103, 52,166,146,157,162,228, 92, 71, 57,180,202, 72, 89,150,121, 90,236, 34,203, 62, 94,162, 65,209,151, 10, 84, 41,
+136,211,200,208, 15, 24,171,168,235,170, 68, 36,170,146, 39, 12,195,249,132, 87,137,237,237, 45,214, 26, 98,152,168,234,134,227,
+126, 36, 14, 3, 74,105,172,173, 81, 90,179,223, 63, 49,229,204,221,171, 59,126,255,221, 43,222,188, 90,147,247, 7,170,109,131,
+174,106,250,253,196,120,142,124,124,234, 25,199,137,223,191,121,201, 77, 87, 65, 12,252,245,135,159,249, 47,223,127,148, 56, 67,
+ 52,199,222,227, 26,199,139,155, 45,175,214, 43,124,246, 60, 60,239,121,122,126,226, 60,156,169, 87,107,185,248, 66,160, 94, 55,
+ 84, 77, 69, 32,115, 26,122,134, 97,160, 91,175,208,133,197,174, 98,209, 23,104, 45, 26, 19,173, 23,133,186,154,195,207,148,176,
+187,101,164, 56, 19, 16,245, 18, 60, 65, 65,159, 94, 34, 78,175,252,219, 73, 2,127,102,218,212,236,119,230,226, 70,159, 79,169,
+ 66, 27, 99, 17,237, 80,198,139,249,234,114,206, 37,171,121,206,105, 23, 56,206, 5, 37,123, 17,194,165,229,249,144,130,165,196,
+ 79,146,201, 49,148,162, 33,255, 67,135, 63,119, 74,204,130, 65,115, 25, 1,199,152, 25,166, 1, 63, 69,158,158, 79,196, 56,226,
+ 26, 39, 68,184,243, 89,166, 6,202, 16,162,197,217, 72,109, 69, 61, 94, 89,135, 15,240,176, 31, 25,178,168,166,223,108, 87,252,
+242,180,227,254,169,167,170, 20, 93,221,112, 26, 60, 63, 60, 14,108, 93, 69,244,240,124,158, 24, 75,208,211,188, 49,202, 74, 96,
+ 36, 85, 9,105,209, 58, 97,147, 60,195,117, 87, 99, 43,131, 49,154,186, 10,172, 42,209,204, 56,167,175, 34, 70, 37, 34,215,205,
+ 7, 57, 34, 58, 12, 33,145, 98,196, 25,169,116, 98,138,228, 84, 68, 96,139,240, 42, 94, 14,239,242, 14,106,125,121, 6, 18, 17,
+ 82, 34, 4,177,152,154,108,174,136,193,165,211, 87, 23, 82, 28,101, 52,159, 83,150, 8,228, 50, 41, 80, 78, 46,245, 20, 47,168,
+ 97,165,103, 21,253,124,177,205,188,131,153, 93,240,181,189,113, 25,205, 43, 37,201,119, 74,214,133,106,137,240,205, 75, 49,160,
+181, 52,129, 26,133,202,102,161,171,181, 78,196,140, 57, 9, 18, 59,229, 76, 93, 88,231, 83, 76, 40, 43, 49,211,190,232, 7, 82,
+138, 56,163, 74,193,155,240,195, 40,251,229,249, 98, 47,123,232,152, 19, 24,131, 78, 89,196,138, 6,130, 23,214, 71,249, 88, 80,
+ 81,246,243, 41,170, 37,187,125,126, 14,103,143,249, 44, 38,149,169, 99,198, 89,137,128,157,167, 29, 41,133,226,233,175,136,113,
+ 18,122, 94,153, 78,204,104,180, 28,197, 61,160, 74,218, 97, 74, 1,146,163,170,107,206,231, 1,103, 45, 86,137,134,160,109,106,
+ 98,140, 11, 63, 36,196,176, 96,195, 23, 30, 68, 17,202,104,103,209, 62,149,149, 86, 32,133,136,157,213,213, 10,196,243,167, 20,
+109, 43,149,111,140, 19,147, 15, 40,165,105,187, 22,107,173,196,102, 42,233,248, 66,152, 8,147, 47, 60,219,107, 74, 84, 68,229,
+ 9, 31, 43,188, 82,104,107, 80, 89,246,130,147, 18,197,229,237,122, 77,187,221,242,183, 15,191, 48, 5,233,246,155,186, 94,176,
+119,198,182, 2, 18,152, 60,217, 26,198,209,151,172, 92,169, 90,107, 83,227,131,151, 78, 84,214, 10, 96,101,236, 87, 57,199,110,
+ 10, 68, 34,217,232, 98,187,136, 88,235, 48, 62,114, 60, 29,121,253,110,205,235,111,222,113,122,124,166,239, 39, 50,154,219,155,
+ 91,114, 81,103,214,206,242,240,243,111,188,120,245,138,219, 23,119,236, 63, 63,144, 85,162,170, 90,246,251,125,225,222,139,125,
+195, 86,208,221,174, 56,238,142, 60,125,124,192,144, 49,117,133,213,154,182,171,240, 38,208, 31, 39,134,105,194, 79,145,172, 21,
+163, 23,161,140,100,190, 23,229,232,252, 24, 41,217,137,219, 34, 70, 49, 70,172,120, 49,195,152,162,140,228,181, 20, 85, 73, 23,
+ 0, 79, 12,104, 3,149,109,208, 70, 21,209,139,188,212,181,213, 84,218, 81,213, 14, 87, 59,134,147,167, 63,247, 68,146,136,216,
+172,162,235, 26, 65, 67, 78, 30, 37,241,220, 75,136, 72, 44, 8, 80,137,140, 21,174,124, 85, 57, 89,193,132, 40,159,179,158,173,
+ 55, 18, 3, 8,102,217, 53, 37,164,136,137, 64, 42,235, 0, 99, 44, 86,123,194, 20, 24,250, 17, 99, 20, 77,181, 18,184,111, 40,
+ 23, 97,182,132, 62,114, 62,156,232,154,138,245,237, 13,164,136, 31, 12, 74, 57,152, 20, 99,239, 81,198, 80, 89,216,221, 63,112,
+216,239, 89,175,111,248,246,221, 75, 94,189,222,226,159, 15,172, 58, 67,189, 94,227,207, 3,211,144,120,120,158,184, 63,245,252,
+254,238,142,219,205,138,152, 53, 31, 62,252,194,127,253,241,111,162,216, 79,138, 47,253,128,194,241,126,189,225,229,102,141,118,
+142,199,135,103,118,207,207, 28, 78, 3,166,174,165, 82, 14, 17, 91,201,202,199,186, 10, 99, 50,207,251, 71,110,182, 29,119,219,
+ 13,201, 88, 84, 86,151,203,107, 30,146,167,171,238,185, 20, 76, 90,107, 81,181,207,254,217, 2,118,201,197,113,112,125,137, 95,
+143,247, 68,168,163,150,157,122,158, 57,236, 89, 93,225, 97, 47, 9,112, 75,170,213,236,167, 45, 34,173,249,251,186, 88, 83, 75,
+200,203,188, 95, 47,221,221,252,107,231,233, 3,200,251, 95, 48, 55,232,164,254,125,154, 92,193, 53,207,251,125,161, 60,150,226,
+ 35,103,130,159, 24,189,231,124, 10,140,131, 71,169, 76, 63,246,180,237,138,216, 39,198,126,144,166, 64,151,203, 37,229,133, 18,
+230,176,152, 36,241,188,135, 48,145, 73, 98,139,245,138, 31,126,250,204,186, 91,179,114, 53,149,181,252,120,255, 72, 84, 17,103,
+ 90, 78,211,200, 41,137,248, 86,151,140,199,202,106,156, 19,192, 83,211,200, 42, 15, 45, 98, 51, 99, 52,117,171,112, 36, 42, 7,
+171,149,208, 26, 43,101, 22,151,135, 65,227,231,159, 39,150, 84,132, 99, 41, 38,130, 15,226, 12,201, 82, 60,139, 13, 76, 72,114,
+ 57,137, 29, 53,133,114,145,232, 84, 0, 45, 81,138,199,178,250, 20,231,138,136,196,132,124, 86,232,102, 6,130,202,203,148,100,
+ 30,129,171,156,139, 5,184,116,116,161, 8,222,156,136,200,114,138, 82,140,163,201, 89, 80,170, 42,235, 82, 3,166, 69,239,148,
+ 19, 92,100,228,105,153, 36,228, 50, 77, 80,204,170,244,249,121, 45, 15,204, 12,149, 81, 10, 99,139, 88, 66, 25,198, 36,147,129,
+218, 40,198, 4, 99,144,231, 86,145,160, 64,107,194, 20, 81, 86, 10,197, 28, 3,170, 49,196,232, 37,208, 38,103,166, 24,232,199,
+113, 89,219, 76,126, 98,149, 59, 97,169, 23,194, 41, 69, 53, 46,231, 89, 65,213, 42, 17,240, 46,150,173,235,153,211,162, 29, 17,
+ 76,223,140,223, 21,125,136,176, 14,156, 54, 50, 69, 12,115, 68,177,216,121,117,212, 87,124,150, 75,102, 1, 37,107, 93,205,235,
+166, 98, 21,173,172,229,112, 60,200, 68,211,186, 2,231,201, 84,117, 35,171,234, 82,176, 41,101, 80, 70, 23,203,235,204,245, 55,
+ 69, 80, 91,172,123, 18, 49,138, 93,212,184,104,162, 15,212, 38,211,117,107,148, 49, 76,167, 51,207,187,103,148, 53, 84, 37,213,
+ 44, 78,190,164,199, 24,114, 31,137, 33,200, 78,151,139,217, 62,102, 69,206,174,236,236,202, 67,155, 34, 99, 14,248,144,105, 26,
+195,237,203, 27, 72,153,243,113, 32,249, 64,244,129,182,174,153, 50,160,197, 34, 53,150, 36,182, 56, 5, 66,244, 69,145,105,112,
+ 86,172, 80,231,105,194,150, 68, 40, 65,226, 90, 98,217,211,134,105,162,182, 66, 60, 35,136, 26, 84,107,197,216,247, 24,101,121,
+243,135, 63, 50, 78, 35,195, 73, 50,133,155, 85,199,139,215,119, 28,158, 30,105,191,125,205,195,195, 51,167, 97,224,155,119,223,
+ 98,173,229,241,241,153,108, 45,227, 56,242,184,123, 66, 89, 67,109, 29,202, 40,154,118, 75,109,107,190,255,241, 7,142,253,128,
+171, 42,106,109,104,106,195,186,105, 57, 15, 35,227, 32, 80,156,132, 98,138,137, 24,179,240,194,173,226, 20, 50, 41, 20,149,120,
+138,114,169, 39,133,206, 51,119,187,146,159, 79,206,164, 88, 44,101, 86, 99,201,248,116, 81,103, 54,149,193,150,195, 83,172, 30,
+153,198, 86, 88,227,168,157,165,174,164,147,220,157,197, 62,145, 20,146,139, 92,215, 52,133, 73, 48,171, 62, 41, 63, 51,233,218,
+132,211,172,149,120,114,181,147,245, 71,200,178, 26,153,145,148,243,174, 52, 71, 48, 42,200, 75,142, 96, 19,147, 74, 50,174,203,
+178, 36, 72,102, 36,100,232, 79,242, 60,213, 77, 7, 57, 48, 77, 99, 17,144, 25,114,244,156,206,103,140, 82,212,174, 66, 69, 47,
+ 30, 95,103,137,251, 64,242, 18, 23,234,140,163, 63,246, 60,238,158,209, 77,205,251, 63,190,230,253,171, 27,226,211,129,182,214,
+220,221,189, 36, 76,129,195,209,179,219, 7,158,251,137,119,155, 53, 47,214, 29, 38,101, 62,252,246, 11,255,246,195, 7,194, 52,
+ 97,180,102,119, 26,201, 89,243,242,197,138,155,117,139,179,154,231,221,142,167,231, 61,135,254,136,115, 10,227, 44, 42, 6,172,
+ 46,142, 0, 45, 92,108,101, 52,142,134,251,231, 61,119, 47,239,184,109, 26,233, 74,202, 75,172,148,145,207, 87, 93,152,214, 75,
+ 71,149, 33,196, 80, 4,142,101,170,145, 47,255, 44, 22, 56, 46,144,154,203,172,176, 8,149, 10,125,172,104,232,191,222,123,207,
+ 61, 83, 86, 5, 8,146, 22,244,235, 50, 78,215,146, 5,159, 10, 25,139, 18, 38,164,174,126,221,188, 23,215,165,240,200,115,116,
+164,214,162,163, 81, 98,185, 91,166,254, 37, 53, 77,133, 11,162, 83,105, 37,214,212,162, 18,243, 62,178,223, 75,206,125, 93, 25,
+110,111, 91, 78,231,128,177, 14,136,156,199,129, 92,114,239, 99, 84,133,165,151,197,227,158, 19, 93,229,248,109, 63,240,212,159,
+ 25,166, 72,163, 12,171,141,229, 95,127,249,130,114, 14,103, 53,117, 91,241,121,119,100,119, 20,223,243, 33, 12, 34, 46,181,149,
+232,142,144, 46,175,210,134,182,210,172, 55, 21,174,178,179, 36, 0, 29,132,132, 89,219, 68, 87,215,116,109, 77, 93, 87,139,248,
+ 79,207,214,218,197,191,159,136, 57,144,162, 70,165, 32, 43, 56,239, 23,164,182, 15, 19, 57,106,140,171,209, 81,254,144,144,228,
+194,206,204,106,237,226, 84,136, 10,116, 16, 33,120,148, 93,178,159,181, 77, 81, 19, 51, 16, 77,193,254,114,165,160,151,139,124,
+182, 1,231,114,145,229,185,104, 95,210, 67,229,231, 97, 82,137,179,205, 17,147, 51, 6, 51, 79,237,201,170,128,134, 74, 65, 58,
+ 91,229,200,133, 46, 87,184, 6,255, 63, 87,111,214, 37,199,117,101,105,126,119,178,193,221, 99, 2, 72,136,162,164, 76,101,173,
+ 92,245,255,255, 75, 87,119,173, 94,213, 89,153,165,212, 64,130, 0, 98,112,119, 27,238,216, 15,231,152,121, 32, 31, 40,137,146,
+ 24,136,240, 48,187,247, 12,123,127, 91, 58,229, 45,231,222, 41, 58, 85, 10, 63,172,133, 34,171,131,210, 10,222,130, 13,158,146,
+ 97,105,234,230, 81,176, 85, 77,149, 92,192,133, 78,112,228,198,208,170,131,156, 37, 38, 27,209, 33,229,184,202,199, 3,196,165,
+145, 11, 52,132,163,110,140,161, 57,185,240,156,149,103, 50,215, 70, 64,158,241,218,138, 20, 59,214,226, 61, 16,165,219,199,216,
+ 93,132,220,138,219,115, 23, 74,149,223,136,113,117,211,185,235,159, 45, 22, 1,235, 12,134,132,221, 83,190, 55, 27,105,221, 21,
+240,219,148,173,214,140,237, 2,203, 85,162,191,189,247, 92,215,196, 49, 70,194,182, 90,123,183,150,145,162,223,127,151,139,176,
+ 69,156, 59,157,130, 86, 26, 94, 94, 48,217,199,150,152,233,130,231,254, 81,212,160,243,178, 82,114,165, 15, 1,223, 5, 17, 64,
+149,170,217,235, 70,114,128,115,194,121,127, 11,150, 80, 17, 69, 53, 86, 89,252,109, 71, 1, 10,243,189,208,159, 70, 30,238,143,
+212,156,153,166,153,203, 52, 97, 59, 65,171,230,101,165, 27,122,214, 90,149,161,140, 86,180, 26, 14,111,165,138, 94,214,168,114,
+126,243,157,237,198,232,131, 28, 83, 34,116, 97,183,177,236,180,161,152,248,241,231,159, 25,124,224,229,245,194,125,255, 72,173,
+142, 79, 63,254, 64,108,137,102, 13,143, 15, 15,252,143,255,241,255,240, 48, 30,132, 74, 87,196, 83, 30,124,207,203,231, 95, 72,
+ 49,131, 15,244,157,151, 32,147,195,200,186,172,124,254,245, 87, 42, 77, 35,107, 13,135,177, 35,149,194,186,102, 98, 42,228, 88,
+104, 77,118, 66,206, 66,215, 57,217, 9,173, 9,191,113,180, 53, 14,192,153,119, 25,213, 78,184,205,177, 36, 5,217, 4,138, 21,
+ 17,209, 6, 64,232, 67,135,195,171, 96, 66,254,187, 78,211,161,122,111,233,135,142,102, 44,151,105, 18, 26, 83,147,196,164,190,
+ 11, 74,106,147,177,160, 53,104,197,254, 46, 89,203,200, 78, 45,116, 30, 31,156, 4,130,213,188,123,255,141,118,147, 24,221,139,
+109,123, 41, 39,187, 62,153, 11, 55, 21,252, 68,181, 61, 86,226, 42,193, 60,195,177,167,228,149,165, 70, 29,255, 73,215,185,204,
+146, 64,117,186, 59, 97,109, 35,165, 85, 70,116,139, 33, 93, 87, 69, 15, 59,210,186,242,250,242, 70,181,158, 63,254,241, 19,191,
+255,233,129,120,121, 99,164,114,127,255, 35, 41, 53,150,107,230,229,121,229,249, 60,243,225,254,200,199,187, 35,126,232,248,235,
+223, 63,243,239,127,249, 43,243, 60, 1,150,111,211,202, 92, 42,159, 62, 62,241,116, 26, 57,140,158,243,101,225,249,245,149,243,
+245, 76, 42,153,110,232,247,157,165, 11,157,156, 91,220,180, 36,206, 7,210,154,184, 92,206,220,221,221,203,126,176,233, 69, 93,
+170,166, 17,219,239,112,174,230, 29,140,166,170,168,201,234, 72,214, 40, 15, 92,198,186,239, 12, 57, 91,150,248, 38,150,121,119,
+225,191,207, 45,175, 27, 87,190,202,161, 92,155, 20,218,212,239,137,116,155, 95,222,238,222,102,189,216, 43, 42,106,170,123,102,
+115,211, 64, 12,233, 70,244,189, 83, 75, 85, 41,249,166, 3,216,212,198,170,163, 48, 78, 45,122, 70, 10,254, 77,244,115, 62, 79,
+188,189,205,140,135,192,253,105,196,121, 88,150, 69, 40,102,173, 96, 76,165,235,122,210, 10,165, 37,181,117, 85, 13, 23,177, 92,
+ 19,124, 62, 79,172, 73,232,111,132,192, 95,126,249,198,151,183, 43, 79, 15, 71,142,131,227,178,204,156,215,200, 48,122,146,106,
+ 17,250,190, 23,120, 73, 78, 96, 61,193, 88,198,222, 50, 30, 60, 67,176,180,154, 72,165,225,155,132, 49,141,131,227,120,232, 25,
+134, 81,196, 75,202,112,144, 85, 87,209, 26, 75, 60,217,155,104,177, 21,233,116, 99, 78, 26, 94, 34, 68,201,156, 35,224,233,188,
+ 98, 92,179,164,190,149, 82,183,143, 86,139, 65, 75,140, 21,219, 34,212, 36,150,208,218, 84, 15, 83, 84,127,227,113,201, 82, 93,
+163,233, 36, 3, 45, 14, 69, 24,102,112, 77,210,206, 64,186,202,198,246,231,180, 29,205, 43, 95, 59, 83,116, 5,224,155, 85, 59,
+153,213,177,241,187,162,206, 88, 41,132, 84,161,109,155,209, 73,220,254,197,160,218, 61, 85,208,234,110,127,203, 37,175,165,236,
+ 65, 60,187,165, 19,110, 25,242, 85,166, 4, 88,177,115,225,197, 9,229, 76, 16,215, 68,107,196,101,165, 36,153,100, 96,192,153,
+ 70,202,133, 92,147,188, 31, 77,178, 13,173,187,217, 74,107,219,203,141, 61,120,184,238,159,215, 59, 41,131,181, 88, 44,169,233,
+ 68,197,186, 93,236,105,173, 83,253,129,124,189, 44, 14,238,119,221,248,141, 44,103,204,198,147, 71,236,182, 58, 49,201,165,210,
+ 43,175,225,219,243, 51, 79, 63,220, 19, 99,210,148,193, 70,169, 98,247, 19, 1,163,132,203, 8,218,168,170, 30,161,233,154, 72,
+ 10, 42,171, 19, 56,207, 59,244,227,245,122,225,225,233,137,190,239, 49,192, 60,137,234, 52,132,142,174,235, 72, 73,149,207, 33,
+144,115, 35, 71, 65,244,109,202,104,179,239,211, 21, 94,175,172,104, 99, 45,177, 20,193,223, 53,184,187,127, 96, 24,143, 76,115,
+100,158,103,214,117,225,241,116, 47, 35,102, 19,193, 90,150,117, 38,107,238,186, 84,183,186,171,115,150, 86, 4, 75, 24,188,135,
+ 37,237,227, 8, 99,161,247, 66, 29,138, 57, 42, 86, 80, 84,130,219,126,218, 13,158,251,199, 59, 94,158, 95,112, 15,247, 24,239,
+ 25,108,224,116,119, 39,150,130, 15,143, 44,215,153,243,203, 11, 63,127,248,128,247,142,249, 58, 97, 72, 4,231, 57,159,207,194,
+ 35,246,134,224, 45,195, 56, 50,220, 31,249,199,127,252, 39,151,183, 11, 93,232,233,130,167,239, 28,131, 15,172, 41,177,172,137,
+152,164, 64, 73, 42,150, 26,188,140,245,174, 49,147,107,193,219,186, 63,112,206, 42,217,203, 89, 81,139, 59,217,229, 52,107,232,
+ 7, 25,245,198,184,144,245,197, 27,130, 39, 56,222,193, 8, 26,157,162, 97, 59,103, 25,122, 73,165, 91, 82, 98,141, 81, 69, 88,
+162, 68, 29,251, 65,146,145,138, 40,168,173,134,134,180, 34,187, 94,177, 53, 53,124, 16, 37,175, 11,226, 37, 69, 69, 67,173,106,
+ 28,168, 41,250,138,176,147,199,196, 32,171,103,255, 6, 69, 49, 34, 11, 74, 75, 34,231,130, 11,158,180, 22, 74, 90, 68, 43,225,
+ 28, 14, 41,202,114,174,244, 99, 79,201, 11, 75, 91,101, 79, 89, 61,203, 57,146, 22,169,194, 75, 42,156,207,111, 92,115,228,211,
+239,127,224,119,191,123, 34,191,190, 97,215,133,135, 63,124,162,243,142,235,146,248,237,203,149,231,151,149,135,135, 3, 15,163,
+228, 45,255,231,223,127,229,175,191,124,230,124,153,168,181,113,157,103,158, 47,145,223,255,238, 35,143,199,145,187,174, 99, 94,
+163, 92,232,231, 55,150,180,224,130, 36, 19, 58,107,112,189, 23,177, 81,240,108, 0,184,224, 4,207,217,225, 36, 8,169,100,137,
+ 87, 45,234, 77, 51,194,109,216,242,211,183, 21,135,176, 32,138, 22, 63,238, 22,119, 90, 43, 24,101,197,151,119, 35,207,253,159,
+ 55, 55,148,236,187, 4,179, 91,135,190,203,121,119,145, 14,219,212, 64,109,138, 91, 17,216,116, 93,179,101,180,111, 62,245, 45,
+ 48,102,235, 24,170,142,203,173, 66,114,154,101,103, 23,108,106, 96,175,225, 38,117, 27, 67,155,141, 93,113, 83,203,163, 59,224,
+235,117,230,252,182,208,247,134,211, 97,192, 26,184, 92, 22, 82, 46, 98,179,180, 6,111, 3,215, 34, 93,172,113,149,156, 42, 49,
+ 37, 58, 43,151,214, 63, 94, 47, 92, 98,150,184,226, 26, 57, 79, 87,114,169,140, 67,192, 59,233, 97,174,171,164,163,209, 36,225,
+234,110, 60, 16, 58,249, 29,246,122, 32, 31,189,167, 27, 20,208, 84,155, 0,102, 58,135,109, 86,108,108,163,167,235,220,173,248,
+210, 67,189,181,219, 69, 85,114, 98,251, 85,137,134,160,208, 74, 35,166,188,139, 4, 83, 74,228, 82,232, 59, 67,215,139,238, 36,
+ 41,243, 67, 46, 51, 37,160, 89,153,236, 77, 57, 97,115, 17,254,183,177, 50, 77, 41,133,208, 11,116,203,109, 18,182,162,211, 22,
+ 35,142, 26, 48,212,102,229,114,173,101,231,195, 91, 5, 5,109, 26, 7, 57,115,204, 59, 60,111,221,139, 84, 54,189,196,123,205,
+101,187,213,130,230,221,196,200, 24,222, 17,233,164, 32,104,165,106, 49,171, 74,120, 37, 34,202,125,237,118,129,101,221, 80,182,
+ 58,105, 40,181, 98,157,252,127, 10,114, 46,138,255, 92,120, 1, 13,195,229, 50, 97, 75,222, 71,229,219,123,178,228,140,119,114,
+247,184, 77,180,230,156,104, 79, 76,123, 39, 0,229, 93,222,128,174,141,116,220,238,204, 22, 80, 84, 40,181,224, 67, 64,113, 39,
+132,205,110,134, 80,249, 54,214,190,181,117,111,198, 90, 51,239,254,179, 60, 95,118,203,144, 87, 97,155,243, 22, 99, 2,151,235,
+204, 79, 63,255,128,247,179,114, 35, 12, 37,167,253,123,145, 71,193,210, 90,150,230,160,241,238, 47, 43, 98, 72, 26,185, 85,188,
+216, 80, 68, 24,113,190, 92,248,249, 15,191, 35, 72,155,200,162,222,191,190,235, 25, 14, 7, 37, 50, 85, 66,215, 81,114, 36,197,
+168,194, 25,249,130,238,157,106, 87,252,166, 86,108, 46, 86,198, 67,219, 72,248,225,120,226,112,119,224,109,186, 50, 77, 51,166,
+ 84,130, 15,180, 90,241, 65,172, 76,171,238,234, 75, 17,171, 66,112, 65, 71,195,178,143,246, 33,208, 59,203, 53,205, 50, 30,211,
+203, 35,132,142,188, 70,214, 53, 18,252, 64,202,137, 86, 10,214, 5,156,115,220, 61,220,243,118,126,227,242,124,225,247, 63,255,
+ 68,179,142,110, 24,240,214, 83, 91,229,225,227, 7,254,227,223,254, 55,189, 90,149, 76,131,101,154,112,190, 35, 45,137,243,235,
+ 43, 77, 83,119, 14, 67,199, 56, 30,137,105,225,215,223,126,165,213, 42,150, 38,103, 25,250, 14, 99, 12,203, 42,151,122,202,137,
+ 12,196, 42,196,179,161,235, 73,185,178,172, 73,132,112,222, 19, 83, 20, 4,167, 85, 29,187, 42,227, 49, 18, 99,218, 7,217,101,
+167,156, 88,179,236, 94,130,115, 12,161,211, 96,196,130, 41,150, 96, 69,129, 27,172, 97,232,100, 93, 17, 75,230, 58,205,186,203,
+149, 46,106, 24, 37,223,185,106, 20,110, 80,235, 84,209,175, 45, 15, 53, 34, 10,234, 45,206,139,223,117,137,171,140,157,155,142,
+123,219,198, 74, 46,187, 16,174, 97,176,185,237, 47,106,209,137,130,177,142,146, 11,121, 77,242,206,183,200, 26,219, 62,150,221,
+186,144,205,198,209,136,172,235, 5,235, 28,157, 59,210,178,103,157,197,159,107,155,227, 58,173, 92,151,196,135, 31,158,248,195,
+159, 62, 96,227,140,185,156,249,240,233, 7,186,174, 35,151,194,183,223,174,124,121,153,121, 60,157,184, 31, 6,156, 55,252,242,
+249, 43,127,251,237, 43,175,175,175,228,156,153, 99,225, 53, 70, 62,125,250,192,227,233,200, 16, 28,201, 22,222, 94,206, 76,211,
+149,105, 89,192,111,240,157,204,113, 28, 9,189, 39, 21, 13, 20,178,130,119, 60,132,145, 32,146,102,188,151,113,168, 17,162,135,
+210,189,212,213,237,252,247,211, 16,187, 5,162,168,216,201,154, 93, 32,103,182, 48, 21,117, 36,200,127, 46, 91, 59,113,235,248,
+ 77,253, 78,136,246, 95,243,203,219,119,226,157,114,163,200,237,108, 90, 17, 59, 85,243, 62,250, 85,173,107, 42,194,222,212,249,
+213,220,196,118,141, 42,161, 67,141,125,154, 38, 93, 87,253, 14, 80,179,237,243,205, 22, 78, 89, 27, 37, 23,201,147,238, 12,135,
+ 99, 79,240, 66, 92,140, 73,130,140,140,173,244, 93, 71,201, 50,210,244,193, 50, 47,149,235,188, 80, 75,229,208,117, 44,235,196,
+235,180, 96,144,248,224, 37, 37,198, 62, 80,157,167,179,208,123,199, 84, 42,197, 90,241,245,150,198,105, 28, 56, 29, 28,198, 75,
+113,227,109, 32, 56,177,191, 89,167,145,176,128, 53,221, 59,219, 82, 16,191,123,107, 80,100,165, 87,236, 38, 78,107,218, 61, 87,
+ 73,244,106, 50,205, 74, 37, 75,232, 74,134,168,185,170,181, 84, 82, 78,196, 82,120,242, 3,193, 58, 98,147,152,208, 92, 42,185,
+202,202, 75, 34, 61, 27,111,243,194, 89,237,157,102,243, 61,171, 5, 45,212,134,141, 70,246,224,126,101,232,253, 30,199,140, 2,
+139,130, 15, 56,235, 40, 24,154,145,177,181,169,178,135, 47, 57,137,104,211, 26,197,125,203,206, 63,103,233,162, 77, 80,135, 92,
+ 43, 34,150,211,112, 22, 76, 83,104, 16,183,189,113,187,117,252, 24,153, 66,138, 80,206, 80,177, 50,237,107,142, 88, 12,169,100,
+217, 17, 91,139,173, 13,107,171, 92,244,102,155,230,200,243,225,130,195,122,225,161,123,188,100, 5,104, 72, 75, 74,133,243,249,
+194, 93,176, 4, 19,110, 19,130, 86,136, 41, 82,171,165,239,251, 61,213, 44,120,175, 60,121,181,124,234, 59,149,155,228,144,108,
+176, 29,121,222,111,153, 5,108,252,121, 99, 40, 70,249,244,134,189,251,150,240, 43,203, 22,110,224,252, 13,230, 3, 50,217, 20,
+247,130,248,241, 91,189, 21,191,100, 8,131,103,154,102,177,234, 41, 57,206, 91, 79, 73, 82,228, 89, 47,223,131,179, 86,133,179,
+146,120, 87,148,190,104,245,189, 46,166, 73,131,216, 84,204,212, 98,196, 97, 25,199,131,132,158, 24,195,249,124,129, 6,195,113,
+ 84, 79,102,101, 89, 22,186,113, 32,165, 68,138, 34, 72,177,246, 22,238,172,191,111,137,207,203,178,163,245,206,176, 46,178, 71,
+ 54,214,114, 24, 6,114,129,231,231,103,166,243, 69, 19,126, 36,149,192, 89,203, 18,101,236, 95,115, 35,229,164, 85,167, 37,103,
+ 9,128, 40, 20, 30,143,143,228,180,202, 40, 66, 71, 62,161,243,248,206,178, 94,102, 33, 40,245, 18,116,159, 83, 98,112, 29,227,
+225,128,247,158,191,254,237, 87, 30,239, 31, 5, 57,234, 28,135,211,145, 76,161,239, 59, 50,149,175, 95,190,242,241,225, 65, 38,
+ 7,235,202,186, 68,220, 56,240,245,183, 95, 56, 95, 23,154,147,238,254,225,116,196, 29, 58,126,251,229, 51, 47,191,189,210, 15,
+ 61,190,151, 75,189,243,142,152, 11,235,154, 88,210, 66,110,141, 36, 72,102, 14,193,225,172,225, 58,175, 20,165,192, 89,227,110,
+208, 3, 35, 83, 14,107, 28,174,243, 20,228,255, 51,142, 3,185, 21,230,188,168, 50,218, 48,120, 47, 35, 79, 29,217, 7,199,206,
+ 94,238,189,151, 11,223,192, 60,173,226, 79,213, 60,222, 97,232,232,135, 78, 42,215, 34, 9,119,198,234,133,190, 83,165,196,147,
+217,117, 14, 23, 12, 41, 69,214,152,121,121,123,227,233,233,132,247, 18,114,145, 91, 86, 81,158,100,172,167,170, 59,241,150, 49,
+ 77, 30,246,172,137,100,165,136,126, 2, 5,238,148, 77,137,186,237,234,106,166,228,170, 25,237,134,245, 18, 1,203,208,141,100,
+ 59, 83, 83, 16, 79, 52,150, 18, 35,243, 52,113,122, 58,241,195, 31, 62, 96,215, 72, 57, 95,248,248,187, 39,198, 67,143,181,129,
+223,126,123,227,243,111,145,195,216,241,113,236,112,222,240,183, 47,207,252,246,245, 27,111,111, 51,243,180, 50,199,149,115, 50,
+220,223, 63,241,225, 52, 50, 6,143, 9,129,183,215, 87,174,211,204,178, 46, 24, 47,207,104, 45,149,195, 48, 48,140, 61,135,251,
+145,101,205,196,148,176,157,219, 17,161,227,208, 81, 77,163, 27,122,237, 56, 36, 23,161, 82, 20, 17,233,110,126,241,173,154,111,
+155,119,219,106,134,116,219, 33, 62,214,105,126, 66,107, 58, 51,108, 55,235,141,230,144,183, 93,102,201,119,151,185, 28, 82,178,
+119,126, 23, 76, 37, 69,112,105,251, 24,123,239, 42,119, 49,157,218,113,106,217, 3, 94, 44, 55, 34,151,249, 47,121,239, 70, 45,
+143, 70,119,134, 77,119,143,178,103,102,135,118,136,117, 86, 4, 95,141,198,117, 94, 73,107,165, 27, 61, 33, 56, 98,150,207,179,
+ 20,105, 18,172,247, 84, 21,225, 57, 87, 73, 83,102, 90, 35,115,174, 28,156,161,180,200,229, 90,136, 89,186,201,101, 78,220, 29,
+123,140,109,184, 96,233,173,215, 20, 25, 85,248,151,198,208, 5, 14, 7,135,115, 5, 99,101,172, 57,120, 75,103, 53,247,192,216,
+237, 53,209,248, 83,135,243, 21,235, 33,215, 34, 99,108, 21,140, 39, 20,252,161, 13,207,186, 38,182,244,218, 53,102, 82,169, 82,
+ 36,213,130, 35, 96, 49,228,154,201, 72, 78, 68,201,150,181, 46,196,181,112, 61, 95, 89, 82,161, 84, 17, 19,123, 44,107, 41, 76,
+243, 66, 53,134,164, 72, 80,139, 68,110, 26, 3,217, 84, 90, 52, 92,215,134,237, 10, 79,237,192,193, 75,225,127, 89, 11, 7,215,
+120, 60, 53, 66,240, 56, 59, 72, 81,229,197,166,150,162,232,148,134, 49,236,103,118,169,137,148,171,118,157, 78,153,226,150,170,
+129, 78,125,144,203,179, 52,229,211, 35,182, 84,245,230,189,183, 91,236, 43,169,170, 23,224,142,155, 70,154,189, 16, 28, 94, 45,
+112,205,212, 61,123,220, 20, 41,254, 10,146,108,183,219,233,212,151,110,172, 33,120,129,139, 45, 75,228,228, 15,234,237,151, 51,
+197, 91, 71, 74, 66, 42,236,251, 94,207,162,138,117, 14,220,187,130, 87, 57, 17, 86,119,227,239,115, 22,182,224,155,247,193, 44,
+ 34,163, 20,225,175,125, 63,168,175, 21, 69,134,224,144, 41,130,216,221,138, 6, 26,249, 93, 59,227,172,147,142, 58,179, 79,162,
+189,119, 44,113, 37, 71,185,212, 99,203,123,114, 99,202,133,209,185,125,106, 99,173, 33, 87, 67, 46, 18, 68,179,167, 61,154,155,
+ 63,223,111,120,193, 57,174,244, 99,207,225,120,196,171, 41,254,245, 77, 46,220, 97, 24, 20, 65, 40,210,125,219,245,164,235, 68,
+201, 69,198,197,222, 81, 12,244,155,117,230,221, 8,214, 26, 67, 90,133,217, 94,171, 8, 76,196,115, 26,185, 78,146,159, 29,186,
+ 14,211,170,198,229,101,225,248,150, 74, 86, 48,206, 81,161, 55,155,154,242,120, 56,113, 60, 30,120,249,182,234,216, 67, 70, 19,
+161,235,104,205,242,182, 94,117,247, 43,208,140,148, 18,119,143,129,195,221,129,151,191,252,157,245, 45,210,255,243, 35,190,147,
+112,151, 97, 60, 82, 91,225,112,119,199,219,111, 95,193, 8,193,199,250,192,245,229,149, 70,194,219,131, 98, 41, 13,169,194,221,
+195, 29,135,135, 35, 57,101,190,252,246, 5,163,251, 57, 81,204, 6, 26, 72,210,218,146,164, 64,193,136,199,212,192,224, 3,181,
+ 54, 98, 42, 42, 34,174,116, 52, 22,203,238, 13,110, 86,198,238,168,210,189, 15, 50,130, 93, 22, 57,240,104,141,206, 7,154,145,
+232, 84,107, 13, 62,216,125, 13,210,233,120,223, 88,195,180, 70, 98,204,138, 40,149,138,117, 24,123, 93,149,202,142,108,139, 78,
+221,242,129, 65,170,104,223,137,231, 63,197, 68,105, 34,206,153,231, 74,223,101, 90, 47,227,167,156, 50,107,142, 59,192,196, 99,
+ 49,182, 72, 39, 83, 11, 62,104,167,159,181,219,108, 18,179,154, 91,149, 12,230,174,163,115,129, 82, 18,113,141, 56,163, 21,186,
+203,170, 14,246,212,218, 19, 87,139,109, 89,243,166, 45,235, 18,105, 67,207,199,159, 63,112,232, 26,235,151, 11,191,251,112,199,
+177, 31, 9,193,243,235,215, 11,127,251,229,141,187,113,224,195,253, 29, 49, 23, 94, 46,223,248,242, 58, 49, 93, 35,203,188,112,
+157, 22,206,105,225,254,225,137,167,187, 3,157,243,184,222, 50, 93, 46,204,211,196,188,206,162,147, 8,150, 86, 32,244,129,187,
+135, 35, 15, 79, 7,158,126, 56,113,189, 38,126,249,245, 27,161,115,132,206,147,114,230, 62,140, 12,135, 94,186, 4, 54,122,148,
+193,108,185,223,220,130, 30,118,132,149,234, 12,164, 60,117,223, 17,230, 90, 99,239,150,183, 29,180,105, 78,147, 10,101,215,183,
+109,176, 27,219, 14,238, 93, 76,171, 30, 68,237, 59, 56,236, 59, 34,216, 59,230,139,232, 34, 52,183, 89,199,163,117, 43, 28,222,
+ 77, 22,204,198, 82,216,184,238,108,147,130,246,142, 62,103,111, 64, 18,253,211,107, 46,123,252,100, 74,153,101,205,224,196,118,
+ 73, 45,146,137,157, 53,211,193, 89,154,177,212,146,240,206,114,157, 27,151,105, 33,208, 56, 58, 75,170,153,215,165, 80,179, 22,
+ 26,173,114, 60,202,239,161,150,202,177,115,248,160, 40,220, 6,121, 41,146,135,208, 55, 44, 73,172,144,206, 49,120,141, 44,222,
+226, 51,247, 96, 29, 39, 77, 65, 21,165,123, 67,238,175, 92, 4, 16,149,219,102,213,109,148, 84, 72,181,176,166, 66, 45,134, 84,
+211,206, 31,159, 98,226,104, 59,250,193,226,124,197, 85, 75, 91, 45,185, 85,174,203, 74,249,234,128,194, 50,205,114,209,230, 44,
+ 14,146, 44,221,181,181,142,209, 57,188, 53,100,223,232,141, 35, 87,193,199, 26, 7,215,169,176,196,140,109,141,181,171,196,184,
+242, 58, 77,178,230, 25, 3, 93,174, 12, 24,124,128,146,147, 78, 25,228, 12, 25,250, 65,160, 96,106, 37, 75, 69,242, 28,142, 99,
+175, 3, 40, 47, 2,191, 37, 82, 5,214,175,171, 38, 39, 22,181, 90,116,111,253, 29,233, 64, 86, 70,183, 71, 74, 39, 81, 26, 48,
+179, 79,226,204,247,255,140,211,157,116,171, 98, 45, 52,149,224, 59, 33,171,105,179,216,116,237,106,177,196,117,101,213,156,247,
+ 27,101,212,226,180,209,153,230,149,195,225,128,239, 2,181,200,215,246,198,104,182, 60,187, 99,107,139, 45,222, 50, 11,218, 70,
+215, 19,129,207, 78,186, 19,224,147,217,163,137,157,219,220, 65,149, 84, 26, 67,103,118,166,200,134,141,221, 39,101,212, 93, 65,
+ 47, 35,253,180,123,235,251,126,224,237,122,102,169,153,193, 57,166,154,246, 15, 76,194,208,110,214, 65,235,156, 22,218, 55,128,
+136,211,176, 26,163,129,104, 30,100, 36,144,114,166, 63, 28,232,134, 17,167,202,243,148, 42,198, 91,134,161,199, 24, 67,202,153,
+113, 56,224, 74, 37,197, 40, 62,201, 42,246, 3,107, 68,157,221,116,246,111,140,165,152,140, 49, 78, 70, 5,165,178,230,204,195,
+227, 29,119,135, 3,181, 89,174,215, 43,206, 11,101,172, 2, 46, 56,150,101,145, 29, 69,147,157,153, 83,162,216, 26, 87,141, 3,
+244,220, 29,142,170, 66,212,214, 87,100,217, 2, 8,104,133,117, 89,112, 33,136,210, 49,102,140, 13, 60,125,252,200, 60, 77,124,
+253,229, 51,227,224, 57,126,184,151, 32,154,224, 56, 28, 58, 82, 46,116,206,243,242,229,133,113, 24, 37,144,192, 54, 17,220,185,
+129,233,237,204,245,122, 21,120,191,201,124,250,240, 17,140,229,219,243, 43,223,190, 62,211,141, 3, 33,116,120, 47, 22,180, 82,
+ 42,243, 42, 35,182,106,140,170,107, 5, 27,219, 89,233, 80,114,107, 20, 99,232,155,193, 35, 99,149,166, 41, 94,206, 24, 66, 8,
+116, 62, 8,188,194,201, 58,100,205,178,150, 8, 74,108,139, 49,225,156, 21,191,188, 18,144,134,206, 48, 4, 73, 42, 91,179, 16,
+139,164,210, 52, 56, 11,227,161,195,122,171,213,118,197,233, 97,157,179,236,114, 36, 40,164,226,131,213,156,226,200,178, 38,134,
+ 62,208, 57,143, 37,113, 93, 47,196,228,105, 68, 82,148, 93,142,181,194,178,238,187, 64,167,185,214,115,204,228,107,193,123,139,
+ 71,224, 28,206,139, 61, 99, 93, 43, 37, 39,250, 33,115, 26, 14,106,241,235, 69,224, 24, 44,166, 9, 33,204,210, 81,215, 66,163,
+144,148, 20, 85,106, 33,119,142, 31,255,120,199, 93,223,168,223, 68, 0,119, 58, 29,240,125,224,249,165,240,215,191,127, 99,232,
+ 71,126,122,188,231, 50,175,188,206, 11,151,121,102, 94, 22,174,211,196,219,245,202, 20, 43,167,187, 7,158, 30,238, 9, 94,124,
+159,203,178,114,185, 94, 89,226, 76, 33, 97,189,116, 44, 99,239,185,123, 56,208, 13,142,187,187, 35,135,187, 3, 99, 87, 4,167,
+147, 34,125,231, 72,113,197,216,123,134,173, 67, 80,177,143, 87,126,255,198,133,216,174, 57,163,151,252,230, 7,222,134, 94, 69,
+ 45,103, 22,139, 41, 58,226, 68, 97, 23, 55, 56,172,118,146,102, 31,183, 54,218,187,139, 90, 85,242, 58, 26,190,217,203,244,194,
+ 53,155,181,205,238,132, 63, 11,152,114,139,252,220,190,103,222,249,225, 21, 37,182,135,133, 96, 68, 77,221,182,110,189,221,186,
+160,162, 98,188,205, 90,149, 91,145,177,170, 85, 54, 67,202,244,157,229, 16, 2, 75,202, 2,126, 41, 21,239,228,103,139, 49,138,
+184, 84, 71,245,199,131,103,154, 11, 57, 79,164,109, 68,143, 35,216, 70, 82,125,137, 51, 13, 63, 88,134,193,236, 25,240,228,204,
+ 33, 52,232, 44, 65, 45,107,125,144,204,129,224,101,255,188, 99, 91, 55, 10,167,142,207, 29,150,138,163,106,244,112,205,210,105,
+201,207,215,136, 89,198,230,198,200,185, 69, 21, 81,218, 48, 4, 98,146,228,200,190,151, 38,195, 25, 79, 63, 4, 46,243, 11,165,
+ 24,146,105,180, 20,241, 78,132,114, 20,104, 77,226, 52,109,149, 96,150, 37,103, 90,146,131,190,217, 66,118, 29,206,122,108, 39,
+171,170, 84, 18,193,194,224, 45,125,231,120, 7, 64,217,135, 0, 0, 32, 0, 73, 68, 65, 84,121,189, 50, 93, 35,227, 16, 68,159,
+ 36,113,239,164, 18,153,215, 69,186,251, 90, 25, 67,192,251,130,177,114,137,197,210,152, 98,225, 52,116,248, 32,233,157,173, 53,
+214, 37, 10, 26,252, 32,205, 93,206, 85,116, 20,154,233, 93,213,213,177, 21, 69,242,128,155, 93, 33,191,125,166,118,195,164, 22,
+ 5, 19,121,205, 29, 49, 55,205,205, 14, 97, 82, 52,246, 16,220,247,209,192,173,225,156,163,154,198,180,172,148, 4,177, 21, 58,
+156, 94,196, 90, 44, 84,153,132, 62,198, 76, 63,120,108, 19,214,186,115, 65, 88, 42, 27, 35, 65,245, 49,173,213,125,229,177, 57,
+ 85,118,110,188,234,185,132,231,112,203, 55,183,187,110,164,128, 85,109,130,179, 24,111,223, 33,150,229,146,175, 91,194,162,181,
+228, 77,160,106,148,164,216, 73,108,247,229,229,133,251,159,126,143, 95,163,236,198, 93,160,181,188,147,255,156,177, 84, 39,133,
+ 77, 86, 97,181,179, 91,116,166,217,168,191, 58,126, 71,184,200,227,225, 32,188, 92,235,136,113, 98,141,145,174,235,233,116, 63,
+ 28,115,194, 4, 79,172,133,184, 68, 25,133,176,147, 0,247, 10,204, 88,185,156, 74, 17,208,127, 97,123, 41, 51,119,195,129,227,
+233,196,245,124, 33,174, 17,235,186, 93,116,229,157,147, 75,203, 90,214, 40, 29,233,221,221, 65,144,145,181, 96,141,140,238,157,
+ 83, 31,224,142,228,147, 60,219,208,247,228,148,152,231,153,225,116, 36,165, 66, 92, 87, 30, 31,239,233, 66,207,175,127,249, 79,
+226,218,120,248,233,137,187,199, 39,150,117,229,167, 79, 31, 1, 24,199,129,183,243, 89, 70,105, 73,127,209,203, 74, 78,149,224,
+ 61,231, 95, 63,179,172, 11,169,192,253,253,129,167, 31,238, 88,230,133,111,159,191, 80,114,228, 56, 14, 74,108, 19,133,100, 92,
+ 51,139,254, 12,173, 57,225,187, 99, 9, 65, 82,120, 98, 74, 98,165,208,227,121,221, 50,172,229, 55,132, 53,150,177, 31, 24,250,
+ 64,174,194,188,143, 41,146,107,194, 27, 43,185,187, 73,160, 4, 93,208, 17, 85,169,116,214, 50, 56, 41,112, 48, 48, 45, 81,162,
+ 8, 85,177, 57,140, 3,161, 15,154,173,220,100,223, 91,223, 41,119,117,255,218, 13, 14,108,165, 85,195,154, 86,222,166,133, 82,
+ 68,245,187,182,132, 89, 18,118, 60,208,176,148,178,178,174,186,251,169,133, 24, 19,125,112,242,125,209, 88,115,100, 93, 36,134,
+215, 58,199,225, 24, 4,243,216, 12,173,102,150, 37,179, 78,242,115,141, 99,175,207,147,188,152, 67, 63, 96,232, 49,101,146,142,
+ 66, 35, 39,179,135, 31,126,124,224,233, 48, 50,125,125,225,195,120,224,195,113,196,216,192, 82, 44,127,249,251,103,168,150, 63,
+126,248,200,235,229,204,111,231, 51,185,201, 8,113,158, 22,222,222,174,196, 82, 24,143, 35,143,143,247, 4,181, 40,230, 28,185,
+ 92, 46,130,243,221,246,141,162, 79,226,116, 28, 57, 30, 6,198,211, 65, 72, 97,214, 51,158,122,254,208, 75, 28,177,117,150,101,
+141,164, 82,208,136,110, 74,201,178, 31,203, 25,188, 68,214,154,118,203,191, 54,198,233,238,121, 67,133,202,110, 12, 85,182,110,
+182, 38,209,147,168,224, 71,147,167,246,238,253,157, 23,220,236,255, 98,247, 68,171, 45, 81,107,227,115,151,186,197,106,154,189,
+186,223,136,116, 85,199,237,173,202, 72,116,115,142, 72,158, 71,221,161, 40,155,183,126, 43, 36, 55,236,241,198, 34, 71, 11,151,
+ 82,228, 18, 55,250,121,108,234,158, 70, 99, 89, 86,114,205,156,194, 72, 65, 68,102, 57,101,172, 17,138, 27,205, 48,215, 34,151,
+ 29,134,195,161, 99,158, 34,245,178,236,113,196,166, 53,188, 17,239,118,204, 21, 55, 24,198,193,208, 5,143,245,194,101, 55,166,
+209, 5,203, 97,244, 34, 14, 52, 94,188,232, 70,232,147,214,123, 54,218,202,166, 74,174, 69, 49,172,198, 80, 53, 56, 36, 21, 89,
+ 51,149, 44,113,161,117, 19, 50, 98,244,252,146,119,174, 68,209,149, 12,227,200,178, 92,241, 70, 86, 0,169, 10, 52,103,209,124,
+247,148,165,168, 11,161, 42,127, 60, 43,187,253, 6,103,138,171, 16, 40, 55,212,107,163,146, 76,196,251, 74,153, 26, 81,121,251,
+210, 29,122,190,189, 92,152,230,200,105,236, 56, 29,123,250,193,225,117, 39, 29, 83,102,138,105,159, 24,118,190,147,231,210, 66,
+ 74,141,231,215, 11,199,195,145, 99,223,237, 35,244,148, 18,111,215, 51,199, 65, 98,183,179,170,174,173,217, 98, 64,223,101,151,
+217, 27,150,124, 87,254,171,130,194,170,168, 51, 97, 41, 37, 17, 58, 81,164,163, 69,106,169, 50,122,182, 86,250,230,166,171,216,
+190,235,200, 41, 97,237, 81, 11,170,140,117, 35,181,202, 42,120, 43,178,106,183,233, 69,100, 95, 94, 20, 39, 27,215,196,161,246,
+251,206, 92,110, 35,187,171,253,204,150,184,166,171, 40,239,236,142, 84,174,220, 0, 59,219, 51,190,145, 15,179,238,229,141,145,
+ 85, 6,220,146, 15,157,115, 55,125,204,119, 22,120,205,208,216,216,248, 70,127,110, 35, 30,245,243,229,140,235,254,128, 79, 94,
+220, 36, 14,121, 6,171,234,109,244, 98,151,115,115,195, 8,139,155,198,168, 6,199, 26,131,223,132, 45,203,186,242,112,186, 39,
+132,128, 15,129,151,103, 81,252,126,252,225,163, 88,214,182, 8, 57,239,201, 81, 68,114,173,190,227, 55,191, 19,218,126, 63,254,
+147, 11, 57, 85, 73,218,185, 59,158, 40,192,116, 21,230,184,113, 14, 82,162, 15, 94,120,183, 77, 42,183, 37, 70,250,224, 57, 28,
+ 14,188,190,190,209, 74, 99,244, 29,125, 39, 12, 96, 99, 17, 43,131,254,114,156,113,248, 46,176, 68, 57,252, 69, 77,153, 49,214,
+241,240,116,207,243,215, 47,204, 47,175,184, 0,227,211,137, 84, 43,214,119,220, 63,156,112, 65, 20,229,243,117,146, 67, 12,232,
+186,158,249,114,166,235, 44, 41,102,230,235,196,188,172, 36, 11,159, 62,125, 34, 88,248,245,249,133,183,111, 47,244,253, 64, 31,
+ 28,193,201,203,213,170,140, 22, 37, 81,174, 73,214,178,177, 12, 26,202,146,146,168, 99,155,149,110,212,180,198,106,138, 86,172,
+242,178, 12,221,200,195,221, 61,185,204,180, 42,251,151, 85, 3, 28, 4, 29, 40,200, 69,233,158,229, 69,113,214, 50, 4, 37,190,
+ 25,195, 26, 35, 41, 23,181, 38, 25, 66,240, 12, 99, 39, 23, 72,149, 28,116, 95,213,123,169,135,127, 67,247, 82,125,229,252, 38,
+147,137,121,141,124,126,185,112, 26, 3,119,199,133,224, 44,211, 52, 67, 21,229, 55, 74, 92,138, 49,237, 10,107, 41, 66,178,140,
+168,154,112,196, 11,150, 53, 22,140,135, 81,249,244, 56, 88, 83,161,149, 66, 54, 13, 23,192,101,177,193,245,126,164,196, 66, 43,
+ 19, 53, 37,210,178, 98,157,167,122,203,221,211,200,227,253, 72,126,155, 56, 58,207,195,105, 80, 6,191,231,223,255,227, 27,113,
+138,252,249, 79, 63,179, 92,174,252,250,229,149, 22, 36, 28,226,229,114,225,252,118, 33,197, 66,119, 24,185,127,184,199,123, 75,
+103, 13,174, 22,206,151, 11,203, 26,153,211,162,224, 21, 75,240,134,187,135, 59,238, 78, 39,198,211,192,241,238, 32,171, 27,117,
+235, 29,198,142,113,236,105, 52,250,190,231, 50, 45, 92,175, 11,135,113, 84,175,119,149,224, 10, 13,117, 0, 45,178,156,219,134,
+189, 26,130, 98,118, 23,135, 4,101,200, 8, 18,181,171, 85,101, 2,160,158, 89,105,176,229,101,150,125,118,251, 47,202,219,255,
+ 10,157,185, 45, 59, 91,147, 68, 48,246,156,245,194,119,244, 90, 43,178, 69,107,154,136, 92,235,123,127,178,217, 15,207, 90,183,
+203,188,237,134,204,141,155,176, 97,116,154,122,209, 91,213,232, 78, 16, 90,101, 76,114,177, 90, 1, 95,229, 82,164, 48,237, 60,
+206, 27, 76, 20, 49, 95,112,134,227,161,103, 90, 35, 83,205,186, 15,239,176, 54,147,115, 38,232,188,124, 24, 2,135, 83,135,247,
+ 50,233, 42,219,212,144,138,117, 94,248,235, 86, 70,202,222, 26,130,145,203,119,179,234, 85, 69,139, 74, 56, 70,147, 53,151, 53,
+172, 37,235, 69, 95,245, 93,145, 3,200, 32, 69,154,115, 74,245,215, 76,241,152, 43,190,247,188, 93, 23,230, 53,107,194, 86,213,
+196, 47, 37,107, 38, 41, 30,134,222,210, 89,199,178, 36, 98,150,248, 89,177, 27,202, 37, 50,151, 42, 25,240, 8, 14,187, 85, 67,
+181,224,107,101,205,137,108,192, 27,131,115,141, 53, 23, 82,169, 34,168, 3, 74,140,100,215,176, 21, 82,145,166, 43,215, 66, 41,
+137,110,232,169, 77,190, 6, 21,190,189, 77,212,212,248,248,100,101,167,111,229,178, 58,159, 39,172,119, 12,125, 71,171,141,117,
+141, 66, 19,109, 98, 73,220, 64, 66,219, 54,105,227,166,111,226,180, 77, 68,107, 85, 37,159,115, 37, 81, 57, 6, 47, 43,191, 13,
+ 64, 92, 55,114,158,185, 69,191,106,128, 78,169,178, 34,206,181, 72,168,141,181,172,113, 97, 93, 87,137,174,221, 19, 15,185,129,
+110,234,109,250,152, 75,198,187, 32, 57, 18,157, 35,167, 77,196,102, 84, 76,184, 5, 41,149,155,240, 77, 71,237,246, 29, 49,111,
+163,213,109,153, 27, 27,139,221, 32,238, 16,107,205, 46,248,117, 78,114,235,119,166,220, 59,171,159,140,249,155, 38,188,201, 59,
+ 49, 14, 35,175,151,153,156,146, 90, 96,183, 16, 26,104, 53, 99, 77,175, 86,231, 45, 32, 70,226, 94, 41, 73,167,112,242,189, 90,
+ 26,222, 26, 67,170,133, 16, 2,227, 81,168,113,141,202,219,219,153,210, 32,244, 50,138,217, 40, 82,198, 24,226,186,138, 96,173,
+214, 61, 65,108, 27,235,109, 9,176,180,219, 40,101, 75,193,241,161,231,241,254,129, 90, 11,235,186,226,188, 39, 78, 19,193, 59,
+194, 56,242,252,118,161,247, 3,111,207, 95, 41, 41,114, 56, 62, 49,207, 51, 49, 37,142, 94,108,117,173, 73,178, 83,201,155,149,
+ 64,247, 27,214,115,236, 58,190,158, 95,168, 69,186,235,117, 77,220, 61,158,176,214,241,246,250, 74,137,141,211,233,192,233,225,
+ 72, 45,133, 15, 63,254,128,237, 7,108,239,153,223, 38, 74,140,156,175, 87,238,239,142, 96, 97,205, 18,227,121, 57, 63, 51, 77,
+ 51, 41, 53,142, 63,220,243,233,211, 19,215,215, 55, 94,158, 95, 88,115,228,238,116,196, 25, 35, 99, 25,164,186, 90,214,180, 23,
+ 23,214,201, 47, 57,168,231,190,230,219,206,100,235, 92, 82, 21, 50,208,198, 99,126,124,120, 36, 88, 39, 59,186, 86,153,230, 69,
+ 44, 96, 10,118,168, 88,186, 16,232,130, 7,196, 95,222, 57, 35, 99, 94,103, 72,165,176, 44,235,142,188,244,214, 51, 28,122,140,
+146,154, 82,204,180,156,100,138,176,249, 84,117, 71, 54,197,133,114, 22,191,241,117,202,196, 34, 29,229,101, 78,228,146,233,187,
+128,243, 78,128, 32,139,116,146,222,123, 74, 51,164,181, 82, 90,132, 42, 97, 60, 94,199,205, 69,237,122,213, 24,230,108,232,125,
+195, 91,131, 55,162, 63,232,148,125,176,228,196,200,128,117, 14,143,151,238, 45, 38,210,180,138, 29,196, 57,134,135,145,187,251,
+ 3,117,158, 48, 41,243,225,233, 68,111,129,112,224,239,191,188,240,246,186,240,175, 63,253, 14,215, 38,254,215, 47,103,205,191,
+206,188,157, 47,188, 93, 22, 81, 71, 31,122,142, 15,247, 4,223, 17,176,116,166,113,185, 94, 88,231,200,154, 35,185,101, 41, 22,
+ 91, 99, 60,244,156, 78, 3,195,224,233,122,139,241, 69,139,202,202, 92, 44,157,243, 24,231, 48,198,225, 44,164, 20,121, 93, 69,
+ 84,228, 52,196,195, 56, 11,197,208, 90, 22, 37,178,217, 14,150, 34,105, 90, 26, 20,209, 16,225,162,217,149,188,109,199,111,238,
+117,115,149,221,166,221, 15, 79,245,148,183,119, 49,169, 26, 98,180,141,159,111,158,245,170, 35,252,186,171,189,154,118,252, 91,
+110, 55,206, 96,170,136, 39,155,162, 66, 75,107,155, 67, 81,176, 3, 70, 47,233,247, 16,156, 77, 34,191,173, 23,182,172,118,115,
+ 83, 71,111,248,204, 90, 42,193,122, 70, 77,206,139, 57,147, 99,150,103,194, 35,180,200, 90, 9, 94,186,167,146, 11,113,138,140,
+131,103, 28, 28,111, 68,113,236,118,114, 57,224, 12,163, 15,184, 96,118, 24,140,172, 19, 28, 46,136,206, 67, 87,189,146, 96,248,
+ 46, 29,207,154,205,150,134, 2, 61,184, 77,217,140, 32,166,133,175,205, 14, 96, 50,214, 98,133,221, 69, 69,124,212, 82,111,101,
+124, 23, 8,193, 51, 77, 43,206, 27, 14, 7,199,178, 68,226, 26,105,213,144,162,174,165, 90,229, 48, 90,222,150,133,120, 21, 44,
+ 46, 10,210,106, 69,114,198,223, 98, 97, 90,181,232, 48, 77,244, 8,222,146,109, 99, 41,130, 6,110, 22,114, 54,212,148,247,105,
+206,101, 46, 44,139,195, 92, 87, 14, 67, 79, 80,123,175,105,149, 83, 23,200,173,177,196,137, 90, 3,203,146, 88,230,204,227,135,
+ 3,166,101, 46,151, 51,125,223,115, 93, 34,121,109,220, 61, 72,242,227, 52,175, 10, 0, 19,205,130,213, 9, 19,251,122,177, 41,
+165, 77, 47, 50,237,128,223, 11,232, 82, 78,194,210,247, 50, 86,223, 39,189, 91, 10,156, 81, 1,132,118,188,101, 83,166, 27, 43,
+124, 15,231,232, 66,224,249,235, 11,113,202,120, 35,107, 68,163, 41,112,205, 10, 15,131, 6,133, 74,202, 43,169, 12,216, 38,171,
+150,161, 31,185,174,171,156,195,154,232,230,182,160,152, 13, 20,209,218,222, 8, 89, 85,193,111, 46, 14,107, 52,204,101, 39, 59,
+178, 35,120,171,169,186, 90, 52, 26,103,171, 69,188, 54,107,206,221,152,243, 91, 54,252,150,252, 22, 66,199, 60, 93,152,150,153,
+ 97, 56,176, 36,137,255,117, 90, 36, 11,249, 91,109,177,136, 43, 66,254,222,131,219,156, 54, 89,166, 13,198, 8,234,178,239, 58,
+124, 8, 2,255,105,141, 56, 71,124,149, 0, 20,107,236,142,210,243,206,179, 94, 19,105,201, 80,178, 90, 99,183, 17,133,254,130,
+172, 37, 89,131,205,168,232, 65,148,223, 67, 55, 48, 30, 59,150,117,165,208,240,189,103,153,103,238, 63,253,200, 60,207,242, 71,
+120,120,121,123,198,251, 1,107, 29,203,114,193, 56,203,253,233,129,154,132,243,110,156, 28,168, 22,245,115, 3,190, 15,180,150,
+ 72,169,168, 74, 57,211, 5,139, 53, 29,111,111,111,196,101,193, 4, 75,184,147, 17,173,117,150,241,174,167, 63,141,180, 37,147,
+214,149, 53,174,228,183,153,225,199, 39,242,180, 16, 92, 71, 73, 43,215,233,141,105,186,210,156,231,211,227, 3,206, 25,190,126,
+189,242,246,118,165, 15,129, 16,228,208,246, 42,232, 88,163, 88,164,154, 49,210, 1, 90, 75,182,142, 90,100, 31,222,176,108,113,
+247,182, 73, 20, 45,213, 9,185,205,194,195,241,142,135, 59,207,146, 86, 74,131,105, 89,137, 41,237,216, 65,154, 84,157, 93, 39,
+149, 89, 45,104, 39, 34,124,227,102, 16, 85,246,134,108,108,150,225, 96, 25, 6,175,234,243, 68,138,133,160, 35, 85, 33,143, 41,
+111,220, 86,230,184, 18, 27,140, 33,176,198,149,107,149,209,113,137, 48,173, 50, 78,247, 90,172, 93,215,200, 18, 43,216, 78, 70,
+131, 85, 38, 14, 93, 43,210, 45, 57, 67, 37, 83, 16,190,114,107,134,235,210,180,155,131,222,102,156,241,196, 22, 37, 32,163,131,
+148, 13, 31,238, 31,176, 86,158,177,124, 93,105, 21,252, 49,208,157, 6, 78, 7,143,143, 11, 46,101, 30,199,142,206, 57,236,241,
+142,175,159, 35,191,125,251,194, 63,127,252,145,208, 53,254,231,127,126,198, 25,129, 38,253,118,190,112,157, 34, 37,174, 12,193,
+112,124,120,192,117, 30, 99, 10, 29,134,249,186,114,141,145, 57, 47,172, 37,105, 17, 95, 5,206,211,119, 56,219, 8, 30,172,169,
+194, 52,183, 50,134,181, 22, 82,245,152,108,101,207,105, 29,167,206,115,189, 92, 88,214, 9, 14, 35,166, 86, 33,103, 85,191, 95,
+156,182,105, 8,134,122,215, 37, 20,227, 93, 6,181,245,239,184,234, 27, 23,222,239,123,185,102,110,194,186,237, 0,220, 56,254,
+173,222,186, 2,107, 61,165,149, 77,249,117, 19, 69,226,169, 86, 24,226,155, 64,104, 99,208,111,199, 78,126,135,121,117, 13,197,
+117,108,133, 64,187, 93,234,219,170, 0,244,249,222, 4,152,130, 86,221,102,144,213,138, 55,186,180, 66,109,153,174,107, 56, 43,
+ 81,148,185,137,178,124,240,142, 90, 50,105,145,128,149,206, 9, 94,122,158, 19,214,193,221,208, 49,165,130,243,133, 59,111,240,
+ 86,212,253,197, 52,130, 51,187,239,127,163,110,109, 98,166, 45,234,215, 24,135, 87,246,189,121,231,165,175, 77, 4,124, 75, 20,
+241,222,186, 22,138, 17, 63,181,197,136,250,221, 88,156, 17, 16, 87,179, 71, 50, 17, 91, 10,142,134,247,154,139,238, 2, 54, 25,
+226,146,148,132,153,249,242, 34,161, 52,243, 90, 72,165, 17,179,164,192, 57,107, 49,225, 34, 93,101, 92, 9,177,200,231,165, 33,
+ 34,201, 24,174, 75,225,117,145,162,216,153, 29,254, 14, 6,214, 34,202,241,224,196, 25, 96, 29,244,202,235,157,149, 71, 16,156,
+ 35, 56,201,236, 40, 85, 10,213, 57, 59,156,105, 28,250,192, 37, 46,172, 41,115, 24, 6, 2,134,111,151, 21,111, 61, 95,222,222,
+184, 44, 51,127,248,120,207, 16,122,174,243, 66,170,149, 97,232,161, 72, 14, 64,210,217, 94, 83,145,100, 35, 83,240, 59,155,124,
+139, 55,173, 77,216,235, 37, 75,103,234,149,171,145,170, 80,234,114,169,106, 43, 20,114,101, 53,130,184,240,186,195,146, 76,118,
+ 7, 49,105, 40,148, 99,190,206, 56, 39,107,151,162,171, 60, 43,237,178,120,243, 85,199,213,148,117, 79,173, 52, 15, 93,103, 49,
+ 29, 42,124, 83,145,181, 19,180, 47,136, 11,197,170,104,179,105, 97,236,189,149,233,166, 70,179,118,214,110,184,184,125,109,102,
+138,122,242, 13, 56, 83, 85,177,175, 29,254,198, 60,192,226,172, 35,155, 44,238,166, 38, 69, 96, 73,149,238,216,145,170, 76,248,
+ 78,167,123, 92,202, 55, 75, 93, 45, 98,197,108, 13,131,186, 15,114,161,180, 34,236, 15,175,214, 39, 5,253,248,205,195, 58, 28,
+ 70,137,211,180, 34,132,248,237,183, 47,184, 16, 8,125, 47,149, 88,217,120,194,149,117,141, 34, 32,201,101,247,221,110,187,192,
+170, 99,175, 86,139,124,224, 24,114, 51,212,148,120,252, 36, 25,217,113,137,244,125, 96,186, 46,196,165,112, 56, 28, 57,127,123,
+ 97,116,142,223, 94, 94,201, 45, 48, 6,203,186, 94, 89,107,230, 79, 31,126,224,216,123,190, 45,147, 88,191, 16,160,193,141, 63,
+ 44,126,196,156, 11,105,190, 96,135, 14,163, 35,104,214,133,117,158, 41, 41,115,208, 3, 26,103,232, 14, 35,227,225,196, 56,140,
+ 60, 63,255, 70,137,153,235,121, 98,248,120, 32,216,142, 52, 95, 9, 99,207,203,151,223,152, 47, 19,107,202,156, 30,238,249,248,
+241,129,183,215, 51,111,231, 55, 98,105,220, 31, 58, 2, 14,175,180,161, 92,170, 8, 56, 74,145, 68,167,190,167, 96, 40, 77, 94,
+228,193, 24,178, 17, 68, 33, 26, 58,144,154, 83, 27, 77,161, 15, 29,119,119, 71, 32,144,203, 66,140,137,121, 21,112,141,175, 14,
+235,165, 90,115, 94, 84,241,173,102,188,109, 4,165, 97, 25, 44, 41,101,241,231, 87,121, 96, 67,231, 24,199, 78, 98,114, 83, 38,
+198, 4,165, 82,171, 19, 71,138,109,202,124,110,123,167,183, 76,145,228, 43,115,174,124,121,157, 57,142, 29, 14, 88, 99, 33,198,
+198,146,178,118, 61, 82,137,186,182,226, 29,140,206, 74,101,166,160,240, 53, 85, 46, 25, 82,182, 92,179,228, 32,251, 42,211,136,
+163,183,100,215, 56,231,133,105, 22,232,196, 15, 39,207,161, 7,103, 34,197, 91, 72, 11,182, 84,134,241, 68, 55,142,244, 7,131,
+107, 66,231, 59,121, 71, 8,158,251,135, 39, 62,127,155,249,247, 95,191,240,199,199,143, 12,195,129,255,247, 63,255, 70,109,134,
+206, 53,126, 61, 95,153,215, 44, 26, 4, 83, 25,239, 30,177,157,199, 55, 24,176,164,184,178,172, 11,107, 76,172, 37, 9,146,178,
+ 74,140,234,225,216, 49,140,129,208,121,172, 55,251,168,176, 10, 21, 86,158,125,205,174, 23, 0, 11, 50, 61,185, 59, 72,135, 90,
+213, 0, 83, 42,165, 37, 90,243,186,207,118, 26,188, 34,155,238,255,170, 74,151,203,169,238,118, 26, 33, 88, 73,122,214, 30,219,
+210,208,131, 70,148,200,236,112,216,219, 37,182,121,149,171,217,198,160,183, 20, 56, 74,125, 55,158, 87, 80,168,218,166,110,182,
+ 29,115, 67,143, 42, 61,112,163,233,109,151,186,179, 98, 81,170,223,121,227,217,215, 50,117, 27,143,242, 62,214, 85,188,214,109,
+143, 4,149, 52, 43,241,240, 54,114, 92,133,249,109, 28,121,205, 34,236, 58, 4,233,140,107,165,247,134,126, 24, 37,127,177, 22,
+193,184,218,219, 84, 66, 58,163, 77, 40,103,212, 41,173, 83, 4,201, 26,210,168, 79,203,154,197,113,179,196, 76, 92, 43,107,105,
+ 84, 35,157,208,232,165, 88,171,120, 92,223, 17,134,158,140,165, 45, 11,190, 37, 33,162, 21, 65,147, 98, 27,203,180,242,118,141,
+ 92,166,196,146, 10,243,154, 89,214, 74, 74, 77, 16,176,213, 16, 21,238,115, 8,149,243, 28,105,165,225,114, 38,165,138, 55,242,
+ 44, 76, 73,166, 30,223,166,198,219, 34, 23,186, 65, 28, 46, 65, 89,253, 81, 25, 9, 69, 71,235,222, 65, 10, 50,138,119,206, 96,
+ 77,101,240,134, 88, 34,173, 21,114,146, 64,173,224, 51, 93,111, 89,163,184, 21,250,206, 83, 90,227,235,229, 74,177,134,154,224,
+ 58,205,244,157,135,206,243, 50, 45,164,156,233,250, 78,163, 74, 21, 49,108,234, 78, 70,148, 11,114,139,122,190, 69,238, 54, 85,
+127, 90, 11, 49, 3, 36,250,160,130,204,106,104,205, 42, 65,205,236,171, 71,217,202,217,157,119, 96,118, 8, 76,195,118,129, 28,
+ 19,203,178, 42, 0, 73, 3, 99,222,165,163, 57,183,105, 67, 54,200,139,236,221,105, 82,252, 30,189,163, 40,198,216, 90,153,186,
+224,110, 78, 16,222,133, 77, 25, 99,240,198, 73, 83,146, 43,161, 19, 88,142, 76,173, 20,238, 83, 42, 75, 94,241, 67,184,189,191,
+ 42,176,163, 33,207, 57,183,104,100,107,236, 86, 30,239, 26,166, 96, 61,206, 4,166,203,132,249,157,116,250, 2,118, 18, 65,107,
+209,209,187, 53, 55,160, 81,169, 82,172, 59,235, 4, 20,134,193,185,128, 55, 70, 66, 25, 92, 16, 56, 75, 63,244,196,184,240,249,
+215,207,124,252,248, 59,124, 31,100, 33,175, 41, 61, 57, 23,114,142,154,225, 91,100, 47,117, 99,226,237,223,100, 69,170,175,210,
+132,133, 92, 74,228,241,254,132,109,242, 16, 62,221, 63,240,249,215,175,116, 67, 39,112, 18, 37,206, 61,191, 62, 51,116, 2, 12,
+ 88,211,204,221,227,145,223, 63, 61,113,185,206,148, 84,113,193,221, 84,189,218,144, 56,231, 8,125, 71,140,137, 84, 27,163,177,
+116,135,129,183,215, 51,203,178,236,180,180,174,147,209, 77, 55, 28, 56,222,221, 49,140, 35, 53,101, 98,148,209,216, 52, 95,249,
+240, 79, 63, 49, 93,207,244,206,227,173,101,157,102,214,121,161, 26,199,227,227, 35,193, 24, 94,207,103,166,105,166, 11, 86,249,
+242,102, 87,207,206,107,102,141, 25, 3,116,125, 47,137,113, 49,145,151,196,154, 43, 31, 58,207,115, 19,140, 46, 77,227, 1,189,
+199, 54, 8, 62,112, 26, 71,134,161, 39,214,196, 20, 87, 46,115, 36,103, 81, 86,249, 32, 57,208,198,130,183, 14,175, 71,184,177,
+ 13,111,197,218, 80, 11,172, 57,239, 34, 70,103, 28,125, 47, 86,170, 82, 26, 41,174,212,168,156,113, 18,182, 72,129,100, 29, 36,
+228, 48, 93,115,229,101, 94,161, 26, 81, 40,231,198,215,231, 69, 71,192,154, 71,172, 23,209,150,217, 94, 74, 38, 85, 33,230, 29,
+ 90,196, 91, 67,172,137,101, 21,126, 51,192,189,119,248, 62, 16, 20,175,233, 53,164,228,100,225, 24, 28,125,232,248,241,241,158,
+209,119,132,102, 96,137,148,180, 16,142,119,248,163,199,143, 70,246,167, 57,115,104, 34,166,250,240,241, 7, 94,207,134,255,248,
+199,111,124, 60, 28, 24,198, 35,255,246,215, 95,104, 13,122,231,248,118,158, 56,103, 25, 21,146, 34,135,211, 61,110, 24,119,101,
+125,205,137,101,157,152,162,236,209,179,118,162,206,123,142, 99,199,113,232, 20,143,235, 81,203,189,238,249,100,214,210,140,147,
+110, 64, 39, 86, 45, 21,172, 21,145,160, 48,190,147, 92,224, 70,151, 83, 45,239,226, 43,163, 97, 18,110, 99, 98,191,187, 17,183,
+203,239, 61,187,189,188,143, 72, 53,251,246,238,221,238,252, 93,216,134,198,223,138,144, 70,254,156,109, 92, 95, 21, 12,211,140,
+ 92,182,118, 35,193,169,158,164,153, 91,199,141,210,178,104,223,231,174,239, 49,159,187,133,105,179,185,105,118,250, 54,214,174,
+ 34, 0,219, 20,247,183,104, 75, 17,212,214,154,164, 11,169,219,129, 85,132,167,128, 60,227, 81,187,221,161,247,120,219, 36,231,
+ 60, 23, 58,111, 8, 86,189,186, 52,221,107,243, 46,161,139,221, 62,164,217,113,123,112,149,117, 91,241, 43,238,148,101,213,203,
+ 60,201,174, 27, 42,195, 32, 9, 90,214, 7,106, 11,132,254, 64,240, 3,235,252, 70, 90,223,176,166, 18,188,216,237,174,243,202,
+101, 46, 92,150,204,101,158, 89,231,204, 58, 85,146,105, 68, 77, 34,107,138, 84,118,166, 49,122,153, 57,123, 12,211, 37,202,251,
+145, 11, 93,133,222, 1, 9,178,107, 28,156,161,179,149,193, 65, 74,134,168, 99,233,217, 86,230,181, 80, 49,140,157,165,115, 77,
+ 35, 84,171, 38,184, 25,114, 81, 2,167, 53, 68,141, 69, 78, 73,108,166,177, 52, 98, 18,129, 85,231,101,223,127,190, 78,212, 10,
+107, 17, 33,106, 23, 28,247,119, 71,230,185, 16,211, 42, 76, 9, 19,169, 56, 90,174,164, 34,141, 69, 8, 50, 45,202, 89,241,199,
+174,126, 79,155,211,127,207,181,146,146, 8,167,131,194, 89,196,245,129, 94,182,155, 45,107,155, 94,189, 3,193,120, 21, 70,215,
+134,115,129,203,249, 74,156, 38,172, 17,191,254,174,174,183,110, 87,129,111,100,205,186,237,173,183, 12,130,182,137,183,101, 58,
+233,220,109,180, 94,148,183,111,116, 58,179, 77,181,154, 19, 22,127,201,117,207,105, 48,187,232, 77, 69,147,185,236, 58, 24,176,
+ 90,104,155,157,193,178,161, 95, 13,230,150,197,222,196,238,154,171, 54, 27, 67,224,114,153,196,247,174,207,179,164,210,165, 91,
+232,173, 78,234, 36, 68,169,237,169,140, 27,190,215, 59,139,111,250,169,123,235,213, 27,236, 57, 63,191,146,150,136, 27,252, 30,
+129,186,129, 1,150,121, 97,141,139,112,194,223, 29, 60,155,162,111,203,103, 54,214, 96,178,140,104,115, 1,231, 2,167,211, 29,
+ 49, 37,198, 67, 71, 8,142,183,183, 55, 14,135, 19,203,188, 96,156,231,249,245,149,214,144,189,199,245,140,115,158,255,254,231,
+127,193,205,194, 76, 54,182,233,104,177,234, 97, 36,112, 68,239,197,199,253, 54, 93,229,239, 59, 79,176,158,184, 68,125,224,242,
+174,114, 12, 67,207,225,254,142,241,120, 98, 60,158, 88,231,137,146, 18,111,175,111, 28, 78, 71,134,174,227,243, 47,191,242,233,
+ 95,254,204,219,151,103,166,215, 51,235, 28, 57,220,159,184,127, 56,114,189, 92,152,174, 87, 98, 44, 60,220,141, 18,123,106,149,
+254,212, 26,211, 26,133, 35,108, 13,227, 56, 50,116, 61,243,178,138,200,205, 88,134,222,147,207, 55,178, 87,206, 5,215, 55,172,
+ 51, 12, 93,224,120, 56,208,117, 29,175,151, 11,151,121,150,130,160,100, 14,193,139, 16,202, 54,130,147,137,138,109,183, 17,143,
+ 65, 46,154, 88, 26,106,243,149,113,220, 32, 99,220,235,101,149, 46, 40,103,217,212, 52, 13,156,168,162, 77,104,181, 50,165,149,
+ 37,174,196, 12,175,147,140,232,171,166,125, 53,221,153,121,103,190, 75, 27,139, 89,198, 71, 37,195,120,132, 79, 15, 15,184,106,
+ 48,185,241,188, 46, 88,159,232, 44,187,143,222, 25,217, 19, 5,245,187, 38, 16,181,190,179, 60,222,157, 56, 13, 3, 7,231,240,
+185, 80,215, 68,232, 7,186,113, 36,116,158, 96, 42, 54, 25,124,107, 12,165,242,244,244, 35, 75,113,252,199,223,254,193, 49,140,
+ 28,134,158,191,252,250, 89,209,181,240,237,122,229,154, 11,189, 15,196, 53,210, 31, 15,116,135, 3,173, 73,113,208,138, 56, 37,
+166, 34, 23,122, 42,194,210,118,222, 50,140,129,195,216,209,245,162,229, 48,206,238,224,158, 77, 9, 91,181,218,119,206,146,107,
+ 22,145,164, 30,104,206,236,147,106,112,134, 82,146, 36,203,105, 23,211,178,138,218,172, 38, 45, 85,143,179,254, 38, 12,218,119,
+209,183,136,214, 45,128, 69, 14, 19,171,214,209,118,179,213,180, 27,107,154,157,182,253, 62, 55,102,219,230, 25,197,190,138, 7,
+122, 31,251,111, 86,183,218,246,195,118, 99,226,168,180, 71, 35, 99,173,118,249,220,186, 49,115,131,118,136, 46, 64, 89,115,181,
+236,105,234,117, 11, 8,218,150,215,173,232, 24, 95,177,178,206, 9, 15,221, 8, 44, 37,197, 68,174,149,208, 7,172,105,228, 82,
+ 88,214, 66, 53, 2,150, 17,156,173, 20,185, 6,243, 93,112,141,127,247, 57,184,189,131, 23,210,153, 20,171,242,181,214, 84,152,
+163,120,227,155,166,176,117, 33,112, 56,157,176,225,128,237, 14,248,190,163,149,149,151, 47, 95, 41,235,132,117,178,187, 60, 47,
+137,243,117,230,237,178,114,153, 50, 75, 18, 60, 41, 73,181, 12,166,209,123, 57, 91,203, 6,119,201, 82,156,149,218,136,250,193,
+230, 36,254,247,106,128,160,217, 25, 58,205,240,222, 50, 90,195, 48,222, 72, 4, 0, 83,148, 49,190,139,133,230,128, 32, 14,131,
+ 33, 72,177,219,121,105,126,114,201,196, 69,207, 27, 21, 79, 26,197,180,110, 54,203,156,147, 52, 97, 77,166, 13,193, 59,142,227,
+128,193,240,250,114, 38,230,172, 92,139,142,101, 73,172, 75, 36, 27,203,221, 56, 48, 54,105,106, 54,197,251, 38, 44,119,234,234,
+144,137,221,141,117, 30, 58,143,243,106,151,178, 70,130, 99,140,134, 75, 25, 5, 14, 25, 9, 95, 49, 90,128, 6,239,149,232,103,
+177, 33, 48, 45,179,228, 87, 88,251,157,181,211, 26, 96, 19, 45, 22,177,221,237,230, 76, 37, 53, 82, 37,130, 59,109,239,140, 70,
+ 66,179, 77,172,204,166, 48,103, 79, 78,116,110,131,100,105, 58,125, 43, 58,238,215, 35, 65,133,125,198, 40,133, 83,139,131,166,
+207,158,209,132,191,247, 4,199, 77,132,186,113, 44,182,228,202,203,229, 66, 78, 25, 23, 60,214, 54,172, 9, 10,210,105, 59,137,
+ 81, 79, 33,153, 62, 53,153, 20,108, 44,126, 85,191,203,161,228,244, 61,235, 67,224,183,117, 33,215, 66,232,187, 61, 88,100, 59,
+ 48,226,186,146, 83, 86, 1, 92, 17, 3,124,109,178, 99,212,208,251, 82,100,196, 96,149, 77, 94, 43,140,135, 3, 93, 31,136, 41,
+241,251,223,127,226,229,242,198,229,114,229,241,241,137, 90, 5,155,120, 57, 95,185, 59,158,128,202, 60,207,252,249, 95,254,137,
+159, 62,126,224,243, 95,254, 78, 69,242,101,251,225,160,136, 61, 85,218,214,138,239,130, 4,123, 68, 65,143,134,174,103,186, 94,
+ 89, 47,145, 83,239,121, 43, 5, 87, 11,198,122,198,187, 59,250,211,129,254, 48,208,117, 3,151,183,103,214,235,196,219,249,133,
+ 63,254,203,191,112,126,126, 97,232, 2,253,208,243,246,252,204,122,153, 89, 75,230,225,241, 1, 87, 43,231,203,133,235, 26, 37,
+200, 69, 49,160,214, 58,156, 21,149,120, 76,178,143, 13, 26,148,226,141, 82,161, 82,102, 8,129,222, 41,189,200,104,229, 87,171,
+136,196,156, 97, 24,122, 14,195,129,101,141, 92,167,137,105, 94,137,185, 48,116, 98,245, 64,241,136,157,119,120,119, 11,103,176,
+186,217, 74, 53,147,139, 70, 7,218,166,220,232,149, 53,139, 32,195, 84, 69,120,154,172, 5, 17,164, 44,161, 1,115,142,188,205,
+ 43,115,202, 44, 83,217,109, 79, 77,109,204,219, 88, 55,230, 6,165,144, 11,248, 14,156,135,143, 31, 30,248,233,231, 31,248,241,
+225,196,229,245,149,223,126,123,227,245, 50,115,157,146, 18,160, 26,157,243, 84,228,129,243, 42, 34, 41, 84, 25,133, 98,185, 59,
+ 30, 69,128, 71,195,228, 66, 89, 23,156, 15,244,167, 3,190,179,130,189,173,141,208,192,149,149, 15,159,126,198, 31, 30,248,191,
+254,231,255,161,119,142,131,239,248,237,219,171, 20,152,173,242,117,186,114,193,112, 63,142,148,117,149,188,226,113, 20,146, 85,
+147,224,135,101,153,153,114,228,154, 86,230, 24,165, 67,241,224,131,163,239, 3,161,247,132, 78,208,160,219, 56,173, 41,238, 88,
+252,161, 26,101,105,203, 30,209,184,141, 12, 55,248,146,105,130, 29, 50,198, 98,138,236,126,155,194,146,204, 22,159,219,120, 23,
+150,177,133,179,188, 39, 90,189,131,162,104, 62,183, 81,181,235,166,242,221,196,104, 70,149,191, 91,120,197,118, 24,128, 21, 66,
+160,117, 26,172, 81,117, 71, 43,157,184, 53, 6,154,211,140,106,233,108,229,230,175, 55, 68,152,189,133,206,188, 75,105, 87,122,
+ 22,123, 86, 59, 42, 92, 42, 85,131, 48,204, 13, 92,179,253,123, 45,202,184,216,244,122, 45,238, 57,239,206, 26,225, 96,148, 38,
+ 88, 77,181, 60,109,130, 36,175, 56, 78,234,150, 53,129,238,116,237,187,240,140,119,224, 15, 29,179,110,202,246,152, 11,107,108,
+ 76,115,146,160,165, 42,211,140,206, 7,134,161, 99, 60,157, 8,195,145,110,124,194, 58,207,235,243, 63, 56,191,253,131,150,164,
+115,155,214,196,219, 37,113,153, 34,151, 37, 49,167, 76,206,242,113,117,198,209,186, 45,108, 71,116, 36,243, 34,124,133, 92, 32,
+151,155, 64, 79, 29, 93,180, 34, 69,112,117,134, 92, 27, 9, 81,176, 47,165,145,178,108,170,173, 7,175, 98, 88,154,163, 29, 28,
+169, 72, 14,134,181,144,173,140,153,179, 78, 3,252, 96,241,182, 81,170,116,253, 49, 85, 98, 18,187,156,197,208,212, 98,152,214,
+182, 7, 54,245,206,224,157,188,159, 41,174,212, 28, 25,135,158, 15, 79,143,196,180,242,250,118,101,154, 42,198, 9,210,183, 54,
+ 88,215, 66,206,226,211,238,123,135, 53, 1,235,111,190,116,177,202, 26,114, 18, 17,176,239,110,133,107, 67,196,184,214,202,200,
+124,187, 88,157, 49, 58, 66,151,102, 39,236, 25,234, 18,129,123, 62, 95,100,210,169,207, 97, 86, 20,181,115, 94, 58, 91,133,115,
+ 25,141,141,222,226,132, 55,100,245,150,136,104,212, 10,102,117,228,191, 57, 53, 54,117,250, 6, 90,114,214,104,156,176,234, 96,
+244, 31,150, 85,150,193,216,186, 63,159,168, 0,115,235,168,173,213, 98,108,187, 67,117, 31,111,172,195, 40, 78,184,149, 76,201,
+133,174,235,185,190,173,156,167, 11, 31,158, 62,136, 56,206, 54,205,128,103,255,190,173,109, 10,157,108,251,252, 73, 6, 20, 66,
+116,244, 70,213,140,182, 84, 58,231,233,125,224,203,151,111, 44,243,162, 94, 92,179,143,181, 74, 41,196,121,149,203,188, 65,206,
+141,234,219,158,128,214,148,145,155, 85, 64,183, 85, 72,169, 86, 78,135, 30,211, 44,131, 15,124,252,225, 35,127,251,251, 47,106,
+ 75,145,120,187,235,245, 66, 55,120, 30,143, 71,254,246,203,103,236,208,243,223,254,249,159,136,211, 85,205,250, 42,204, 65,254,
+220, 86, 11,205, 10, 63,184, 15,131,236,172,167,132, 27, 4,209, 55, 93,102,172, 19,109, 99,106,149, 80, 27,253,208,243,244,244,
+ 72,127, 28, 25, 15, 3,205, 36,230,235,196,219,243,179, 92, 42,199,145,255,243,127,254,141, 63,253,244, 19,113, 73,130,109,140,
+147,236,222,239, 14,204,215, 43,243,188, 80,107,227, 48,246,152, 42,150, 60,239,100,187, 26,215, 12, 85,138,164,174, 19, 12,235,
+148,102,174,107, 20,188,164, 9, 50, 54,219,147,138, 10,227, 97, 16,250,155,243, 28, 15, 71,178,169, 76,203,194,219,229,202,186,
+102,253,223,204,141, 95,111,189, 84,172,166,146,105, 4, 42, 14,179,251, 71, 55,177,169,117, 18,162, 49,205, 43,181,138, 88,175,
+211, 74,180,106, 69,158, 26,164, 44, 86,185,231,121,225,101, 78,180,172,163, 84,187, 29,152,134,148, 13, 37, 53, 1,101, 0, 63,
+126, 24,248,243, 79,159,248,241,135, 59,250,161,103, 28,159,192, 24,190,254,242, 11, 95,191, 94,120, 62, 95,121,157, 86, 74,210,
+ 76, 0, 93,181, 57,227, 56,141, 35, 22, 88,115,220, 59,210,187,195,129,227,112, 36, 88,232,107,131, 24, 1, 67,119, 58, 98,122,
+ 71,232, 43,189,109,184, 2,117, 89,248,233,211, 71, 30,126,247, 51,255,247,191,253, 7, 37, 21,108,240, 60, 95,223, 4,130,145,
+ 50, 95,166, 51, 87, 23,120, 56, 30, 9,165,145,179,193,157, 78, 18, 39,154,101,148,181,198,194,154, 11, 83,137,130, 37, 46, 85,
+ 88,212, 46,112, 28, 60,135,193, 19,250,110, 87,164,151,220, 36, 11,122,235,150,154, 21,225, 87,171,148,242,253,244,188,105,104,
+ 5, 52,197,100,202,103,208, 54, 81,154,118, 17,149, 6,169,226,125, 80,126,122,194, 57, 21,166,238, 57, 82,218, 41,191,203,183,
+223,217,234,218,126, 90,165, 73,237,193,166,223,145,177,202,158,158, 40,155,204,170,247,161,112,208,155, 58, 31,244,152, 96,231,
+135,152,205,250,102,246,180, 69,167,161, 25, 85,131,103,110,234,250, 34,197,219, 78,160,105,223,209,231,222, 95,232,173,150,253,
+251,218,180, 11, 77, 33, 56, 41,203,193,152,155, 16,207,140, 23,145,159,217,185,242, 22,167,235, 54, 89, 59, 84,156,105, 20, 44,
+198,148, 27, 3,119,155, 83,108,150,187,170,227,213, 92,137, 37,179,172,141,105,137,164, 36, 1, 49,206,123,198, 78,236,179,119,
+119, 63, 96,199, 19,110, 24, 41,121,230,229,243,191,179,188, 78, 52,103, 88,115,226,124, 93, 56, 47, 11,211,220, 72, 81, 46,235,
+134, 60, 27,182,200,207,186,102, 72, 89, 20,233,185,130, 78,102,223, 81,246,182,168, 86,153, 97, 88, 81, 61, 40, 55, 66, 64, 62,
+110,227,112,180,186,131, 79, 90, 85,202, 88,107, 52, 10,214, 22,130, 53,244,157,229,120,127,144, 27,163, 47, 0, 0, 32, 0, 73,
+ 68, 65, 84, 96, 28, 70,250,222,137,102,198,137,102,163,203,153,236, 50,222,103,130, 75,196,140, 34, 70,183, 9,142,190,239, 91,
+247,222,117, 88, 39, 59,240, 16, 60,125, 8,152, 44, 83,187, 57, 54,240,186, 90,114,150,235,117, 81, 69,186,229,120,240, 80, 69,
+161,110,173,209,194,244,102,217, 72, 85,222,129,224,213,166, 37,226, 8,245,248,235, 5,110,229,103,223,158,245,109, 15, 30,122,
+ 73, 69,244,193, 51,205, 43,215,183,105,215, 11,185,125,148,221, 8,246,150,183, 32,233,117,130, 66,206,187,229,114, 67,171,110,
+127, 57,217, 71,107,113, 80,179, 22,199,238,253,163,116, 43,174,155,142,184,171,185, 81,229,246, 44, 66,197, 61, 55, 77,186,115,
+206,107,209,192,119,116, 72,120, 95,116,138, 22,165,149,172,171, 0, 15,165,114,185, 94,249,244,227, 39,140,147,207, 76, 52, 29,
+ 85, 29, 43,130, 24, 15,154,196,103,180,120,114,106,133,173, 52,188,213,238,169, 26,232,134, 30, 67,229,229,249, 85,146,127, 84,
+130,191, 31, 86,198, 48, 79,147,142,241,154,198,227,177,239,200,182,189, 95, 81,251, 76,214,157, 70,169, 43,227, 16,104, 37,114,
+247,233, 35, 33, 88, 94, 94,159,233,187,158, 46, 4,206,215, 51,211, 37,241,241,135, 71,222,206, 11,215,101,225,143,127,250, 3,
+159, 62,126,224,243,223,254,138,169,149,146,149, 70,101,100, 71,183,193, 92, 48, 14,215, 7,241,206,251, 74,112,158,154,139,194,
+ 64, 4,191, 88, 52, 73,236,248,120,164,191, 63,114, 56, 30, 25, 79, 71,166,183, 43,243,229, 66,188,206,252,254,207,255,196,235,
+229, 27, 57, 37,142, 15,119, 66, 20,155, 22,214,165,242,240,243, 29, 37,103,150,229, 74,140, 81,199,197,158, 92, 86, 58,235,241,
+170, 46, 93, 83,166,169, 98, 49, 56, 47, 15,235,154,152,230,164, 7,181, 66,120, 54, 29,131,133,241,208, 99,172,163, 11, 29,222,
+ 57,230,180,242,118,157,184, 92,103,124,232, 24,130,163,213, 13,105,233,197,154,131,134,227,152,182, 83,154,182,125,219,198,242,
+ 23, 37,188, 40,101,139, 10,146,146, 17,240,136, 67, 72,103,169, 37,166,156,120,187,174,188, 94, 86,156, 7,227,133, 45,188,168,
+183,117,141, 34,128,250,233,216,241,199, 63,222,241,199,223,253,196,211,135,159, 56, 62, 28, 69,233,191,174,196,146,152,207,103,
+206,151, 51, 47,151,153,151,107, 66,194,224,228, 5, 57,157,238,232, 12,156,198, 35, 93, 48,164,154, 73, 73,190,231,167,227,129,
+187,195,136,199, 18, 74,133,156, 41, 41,114,124,122, 36,116, 1,111, 42, 7,219,227, 27,196,183,137,223,255,240,145,167,127,254,
+111,252,175,127,255, 11,231, 23,177,222, 44, 49, 97, 93, 71,155, 47,252,227,245, 25,219, 29,248,225,120, 18,107, 95, 92,113,167,
+163,218,129, 50, 62, 23,209, 13, 52, 81,241, 47, 73, 70,188,178,130,114,116,189,195,135,158,190,235, 68, 76,101,141, 98, 26,235,
+126,201, 86,221,169,153, 90,117,116, 39,147,163, 29,123,217,140,162, 97,221,158, 39, 94,213, 13,176,237, 9,221, 22,240,226, 52,
+141,202, 26,245,199, 86,197,180, 58,237,248,235, 45,112,165,105,242,221,150,224,213,218,174,144,109,123, 65, 33,158, 51,131, 72,
+136,101, 12,174, 46,137,166, 32,139, 42, 63,151,177,242, 60,236, 56, 90,115,187, 12,183,139,249,214,233,222, 46,158,162,153, 14,
+194,130, 40,123,151, 94,138, 20, 51,109,203,135,215,114,160,110, 4,173,214,116, 4,191,209,197, 12,133, 44,182,197,106,200, 37,
+ 3,134, 92,154,198,251, 22, 29, 57,106, 70,187,201,224,188,192,173,208,201,149,115,216, 42,113, 82, 27,120,103, 27,197, 87,245,
+115,214, 90, 5, 60, 84, 10,113,173, 76,211, 74, 76,130, 58,245, 93,224,112,232,185,187,191,231,254,227, 71,172, 61,224, 58, 79,
+ 94,206,156,191,252,141,101, 61,147,220,194,243, 75,228,245,178,112,142, 89,180, 4, 25,154, 43, 98,169, 74, 70,200,113, 10,165,
+ 41, 69,152,221,165, 26, 81,245,235,174,213, 25,131,211,110,202, 90, 81,230, 59, 77, 9,171, 94,148,219,197,201,231,238,205,109,
+101,165, 87,136,192, 89, 92, 21,207,121, 51,180,130,224, 98, 77,227, 49, 12,252,241, 79,127,224,254,113,224,224, 10,109, 73,188,
+ 92,103,190,189,158, 89,166, 21,151, 13, 62, 24,236, 82, 73,107, 38, 55,104, 90,132,109,246, 44, 49, 42, 20,130,131,190,239,104,
+213,240,124, 93, 88,106, 37, 24,207, 93, 63,112,127,231,232, 58,203,175, 47, 43,231,107, 18,203, 94, 39,194,179, 53, 86,186,224,
+105, 97,131, 18, 73,120, 73, 41,134,186, 90,194,193,237, 26, 28,212, 42, 88,177,120,239, 5, 13,174,197,227, 70,108, 43, 45,209,
+247, 7,165,161,138, 37,108,121,189, 48,197,153,222, 56,157, 6,200,100,203, 40,119,221,110, 4,193, 77,227, 82,183,130, 18, 45,
+ 72,111, 93, 46,237,198,105,183, 21,154, 88,145,116,231,237,148,237, 80,116, 55,174,154,144,182, 17, 27,117, 8,254, 95, 86,206,
+239,197,174, 55,180,171, 21,222,196,142,133,214,201,209,187,119,182,214, 42,214,219, 14, 94,174, 23,104, 18,160,229,172,193,120,
+177,246,229,170,103,122, 19, 97,238,182, 38,176,205,224,141, 5,181,243,249,237,210,206, 85,198, 23, 49, 73,231, 50, 30, 70,250,
+190,251, 46,102,175,164,149, 52,207, 50,246, 54, 82, 21,136,178,181,108,172,186,125,247, 16,156, 35, 89,163,213,176,101, 28, 71,
+ 44,134,159,127,250,145, 47,223,158,153,167,194,112,232,169,214,114, 57, 79, 28, 78, 61,167,227,137,127,252,237,153,174, 31,121,
+248,240, 72,174, 91,104,204,198,187,150,192,129,130,163,102,168,200,216,125,232,123,214,117,197,166, 6,189,164,128,213, 82, 4,
+148,147,179, 68,138, 90,203,253,135, 39, 14,247,119,244,227,128,115,134,207,223, 94,152, 95,223,232, 31,159, 24,239, 78,252,237,
+127,255,127,220,223, 61, 16,124,224,243,215,191, 49,159, 47, 12,135, 3,253,241,192,121,186,176,174,137, 84, 51, 15,227,157,216,
+ 12,246, 8, 62,179, 19,240,172,179,130,119,237, 58,186,224,121,190, 78,100,110,187,150,132,217, 43,189,222,139,119,178, 57,131,
+117,158,212, 36,195,254,235,203, 87,156, 15,116, 65,140, 22,169, 52,250,161, 35,120, 79,239,229,193,202, 89, 60,189, 85,199,138,
+173,170,183, 82,129, 14,169, 36, 2, 22,111,149,114,181,117,151, 5,140,173,164, 10, 75,138, 92,150, 85,148,155,189,116, 22,165,
+192, 92, 12,207,179,120,223,255,244,233,145,127,253,215,127,229,247,159, 62,113, 58,138, 34,124, 8, 29,161, 15, 2,131,112, 22,
+115, 46,188, 92, 46, 92, 46, 87, 94,166,149, 20, 43,165, 72,151,244, 79,255,252, 7,126,248,249,119, 34,217, 58, 47,148,146, 89,
+167, 11,231,203,204,195, 48,112,119, 60, 73,154, 28, 13,147, 51, 53,101,134,195,129,208,123,156,173,156,186, 1,219, 28,229,245,
+204,255,207,213,155, 53, 89,146,173,105,121,207, 26,124,218, 99, 12, 25, 57,213,169,249,112,206,161,233, 70,208, 64,155, 0,153,
+132, 33,227, 2,253, 85, 76, 50,201, 76,128, 12, 97, 38,195,116, 33, 46, 36, 33, 1, 77,183,250, 12, 53,100,101, 86,229, 28, 17,
+123,114,247, 53,233,226,251,220,119, 20,117, 89,150,153,177, 99,239,237,107,125,195,251, 62,239,197,114,193, 39,191,252,138,111,
+ 95,190,226,237,219, 91,172,183,196, 82,168,125,195,112,184,227,187,183,111,168,186, 45, 87,155, 13,174, 50, 28,135,129, 92,139,
+ 13, 44,167,140, 29, 35,185,239,137, 41,210,147, 57,165, 32,148,176, 82, 4, 27,218, 56,153,176, 84, 13, 88, 79, 54,226, 49,151,
+105,149,142,176,201,250,112, 79, 48,152,105,239,173, 80,213,156, 53, 63,228, 60,134, 47, 73,224, 72,146,117, 31,116,238, 39, 21,
+248, 4,127,193,200,196,106, 98, 6,120, 47, 23,251, 76,162,154,196,115,234,135,157,242,158,231, 49,179,142,212,167,139,216,152,
+105,132, 95,102, 65,220,196,224, 46, 58, 86, 79, 10,144, 41,249,172,130,159, 47,114,197,215, 98, 13,166,120,140, 50,190, 83,202,
+ 51,236, 99, 90,186,151, 36, 23,117, 73,211, 60, 60,107,174, 64, 58, 95,232, 26,240, 50,141, 47,167,253,250,148, 76,150,138, 19,
+ 37,116,158, 82, 35, 39, 43,147, 42,135,149,163,110,172,116,169, 20,171,208,141,168, 16, 30,171,214, 78,221, 27,171, 24, 32,150,
+ 66, 44, 72,252,241,152,233,251, 76, 31,165,235,175, 27,113,154, 92, 94, 94,179,184,124, 12,182, 17, 68,246,238, 37,251,143,111,
+ 25,246, 71, 62,238, 79,188,191, 61,112, 63, 68, 74, 16,116,180,119,144,157, 35,142,133,126, 72,132, 40,211,154, 92, 36, 34, 57,
+228,204,168,110,151, 36,110, 47, 92, 49, 4, 43,239,170, 53, 50,110,246, 70, 46, 11,231,196,222,212, 56,163, 88,102, 41,174,177,
+ 14,141, 11,144, 15, 78, 87,112,146,128,107,197, 34,166,250,133,126, 24,113,198, 81,217, 5, 85,237,184,188,172,121, 28,247,220,
+ 31,151,188,250,241, 3,175,239,247,148,193,211,216, 68,182,134,216,143, 56,180,184, 44,134,100,228, 51, 27, 66,198,157,188,172,
+ 6,189,132,133,212,214, 82,123, 79,219, 84, 28,134,196,219,221,145, 12, 60,218,212,180, 77,205,113, 20, 90,157, 49,142,202, 72,
+112,147,119,122,105, 89,201,122, 49, 21,212,149, 21, 64, 84, 57, 19,219,172,115,178, 10, 52, 73, 89,249, 70, 97, 75,133, 49,102,
+214,149, 87,175, 56,248,182,230,240,242,196, 16, 50, 77,237,230,201,148,195,146,116,108,238,157, 99, 76,154, 96,105,116,221, 85,
+202,172,253, 72, 41,202,235, 83, 58, 29,106,105,179, 22, 74, 52,122, 97, 62,184,144, 85,185, 63,143,207,231, 92, 3,133,158, 89,
+ 67, 78,250,220,155, 51,230,121,110,245,141,193, 56, 39,142,179,124, 6, 51,157, 19,224, 52,181, 45, 21,170,165,216,115,251,227,
+192, 48,244,180,203, 53,222, 90,130,115,164, 60,202,207,112, 10,134, 82,171,155,230, 32,147,212,111,111, 11,248,170,114,146,154,
+ 20, 18,117, 91,211,199,194,254,208,179, 88, 44,169,234,234, 1, 72,192, 50,156, 70,226, 24,116,119, 38, 20,171,162, 62,208,162,
+ 47, 90, 38,243,134,202, 59, 34, 34, 6, 41,198, 82,215, 45,171,205,138,139,235, 43,190,251,127,255, 28,231, 12,174,174,216,221,
+223,147, 83,230,241,211, 27,222,190,251, 72, 33,178, 94,119,172, 23, 27,198,148,136,199,147,216,113,114,146, 75, 44,229,185,211,
+165, 20,154,174,195, 90, 71, 8, 73,119,204, 82,250,196, 24, 49, 10,205, 73, 41,177, 92, 44,121,242,236, 41,213,162,163,235,150,
+ 28, 15, 61,119,175, 63, 18,134,192,163, 79,110, 56, 14, 3,239, 95,191,225, 87,127,244,199,140, 41,112,188,189, 3, 83, 88,172,
+151,140,195,137, 97,144, 46,189,246, 53, 85,213,144,227, 9,239, 37,102, 47, 38,153, 12, 72,138,142, 48,129,155, 70, 66,106,250,
+ 49,156,217,222, 5,198,156,132,179,173,185,244, 83,240,125,209,110,235,110,119, 32, 91, 71,237, 29,181, 51,196, 48,170, 16, 80,
+ 40, 91,190, 50,132, 62,144,114,192, 23,167,246, 35, 37,140,233, 78, 82,148,232,137, 94, 21,196,226,125,149, 72, 66,171,108,249,
+ 62,142, 12, 33,138, 34, 22,163,169, 65,112,123, 42,140, 41,241,235, 95,255,130, 95,125,249, 37,207,158, 63,195,185,154,166,150,
+128,146,182, 54,172, 26, 67,215, 53, 4, 10,119, 31,222,112,248,248,145,126, 12,220, 29, 36,105, 40, 43, 92,228,233,103, 55,252,
+245, 63,254, 19,234,182,225,120,123,203, 41, 64, 50,134, 99, 78, 92, 95, 95,203,120,220, 27,154, 82,176, 49, 10, 91,160,110,105,
+187, 22, 99, 51,203,182,166,174, 61,241,227,129, 69, 85,241,197,111,254, 26,239,238, 15,124,247,195, 75,170, 82,227,141,161,107,
+ 28,167,251, 61,223,253,244,134,170,170,185,218,174,112,141, 37,166, 44,156,231, 44,138, 96, 51,140,132,211,145, 20, 3,125, 26,
+ 57, 77,249,222, 70, 92, 7, 77,229,105,218,154,182,173,148, 22,231,116,175, 60,141,122,117, 23,106,156, 42, 95,103, 90,245, 89,
+234, 91,242, 76,163, 50, 86,247,119, 88,233, 12,244, 50,150,200,199,179, 18,183,104,226,214, 3,216,230,236,205,133,172, 94,106,
+ 37,254, 77, 92,108, 30,208,226, 20, 97, 57,147, 58,237, 25,253,138,209,180, 60, 52,201,169,232,247,208,168, 78, 94, 81,149, 69,
+ 61,249, 15, 71,251, 51, 27,190,156,253,232,211,158,127,250, 89,243,126,124,218,119,147, 5,195, 57,107, 10,178,198,146,170, 94,
+ 32, 39, 5,229,200,101,159, 82, 18,114, 91,182,170,197,201,115,100,171, 48,190,171, 57,174,245,140,193,117,114,185,235,122, 79,
+100, 1, 86,242, 17, 38,255,176,192,222,201,197,145,146, 80,204,198, 49,115,236, 19, 33, 25,172, 19, 2,224,229,197, 37,215, 23,
+215,152,118, 73,182, 14, 75, 79,255,241, 13,251,221, 7, 62,220,237,121,127,123,224,195,221,145,211,152, 9, 37, 81,162, 20,108,
+ 41, 35, 97, 34, 99, 38, 68,163,135,181,236,111, 67,150,117,149, 36,112,105, 7, 57,235, 13,166,115, 82, 94,119, 52,226,111, 55,
+128,119, 5,239,141,234,248, 12,109,221, 18, 53,219, 28, 99,213,153, 32,113,214, 69,163, 48,141,254,254, 57,195,253,237,158,219,
+251, 61,159,124,250, 9,181,181, 36,103, 41,214, 80,101,199,211,103, 13,221,234,192,199,143, 59,238,118,123,140,250,198,163,140,
+ 43, 20,207,106, 85, 48, 9, 67, 42, 20, 34,149,177, 84, 77,165, 10,243,204,238,120,164,144,105, 27, 9, 89, 33, 21,246,251, 19,
+190,114,248,170, 18,154,221, 56, 82, 45, 87,115, 17, 43,211,219, 36,103,151, 63,103,137,167,156,161, 36,141, 86, 45, 24,147,231,
+113,182,179,234,195, 78,130,158,182,149,193, 36,121, 31, 62,238, 14,196,172,233,106,186, 86,178,234, 70,153,206,223, 18,202,217,
+ 34, 82,204, 57,138, 88, 93, 86,162,162,119,231, 24,214, 9,121, 91,206, 25,239,147, 35, 68, 4,108, 22, 27,229,185, 47, 63,139,
+ 53, 54,231,184,190,242,128,213, 48, 75,255,181, 56,112, 22,103, 13,164, 66,137,106,105,115,142,164,169,242,165,104,196,170,179,
+ 84,109,195,238,126, 96, 8, 39,156,221, 10,180,172,106,200, 67,148,207, 71,167,131,222,123, 98, 14,148,236,164,193, 54, 50,191,
+203, 25,124,101, 45,199, 18, 48,222,210, 53, 13,247,187, 91,238,110,111,233,214,107,193,195,154,115,212,162,124,145, 35,174,146,
+144,221,140,236,112, 39, 16, 5, 69,252,115,206, 90,156, 66,103, 98,145,253,115, 83, 85, 92, 94, 93, 17,135,129,221,253, 61,190,
+246,128,225,116, 58,178,189,216,224,189,225,227,221, 61,203,213,146,174,235,232,218, 90,132, 45, 33,147,189, 32, 2,193, 16, 67,
+160,120,237, 80, 44,212, 94,133, 23, 49, 97,107, 17, 38,164,156, 9, 57, 75,165,150, 19, 37,194,213,147, 71, 92, 61,190,129,186,
+193,215, 53,111,191,255,129,215,175, 94,240,201,231,159,176, 92, 44,248,254,197, 11,170,110,193,245,245, 53,111, 95,126,199,120,
+236,105,151, 75, 82,134,225,216, 75,198,243,152, 88,111, 23,148, 28,100,215,227, 43,156, 69,146,216,146, 28,136,206, 91,154,202,
+209, 86, 2, 72, 24,194,121,215,151,115, 98,224, 44, 6,241,206,146,141, 28, 82,169,136, 56,176,143,145,218,121, 89,137, 4,201,
+ 39, 95, 52, 13,222, 90,154,202,170,239, 57,235, 56, 95, 39, 35,147,238,193,137, 85, 67,108,197, 98,117, 10,177, 72,246,178,155,
+ 4, 30, 70, 66,102,114, 98, 76,130,178, 13, 69,224, 31,187, 19, 92, 63,187,224,239,255,189,191,207, 87,191,252, 66,197, 43,103,
+168, 74,221,180,116, 93,195,118, 89,115,125,177,224,238,246, 3,111, 94,124, 79, 63, 14,236,251,145,195, 48,158,225, 98, 14,158,
+255,226,107,174,111,158,145,135, 19,198,159, 88,125,250, 57,166,242,216, 23, 47,168, 31, 93, 75,242,213,254,132, 57,238,200, 33,
+224, 42, 47,248, 74, 10,171,186, 97,181,108, 57,189,223, 81,167,200, 23,191,249,235, 28, 98,230,119,127,120, 65,127, 12,180,203,
+154,101,215,176,187, 63,242,226,135,159,168, 22, 29,143,174, 46,169,234, 74,186, 33,231, 25,211, 40, 79,216, 56,146,143, 7, 66,
+ 8, 28,211,192, 49, 14,164,105,157,225, 44, 77,237, 89, 46, 58,186,174,197, 87,150,108,213,178, 87,172, 92, 32,169, 96,167, 96,
+137, 7, 99,106,166,247,222, 78,123,236,252, 64,133,173,227,107,196,178,152, 75,209,220,227, 50, 99, 53,115,201,216, 98,117, 71,
+127, 14, 67,154, 38, 83,211,200,222, 60, 28,219,235,190,115,238,150,149,233, 63, 9,243,152,209,150,218,201, 24,167, 23,121, 82,
+ 54,180, 66, 82,180, 38, 17,187, 25,115,161, 49, 83,223, 30, 40,218,209,128,165, 89,218, 63,255,236,255, 12, 67,171,236,244, 89,
+ 73, 61, 37,179,105, 87,110, 74, 38,149,164,190,242, 50,171,192,163, 6,151, 76, 40,205,242, 96,148, 89,212, 15, 60,251,242,231,
+ 28, 72, 61,212,117,110, 60, 89,149,166, 85,109,158,178,103, 82, 97, 24, 11,253, 40, 19, 67, 95,123, 22,109,203,245,227,107, 30,
+ 95, 63, 37, 21,207,152, 10, 37,244, 28,238,127, 34,156,142,188,127,127,203,155,251, 35,251, 83,166, 31, 37, 77, 49,164, 72, 73,
+ 69,207,151, 68, 8,200, 88, 89, 47,244,152, 10, 33, 35, 59,116,161, 67,203, 65,110,152, 41, 4,198,128, 45, 5, 17,250, 91,181,
+113,137,200,202,123, 67,213,120,165,242, 89,150,222,113,200,146, 22, 9, 16,138, 20,203, 73, 63, 23, 95,201, 66,126, 90,175, 12,
+125,225,205,219,119,252,177,253, 53,237,102, 69, 86, 43,106,118, 53, 84,150,174,179,216,226,105,234,138, 91,127,207,253,254, 64,
+ 52, 78, 47, 57,212,150,235,136,250, 89, 37,132, 80,151,114, 81,218,163,116,150,222, 73,244,113,136, 61, 38, 58,154,101,131,117,
+ 86,220, 61, 22,154,182,145,252,144, 73,151,145,165,249,171,107,175,147, 37,193,119, 39, 13,249,113,182,204,193,193,121, 90, 77,
+100,203,152, 69, 92,218,181,141,132, 26, 77, 33, 99,199, 3,197, 24, 34,136,165, 87,189,219, 32,231,177,119, 78,243, 14, 38, 39,
+167,176, 64,166,224,161,156, 11, 37,102,106,197,205,162,177,176,147,221, 35, 43, 55,194,216,115,240,145,156,181,105,142, 56,146,
+ 73,137,242, 66,156, 35, 12,113, 78,153,251, 25,111, 98, 34, 71, 24,125,102,115, 38,164, 81,248, 11,206,205, 84,195,105,252, 94,
+130,208, 8, 67,217,115, 58,245, 84, 85, 37,246, 90,231, 5,179,157, 5, 57,109,141, 76,131,251, 48, 80,236,148, 29,193,172,183,
+240,198, 56,134, 52,176,233, 26, 42,111,217,221,238, 72,197,176, 94,175, 40,174,204,226,121,131, 97,236,123, 93,162,235,161, 99,
+132, 2, 69, 42,152, 44,157,137,236, 7, 45,158,164, 99, 96,216, 46, 58,218,182,226,147,103,207,185,187,127, 75, 48,137, 98, 44,
+195,105,160,169,106,182, 87, 27,222,254,248,134,170,178, 60,218, 94, 48,198, 8,181,196,191,166, 44,213,183, 68, 54, 10, 63,217,
+187, 74, 63, 82,168,155, 26, 40,132, 16,230,232,190, 52,102,156, 46,252, 75,206,116,222,241,248,179, 79,177, 77,141,175, 27,194,
+ 16,248,225,155,239,169, 26,203,246,230,138, 48, 12,188,127,243,142,103,159, 60,167, 56,184,125,249,154,108, 29,174,178,236,239,
+238, 8, 57, 49,134, 68,221, 84, 44,234,138, 97, 28,241, 86,194, 89, 74, 46,140, 33,206, 81,165,117, 85,177,108, 91,140, 85,172,
+106, 76,115,182,176,245, 50,201, 48, 69,210,210,112,142,177, 76,161, 30,133,227,208, 83, 25, 75, 82,107, 68, 76,129,182,105, 85,
+213, 41,190,214, 24, 19,198, 88,106, 87,105, 4,121, 57, 43,146,173,168, 88, 75, 84, 75,135, 57,231, 30,154, 34, 74,210, 60, 37,
+178,165,196, 41,142,226,151,142,134,144, 50,255,240, 31,253, 41,127,246,119,254, 12,223, 44, 25, 66, 15,214, 82,185,138,202,215,
+212,117,195, 98,217,209, 52, 45,109,183, 32, 19,184,123,255,150, 52,140, 20, 12,167, 97, 20,126,184,222, 88,190, 54, 92, 61,186,
+ 97,217,118,224, 10,207,158,252, 49,159,252,209,223, 32,198,158,151,127,241,151,220,190,121,197,241,246, 61,253,174, 39,164, 64,
+ 93,213,184,182, 38,155, 76,215,118, 92,109, 47, 57,222,126,196, 13, 35, 95,255,230, 87, 84, 77,199, 95,254,254, 27,222,126,120,
+207,245,122,195,227,139, 53,239,238,119,188,120,245, 22,223, 54, 92,111, 55,212, 77,165,221, 79,205, 56, 4, 66, 78,152, 16, 72,
+251, 3, 97, 24,216,143, 3,183,163, 76,126,156,149,139,163,245, 21,139,174, 85, 43, 97, 37, 46, 14, 44, 99,206, 84, 89,172, 95,
+ 78,129, 39,118, 18,187,252, 44,103,121,210,251,148,169, 89,215, 14, 69, 15, 27, 43,217,211,115, 66,149,218,198,153, 14,179,156,
+200,182, 40,201,202, 61, 24,157, 79,104, 85,221, 23, 63, 40, 20,114, 22,178,213,244,231,255,115,104,205, 20, 64, 65,177,170, 7,
+144, 20, 50,233,120, 69,253, 43, 77,136,236,230,162, 78,241,138, 18,225,114,202,224, 45, 89, 95,139,140,205,245,187,150,207,123,
+113, 51, 95,242,204, 73, 82, 37,201,119,204,232, 63, 88, 52,132, 4,237,208, 83, 74,243,101,158,139,165,144,148,188,110,230, 36,
+ 57,166,139,220,228, 25, 61, 61, 77, 37,204, 52,157, 40,231,235, 61,155, 44,118, 65,165,128, 73,209,229,197,211, 30, 50,195, 8,
+ 17,137, 17, 94, 45,150, 60,186,121,194,245,163, 27,178,105,136,125,143,207,137,221,221, 27,142,199, 15,124,188, 29,249,112,223,
+139, 61,109,156,224, 49,129, 49,200,123, 85,137, 3, 80, 10,145,217,129,163,151,122,146, 14,221,100,131,215, 61,236,156,158,101,
+164,168, 51,197,224, 42, 35, 99,212,146,149,178,102,102, 76, 42, 64,101,221,140,178,173, 42, 47, 23, 70,146, 53, 91,100, 98,140,
+ 23,133, 70,105,119,235, 19,251,187, 61, 31,119,119, 60,190,185, 97, 44,134,156, 34,198,121,108,229,112,209, 80,181,133,133,145,
+137, 81, 41,112,216, 15, 36,171,239,127, 22, 37,181,117,194,124,151,108, 1,167,191, 27, 84,149, 18,219,212,237, 83,117, 45,141,
+113, 12, 41,114,232, 7,172,245, 92,111, 26, 54,203,122, 14, 45,177, 9, 74,148, 17,127, 93, 57, 77, 45, 20, 91,178,224, 95,101,
+172, 31,146,106, 31, 38, 71, 73, 18,136,151,117,150, 69,211,232,248,189,225,112,252, 64, 28, 6,101, 15,152, 9,234,166, 93,190,
+228,119,120,107,102,133,187, 53, 70,126,215,105,210,100,117,221, 19, 18,117, 43,206, 29, 25,173,219, 7, 19,161,201, 26,166, 23,
+165,196, 80,233, 69,111,206, 65,133,101,202, 55,119,115,131,137,174, 50,230,209,253,131,201,154,119,142, 18, 71, 2, 50,253,178,
+ 86,192, 95, 2, 81,211, 60,128, 40,184,109,231, 44,167,211, 48,251,209,141, 19, 61, 91, 72, 69,243, 45,210, 92,176, 79,130,196,
+ 98,148, 50,153, 51,190, 32, 99,152,102,187,198,215,150,187,251, 3, 14, 88, 44, 58, 25,103, 79, 73, 60, 73, 72,114, 41,129,211,
+189, 27, 89,130, 42, 38, 8, 69,214, 3, 78, 70,100, 73,187,200, 76,211,136,234,124,177,106,121,245,227, 9,178, 21, 12, 98, 30,
+217,172,214,156, 14, 39,246,187, 35,151,219, 13,235,205,138,251,253,142,174,171,217,191,191, 37,151, 32,251,205, 34, 59,185, 24,
+ 19, 94, 15, 11,107, 13,117, 93, 19, 66, 32, 7,241, 64, 26, 99,136, 73,201, 88,122, 90, 93, 60,190,228,201,167,207,168,171, 10,
+ 91, 89,222,190,126,195,171,239, 95,241, 55,254,246,175,233,218,134, 31, 95,191, 37,165,200,245,147, 71, 28,239,110,249,240,246,
+ 61,155,155, 75, 14,135, 35, 67, 24,200,198, 50,142, 35,155,205, 90, 14,141, 84,168,219, 26,103,157,132,166, 4,121,141,206, 59,
+154,166,165,107, 90, 78,199,129, 49,164, 25, 2, 99, 57,239, 49, 39, 92,165,168, 31, 11,198, 36,198, 16,100,228,232,101,116, 26,
+ 83,194,120, 71, 83,215, 84,214, 74,118,122,150,223, 43,153,130,215,125,175,203,103, 96, 72, 36, 67, 18, 33, 79,198, 18,162,116,
+ 5,214, 38,108,209,145,146, 66,129,134, 92, 72,182, 80, 2, 44, 87, 45,255,228,191,250,199,124,241,213, 47, 57,244, 3, 33,159,
+112,206, 80, 57, 39,133,204,122, 67,219,173,104,155, 74,190,104,214,114,127,123, 75, 60, 12, 84, 77, 77, 8,137,253,110, 36,198,
+243,101,180,112, 11, 22, 11,135, 33,241,248,211,207,248,213,223,254,251, 92, 63,253,132,143, 63,252,129,133,179,252,240,151,240,
+187,151, 47,201,251, 61,214, 55, 84,190, 34,151, 68,211,182, 92, 63,186,230,184,187, 37, 31, 3, 95,253,242, 11,218,171, 43,254,
+227,111,191,225,135, 31,223,112,185, 88,240,197,163, 13,175, 62,238,248,246,213, 27, 86, 77,197,118,213, 81,117, 13,217, 89,124,
+ 83,233, 3,146, 48, 1,194,110, 79, 60,245,236,195,200,237,112,226, 56,142, 20, 44, 77,101,164, 59,170, 44,139, 69, 75,215,213,
+120,111,137, 57, 51,230,162,147,151,130,141, 8,193,235,103,245,183, 37, 79, 56, 73,173,178, 39,203,155,177,230,156,110,161,182,
+ 28, 99,100, 71, 58,101, 48, 91,107,149,211,174,239,215,212,241,150,105, 37, 80,230,124,240,172,170,245, 89,193, 62, 23, 19, 86,
+ 3, 47,236,207,178,211,167,231,149,137, 79,109,100, 92,103,138, 96, 36,207, 35,195,168,227, 96,167,150, 52, 77, 29, 83,253,128,
+ 36,192, 61, 68,215,102,253, 93, 39,243,186, 2,102,148,231,175, 89,165, 15,108,100,121, 86, 11,139,232, 46,253,204, 29, 32,225,
+ 41, 69, 45,111,118,126, 47, 74,201,146,222,101,206, 49,178, 81,159, 25,171, 68,189,137,106,230,212, 86, 20, 85, 59,128,208,200,
+149,128, 9, 67,204, 12, 65,196,128, 77, 37, 69,233,147,235,199, 92, 63,250,148,100, 29,113, 60, 1, 35,119,183, 47,248,240,225,
+ 39, 62,220, 38,250, 44, 13, 71, 73, 48,142,146,125, 16, 6, 73,107,195,195,152, 36,235,187,100,206, 69, 69, 41, 66, 40,211,113,
+187,247, 22,107,167,128,157,243,154,198,218, 56, 79, 58, 44,162, 9,136, 65, 86,137,214,106, 4,169,129,214, 59,138,119, 16,229,
+146, 45,197,224,181,136,138,218,157, 91, 35,200, 98, 9, 74,146,215, 19, 66,230,238,237, 30,251,149,161,106, 44,185, 88,242,232,
+201,174,224,234, 66,161,211, 81,190, 33, 6, 71,102,199,225,176, 39,231, 76,215,122, 92,150,240, 26,235,243, 44,126,148,239,134,
+ 96,172, 55, 23, 45,198, 57,114, 40,132,152, 56,140, 61, 33, 23, 54,171,142,139,205,154,182,149,203,208, 26,175, 30,243, 41,243,
+ 67, 89,239, 54,147,163, 40,239,179, 69, 45,106,246, 28, 80,164, 88,227, 49, 71,181,186,121,124,219,138,147, 39, 5,118,119, 7,
+ 98,180, 24, 19, 53,242,219,254,172,144,181,206, 96,189,192,160,208,162, 87, 26,194,252,192,118,173, 95,213, 82,104,213,222,249,
+112, 18, 86, 16,118,187, 53, 14,114, 0,155,207, 32, 25,205,177, 40,185,144,221,180, 2, 58,199,203,186,121,181,101, 30, 76,187,
+236, 60,189,155,116, 49, 37,103,172,175,176,198,170,190, 74,132,181,165, 20,218,102, 9,230, 61,187,221, 14, 99, 29,206, 24,162,
+ 13, 88,231,148, 74, 24,165,104,210, 73, 79,158, 19, 24, 53,209,209, 20,252,168,158,209,182,174,160,120,222,223, 29,192, 85, 52,
+ 77, 55, 43,182, 13,104,186, 79, 34,231, 72, 49,245,108, 17,200,234,231, 43, 70, 67, 59,208,172,100,221,173, 86, 94, 0, 30, 79,
+158, 61,226,120,218,211, 15,129,190, 31, 73, 41,211, 84, 13,149,247, 28,118,123,140,181, 92, 61,186,196,104,119,225,140, 35,141,
+145, 82, 44, 38,157,195, 40, 82,140,179, 85,206, 26,139,171,107,142,251,147,116,233, 58,122,137,106, 26, 77, 81,104,113, 95,126,
+253, 37,171,235, 71,184,182, 37,132,196,183,127,245,123,156, 49, 60,253,236, 19,198, 83,207,241,195, 29,151, 87,151, 44, 86,107,
+254,240,187,111, 48,206, 82, 85, 53,199,227, 59, 85,137, 39,172,173, 88, 44, 59,250,221, 73,130, 1,218,138,162,214,168, 82, 36,
+ 22,207,123, 79,219, 54, 88,107,232,251,147,122, 49,231,236, 45, 81,172, 34,239, 85,113,150, 56,237, 97,115, 97,232, 3,117,227,
+165, 67,215, 3,191,171, 26,108, 37,209,170,150, 76, 44,194, 85,119,197,144,116, 60, 52, 37, 6,197, 20, 25, 99, 18,170,188,142,
+ 33,125,153, 96, 47,106,189, 51, 98,140, 56, 41,141, 61,149,154,103,235,200,223,253, 71,255, 13,155,103, 95,178, 59,158,176, 78,
+128, 23,139,197,146,213,114, 41,162,194,122,129,175, 42, 42,231,177,206, 48, 30, 7,118, 31,238, 89, 95,108,249, 16,247,146, 94,
+ 55, 70, 17, 47, 97, 24, 41,108, 91, 71, 62,245, 44,154, 21, 95,254,250, 79,184,126,244,136,211,135, 59, 98, 24, 89, 47,183, 28,
+ 94,189,228,116,251, 26,219, 52, 82,105, 83,168,187, 5,219,199,151,132,251, 29,225,118,224,235,191,246, 53,151,151, 87,252,135,
+223,125,203,111,127,120,201,147,166,225, 87,143,175,120,127, 31,249,246,205,123,214,141,103,217, 53,216,182,165,120, 75,213,181,
+ 24, 99, 56, 28, 78,228,146, 8,187, 59,210,241,200, 41, 37,238,135,192,168, 20,179, 20, 51,167, 1, 42, 63, 82, 24,177, 78, 96,
+ 39,181,151, 81,117, 78,129, 18, 17,157,134,194,141, 42,237, 92,197, 17,114,134,128, 76,123,239,217,167,157,141, 28, 4,240, 0,
+252, 98, 30,116,210, 78,193, 20, 19,195,213, 10, 27, 90, 71,221, 70,173,104,198, 41, 22, 86,241,144, 78, 71,236,197,154,217,143,
+141,142,240, 11, 15, 46, 14, 85,237, 78,175,175,152,140,193,205, 68, 51, 35, 52, 28,217, 87, 23, 67,202, 81,172, 65, 89, 70,246,
+ 89, 85,231, 76, 17,172,231,212, 19, 17,124, 89, 43,206, 11,125,246,201, 89,195,100, 38, 12,102,150, 46, 93, 29,240,102,142,106,
+ 45,114,118,204,106,100, 41,252,203, 12,243,145,208, 24,180,107,116, 42,168, 50, 15,236,178, 37,139,122, 28, 29,137, 58, 29,231,
+154,108,100, 60,106, 29, 20,201,174,142, 37, 18,138, 56, 77,114,227, 88,181, 29,143, 31, 63,102,117,253,132, 96, 32,135,145, 58,
+ 13,188,125,251, 45,111, 62,188,227,246,163,116,102,235,174, 38, 69,195,253, 49,177, 63,141,244,131,140,167,157, 47,115,167, 86,
+215,150, 16, 50,161,159, 60,210,162,122, 47,136, 58,217, 57, 93, 63,100,171,238, 9,125,127, 38, 20, 42, 70, 59,110, 41,186, 42,
+231,240, 86, 68,118,190, 22,230, 5,230, 1, 46,120, 94,117, 88,197,197, 38, 64,242,128, 99, 58,211, 53, 19,150,247,239, 63, 50,
+140,145,170,118, 56, 95,227,147,228, 57,148,146,201,165,194,166, 68,211,180, 44,215, 18, 5, 27, 99, 38, 29, 14,196, 32,113,203,
+149,179,148,144,240, 78,215,130, 73, 16,196,133, 72,127,114,120, 47,162, 96, 42, 67,183,104,184, 94,212,226, 94,241,146,113,110,
+113, 84,179,118, 32, 98,172, 85,214,131, 46, 99, 38, 49,156,177, 58,113, 80,129,167, 94,134, 83,242, 91, 41,133,186,110,104,219,
+ 22, 72,132,216,115, 58,244, 50,237, 48,130,221, 46,202,155,176, 69,167, 97,122,201, 79, 20, 70,107, 11, 41,157, 61,231, 37, 26,
+140, 51, 28,227,192, 34, 86,106, 31,157,192, 93, 19,172,201,128,115,243,185, 58,185, 2,140, 50, 52,203,244,239, 63,176,169, 77,
+ 92, 69,147, 38,234, 20,179, 14,109,122,254,157, 51, 36,157,198, 36,138,198,173,234,158, 93,191,247, 41, 37, 90,131, 88,247,246,
+ 71,198,126, 96,179,109, 25,195,153,103,159,179,156, 33, 78, 29, 2,166,156,243,212,139, 62, 51,126, 28, 18,198, 58,150,157,167,
+ 31,122,142,199, 3,171,229, 2, 95,157, 71,129, 20, 24,227,200,233,212,171, 75,165, 60, 0, 74, 8,211,184, 66,136, 79,147, 5,
+ 39,100, 24, 77,193, 91,203,102,179,226,122,123, 73, 63,244, 28, 78, 61,135,253,145, 90, 69,120, 18,228,146, 89,175, 23, 60,187,
+188,226,167, 87,239, 5,252,225, 29,199,195, 81,246,138,136, 95, 62,198, 32,227,187,164, 86, 23,235,105,154,142,251,143,251,105,
+ 26, 49, 11, 25, 74, 46,132, 24,241, 77,195,205,211, 39, 92,109, 47,184, 61,220,113,251,230, 35,111, 95,191,230,249, 47,158,179,
+ 90,173,120,241,227,107,246,253,137,231,207, 63, 39,245, 3,119, 63,189,163, 93,118,156,118, 7,134, 99, 79,178,134,211,208,179,
+189,184, 32,151,204, 56, 6,182,219,133,188,158, 49, 18,163,136,207,112, 14, 95,121,218, 85,203,120, 72,244,251, 3,163,247,194,
+108, 87,216, 72,166,144,147,248,126,221,131,208,131,156, 51,197, 26,124,241, 58,173,147, 93, 90, 91, 9, 57,174,170, 61, 57, 10,
+172, 99,198, 16,170, 96,194, 90,139,171, 60,141,173, 25,119,119,132, 96,169,156, 82,199,188, 17,171,152, 49, 84,181,210,171, 50,
+140, 67,225, 56, 22,174,218,204, 63,248,111,255, 41,254,226,134,225,180,163,174, 60,109,187,161, 91, 45, 88,174, 87,116,237, 18,
+235,196,115,233,124,173, 23, 79,230,238,227, 59, 22,171,142,155,203,150,223,191,248,150,227, 73,203,132, 36,135,182,205,114,240,
+ 1, 92,125,241, 25,151,191,248,148,227,126, 79,238,143,116,235,142,127,247, 47,254,103, 94,254,197,159, 83, 85,141,118,112,133,
+170, 89,240,232,217, 35,194,110,207,112,127,228, 23,159, 63,231,209,179,199,252,197,119,223,243,251,239,126,224,105,219,240,213,
+ 47,158,243,227,110,207,139, 55,239,216, 84,158,182,173,201,222, 97,218, 90,184,240,109,203,237,221, 61, 41,102,226,110, 79, 60,
+ 29, 24,115,228, 54,244,244, 89, 4, 78, 5, 67, 85,201, 46,241,118, 31,233,150, 71, 86,139, 29,235,205, 10,154, 6, 59, 6,106,
+ 35, 9,115,227, 40,112,158, 62,128,241, 18,175, 59, 7,134,152,172, 94,126, 51,227, 79,141,170,217, 37,241, 78, 70, 98,103, 69,
+138, 82,166,244,146,155,226, 25,101,103,231,117, 7, 44, 93,186, 45,231,177,157,168,232,181,107,213,135,185, 20,243, 96,106, 48,
+225, 95,203,236,127,157,148,240,217, 90, 92,177,103, 63,242,100,121,203,103,166,204, 20, 14,147, 85,184, 36,184, 86,141,196,156,
+124,240,197,145, 74, 60,199,180,206,171,119,185,192, 77,153, 92, 48,249, 44,142,123,208,161,203,103, 60, 21, 2,146,106,150, 85,
+ 4,150,243,131,179,164,156,119,131,115,140,235,100, 85, 82,113,162, 41, 98, 3,147,196, 62,249,125, 43,235, 25,163,153, 71,167,
+ 41,195, 49, 36, 98,145,189,233,182,109,185,121,252,132,139,235, 39, 56, 91, 19,210, 64, 49, 61, 47,127,250, 61, 63,254,248,134,
+251, 99,162,110, 61, 79, 46, 27, 22,155, 39,124,247,242, 13,135,254, 3,251, 83, 34,234,170,172,148,194,230,226,138,175,190,254,
+235,146,147,126,188,231,118,119,203,221,221,158, 23,223,191,228,216,139,232,205,171,112,205, 27,163, 99,211, 60,167, 86, 22, 85,
+239, 59, 43,100, 70,239, 43,234, 42, 41, 29, 82,215, 28,206,227,155, 90, 71,213, 81, 28,140,186,214,137,243, 16,199,204, 28,115,
+ 42, 73,245,179,128,183,153,211,233,192,110,183,227,241,227, 71, 26, 21,106, 49, 89,138, 86, 40,148, 84, 83,140,161, 42,150,213,
+218, 66, 42,140, 67,207,187,187, 19, 99,137, 92,111, 26, 38, 76, 66,213, 54, 80,172, 36,101,246,137,166,206,212,173, 97,181, 94,
+176,104,107,124,229,164,248,146,185,185,116,233, 72, 17, 35,227, 98,157,166, 86,146, 84,153,210,100,142, 40,120, 43,137,134, 15,
+ 44, 25, 58,169,146,240,146,148, 18,139,101, 67,211,212,156,250, 35,227,113, 32,246, 35,198, 61,248,126, 79,250, 19,100,156, 93,
+233, 37, 42,240, 45, 48, 41,207, 35,245,105,109, 37,127,192, 17, 75,198, 91, 43,197, 20, 69, 66, 95,116, 98, 96,157, 20,141, 86,
+ 11,215,162, 49,168,211,231, 56,249, 66, 77, 65, 11, 61, 51,175,164,205, 3,132,243, 36,150,155,242,213,139,147,179, 33,199,130,
+171, 13,222,215,196, 48,234,179,160,154, 17,107,104,170,154, 48, 14, 28, 79, 71,174,174,183, 88,115,210,245,157, 76, 32,189, 53,
+ 84,200, 89,100,231,226,162, 40, 84,202,224, 67, 8, 56, 87,104,234,134, 83,223, 19, 99,166,233, 22,218, 25,156, 69, 51, 41, 68,
+ 17, 85, 24,141,201,227,188, 83,140,165, 16,162, 36,116, 89,231, 48, 41, 19, 38, 84,160,181,226, 83,174,107, 14,251, 3, 31,239,
+110,177,214,209,117, 29,119,119,119,248,202, 97,139,101,123,177, 97,179, 92,242, 50,189,161, 91, 45,177,214,176,187,187,167, 97,
+122,225,178,127,156, 4, 55,185, 20, 17,100, 24, 71, 76,233, 12,208,143,211,190,206, 48, 30,122,158,127,250,140,231, 95,124,142,
+245,142,221,219,143,188,127,243, 30,103, 12,207,191,254,148,126,119,164,223, 31,113,109,205,197,245, 53, 31, 62,126, 80,151,142,
+ 97,119,191,167, 56, 71, 72, 17,156, 99,117,177,101,127,251, 17, 79, 22, 15,103,129,144,210,236,223,247,206,177, 92, 44, 88, 52,
+ 11,126,124,253,138, 84, 10,195, 24,206,150, 64, 35,124,100, 83,116,125, 97,153, 9, 71, 41,137, 33, 33,167,172, 95,118, 71, 91,
+215,152, 74, 62,224, 10,195,152,242, 60,242,211,166, 75,196, 43,206,178, 92, 53, 60,125,126,205,179,241, 17,239,126,186,229,112,
+ 24,164, 8, 32,225,140, 48,208,171, 70,246, 84, 33, 6, 73, 97, 11,153,191,241,247,254, 22,235,235, 27,138,105,168, 87, 11,234,
+110, 65,215,117, 52,181,199, 87, 53,222,122, 17,116,104, 22,113,101, 45, 31, 94,255,132, 5,110,158, 61,199,166, 59,226, 48,114,
+ 60,157, 68,144,168,182,145, 69,227, 89,212, 21,214, 59, 46,174,174, 24, 15,247,196,195,145,245, 98,201,127,250,183,255, 27,191,
+253, 63,255, 45,190,174, 24,199, 65, 46,165,182,101,243,232,130,120, 56, 16,246, 59, 30, 63,123,194,205,227,103,252,246,197, 15,
+124,243,226, 39, 13, 65,189, 0, 0, 32, 0, 73, 68, 65, 84, 21, 87,222,241,229,243,167,220, 31, 6,126,120,251,158,174, 42, 44,
+234,134, 16, 11,213,178,165,234, 22,212,171, 37,131,238,206,227,225, 64,127,191,163,228,196,126, 12, 12, 89, 2, 58,202,148,155,
+109, 12,174,174, 49, 68, 62,236, 14, 80, 59,168, 28,215, 23, 27,156, 17,225, 15, 14, 92,229, 72, 49, 18,199, 68,240, 18, 79, 60,
+239,201,140, 10,114,172,211,139,200,106, 26,149,136,244,166, 8, 76, 25,157, 91,197,171,234,197, 51,141,242,140,147,106,126, 34,
+204,149, 51, 74,114, 86,180,155,243,136,151,146, 49,218,253, 25, 99, 21,120,161,211, 26, 35,225, 24,243,184,183, 72,215, 36,123,
+197, 52,115,220,207, 74,118, 29,185,103, 51,123,149,207,250,191, 60, 31, 84,232,101, 83,230,203,250,156,163,105, 10,243,133, 60,
+139,231, 38,237,154, 38,100, 77, 35,245,137,230,150,117, 7, 61, 97,236,165,235, 18,189,130,157,188,220,246,108,107,178, 58,218,
+151,247,110,218,106,104, 88,147, 84, 79, 10, 83,242,152, 98, 72,197, 50,132, 72, 12, 6, 99, 42,154,182,226,209,205, 35,174, 31,
+ 61,193,184,150, 56,158,240, 37,242,253,203,111,248,230,197, 43, 78,199,192,102, 81,241,236,233,154,223,252,230, 79,249,241,253,
+145,211, 31,126,164, 63, 69, 74,148, 11, 35,102,184,122,124,201,223,251,135,255, 53,207, 63,249, 10,235, 44,143,174,110,120,242,
+217, 39, 84,190,229,197,203,239,248, 95,254,213,191,228,223,255,223,255, 23,158,204,112, 28, 72, 67, 79,140, 50, 38,159,144,177,
+102,178,102,121,125,118,213, 15,237, 39, 20,176, 43, 42,190,146,189,170,215,184, 80, 3, 68,151, 49, 70,108, 83, 36, 43, 29,168,
+218,168, 48, 81,242, 7,172,116,171, 49, 69,114,201,248,202,147,146,199, 36, 97,134, 20,239, 40, 77, 75,177, 21,149, 25,201,170,
+ 67, 56, 13, 39,220,221,192,161, 79,212, 54,112,189, 94, 82, 87,158,197,162,162,115,150,221,209, 18,134,192,106,219,177, 94,119,
+ 34, 16,174,164, 75,204,185, 16,245, 78,176,186, 70, 49, 38, 19,130,248,208, 43, 47,200,162, 9,126,148,181,192,115,206,225,188,
+ 19,203,223,124, 97,218, 57, 19, 60,134,204, 98,209, 72,115, 23, 51,167,126,144, 78,213, 78,150, 62, 93,193, 86,242,124, 85,202,
+ 84, 9, 49,204,177,175, 86,215, 33, 98,173, 44,138,234,205, 88, 87,136, 89,241,222,222,137, 4,174, 8, 99, 69,114, 1,138,142,
+244,213, 29, 34,190, 55, 93, 21, 76,193, 69,101,198,178, 78,255,165,130,102,168,193, 57, 41, 65, 86, 67,178,123,151,179, 61,147,
+212,221,225,102,204,236,180,198,115, 94,148,237,227,225, 72,223,247,120,239, 84, 84,231, 41,101,156, 87, 4,214,138,149,207, 76,
+156, 8,213, 34,148, 12,190, 15,145,235,205,138,170,170,249,120,119,226, 20, 18,155,174,157,171,149,105,215,144, 98,150,113,198,
+100,190,127,240,224,101, 5, 82,164,164,209,119, 81,118,201, 88,139,113,150,155,155, 75,138,177,220,239,143,156,142, 71,182,219,
+ 45,199,227,145, 83, 63,176,109, 55,148,186,112,121,177,153,139,134,166,235, 24,250,145,177, 31,168,218, 86, 4, 0, 41,147, 52,
+ 25, 68, 24,188,146, 93, 91,140,161, 68, 84,169, 47,194,140,148, 85,120, 48, 38,158,255,226, 57,143, 62,121,202,233,253,142, 15,
+239,222,112, 58, 12, 84,203, 37, 87,143,175,185,251,241, 13,135,251, 59,174,110, 30,209, 44, 59,222,255,127,239, 48,222,114,220,
+221, 17,198,145, 76,161, 79,129,205,102, 77,202,137,227,254,196,197, 70, 70, 77, 50,218,143,202, 88,183,248,202,179, 88, 46,136,
+ 41,179,223,237,101,151, 51,171,126,172,226, 69,147,198, 11,150,153,236,150,148,162,149, 98,198, 54,114,216,215, 85, 37, 66, 60,
+239,100, 23,165,202,219,185,235, 43,210,169, 88,107,169,235,138,237,197,146,110,221,144, 15,137,213,106,129,119, 53, 41, 4,188,
+ 5, 72,212, 78, 20,167,113, 24, 24, 99,230,254,212,243,233,231, 95,243,236,243, 95, 82, 55, 29,109,183,166,106,215,184,186,166,
+210, 76,246,218, 87, 84,117,141,173, 43,124, 85,227, 72,220,127,188, 39,140, 3, 87,143, 31,209,110,215,236, 95,189, 85,203, 96,
+156, 37,225,149,179,116, 77, 77,137,194,220,127,247,195,119,212, 37,177, 93,110,248,230, 63,252, 59,254,227,255,254,111,112,198,
+ 50,132,147, 92, 82,214,178,220,108,160,239, 73,199, 3,143, 31, 61,225,250,230,134,239,222,188,230, 47, 94,188, 96,235, 28,159,
+ 92, 92,177,219, 31,248,225,118,199,178,178,172,235,154,253,144, 48,117, 75,179, 92,210, 46, 22,228, 16, 56, 30, 79,196,227,129,
+225,254, 14, 76, 98, 31, 71,134, 34, 70,171,137, 48, 85,180,251, 75, 57, 9,215,189,105,184, 63, 13,164, 55, 63, 82,217,194,229,
+246, 6, 20,163, 91,233, 62, 51,165,204, 48, 4, 97,179, 47,228,115,153, 59,246, 82,244,176,157, 46,234, 41,208, 65, 71,209, 42,
+114, 51, 69, 52, 16,226, 77,182,242,144,234,136,110, 22,163, 78, 30,100,189,244,103,183, 28,103,114, 85,121, 48,206,182, 78,251,
+121,229,177,231, 7, 94, 90,235,220,252,172,156, 33, 48,102, 86, 1, 27, 61, 77,140,146,203,152, 29, 44, 42,139, 85,200,141, 74,
+200, 53,223,253,124, 40,207,175, 3,165,196, 21,233,193,115, 74,130,251, 78,233, 65,241, 32,100,186,164,187,204, 73, 16,103,103,
+ 58,154, 18,235,172,213, 75, 80,251,250,249, 66,231, 92,196, 56,193,235, 90, 45,164,138,113, 20,103,112,222,144,163, 40,207,251,
+ 32,252,187,170,170,185,188,186,230,226,234, 26,235, 60, 41,141, 16, 3, 47, 94,125,195, 55,223,252,129, 49, 56, 86,203,134,103,
+207,175,248,155,127,250,103,184,230,154,253, 15,127, 78,223, 71,250, 33,205,211,140, 2,124,249,245,175,120,242,201,103, 84,139,
+142,171, 71, 55,124,245,229,175,169,214, 75,108, 41,252,230,250,154, 79,127,249, 43,254,249,127,255,207,248,238,155,191,162,164,
+192,225,118,199,238,110,199,253,253, 61,125,127,156,207, 76, 55,137,220,244,243,246,198,226,140,167, 32,200,208, 20, 34, 37,171,
+192, 77,215, 40,121,182, 19,138, 16, 86,138, 68, 72, 81,162,103, 5,244, 37,127,191,105, 86, 98, 71,174,188,188,207,141,138,136,
+149, 17,144,179, 76,238,173,171,112,181,161,189,184,228, 42, 69,134,126, 96,183, 63, 50,142,137,136,101, 89,123, 22,109, 77,235,
+ 44,117, 91,225, 45, 44,219, 10, 91,123, 48,150, 68,198, 70, 75, 50,146,201, 17,139, 20, 91,101,130,108,141,137, 84, 96, 89,249,
+ 57, 84,103, 54,225, 89, 41,152,179,117,228, 84, 72, 57, 82, 30, 58, 40, 74, 6,107,105, 59, 97,125,164,152, 24,251, 56, 3,183,
+166,213,111, 49, 83,226,185, 78,223, 84,251,101,149,163,194, 4,116, 82,164,121,121,176,178,202, 72,161, 63, 61,115,243,154,108,
+178,142,154,115, 7, 46,255,223,204, 82,153,172, 69,128,113, 19,182,121,178, 91, 48,143,243,205,131,130,124,246,165, 35, 5, 91,
+ 52,105, 70, 74, 91,107,132,208,138,157, 5,176, 50,141, 43, 26,108,164,182,218,169,120, 85,139,182,247,110, 78,108, 43,211, 57,
+227,100, 98,232,199,113,160,107, 47, 36,160, 96,127, 16, 52, 96, 91,159,137, 56, 72,152,135, 92, 96, 90,249,144,231,148,136,244,
+ 64,177, 42,168, 63, 7, 86, 66, 62,198, 20,216,172, 87, 92, 94, 62, 34,198,192,253,237,142,166, 91,114,113,121,193,235,159, 94,
+ 83,215, 30, 67, 97,187,221,176, 89,181,140,167, 1,140,161, 93,116,140,195, 72, 14, 25,187,144, 78, 61,166, 72, 12, 3,248, 90,
+212,185, 46,171,128, 34, 17, 75,164,182, 2, 48, 72, 73,186,223, 49, 68, 86,219, 37,159,126,245, 37,139,174,227, 47,191,253,115,
+ 62,188,253, 72, 44,142, 79, 62,251, 5, 37, 6, 14,135, 61,197, 22,214,151, 23, 28, 15, 71,142,251, 61, 54,103,246,239, 62, 98,
+ 87, 29,161, 68,114,137,108,182, 91,238,110,111,113, 64,183, 16,204,105, 63, 6, 17,173, 24,249,192,150,139, 5,139,229,130,119,
+239, 62, 8, 77,204,203,110,234, 12, 22, 53, 15,214, 25, 26,143,145,132,197,156, 53, 66,209,153,105,156, 14,149,129,182,170, 48,
+186,214,152, 8, 90, 20, 52,166, 85, 82,146, 22,235,142,237,213,134,146,161,223, 7,193,157, 90,232,218,134,101, 83, 99,140, 88,
+136, 98, 26,232,211, 72,204, 1,227, 90,158, 63,127,206,114,189,101,181,220,144,245,130, 33,203,197,103,124,141,243, 50,214,247,
+117,133,113,133,227,135, 3,251,251, 91, 22,219, 13,171,203, 11,114, 42,132, 48, 8,253,202,214,148, 34,153,198,141,151,162,101,
+215,143, 12,167, 19, 63,125,251,123,170, 24,120, 87, 12,191,253, 63,254, 13,253,225, 72, 56,157, 36,154,215, 91,124,219, 80,151,
+ 8,135,129, 39,215,143, 89,108,183,188,122,255,129,239,126,124, 73, 99, 29, 79, 86, 75, 78, 37,241,241,112,162,245,176,112, 21,
+199, 49,147,173,103,185, 89,178, 88,175, 36, 29,239,112,224,116, 56, 48,220,237, 40,121,164,207,145, 35,153, 56,193, 39,244,194,
+ 53,198,137, 24, 46,138,149,111,185,217,112,181, 94,177,191,189,231,199,159,222,179,104, 90, 22,155, 21, 69,116, 56,212,222, 49,
+ 40, 18, 57, 12, 81,214, 70,110,154,152, 8, 84,162, 32,236, 1, 1,200,232, 69, 61,165, 77, 21, 51, 31,102,197, 78,158, 85,165,
+162, 61,252, 62,168,181,198,204,151,254,195,176,138,179,133,108, 98,187, 59,103, 30, 80,228,202, 76, 98,159, 44, 62,197, 32, 15,
+121,138,234,146,208, 29,174, 77, 51,170,213,168, 85,103,214,126, 76,228, 58,109,133,102, 88,140,142,200,147, 42,174,115,154,252,
+209,121,254,217, 69,109,111,230, 63, 99,109, 23,242,249,207, 77,105,101,229,231,233,115, 83,246,185,153, 19,183,204,153,152, 55,
+ 17,226, 52,200,206, 98,117, 90, 43,107,139, 82,132,241, 96,212, 53,114, 28, 71, 82,145, 14,108,165, 96,153,182, 93,146,178,161,
+ 31,246,188,125,249, 29,191,253,253,239, 40, 24, 54,109,197,231,191,252,140, 63,250,155,255, 5,110,241,132,187,187,143,164,148,
+216, 29,143,132, 44,246, 76,147,224,250,233, 5,207, 62,253,140,182, 89, 80, 53, 21,219,139, 11,252,178,211,108,111,200, 99,100,
+ 81,119,252,173,191,243,103, 28,246, 59, 78,187, 29,222, 84, 56,191,196,249,138,195, 78,130,176, 74, 78,178,118, 83, 81,151, 55,
+ 83,146,154,172,113,138,134,137, 56, 83,176, 38,225, 73,115,211, 68,158,160, 58,121,134, 76, 21,196, 73, 99,140,160,110,139, 49,
+ 44, 22, 29,109,183,160,173,151,196, 20, 48,202,160, 15,113,210, 46, 76, 95, 43,185, 36,114,129,166, 93,242,244,230, 18, 12, 28,
+142,189,224,120,157,197,187, 90,166,161, 94,114,218, 93, 45, 34, 50,156,197,230, 40,159, 69,209, 49,116,150,162,205, 26, 17, 64,
+198,144,168,173,224,100,141,183,202, 42, 16,145,175,169,244,223,193, 81, 76,158, 69,145,101, 66,250,103,185,180, 54,219, 5,217,
+100,246,187, 3, 67, 63,204, 83, 34,171, 36,196,172,247,147,119,154,102,166,124, 12,171,211, 56,153,222, 70, 41, 28, 82,162, 88,
+ 93, 51,101, 85,145, 91, 45,140,199,201,206,121, 38, 45,254,140,164, 90,206,250,134,152,166,144, 43,121, 22,164, 70,179,202,164,
+ 96, 78,141, 59,163,153, 31,224,157,141,112,236, 71, 51,146,115,196,251, 86, 86, 40, 41,233, 52, 43,170, 83, 69, 24,247,227, 48,
+156, 71,247,198, 97,156, 35,196,129, 84, 28,222,120,209,161, 36, 41,170, 82, 22,219,114, 6,252, 56,140, 52, 77, 77,206,112, 58,
+ 30,168, 43, 79,221, 52, 58,234,146, 81,239, 57,152,225,172,194,181, 83,152, 69,154,108, 42, 50,106,180, 22,162, 26, 85, 82, 74,
+ 92, 92,172, 89,174, 26,210, 56,112, 56, 30,216,110,182,220,221,222,209, 31,143,172, 54, 43,234,202,115,117,113, 1,197, 49,198,
+129, 4, 44,186,142, 15,239,222, 18, 71,217, 9, 69, 77, 90, 43,198,170, 82, 56,171,207,211,209, 15, 3,169, 88,173, 82, 50, 49,
+ 5, 82,201,140,105,228,249,243,175,249,228,179, 79, 56,237,110,249,233,119,223,226,187, 26,154, 37,143,158, 60,230,254,246,150,
+126,127,160,219, 92,112,113,117,197,119,223,126,139,201,153,251,251,123, 78,125, 79,183, 90,144, 82, 97,217, 46,201, 99,224,184,
+ 63,112,177, 94,225, 27, 71, 10,137, 16,228, 13, 52,198,224,171,154,245,230,130,148, 50,167,227,137,170,174, 72, 36,134, 83,148,
+ 93,160, 50,123,141,245,146,189,109,161,196, 72,204,226,121,205, 37, 83,123,201,173,119,222,225,138,149,135,200,170,237,133,137,
+ 76,165, 54, 9,103,177, 46, 83,119, 13, 23, 55, 87,212,221,154,253,237, 78,144,233,200, 72,190,171,107,106, 47, 63,221,251, 37,
+203, 58,115,113,209,176, 88,182,220,254,213, 29,139,110,133,171, 60,253, 48, 96, 76,194,123,137,223, 45,117, 69,114,186,187,169,
+ 3, 37, 26,134,221,192, 97, 39,171,146,182, 91, 10,135,185, 63, 81, 6,113, 35, 56, 35, 58, 1,239, 61,141,181,140, 33,146,172,
+ 39,167,145,241,180,227,155,255,244,255,112,255,242, 37,105,119, 98,140, 59,108,150,156,121,223,212,212, 93, 11,185,231,179,231,
+159, 18, 11,188,188,253,192,171, 55,111,240,166,230,147,174, 38,164,194, 16, 7,106, 11,173,175,216, 15,145,221, 16,216,222, 60,
+ 98,125,113,129,247,142,227,233,196,225,126,199,233,227, 45,101, 28,233, 75,230,144, 84,197,236,164,138,118, 58, 38,143, 26,164,
+ 51, 38,113, 83,156,250,192,231, 79,175,185, 90,173,249,225,213, 15,188,124,243,158,175,187, 53,190, 50,194, 98,247, 53, 13,134,
+ 49, 22, 98, 22,151, 66, 85, 9,234,210,123, 59,163, 42,179,122,223,166, 74, 30, 3,222,248, 7, 62, 85,167,246, 25, 71,182,231,
+221,183,224, 63, 85,144, 58,131,162,101, 34,230,212, 98, 84,172,225, 1, 70,123,182,148, 19,147, 36, 93, 25, 67, 33,226,245,114,
+ 19, 64,142,193, 36,189, 68,153,176,171,101,182,220, 88, 47, 20,149,152,148, 78,101, 69, 29, 95,116, 68, 41, 23,177,118,223, 6,
+ 61,148,133, 81, 45,250, 1,241,239,103,237,200,245,101,171,170, 61,205,252,237,156,167, 36, 54,189, 72, 20, 68, 99, 21,252, 33,
+ 35,118,217, 23, 26, 61,100,157, 90, 60, 37, 63, 62,233,154, 65,166, 27,214, 66,214,181,133,196,203,122,237,168, 44, 67,148, 29,
+184, 49,142,101,183,224,230,209, 99, 22,203, 13, 56, 67,191,191,231,221,171,151,124,243,205,239, 24,146, 97,187,176,124,250,213,
+103,252,201,223,253, 39,100,239,136,241, 36,197,178,210, 23,163,113, 20, 43,182,220,213,122,195, 98,185,166, 54, 30, 31, 19,155,
+213, 22, 95,213,212,170, 61,200,206, 17,134,129, 69,187, 96,187,217, 98, 82,102,236,143, 88, 27, 5,178,229,188,232, 71, 98,196,
+216, 60, 11, 38,173, 62,227, 69,109,102, 83, 58, 89,237, 29,149, 5,156, 37,154,162,127, 7, 92, 50, 12,197,206,239,227,204,196,
+159,248, 6, 85,141,117, 78,222,223,202,225,172,128,125, 38, 2,153,172,138,146, 88, 52,157,161,202,158, 33,141, 20,103,168,154,
+154,174,109,177, 41,178,110, 91,174, 46, 30,209,117, 45, 57, 38,246,253,158,125, 78,108,173,103,233, 42, 81,226, 59, 65,247,154,
+172, 30,191,156,102,232,209,132, 4,174,188,195,249,138, 76,198,154,138,148, 5, 5, 91,123, 89,231,141,105, 90, 63, 27,240, 83,
+248,137, 37,101, 67,215,121, 22,139, 53, 99, 63,178,219,157,196, 13,100,132,239, 33,133,164,218,218,244,249, 50, 78,220, 4, 38,
+107,103,108,206, 90, 12,225,167, 48, 71, 11, 11,170, 87, 26, 25,203, 89, 60, 42,228,159, 51,122,217, 24,133,189,232, 56,223, 56,
+ 9, 17,154, 50, 13, 44, 50,205,246, 42,246, 76, 26,158,148,116,221, 98, 85,252,103, 30,176, 94,156,149,162, 62, 38,249, 30,120,
+235, 20,167,174, 41,114, 49,206, 34,184, 48, 40,184,204, 88,153,220, 88, 59, 7,169,233, 99,174,103,129, 52,222, 73, 97, 81,214,
+ 85,150, 85,183, 32,164,200,221,253,129, 69,215, 80, 85,142,130,197, 89, 39, 2, 13, 77,247,153,162, 33,167, 74, 92,215,116,228,
+ 82, 8, 42,114,113, 86, 40,104,165, 88, 78,177,112,177,189, 96,179, 88,203, 20,192,121,154,186, 99,119,183,151, 29,144, 49,108,
+183,107,150, 77, 77,193, 18,198,136, 87,242,208,112, 26,196,146,166,149, 89,140,105,102,231,230, 82,112,166,194,122, 75,136,145,
+ 90, 89,235, 25, 25, 89,140, 41,209,117, 29,159,126,253, 25, 77,215,241,234,219,111,197,204, 95,215, 92, 95, 93, 96,125,197,113,
+119,160,202,112,121,117,137, 45,133,143,183,183,140,253,192,254,195, 29,174,178, 4,205,117,222,110, 46, 56, 28, 78, 20, 42, 22,
+ 77,131,209,170, 47,167,172,202,199,194, 98,177, 96,187, 93,179,223,237,133,100,231, 28,118,170,162,244,176,155,178,172,205,204,
+ 61,142,164,146, 8, 41, 97,138,144,223, 80,241, 84, 61,141,221, 39,239,164,254, 25, 97, 93,203, 30, 21,235,217, 94,110,216,108,
+183,140, 67,224,120,236,165, 90,180,150,186,246, 84,109, 69,182, 5,215,212, 44, 54, 27,110,158, 60,229,201,211,207,120,244,201,
+103,100, 19,168, 52,153,207, 56,176, 85,133,169, 26,140,247, 24, 47, 42,126,163,144,141,211,254,142,251,247,111, 8,121,160, 91,
+ 45,169,235,165,164, 32,185, 12,190, 48,234,207,180,165,176,168, 44, 37, 39, 78, 41,113,185, 94,144, 99,224,238,221,107,110,191,
+123,193,120,123, 71,223,239, 48, 89,166, 29,166,173,113, 93,141, 39,243,229,245,103,244, 22,126,218,239,248,241,253,158,214,183,
+ 60,106, 61,161, 20,250, 60,226, 76,166,245,150,211, 24, 57,197, 68,187,232, 88, 93, 46, 49, 11,207, 16, 35,253,253,158,211,251,
+ 91, 74, 63,112,202,129,147, 98, 71,201, 2,251,240,206, 82, 87, 22,231,197,106, 21, 21, 78, 84, 82,162, 15,137,211, 24,184, 92,
+119,252,234,243, 47,200,169,240,226,237, 75, 98,208, 28,244, 18, 37,163,216,171,112, 38, 37,153,176, 76, 56,138, 34,252,106, 99,
+ 42,137,180, 53, 10,174,180,210, 57, 25,123, 14,141, 72, 8,219, 65, 62, 39,163,214, 25,171,133,154,154,102,237,132,167, 84, 91,
+151,181,243,148,193,254,172,123,200,154, 48,101, 69,220, 86,236, 89, 84, 55,137,214,166,139, 82,119,183,214,122, 29, 87,158,167,
+ 0, 50,180,140, 98, 5,155,197,113, 9, 74,156,125,223,147,202,191,168,166,201,150, 66,137, 73,119,139, 58,142,156, 71,253, 15,
+246,236,115, 3,244, 96,143,175, 73, 34,211, 1, 59,189, 26,103,228,188,177,147,167,219, 62,132,182,152,115,216,135, 78, 71,230,
+ 16,202,169, 75, 79, 16, 71,201, 1,244, 77,203,197,229, 21,203, 77,135,241,112,220, 29,249,240,246, 37,223,126,255, 59, 78,169,
+176, 88, 20, 62,249,250, 75,126,253,183,254, 41, 39,179, 96,204, 14, 76, 35, 50,103,223,210, 45,150, 66, 98,196, 66,132, 56,142,
+ 34, 2,243, 5,227, 60, 33,139,242, 60, 27,221,129,251,154,102,187,224,213,235, 87,252,248,250, 53, 63,253,244,154,251,187,123,
+226,208, 43,197,209, 96,157,236,114,165, 11, 23,122,156,175, 12,174, 42,218,109, 11,123,163,118, 78, 2, 90, 26,199,182, 53,108,
+234,194,210, 21, 86, 54, 83, 21,233, 58,115,144,238,221, 59, 55, 3, 86, 50, 69,254, 61,107, 48, 41, 17,197,223,194,148,136,154,
+141,161, 88,175,225, 31,250,153, 57,143,241, 53,149,245, 84, 10, 84,177, 85, 67,219, 46,185,121,254,140,102,217, 10,242,218,201,
+ 40, 62, 83, 24, 82,146, 38,203,228, 7, 77,158, 52, 44, 6, 9, 73, 9, 81, 5,129, 85,193,218, 44, 80,160, 36,197,157,197, 11,
+ 90, 27, 29,157,155,105,165,108,165,115, 47,134, 83,202,172, 54, 11,150,139,142,221,110,207, 48,158,244,187,166, 35,236, 9,224,
+ 56,137, 42,141, 38, 85,230, 60,143,175,153, 73,141, 70,249, 41,210,168, 72, 33, 41, 17,227,146,123, 2,102, 78,206,123, 0, 9,
+154, 47,246, 7,140,132,137, 43,143, 28,127, 70,127,110, 46, 60, 64, 34, 21, 29,251,171,200,212, 73,182,122, 70, 82,159,188,173,
+245,245,201, 93,101, 85, 23,101,244,217,152, 34,156,141, 22, 9,121,130,154, 1, 54,159,161, 78, 24,131,119,149,138, 13,229,142,
+ 44, 37,147, 67,194,183, 77, 67, 91, 85,244,125,207,113,232,105,170, 70,126, 25,175,202,190,146,137, 65, 82,198, 80,241,192,164,
+ 46, 87, 47,135,252,210, 73,210,122,156,117,130,241, 35, 97,189,231,226, 98,139, 51,133,144, 34,190,109, 8, 41,112,220,237, 9,
+ 41,225,234,138,155,199, 55,132,211,128, 45,133,208, 7,154,118,129,111, 44,227, 16, 40,206, 74, 80,134,194, 82, 50, 89,246,209,
+ 37,227,189,236, 39, 79, 49,227,106, 71,177,153, 52, 6, 9, 82, 72,137,175,255,218, 87,124,254,197,231,236,222,223,242,242,247,
+223,210, 93, 45,169,219, 5,203, 85,199,105,220, 17,199,128,243,150,237,245, 35, 62,220,223, 51, 30, 78, 12,135,147,196,220,181,
+ 13, 99, 78,248,214,209,117,158, 15, 31, 6,214, 11, 47,197, 78, 46,132, 24,200, 54, 97,138, 32,118,215,235, 21,228,129,208,247,
+122,249, 22,142, 9,241,207,234,101,156,109,158, 15,112,155,197, 47,153,212,153, 98, 27,167,187, 53,168,141,149, 88, 85,171, 23,
+ 70, 16,197, 60,160,106,105, 3,206,179,218, 46,184,124,114,137,181, 81,198,206, 67,160,100,139,179,133, 85,219, 80,215, 53, 57,
+123,201,143, 95, 46,185,120,118, 65,191,219,177,201,208,168,141,106,125,113, 65, 74, 69,148,237, 94,124,246,179, 48,195, 24,198,
+ 83, 79, 56,245, 20,107,168,155,150,166, 93,146,137,146,107,110, 11,214, 87,120, 44,206, 59,218,198, 49, 14,134, 83,136,172, 86,
+ 75,150,139,150,116, 58,113, 60, 30, 48,227, 8, 33,224,173, 97,213, 45,193,123,234,166,162,178,142,175,174,158,112, 42,133, 31,
+111,239,216,245, 71, 26,147, 88,251, 74,232, 99,100, 42,181,241,140, 41,176, 15,129, 80, 12,151, 79,174,104,186, 37, 37, 64,191,
+ 59,112,247,246, 45,227,112,162,143,129, 99,142, 18, 67,105,244,178, 45, 14,231, 20,136,100, 68,220,149,148,116,101, 74,193,230,
+ 2,197, 17, 83,205,114,185,224,230, 89,199,183,175,127,160,173,118,252,226,106, 67, 48, 80, 16,108,111,158,180, 16,105,234, 54,
+101,143, 53,225, 41,157,130,169,166,125,176, 81, 22,107, 81, 63,172, 53,146,153, 60, 57, 10,228, 80,115,115,226,211,228, 53,101,
+134,220, 60, 24,229,149,159, 67,111, 38,161, 93, 86,232,144,157,108,110,229,204,150, 72, 69,156, 8,182,252,188,160, 68,139,204,
+172,106, 89, 91, 12, 46,103,197,192,228,185, 19,182, 69, 10,207,249,135, 23,241,127,155, 34,162, 32,197,237, 97, 74,126,144,147,
+158,231,100,171,162,160,165, 9, 54, 50, 95,236,115,254,211,164, 42, 46,179,110,192,200, 19,142,211,200, 40,107,220,172, 31, 41,
+ 86, 14,126,235,188, 50,194,101, 31, 29, 51,156,162,132,148, 84,117,205,122,179,225,226,234,146,218,116,244,135,158,143,239,127,
+224,155,239,191,227, 48, 10, 60,230,211,231,159,240,199,127,246,223,145,243,138, 68,196,216, 6, 76,141,175,193,119, 29,205, 98,
+137,115,158, 66, 32, 21, 24, 14, 61,253,113,135, 49,133, 97, 56,241,250,251,223, 1,112,253,228, 9,235, 85,135,173, 44,255,250,
+ 95,252,115,254,245,191,252,159,216,125,188,163, 12, 65, 87,148,137,146, 50, 30, 79,180,158,104, 4, 27,210, 88,139, 87, 78, 57,
+169,144,140,168,178,157,129,202, 25, 92,129, 14,129, 18, 85, 30,106,107,233,115, 38,104,230,120,118,153,133, 45,212,198, 16,176,
+130,122, 86,162, 97, 85, 85,212,203,134, 50, 6, 98, 12,132, 97, 16,221, 78, 82,154,154,241, 58,134,238,137,163, 0, 78, 2, 26,
+220, 52, 4,182, 23, 13,219,203, 13,181,171,136,249, 72,140, 1,103, 10,117, 37,186, 33, 25,231, 39,188,222,172,242, 61,212, 85,
+147,177,148, 36,159,247,116, 89,201, 10,199, 18,179, 92, 58, 77, 93, 9, 4,203, 22,108, 74,210, 60,106,161,131, 78,147, 92,132,
+205,102, 77,211, 52,236,118, 71,114,200, 74, 55,143,242,239, 21,171,205,146, 94,110, 88, 42,189,194, 99,137,218, 92,186,185,195,
+ 46,211,164,119, 14, 99, 41, 84, 86,214,101,177, 56, 48,131, 54,171,144,173, 96,205,209,252,131, 9,192, 98,189,166, 33,230, 9,
+ 85, 49, 21,221,101,166, 69, 23,205,169, 54, 57,163,142, 99,209, 80,153, 44, 43, 33, 29,165,187,202, 67, 18,209, 91,173,220, 10,
+153, 36, 24,134,168,171,120,103,200, 57, 18,211, 48, 99,101,113,134, 50, 78,220, 0, 21, 85, 59,171, 54,112,230,156, 5,223, 84,
+ 53,109, 93,243,246,227, 71, 98, 72, 44, 90, 59, 27,229,167,212,181, 49,140, 18,180, 32,179,162,121,127,134,226, 77, 99, 76, 24,
+155, 36, 8, 67,105, 63, 49, 69,186,182,225,233,147, 71,242,230,233,184, 51,165,204,199,219,119,152,186,230,114,187,101,209, 45,
+184, 61,156, 48,214, 49,158,122,234,171, 21,214, 56, 98,136,178,187,177, 16, 66, 16,187, 92, 17, 76, 94, 81,161, 64, 8, 50,226,
+175,234, 10,227, 34, 97,140, 12,167, 19,139,205,154, 47,127,249, 21,109, 87,243,221,239,126,207,253,251, 91, 30, 63,255,132,118,
+181,196,213, 21,241,112,162,228, 64,115,177,165, 93,116,252,225,219, 63, 48,246, 39,142,187, 61,217, 23,172,243, 12, 41,113,179,
+217,176,223, 29, 8, 97,228,209,213, 37,214,201,196, 32,166,132,181,142, 24,133,254,116,117,117,197,225,254, 3, 99, 56,206,108,
+231,227, 48, 50, 38,232,244,189,204, 10,140,210,103,111, 14,179,200,165,204, 20, 33,239,140,102,232,234,104, 50, 11,221,107, 18,
+ 17, 77,103,190,243,142,139,235, 11,218,166,161, 63, 30,233, 79, 3, 20,249, 57,117,101,105,171, 90,179,136, 61, 85,211,226,106,
+ 79,200,153,229, 98, 77, 10,137,167,215, 27,222,188,187, 37,197, 61, 57, 53, 98, 27, 42,153, 66,163,123, 97,229,114,247, 3, 6,
+163, 60,246,165,116,147, 37,225,138,116, 46,198, 26, 76,202, 84,214, 81, 85,142,253,110,192,118, 21,151,235, 37,141, 53,248,211,
+ 81,132, 29, 69,108, 24,155,229, 6,227, 45,166,242, 44, 93,205,243,235, 27,134,148,121,249,254, 61,125,138,120,138,112,171,131,
+ 50,159,173, 28, 24, 67,202, 28,134, 72, 31, 34, 87, 79,159,176,218, 94, 98, 10, 12, 97,148, 11,253,112, 96, 8,129, 67,140, 36,
+ 47,203,215,169,203,179,149,161, 88,171,130, 44,233,246,228,225,147, 39, 52,145, 53,135,160, 33, 85, 29,205,202,114, 57, 70, 94,
+126,248,128,115,158,103,215, 43,122, 21, 29,214,190,214,125,174,136, 49,171, 34, 97, 13,147,240,108,230,178,107,138,161,213,131,
+198,170,242,125, 10,134,152,212,234, 25, 59,219, 82,138,213,110, 99, 82,232, 99,207, 94,247, 82,102,197,252,249, 66,183, 26,227,
+200, 89, 96,167,249,206,115, 76,169,159,226, 94,221,236,133, 53, 70, 66,128, 12,210,221, 39,245,204, 79,206, 34, 55,193,104, 20,
+203,204,220,245,163,133,144, 90,134, 84,144,151, 39,149, 77,153, 48,177,121,182, 15, 77,228,185,179,117, 51,205,248,217,121, 26,
+161,189,190,179,110,222,189,203,148, 66, 94,171,195, 99,189,211, 8, 92,177, 79, 25, 35, 35, 76,169,154, 28, 41,103,250, 24, 49,
+ 38,179, 90,172,121,116,253,148,110,217, 18,250,145,221,221, 59,126,252,233, 5,251,253, 30,111, 13, 55,143,159,240, 39,127,246,
+ 79,201,118,161,231, 72, 5, 94, 81,200, 43,168,155,134,218,123,114, 24,133,145,110, 33,198,145,219,247,239, 8,159, 30, 25,199,
+200, 79,187, 59,110,223,127, 96,113,121,197,229,102,205,191,249, 95,255, 21,255,195, 63,251, 31, 57,142,224,107,216,118, 45,139,
+ 69, 71,237,207,177,162,228, 52,243,246,141, 22,129,185,136,176,112,154,114, 24,131,116,104, 99, 96, 31, 35,158,160,106,112,249,
+206, 88, 15,141,102, 18,212, 36,170, 82, 24,114, 81,255,186,167,169, 27,186, 69,195,178, 91,144, 82,160,196,172,152, 84,253, 94,
+102, 57,155,114, 49, 56, 87, 83, 74, 34, 12,145, 52, 70, 66, 26,232,186,150,245,122,197,118,211, 17, 78, 71,105, 82,108, 18,123,
+106,201, 88, 50,222, 91,189, 52,237,204, 80,207, 70, 58, 97,144,115, 94,120,242,254,156, 77, 80, 68, 96,105,141,165,241,226,193,
+207,185, 96,205, 4, 48,210,239,190,145, 70,200,215,150,205,122, 77, 24, 35,187,195, 78,214, 19, 73,223, 31, 13,196, 50,138,117,
+ 45, 89, 72,157,174,114, 82,128, 22,177, 81,207,115, 32, 77, 89, 76, 58,237, 20,150,126,150,137,134,213, 80, 32,101,225, 27, 59,
+ 89, 56,117,108,254, 32, 99, 0,181, 26, 27, 21,146, 78,207,233, 89, 28,251, 32, 86,181,228,185,224,113,138,113, 45,217,227,157,
+208, 1,171,202, 99, 70,177, 19, 26,221,181,103, 77,222, 44,169,224, 91,139,177,158, 28, 35, 33, 4,172,117, 50, 61,117,126, 14,
+141,154,131,155,116,186, 43, 60, 40, 89, 29,248,229, 66, 50,163, 15,167,158,148,243,188,152,183,122, 25,165,148, 36, 41, 77, 63,
+ 40,227,236,172,222, 68,129, 51, 49, 37, 76, 78, 52,211,142,137,194, 16, 70,218,205,154,139,213,154,140,228,122, 87, 85,197,241,
+112, 71,223, 7, 46, 87,107,174, 31, 93,139,237, 37, 75, 46,242, 88, 18,173, 98, 17, 83,146,125, 52, 70,252,233, 50,238, 62, 75,
+ 21, 27,239, 9, 58, 10,237,218,154,144, 18,161, 31,201, 9, 62,251,236, 83,110, 30, 63,225,237,143,111,120,253,234, 71,201,251,
+ 93,173,241,171,142, 52,142,164, 49, 96, 19, 44,183, 27,226, 56,240,225,195,123, 14,187,131,224, 95, 43, 71, 48,133,214, 57,214,
+139, 21, 63,253,244,142,229,178,165,169,171,179, 34,177,200,155, 30,203,200,205,229, 21,222, 89,250, 99,175,226,147, 68, 63,142,
+244, 99,144, 49,161, 97,182, 63, 24,107, 68, 72,164,191, 70, 42,178, 84,170,156, 87,203,216,121,151, 72,200, 42,164,139, 10,217,
+152, 60,143,134,139,203, 21,171,203, 45, 37, 37,142,135,158, 24,180,210, 87,229, 57, 69, 68,120, 33,100, 92,151, 24,226, 72,126,
+ 27,113, 23, 29, 93,219,240,203, 47,158,242, 23,223,223,113,220,221,210, 45,111, 40, 36,217, 49, 21, 25,249,216,148,137,113,196,
+ 23, 1, 33,136, 82,182,145, 7,187, 68,156,141, 56,235,168,106, 47,187,119, 21,119, 21,103,184,220,174,233, 42, 67,147, 51, 53,
+ 98,107,114,206,176,236, 90,176,134,232, 13,219,166,225,147, 71, 79,137, 41,243,219,215, 63, 74,247,101,229, 64, 43, 33, 81, 85,
+ 53,222, 89, 74, 30, 25, 82,226, 16, 37, 24,104,125,113,193,230,226, 82,232,104, 38,115,255,230, 13,167,251, 29, 49, 37,246, 49,
+144,172, 0, 48, 28, 82, 16,120, 11,117, 39, 58,134,126, 24,232, 67, 38,167,168,106,109,169,178,173, 85,125, 70, 85,145,235, 37,
+222, 27,110,174,158,113, 28, 10,223,253,244,142,170,242,220,108, 22,244, 81,178,206,189, 85, 91,219, 84,245,103,169,170,203,204,
+ 37,215, 56, 71, 43,133,216, 20, 81,106, 52, 26,177, 24,237,142,173,147,232, 96,103,113, 88, 5, 92, 76,182, 31, 85,172, 63, 16,
+207,149,153,179,126, 22,237, 8,128,105, 58, 84,220,172,148,159, 46, 78,107, 36,212, 67,161,242,234,154,144,244,135,252, 16,140,
+ 99, 30, 16,243,114,198, 42, 2,122, 58,152, 72,231,226,162,168, 80,203, 42, 62, 50,150,179,221,109, 82,231,139, 87, 93,197,157,
+211,152,127, 10,157,112, 66,235, 51,156,153,221, 57, 75, 17, 97,205,236,206,215,103,197,104,160,141,104, 67,140,181, 50,233,152,
+186, 66, 28,185, 88,134, 24, 9,217,176,168, 22, 44,151, 75,186,229, 2,138,225,120, 58,240,211,235, 87,252,244,250, 22, 67,224,
+ 98,179,225,239,252,131,127, 66, 89, 62, 37,231,145,186,174,112,222, 99, 43, 47,151,144, 47,248, 74, 8,142,214, 77,172,118,121,
+ 78,239,223,189,227,213,183,191,103,121,113,193,199, 55,239, 25, 78, 39,162, 41,124,247,187, 63,240, 23,255,254, 59, 22, 53,248,
+ 22, 66,129,227, 73,226,163, 59,111,169,189,197,213, 30,167,156, 0,175, 48,154,160,128,120,107, 50, 57,169,141,202,129, 43, 9,
+ 66,224,200,136, 43,153, 90, 25, 8,113,130, 15, 41,240, 39, 26,195, 48, 36, 14, 99,162, 88, 25,105,215,117,195,118,187,210, 21,
+168, 94,152,214, 97,156, 96,102,101, 95, 29, 25,135,145, 98, 61,206, 87, 12,125, 15,113,164,173,107, 98, 85,184,216,108,168,109,
+ 35, 49,197,222,233, 5,165, 22, 75, 43, 29,179, 53,114, 25,186, 41,196,100,154,190,100, 72, 65, 4,176, 57,161,187, 97, 71, 76,
+ 82,208, 85,181,195, 87, 50, 14,119,106, 81,180, 37, 61, 32, 15, 74,178, 93,187,104, 88,111,214,244,167, 61,225, 52,170, 14,163,
+ 8,122,119, 38, 43,170,181,221, 24, 76, 37, 22,212, 18,197,111,110,245,156,204, 73,206,221,201, 54,108,203,121, 69,228,172,192,
+157,130,102, 31, 76,169,234, 51, 88,106, 14, 80,146, 98,213,205,223,215,172, 75,163, 50, 47,177,220,244,189,157,115,210,203,153,
+ 46, 57,137,250, 74,166,210,144, 27,105,224,228,210, 78, 57,227,172,157,249, 14,194,118,119,120,231, 68,132,174,137,125,206,123,
+ 45,100,141, 22, 81, 89,115, 17, 20, 79,141,147, 66,199, 88,252,170,235, 8, 41,112, 26, 71, 76,229,228, 48,197,232,220, 31, 73,
+ 32, 27, 6, 13,165,151,177, 92, 74, 81, 13,255,118, 86,224,121, 13,185,143, 57, 17, 74, 38,149,204,103,143, 31,115,117,181,228,
+208, 15, 28,142, 61, 79, 30, 93,243,253,183, 63,112, 60, 14,124,190, 93,115,121,117,201,112,220,225,180, 51, 56,141, 35, 55, 77,
+ 67, 28, 19, 49,140, 56, 10,174,174, 8,251,157,128, 3,204,132,135, 5,223, 52, 28,143,131,142,226, 29,227, 8,135,211, 64,187,
+104,248,226,151, 95,115,218,237,248,240,250, 53,135,211,192,227,101,199,245,205, 35,118,125,224,120, 60,226,141,193,183, 13,219,
+171, 11, 62,188,121,207,225,254,196,225,246, 40, 95, 84,239, 72, 68,182,203, 37,199,113,224, 20,123, 30, 95, 92,203,206, 34,103,
+ 85, 69, 87, 12, 57, 17, 75,226,242,242,146,227,105,207, 56,140,122, 32, 75, 71, 41, 97, 29,154,224, 99,101,239, 36, 81,157,102,
+154,128, 18, 82,166,107,106, 42, 39, 62, 75,171, 95, 34, 76,209,145,179, 42,129,139,170,125, 29,116,139,138,139,155, 43,218,166,
+230,112,183,163, 63,141,218,221, 64,215, 84,212,222, 51,244, 35,161, 31,169, 46,215, 52,235, 78,224, 65,167,158,123, 59,114,177,
+ 93,240,139,167,143,249,120,124,201,233, 56,176,190,114,154,210, 36,150,153,172, 25,233,198, 20,108, 93,145,200, 52,109,163,108,
+136, 44, 68, 47, 9,114,166,241, 53, 37,201, 72,205, 55,158,171,203, 45, 93, 85,211,216, 72, 87,162,140,130,156, 99,213, 9,157,
+ 48,123,195,114,181,228,243,171, 27,118,167, 35,191,251,233, 53,197, 73, 8, 67, 78, 35, 62, 68,218,170,166,173, 61, 57, 5, 78,
+ 41,113, 24, 3,167, 4,198, 59, 54, 87, 87, 84, 77, 77,177,137,251,119, 31,216,191,121, 71,140,137,251, 16, 72, 78,253,223, 42,
+146,241, 22,170,166,162,109, 32,230, 34,217,206, 37,113,232,179,250,178,101,151,219,212, 13,222,215,212,117,203,224, 68,116, 85,
+213, 13, 55, 23, 23,124,119,236,249,253, 79,183, 44,141,193, 46, 59, 37, 73, 89,156, 36,210, 75,249,170, 81,162,178, 22,129,226,
+156, 16,169,140,198, 63, 40, 10, 83, 70,198,211,254,171,194, 25,175, 85,186,213, 16,151,243, 8, 94, 2,119, 39,213,172,253,217,
+216,218, 60,136,138,152, 32, 23,118,218,107,154,115, 16, 11,230, 44,232,153, 47,109,237,176,207, 55,248, 68, 65,179,148,226,229,
+ 64,182, 83,120, 18, 51,107,158,105,106, 52,167, 93,137,195, 68,104,114,162,166, 87, 90,205,207, 10,143, 41,191,122,250, 79,196,
+181, 73, 39, 22, 15,119,239, 70,117, 39, 50,133,178,206,232,101,226,180, 27, 23,107,161,177,178,187,181, 70,131, 55,172, 35,140,
+133, 33,102,106,215,208, 46,182,172,214, 29, 38, 15,140,125,226,237,171, 23,252,240,234, 7, 98,200,108, 54, 21,127,250, 95,254,
+ 67,170,237,167,196, 50, 80,215, 45,222,181,114,192,122,121,255,199,210,208,212, 29,237,162,102,123,185,165, 31,110, 41, 46, 51,
+246,153,251,219,119,124,247, 87, 3, 77,219, 17, 67, 96,127,251,145, 49, 5,222,190,248,192,118, 35,151,185, 92,156,234,121, 54,
+178, 58, 76, 38, 83, 98, 0,235,240,126,226,131,203,133,235,179,118,189,122,150,214, 38,179,105, 12,235,166,112, 26,197,154, 23,
+180,104, 74, 22, 18,181,224, 65,139,236, 90, 79, 73,198,239,214, 25,124,237,233,150, 21,143,110, 46,231,164,187, 92,178,172, 41,
+212,169,148,139, 34, 75,157, 97, 28, 70, 98,138, 56, 18,206, 39, 76, 49,108,218, 5,235,205,134,144,131, 8, 6,245,146, 40, 70,
+248,237,174,114, 20,194, 60,102,150, 85,212,228,164, 48,103, 49,181,147, 73,150,177, 78, 34, 98, 83,164,128,192,155,116,126,237,
+138,149, 21,142,142,195,141, 81,219,217,152,216,220,108, 89, 44, 59, 62,188,126, 75, 12,249, 28, 52, 52, 23,162,103,134, 67, 54,
+114,102,123,157, 6,151, 34, 86,231, 41, 6,213,148, 41,181, 51, 49,161,160,172,245,218,188,138, 93,213, 24,101,170,100,137,196,
+157,196,174,147, 1,165,228,179,166,165, 76, 81,227,115, 62,129,196,201, 78, 84,167, 57,196,101,190,216, 57, 23,223,222,168, 63,
+ 93,114, 67,250, 81, 86, 2,190,114, 36,157,126,167,156,240, 26, 1, 28, 83, 34,101,131,215,220,123,231,172,102, 6,200,251,110,
+ 85, 35,113,254,124, 53,189,110,211,181,244, 99, 96, 63,142, 85,107, 76, 10, 0, 0, 32, 0, 73, 68, 65, 84,184, 74,193, 27, 15,
+248,207, 49, 36,250,211, 48, 91,117,140, 30, 56, 69, 43, 12, 73,158, 41,243,120,166,228, 44,225, 6, 17,158, 60,185, 97,177,232,
+216,239,118,116,109, 67,211,181,124,120,247, 1,239, 29,151,151, 91,188, 49,164, 32, 40,193, 16, 2, 37, 69,186, 69,199, 56,202,
+ 46,203, 56,169,159, 66, 28,103,133, 39,165, 80,233, 39, 22,198, 36, 73,109, 77, 69, 74, 34,120,250,228,171, 47,216,108, 54,188,
+122,241, 3,195,241,200,241,184,103,125,125, 67,221, 53,140,195, 48,197, 62,177, 88,175,241,149,227,237,187,247,244, 31,142,132,
+126,192, 85,158,104, 33,217,204,122,181,165,223,247,180,190,165,109,234, 7,214, 50, 17,203,196, 92, 88,175,214,172, 23, 29,199,
+251, 61, 49, 4, 65,233, 22, 25,111, 61,196, 14, 78,170,102, 17, 23,165,169, 33,194,148, 76, 83,137,239,185,113, 78,178,161, 53,
+ 23,119, 82, 14,219, 89, 41, 45,235,143,213,197, 5,203,205,146, 16, 3,253,105, 32, 37,169,150,189,119,116,181,116,219,197,192,
+226,114,203,205,211,167,132,148,249,240,241,150,219,253,158,254,212, 51, 14,153,237,229, 37,191,121,182, 37, 29,118, 48, 36,108,
+182, 42,242, 74,228,241,132,203, 89,125,159, 25, 87,181,242,250,115,196,148,128,181,105,134,152,156,246, 71,150,117, 67,211, 46,
+184,186,184,166, 91, 84,180,166,176, 46, 6,155, 36,231,122,213, 45,196, 70, 86, 85, 92,110,183,252,209,205, 51,222,222,237,248,
+203, 31, 94,224,189,165,173, 28, 97,236, 33,102, 22, 77,195,186,246,164, 24, 24, 67,162,143,137, 49, 10,241,112,189,189,160,233,
+ 90,172,129,211,105,207,237,171, 31, 25, 66,224, 20, 2,105,178,223,185, 66, 99, 13,181, 47,116,157,161,171,193,229,145, 18, 6,
+136, 81,225, 45, 89,186, 76,202,255, 79,214,155, 53, 73,118,157,231,122,207, 26,246,152, 83, 77, 61, 84,163, 49,131, 4, 65,234,
+ 72, 71, 17, 39,194, 23,246, 95,246,185,240,133,195,215,118,156, 8, 71, 88, 33, 74,166, 56,128, 36, 64,128, 0,122,172,185, 50,
+115, 15,107,242,197,183,246,206,132, 44, 42, 66, 34,217,168,170,174,220,123,173,111,120,223,231, 37, 26, 65, 88,154,162, 38,234,
+ 58,119,138, 50, 41,105,218,150,179,245,146,199, 7,199,215,111,175,132, 2,150,164, 3,245, 42,225,242,168, 57, 18, 50,133, 74,
+212,179,198,216,121,188, 58,237,127,229, 50, 50, 88, 91, 96,140,240,243,149,150, 46, 93, 27,241,235,206, 66,182,220,213,139,143,
+ 93, 31,249,225, 39,251,146,172,164, 98,146,206, 75,103,175, 46, 71, 42, 96,178,186,122,246,200, 31,173,211, 38, 64,208, 4,232,
+ 80,200,215, 74, 74, 99, 39, 44,180, 58, 36, 47, 38,132, 7, 63,167, 88,164, 52,195, 68,194,236,153,151,110, 54, 34, 7,124, 10,
+113, 78,154, 75,153,221, 30,179, 21, 74, 41,131,205, 66,169,152,233,123, 38,255, 30,166, 61,168,102,226,135, 27,217,174,107,115,
+208,123,104, 77, 72, 26, 91,212, 36, 36, 29, 44, 34, 9,103,139,117,205, 98,177,132,164,120,247,254, 21, 63,252,248, 29,219,125,
+160, 42,123,254,219, 63,255,207,156, 60,251, 39,156, 31,101,146, 98, 42,116,105, 41,108,153, 85,245, 26,163, 60,235,205, 41,235,
+245, 25,109,189,144, 46, 91,139,158,227,234,253, 13,219,155,247,220,252,240, 29,253,221,123, 42,171, 40, 98,160, 94,202,161,110,
+148,165,178,138,214, 42, 22,133, 8,220,234, 74, 80,165, 58,131,122, 82, 84,135, 29,109, 38,171,133, 24, 41,171,200,162, 76,156,
+ 87,134,147, 34,209, 88,207, 73,101,216,212, 5, 78,107, 6,101,137,169,192, 37, 89,157, 20, 70, 16,175, 46,251,154,171,108,147,
+124,118,113,206,217,250, 68,214, 28, 51,146, 84,226,128,157, 23, 77, 82,204, 5,160, 54,194,218,168, 76,162, 50, 9, 91, 88,214,
+235, 37,134, 32,190,107, 37, 90, 10,109,229,243,154,116, 13,211,243, 57, 59, 48,230,164,188,124,121,153, 66, 62,183,236,153,150,
+240,158, 64, 81, 42, 10,171,102,139,162, 38,119,222,121, 98,165,178,109,185,172, 74,201,216, 8,145,221,118, 7, 76,137,126,105,
+190, 28,205,108,183, 22, 91, 99, 81,228, 73, 95,144, 70, 74, 35,196, 62,163, 52, 86,139,222, 43,132, 32, 83,165,148, 48,133,144,
+ 25, 21,138,209,141,217, 6,151, 72, 42,204, 46,147,137,188, 28,129,144,227,112, 39, 11,170,158,209,175, 34, 63, 15, 62,205, 13,
+ 39,185, 49, 66,137,171,229,240,156,171,153, 52, 41,132, 78, 43,127, 54,138, 39, 95, 68,188, 30,231,189, 76,201,181, 17, 77,202,
+148,163,144,215,180, 42, 43,227, 82,230,228, 78, 43, 59,113,166, 72, 57, 97, 23,117,205,126,116,220, 63, 60, 82,218, 41, 34, 78,
+ 44, 56, 36,217,103, 15,195,136,213, 69,238, 70, 52,202, 79,106,110,209, 81,250,124,200,219, 68, 78, 7,146,113,201,147,167, 23,
+ 40,109,185,123,124,160, 93, 45,233, 7,207,251,183, 87, 44,215, 37,155,205,138,104,132, 48,165,149,161,239,247, 36,171,176, 85,
+197,176,235,192, 71,172, 45,164,235, 15,225,208,105,120, 80, 86,131, 14,184,193,209, 44, 42,172, 53,244,227, 64, 83,149,124,250,
+171,207,121,253,230, 29,111,223,190,229,242,236,132,208, 13,188,120,249,130,221,126, 96,187,123,144,151,222,192,250,236,148,253,
+221,150,187,119,239,233,250, 7,198, 56, 82,218, 22,231, 29,235,166,197, 19,121,236,122, 78,214, 11, 25,139, 39,249,165,169, 12,
+205,143, 41,178, 94,182,108, 31,110, 25,199,158,193, 13, 82,173,231,129,141,112,186,243,238,113,226, 98,231,170,113, 82, 78,163,
+ 18,133,177, 20, 57, 43,125,142,185,156,131, 46, 50,169, 72, 9, 89,107,217,212,172, 79, 79,176,201,240,176,221, 51,244,226,165,
+213,218,208, 22,149, 4,204, 12, 3,139, 69,195,230,233, 11,174, 31,239,121,243,230, 45, 74, 69,234,186,100,112,154,110,191,229,
+242,114,197,120,126, 65,119,255,158,208, 63, 96,171, 66,166, 95, 99, 32,142,158,186, 93, 74, 87,106,202,140,114, 37,239,127, 68,
+ 23,129, 85, 60,110,183, 60,220,223,177,185, 56, 99, 55, 74, 52,165,223, 62, 82, 39, 47,187, 72,101, 89, 84,149,188,216, 42,241,
+236,244,148, 95, 62,127,201,119,111,222,240,247,235, 43,218,182, 97,185, 88,114,117,115, 79, 76,158, 77,221, 80,104,232,221, 40,
+ 98, 74, 31,233, 93, 32,168,130,182, 93,176, 88, 52, 40, 13,163, 27,121,124,123,203,190, 27,216,187,158,104,200, 52, 41,178,207,
+ 53, 82, 86,150,101, 99,177, 42, 16,124, 96,112, 18,243,232,147,104, 34, 66,238, 56, 27, 83,209, 84, 13,182,110, 73,186,201,204,
+105, 39,200,222,162,100,181, 88,115,114,186,227,237,205, 43, 46,111,111,121,249,244, 5, 62, 70,108, 76, 40, 43,159,161,154,119,
+224,146, 94, 21, 18,148, 20, 57,135, 57,231, 19, 24,141, 50,197, 60,206, 62, 28,142, 19, 3,123, 26, 0, 30,254,117, 8, 52,205,
+ 47,120,238,238, 4, 94,162,231, 78,125,246,131, 39, 57,148, 72, 54,163, 43, 83,142,150,212,115,247,108,116,206, 34,207,187, 76,
+102,107, 89, 30,129,135, 41, 31,253, 40, 23, 58,105, 82,116, 89,105,204, 17, 42, 54,205,187,114,149, 82, 70,106,102, 44,231, 28,
+120,158,102,239,174,159,199,158,106,126,102, 69, 80, 39,190,226,137,142, 55,141, 16,201,192, 30, 81,151,219, 76,143,180,153,194,
+ 39,235,132, 24, 18, 33, 9,110,115,209, 46,216,156,174,136, 6,186,219, 91,110,222,253,196,174, 27, 73, 41,242,229,111,254, 27,
+159,254,234, 31,184,247,210,184, 24, 99, 41,172,165, 48, 50,126, 79,196, 57, 36,165,110, 45,139, 69, 77, 83, 74, 14,195,232, 20,
+ 38,106,246,119,145,123,189,227,180, 13,196, 94, 19, 84,201, 48, 4, 76, 72, 44,140, 66,153,136,213, 25,178,163, 33, 24,249,189,
+142, 3,121,242, 25,196, 59,157,242, 36, 38, 5,162,138, 24,165,168,140,225,100,169,217, 24, 69,163, 34, 85, 2,167,193,212,138,
+100, 53,119,206,210, 69,157,225, 65,122,206,225, 32, 59, 59,140, 49, 20, 11,203,243,231, 23,180,117,193,224, 70,193,142,134, 60,
+ 45, 8, 50,170,245, 19, 20, 12, 80, 33, 80,167,129, 90, 13,184, 20,104, 22, 13,101, 85, 65,144,248,108,239, 2, 46, 56,138, 90,
+ 46, 76, 73,222,156,206, 50, 53,119,206, 74,169,156,237, 29,230,139,204,199, 3, 25,113,202, 9,168,202, 2, 99, 52, 99, 12,164,
+ 44,136, 11, 57,185, 79, 16, 25, 9,149, 60,171,101,195,186,109, 25,221,200, 48, 12,179,246,104,122, 22,101,247, 62,165,243, 37,
+172, 21,177, 88, 76,126,142, 92, 85, 10,138,188,245, 22, 61,201, 72,242, 65,174,171,172,108, 87, 70, 8,144,206,123, 76, 33,197,
+241,132, 92,153, 48, 56, 33, 51,234, 39, 13,203,156,183, 48,169,207,109,230, 20,228,212,180,148, 57,241,147,224,100, 42,200, 99,
+ 76, 18,183,154, 65, 81, 33, 73,116,170,209, 90,236,105, 10,172, 41,112, 78,206,125,128,170, 42,133, 41,162, 14,249,236,115, 22,
+ 64, 20,139,179, 6, 41, 80, 9, 4,207, 28, 10,163,133,168,213, 73,250,154,177,243,250, 77,132, 28, 73, 58,208,190,159,191,153,
+205,203,166, 56,239,227, 76,222,119,139,119, 53,132,128,143, 80,183, 45, 31, 92, 62, 99,140, 9, 93, 88,234,182,229,245,219,247,
+236,251,129,211,229, 41,237,178, 33,142, 99,166,200,137,125,170,202, 96,151, 16, 34, 49,195, 85,124,146,189,249, 49, 91, 87, 43,
+ 69,242, 17, 31,226, 92,241, 12, 67,207,167, 95,124, 65,221, 52,252,245, 79,127,164, 46, 74,246,253,200,197,243,231,180,155, 21,
+119,215,215,146,210,102, 12,139,102,193,114,177,228,253, 79,175,121,220,109,217, 14,189,196,110,102,197,240,102,189, 98,191,221,
+ 97, 20,212,101, 57,143, 33,133,226,101, 72, 33,176,104, 91,170,178,226,246,238, 94, 58,198,113,196, 7,217,129, 4,100,202, 0,
+ 9,157, 38,149,129, 58,138,217,144, 42, 93,105, 77, 93, 21,148, 70, 17,146,207,190, 92,201,210,136, 49,239,243,114,111, 85,214,
+ 37,235,211, 53, 77,219, 48,116, 35,253,126, 16, 65,153,146,120,198,178,172, 36, 60,161, 42, 41,234,138,110,220,211, 13, 35, 23,
+ 79, 46, 88,175, 79,196,186,213, 71,246,187, 7, 30, 30,110, 57, 57,127, 74, 81,150,244,251,247,152, 48,226,134,142,110,191,207,
+ 80,136, 68,138,142,210,230, 4,165,232, 69,225, 28,131,100, 71, 59,199,245,245, 21,101,101,120,114,121,193, 98,221, 82,120, 71,
+227,189, 84,202, 90,211,214, 21, 81, 41,122, 21,121,250,244,130, 47, 63,252,144,111, 94,191,226,111,111, 95,177,106, 26, 86,235,
+ 19,222,222, 63, 18, 18, 60,105,106,137,149, 29, 61,163,119,236, 67,164,247,146, 52, 87,181, 53,237,170,165,170, 43,162,247,108,
+175,110,216,221,221,227,162, 67, 91,137,132, 44, 45,148,133,146, 78,169, 81,172, 74, 40,180,167,176, 50,138, 43, 10, 77, 89,202,
+229, 52,250,136,207, 21,110, 89, 21, 84,205, 10, 83,182, 40, 35,251,205,188,202, 70,107, 77,213, 54, 44,215, 27,160,224,219, 31,
+223,224,134,140,160, 76, 10,155,185,211, 42, 48,149,104,121, 9, 43,149,188,214, 98, 83,211,166, 0,149,187,119, 43, 21,185,158,
+212,242,121, 4,104, 16, 17,141, 54, 22,157,247,102,147, 56,102,250,179,186,176, 25, 77,123,184,164,143, 35, 87,149, 34,119, 51,
+241,103,105,206, 10,141, 81, 19,192, 34,255, 92, 71,227,241,121,140, 56,137, 94,115,167, 61,165,177,165, 44,124, 58,114,252,228,
+112,149, 52,131, 81, 98,156, 18, 71,242,239, 79,103,219,222, 52,165, 74, 18, 66, 52,161, 94, 69,244,199, 33,148, 98, 46,116,152,
+ 29, 52, 90, 23,210,149, 24, 45,154, 14,101,231,169,131, 49,134,132,197,121,114,184, 82,201, 98,217,210,216,130,232,246,188,187,
+126,205,221,195, 45,123, 23,185,124,118,194,127,249,231,127, 98,155, 12, 65, 23,160, 43,108, 81, 75, 30,185,150,139, 65,116, 22,
+ 35, 42,121,177,111,181, 53,101, 41, 62,229,152, 37, 87, 65, 71,186,209, 19,163, 22,251,215,208, 83, 69,199,170, 84,156, 53,240,
+124,165,120,182,128,211,101,226,100,161,216,212,134, 69,169, 89, 54,138,186,148, 29,111,169, 13,133, 73,148, 69,164, 40,160,208,
+ 2, 4, 58,173, 20, 31,156,148,172, 27,104, 74,141, 73, 10,157, 45,151,149, 54,172,106, 77, 85,107,148, 45, 32, 40,186, 81, 34,
+101, 5,102, 82,160,108,201,197,217, 41, 31,126,248, 92, 88, 31, 41, 16,125, 32,184,152,179, 57,178, 61, 42, 71, 88, 7,231, 80,
+126, 79,163, 59, 84, 24, 48, 73,211, 54, 11, 57,123,124, 98, 24, 35,251,193, 49,122,207, 48, 58,134,233,156,158, 86, 54,233, 40,
+232, 36,147,206, 98,214, 60, 40,157,178,153,236,144, 89, 96,173, 21,100,109,126, 94, 84,210, 57,208, 84,190, 72,210,194, 66, 49,
+166,162, 89, 52, 36,171,217,119,251, 28,105, 61,137, 8,115,185, 59, 79, 46,165,177,180, 69,238,220, 67,154,163,128,181,146,247,
+211,106, 53, 23,214,199,214, 74,107,237,124, 65,143, 97,122, 78,197,101,101,213,127,130,133,205,254,114,105,225,227,145,205, 82,
+ 41,147,181, 36,249,156, 60,178,196,153,233,159,153,156, 97, 28,121,242,181, 48, 61,138,162, 56,172,213,140,136, 67,197, 14, 46,
+103,168,243,126, 22,195,114,204,130, 72, 51, 17, 71, 4,164, 71, 41,135, 82,239, 42,197,190,235, 69,129,154, 99, 63,167,131, 36,
+132, 64, 63, 12,140, 99,152,130,130,230,151, 16, 14, 52,172, 24,226,188,131,243, 41,226,130, 99,189, 89,241,252,233, 19, 98, 2,
+163, 43,140,182,188,123,243, 6,173, 96,117,186,166,109, 22, 12,189, 35,102, 43,156,119,129,118,185,148,191,164,119, 18,108, 97,
+ 52,177, 31, 5, 63,203, 33, 45, 74,107,131, 31,122,185, 42,141, 17,165,125,179,224,163, 47, 62,227,219, 63,125,195, 15,223,255,
+200,122,189,166,235,247,188,252,244, 99, 30,239,119, 92,189,125, 79,219,180,104,171,105, 87, 75,198,110,228,246,221, 21, 99, 63,
+ 50, 14, 3,182, 44,137, 49,176,106, 91,172, 46,216,117, 61,109, 91, 81, 85,217,198, 33,179,159,124,208, 24,154,229,146,221,253,
+ 61,251,237, 30, 23, 28, 67, 6,240,196, 68,182,136,153,249,193, 51, 89,140,228, 51,208, 79,118,136,145, 69, 97,169, 74, 59,245,
+ 93,100,209,239,225,247,153, 21,199,133,209, 44, 87, 45,203,211, 21, 33, 5,186,161,151, 85, 66,142,242,172,109,129,177, 82,109,
+214, 77,131,173, 75,170,186,224,191,252,230, 43,190,250,205,111, 48,218, 50,236,123,186, 33,161,203, 21,247, 55, 55, 24,157, 88,
+159, 93, 16,187, 61,187,155,215,184,110, 39, 30,249,178,150, 93,155, 86,104, 29,137,161,135, 56, 66,116,196, 24, 8, 1,238,110,
+183, 12,251,145,213,114,197,211, 23,231,132,253,142,221,155,119,232, 40,162,179,166,174,137, 57, 10,246,242,217,115, 62,251,232,
+ 51,190,254,230, 59,190,249,225, 39,206, 78, 78, 56, 57, 57,225,213,251,107,134,190,227,114,217, 82, 98,240,126,196,249,145,206,
+ 5,186, 49,138, 29,171,180, 84, 77, 77,211, 52, 0,116,219, 45,251,187,123,198,161, 67,107, 68,120, 99, 5,224, 81,152,200,166,
+210, 92, 44, 12,155, 26,138, 52,226,125,151,173, 44, 2,199, 8,206,147,115, 27, 48,218, 80, 45, 22,148, 77,139, 45, 75,180,150,
+249,201,108, 67, 67, 52, 34, 39,235, 53,235,213,130,171,219,142,191,189,250, 65,186,130,120,232, 38,231,139, 53,101,145, 78, 66,
+ 0, 42, 57,101, 45,233, 60,221,202,187,111,149,116, 22, 77, 78,194, 47,233, 22,229,196,200,239,148, 62, 18,199,161, 15, 74,218,
+ 60, 73,155,146,168, 82,156, 56,212, 42, 23, 2, 50, 97, 51,218,204, 9,102,178,115,159, 2, 42,212,156, 30, 37,227, 84, 3,218,
+228,131,118, 86,234,205,236,246,152,113,204, 7, 12,236,145,245, 46,197,153,110,150,242,236, 85,197,137,160, 23,103, 85,190,202,
+ 5,142,206,207,252, 68, 56,155,246,255, 7,139, 91,246, 33,107,131,194,202,197,144,199,226, 83,220,175,202, 59,118,109, 44, 33,
+179,186,141,177,180, 77,205,162,149,103,228,225,230,134,251,251,107,156, 19,234,222, 87,191,254, 7, 84,125,198, 16,141,192, 52,
+139, 18,109, 11,208, 10, 23, 70,198,126, 71,112, 29, 33, 12,248,224, 41,148,161,170, 75,150,171, 5,171, 85, 69, 89,200, 8, 29,
+147,112, 1, 30, 59,217,225, 55,149,229, 98,109,120,121,162,249,224, 68,113,214, 40,218, 18, 22,117, 98, 83,195,202, 38, 26, 29,
+ 89,214,138, 77,171, 88, 84, 80,217, 72, 83,200,122,168, 54,145,179, 86,115,185,178,156,104,197, 34, 5, 22,149,198, 22, 74, 86,
+ 57, 49,137, 13,205,139,245,171, 52,242, 92, 72, 6,135, 92, 68, 86,201, 24,185,108, 13,191,248,236, 35,214, 77,133, 15, 30, 23,
+ 2,126, 34,184,197,136,119, 14,231, 28, 97,116,248,253, 14,183,191, 67,251, 71, 72, 1, 31,229,220, 45, 76,129, 74,242,252,135,
+152, 8, 26,170,182,202, 5, 20,153, 74, 41,193, 35, 19, 97,141,124, 85,197, 36, 83, 19,171,133,148, 55,145, 1, 99,110,104,202,
+210,206, 83, 35, 97,152,103,161,102,204,204,114, 18,163,247, 88, 91, 80, 20, 5, 16,113,195,152,247,233, 16,162,151,231, 44,103,
+156,107,166,232, 89,193,195,170, 76,161,211, 83, 4,111,190,236,180,201,107,167,196, 76,180, 35, 35,148,117, 70,177, 78,132,185,
+ 73,204,105,142, 50, 15,212, 20, 24,147,196,194, 55,173,242,143,147, 11, 99, 22,150,166,252, 61,166,112, 36,125, 20,181, 42, 19,
+177,220,144,102, 27,154, 49,178,142, 35, 19, 47, 77, 78,192,140,179,155, 76, 49,120,143, 15, 62, 23, 37, 7, 13,155, 62,178,186,
+106,171,231, 66, 65,219,188,166, 10, 49,112,251,176,149,145,133, 53,196,148, 40,244,129,249,238,188,159, 69, 98,154, 76,114, 74,
+ 57, 25, 40,255, 57,159,145,147, 9, 24,125, 96,183,223,241,203, 95,125,201,233,217, 9,223,253,253, 71, 0,246,187, 29,119,183,
+183,164, 16,104, 23, 45,186, 44, 24,119, 59, 84,146, 75,107,123,191,101,249,244, 68, 8,106, 49, 80, 90,131,235, 93, 14,133,136,
+ 71,105,214, 50, 18,233,135, 1,149, 18,165,181,132, 0, 79, 47,159,162,130,231,235, 63,124,205,217,102,131, 2, 86,203, 21, 31,
+188,120,193,247,127,249, 43, 74, 43,234,178, 32, 86, 5,235,179, 83,126,252,250, 27,118,251,123,134,161,151, 93,158,209,132, 20,
+ 57,105, 27, 30,119,123,130,139, 52,203, 70,176,152,121, 7, 46, 35, 64, 40, 42,169,178,222,190,191,162, 82, 6,179,172,216,123,
+ 71,171, 37,118,181, 40, 12,106,144, 71, 94, 79, 29,122, 98,138,182, 23, 1,160, 82, 52, 85, 37,201, 66, 74,108, 29,226,205, 14,
+178,123,139,228, 17, 75,162,170, 75,214,155, 21,117, 93,179,223,119,116, 67, 47, 7, 99,142,123,173, 10,155,239, 24, 67,209, 52,
+172, 78, 87,212,109,205,201,186,229, 15,127,254,150,237,110,143, 86,138, 93, 55,114,187,109, 89, 24,205,155, 31,191,229,179, 95,
+254,138, 48,140,188,127,251,138,205, 83, 69,187,217, 16,163, 35,122,176,117, 41, 47,137, 22, 49, 77,138, 26,141,165,219, 63,242,
+120,251,200,106,177,100,185, 58,231, 63,126,251,175,124,255, 31, 95, 99, 98, 66,151,149,184, 4, 66, 98, 36,240,242,197, 71,252,
+226,227, 79,249,243, 95,254,202,143,111,223,243,225,243, 75, 86,155, 5, 63,188,191,194, 13, 3, 47,207, 78,168, 83, 96,219,143,
+184, 56,226, 98,100, 8, 18,171,168, 10,139,173,173,240,217,139,130,253,110, 75,191,221,210,119, 91,146, 22,168, 10, 25,188,145,
+188,167, 45, 12,167, 11, 75, 91, 73,183,216,185, 68, 24, 18,110, 12,140, 33,178,239, 34,187,157, 35,120, 57,144,170, 69, 69,189,
+ 88, 82, 54, 13, 69,105,102, 43, 85,244, 28,141,252,100,184,182, 92,174,185,189,126,207,143,111, 94,241,236,233, 5,155,245, 69,
+198, 68,154,195, 11,158,163,128, 39,104,137,168,221, 5, 87,106,166,212,167,163, 49,158,202,254,107,149, 97,231, 25,101,158, 85,
+222,233,144,201,156, 14,162, 50,109,204,156,246,165, 39, 33,221, 28,104,114,176, 75, 77, 2, 29,226, 1, 40, 51, 29, 40, 41,127,
+ 47, 31,227, 33, 48, 38,239,237,116,166,205,197, 12,145,138,105, 10, 12,145,232,229,148,221, 12,196, 41,253, 42,102, 54,249,188,
+ 91,202,255,171,126,150,157, 62,217,130, 52,135,213, 60, 7, 65,254, 1,174,163, 77,222,215, 26,146,206, 29,121,126, 63, 82,238,
+236,101, 90, 33,107,193,132,162,172, 42, 86,171, 37,117, 85,227,195,192,246,254,134,177, 31,113,131,231,195,203,103,124,240,233,
+ 47,217,247,158,168,138, 76,119,147,210, 38,120,207, 56, 12,232, 20, 48, 38, 9, 48, 34,255,253,207, 54, 27,206, 46, 78,217,188,
+221,208,237, 28,187,224,230, 61,114, 31, 32, 89, 69, 93, 43, 26,147,104,117, 78,164,204,135,174,213,217,221,128,192, 97, 82,182,
+ 48,250,164,112, 73,209,148,133,232,143,130,167, 45, 52,196, 17,187,139,196, 62, 98,150,150, 62, 5,130, 50, 68,107,193, 39,124,
+136,248,100, 8, 33,226, 71,151, 9,126, 81,198,238, 57,239,226,139, 79, 62,224,243,207, 62,198, 59, 71,204,185,234,206, 79,129,
+ 61, 33,135,239, 68,140, 10,152, 52,160, 66,135,214, 14, 31, 18, 85,189,164,110,235, 89, 47,225,189,140,124, 79,215, 45,117, 99,
+137, 41,209,247, 29,228, 75, 93,171, 36,207, 70, 86,132,139,184, 43, 29, 0, 65, 41,207, 36,167,253,145, 6, 83, 76,204,245, 28,
+ 96,154, 11,186, 41, 63, 62,230, 32,162,162, 52, 20,133,232,130,156,115,248, 33, 28,173,121,226,209,247,144,119,195, 90,249,243,
+ 49,115, 39, 38,175,120,204,159,133, 74,230, 40, 71,225,200, 14,154, 29, 92, 49, 68,146,243,196, 58, 91, 80,211, 97, 34, 53,107,
+ 7,242,187, 19,124, 78, 36,140, 7,157,233,132, 74,206,117,247, 60,189,226, 40,211, 33, 4,129, 87,233,252,110,168,201,237,146,
+ 2, 69,145, 9,137, 83, 84,172,202, 26, 53, 39,249,233,102, 18, 31,230, 6,219, 26,133, 53,217, 30,158,223, 63,153,140, 9,252,
+107,130,216,216,237, 48,242,248,240, 40, 9, 84, 90, 19,188,159,171,241, 16, 34,209, 7,140,178, 4,239, 49,149,208,112,210, 28,
+141, 56, 37,177,202, 47,197, 7,177, 8,248, 24,248,244,227,143,169, 74,195,221,237, 3, 40,184,191,191,103, 28, 6,106, 99, 89,
+ 46,219,153, 63,173,167,128,120, 20,101, 89,202,222,199, 71,210, 40,191, 28,239,125,222, 59,200, 3, 84,104,139, 46, 12,110,116,
+ 98,236,215,138,122,217, 98,171,138,191,252,254, 79,188,121,223,241, 79,255,240,156, 24, 35,103, 23, 23,196, 24,120,253,231,191,
+241,193,175, 62, 67, 21,150,229,106,129, 87,145,119,127,255, 17,239, 19,247,187, 71,154, 69, 67,140,158,182,106, 40,155,146,119,
+143, 91,225,170, 23, 37,147,169, 97, 74,218,210, 90, 81, 85, 21,215, 87,239,185,189,185,225, 98,115, 50,119,232,211, 65,173,149,
+ 28,128, 54, 43, 40, 3,135, 28,101,121, 8, 4, 60, 81,149,229, 36,238, 61, 58, 19, 83, 22,208,136, 93,163,180, 90, 98, 80, 55,
+ 75,198,113, 96,232, 7,220,232, 36,111,184, 40,168, 10,139,205, 97, 1,182,170,104,215,242,146, 42, 29,249,237,239,254,157,111,
+255,250,119, 84,217,112,113,114,130, 79,137,119, 87,215,156, 46,107,140,129, 31,190,255,142,211,147, 19, 46, 98, 36,184,123,134,
+187, 18, 93, 45,176,182, 21,251, 71, 8,146,197,158,162, 64, 62,220,192,238,254, 1, 99,224,236,217, 83,254,253,183,255,193,255,
+249,223,255, 15,210, 0,245,249,154, 69, 85, 49,236,246, 12,201,243,252,242, 37, 47, 47, 63,230, 15,191,255, 43,239,238,222,241,
+225, 7,151,156,174,214,252,245,205, 27,118,125,199,167,231, 39, 44, 19,220,237, 59, 70,231,240, 36,250, 16,101,143,165, 21,186,
+176,216,162, 96, 81, 54,116, 93,135,235, 58,186,221, 3, 46, 13, 96,100,204, 60,165,222,149, 70,209,218, 72, 85,122, 10,163,240,
+ 4,201, 72, 87,146, 67, 63,140,129,219,199,192,118, 47,150, 50, 91, 88,218,213,130,245,114,195,162,109, 48,214,228, 49,178,140,
+ 61, 3, 62,163, 79,100, 60,183,168, 55,212,117,193,224,224,167,183,111, 57, 57, 61,203, 97, 28,135, 80, 5,201,215,205, 23,245,
+212, 93,107,131, 81,242,114, 78,206, 17,117,228, 93,151, 14,148,249,101, 63,120, 98,243,238, 48,175,181,230, 22, 58, 77,246,176,
+140,141, 85, 83, 22,181,166,208,246,160, 89, 74, 18,223, 74, 46, 10,153, 85,187,115,190,218,145,175,246, 48,190,159,116, 43, 83,
+ 78,122,200,239,232, 36,176,139, 49, 19,147,178, 5, 41, 78,105,129, 42, 43,114, 99,144, 3, 55,254,252, 98,143,217,183,107,148,
+ 21,161,162,154,240,166,113,206,212,158, 8,114, 41,171,179,147, 66,186, 16,109,229,250,208, 18, 50,163,148,194,251, 68,138, 50,
+122,110,154,134,166,169, 81, 26,246,119,247,236,247,183, 56, 55, 16,129, 15, 94,126, 76, 80, 37,206, 71,162, 14,104, 29, 72, 65,
+138, 1, 23,250,156,185, 32,124,124,141,252,140, 65, 7,234,147,150,243,243,115, 78, 79,222,179,223,118, 16,182,120, 15, 58,123,
+171,165,128, 22,197,120,231, 18, 33, 69,108,161,168,173,194, 69, 69,239,101,164, 92, 34,151, 80, 85, 22,244, 99, 32, 89,205,162,
+209,242,140,117,129, 34, 69,146, 5,175, 32,246, 1, 83, 21,140,201,176,203, 0,171,100, 21, 46,105,186,160,217,186, 72,112, 50,
+142,181, 25,156, 18, 53,156,158,174,249,229,175, 62,199,232,132, 31,115, 90,166,207,137,100, 81,206,111, 29, 35, 58, 57, 66,220,
+ 81,208,129,242,140, 17,154,178, 98,185,108, 72, 90, 46,184,174, 31, 25,199,145,178, 42,230,149, 99,211, 88,172,173, 25,186,129,
+ 97, 24, 51, 33, 77, 26, 20,157, 68, 68, 25,143,227, 63, 53,140,209,231, 24, 92,133, 45, 51,247, 32,201,249, 41,226, 75, 45, 1,
+ 54, 89,131,224, 92,182,149,150, 50,121, 8, 65,118,221, 73,197,217, 61, 49,173,114,114, 79,153, 11, 27,177,143, 78, 93,178,154,
+160, 82,211, 20,217,232, 28,127,203,204, 92,152, 26, 33,165,148, 16, 75,115,115, 20,147, 8, 97, 81, 49, 91, 44, 15, 5,167,184,
+216,210, 12,163,153, 93, 27, 62, 30, 84,249, 57, 65, 48, 56,127, 40, 28, 82, 34, 58, 15,133,216,106, 83,146, 66, 8, 99, 48, 81,
+252,244,106, 34,193,229,212,182, 16,164, 83,175,235, 58,255,251, 48,191, 91,182,202,126,254,201,221, 64,144, 6, 66, 43, 12, 5,
+ 74,245,178,242,125,220, 63,112,215,247,160, 69,168, 19, 67, 20,222,180,130,224,131,168, 38, 13, 68,231,115, 60, 96,174,246, 19,
+ 7, 69,107,204,194,130, 40,213,159, 46, 10, 94, 92,110, 24, 92,160,247, 18,153,183,223,142,244,206,209,158,214,180,171, 13, 97,
+148,221,142, 54,134,110,240, 96,229, 1,240, 65, 30, 92,151,188, 80,226,130,164,253, 8,146, 49, 97,106,177,218,133, 33, 82,150,
+ 21,186, 42, 88, 63, 57,231,225,241,129,239,254,252, 45,109, 13,205,166,198, 84, 37,155,243, 51, 94,191,126,203,208,117, 44, 22,
+ 21,182, 46, 56,217, 60,229,234,251,119, 60, 62,220, 51, 14,142, 24, 20, 69, 33,251,223,186,173, 25,187, 68,232, 29,149, 85, 80,
+232,121,156,147,140,168,137,173, 45, 80,186,226,230,221,181, 48,158,113,244, 97,164,212, 5,218, 34,188,232, 20,165,219, 78, 83,
+ 56,146,140, 71,136, 94, 24,215,152,156,134,166, 1, 43, 68, 47,149, 19,136,146,202,251,175,128,209,137,186, 41, 89,173, 87,148,
+218,224,134, 81,246,186,254,176,167,154, 30, 80,163, 20,117,107,169,154, 2,173, 12,110,208,236,110,119, 20, 90,115,249,236, 41,
+205,234, 36, 71,168,214,220,238, 7,174,183,129,175,191,251,129,191,126,243, 3,151, 47, 63,229,226,249, 7,236,238,126,192,221,
+190, 66,235,142,228,123,162,235, 9,190,207,182,149,196,184,189, 34,117, 55, 60,121,122,206,215,191,255, 51,255,227,191,255,239,
+164, 16,121,241,241,115,158,158, 93,224,199,129, 33, 14,156, 95, 94,242,241,243, 15,249,246,251,239,121,127,127,197,203,203,103,
+172,219,154,191,190,150, 11,253,229,217, 25,141,210,220,239,247,140,222,225, 85,100,140, 98,185, 65, 37,129, 73,104, 77, 93, 86,
+184, 48,224,135, 14, 55,108, 25,198, 93,142, 19,146,253,153,241, 50, 69, 88, 86,176, 44, 34, 6, 71,212,121,154, 51, 38,194, 40,
+107,165,144,224,193, 69, 92, 78,136,170, 74,205,242,244,148,245,201,146,229,170, 62,224, 31,213,148,233,157, 71,194,122,110,193,
+105, 23, 43, 42, 91,113,247,254,158,174,223,131, 61,160, 96,101, 75, 18,142, 98, 26,179, 15, 61,243,182,133,197, 43, 1, 48, 42,
+143,143,149,192,169,243,197, 60,145,212, 52, 74,217,188, 63, 22,213,119, 58,206,105,203,186, 18, 17, 0, 73, 14,244, 20,219,170,
+209, 63,183,171,165, 56, 43, 56,226, 76,167,203,182,180, 16,143,252,237,185, 50,215, 18,153,153,166,113,165,210,114,176, 37,249,
+185,117,208,232,120, 68,218, 74, 19, 53,107, 58,216,210, 76,180,179, 73,108, 87, 38,119,252, 19,109, 79, 46,241,172,217,201, 62,
+240, 52,145,233, 98, 78,129, 35,146,116,156,221, 3,147,167, 87,231, 66, 41,230, 48, 23,193, 33,151,212,117, 67, 81, 55, 36, 70,
+134,221, 35,195, 56,208,185,158,166, 94,242,236,217,135,116,163, 98,116,145, 56, 58,201, 91,240, 35,253,184,155,215, 50, 17,159,
+139,110, 43, 30,225,148,168, 76,197,201,201, 41,231, 79, 78, 88,158,212,172, 55, 75,138, 82,163,203,132, 50,137,209,107,246,163,
+162,143,137, 49, 91,244,202,178,152, 33, 68,173, 85,172, 42, 77, 89, 64, 91,193,210, 70,172, 78,180,214, 81,155, 64,165, 34, 21,
+ 17,155, 34,109,173, 41, 26,133, 79,176,237, 61,166, 54, 4,163,233,168,217,235, 10,103, 11,250, 0,227,152, 50,116, 39,229,231,
+170, 64, 27,203,175,127,253, 75, 46,206,206,100,247, 29, 2, 99,144,112, 15, 97,240,123, 98, 28,137,174,135, 97,135, 25, 30,193,
+119,236,131,103,213,174, 56,217,108,196,251, 28,196,198,218, 15, 29,166, 48, 20,101,201,118,219,241,246,234,145,251,251,157, 52,
+ 25, 89,208, 53, 61, 67, 58,229,241,117,102, 14, 24,173,100,252,158, 67,190, 36, 81, 13, 9,132, 82, 58,163,132, 35, 70,167, 12,
+225, 17,245,122,140,145,161, 15,210,160,100, 97,109,242, 14,239,132, 37, 49,113,228, 15,233,105, 6,193,217, 43, 42,107, 49, 69,
+ 86,130, 79, 98,142, 60,206,159, 98, 85,117, 22, 96,166, 44, 98, 54, 90, 4,110, 42, 41,188, 23,145,166,184, 64,242, 59,169, 18,
+ 49, 57, 98,242,217,186, 41,147,135, 20,133,209, 63,241, 17, 84, 22, 48,203,166, 84, 62,119, 17, 39,202,148,194, 34,162,212, 33,
+134, 89,169, 63, 77,227,196,109, 97, 48, 70,198,238,211, 93,161,181, 76,202, 67,246,206,147, 18,125,215, 83, 21, 5, 41,121,146,
+151,130, 32,232,233,123, 79,250, 4,121,167,172, 82,224, 19,250,238,161, 99,215,239,196, 38,150,196, 84, 53,205,236,199,113,196,
+ 57, 55,163, 97,103,144,125, 78, 39, 82,113, 2, 92, 64, 10,242, 97,246,163,231,201,249, 41, 31,126,252, 17,239,175,174, 1,157,
+137,112, 30, 23, 28,203,118,193,106,181,196, 57, 79,239, 70,105, 84,130,240,110, 77, 33,149, 10, 49, 9, 18, 50, 7, 70, 72, 52,
+157,144,137,140,177, 2, 71, 25, 7, 74, 83,112,246,228, 2,157, 18,127,255,219,223, 8,125,164, 93, 90,154,170,102,177,104, 41,
+ 11,203,213,155,183, 20,139,134,182, 21, 40,133,210,154,235, 55,111, 64, 41,118,251, 29, 77, 93,144, 98,160, 45, 44,139,186, 97,
+219,109, 9, 33, 82,218, 34,119, 49,210, 45, 80, 24,148, 53,148, 69,201,237,245, 53,251,206, 19,147,193,171,130, 24,193, 27, 47,
+145,144, 73, 31,218,238,140,240, 84,217,155, 41,107,201, 9, 23, 58, 5, 24,164, 35, 42,216, 17,130, 52, 11, 5,155,101, 75,179,
+168, 25,198, 30, 55, 58,169,220,180, 84,117, 86, 27,108,182, 90, 20, 85, 77,221, 46,100, 79,147,247, 64, 23, 79,207,248,205, 63,
+124,197,175,127,253, 37,218, 68,206,207, 55,252,227,127,253,138,179,213,146, 55, 63,189,227,253,219, 61,223,252,237, 13,191,251,
+195, 31,177,166,226,139,143,127, 69, 91, 21,216,221, 29, 12, 15,164,216,203, 78, 61, 12,244,221, 29,219,221, 35,139, 85,203,119,
+255,239,239,248, 31,255,235,255,134, 75,158,143,126,249,146,143, 46,159,178,125,120,160, 31, 61, 23, 79,158,241,236,228, 9,223,
+189,254,137,155,171, 43, 62,124,246,148, 77,219,242,183,183,215, 60,244, 3, 47, 79, 55,108,180,149, 24,222,220,161, 15, 49,239,
+205, 20,164,108,159,105, 10, 81, 31,251,113, 32, 12, 59,186,253, 29, 41, 57,192, 65,116, 36, 37,221,209,178,136,180,214,163,141,
+ 60, 71,126, 24, 25,198, 40, 30,247, 0,187,124, 0, 19,101,223, 87,104,195,233,217, 51,206,207,207, 89, 45, 23,148,109, 67,154,
+187,212, 41, 38, 74, 97,162,116, 56,178, 47,143,121,245,226,112, 81,209,245, 41, 99, 95, 45,202,148, 88, 93,102, 4,228,129,254,
+165,212,180, 19,206,211, 27,164, 11,153, 58, 29,149, 35, 55,141,178,135, 93,153,214,135, 30,122,242,172, 27,147,133,101,217, 14,
+102,237,188, 15, 36,102, 26,246,180,103, 87,228,228, 40, 53, 91, 79, 81,243,255, 39,147, 4, 37, 95, 47, 28, 37,187, 77, 54, 72,
+ 49,218,167,153,244, 54,173, 10, 4, 47, 26,103,107,141, 80, 37,167,196,171, 28, 29, 28, 68, 4,149, 0, 63,161, 54,243, 84, 33,
+231,222,204,140,188,105,109, 55,163,101,213, 65,249,174,181,130,100, 15,121,214, 34,213, 22,161, 33, 70, 10,139,236, 89, 47, 42,
+ 75, 85, 21,168, 24, 8,221,200,176,123,192, 59,197,227,189,227,201,211,103,232,178,193,143,157, 88, 49,141,224,140, 85, 86,232,
+135,232, 72,209, 67,244,232, 24, 72,209,231,221,185, 70,155,138,243,179, 11, 46,159, 63,231,124,115,206,233, 74, 56,228, 70,107,
+ 80, 5, 99,176,236, 28, 92,247,176, 77, 5,161, 52, 56, 21,241,153, 7,110, 10,209, 17,212, 38,177, 40, 53, 9, 71,173, 34,181,
+214, 84, 42,177,182,138, 90, 75, 7,104, 61, 84,141,193, 27, 97,158,135, 17,218, 66, 72,127, 67,180,244,170, 36,232,130, 34,239,
+165, 3,228,233, 5,124,242,201, 75, 62,251,252, 51,220, 40,193, 60,206,231, 40,103,239, 72,126,132,113, 68,187,129,208,221,227,
+246,247,236,246, 91,124, 80,188,120,122,193,233,233, 42,127, 14,242,185,185, 49, 18, 93,158, 44,198,145,178,210, 52,165,198,251,
+152,173,179, 57, 68, 68, 77,122,137, 35,247,195,204, 77,152,224, 67,228,247,211,204,224, 44,149, 18, 42,179,203, 85, 10, 76,129,
+195,201,123,172, 73,148, 69,153,239, 21,113, 95,132, 33,200,229, 26,227, 84, 93,139,238, 43,143,246,181, 86,242, 59,201, 59,108,
+ 97,171,231, 56,235, 52, 15,181,228,125,153,176,101, 73, 97,203, 98,126,223, 98, 8,153,146,153, 61, 44, 90, 46,251,116,228,184,
+ 58, 36,107, 30,224,103,226,181,207,147,144,144,215, 27, 58,205,171,169,169,128, 77, 41, 64, 72,226,206, 57,182,166, 78, 73,142,
+218, 80,150,101,110,230,226,156,176,232,189, 76,122, 37,156, 39,161, 11,195,118, 24,132,143, 97,167, 70, 66,101,180,236,132,112,
+ 14,243,132,194,110,135, 14,155, 98,198, 25, 70, 10,155,241,139, 89, 96, 17,198, 49,255,178, 15,160, 8,163, 77,206,239, 77,179,
+ 81, 63,166,200, 56, 42,186,161,227,159,191,250, 7, 86,203, 13,175, 94,189,197,141, 62,143,230, 71,134,199,158,213,211, 11,172,
+129,174,243,164,164,177, 90,211,123,143,243, 65,100,253,131, 39, 69, 61,135,198,167,105,252, 29, 51,213,199, 24,241, 48,187,158,
+ 39,155,150, 39, 79,158,242,219,127,251, 55, 94,191,122, 75,107, 52,203,245,130,213,102, 67,213, 44, 24,182, 91,238,175,174, 56,
+189, 56,161,106, 90, 54, 39,103,188,127,251,150,187,247,239,137, 46,224, 66,164, 40, 75,194,224, 88, 52, 11,250,113,160, 27, 7,
+ 20, 80, 22,249, 96, 49, 38, 67, 20,164, 58,141,201,115,125,125,133,214, 50,214, 93,228, 72, 10,107, 91,177, 73,120,241, 85,186,
+ 24, 41, 72,255, 63,174,119,204,132, 38,107,237,156, 31, 93,104, 77,244, 14, 63,137, 36,178, 63,185,174, 75,154, 69,131, 82,145,
+177, 23, 12,110,202, 99, 26,107,173,144,175,180, 92, 34,197, 98,129,173,170,121,228,233,189,167,105, 26,150,203,134,253,221, 29,
+191,248,197,231,212, 77,203,187, 55,111,105,154, 5, 85,217,242,184,187,167, 94,175,249,238,239,111,176, 58,241, 63,253,211,127,
+229,201,147,167,184,161,103,219,245, 98, 63, 73, 10, 55,236,121,120,124, 32,122,199, 95,254,253, 71,254,244, 47,127, 36, 70,207,
+231,191,120,201,243,203,231,252,233,223,254,204,126, 28,120,250,244, 9,235,213, 41,239,238,239,216,222, 63,114,249,252,130,213,
+114,197,143,111,222,209,143,158,203,147, 37, 39, 77,193,238,238,145,209,117, 36, 5,163,151, 41,150,202, 23,141,202,222, 87, 99,
+140,132,167,196,145,125,119, 79, 63,246,132,164,230,244,176,186,208,180, 13, 84, 36, 44,129, 28,112,132,115, 35,125,212,244, 90,
+227,181, 97,235,224,161,147,189, 84, 81,192,114,185,228,197,139,167,156,158,174,133,217, 31,180, 32, 46,149,160, 90, 99,144,206,
+ 62,197,116,160, 29, 22, 37,214, 24,188, 41, 32, 26,118, 59,185, 36,116, 33,177,179, 33,248,121, 5, 50,125, 29,142,226, 83,231,
+148,182,217,223, 59, 33, 30,205, 76, 9,156, 51,154,149,236, 29, 21, 19,145,110,122,134,204,140, 23,158, 20, 74,149, 80,184, 0,
+ 0, 32, 0, 73, 68, 65, 84,104, 74,139,224, 71,118,123, 33,239,216,165,155, 57, 28, 68, 71, 42,121,178, 48, 41, 28,237,188, 73,
+ 24,165, 15,182,184, 44, 98,207, 3,119,201,161, 79, 34, 84,154,178, 58,231,208,152,188,219, 3,125, 68,188,203,187,164,121,212,
+ 42, 63,175, 78,228,228,170,124,249, 31,165,139,233, 35,127,188,202,207,243,148, 42,150,146, 48, 20,180,177,104,107, 9, 41,163,
+137,203,130,178, 20, 97, 85,138, 17, 55,246,116, 67,199,253, 99,199,222, 39,214,103, 39,236,186, 71,162,106,168, 86, 75,138,170,
+ 22,221, 76,240, 71, 70,228,236,197, 87,121,234,145, 66,158,164,104,138,186,226,242,131, 75, 30,239,111,240,187, 71,250, 80, 17,
+137,140,227,200, 24, 65, 5,141, 14,129, 46,231, 76,173, 75, 41, 94,140,100,192,224, 93,164,182, 80, 25,197,110, 68, 56, 7, 90,
+ 46,195,205, 66,161,125, 98, 28, 19,133, 74, 96, 44, 93, 9,189, 83,208, 65,172, 12, 62, 41,198,136,164,121,105,139,182,138,174,
+235,136, 89,251,116,182, 94,243,155,223,124,137,182,154,222,201,229,225,163, 39,120, 65,106, 7, 55,128,119, 68,191,167,239,110,
+136,125,199,249,249, 83,158, 93,190, 36, 25,112,251,142,209, 75,160, 84, 76, 17, 99, 21,237, 90,108,163,125,239,105, 26,203,114,
+217,224,221,192, 56,142, 7,164,175, 54,243, 68,102, 38,124,206, 2,106,105,252, 66,136, 89,200, 90,204, 98, 95,157, 71,237, 19,
+236, 72,101,225,101,112,145,170,144,149,152, 83,138,232, 61, 36,161,133,198, 48, 57, 43,164,136,212,218,200, 84, 37, 42, 48, 10,
+ 83,228, 49, 58, 50,121, 74, 49, 17,149,202,218, 37,249, 30, 58, 79,139, 84,190,120,173,181,114,249,207, 74,245,227,100,197, 44,
+104,246,126, 74,118, 63, 76,187,194,225,153,157, 57,241,145,124,118,164, 60, 13,144,228, 60,173, 12, 26, 47,227,253, 20,228,188,
+206,205,215,164,134, 22,209,172,154,243, 60, 98, 12, 66, 55,212, 26,239,189, 4,152, 41, 89,103, 23,182, 32,134,136, 87, 30, 61,
+ 41,247,243,164, 78, 79,228,200,148, 48, 58, 18, 12,216,135,174, 3, 34, 22, 69,136, 17, 91,216,249, 37,116, 62,144,140,201,120,
+189,195, 97,100,140,100, 59, 77,168, 73,114,214,178,139, 30,188,227,197,139, 75,162,247,236,187,125,222, 51, 59,198,113, 36, 97,
+ 56, 57, 59,203,254, 64, 55,139, 10, 98,138, 20, 85, 41,124,247,236,252,157,213,189,147,106,113,134, 8,105, 70,239,208, 6,206,
+ 94, 60,161,219, 15,252,240,253, 15, 88, 83,144,212,200,217,230,130,213,250, 4,239,229, 5,247, 46,112,241,244,156,230,116,137,
+181, 37, 63,253,244, 19, 41, 37,250,221, 14, 99, 12, 99,244, 88,165, 89,182, 11,110,238,239,136, 17, 74, 51,217,137, 52,166,170,
+ 69, 29,236, 29,104,120,184,219, 18,252, 40, 23,115, 37, 21, 87, 84, 34, 90,201,142, 75,130,207, 2,143,144,178, 69,140, 3,153,
+ 43,211,223,172, 17, 61, 64, 97,101,167, 23,163,160,255, 56, 2, 27,180,109, 67,213,150,244,131,168, 87,125,182, 56,216,194,230,
+ 14, 40,219, 24, 10, 75,185, 40,179, 0, 68,138, 33, 99, 52,117,181,100, 28,123,250,125,135, 42, 11,190,249,250, 91,246,221, 35,
+203,229,138,203,151,207,169, 31, 26,134, 97,164,235, 59,126,124,117,197,233,233,223,249,252,147,151, 60, 61,191,100,147, 28, 63,
+189,122, 69,240, 35, 49,141, 12, 15,143,188,254,254, 53,127,255,227, 15, 64,226,195, 79, 62,226,163,103, 23,252,241,119,127, 97,
+ 28, 29,207,159, 63,195, 22, 53,187,253,192,216, 15, 60, 63, 63,193,212,154,239,223,188,229,110,191,227,217,233,154,167,109,203,
+110,187, 99,215,117, 36, 45, 73,120, 33,143,196, 92, 46,220, 84,242,104, 76,198, 79, 70,226, 56,208,119,143, 18, 81,171,178,111,
+ 91, 65, 99, 35,109, 49, 97, 60, 35,201, 43,156,210, 12, 14,246, 33, 49, 90,195, 62, 40,238,247, 3, 62,202,216,170, 44,225,227,
+207, 94,242,228,217, 5,203,213, 6,109, 11,252,212, 45,198,152, 51,173, 5,162, 18,197,137,130,158,210, 10,129,186, 44,208,186,
+228,126,187,229,254, 97,199,197,115, 1,151, 40, 61, 79,176,229,240, 82,135, 92,102,217,157, 79,234,223,195,190, 79, 34, 82,243,
+122, 39,139,236, 56,164,162,231, 23, 87,116, 13, 34,210, 82, 36, 51,209,225,210, 28,169, 42, 24,215, 36, 1, 74, 9, 20, 86,194,
+128,242,133,169,146,140,212,229,208,203, 59,202, 28,120,145, 38, 22,123,158, 34, 77, 65, 17,199, 35,245,233, 61,156,186,144,233,
+178, 87, 42,205,150,159,105,159,153,102,193, 92,204, 59, 84,117,184,212,141,202,124,128, 56,119,119,106,218, 87,170, 28,125,137,
+158,247,251, 83, 74,157, 82, 71, 41,117, 90,172, 83,218,136,104,181,170, 43,233, 92,156, 35,134,129,126,232,185,190,125,196,154,
+ 18,239, 29,227,174,163, 92, 52, 24, 91,206,233,146,232,172, 85,200, 82,102,149,228, 51, 79, 49, 39, 15, 6, 72, 58, 98, 10, 75,
+187, 60,225,163,143, 63, 96,247,112,195,240, 83, 36,120,241,133,187,190,199, 39, 77,145, 85,253,131, 11, 12, 58, 15, 58,180,252,
+ 46,125,136,212,133,248,243, 15, 43, 20, 89, 30,185, 8,182, 52, 88, 27,136,217, 90,153, 98,100, 63, 36,134, 78, 38, 48, 81, 75,
+ 98,153, 66,198,172,251,190,207, 73,108, 5, 69, 89,240,201, 23,159,114,246,228, 66,206, 6, 31, 4,176,226,123,146, 31,137,206,
+145, 70,113,200,132,184,231,244,116,205,249,242, 35,206, 46, 46, 24, 66,162,239,123, 12, 26,239, 3,187,174,167,235,246,172, 55,
+ 39,212,109, 69, 12,129,166, 77,140,195,192,126,183, 23, 71,200, 28, 36,148,102,163,100,204,225, 72,115, 33,151, 69,151, 33,243,
+229,139,210,100,186, 94,156, 2, 80, 51,222, 45,219,121, 21,248,144,178, 54, 72,163,172,194,121,121, 23,130, 15, 66,161,147, 21,
+119, 14,110,153,135, 1,114, 95,101,180,182, 8,236,179, 72, 78, 2,231,231, 41,178,153,166, 61,249,159, 87,230, 48, 37,138,153,
+122, 58,163,102, 51, 12,138, 36, 22,199,144,146, 20, 16,211,183,206,211,169,249,231,200,220,248, 73, 47, 50,219, 67,167, 77,107,
+204,249,232,147,219,101,178,130,168,201,194, 41, 83, 7,155,161, 74,226, 58, 19, 91,121,140, 94, 92, 15, 70, 46,120, 91, 72, 2,
+158,143, 2,106, 19, 46,128,207,129, 77,241, 0, 40, 51, 34,118,176, 55, 15,247,152, 66,198, 3, 46,120, 10, 85,160,146,128,245,
+ 99,138,120, 68,240,193, 20,149,168, 39, 24,198,129, 42, 87, 90, 43, 33, 46, 49, 80, 85, 21, 31,188,120, 70, 63,116, 60,236, 59,
+170, 98,201,190,219, 51, 12, 3,198,192,230,100, 35,157,172,115, 82,213,104, 77, 12,145,182,173,137, 78,232, 97,137, 72, 24, 70,
+217, 91, 28,161, 41, 39, 27,144,235,123, 54,231,167, 92, 92, 92,240,237,159,191,231,254,238, 62,219, 41,224,244,249, 19, 52,224,
+122, 73, 77, 43,154,138,213,201,154,229,242,132,251,219, 59,238,175,111,196,154, 21, 3,186, 42, 24,251,142,245,106, 67, 82,138,
+113,112,194,149,111, 11,201, 53,183, 37, 69, 85,227, 6, 9, 48,113, 99, 79,247,176, 35, 5, 81, 23,171, 66,146,163,146,149,180,
+165,164, 4, 65,148, 66,200, 44,107,142, 88,197,242,127, 93, 18,229,187, 53,130, 42, 76, 41, 18,131,216,246,166,189,143,210, 80,
+ 88, 75,221,212,114, 64,120,151,119,128,153,197,174, 20, 70, 31, 10,172,122, 89, 99,202, 67, 42,145, 86, 98, 43,211, 74, 49,142,
+176, 88,181,236,118,143, 88,163,248,226,147,143, 48, 85,197, 98,181,193,197,145,127,251,151,223,243,112, 29, 48,213,146,215,215,
+247, 92,223, 93,243,252,226, 61,231,207, 55,104, 28, 42,122,134,199, 29,175,190,249,129, 31,191,125, 69,101, 10, 78,158,159,114,
+254,236,148, 63,254,199, 95,233,187,192,243, 23,207, 81,101, 1, 73, 83, 90, 88,174,150,248, 20,120,245,230, 61,119,221,200,102,
+189,224,108, 81, 19,250,129,237,118,151, 69, 60,224, 50, 7, 95,216,207,106, 14,188,169,202, 66, 96, 49,161,167,219,239, 24, 93,
+ 20,144, 79,182,153, 85, 22,154, 74,214, 24, 81,201, 1,232,130,236,183, 70, 10, 6,109, 24, 99,193, 93,231,232,131, 76,119,146,
+210,124,250,233, 7,124,241,197,199,216,162, 70,233, 74,128, 40,147,130, 62,136,117,139, 36,228,185,152,196, 14,164,149,198,249,
+129,148, 20,117, 14,153,217,109,183, 92, 93,223,115,126,186,198,110, 26,162,239,164, 2,152, 62,107,115,112,188,169, 76,251, 59,
+120, 92,165, 58,159, 82,220,166,168,214, 52,163,215, 99,246,206,100, 18,149, 86, 63,131,195,198,201,251,154, 69,162, 42,201,115,
+167,178,208,107,166, 33,164, 44, 78, 50,217, 14,150,223,159,249, 66,197,204, 30,114,249,158,122,246,172,199,201,194,118,228, 97,
+151,169, 92,250, 25,113,110,158, 0,232, 9,247,121, 56,228,213, 17,124, 99,198,205,230,169,133, 49, 89,179,144,149,243, 19,227,
+ 34,205,135,247, 17, 59,123, 42,114,109, 94,198, 7,133, 54, 86,242,204,139,114, 70,125, 18,246,184, 33,224, 93,162, 90,148,220,
+190,189,101, 81,172,169,219, 92,112, 68,233,152, 72, 42,243, 22,188, 4,125,100,139,211,196,233, 15, 25, 66,163,180,166,170, 42,
+ 46, 46,158,243,201, 39, 91,118,143, 35,209, 39, 58, 2, 70, 85, 36, 31,208,121, 71, 28, 82,192, 69,121,103, 99, 72, 4,159,121,
+233, 70, 51, 6,185, 60, 68,209, 31, 73,201,176,247,114,217,140, 10,250, 81,138,160, 46,105,246, 41, 49,160,176,201,160,162, 33,
+ 5, 97,113, 72, 46, 71,162,170, 45,166,176,124,246,217,199,124,242,249,167,116,251, 78,124,231,209, 19,189,131, 32,171, 42,183,
+223, 66,244, 44,155, 5, 47, 63,253, 21, 39,235, 13, 69,128,135,253,150,177,235,112,105,228,254,113,203,227,227, 35,163,247,104,
+ 99,217,247, 29,219,221,158,182, 45, 89, 46, 74,202,194,210,237,247, 89,251,160,230,110, 92,214, 35,249,179, 73,242, 12,235,121,
+194, 36, 66, 61,165, 20,101, 97,133,247,159,117, 44,211,221, 39, 31,177,160,138,156,207,224,149,194,204, 83, 50,113, 83,121, 98,
+244, 25,203,157,159, 43, 37,151,158, 60,230, 41, 43,202,115, 33,153,197,181, 41, 23,163, 58, 23, 16,146, 93,158, 43,238,172, 46,
+215, 71,141, 79,140, 81, 38,110,185, 8,159,104,127, 49,175,148, 98,254,123,169,233, 92,158, 72,118,217,218,236,189,207,113,178,
+ 71,202,250,124,193, 74, 60,183,199,230,245,152,168,253, 21, 26,157, 69,132, 96,173,198, 68, 89,207,133, 28, 73,172, 77, 30,171,
+103,236,186,115, 78, 68,208,218,100, 43, 99,110, 24,146,154, 17,237, 89, 14,148, 35,137,193,110,187,158,211,182,193, 69, 79,100,
+162,115,201, 30, 77,229, 0,248,169, 10,251,249,232, 79,208,161, 86,105,162,146, 29,223,232, 28, 47, 95, 60,231,242,242, 9,111,
+223, 93, 17,141, 69, 25, 1,138,140, 62, 96,173,166, 93,174,114,186,218,100, 85, 19, 57,126, 89,149,196, 32, 21, 88, 8, 14, 63,
+142, 20, 86,207,163,253,196, 20,237,170,233,198,192,233,197, 83, 98,183,231,246,250, 74, 20,143, 6, 46, 78, 54, 92, 60,127,202,
+238,254,158, 20, 2,157,243,156,159,158,178, 57,219,160, 76,193,187, 55,223,163,162, 40, 43,149,181,114,104, 39,205,170, 93,242,
+184,221, 50, 6, 9, 39, 89, 52, 37,182, 48,216,166, 70, 23, 22, 29, 3,193,141,244,219, 45,227,232, 51,209, 72,147,130, 1, 43,
+118, 56,157, 51, 55,157,203, 35,189, 20,133,240, 53,195, 26,196, 59,169,130,236, 74,108,102,189,203,136, 57, 30,166, 30, 25, 90,
+ 80, 87, 5,182,180, 2,243,241,249,176,153, 38, 8,249, 67, 70, 43,108, 93, 82, 54,117, 46, 28, 76, 70, 60,202,159, 35, 73,145,
+165,180, 4, 57,180,207,214, 40, 21,217,108, 78,248,226, 87, 95,113,183,187,231,246,237, 3, 87,101,195,144, 28, 15,157,167,119,
+142,239,127,248, 29,231, 27,205,197,201, 9,227,222,241,246,213, 45, 55,127,191,134, 2,218,179,154,197,186,230,251, 63,127,199,
+208, 7,206, 47,159, 16,180, 37, 41,205,105,219,210, 2,239,110,238,120,253,112, 79, 63,194,249,233, 9,235, 69, 65, 28, 29,183,
+143, 59,153,198, 40,133,243,158,168,103,123, 54, 6, 77, 32, 96,155, 10, 83, 90, 98,242,184,177, 99,219,239,228, 96, 72,134, 66,
+ 37, 10, 27,105, 43,185, 24, 5,124,169,112, 70,225, 80, 12, 78,147,148,197, 41,203,118, 76, 12, 65, 99,138,138,228, 29,159,125,
+242,146, 95,127,245, 25,109, 83,226,130,102,140, 62,139, 24,167,113,176, 39, 5,135,138,129,232,243, 75,159,156,116, 31, 33,176,
+125,220,179, 89,149, 44,235, 6,255,224,184,127,220,225, 93,194,212, 5, 12,129,148,198, 57,129,205,102,136,140,132,143,232,185,
+ 79,179,202, 30,172, 53,250,224, 32,137, 58, 91,143,244,113, 8,105,154, 15,148, 56, 41,226, 39,254, 52,122,238,222,167,229,161,
+158,125,233,204,118,159,140,181,226, 8, 0, 54,223,194, 9,255,179,112,152,233,176, 56,116, 68,217,171,159, 14,193, 47, 41, 31,
+134, 51, 48, 35, 31,148,115, 17,192,241, 5,192, 60,222,156,186,247,137,156, 23,227,225,123,147, 51,201,103, 83,123, 58,116, 99,
+218, 28, 14,211,164,213, 65,127,128,116, 43,166,176,164,232, 73,126, 96,247,248, 72,215, 57,234,186, 96,217,212,140,143, 35,238,
+177, 67,157,122,148,150, 16, 18, 66,144, 56,210,113,144,131,177,174, 50,188, 35,231,201,198, 72,178, 66,255, 75, 49, 10, 44,168,
+169,249,240,163, 15,233,251, 1,247,167,191, 16,211, 32,156,124, 20, 10, 79, 80,137, 24, 13,189, 79,104,157, 50,196, 72, 81, 89,
+249, 57,199,201,215, 13,248,172, 61, 24, 66,196,197,196, 46, 88,122, 39, 11,224,104, 4,203,156,180, 98, 12,129, 48,200,222,223,
+ 37,249,207,154,178,164,174, 43, 94,126,244,156,175,190,252,130,228,246,140,206, 65, 4,239, 70, 8, 14, 63,220,209, 22, 37, 95,
+124,246,169,172, 39,218, 10, 84,129, 27, 2, 59,215,113,255,240,192,227,195,142,253,184,103, 28, 3,251,126, 96,177,168,217,156,
+110,184,190,189, 99,191,223,163, 84,192,141,157, 40,203,173, 17, 61,195, 17,248,103,122,238, 98, 18,245,191,228, 6,228,115, 44,
+ 72,222,187,201, 57, 12,211,240,122, 70, 27, 76,207,173, 22,129, 93,138,136,235,202, 88, 66,210,196, 40,132, 76,151,209,227, 33,
+201, 68, 32,101,214,130,140, 66, 50, 12, 38,239,150,195,116, 49,107, 69,200, 73,112,147, 56, 84,234,217,124,209, 78,185, 16, 57,
+177, 48,205, 84,196,148, 19,227,242,127,231, 36, 60,108,178,141,198, 12, 4,155, 92, 32, 50,186,159,144, 68, 63,207, 47,152, 44,
+165,193, 74,131,155,156, 71, 87, 85, 78,138, 75,226,112, 81, 25,184,228,115,145,100,165,208, 8, 94,231, 59, 87,190, 86,136, 14,
+165, 42,249,157,166,148,243, 49, 2,170,208,179,202, 63,197,120, 72, 92,204, 62,123,171, 20,214,143, 35,122,185,204, 54, 24, 40,
+140,158,211,152, 80,154,160, 36,223,247,120, 57, 55, 85, 43,179,202,208, 72,212,221,190,235,248,229,139, 47, 88, 47, 23,252,233,
+155,239, 41,180, 97, 28, 3,253, 16,216,246, 29, 23,231,167, 84,149,165,235, 70,188, 27,209,209, 79,184, 30,148, 81,184, 16, 37,
+125,205, 59,156,119, 88, 83,230,209,168,140,160,108, 33,202,247,213,102, 67, 89,215,220, 92,189,101,232, 59, 72,134,209,119, 60,
+249,242,115,108, 81,240,250,250,154,211,205,154, 48,142,156,189,120,193,230,226, 41,221,190,231,245,143, 63,101,124,171, 88,166,
+186, 97, 96,185, 88,128, 81,244,253,136, 11,145,101,145,177,173,198,228,240, 16,169,138,134,174,103,124,120, 20,183,109,238, 24,
+198,201,158,128, 70,233,192, 56,142, 50, 54, 74,210, 53, 42,201,178,156,109, 70,211,174,184, 40,138,217,142, 20, 67,200, 59,206,
+ 12,251,183, 96, 10, 77,189,172,179,125,199,207,230,222,233,130, 48,211, 65,172, 53,101, 83,203, 37,146,212, 1, 10,148,101, 40,
+198,104,154,166,198,249,128, 31, 53,109,219,178,222,172, 88, 45,107,182, 15,119,116,219,158,243, 39,167, 44, 86, 13,125,223,243,
+238,237, 21,187,221, 14, 23, 91, 82,125,194,237,245,150,239,255,240,103,252, 24, 41,219,154, 85,219, 80,151,150,119,223,189,198,
+123,205,229,139,103, 12, 57,175,232,188, 89,176, 46, 74, 94,189,123,203,235,187, 45, 33, 40, 46, 54, 45,203,170, 68,135,196, 67,
+ 55, 16,189, 39, 42,133,143, 89, 28,149, 4,198,163,180,149, 42, 84,107,170,186,145,228,228, 48,242,176,223,210,123,153,120, 24,
+ 20,133,137, 44,171,136,181, 98,232,112, 33, 17,117,201,232, 13, 99,132, 81, 27, 34, 5,189,215,184,232, 40,139,136, 1, 46, 63,
+121,201, 87, 95,253,130, 77, 93, 51, 56,135,142, 35, 38, 6, 98,180, 36,111,179, 45, 44, 71, 75, 6,143,139, 41, 59,183,164,232,
+236,134,158,166,136,124,245,233, 39, 92, 61,222, 97,135, 17,147, 12, 78, 91, 74, 83,225,138,152,201,136,114, 56,160,204,220, 97,
+155, 44,252, 19,160,108,200, 86, 27, 17,204,201,100, 64, 32, 8,138, 44, 0, 59,222,128, 79, 99,232, 35, 94,187, 60, 39,241, 72,
+113, 35,239, 45, 70, 68, 62, 81, 29, 70,225,105,162,219,229, 88,203, 73,140, 71, 18,100,110,242,135,175, 55, 5,145,164,163, 65,
+177, 62, 90,133,169,204,130,159,167, 9,179, 15, 93,253, 39,194,157,250,121, 80,203, 20, 58,147, 59,149,185, 49,152, 44,114,147,
+ 94, 96,130,115,166,233,107,134, 60,118, 21, 81,233,212, 29, 42,209,178, 97,173, 20,210, 41, 69,252,184,167,239, 71,182, 59,207,
+201,162,161,110, 74,134, 49,178,221, 62,114,190,123, 68,117, 11,148, 45,241,195, 32,150, 93, 65,105, 98, 39, 85,117, 2, 51,113,
+238,195,132,253,140,121, 60,175, 41,202,154, 47,191,248, 8, 21, 3,127,250,250,123,222,187,187,153,112, 89,228,108,237,164, 19,
+ 46, 65, 67,162, 44, 21,198, 70,124,210,185, 40, 74,160, 45, 46,106, 92, 2, 31,149,248,214,141,172, 56,189, 87,217,161, 96, 72,
+ 14,185,212, 93, 0, 35, 12,143,166, 17, 24,206, 7,207,159,241,233, 39, 47, 40,213, 3,219,253, 72, 26, 19, 62, 70, 58,183,231,
+163, 39, 23,172, 87, 95,176,222, 44, 89, 44,214,140,126,100,191,219,178,219, 63,208,237,132, 22, 57,142, 3,247, 15,123,246, 99,
+143, 81, 5,103,231,167,156,157,175,121,124,216, 73,160,203,178,149,252,238,164, 41,109, 1, 70, 84,225, 40,127,152,188,228,137,
+147,156, 89, 49, 11, 38,229,179,142, 49,227,182, 76, 94,115, 28, 34, 88,230,180, 74,201, 25, 80,132,228, 80, 70, 75,212,178, 58,
+224,100, 33,101, 93, 82,132, 56,138,109,142, 60, 25, 80,162,141,209, 40, 74, 35,118, 82,151, 3,190, 38,191,246,196,227, 78,121,
+165,147,142, 88, 12,218,154, 89, 4, 62,137, 58, 85, 46,150,205,244,243,133,108,160, 79, 30, 21,195, 28,152, 18, 73,164, 41, 49,
+ 48,133,153,253,160,142,154, 49,157,215,105,222,201,132, 5,157,115, 31, 38, 93, 88,126, 27,101, 76, 21, 68,148, 25,181, 36,178,
+153, 56,103, 52, 4, 37,171,158,178, 20, 66,171,115, 35,133, 45,232,195, 40,244,188,200, 92,148,164,152, 40,172,205, 3, 46,153,
+ 10, 88,131, 68,126, 74, 98,143,166,208, 38,227,252,228, 31, 42,181, 33, 6, 47, 23,119, 74,194,255,213, 54,199, 46,200, 97,162,
+149,100, 26,147,224,195,203,151,116,221, 72,183, 27, 40, 23, 53,251,174,199, 57,199,126,191,227,147,179,167,121,212, 16,242, 14,
+193,230, 49, 97, 14,150,200,135,125,244, 97,174,248, 39,248,140,112,110, 69,124,100,219,138,126,251,136, 95, 84,244,227,128, 15,
+142,122,209,242,201,231,159,240,246,213,155,156,157, 43,162,180,243, 39,103,148,117,205,143,223,126,203,254,110, 75, 81,201, 46,
+102,159,211,143,218,186,166,239,122,188,115, 84,218,208,212, 21,218, 26,202,178,194,218, 66, 46, 24,239,185,185,121,100,169,242,
+ 33,119, 4, 29,208,153, 75, 29,134, 72,223,117,164, 32, 52,180,114,126,144,197,242,167,243,248,184,177, 6, 83, 8, 73, 40, 56,
+151, 17,178, 41,235, 21,132, 19, 94, 55, 5,109, 91, 17,242,195, 45,227, 60,241,182,171, 24, 37,147, 28, 69, 81, 85,148, 77, 35,
+227, 67, 83, 28,216,192, 28, 42, 84,171, 13,195, 56, 82,150,137,245,102,193, 98,181, 0,173,216,109,111,185,190,186, 33, 4,205,
+122,179,225,139, 95,252, 2,245,155,200,191,252,219,111,121,255,211, 59,118,175,223,179,125,253, 30,109,107,150,139,146,170, 44,
+168,140, 97,123,223, 19, 82,193,234,233,154, 46, 70,124,128,203,167,167,108,154,138,239,126,248,137,159,174,239,105,235,146,197,
+162,102, 81, 22,104,149,232,247,123,252, 32, 60,106,175,100,210,145,178,218,127, 74,107,138, 49,202,186, 65, 37, 66, 72,236,187,
+145,253,110,148, 75, 71,201, 88,138,162, 36, 88,131, 43, 34, 41,106,198, 24,197,226,145, 44,126,178,146, 97,177, 10,150,133,161,
+ 52,112,118,126,202, 39,159,127,132, 49, 37, 93,223,227,189,203, 69, 82, 68,199, 81,210,219,178,162, 58,196, 4, 73, 46,252, 20,
+109, 6,204, 68,174,223,188,229,127,249,205,103,252,227, 63,255, 51,255,242,219,127,101, 55, 36,138,197, 90, 46,156, 2, 18,150,
+ 20, 68,133,157,166, 61,122,202, 32,149, 25, 46,147, 57,239, 71,104,212,164,244, 1,190,146, 59,134, 57,128,229,200, 64,145,226,
+164, 94,211,115, 71, 57, 29, 96, 83, 23,160,163,196,183,106,100,135, 23, 0, 21,163,104, 98,142,157,110,211, 33,169, 14, 89,236,
+ 90,107,252, 44, 12, 58, 62,140,227,156,107,158,244, 97,213, 62, 9,165,226, 84,252,115,240,193, 79, 1, 20, 90, 31, 37,195, 41,
+241,176,169, 16,231, 29,251, 20, 70, 49,255, 61, 84, 58,242,204,171,156, 65, 33,246,198, 9, 30,162,146, 76, 18, 81,134, 34, 23,
+ 49, 41, 4, 66, 24, 51,120,197,177, 44, 91, 78, 78,106,126,120,235,184,126,120,224,242,254,129,234,116,201,144,223, 52,109, 11,
+ 57, 4, 13,196, 40,207,151, 10,204,207, 79,210,154,232, 21, 16,112,120, 76, 84, 88, 6,138, 74,243,171, 47, 63,161,108, 42,254,
+248,199,191,241,238,237, 13, 67, 47, 74,111, 10,131, 85, 30, 98,164,211,154, 24, 53,102,128,136,155,113,184, 54, 70, 98, 42,136,
+ 81,227,147, 20, 56,202, 38, 10, 52, 4, 77,159, 20, 67,148,210,175,200, 34, 48,171, 21,109, 93,115,182,174,249,224,242,132,139,
+139,150, 56,220,176,115, 29, 97, 52,212, 85,129,169, 12,159,125,252, 57,159,125,244, 57,202,104,182,187, 29,125, 63, 16,188,227,
+238,250,129,219,237, 13,209, 39,220,232,112,126,164, 31, 7, 30,119, 3,171,214,210,214, 5,103, 39,107,252, 56,242,112, 51, 96,
+ 10,176,149,166,169,234, 28,156, 19, 51,235, 64,203,153, 51, 13,114,210, 65, 79,145,147, 76,242,228, 53,205, 36, 82,165,213,236,
+232,153,131,132,146,153,247,242, 49, 32,211, 74,131, 88,193, 98,152, 47,169,148,197,123,113, 26,213,207, 1, 46,242, 3,152,162,
+ 64,217, 66,246,222, 33, 96,109,145,185, 13, 65, 58, 98,125,224, 56, 76, 43,131,105, 85, 57,243,219, 99,204, 96, 30,147,197,123,
+ 54,163,109,165,137, 20, 20,192, 52,133,146,172,120,109, 68, 27, 18,189,188,191, 62,132,185, 89, 83, 74, 76, 82, 74, 11,183, 96,
+ 42, 82,230,125,183,210, 96,210,236,144, 73, 72,242,164,137,226,138, 49, 38, 39,123,106, 59, 91,232, 66, 56,250,189, 26,177,204,
+153,217, 20,159,230, 9,220,180, 38,156,104,115,214,230,212, 40,239, 2,166, 48,217,167,151,178,173, 74,186,140,120,228,155,139,
+121,158,162, 76, 86,238,102,200,134, 15,158,170, 50,124,252,225, 75,174,238,110,228,161,213,134,113, 16, 59,155, 78,134,205,233,
+138, 16, 68,244, 69,148, 93, 74,231, 28,198,218,124, 81, 6,116, 82,120,231,242, 88, 62, 7, 8,228, 78,160, 40, 10,154,118,193,
+118,216,211, 56,135, 29, 43,134,126,192,167,192,211,103, 23,216,178,225,250,234, 91, 78, 87, 75,250,113,100,181, 58,225,233,203,
+231,140,187,129,119, 63,190,206,162,126, 57,153,134,113,164,104, 27,116,165,233,110,247,164, 8,117, 85, 9,122,212, 24,138,170,
+202, 12,106,216,110,119,220, 60,222,178, 90, 84, 68, 47,151, 78, 80,138, 98,217, 10, 96,196,192, 56, 12, 56, 47, 86,141,144,226,
+ 33, 70,149, 56,199,103, 74, 30,119, 62,224,144, 10,204, 26,157, 71,163,242,240, 77, 44,235,144, 28, 33,168,220,181,136, 90, 62,
+ 17,177, 90, 81, 24,177, 53,149,117, 41, 88,198, 73,233,156,209,141, 38,123, 53,147,210,162, 19,240,176, 94,159,208, 52,181, 28,
+210, 58,161, 2, 20, 70,176,165,133,213,148,149,230,244,244, 25,191, 30, 28,255,250,238,255,226,111,175,223, 16, 98,164, 89,174,
+178, 19,192,176, 31, 6, 60,176, 56, 93,227,131, 38,244,158, 15, 94, 62,227, 98,189,226, 47,127,251,142,119,119,247,156,175, 22,
+226, 69, 54, 26, 83, 64,232, 71,134,177, 99, 12,145,152, 71, 99,122, 82,168, 30,197,217, 90,107, 49, 85,133, 87, 10, 23, 2,219,
+110, 36, 96, 81, 58,100, 79,183, 33, 40,232,148, 21,151,168, 86,164, 34, 99,131,149,161, 52,134, 66,103,146,154, 82, 20,170,100,
+189,106,185, 56, 59, 65,141, 29,125,144,209,191,247, 97,238, 56, 85,146, 16,162, 24, 10, 92, 84, 4, 36,183, 32,132, 36, 43,160,
+ 20,184,122,119,203,105,163,216, 84,240,205, 31,127,143, 86,154,151, 31,188,164,108,151, 88,228, 80, 47,138,146, 20, 28,209, 79,
+221, 93,230, 63,103, 26,154, 50,114, 48, 38, 45,217, 9,178,203,254,185, 8,135, 28, 23, 59,121,106,167,253,180, 34,231,204, 39,
+153, 78,160,192, 28, 17,139, 38,188,107,154, 5,150, 86, 46, 67, 45, 69,226, 36,218,137,185, 35,229,120, 28,170,212, 12, 84,210,
+121, 71, 31,242, 69, 31,166,206, 53,239,210,211,244,187,157, 68,240,147,128, 46, 15, 34,211, 17, 90, 79,229,110,251, 0,150,209,
+217,239, 46,127, 23,163, 52, 97,222,159,103,172,108, 74,243,104, 82, 58, 41, 57, 68,201, 22, 52,163,138,217, 21, 50, 57, 11, 20,
+ 9,162,199,187,142,126, 24,197,206,105, 19,155,133, 69, 61,171,249,238,213, 13, 63,222, 93,115,242, 86, 83, 84, 53,182, 44, 49,
+101,160, 40, 53, 38,149,224,178, 97, 62,201,187, 32,251, 99, 13,222, 19, 85,144,149, 95, 10,164,216, 99, 16, 95,251, 71,207,150,
+ 44,171,143,121,243,246,148,199,237, 35,143,119, 91,246,189, 35, 69,199,162,170,242,239, 90, 81,151, 50,141, 49, 74,158, 79,107,
+ 45,125, 26, 24, 59, 71, 72, 1,178,243, 39, 26,197,216,141,168,221,158, 82, 71,170,210,230,241, 53,180,139,130,243,197,154,245,
+186,101,185,168,208,193,131,174,120,126,121,201,201,233, 57,171,118, 65, 76, 35, 94, 9,168,201, 19, 73,222,115,115,115,195,221,
+195, 61,183,239,239,121,244, 59,116,210, 24,165,217, 15,123,170,166,230,163,243, 13, 42,137, 96,238,167, 31,127,162,208,145,243,
+211,154, 16, 34,166, 44, 81, 70,225,131,156, 17, 42,133,108,191, 61, 60,115, 17, 17, 47,155, 92,192, 29, 70,243,211,144, 61,127,
+180,241,103,149, 41,200, 50, 87,158,173, 40,103,217,212,237, 79,117,164,120,235,167, 21, 38, 57, 86,152, 44,176,148,207,199, 22,
+242,204,198, 16, 15, 12,116, 45, 9,118,122,202, 22,208, 83,156,175,153, 39,203,198,216,159, 17, 22, 83,222, 81,147,139, 86, 50,
+162, 59, 77,209,204,153,155, 16,145,203,178, 44, 44,123,142, 62,207, 49, 39,188, 25,157,195,150, 14, 86, 77,113,110, 29,176,230,
+ 19,195, 64,233, 52,167,218,153,194,162,181, 63,128,168,194,228,199,215, 68, 21,113, 97, 42,170,196,209, 50,120,143,177,249,157,
+ 82, 38,179, 49,244,156,124, 39, 57,159, 9, 91,148,242, 34,185,209,209,214,181,252,210,179,135,207,228,110,111,154,189, 31,198,
+242,147, 17, 63,205, 54,157,209,121,190,248,226, 83, 86,155, 53,223,189,250, 81, 42,136, 28, 4,224,189,151,104,196,182,193, 57,
+ 63,255,165,165, 96, 8,114,200,207,162, 57, 25, 99,171,169,155,139, 83, 82, 89,164,106, 26,130, 15,220,223, 92,115,118,113,202,
+216, 15,184,193,211,212, 37, 79,158, 62,225,230,234,138,190,235, 89, 94, 62,231,246,234,154, 95,252,250, 75, 86,103, 27,190,254,
+215, 63,112,251,254, 26,211, 88,130,146,170, 85, 43, 77,221,212,196, 81, 56,195, 66,120,147, 0, 13, 91, 20,152,194, 80,150, 5,
+119,143, 91,174,239,174, 81, 90, 30,228,193, 7,124, 72,148, 77, 77, 52,242,178,196,152, 24, 71, 71,138, 9, 63, 29,110, 70, 75,
+167, 52, 65, 76,148, 84,166, 70,201, 72, 94,133,233,179,205, 89,209, 57, 4,160,176, 2,213,144, 10, 77,207,221,155, 54, 26, 21,
+ 19,182, 20,180,160,173, 43,138,186, 58, 88, 77, 72,243,131, 51, 29,164,193,123, 92, 63, 80,149, 53,205, 98,113,192,145, 34, 99,
+157,213,114, 67, 83,181, 56, 21,121,184,189,103,119,183,227, 79,255,207,111,249,238,119, 95, 83,149, 21,205,122, 37, 98,173, 16,
+ 24,250, 1,128,118,181, 17, 43, 90, 55,240,201, 7, 47,249,224,197,115,126,255,135, 63,240,234,221, 21, 79, 78,207,114,146, 91,
+160, 41, 42,188,247, 12, 67,207, 56,122,249,123,170,248,179,172,112, 9,130,144,209,111,217, 54,232,194,128, 22,145,163,104, 23,
+100, 15,169,162, 71,197,188, 83,114, 96,130, 40,255,163, 18,175,120,102, 32, 97,173, 66,171, 64, 85, 89, 42,107,105, 74,120,184,
+189,193, 35,185,196, 49, 39,224,201, 69, 22, 80, 99,196, 17,217,251,146, 65,149, 36, 83,160,146,240, 9,220,208,115,117,117,205,
+221,253, 61, 31,126,120,193,221,195, 3,129,123, 76,115,194, 87,255,248, 37,206, 5,222,191,251, 9, 21, 35,182,172, 9,182, 64,
+ 17,231,144, 18,109,242,193, 50,237,185, 85, 58,140,234,166, 53,114, 86,242, 79,148, 55,149,195,100, 36,194, 81, 29,226,134,173,
+154,169,138,233,200,250, 53,189,151, 90, 9, 78,117, 66, 54,235,255,228, 9, 15,242,139, 62,194, 22, 30, 18,212, 38, 17,220,196,
+166,159, 70,253,234, 64,173,153,149,227,233,168,192, 62,138, 29, 20, 17, 84,174,102,212,145,130,127,154, 44,204,255,137, 81,243,
+ 97,125, 88, 37,168, 67,241,144, 69, 74,202, 48, 63, 27,154, 41,161, 46, 78, 63,108,238,192,164,120,141, 74, 96, 37, 49,229,113,
+181, 53,244,221,192,197,122,141,243,240,246,250,150,119,251,123, 22,203, 53, 79,159,191, 96,185, 81, 24,151, 72,110,151,255, 62,
+ 10, 31, 35,133,130,132,100,110,235,232,112,201, 17,149, 65, 25, 48,110, 47, 59,102,101,169,234,146,139,243, 11,158, 63,253, 0,
+ 91,150,120, 23,233,186,142,110,223,163,109, 73, 83, 20, 50,233, 43, 12, 36, 73, 73,139, 41, 81, 20, 6, 23,101, 95,235,163, 80,
+ 50,227,152,232,198, 14,231, 70,130,243,121,138, 33, 66, 77,107, 12,117,101,105,139, 34,211, 21, 45,182, 90,176,168, 87,172,214,
+ 27,108, 81, 18, 99,228,254,238,142,183, 55, 55,196,116,205,190, 31,184,126,255,158,237,246,145,136,160,116,123,231,233,251,129,
+213, 98,193,229, 7, 47, 88, 45, 10, 22,117,201,237,205, 21, 87,215, 29, 87, 87, 59,158,158,213, 60, 57,223, 16,177,184, 0, 46,
+ 56,148,242,121,146, 98,114, 72,203,225,252, 63,214, 88, 28,132,233,234,103,132,194, 89,124,150,142, 69,148,210,241, 78,121, 31,
+114, 89,203, 94, 92,101,168,145,192, 87, 4, 15, 78, 58,218,250,170, 52,135,141, 21, 86, 58,126,161,173, 77,137,161, 82, 94,154,
+156,106, 56, 9,214, 38,239,153,209, 42, 55, 80,105,102, 45,168,120, 8, 8, 51,121,106,230, 50,148, 72, 27,137, 34,158, 56,245,
+ 74, 39,138,170,248, 89,247,157, 66,152,223, 95,149,223,249,152, 18,209,167, 76, 43, 84, 98, 65,155, 35,203,213,220, 76,144,153,
+ 12, 58,163,143,149,150,160,176, 73,127,147, 68,193,203, 56, 12,244,222, 97,138, 2,239, 60,177,178,135,201, 64, 18, 90,105,140,
+ 50, 73, 33, 6,137,155,181, 90,146,142, 30,199,142,147,213,114, 62, 14,130, 23,143,170, 54,134, 99, 63,129, 66, 97,242,129, 16,
+115, 85,164,163,198,185,200,229,139, 75, 76,105,185,186,190,163, 40, 75,124,240,132,232, 25,134,129,186,174,104,154, 5, 49,202,
+ 72,121, 63,116,108,218, 86, 42, 19,157, 73, 56, 90, 60,195,222, 11,165, 41, 29, 37, 64,151,182,162,105, 27,110,174,111,164,195,
+ 42, 45,247,183, 91,162,242,156, 92,156,178,104, 27,110,174,175, 41,219,101, 78,200, 9, 92, 92, 62, 33, 58,205,171,191,127,143,
+ 11, 1,107, 42,188,119, 12, 93,207,162, 89, 98, 75,131,219, 14, 16, 99, 22,108,200,136,198, 86,245, 28,200,113,123,123,207,246,
+ 97, 71,133, 37,196,196, 16, 60, 74,105,138,178,146, 60, 99,196,215,153,178,234, 53,102,117,187, 28, 64,121, 52,121, 44, 30,202,
+ 59, 40,149, 61,141,113, 62, 84, 19, 90, 89,202, 82,192, 18,126,148,209, 47,128,177,226, 72, 48, 40, 10,107,133,178, 85, 23,115,
+133, 56,127, 54,250, 32,154, 34, 38,198,125,159,197,137, 13,153,136, 32, 59,165, 32,149,114, 81,214, 4, 21, 24,135,145, 34,105,
+126,255,219,127,231,223,255,199,255, 77,219,174, 56,185,188, 32,185,128, 27, 71,156, 15, 84,198, 82,175, 86,244, 67,164,223,237,
+248,244,229, 7,124,244,209, 11,126,247,187, 63,241,221,171,183,124,244,252, 57,126, 28, 25,156, 99,125,182,128, 49,225,123,199,
+190, 31,101, 68,153, 69, 28,147,232, 73, 42,244,172, 6,175, 45,245,106,129,109, 42,130,115, 24, 20,139, 69,133,215, 80,214, 37,
+139, 69, 67, 89, 21, 50,233, 40, 52,198,138, 24,205, 88,129, 55, 20,214, 82, 22, 22,107, 36,141,173, 46, 75,202,186,162,212,137,
+ 48, 70, 58, 63,144,188, 32, 51,135,190,163,239,247, 4, 63, 48, 14, 29, 93,215,177, 27, 70, 30,247,123, 30,134, 68, 28, 35,117,
+ 93, 80,150,134,167,167,167,188, 88, 47,241,225,142,183, 15, 59,234,122,205,217,121,195,203,143, 63,230,187,111,191, 97,177, 89,
+ 96, 75,139,177,133,124, 70,136,123, 67, 46,117,185,104,167,209, 91, 2, 73, 75,155,195, 27,117,238,228,142, 20,239, 90,147,162,
+154,237, 98,211,255, 24,155,119,240, 41, 29,221,167, 33,119,239, 89,129,156,157, 4,106,138,134,140, 82, 8, 6, 4,228,164, 98,
+ 62,129,245,148, 3,159, 59,247, 24,228,157, 12, 65,216,159, 81,212,218, 58,102,187,215,228, 73,143,146, 73,144,142, 45, 62, 42,
+230,110,233,144,220,165, 81,115,129, 49,195,155,142, 89,239,217, 54,164,227,193,199,126, 60, 98,213,202, 28, 77, 5,227,193,154,
+167,243,126, 61,127, 33,147,117, 56, 17, 73, 16, 36,122,180, 74,212,182, 64, 37,195,245,237, 3,203,114,193,233, 47, 63,231,233,
+229, 37,167,151, 47,105,154,138,251,135,183,236,238,110, 24,186, 45,168, 64, 85, 84,252,127,108,189,235,179, 37,201,117,221,183,
+246,206,204,170, 58,207,251,236,238,153,233,121, 96, 64,144, 32, 33,145,180, 76, 6, 25, 10, 57,172,112,248,147, 62,234,111, 85,
+132, 45,217,162, 40,134,105, 26, 10,210, 0, 72, 10, 32, 8, 2,152,193, 60,187,167, 31,247,117, 94, 85,149,153,219, 31,246,206,
+172,186, 67, 51, 98,130,131,158,190,221,247,158,115, 42,115, 63,214,250,173,166, 91,160,233, 58,132,118,161, 65, 28,206, 68, 76,
+174, 85, 56,201,204,107,175,204,152,128, 96,243,214,148,129, 52, 14, 24,198, 81, 39,154,146, 38, 84,105,214,192, 13, 10,108, 19,
+ 21,213,145,164,156, 85, 52,149,116, 84,220,114, 0, 40, 33, 83, 66, 28, 70, 36,137,112,228,192, 96, 68, 17,117,226, 56,135, 40,
+192,254,254, 22, 55, 95,126,137,126, 24,209, 44, 91,220,188,189,195, 63,252,252, 19,128, 51,156,107,144,179, 78, 65,137, 3, 22,
+139, 6,219,139,181,242, 4, 82, 66,219, 16, 48, 30,112, 28,239,177,110, 5,249,188, 5,179, 67,211,181,112,109,167,188,140,195,
+160, 62,115,209, 76,118, 29, 13,107,102,248,124, 61, 52, 97,133, 81,247,214,147,143,155,173,248,178,124, 6,211, 23, 57, 70, 37,
+176, 5,207, 24, 37, 35, 15,170, 99, 80, 32,144, 50, 34, 84,103, 36, 53,122, 23,134,230, 5, 43,105, 50,120,133, 36,197,148,224,
+157,183,213, 85,170,155,235,199,207,156, 93,194, 54,105,170,141,169,216,216, 29,170, 35,115, 68, 24,205, 99,159, 37,215,221,125,
+153, 68, 21,178, 97, 74,130, 16,172, 35,143,169,214,201,197,178,154,114, 70,206, 92,167, 10, 4, 85,223,107,148,185,190,167,132,
+108, 9,119, 70,100, 45,188,137,172,213,172, 99, 54, 81,101,198,221,126,143, 62,141,104,187, 78,117, 22,147,157, 30,196, 48,254,
+190, 78, 4,117,151, 33,240,141, 11,136, 41, 98, 72,163,101,225, 90,166, 50,212, 70,196,102,227, 41,115,253,242, 80,123,103, 34,
+ 0, 19, 29,132,224,112,253,244, 9,250,126, 64,127, 26,177,108,181, 83, 27,163,230,177, 95, 95, 92,162, 9, 14,251,211, 9, 49,
+ 70, 80, 18, 52, 78,179,129, 57,120,181,136, 56,143,190, 79, 40, 81, 90, 98,124,233,156, 52, 49, 40,197,136,227, 97,135,245,122,
+141,148,128,225, 52,160,107,150, 88,175, 86,232, 79, 39, 28, 31, 30,112,246,236, 41,134, 97,192,229,147,103,120,239,249, 7,120,
+243,197,215,184,125,245, 10,205,226, 12, 0,208, 31, 78, 96, 31,208, 45, 23, 24,226,128,126,236,181, 59,183,139,208,123,143,208,
+ 54,112,222,227,176,219, 99,255,112, 15, 98,143, 60, 70,236,135, 17, 99, 4,124,171,150,183, 20, 5,227,216, 27, 50, 49,171,168,
+205, 96, 34,190, 12,223, 75, 46, 98, 90,249, 0, 0, 32, 0, 73, 68, 65, 84, 7,194, 89, 1, 4, 57, 34,103,135,204, 94,119,110,
+ 5, 70,195,250,240,251,224,181,138, 23, 13, 80,209,209,151, 83,132,165, 49,132, 93,104, 13, 75, 57,133, 38,148, 61,108,217,105,
+ 14,125, 15, 34, 77, 34, 35,239,117,180,196,198,108,206, 4, 70, 80,118,192,144, 17,156,195,127,255,241, 79,240,211,255,246, 99,
+ 60,125,231, 57,174,222,185,198,253,221,141,238,193, 79,163, 38, 87,181, 43,236, 78, 39,156, 14, 7,252,238,243, 15,240,252,249,
+115,252,232,167,191,192,139,151, 95,224,227,231, 79,208,159, 70, 28,251, 19, 46, 46, 54, 64, 76, 56,246, 25,195,177, 87, 0,131,
+163,170,148,134, 5,133, 72, 9, 61, 32, 66,123,118,134,197,102,139, 76,140,227,105, 4, 66,135, 69,187, 64,179,110,112,117,113,
+ 6, 31, 58,112,201,189, 22, 61, 44,154,166, 65,211, 54,104,219,128, 54,232,255,111,218,128,118,217, 96,201, 11,120, 86, 91,102,
+202, 26, 9,155,179, 64, 28, 97, 56, 28,180, 43,146,136,152, 6,228,116,194,119,143, 39,156,246, 35, 94,237, 78,184,217,157,240,
+229,171, 29,190,121,245, 22,183, 56,226,157,115,143,101,179, 64, 20,194,237, 97,135, 77,138,248,199,159,255,147,162,102,207, 47,
+208,180, 11,136,141,207, 20, 3,171,227,118,112, 65, 67,186,234,241,213, 93,187, 14, 40,139, 40, 77,102,201,105, 68,106,231,212,
+ 93, 94,174, 22,153,185, 26, 93,178, 93,228, 66, 53,115,129,172, 19,170,187, 71, 19,220,144, 1, 63, 52, 40,104,250, 61,112,140,
+156,168,254,253,146,181,252, 76,150, 88,165,241,142, 83,148,100, 1,205,148,219, 89, 5,110,169, 70,184, 78,235, 2, 45, 96,203,
+222,176,192,169,138, 39, 93, 80,198,166, 26, 40,172,190,218,100, 99,214, 50,165, 85,209,160,198,103, 90, 90,153,203,181,104,157,
+102, 0, 25, 36,138,178, 37,187,128,251,126,167, 5, 73,183,194,119, 62,248, 61,124,252,193,119,176,106,214,232,253,136,219,155,
+175,113,255,246, 5, 98,218,225,108,123,141,230,157,239, 97,185, 88,195,119, 43,184,110,133,166,237,128, 16,244,243, 90,196,176,
+ 16, 72, 26, 85, 20,137, 1,201, 18, 43,239,222,188,198,235, 87,223, 32,132,128,245,114,137,182,245, 72, 57, 34, 14, 35,118,187,
+ 3, 78,195,128,224, 24, 77,112,112,206,226, 81,225,116,237, 40,130,197,178,209, 20,177,164,211,139, 33,247,106,161, 34, 53,102,
+171,216, 86, 87,150,167,211, 9,199,227, 9, 34, 25,139,110,133,187,211, 3, 62,251,236, 51,228,156,177, 92,175,113,117,113,133,
+203,235, 13, 30,238,143,104, 26,194,229,217, 19, 4, 31, 48,230,136,205,118, 1,113, 71,112,140,184,121,123,131,227,237, 11,172,
+175,182,104, 90, 15,207, 1,205,194,225,252,124,186,184,227, 48, 42,172,216,200,111,236, 4,228,179,173, 69,230,185, 1, 12, 34,
+ 93, 33, 84,180,112,161,254, 49, 43,169, 15,147, 69, 77, 3,142, 48,107, 96, 74,158, 70,129, 19,161,238,144, 85, 0, 54, 57, 68,
+136,203, 36, 83,159,163, 80, 0, 45,182,254, 33,159, 43,204, 69, 87,238, 82, 57, 7,201,216,254,222,121,184,144, 43,103, 29, 89,
+116,189, 98,207, 3, 59, 21, 58,202,144, 49,142, 10,178, 10,164,244,201,193, 38,138,193,121,211,125,141, 96, 94, 64, 68, 35,109,
+139,126,201, 59, 54,202,155, 64,144,234, 68,172,236,243,129, 12,162, 96,118,211, 92,159, 9, 85,238,139,121,212, 53, 0, 70,197,
+182,130,156, 35,250,254,160,246,104,231,244,153, 51, 95,126,121, 10,116,114, 18,145,147, 5,173, 41, 3,133, 49,166, 4,134, 50,
+127,139,218, 53, 91, 5, 29, 88, 45, 67, 41, 26, 28,197, 14,103,103,169, 83,176, 3, 96,115,177,193,243,119,223,197,155,215,223,
+168,119, 91,128, 97, 24, 17,163, 98, 82, 23,171,133,142, 54, 82,172,123,143, 12,179,233,176, 67, 76, 64, 96, 66,223, 31,180,215,
+200, 35, 64, 58, 98,106,130, 71,240, 13,142,135, 30,121, 20,141, 73, 61,233,104,127,115,190, 6, 64,232, 15, 61, 60,171,200, 44,
+157, 70,124,240,241,247,225, 26,143, 79,127,253,107,156, 14, 35,206, 55, 1,227, 48,226,112, 56, 97,179, 92,162,109, 29, 78,247,
+218,161, 44,156,175, 59,233,166,109,209,182, 45,152, 8,119,183, 55, 72, 49, 34, 48,225,148, 19,142, 49, 2,206,171, 53, 13, 90,
+117,199, 24,225, 89, 33, 19, 81, 84,153,174,162,142, 60, 19,254,184,122, 56,178,125,216,203,104,182, 30,104,204,104, 2,219, 27,
+155, 43, 38,147,152, 33, 73, 65, 5,206, 51,200,121, 52, 93,176, 75, 3, 54,204,214,157,103, 34, 32,136,238,247,179, 8, 22,171,
+ 21,124, 27, 42, 52,200, 59, 45, 56,250,227,128,225,176, 67,211,117,112,142,240,163,191,252, 27,252,226,239,255, 17, 31,253,246,
+199,120,246,221,143,240,250, 55,159,163,223,157,144,135,136, 16, 60,224, 61,222,158,142, 64,138,248,253, 15, 63,194,213,243,231,
+248,209, 47,127,129,155, 23, 95,227,253,235,119, 49,244, 61,134,211, 9, 23,103, 91,181,164,156, 18,198,126,192,105,140,176,173,
+150,117, 91, 52,241,202,157, 71, 20, 65,179,104,113,126,177,133,115, 30,199,195, 17,251,253, 30,137,128,213, 98,129,203,205, 18,
+109, 19,208,180, 94,133, 34, 78,199,234, 33,120, 44,151, 11, 52,173, 89, 15,201,193, 7,143,198, 82,244, 64, 25,177,216,168,224,
+144, 89, 57,229,146, 19,218,182, 65,116, 12, 68, 7,162, 0,225, 6, 66, 11,248, 69,198,242, 60,225, 3, 73,248,237, 15,119,232,
+111,215,120,115,119,131, 23,175, 31,240,112, 56, 96,177,244, 88, 54, 30,119,111,191,196,195,245, 37,186,119,159,163, 91,109,224,
+ 67,135,156, 71, 12, 54,129, 44, 66, 56,221, 83, 23, 75,155,242, 28, 28, 89,180,177,141, 10,171,165,147,117,199, 76,165, 35,209,
+132, 12, 77,177,178, 3,160,130,154,104,134, 87,173, 34, 29, 61, 76,115, 13, 88, 82,208, 6,205,152, 88, 92,104,114,170, 10, 82,
+223, 43, 39,100,155, 38, 56,210,117,134,204,243,133,138, 63, 93, 52, 8,199,153,133,168,170,243, 31,197,186, 91, 17,145, 39,166,
+132, 84,208,136,106, 39,136,241, 40, 5,171,184, 1,168,136,155,114,210, 17, 42, 57,139,106,181,159, 39, 9, 18, 39, 16,143, 16,
+239,167,196,171,226,215,111, 2,158, 60, 89,225,213,238, 1,199,225, 14,191,117,253,125,124,252,241,119, 16,105,135,111,238, 95,
+224,254,205, 27,180,155, 45,182,207,127, 7,221,250, 2, 46,180,138,248,101, 6, 56,215, 46, 17,167,193, 58,174, 17, 50, 66,133,
+ 80, 57, 33, 90, 33, 73, 25,104, 88,211, 21,151,205, 2,247,187, 7,228, 56, 98,179, 93, 35,248, 18,206, 33,150,176, 24, 17, 73,
+212, 9,145, 35, 36, 70, 28, 78, 7,220,221,238, 33, 36,232,218,128,237,102,141,245,178,173, 66, 66, 45,192, 20,194,162,208, 17,
+194, 55,183,183,248,230,229, 43,220,221,223,227,236,226, 2, 31, 62,191,192,114,177,193,205,237, 3,238,110,238, 16,188,195, 7,
+ 31,190,131,111,190,126,141,251,253, 1,187,195, 30,155, 21, 99,211, 17,104, 56, 1,164,129, 92, 87,103,103, 24,211,104,169,132,
+ 45, 28, 7,237,204,179, 0,113,196,216, 31, 33,105, 0,104, 4,187,140,192, 25, 66, 1,217,208,193, 37,249,175, 64, 87,170, 37,
+204,128, 80,152,141,225, 85, 77, 94, 56,233, 52, 67, 11,139,225, 79,201, 8,109, 98, 5,101,137,105,133,121,175,213,206,198,213,
+ 77, 77,112,172,171, 81,133,121, 41,183, 61,231,137,192,168,225, 96, 5, 76,164,206, 8,181,221,205, 4,107,236,234,247,109,198,
+ 11,213,146, 56, 69,125,167,113,180,255,158, 77,148,233,177,175,244,104,163, 67,230, 4, 71,186,230, 74,197,250, 70, 74, 89, 77,
+201, 64,105, 41,155,114, 62, 34, 4,182, 16, 52,125,129,216,214, 16, 98,103, 54,163, 60,127,122,182, 11, 39, 43,132, 13,153,219,
+ 39,200,152, 16,154, 0, 39, 90, 4, 83,178, 21, 27, 79, 46, 29, 17, 45, 44,114,202,240,193,121, 28,227,160,135, 34,171, 47, 60,
+ 37,181,103, 72,214,221,142, 50,135,211, 36, 2, 40, 70,122,219,133,199, 28,241,193,179, 15,176,217,108,240,197,139,175,181, 42,
+203,186, 87, 24, 83, 6,177,195,186,107, 17,109, 87,146, 99, 66, 19, 26,139,118, 52,152,189,229, 84,167,104,220, 69,152,159,144,
+213,138,144,213, 4, 14,202, 9, 77,211,224,212, 31,245, 0, 13, 1, 67, 28,144, 70, 29, 35, 5,246,240, 43,135, 15,191,251, 49,
+ 94,125,243, 10,159,254,211, 63,162,235, 58, 52,161,197,253,253, 61,188, 48, 66, 8,182, 7, 31, 42,224, 35,165, 17, 77,104,177,
+216,174,177, 88, 44,240,246,213, 27, 28, 31,246,117,159,152,114,134, 48,192, 77, 3,118, 30,128,211, 68, 35,110, 64,226, 52,248,
+ 70, 4,206, 62, 48,206,252,156, 41,103, 36, 35,124, 65,212,158, 35, 16,100,199, 70,183,210,172,102,176,128, 60, 89,135,132,170,
+ 65, 38, 83, 21,115, 80,143,190,111, 26,176,129,102,116,228,101, 29,161,117,233,253,169, 71,150,132,213,122,133,182, 13,112,152,
+132, 80,148, 29,142, 55, 59, 60,220,223, 99,123,125, 6,231, 90,252,228,191,254, 21,126,249,211, 95,224,119,254,213, 15,240,209,
+247, 62,198, 63,253,237, 63,224,246,245,141,198,218,182, 45, 50, 19,110, 15, 7,156,115,135,239,255,214,199,136, 97,129,159,254,
+242, 87,216,189,126,131,139,139, 51,100,137,200, 99,196,118,179,134, 16,208, 15, 3, 82, 28,209, 15, 39,100,202, 8,142, 53,205,
+140, 9,189, 36,149,209,216,196, 71, 88,112,126,125,137,205,102,141,211,208,131, 60,225,236, 98,131,243,179, 53, 46, 46,214, 88,
+110,214,240, 77, 64, 19, 2, 22, 75, 77, 8,116,236, 33,142,209, 82,163,157, 77, 81,227,218,133, 34,134, 22, 46,146, 30,201,166,
+210,173, 18,112, 19,213, 80,134, 39,197, 74,102, 86, 90,140, 56,134, 75, 30, 43,231,176,104, 22, 88, 95, 61,195,243,223, 18, 12,
+247,123,156,134, 35,226, 16, 49, 14,162, 94,246, 20,225,216, 35,201, 80, 63,199,108,185,246,112, 14, 32, 21, 60,105,241,102, 76,
+130,210,151, 23,229,185,154, 33,103,226,178,153,223,213, 14, 19, 73, 82,173,109, 37,250,148, 30,177, 95,167, 11,191, 76,105,138,
+213,172,106, 44, 36,215,156,211,250,247,204,246,227,115,202,214, 92, 59,163,214, 29, 76,108,120,115,184,148,169, 1,230,235,117,
+251,223,142, 38,184, 71,141,129,165, 41,126,184, 94,226,164,217,220,204,143,139,222, 18,124,161, 43, 42,253, 7, 98,153,238,185,
+ 68,218,153,120,136, 9, 77,187, 64, 94,157, 33,241,136, 63,249,131,167, 64, 22,172, 55,107,220, 63,188, 68,118,132,118,115,142,
+119,223,125, 15,139,102,133,108,252,128, 42,236,163, 92, 63, 51, 41, 39, 27, 27, 7,133, 95, 85,224, 83, 86,187,147,125,223,224,
+140,229,170,133,123,231, 10,235,195, 66,245, 66,134,181,229,192,216,172,151,112,238,168,142, 33, 82,128, 77,211, 4, 45,212, 45,
+168,232,112, 58,162,239, 7,236,238, 15, 32,142,104,221, 99, 76,239, 56, 70,244, 49,162, 99,143,165, 79,184,216,122,180, 97,131,
+183,111,223,224,126, 73, 88, 45, 28,134,211,136,251,251, 30, 55,183,111,224,112,194, 34, 48, 86,103, 1,199, 49, 99, 56,141, 8,
+235, 13, 66,227, 16,211,104, 73, 94,140,101,179,134,227, 0,242, 37, 75, 60, 1,121,196, 24, 79,136,185, 7, 56,171, 88, 51,120,
+211,160,104,161,151, 69, 84,243,100, 66,220,152,203, 25,205, 54,170,206,198,101, 39,100, 74,150,248,107,122, 14, 27, 79,171,200,
+ 83,187, 82,216,251,170,155, 2,182,248,209, 88,133,106, 57, 71,251,108,230,234,139, 39,227, 48, 4,203, 15, 47,159,175, 98,209,
+148, 89,234, 32,147,230,192, 37, 73, 64, 78, 96,202,138,113, 22,169,133,107,209,148,232,133, 76,144, 20,145, 6, 29,189, 39,232,
+157, 16,230,185,229, 68, 24, 44,193,212, 57,135, 56, 12,245, 89, 83, 85,189, 38,178,229, 49,218, 30, 63,129,217,171, 99,201, 10,
+238,106, 89, 43, 83, 74,179, 75,147,226, 0,148, 86, 24,245, 57,117, 2, 36, 8,118,251, 7, 28, 79, 39, 92, 44, 22,104,125, 48,
+ 59,106,210,233, 0, 49,162, 36,139, 62,182,194, 48, 37,120,207, 30,105, 60, 34, 56,133,101,196,156,149, 38, 71, 58, 42,172,195,
+123,152,159,214,249, 41,255,149, 21, 23,155, 18,240,252,253,119, 49,198, 1, 55,183,247,106, 61,138, 17, 73, 50,198,148,224,188,
+ 67,215,118,200,199, 35,164,208,228,202, 11,235,116,227,207, 76,232,251,193, 70,216,147,169,127, 62,118, 76, 49, 33,132, 0,239,
+213, 99,222,118, 11,236,236,207,146, 20,209, 45,215, 0,128,119, 63,122, 31,139,213, 2,127,255,147,159,224,180,223,227,234,201,
+123, 56,157,122, 28,142, 7, 44,187, 5,154,198, 3, 24,113, 60,246, 10,184,177, 12,219,139, 69,135,237,249, 22,146,129,151, 95,
+124, 1, 14,161, 82,237,114, 22,197,245,153, 63, 50,165, 30,167,195, 9,190,211, 7,182,218, 44, 81, 24,245,172,187,107,153,239,
+ 33,115, 61,120,201, 18,176, 8, 25,206,172,108,206,132, 22, 21, 57,104,231,177, 67,134,247, 1,236, 25,190, 41,194, 11, 76, 31,
+102,251,176,196, 97,192, 56, 70,197,203,182,109,253,208, 50, 17,226,168,171,139,241,120,194,229,147, 75,120,120,252,217,127,248,
+ 79,248,234,147,207,241,199,255,246, 95,227, 95,254,171, 63,196, 95,252,239,127,134,215, 47, 95,161,243, 1, 77,215, 33, 9,225,
+254,126,143,103,231, 91,124,239,221, 15,240,230,116,192,205,219, 23, 56,221,239,176,106, 90, 85, 86,167,136,182,107, 1,118, 56,
+245, 3, 36,103,156, 78, 39,164,156, 16,156, 67,112,202, 60, 31, 68,145,152,101,183, 47,142,112,113,121,137,235,235, 43,196,172,
+ 84,171,229,170,195, 71, 79,158,227,234,250, 28,155,205, 10,226,236, 62,178,244,167, 41, 77, 77, 69, 77,179, 44, 81, 72,177, 22,
+187, 9,135, 58,189,238, 82,177,167,197, 74, 37,236, 64, 28, 97, 81,105,152,160,231,217,184, 9,173,218,144,114,196,226,162,195,
+134, 50, 88, 60,136, 27,132,166, 69,227, 67,181, 83,145, 8, 28, 75,229, 83, 51,121, 93, 79, 85,219, 24, 87,107, 26,179,199,236,
+ 8,154,186,134,242,128, 51, 67, 72,197, 68, 36, 83,112, 6,160,190,118, 46,193, 64,150,151, 94,140, 69, 74,199,114,143,129, 24,
+ 37,235,185, 10, 93,245,162,214, 72,213, 89,119,100, 76,234, 42,234,195, 52,218,151, 25, 14,150,100, 26,145, 79, 47,189,212,177,
+108,241, 0,147, 76,151, 62,131,235, 72,126, 98,223,232,196,162,176,237, 39, 5,181,233, 78, 72, 71,152, 57,171, 87,157,131, 37,
+208,101, 65,138, 17,236,116, 82, 5,231, 16,184, 5,209, 57,252, 98, 1,102, 93, 19, 53, 97,169,106,247,174, 3, 53, 29,156,107,
+145,169,172, 55,108,154, 96, 69,138,148,159,223, 82, 38, 73,236,115, 37, 9, 36,198,136,160, 73,187,128,156, 77, 32, 37, 88,173,
+ 22,102, 57,158, 62,139,141,103,132,192, 56,245,131,198,101,122, 7,231, 60, 72, 70,160, 97, 16,117,104, 90,143, 20, 19, 28, 57,
+116,157,142,190,115, 82, 17,103, 74, 9,226, 84, 91,145,242, 9, 77, 23,112,213,158, 99,185, 55,241, 24, 0,166,140,247,222,187,
+ 70,219, 29,113,138,163, 78,229, 22, 45, 90,231,113,177, 88, 0, 57,105,136, 14, 1, 44, 65,237,175,161,177,117,169,250,240, 83,
+210, 64,155, 20, 7,165, 40, 50, 43,143,196,137,254,190,236,149,132, 87, 4, 49,133,184,151, 19, 28, 89, 60,175, 21, 87,229,209,
+161,250,156, 77, 66, 58, 50, 75,106,237,227,201,219,202,197,242,235,165, 92, 47, 50,197,251,206, 52, 37,229,211,165,111,183, 78,
+181,162,165, 70,242,183,246,228,142, 38,226, 41,164,140,243,109,237, 53, 35, 54, 22, 77,190, 90,136,117,172, 47, 81, 44, 17, 84,
+ 38,197, 58, 19,144,116,189,160, 2,184, 2,226, 97,133,103,217, 61,168,162, 63,169,206, 42,158,221, 91, 69,155,149, 45,252, 12,
+162, 14, 16,242, 83,193,235,216, 33,115,180, 66,200,153,213, 78,215,148, 81, 70,140,227,160, 69, 99,201, 92, 47,247,140, 20,113,
+ 43, 76, 96,152,144, 82,134,215, 17,114,198,186, 9, 90, 69,164,132,152,213, 35,200,165,186,112, 54,106,207, 70,126, 48,128,190,
+243, 14,195, 64,224,214,225,201,211, 39,184,191,127,192,195,238,136,245,101,107, 62,195,140, 97,140, 88,175, 87, 54, 98, 87,187,
+ 71, 74, 73,153,231,182,103, 20, 59, 40, 78,199, 83, 85,233, 22, 47,172,166,233, 88,142,114,206, 8,109,139,100, 2, 52,231, 29,
+ 78, 15, 59,172,214, 11,128, 24, 93,215, 65,152,240,238,251, 31,224,246,238, 14, 95,126,250, 25,186,229, 6,237, 98,129,183, 55,
+119, 85, 92, 69, 36, 56, 29,149,114, 23,156,138,243, 56,120,108,182, 91,172, 86, 43,124,246,171, 79,241,230,171,151,120,254,221,
+239, 96,159, 6,196,172,251, 34, 31, 26,243,243, 38,140, 99,182,174, 39,219, 1, 9,251, 96,153,109, 77, 80,147,176, 96,161, 25,
+150, 51,169,224,134, 60,117,109,206, 58,120,103,135,162,227, 41, 89, 75,170,165,132,192,141, 55,229,167,190,225,174,120,128,161,
+235,145,113, 24,208, 52, 29,150,171, 85,245,168, 3,130,195,225,136,227, 97, 68,240,140, 39,207,158,226,238,237, 13,254,252, 63,
+254,103, 28,223,220,225, 95,255,219,255, 9,127,240,167,127,132, 63,255,207,255, 21,175,191,250, 6,221,106,129, 54, 52, 24, 82,
+194,105,183,199,187,215,215,120,247,226, 12, 95,190,126,131, 35, 9, 98,223,195, 81, 70,219,182,186, 70,112,122,145, 30, 71,165,
+ 65,197,126,172, 1, 39,141, 17,213,134,156,148,237,238,188,178,177, 9, 88,110,214,120,242,244,210,246,235,130,166,245,184, 60,
+ 59,199,245,211, 11,248,182, 5,123, 19, 40,185,169, 35,204, 37, 68, 66, 74, 70,247,140, 37,109,187, 59,169,124,241, 34, 24, 52,
+235,150,125, 29,151,172, 99,253,198, 45, 40, 8, 85, 71, 66, 38,222,202, 73, 38,238,116,200,200, 36, 38,226,114,154, 62,229,117,
+101,147,199, 17,132,108,107,164, 0,231,117,146,163, 86, 67,179, 22, 22,210,149,133, 71, 64, 38,108, 38, 89,230,182,198, 27,228,
+234, 65,103,231, 38, 68,102,201, 63,128,211,161,156, 0, 9,201, 28, 4,122,144, 58,114,181,184, 43,157, 76,217,183, 51, 5, 67,
+241, 90,114,148, 5,189,168, 27, 59,219,104,208, 0, 29,228, 64, 52,106,151,157,105,242,153, 63, 26,177,206,144,159, 50, 27, 27,
+200, 99, 74,149, 42,226,139, 47,247,113, 32,134, 6, 93,231,218,237, 76, 14, 27,125,187, 93, 89, 79, 88,184, 20,217,174,191, 88,
+166,114,241,228, 6,229, 73,180, 2, 36, 38,120,223, 32, 52,107, 69,194,218,251,108, 19,113,157,122, 21,197,115,213, 7, 36,227,
+129,232,235,147,211,104,211, 13,189, 72,178,177,249, 69,178, 98,172,169,236,253, 81, 67, 65, 80,146, 22,205,123,188,112, 29,124,
+ 19,144,204,217,163,154, 58,103,224, 28, 70,107,122, 24,125,217,117, 14,236,216, 67,252,180, 90, 17, 17,237,178,237, 61, 93, 47,
+ 84, 41, 61,142,131,237, 96, 61,222,127,255, 28, 55, 55,183,240, 65,237,194,177, 87,180,106,211,248,186, 67,113,174,177,233,137,
+ 10,203, 36, 13, 72, 57,234,170, 35,235, 4,132, 89,201,161,146,117,228,159, 51, 35, 13, 38,248,179,215, 1, 54, 61, 97, 43,227,
+138,171,130,185,104, 39,168,114, 85,178, 9, 56,213, 25,100,193,228, 36,181,182, 22, 33, 64, 20,226, 82, 34, 89, 43, 6, 78,228,
+159, 3,141,108,244, 95,156, 62,185,186, 55, 38, 62, 2,234, 46,157,109,173, 73, 54, 45,214,179,215,142,130,122,161, 11,108, 69,
+ 85,200,158,177,196,124,103,107,112,117,151,238,192, 16, 86,164,108,140, 17, 77, 19,180,153, 29,244,188,115,206,193,121,195, 15,
+155, 0,185,124,208,185, 94,248,172, 44, 9, 43, 46,196, 0,104,115,129, 51, 89,208,141,247, 30,125, 63, 89,162, 53,111,190,215,
+240, 47,207, 22,141, 92,102,185,100,118, 55, 45,182, 0, 45,100, 60,114, 2,198,132, 46, 52, 70,233,210,219, 94,102,105, 82,206,
+ 43,220,131,102,182, 22,178,170,226,212,143,120,242,244, 2,103,103, 27,124,253,226, 27,196,164,144,252, 24,163, 6,155,228,140,
+245,114,137, 56,246,246,231, 1,167, 99,143,230,108, 1,246,202,228, 46, 74,215,195,126,143,205,114,107,129,243, 82,173,111,154,
+126,170, 34,130,197, 98,105, 22, 6,198, 97,191, 7,204,199, 28,154, 6, 33, 4, 92,190,243, 12, 87,151,215,248,219, 31,253, 24,
+187,251, 7,156,175, 55,216, 31, 15, 56, 30,143, 88, 44, 23,245, 33, 60,158,142, 24,145, 0, 4, 64, 8,235,243, 51, 92, 63,121,
+130,148, 18,190,252,228, 55, 56, 30, 79,240,193, 33, 15,132, 8,232,104,220,118,102, 57,101,165,163,177,122, 46,217, 78, 34,111,
+202, 76,102, 77,105,170,228,180, 98,255,155, 71,251,149,125,168,144, 90, 70,156,121,142, 77, 9, 95,246,144, 44, 2, 23, 26,181,
+181,248, 96, 36, 63, 83, 83, 22,182,113,204, 24, 98,130,243, 1,203,197,162,210,156, 98, 76, 56, 29, 15, 56,245, 61,182,155, 51,
+156, 95,108,240,203,159,254, 19,126,244,151,127,141,241,216,227,223,252,187,255, 21, 63,248,195, 63,192, 95,252, 31,127,142,175,
+127,241,107, 44,215,107,132,101,139,177, 79, 24,134,132,239,188,247, 62, 2,128,159,253,250, 19, 44,207, 46, 17,114, 2,245, 39,
+ 44, 87, 75,171,170,245,251, 56,142,131, 98, 31,147,160, 31,122, 16, 17, 58, 23, 64,142,209,167,132,209, 44, 34, 37, 29,169, 91,
+ 46,113,126,121,166, 16, 9, 34, 52, 33, 96,181, 94,224,242,226, 76,245, 12,193,215, 84,167, 66, 54, 19,210, 17, 96,113,255,151,
+113,118,165,171,105,244,133, 30, 6,181, 50,183, 80, 21,130,142,225,133,205, 68, 8, 93,147,176, 98,117, 21,218, 96, 33, 37,118,
+240,176,183,127,183,218, 33, 75,170,197, 45, 25,187, 93,178,238,236,168,248,155, 73, 31, 58,118,197,250,105,170, 7,201,186,223,
+179, 42, 92, 89,214, 60,203,128,146, 90,164, 20, 42,149, 53, 9, 54,221, 41,248, 85, 59, 36,145, 39,174, 58,161, 6, 70, 20, 72,
+139,204, 14,149,218,161, 87,113,141, 97, 47, 43,242,179, 58,134,234,129,147,203,115,111, 34, 33,177, 9, 71,166, 60, 27,239,219,
+ 8, 59,211,244,231,155,202,120,186,184,167,145,190,218,245,120,154,192, 25, 19,219,144,146, 54,154,215,191, 55, 39,139, 94, 38,
+179, 60, 90, 23,196, 41, 65,188,114,193,179,117,107, 42,184, 12,112, 76,112, 78,167,120,236, 9,217,236,110, 78, 20, 72,194,194,
+ 64,154, 49,186,197, 86, 82,146,144,163,137,166,114,210, 51,142, 38, 80,185,102, 51,160,174, 62,138,170,155,140,183,175,202,242,
+146, 93, 47,181, 16,159, 82,246,202,238, 89,195,117, 8,186,118, 42,175,121, 6,192,117, 85,130,234, 0,162, 76, 8,190, 65, 17,
+ 68,144, 23,156,157,175,113,127,247, 0, 31, 24,195, 16, 65, 0, 54,235,101, 45,208, 66,231,129,168, 32,146,108, 17,188, 98,249,
+220,202,145, 31, 33,105,176,240, 31, 45, 38, 83, 65,173, 18,131,189, 87,216, 74, 78, 0,162, 1,128,148,169, 1,163,135, 74,241,
+144,231,162,211, 45,247,129,174, 39,179,237,138,203,231,104, 18, 94, 16, 38, 67,237,172,128, 51,145, 93,177, 23,166,148, 12,219,
+ 44,243, 48, 61, 45, 60,130,155,241,206, 21,241, 45,217, 62,243, 51,161, 40, 27,248,166, 68,147,186, 58,246,214,175,205, 81,145,
+173, 5, 20,149, 18, 16,199,168, 1, 44,150, 4, 26,188, 71, 28,181, 40, 43, 35,126, 2,204,235, 94,130,185, 72,177,234,230, 22,
+243,164,119, 67,209,181, 56,175, 19, 59, 29, 39,152, 93,205,238,130,154,164,152,103, 22, 64, 67,125,139, 49,234,109, 13,143,253,
+254,168,161, 55,182,186, 21,232,106,132,188, 22,249,222,138,107,253,250, 12, 63, 36,245,182, 53, 77,131, 49, 38,140, 57, 34,105,
+232, 15, 4,122, 81, 57,195,221, 73,212, 16,150,202,203,240, 42,116,123,250,244, 41,152, 25, 47, 95,188,134, 11, 1, 41,234,216,
+ 70,204, 66,211,116, 30,177, 31,148,182,211, 27, 77,206, 70,133, 69, 96, 48, 14, 9,187,135, 29,182,171,245,116,212, 89, 20,167,
+ 99, 7, 68, 37,176,249,179,160,187,135,254,136, 49, 69, 44,150, 11, 16, 4,109,215, 98,177,238,240,222, 71, 31,224,225,225, 1,
+159,127,242, 41,218, 38, 96,217,117,248,242,171, 47,209,134,133,141,101, 50,242, 41,227,112, 56, 32,153, 31, 52,112,198,245,229,
+ 57, 22,171, 5, 94,126,254, 5,190,254,252,107,192,105,232,138,228,172, 29, 52, 57,253,144, 64,128,152, 77,253,168, 74,201,148,
+ 50,136, 50,218, 16,208,178, 3,160, 85, 93, 76, 89,211,138,140, 30, 70, 54,170,203,164,162,182, 18, 82,146,189, 86,146, 17, 89,
+187,107,167, 34, 41, 78,198,159,102,237, 12,181, 34,212,157,209,196,217, 86,109,128,103,143,197,114, 1, 14, 1, 57,103,244,125,
+ 15, 57, 70, 56, 71,120,250,236, 29, 44,207,151,248,217,255,253, 35,252,228, 47,255, 27,124,187,196,255,242,239,255, 29,190,243,
+253,143,240,195,255,243,255,194,151,255,248, 25, 22,155, 45,156,103, 12,199, 17, 89, 24, 31, 93, 93, 97, 60, 28,241,171,111, 94,
+ 99,253,236, 2, 93, 43,192,205,128,197,217, 6, 16, 85,202, 18, 51,250,113,176,208, 29,194,233,116, 4, 73, 70, 23, 26,120, 31,
+112, 76, 35, 70, 73,128,115, 16,219,191, 53,203, 22,219,139, 53,150,203,133,170, 89,187,128,229,178,195,249,170, 67,183,106,193,
+193,178, 7, 36, 85,154, 98,230,108, 11,102,182,100,165, 12,103,163,212,210,177,149, 80,131, 98,187,172,214, 40, 11, 81,200, 60,
+157, 16, 92,128, 42,102,139,209,131, 12, 85,252,152,202,129, 12,221,131, 82,114,112,112,122,169, 17,215,203, 80, 82, 6,156,190,
+183, 40,130, 51, 71,179,195, 61,219, 94,176,168,182,243,148, 83,110,121,132,101, 52,174,124, 10, 55, 11, 65,209, 28,241,226, 79,
+ 39, 43, 14,234,218,189, 94,226, 58,226, 6, 25,201,171, 32,132,169, 64, 42,180,107, 41, 93, 20, 9, 43,197, 15,165, 27,176,206,
+211, 46, 72, 49,125, 64,150,233, 96,205,214, 5,100, 34,123,221,102,238,148,146,186, 70,154, 59, 15,139,215,156, 25,240, 39, 56,
+ 14,230,150,167,105,199,154,171,122,223,222, 47,161, 26, 76, 36,246,170,145, 9,147,168, 36,205,229,136, 52,142,230, 3,214, 78,
+145, 68,131, 4, 84,224,156, 53,151,193,246,249, 72,246,117,165,219, 35,130,211,216, 63, 43,192, 12,110, 98, 17,212, 19,239, 91,
+119,207, 98, 22, 85,201,169, 22, 35, 69,204, 68, 36,134,252, 45,226, 48, 6,160, 35,122, 97,139, 91, 46, 99,101,139,113,214,194,
+140,234,103,118, 10,189,177,206,152,201, 38, 12,211,175,251,224,208, 45, 3, 32,122, 22,165, 56, 34,120,143,148, 6,164, 60,194,
+243,204, 19,157, 1,145, 1,217, 86, 8,217,214, 6, 4,213,165, 32,103,100,137, 10,216, 2, 79, 1, 37,163, 24,148, 69,166,180,
+ 30,113,112,108,219, 28,130,238,208, 83, 50,129,154, 22,243,106, 75,204,147,133,177, 20,101,132, 73, 27, 65,197,150,105, 59,249,
+ 92,138, 63,174,182, 72, 49, 15,183, 88, 24, 12, 25, 90, 49, 4,181,245,229,168,107, 10,204, 86, 60,100, 6,246, 74, 30,164,169,
+232, 76,197, 47, 14,101,187, 80,137,112, 51,190, 3,123,135, 36,202, 14,136,214, 64, 58,187,212,199,126,152,128, 75, 41, 41, 27,
+193,196,104,121,140,202,199, 48,125,144,166,178,165,234, 98, 16,251,111,222,123, 20, 58, 59,151, 34,207,238, 85, 88, 10,159,103,
+ 66,118, 19,221, 81, 89, 23,133,109,145,113, 60,236, 65,206,169,171, 33,234,185, 43,172,162,220, 44, 2,182,156, 22, 16,193,123,
+ 15,159,146, 86,109, 93, 23,144, 33, 10, 66, 72, 94,119, 97,166,182,117,166,248, 78,105, 52,251, 12, 85,235,137,247, 14, 79,175,
+174,241,112,255,128,251,221, 3,218,237,185,190, 0,162, 7,125, 23,130, 42,215,247, 39, 52,112,136,233,104,241,116,100,149,143,
+218,218, 78,135, 3, 36, 41, 76,164,116, 48,185, 8, 33,236,197,104,152,209, 52, 45, 6, 33,156,246, 71,184,214,163,105, 90, 36,
+ 34,116, 93,131,139,171, 39,184,188,186,194,175,254,251, 63,224,254, 97,135,179,245, 22,251,227, 1,253, 97,143,139,247,175,241,
+112, 24,208, 6,135,135,253, 14,187,211,160,251, 79,239,176,234,214,184,186,190, 68, 63,236,241,245,151, 95,232,161, 47,202, 40,
+143,217,216,212,214, 93, 71, 73, 54,246,102,229,103,155,152,207,123,167,234, 68, 18,196, 18,147,202,122,108,123, 82, 90, 87, 78,
+105, 74,217, 18, 1,231, 34,212,176,221,183,148, 7, 32,154, 93, 68,149,153,228, 53,218,181,116,113, 37,151, 24, 4,244,199, 30,
+200, 64, 56, 91,128, 91,173, 46,199,211, 17,121, 28,208,110,215,216, 62, 61,199,106,125,142,191,250,143,127,142, 95,254,240,111,
+241,244,253, 39,248,253,255,249, 79,113,113,241, 20,127,243, 95,254, 6,191,249,245,103,104,183, 29, 32,132,227,160,235,136,103,
+155, 37,222, 60,220,227,171,151,183, 56,187, 58,199,197,114, 3,218,239,225, 55, 45, 32,192,113, 28, 16, 33,136,163, 96,200,218,
+ 5,197,190, 7,167,136,165,111,176,244, 1,247, 57, 98, 72, 89,109, 94, 32, 68,100,132,174,193,102,179,197, 98,209,129, 3,161,
+233, 90,172, 87, 75,108, 58,143,110,185, 4,135,160,151,143, 36,245,174, 98, 62,118,151,202, 6, 47,251, 55,237,226,109,223, 10,
+211, 41,240, 84,236, 8, 9,200,252,168,229,178,155, 58, 39, 11, 62, 97,134,136,183,113, 36,108,111, 93,246,131, 86,253, 54, 70,
+234, 35,171,158, 39,216,115, 13,137, 96,114,149,128, 86, 44, 44,165,227, 21, 33, 83,230,250, 71,121,234,117,119,205,100,227,243,
+217,101, 81,224, 48, 76,179, 17,181,118,140,100, 12,109,204,119,150, 53,214,151, 31, 5,171, 80, 86,205,138, 24, 15, 66,139,117,
+182,174,219,242,209, 83,198, 24,245,146,148,148, 43,248, 99, 10,110,153,141,220,203,190,148, 38,138,220, 4,187,153,101, 67,148,
+168, 78,154, 0, 37, 52,223,173,203, 44,125,174,238, 80,243, 52,137,127,196,147,183,241, 73, 78, 24, 71,192,187, 17, 57, 36, 80,
+ 78, 64,142,112, 28,204,119,156,145, 69, 53, 14, 30, 77, 85, 49,151, 49, 38,137,165,218,217,254,223,154, 60, 32,169,254, 5,208,
+ 53, 11,114,170, 1, 30,117,192,158,202,248,159, 43, 44,138, 74,135, 90,215, 35,250,222,144,173,135,244,231,182, 40, 91,219,185,
+184,194,225, 7,207, 86, 27, 19,126, 55, 75,174, 84, 65, 41,203,106,209,181, 37,103,101, 48, 72, 4, 92,104, 32,146, 16,130, 71,
+244,108,185,244,185,108,166,237,103, 16,251,123,116,105, 72,222,217,133,109,136,107, 14,246,210,106, 96,149,140,163, 78,195,156,
+254, 93,250,167, 69, 91,177,184,153,122,162,116,175,147, 32,213, 98,134,192,149,115, 36, 19,236,202,177,129, 98,148,189, 81, 38,
+ 44,229, 22,208,137,117, 89, 97,146,113,219, 81,177,197,100, 92, 2,102, 69, 57,235, 58, 22, 85,220,153, 69,115,203,153,189, 94,
+150,164,151,158, 8, 16,205,247, 77, 70, 95, 76, 89,157, 94, 36, 19,112, 38,165,132,113,136, 72,163,128, 2, 35, 4,143,100,252,
+ 8,130, 66, 94, 74, 14,132,186,147,146,225,105, 85, 12,171, 57,246, 26,139,155, 75,113,104,251,239,224, 59,100,214,113, 11,113,
+145, 47, 40,208,167,100,167,232,148, 73, 39,223, 99,180, 61,188, 53,190, 34, 58,149,145,172,188,130, 49,142, 54,117,200, 26,104,
+ 85, 86,103,133,190,199, 14,126, 76, 3, 60, 1, 45,121, 28, 83, 68,180, 81,147,238,218, 20,236,231,170, 15, 80, 15, 8, 2, 65,
+116, 21,133,213,114,137,213,102,131,251,187, 61,250, 97, 64,107,149, 55, 19,161, 31,123, 52,173,238,234, 41, 9, 90, 7, 60,156,
+ 78,136, 67,170,241,137, 98, 33,247,135,251,131,249, 26,181,147,114, 2,133, 51,192,130,237, 99, 66,100,135,110,187,193,235,215,
+111,112,255,240,128,235,213, 19,197,180, 18, 97,189,221,224,252,189,119,112,220, 31,240,205, 87, 47,176,104, 28,154,206,225,230,
+229, 30,171,245, 6, 12, 70,159, 34,154, 16,112,123,119, 15, 25, 35,194,162, 69,235, 28,206,174,207,208,173, 87,248,252,147, 79,
+113,251,118,143,197,114,129, 97, 60,232,216,202,242, 64, 83,130,118,232, 57, 43,249, 12,164,192, 11, 71, 8,206, 40,110,150,110,
+151,146, 32,138, 34, 65,217,222,176,100, 10, 82, 85,163,207,196, 65,146,224,201,195, 81,182,177,156,178,163, 11,145,201, 57, 6,
+123,243, 82, 90,212,104,129,184,164,190, 71,206, 64,183, 90,193,183,140,113,223, 99,216,159,224,156, 96,115,125,137,237,245, 21,
+228, 48,226, 47,254,183,255,128,159,253,221,207,241,225,111,127,136,255,225, 79,255, 4,205,170,195,207,126,252,119,248,234,215,
+159,193,115, 64, 76,154, 57,181, 12, 45,214,139, 6,111,110, 14,120,241,246, 45,206,175, 46,241,252,201, 19,184,177,215,108, 95,
+100, 28,198, 94, 47,116, 17,156,178, 82,167, 82, 76,200,227,136,101, 8, 8,141,199, 46, 38, 12, 54,210, 36, 83,192, 54, 93,131,
+237,249, 26, 93,167, 69,222, 98,177,194,102,179,194,178,107,208,173, 2, 66, 23, 42, 90, 82,100, 26, 1,147, 41,185,179, 9, 16,
+ 43,172,100, 30, 62, 34,246,186, 33, 91,151,150,170, 22,196, 82, 75, 0,176,145,171, 80, 71,208, 76,140,236, 44,168,132, 25, 26,
+187, 18,166,157,189, 93,236,176,216,111,230,105, 55, 95,188,136,250, 30,185,233, 82,202,118, 89,155,202, 87,108, 84, 91, 46, 94,
+154,221,146, 57, 43, 35, 32, 89,207,238,170,213, 75,106,112, 15,156, 67,182,101,130,142,246,196, 70,138,206, 46, 45,177, 3, 2,
+117,189,193,179,215, 37, 33, 91, 26,157, 77,126, 68,217,212, 40, 43, 54,152,187, 67,140, 99,109,218,132,100, 90,125, 93,185,233,
+133,161,104, 68,155, 88, 64,117, 32,197,194,163, 87,137,138,119,136, 38,167, 65, 25,113, 18,125,203, 2,199, 58, 13, 96,199,168,
+113, 46, 50,229,175,235, 91,108, 59,105,168,128,215, 89,104, 69,204, 17, 46, 69,112,147,145,210,104, 90,128, 22, 44, 97,114, 72,
+ 8, 64, 22, 18, 84,240,208, 19,213, 75, 47,189,178,112, 40, 26,140,156, 99, 37,155,205, 87, 96, 37, 80,137, 10,218,216,214,109,
+206, 20,199,206, 3,100, 32,170,148, 70, 11, 35, 73, 6,232,178, 72, 95,187,164,146, 76, 5, 38,204, 61, 4,179, 16,139, 8, 88,
+236,215,202, 56,159,236,188,173,112, 33, 7,118,162,226, 58,209,213, 94, 51, 71,147,230,100,187,102,211,150, 88,247, 92, 87,169,
+206,235, 25, 94, 18, 34,211, 48,197,156, 82, 57,155,138,214, 41,195, 37, 70, 98,155, 74, 85,164,235,148,147, 94,175,121,187, 30,
+196, 70,254, 92,134, 53, 76, 21, 90, 35, 85,120, 13,100,196,250,123, 37, 51,178,165, 52, 10,105, 88, 12,201, 36,206,244,196,104,
+131,234,115,250,148,202, 18,169,234, 24,146, 8,156,176,225,169,237,114,203,122,129, 43,178,219,193,177, 83,184, 76, 76, 32, 35,
+210, 21,221, 65,140,154,222, 39,144, 42,238, 45, 86,109,101, 58,140,160, 68,112, 65, 59,245,190, 31, 12,251, 93, 38, 38, 9,174,
+209,213, 0,103, 88,177, 67,136, 36,136, 24,225,114,107, 75, 38,157,237, 36,182,245,155,136, 62,105, 78, 87, 45,142, 8,209,103,
+196,172,211,151,178, 2,139, 99,196, 48,232, 36, 70, 25,244,206, 62, 99,214,218,204,162,189, 29, 59,237,212, 23,139,133,250,156,
+ 71,221,169,179, 85,225,169,164, 24,241,212, 1, 84,184, 60,233, 55,120,245,228, 2,236, 24,247, 15, 59,196, 24,213,115,152, 84,
+ 65,156, 36, 97,213,174,116, 76, 13, 65,204,168, 86, 39,231,125,245,244,142,113,196,195,253, 61,156,111,244, 65,175, 27, 24,181,
+ 27,144, 9,195,154,229, 2,222, 51,246,247, 59, 36, 35,109, 65, 50, 22,203, 21,206,207,207,112,117,117,137, 95,127,250, 75,220,
+188,126,139,213,122,141,225,212, 99,127,216,227,250,217, 37, 78,125, 15,199, 30,199,227, 9,187,187, 29,168,213, 75,120,177, 92,
+224,233,179, 39,184,187,187,193,215,159,125,169, 25,201,150, 78, 52,230, 92,247,254, 89, 20,119,235,204, 67,152, 36,195, 5,160,
+241, 30,142, 53,250, 83, 5,115, 50,137,180,136, 39, 92, 33, 96,157, 58,235, 20, 36,151, 69,166,121,116,161,249,224, 58,247, 99,
+131,149,144, 69,243, 89,202, 87,201,204,101, 69, 64, 82, 74, 88,174,214, 8, 77,131,211,221, 30,253,152,177, 92,182, 56,187, 56,
+195,229,179,107,220,188,188,195, 95,254,167, 63,195,203, 95,126,138,223,253,195,223,199,255,248,111,254, 24,199,113,192,175,126,
+246, 9,190,250,244, 11, 72, 18,140,113,128, 11, 30,155,229, 2,173,235,240,226,245, 43,220,189,121,192,249,229, 6,191,245,252,
+ 41,154,152, 48,200,168, 56,213, 97,192,152,117, 28, 58,196, 97,218,113,143, 35,150,222, 97, 17, 2, 14, 49,227,148, 98,181,109,
+ 36,100,248, 38, 96,115,182,193,162,109,192,193, 97,185, 89,226,236,108,141,229,178, 67,215, 41, 6, 83,234,184,218,210,236,152,
+106, 55, 83,226, 20,245,140,144, 9, 82, 82,186,156, 34, 54,201, 84,174, 41, 45, 76, 83,174, 14, 3,178,196,166, 98, 27, 99, 7,
+ 35, 86,193, 58,248,105,244, 43, 76,240,152, 89,159, 68,102,182, 38, 27,243,218, 30, 92,227, 20,233, 81,119,170,123, 65, 21, 69,
+ 41,127,157,107,150,121,205, 64, 43, 48, 39,251,239, 66,201, 14,204,137,229,159,231, 88, 86,102, 21,121,102, 91, 13, 23,209, 32,
+151,126, 82,149,185, 83, 7,108,127, 86, 77,246, 83,155, 10, 21,211,122,214, 91,142,164, 62, 0, 0, 32, 0, 73, 68, 65, 84,103,
+184,180,198,204,110,250, 89,166, 20,244,170, 18, 46, 93,125,185,153,245,123,180, 75, 0,122,128,210, 44, 52,166, 98, 99,105,222,
+145, 79,142,150,114,166,150,195,185, 42, 8, 75,228,108,129, 42,193, 68,127,166, 67, 8, 84, 10,132, 4,146,132,148, 24, 76, 9,
+217,141,234, 7, 22,117,129,144, 43,241,195,217,220, 54,108,171, 62,153,255,100,147, 94,129, 12, 32,146,139,218,153, 12,244,161,
+ 69,189, 47, 93,161,173, 21,185, 88, 15,137, 43, 51,190, 64, 79, 50, 37,164,104,122,136, 44, 51,119, 5,166,247,212,188,252, 21,
+ 26,196,182,115,207, 0,139,105, 39,236,117, 41, 5, 19,213, 45, 54,102,156,252, 92, 85,215,165,120,205, 57,153,248, 76, 38,159,
+183,115,211,138, 37,103,229,175,155, 22,162,228,140, 18, 57,205, 18, 52, 93, 20,139, 3,216,116, 77, 51, 77, 80,174,207,158,250,
+164,245,188, 83, 47,182, 32, 78,128, 21,155,210,177, 21,112,122,142,203,228, 52, 17,227, 35, 72,177, 64, 71, 43,124,169,212,233,
+250,236,177,118,207, 37,150, 85, 83, 21,109, 85,130, 92,167, 68, 69, 67,162,161, 43,165,145, 42,232, 88, 86, 71, 69,202,128,215,
+203,223, 57, 87, 39, 8, 57,217,107,236, 84, 67, 70,245,177,155, 64, 80,141,115, 0, 13,166,139, 49, 54,132,173, 89,185,132, 68,
+ 21, 98, 40, 38,160, 88, 41,176, 29,151,245,158,173,113, 69, 5,161,206,177, 22, 13,228,224, 29, 16,188, 22,210,100,141, 68,202,
+209,114,213, 89,167, 80,206, 97,140,131, 78, 84,108, 18, 88, 86, 37, 25, 25,126,140, 81, 59,102, 8,198, 52,170,141,193, 94,212,
+156,181,210,119,204,245,129,159,103,170, 3,140,245,102,139, 44, 25, 15,187, 93,221,167,232, 14,138,208,184, 6,109,211, 34,246,
+ 90, 77,159, 70, 37, 35,109, 54, 27,132,208,212,209,250,233,225,136,135,135,123,156, 95, 62,209,195, 12, 19,212,160,140,190, 37,
+103,156,109, 54, 56, 62, 28,112,216, 29,180, 42, 49,229,225,246,108,141,235,119,158, 98, 28, 70,124,241,155, 47, 52,176, 33, 52,
+120,251,246, 6,221,162, 67,235, 2,246,251, 30,228, 61,250,211, 9, 12,197,103, 66, 50, 54,231, 91, 52,139, 14,159,254,234, 19,
+244,199, 19, 90,207,232, 29, 0,110,192, 93, 7,138, 59,173,130,163,230, 5,151, 11, 8, 32,116,126,129,224,212,162,148, 45,181,
+ 42,212, 1, 42,213, 81,229,132,220, 46, 54, 34,158,204, 64, 70, 51,202, 66,112,117, 84, 41,213, 42, 65, 76,134,170,164, 58,102,
+209, 56,190,136, 69,171,123,233,253,221, 45, 56, 9,186,179, 51,172,207,207,113,126,126,134, 87,191,121,129,191,250, 47,127,133,
+135,183,175,241,131, 63,249, 35,124,239, 15,126, 15,247,247, 59,124,249,217, 87,120,241,229, 75, 85,169, 15, 39, 52,139, 14,103,
+231, 91,200,144,240,217, 23, 95,227,225,180,199,179,167, 87,248,157, 15,223, 71, 43, 35,118,135, 61, 98,142,216, 13, 73,217, 5,
+ 96,140,105,192, 24,245,131,158,199, 1, 11, 8,150,161,193, 49, 39,156, 82, 66, 20,173,250, 51, 52, 70,118,125,182, 68,183, 80,
+ 75,205,250,236, 12,103, 23, 91,108, 54, 75,116, 93, 3, 23,252,164,102,101, 87, 71,175,213,219,140,178,143,179,149, 67,137, 53,
+ 46,213,234,196, 35,157, 68, 90,245, 43,139,237, 75,102,118, 45,121,244,143, 72,217, 35, 23,225, 26, 61,242,188,146, 35, 27,197,
+ 27,207, 31, 19, 48,136,236,115,174, 46, 14, 87,189,181, 82, 46,158, 18,202,194,100,232, 96,170,154, 20,229, 61,179, 45, 29, 11,
+191,186,136,200,164,186, 71, 42,203,191, 76, 45,236,123,203, 37, 29,205,138, 67,157, 34,100,211,141,147,121, 87, 5,148,179,117,
+ 20,217,148,219,229,179,154, 38,245,109, 1, 74,177,131, 56, 13,112, 42, 83, 61,229,216, 98, 86,176,150,139,128, 30,231,168,179,
+ 42,147,132, 4, 16, 55,179,226,209, 76, 28,255,136, 86, 99,228, 56, 54, 48, 77, 17,206,101,123,175, 11, 98, 89,249,235, 76, 51,
+124,174,237,135,211, 56,192,147,211, 78, 56, 18, 50, 41, 3, 94,179,250, 2,178, 35,179,253,160, 58, 79,216,214, 87,230,226,171,
+ 17,156, 50, 23,168, 86, 31, 63,166, 2,163,172, 42,114, 70, 50,209,227,148, 54, 87,132,219,246,238,176, 3,185, 12, 73, 58,122,
+134, 21, 2,169, 70,205, 78, 94,233, 41, 92,104,150,128, 7,211,102,216,197, 86, 52, 11,170,169, 96,136, 43,142, 10,178, 53,140,
+152,178, 31,255,204, 73, 80,126,158,138,250,197,164,137,208,154,129, 45, 10,164,136, 3,173, 16,204, 82, 39, 18, 84,215,254, 78,
+199,220, 85,110, 58,211,169,152,112,181, 60, 87, 92, 62,235, 82,127,136,106, 97, 43,255,206,117,164,163, 65, 52, 72, 2,158,175,
+ 92,236,153,240, 65, 49,170, 73, 18, 82, 42,185, 33,108,133,130,213,154, 52, 17, 42, 75,209, 86, 72,137,117,205,145,129, 52, 10,
+208, 77,175,145,106, 13,236,247,214,204,243, 41,167, 93,162,177, 34, 60, 27, 63, 98, 10,216, 34, 34,196,146, 44, 39,101, 33,152,
+ 81,118, 16,204,140,224, 28,178,176,162, 43, 72, 35,133,231,175,159, 6,177,136, 33,112,181, 51,247,172,244,203, 84,249,248, 10,
+ 99,115, 94, 39,191,136,166,123,104,169, 36, 4,215,187, 65,114,134, 31,199, 81,169, 97, 6, 61,200, 53,210, 77,106,133, 24, 44,
+228,132, 76, 64,163,211, 43, 65,227, 9,235,229, 18,135,225,128,195,126, 15,242, 77,133,169,100,209, 88,210,198, 57,236, 78, 71,
+237,218, 98, 6,250,136,102, 17,208,118, 45,124,227,117,244,190,219, 79,208,255, 60,137,111,170, 45, 70, 20,168,191,232,150,184,
+187,123, 64, 28, 5,237,218,188,170, 44,120,250,238, 51, 92, 61,185,198, 23, 95,124,133,187,155, 59,108, 67,139,177,239,241,246,
+238, 14,207, 55,231, 56, 60, 28,145,179,171, 74, 80,110, 24,167,220,227, 34, 44,112,245,236, 18,187,187, 61, 94,127,254, 18, 45,
+123, 56,214, 52, 53, 23, 24,228,189, 89, 86, 21,152, 67, 85,242, 41,104,156,195, 88,169, 72,230,223,116,172, 22,136,113,138, 27,
+164,121,149, 94, 71,128,250,193,116, 94, 67, 41,200, 16,129, 40, 32, 25, 18,120,167,191,198,158,173, 27,211, 93, 88, 22, 32, 31,
+ 19, 92,240,144, 4,236, 31,246,240,158,176,186,186,192,242,252, 18,235,110,131,127,248,241,207,241,163,255,231,135,144,156,240,
+187,191,255,251,120,242,189, 15,112,127,119,143, 55, 95,191,194,203, 47,223, 96,216,159,192, 46, 98,177, 94, 98,185, 90, 99,247,
+112,196,203,111,222,128,136,240,241,187,239,224,163,247,222, 65, 32, 96,127,123,192, 24, 19, 30,134, 1, 67,102,253,160,201,136,
+ 49, 41,175, 45, 36,129,203,192,170,241, 56,165,140, 67,138,213,186,150, 33,224,224,176, 61, 95, 97,189, 94,130,136,176,218,110,
+112,117,125,133,179,179, 37,218,174,133, 11,174,250,200, 11, 89,169,122,159,139, 0,206,172,148,147,215,213,136,116,117, 71, 94,
+253,110,143, 56,248,101,214,163,214, 50,247,248, 82,169, 72, 73,174, 99,195,146, 62,102, 31, 66,219,143,107,202,142, 43,227,204,
+146,142, 38,147, 77, 78, 15, 70, 5,153,168,103, 87,133,142,101,252,204,108,212,196,146, 1, 96,112, 11, 38,167,130, 48,210, 92,
+248,154, 58,134,140,104, 49,148,229, 16, 41, 86, 21, 61,188, 83, 5, 64,213,112, 24,227,194,144, 37,240,229, 10,137,153, 21, 27,
+132, 26, 19, 89, 46,146, 34,121,247,129,181,115,103,227, 8,152,103,158, 69,113,178,100,162, 78, 37,137, 80, 77,113,148,146,254,
+ 86,109, 54, 83,129, 84, 1, 53,179,226,137,137, 31,117, 62,165,216, 40,152, 99, 56,170, 83,153,100,175,111,205,188, 46, 19, 47,
+ 46,123,113,157,136,184, 52, 24, 83,131, 16, 49,128, 93, 48,229,115, 6,167,172,249,242,165,139,177,236,237,108,186, 9, 97,182,
+125,120, 73,198,162,186,238, 23,115, 29,168,184,144,108,127,174, 5,163,131,106, 47,146,249,232,105,166,232,214, 66,199,174, 21,
+ 11, 28,202, 50,206, 46,253,233,242,172, 97, 77,179,247,164,184, 5,166,104, 91,169,138,111, 46, 90,141, 28,205,130, 39,102,206,
+ 83,213,126,233,158, 65, 50, 41, 19,203, 89,158,103,188, 1,154,130, 77, 72,166,201, 4, 42,116,104,114,233, 20,174,195,220,120,
+ 88, 0, 70, 69, 0,234,170,126, 34, 87, 81, 88, 9,112, 41,171,178, 18, 98, 34,217,236,151, 86, 88,242,172,232,128, 69,173, 22,
+213,188,192, 38, 93,222,129, 26,130,156,160, 93,113,209,213, 8, 12, 96, 36, 90,152, 56, 15,120, 87, 9,117,243,162,159,202,164,
+201,149, 21,193,100,211,131, 5,176, 80,176,137,134, 5, 35,193,123,228,129,144,199, 12,242, 14,222, 51, 88,212,202,231,157, 62,
+ 87, 99,140,200, 85,252, 51, 1,162, 10, 41,149,185,209,169,157,133,127, 37,158,196,162,213,107,111, 19, 30,176,158, 87, 62,171,
+110,195,121, 61,167,142,199, 35, 78,167, 1, 93,219,226,225, 97, 6,116, 44,148, 73, 17,179, 81,235,101,239, 97,170, 66,136,238,
+ 6,196, 58,132,156, 19,146, 17,209, 20, 20,161, 63,112,138, 99, 61, 60,155,197, 18, 97,189,196,238,230, 30,135,195, 1,232, 86,
+ 72, 2,180,172,170,241,198,121,131,211, 36, 52, 96,156,134,193, 46,111, 61,240,195, 98,137,254, 97,135,251,219, 91,196, 58, 34,
+153, 10,138, 84, 44, 59,106, 8, 68,138, 3,250,227, 9,146, 21,225,199, 12,172,183, 27,188,247,254,251,136,125,196,203,207, 62,
+ 71,104, 90,120,241,120,117,251, 90,195, 63,156,195,235, 87, 39,116, 87,107,244,227,104,234,195,132, 99, 31,113,121,181,197, 98,
+177,196, 39,159,253, 74, 17,138,190, 3, 56,131,155, 22, 77,219, 66,156, 51, 30, 73,180,135,220,129,235,174,156,235,152, 44, 89,
+ 71, 30, 74,112,134,221, 13, 33,132,194, 53,179,169,104,174,184, 65,253,192,185, 41,107,151,160,251, 24, 78,234,159, 54,159,173,
+142,109,163,118,118, 57, 35,245, 17, 36, 14,144,136,129, 18,218,229, 2,235,243, 51,108,214, 27, 56,110,240,179,191,249, 49,254,
+254,175,254, 26,203,197, 10,191,251, 39,127,140,179,235,115,220,191,185,193,237,203,123,220,190,185,193,241,225, 14,193, 51,214,
+155, 37, 34, 49,110,111,247,184,185,185,195, 50,180,120,239,250, 18, 31,189,255, 12, 52, 70,236,238,238,112,236, 7,220,143, 61,
+142, 41,106,108, 98,178,238, 44,101, 4, 38, 52, 41, 98, 77, 14, 71, 33,236,210,128,129, 0, 98,143, 40, 25, 46,120,172,182, 43,
+108, 87, 91,176, 35, 52,171, 22,151,215,151,216,110, 55, 88,174,151,150,120,105,187,227, 74,196,195, 52,218,155,141,186,197, 14,
+ 3,182,200, 95,153,141,223, 43,124,225, 17,100,134,230, 13,252, 36, 26,155,141,130,241, 40,252, 38, 87,106,155,254,154,183,135,
+ 94, 69, 77,122,217, 43,188, 36,231,217,136,216, 43,160, 73,155,109,243,126,179,155,105,192,202, 69,196, 19,167,217, 58,211,148,
+ 70, 8, 49,188,225, 47,205,124, 61, 41,246,105,194,106,126,155,246,198,162,135,152,230,150, 3,158,130,177,221,169,118, 48, 98,
+186, 2,189,164,242,163, 20, 45, 56,182, 93, 60, 85, 92, 51, 28,215, 11,157,153, 17,163, 84, 65, 91, 81,215,235,138,192,176,170,
+ 41, 67, 17,223,249, 81,236,102, 33,198,233,247,102, 2, 52,214, 14,104,130,207,208,180, 79, 38,182,117,151,197,233, 90,117, 85,
+ 46,114,169,191, 39,104,177,203, 14,222, 59,139,156, 44, 49,173,154,232,231,146,218, 8,136, 11, 12, 68, 32, 6,167,162,128,170,
+ 5, 34, 17, 12, 57,129, 18, 87, 94, 56,219, 94,221,251,160,248, 90,131, 9,169,168, 77,170,224,203,113, 48, 22,190, 84,109,133,
+ 94,126, 73, 11,167, 52,106,240, 13,166,156,121,125,221,203,164,179, 48, 4,237,189, 21, 87,209,187,121,190, 56,249, 22,176,199,
+217,168, 94,109,164,222, 20,251,182,255,166, 80,120,186,230, 35, 47, 1, 4, 54,145, 17, 69,242,138,228, 73,237, 95, 69,168, 5,
+128, 50, 99,252,215,212,204, 50, 46,215, 86, 36, 74,130, 80,170, 64, 37, 27,104, 87, 48, 84, 89, 15, 86,203,158, 33, 99,133,116,
+133,155,162,212, 36, 54, 49,255,187, 72,137,240, 85,189, 80,130, 89, 57,205,167,173,163,247, 0,207,192, 33, 90, 65,155,149, 32,
+ 89,198,246,129,108,149, 21,184, 58, 30, 18, 13,230,177,159,204,134, 57, 79,235, 19,216,196, 45,199,168,127,169, 69,173,234, 10,
+199,108,175,198,138, 40,250, 39,207, 92,223, 43, 50,166, 75,202, 81,145,195, 73,215,209, 26,200,100,209,195, 94, 39,220, 16, 82,
+221,133,137, 91,156,215,181,164,190,246,108, 10,250,100, 10,119, 19, 54,138, 10,111, 27,102, 28,119,123, 12,227,128,101,187,177,
+103, 70,215, 72, 49, 70, 45, 68,139, 96, 55,101, 68, 16,124,203, 30, 45,123,228,113,180,132, 26,181,244,212,132,180,156, 13,121,
+232,181, 98, 74, 26, 74,192,142,176, 92,180, 8, 66,216,237,118, 56,141, 3,150,139,141, 85,100,154, 41, 30,218,160,222, 63,243,
+157,247,125, 95,197, 50,190, 13,104,155,128,215,183,247,120,216, 29,224,120, 30,239, 58,193, 44,138, 34, 20,208,162, 99, 28, 7,
+192,105,252, 30, 81,192, 59,239,189,139,245,197, 26,223,124,245, 53, 14,251, 19,218,224,209, 63, 28,176,123,184,199,170,233,176,
+123, 56, 96,116, 17,231,237, 10,247,135,111, 64, 89,144,251,140,166,243,120,242,236, 9, 30,238,238,113,220, 31,208,117,173,222,
+170,204,160,166,129,111, 61,162,168,138, 61, 21, 52,167,100, 48, 5,123, 19, 52, 14, 50,137,178,134,157,119,118, 57, 69,181,145,
+ 56,135, 16, 2, 36,142, 22,194, 97, 7, 94, 1,214, 84,181,179, 90,129, 88,156, 78, 55, 10, 75,216, 41, 62, 80,204,111, 74, 36,
+ 24, 71, 85, 89,106, 93, 48,224,252,252, 12,155,179, 45,186,213, 18, 49, 71,252,236,135,127,141,127,252,209,223,225,250,217, 51,
+124,255,143,254, 16,221, 34,224,230,245, 13,110,110,246,216,221,190,193,112,127,135,166,113, 88, 44, 91,236, 79, 42,122, 27,246,
+ 7, 60, 59, 95,227,233,249, 5,174, 47, 46, 0, 12,216,221,239,113,127, 56, 96, 31, 51,142,227,168,159, 7,167, 29, 73,204,234,
+199, 92,101,193,202, 49, 14, 16,220,143, 73, 5, 64,236,116,123,237, 24,139,213, 2,103,219, 13,216, 49,154,229, 2, 23,215,103,
+184,184,222, 98,179, 89,193, 7,175,161, 62,179,138, 25, 44, 83,200, 11, 38,229,121, 46, 77, 7,127,139,106, 54, 59, 0,101, 54,
+214,214, 61,110, 25,194,203,163, 49,228, 28,154,242, 72, 89, 93, 68, 38,166,134, 21, 42,157,134,117,223,149, 10,199,240, 30,143,
+208,170,101,252,154,146,204,168,104,222, 4,102, 42,156,203, 68,160, 18, 74, 66,164,238, 10,187, 36,132, 38, 63,113, 73,186, 42,
+211,154,106,139,179, 78, 54,143,170, 17, 16,102,163,103, 57,187, 12,148,113, 15,113, 64,214, 3, 58,195, 79,241,197, 5,254, 2,
+227, 99, 27,116, 70, 89, 55, 82,137,141,229,239,203,121,196,180, 53,178,174,220,148,201,154, 9,173,182, 38, 98,121, 20,163,172,
+181,247,108,128, 90,224, 49,179,203, 73,102, 17,193, 37,197,170, 72,211, 40,149, 41,162, 77,188,108,146,193,108, 89, 11,229, 36,
+ 47,235, 15,155, 62,176, 68, 43,166, 29,132,163,137,217, 52,246,180, 20, 17, 46, 82, 73,146,213,247, 41,105,103, 89,201,141,179,
+ 8,227,218,213,229, 66,188,228, 10,174,201, 53, 4, 4, 96,105,144,144,144,211,160,159, 52,235, 34,203,154, 98, 82, 59,200,163,
+139,154,121,194,109,215,169,137, 93, 36,197, 62,248,248, 51, 43,117,186,151,109,226,129, 71, 29,183,174,244,200, 2,117, 74, 98,
+217,124,149, 48, 69,165,202,255,175, 75, 1, 96, 60,170,121,217, 46,224,252,173,175,169,203,134,164,151,146,169,180,245,108, 51,
+171,102, 33, 51, 22,215,129,117,235,108,186, 83,153, 9, 65,237,211,103, 56, 89,170, 23,124,125, 52,189, 58,172, 2, 57, 12, 67,
+ 63,235,138, 11,153, 80, 11, 16, 85,143, 91,195, 36,140, 28,205,194,102,249, 26, 98, 65, 40, 37,158,181, 0,154,212,234,104, 9,
+112, 65, 95,131, 18, 5,235,137,244,226, 44,148, 57,231,173,193,117, 32, 97,164,216, 87, 11,167,152, 68, 53,139, 1,205, 82,174,
+217, 15,204, 89,157, 6, 57, 90,129,227, 76, 13,159,173,131,119,102,225,101,125,145,144,225, 3, 35,140, 94, 35, 87, 83,194,233,
+212,163,235,214,186, 30,176, 7,160, 48, 97,200,120, 14,176,169,177,111, 66,128, 11, 30,135, 97, 68,140, 73,213,138, 36,149,154,
+148,102, 17,171,206,130, 76,146,100,120,239,208, 44, 90,140,121,196,113,127,128,119,172,163, 13,171, 78, 29, 49, 26, 31,176, 63,
+ 30, 53, 41, 71,128,227,225,128, 5, 51,188,211, 81, 70,235, 28, 30,238, 30,176,223, 29,141,212,131,105,244,110,112, 4,136,142,
+ 92,136,245, 27, 31,143,163, 17,154, 24,203, 85,131,247, 62,120, 31,227, 16,241,246,155, 87,104,154, 6, 71,137,184,187,187,135,
+ 3, 35,199,132, 97,119,192,234,242, 82,199,158,113, 4, 11,112,236,123,188,243,225, 7, 0, 1,111, 95,189, 85, 56,129,131,142,
+208,185, 1,107,118, 43, 78,125,143,126,136, 85,248,166,170, 80,253,247, 97, 76,232, 7, 65,183,230,154,189,235, 68, 52, 61,136,
+161,162, 8, 27, 31,167,148,144,104,250, 51,164, 90, 36,162,217, 58, 88, 69, 94, 37,192,195, 83, 1,158,233,123, 44,132, 52,100,
+244,253, 8,246, 14,139, 38, 96,181, 89,163, 91,175,208,116, 14,195, 97,192, 79,126,248,255,226,197,167,159,227,249,199, 31,224,
+119,254,229,247,193,174,197,203,175, 95,227,238,237, 45, 78,135, 35,134,135, 29,216,121,116, 77,139, 55,187, 61,210,224,177,242,
+ 1,239, 92, 93,227,217,102,141,118,217, 32,187,136,227,253, 1,187,227, 1,187, 97,196, 67, 44,232, 83,237,138,198,164,169,114,
+107, 98,172, 25, 24, 50,176, 31, 6, 36, 18,136,115,245,192,111,151, 29,206,206, 54,154,160,182, 92, 98,115,190,197,229,213, 5,
+206, 47, 46,192, 77,128,140, 99,141,214,165,226, 69,181, 54, 69,136,204, 51,110, 34,160, 50,246, 44,151, 12, 21,130, 28,207,148,
+236, 83,176, 9,196,122, 21,158, 96, 23,147,173,138,106,138,158, 38,165,105, 23,227,204,239, 41,179, 0, 30, 41, 24, 70, 0,177,
+132, 23, 97,178,170, 60, 26,129,137,141,185,107, 81, 50, 21, 29, 25, 2,166,201, 71, 42,223,218, 7, 82,161,191, 73, 13, 6,155,
+ 96, 29, 84,240,176, 58, 57, 83,151, 2,235, 1, 1, 45, 14, 10,140, 72, 4,179,141, 59, 61,122,109,234, 58,195,124,213,243,144,
+152,156,100,186,216,139,189,204, 94, 27,157, 10,152,136, 41,219,120,213,138, 22,199, 2,112,130,136,171, 62,106, 50,148,180, 88,
+160, 77,165,103,208,236,253, 43,151,146,129,122, 38,149, 67,249,253, 92,159,155,137, 60,103, 76,255, 12, 80, 96, 35,155,161, 90,
+214, 80,124,217,121, 84, 93, 91,101,142,179,173, 23, 60, 82, 28,244,235,184,176,195,167,113, 53, 91,232,144, 32, 35,142,217, 10,
+ 27,189,232,216, 32, 51, 41, 25, 51,128,185,178,190,245, 32,143, 53,105,140,156, 25,179,237,236,172,182, 46,153, 96, 68, 85, 84,
+ 89,252,239,181, 22,157,112,125,115,150,127,233, 46,235,106, 3, 4,145,104, 13,151,212, 75,176, 8,245, 10,184,165, 20, 1,211,
+159, 39, 83,164, 35, 27,248,198,190,207,170, 85, 33, 45,247, 64, 74,198,147,108,162,181, 84, 38,101,186,119, 46,118,203,233, 51,
+103, 30,124,179,243,149,119,149,121,178,171, 17,102, 19,143,162, 1,180, 60, 17,178,176,165,210,225, 22,171, 92, 1,206,120,207,
+232,143, 61,134,168,121, 1,133, 29,207,153, 17, 9, 22, 77,171,133, 46,153,242, 60, 21, 65,163, 87,231, 73,182,137,115, 48,113,
+118,206, 25, 57,233, 93,151,181, 35, 65, 91, 65, 50, 9, 77,219, 98,164,132, 56,166,234,129, 47,248,217, 82,124,165, 52,183, 95,
+210,252,147,172, 34, 54,199,245, 51,236, 24, 85,167, 64,150, 84,201, 16, 93, 29,148,194,199,156, 81,236, 8,142, 2,124,136,122,
+ 54,165,140,254,208, 35,111, 71, 52, 22, 62, 22,156, 67, 38, 65,202,202,126, 39,115,157,193,123,248, 54, 52,112, 62,160, 63, 28,
+ 48,166, 8,112,152,198,125, 37,146, 81, 84,112,195,134,188,203,146,208,180, 11,116,203,165, 90,217, 78, 3, 4,218,165,213,113,
+150,189, 64, 57,101,120,231,113,218, 31, 48,244, 3, 22,157,230, 95,251,208,192, 49,240,112,123, 91, 13,249,211,126,169, 18,168,
+ 43, 83,183, 13, 65,189,180, 57, 33,180,122, 57, 62,125,254, 46,206, 47, 47,240,250,197, 75, 28, 79, 39,116,237, 2, 47, 95,124,
+137,227,195, 30,174,105,176,219, 29,176, 8, 1,103,103, 75,220,223, 29,213,194,145, 19,154,229, 2,151, 87, 23,184,125,243, 6,
+ 78,128, 16,116, 10, 17,135, 1,206,121, 27, 73, 10,134,195,136, 56,142, 86,193,114, 5,234, 40, 43, 62, 33, 24,182, 53,155,151,
+ 84, 82, 6,137,114,218, 51,165, 58, 70,142, 57, 65,216,169, 26,114, 38,116, 74,153,107,103, 57, 39,106,217,180,182,144, 18,148,
+219,126, 26,129,156,177, 58,223, 98,181, 93, 97,209,117,104, 67,139, 55, 47,111,241, 15, 63,249, 41,110, 95,223,225,187,223,255,
+ 29,124,244,189,143,112, 24, 6, 60,220,188,192,254,110,135,120, 58, 34,237, 85,179, 16,217,225,245,161, 71,235, 58, 92,110, 22,
+216,120,143,167,155, 53, 92,208, 11,105,220,159,176,219, 29,112,127, 60, 97, 31, 35, 6,139,162,117,222, 91, 87,145,113,206, 1,
+ 75, 8,134, 28,113, 31, 19,198,146, 36,199,122, 72,119,139, 22,155,179, 53,218,182,197, 98,187,194,230,108,139,237,118,131,243,
+203, 11, 52,134,248, 85, 97, 89,177, 48, 21, 1, 24, 89,122, 81,217,169,231,106, 59,209,195,103,234,152, 80, 3, 17, 38,123, 26,
+ 74, 33,106, 94,254, 2,161, 33,139, 49, 68,185,212,205,134,166, 65, 10,206,200, 78, 60, 89,134,216,212,170,164, 42,228,210,137,
+ 43,121,202,246,172,197, 71, 92,186, 70, 46, 86,160, 89,150, 52, 19, 28,154, 89,110, 60,106, 55, 94,134,159,201, 8, 79, 98, 29,
+141, 24,151, 26,246, 61,168,170, 53, 77,187, 75,235,136,116, 77,192, 54, 9,152,196,152,196,217,158,207, 9,201, 73,179,132,169,
+226,247,174, 86, 56, 27,113,167,210, 85, 39, 19,113,150, 28,104, 76, 19, 4, 98,170, 81,155, 21,238,227,100,138, 22, 22,133,169,
+ 76,168,207, 89,212, 43, 77, 74,113, 18,174,252,234, 89,253, 82, 44,250,134, 3,157, 44,112,108,213,159,173,161,181,192,113, 38,
+194,172,151, 75, 70,202, 17, 9,118,176, 59, 45, 95,136, 66,101, 7,192, 4,126, 49,151,244, 60,163,137, 25,157, 78,171,129, 92,
+247,187,204,133, 59, 96, 93,187, 36,253, 92,137,174,159,100,102, 35,171, 41,102,196, 22, 87, 45,186,190, 48,219,215, 36,189, 20,
+235, 78,231, 98,193, 57,160, 71, 30, 49, 6, 38,199, 0, 77, 19,168, 34,218, 52, 73, 39, 83,225, 56,228, 89, 4,174, 60,250, 11,
+106, 64, 14, 85,180,159,253,217, 22, 71, 90,216, 78,182, 17,151, 42, 14, 52, 70, 72,156,126,222,199,168, 95,123, 78, 92, 9, 14,
+178, 9, 65,237,232,105, 34,206, 49,234,164, 18, 50,137,255, 42,234,181,124,127,245,181,210, 92,164,224,180,161,236,179,146,230,
+ 98, 54, 30,125, 89,203, 25, 92,202, 57,167,208, 54,150, 42, 46, 20,201,186, 66,181,159, 95,201,121,152,180, 97,128, 21,181, 9,
+ 46, 56, 91,151,194,244, 78,132,225,168,164,206, 18, 28,147,108, 58, 75,100, 9,126,146,109,238, 85, 86,101, 9,206,117,213,159,
+207,198,170,119,166,169,132,185, 8, 96,228,202,224, 85, 15, 80,162,198,137, 13,180,214,170, 48,218,143, 94,181, 83,136, 24,210,
+160,185, 7,182, 50, 11, 94,215,124, 49,235,207,226,172, 80,105,152,181, 83,143,105,196,105, 28, 17, 37,163, 41,236,104, 76,187,
+151,152, 45, 74, 15, 58,130,200,105, 64,219, 53,104,156,195,155,253, 30, 17, 90,193,162, 74,235,245, 98, 19, 17,140,167, 30,203,
+243, 45,246, 55, 55, 64,210, 29, 79, 19, 2,154, 38, 96,191,219,227,230,237,107, 69, 59, 22,208, 70,158,196, 82, 92,156, 46, 73,
+171,190, 56, 40, 80,193, 59,143,197,114,137,119, 63,250, 16,177, 31,113,247,250, 45, 22,139, 14,135, 67,143, 23,223,188,196,134,
+ 8,227, 56,226,230,126,135,237, 59,207,224,201,226, 72,163,210,133,174,223,125,138, 56,246,216,191,186,199,197,245, 37,214,231,
+ 75,132,125,208,137,128,247,182,243, 20, 12, 67, 95, 43,215,218,121,101, 96, 28,149,151,204,222, 16,128,105, 4,210,168, 30, 82,
+ 98,195, 36,114,149,141,150,139,203, 21,161, 21, 21,129, 67, 81, 65, 90,130,151,192,180, 11, 58,254, 98,114, 24,135, 17,253,169,
+ 7,224,112,118,190,193,122,179,212,113, 84,240,120,241,245, 43,252,252,239,127,142,124, 58,226,251, 63,248, 62,158,126,240, 62,
+110,111,239,177,219,157,208,159,142, 72,125,143,120, 60,169,207, 17, 17,201, 5,108, 87,107,108,125,139,165,103,108,218, 86, 47,
+ 67, 38,196,152,176,127,216,227,126,127,196,110,136,232,101, 84,150,128, 87, 28,109,234, 7,108,157,195, 57, 49,250,152,176, 79,
+130, 30, 2,177, 66, 15, 4, 52, 93,192,122,187,193,106,181,196,106,179,198,246, 98,131,245,102,133,139,203, 75,116,139,165,226,
+ 32,147,142, 48, 41,207,196, 42, 66, 53, 7,128,106, 92,167,177,166,133, 38,165,173,217, 93,166,238,207, 14,210,156,235,133, 90,
+236, 62,168, 59,102,175, 59,101,153,101, 19, 81, 41, 14,184,122,137,115, 25,250, 90, 60,170,100,212,100,170,210,245,122, 31,234,
+ 58, 72,236,114, 43,157, 37, 74,212,174,161, 36,139,251,139, 81,248,239, 51,107, 19, 77, 76,244, 82,210,136, 36, 85, 23,176, 22,
+ 13, 57, 97,234, 14,202,142,206,172,165,165,195,202, 86, 8,176, 83,129, 13,102,152,216,122,249,215, 88, 72,219,169,210,132,216,
+173,222,226, 2,120,171,188,118, 54,191,180,117,102,245,194,225, 42,158, 42,238, 19,201,102, 19, 42,119, 13,219, 97,139,210,221,
+ 41, 9, 47,101,245, 0,195,138, 34,194,183,244, 16, 52,141,238,139,149,167, 80,198,156, 21, 21,194,147,246,162,124,120,116,212,
+156,193,190,211,169, 65, 25, 73, 67, 71,183,165,216,171,211, 49, 34, 16, 41,155,223, 89,113, 52,142,163,138,244, 48,137, 47,137,
+169,126,134, 74,151, 87,132, 85,197,178,148, 69, 25, 13, 58, 57,164, 42,134,205, 54, 26,198, 44,121,143,202,122, 71,242,196, 64,
+175,106,120, 59, 39,242,183,147,246,102,197, 81,249, 94,172, 8, 36,153,194,113,184,232, 63,100, 22,180, 83, 87,151, 82,147,245,
+170,242,190, 28, 65, 37,225,172,194,113, 74,117, 33,149,214, 88, 10,111, 33,117,232, 20, 15,187, 78,119,242, 44,184, 69, 42,145,
+ 15, 89,191,207, 34,242, 36, 46,249,233,168, 54, 51, 45,124, 85,232,134,186, 86,147,199,151,186, 21, 86, 34, 58, 18,159,172,125,
+152, 37, 4, 42,190, 89,239,142, 60,179, 31,143,182,227,119,136, 98,147,150,156,109,117, 42,255,140,136,232,131, 3,121, 45,220,
+149, 4, 71,218,208,141,154, 81, 78, 78,159, 9,211,234, 99,180,207, 60, 21, 16,216, 28,192, 67,229, 31,189,120, 61,123,221,147,
+155, 70,146,237,217,212,115, 30, 53, 30,186,132,115, 81, 8,198,112,112,104, 44, 58,187, 31, 6,139,171, 45,107,105,109, 30,188,
+105,120, 60, 57,155,123, 0,222,219,146,112, 28, 7,228,152,192,237,132,136, 76,146,235,222,174,140, 67,200,148,140,231,171, 53,
+250,253, 9,135,195, 81,143, 70, 27, 97,146, 61, 28,142, 29,134,113,212,240,150,174,197,105, 24,208,199, 1,107,241,232, 22, 29,
+188, 99,188,190,125,131,120, 26, 42,181,199,209,196,142, 86, 31,175,175, 31, 14,199, 14,199, 81, 69,114, 78, 4, 31,124,231, 35,
+ 92, 94, 61,193,219,215,111,144,199,136,174,243,120,115,243, 6,167,161,199,101,187,194,253,195, 1, 99, 26, 17, 28,227,180,239,
+213,235,151, 18,206,215, 91,156,159, 47,240,229,215, 95, 66,118, 25, 87, 79, 46,225, 60, 41,130,207, 84,251, 41,101, 28,135, 1,
+ 68,101, 87,147,145, 51,219, 67,156,209,180, 14,206, 25,200,193, 84,172,117, 60,235,120, 74, 99,179, 41, 71, 17, 0, 85,217,147,
+ 37,143, 21,138, 89,204, 78,173,112,229,112,182,195,181,239, 7,244,199, 17,204,140,171, 43,219, 71, 27,185,238, 55,191,250, 13,
+ 62,251,197, 87, 8,157,195,187,255,226, 7, 56, 63, 59,195,219,215,111,113, 58,244, 24,135, 17, 24, 71,196,211, 17,183,135, 3,
+ 70, 52,184,188,188,196,166, 91,160, 5,161, 21, 96,211,118, 32, 50, 16,130, 36,236,143, 59,220,236,118,184, 31, 34,142, 49,194,
+123,134,247, 65,147,251,226,136, 5, 57,156, 59, 70, 63,246,216,165,132, 99,249,185,216, 65,136, 16, 26,135,245,122,133,237,102,
+137,245,249, 25, 86,231, 91,108, 55, 11,156,157,159,163, 91,173,107,228, 92, 33, 51,101,171,121,156,104,249,166,217,218, 54, 13,
+ 33,122,228, 28, 96,158,118,195, 92, 99, 60,231, 49,165,198, 78, 22,216,159,107,183, 62,151,174,191, 4,157, 20, 66,149, 55,241,
+ 35,163, 12, 6,153,184,238,223,234,232,155,184,218, 83,136, 93, 77,189, 19,243, 60,147,117,235, 69,148, 86,138, 55, 24,133, 80,
+ 72,213, 41,108,129, 20,165,162,159, 18,231,116,124,230,106, 48,131,169,203,205, 95,207,165, 99,158,197,157,214, 11,187,238,213,
+ 80,187,121, 38,135,114, 98,207, 96,181, 38,252,145, 71,228,185,108, 35,102,178,139,141,216,131,105,180, 46,195,200,100,179, 52,
+ 54, 24,172, 36,219, 36, 1, 41, 87, 1, 81,249,154,154, 72, 87, 86, 36,140,218,225, 57,123, 47,179, 21, 67,158,125, 53, 69,121,
+210,172,107,178, 75, 79, 95, 3,153, 46, 60,195,159, 78,174,133,137,201,174,127, 44,195, 7, 15, 14, 30, 57, 43, 3, 94,167, 11,
+206,208,174,185,186,107,156,247,112,206, 4,100,153,181,192,116,133,138,230,235,165,154,163,129,111,188,142,255,227, 56,117,228,
+197, 58, 20, 69,119,232, 4,169,122, 36,178,184,223, 82,128,178, 20,234,217, 52, 22,175, 9,121,101, 66, 41, 48,103, 5,215, 93,
+120, 52,228,111, 85,153, 23, 71, 7,205, 19,254,102,119, 49,232, 81, 23, 93,247,233,229, 51,199, 84,127,207,100,142, 84, 77, 7,
+177,126, 94,116,251, 58, 77, 18, 10,143,125,162, 0, 74,117,138, 40,187,223, 24,242,179,194, 23, 25, 51,209, 99,182,247,222,205,
+ 85, 90,117, 93,192, 12,196,146, 76, 87,132,127, 52, 21,232,206, 68,111, 69, 60, 91, 45,193, 38, 90,206, 89,249,244,222,115,117,
+117,148, 2, 72,191, 70,139,116,228,172,128,153,148,208, 54,139,234, 38,240,222, 91,116, 44, 27,180, 72, 65, 47,222,235,123,209,
+247, 39,227,173,163, 38, 99, 82, 86, 76,108, 52, 50, 29,170, 2,205, 89, 81, 72,117, 74,168,159,109,125,111,235,218,160,204,109,
+108, 13,168, 28,156, 92, 39, 42,204, 2,223, 54, 24, 82, 70, 8, 81,241,237,195,136,135,251, 61,226, 59,217,214,139,250,155,199,
+164, 13,167, 7, 91,116,185,218, 87,185,241, 94,199, 82,253, 48, 75, 66,130,133, 99,212, 1, 10, 50,153,202,209, 1, 77,215,162,
+235, 90,220,159, 14, 24,134, 17, 76, 14,153,156,209,139,180,123, 10, 46,224, 56,140,240, 93,139, 28, 51,134,227, 73,211,129,136,
+224,183, 75,100,114,120,120,232, 53, 71,151,138,253, 88, 67, 57,146, 5, 86, 40,126,147,225, 26, 66,112, 64,142, 9,153,129,197,
+102,131,247,191,251, 33,100, 28,112,124,184, 3,123,193,144, 78,248,230,171, 87,202,120, 23, 65,127,218, 99,209,182, 16, 73,216,
+237,119,200,172,202,214,203,139, 11, 60, 60, 12,120,249,242, 45, 64,132, 32, 9, 44, 12,215, 53,200,158, 16, 37,227, 56, 68,196,
+227,193, 94,116,167, 68,171,152,140,173, 45, 26,254, 84, 58,182,186, 71,210,113, 46,152,171,226,154,146, 85,165,182,147,173, 99,
+ 45, 27,217,164,242,208,102, 76, 35, 54,167,194,187, 52, 8,142,111, 78,200,228,113,113,113,142,229,178, 3, 59, 66, 66,194, 39,
+191,252, 28,159,254,221, 39, 8, 13,225,189,143,222, 71, 27, 58,188,121,115,143,195, 65,187,114, 22, 85,101,222,222,222,163,239,
+123,188,255,252, 25,222,187,126, 7, 43,231,208, 49, 97,219,117, 5,173, 2, 48,176, 59,237,241,246,254, 1,247, 67,194,113, 28,
+ 65,153,224, 66, 11, 14, 65,215, 21, 89,240, 52,120,112,202,216,103,193,193, 48,147,196, 30,228, 60,124, 19,176, 92,173,112,182,
+221,224,252,108,139,237,229, 26,155,229, 18,219,203,115, 44, 86, 75,213, 91,176,250,123,181, 89,178,177, 55,216, 12, 66,100, 96,
+133,169, 59, 83, 36, 99, 48,223,168,138, 73,138,151,251,145,226,205, 46, 38,246, 14,217,171, 48,133, 88,234,126,110, 30, 12,161,
+ 29, 7, 27,204,196,213, 14,180,130,174, 72, 44, 60, 68,153, 4, 98,246, 35,118,190, 90, 71, 98,142,234,133, 22,227,181, 27, 96,
+166,134,163,144,194,107, 64,113,194, 57,148,147,215, 46,255,249,120,181,136,228, 74, 26, 24,108, 95,204,152,128, 79,108, 93, 61,
+207, 68,103,201,108, 59, 42,100, 19, 83,231,146,197,150,170,195,163, 28,164, 21,248, 97,187,121, 49, 49,167,136,122,116, 29, 49,
+224,237,130,203,211,225,203,204,186, 50,114, 37, 52, 99,154, 42,148, 46, 50,231, 34, 52, 51,156,119, 78, 58,206,154,217,118,244,
+ 33,208,127,119,200,240, 98,187,119, 43, 86, 28, 79,214,194,250,220,243, 84, 96,241,108,237,224, 28, 35, 91, 52,237, 56,142, 24,
+ 99,210, 76,170,211, 17, 57, 14, 16,210,248,204, 44, 4,137, 58, 42,207,182,243, 85,251,144,126,102,114, 26, 17,211,128, 52, 70,
+ 19,115, 89,167, 39,105, 34,184,213, 76,121, 85,216,151,228, 59, 97,205,229,166, 44,200,200,136,172,218,163,226,159, 71, 30,167,
+ 88,100, 46,121, 3,102,241,146,137, 91,225,138,126,128,109,140, 77,186,190,211,215,137, 30, 11, 14,205,186,248, 88,228,134,202,
+140,151,194, 29,192,227,164, 55, 88, 28,112,229, 38, 88,232,145,174,154,196,186, 96,195, 35,147,118,165, 37,199,174,124, 29,187,
+242, 99,204, 18,212,184, 48,204, 93, 93, 48, 8,105,232, 21, 16,225, 73,159,108,253, 8,167, 73,168, 55,155, 34, 24,153,215,112,
+ 53, 4, 18,135,156, 11, 62,156,234,164,197, 27, 38, 91,170, 80,114, 38, 26,116, 30,173, 83,141, 51,149,137, 14, 17, 82,172,139,
+ 78,203,120, 48,162,167,155, 4,174, 90, 48,235,251,216,182, 65, 63,115, 86, 64,164,148, 17, 79, 81,159, 67,115,176,104,172, 77,
+ 68, 76,209, 52, 8,177,114,228,173,163, 67, 91, 74, 34,139, 50,206,220,128, 60, 44, 71, 62, 2,228, 53,233,209, 9,188,211,245,
+ 9,121,103,184,105,129, 39,160, 9, 30,141,243,154,249, 65, 4,146,136,195,241,136,113, 28,173,220, 38, 36, 33,140, 73, 16,147,
+ 77, 84,114, 66,150,164,151,186, 11, 29,198, 97,192,105, 24, 76,212, 51,141,160,146,237, 56, 11,239, 24, 0,130,247, 88,117, 11,
+ 28, 78, 35,142,167, 83,149,213, 23, 11, 7,179,131,243,250,245,135,227, 17,141, 37,255,220,237, 31, 16, 92, 64,183, 94, 99,213,
+117,200,167, 30,167,253,193,170,250, 60, 27,241,145, 9,244, 74, 94, 47,170,229, 46,198, 17, 41, 3,239,126,248, 46,174,158, 92,
+225,254,246, 6, 99,138, 8,190,193,171,175, 94, 99,216, 31,176,104, 29,198,126, 64, 28, 18,218,166,193,195,238,132,253,254, 0,
+ 98,194,246,108,141,166, 9,216, 61,220, 33,166,140, 54, 56,245, 35,146,192,135, 6, 96,143,148, 18,246,251,123,176,115,240,228,
+108,199,111,194, 11,166,234,247, 77, 41,214, 3,204,147,109,144, 44, 93,139,205, 82, 19,105,186,244,189,243, 54,114, 86,234, 79,
+ 54, 27,140, 62, 36, 84, 99, 25, 29, 24,195, 41,225,176, 63,130, 59,224, 98,179,210,168, 70, 7,140,125,194,175,127,254, 37,190,
+250,252, 43,108,222, 57,199,251,223,253, 16, 20, 24,251,195, 14,227,208, 35, 13, 3, 88, 18, 40, 70,220,188,121,139,200, 30,223,
+251,237,223,198,251,239, 61,133, 79, 35,188, 0,231,109, 7, 72, 68,162, 8,120,198,233,212,227,213,219, 59,220, 31, 6,244,227,
+136,152, 19,124,235,208,249, 22, 30, 4,196,136,179,166, 1,242,136,187,216, 99,200,122,160,137, 35, 32,120,184,198, 99,217, 53,
+ 56, 63,219,226,236,234, 2,203,139, 45, 86,203, 21,206, 46,207,209, 53,157, 90, 37,115, 68,202, 17, 49,153,160, 71, 50,216, 94,
+ 59, 85, 1,231,106,195, 18,202,179,232, 93, 86, 74, 90,233, 48, 72, 11,128,146, 93, 95, 9, 82,204,154, 97,206,108, 43,144, 0,
+204, 59, 92,171,158,185, 86,219, 50, 3,133, 88, 6, 58,123,176, 97, 24,137, 92,245,171, 26, 26,162,230, 48,215, 40, 81, 83,182,
+151, 29,221,156,187, 62,183,204, 20,213,188,126, 63, 86,200, 76,180, 12, 59,221, 77, 93,173, 57, 82, 10,168, 96, 45,112,105,230,
+ 99,101,204,243,213,245,226,102,158, 4,152, 42,152,225,218,225, 83, 85, 73, 59, 99, 68, 23,238, 3, 63, 42, 46,166,200, 74,154,
+ 14,116,155,108,100, 76, 66, 39,170,139,109,122,236,251,215,145, 84, 77, 49,195,183, 56,240,250,186,228, 41,152,102,150,242, 86,
+ 84,224,117, 47, 41,147, 53, 79,217,218,190,118,200,206,196,152,138,115,197, 35,206,125, 74, 17,195,233, 8,244,154,123,144,178,
+ 22,182,131,141, 45, 75, 33,137,172, 9,146,202,158, 24, 32, 24,225, 45,196,163, 78, 8, 76, 24,108,117,152, 42,158, 77,107, 67,
+ 4, 56, 86,138, 36,121,167, 60,127, 98, 19,219,250,106,149, 20,179,238,234, 42,147,173,196, 42,151,134,152,237, 79,166,215,103,
+ 63,247,152, 0, 0, 32, 0, 73, 68, 65, 84,133,170,228,108,154,250,101,209,127,236,210,203,179, 46, 60,127, 75,197,254,109,129,
+ 29,190,101,141,171,220,246, 89, 65,153, 19,234, 46, 55,211, 68,167, 19, 82,209,112, 9,169,145, 92,194,129,138, 8,211,220, 3,
+182,174,210,226, 13,245, 89, 96,226, 10, 48, 19,203, 96,208,104,227,153,215,125, 50,209, 63,242,208,107,226, 93,130,119, 4,179,
+105,163, 13, 94,117, 79, 52, 5, 21, 77,220,116, 32, 56,182, 98,212, 94, 27,131, 35, 57, 98,243,223,107, 10, 91,127, 74,255,108,
+146, 81, 86, 45, 28,252,244,181, 16,244,253, 9, 41,198,170, 59,112,182,170, 72, 41,218,175, 79,239, 83,209,205, 8, 4,217, 52,
+ 59,176, 16, 46,170,231,147,113, 18,156,238,216, 27,118,117, 76,239,157, 83, 75, 30, 3, 28,212,194,167,233,111,197, 58,219, 32,
+165, 3,250, 99,175,247,146, 37,129,150,105,102,153,173,193, 49, 56, 4,120,199,130, 67,212,234,195,151, 81,187, 76,244,155, 36,
+ 9,153,188,125, 36, 53,205,205,123,143,195,225,136, 49,233,174,204,147, 84, 79, 46,219, 14,161, 31, 7,244,199, 35,158, 92, 92,
+ 96,232, 7,196, 40,144,152,177, 88, 45,176,104, 90,236,246, 71, 60,220,189, 5,177, 87,166,181, 76,234,217,170, 29, 97, 85,125,
+251, 16, 32, 73, 48,244, 17,221, 38,224,131,223,250, 46,144,129,211,241, 0, 2,208,247, 3,190,249,236, 43,172,182, 43, 12, 41,
+227,176, 59, 34,120,173,188,246,251, 3, 98,140,184,222,158, 97,117,185,198,152, 70, 28,118,123,120, 7,120, 38, 19,223, 49, 68,
+185,129, 24, 15, 71,245,216,123,101,214, 67,102,123, 41, 51,248,171, 96,193, 33,152,181,136, 72,115,134, 73, 13,165, 90,149, 71,
+235, 68,202, 14,140, 38,238,119, 5, 76,176,155,198,170,230, 9, 30,134, 81,247,143, 62, 96,185,106, 17, 26,253,251,247,247, 9,
+111,190,122,129,135,221, 78,237, 97, 79,158, 96,136,130,241,216, 27,241, 46,194, 19, 33,193,225,213,235, 27,196,156,241,123,255,
+226,247,112,177,221,226,120,183, 3,197,136,149, 87, 21,240,152, 19,194,162, 67,148, 17,175,222,220,224,254,112, 66,159, 51,134,
+ 49,162,235, 26, 52,161,209,202,114, 28,113, 21, 60, 58,137,216,141, 35, 78, 57, 99,176, 85, 11, 57, 7,223, 4,248,198, 97,187,
+217,226,242,233, 21,214,219, 53,186, 69,135,213,118,141,102,209,214, 24,197,108,123,212,156, 35, 28, 38,209, 86, 21,245, 84,162,
+154,237,194, 11,253,156,228, 81,247, 65,252, 24, 47, 42, 82,172, 41, 38,169,149,199, 59,229,122,192, 49,215,195,113, 30, 24,162,
+ 34, 44,174,226, 60,153, 99, 89,193,143, 0, 15, 52, 75,127, 42, 22,174,249,255, 85,198, 2, 48, 3,177,148, 17, 50,215, 85,129,
+ 88,110,122, 21,216,160,100,152,103,164, 24,171,221, 75, 71,246, 30,160, 18, 23, 25,109, 15, 57, 11,214,168,187,118,174,137,115,
+142,189, 10, 90,193, 85,177, 94,186, 18, 33,101,220, 23,161, 23, 88,197, 60, 73, 24,136,246,250,242,164,109,147,122,129,207,114,
+172, 31,153, 1,181, 32,171, 71,155, 1,149,138, 87,189, 94, 34, 52,189,246, 5, 23, 90,130,106, 98, 38, 43,220, 39,202, 26,113,
+174,224,158,218, 97,146,252,127,108,157,231,150, 28,199,177,173,119, 68,102, 86, 85,247, 24, 0, 4, 9,208,136,114,199,220,251,
+254,143,115,238, 49,148, 68, 11,146,112, 51,211,221, 85,105,226,254,136,136,204,106,232, 44, 45,173, 37,137, 16, 48,232,174,202,
+ 12,179,247,183,119, 66, 45,238, 9,143,158,142,167,228,216,138, 44,130, 20, 53,171, 32, 29, 38,180, 77, 70, 8, 13,108, 55,171,
+ 12, 87,111, 67,208,168,106, 24,147,129, 87, 42,213,209, 1, 99, 28,234,205, 39, 59, 82,119, 94,111,195, 90,123,129,198, 73, 39,
+ 50,198, 97, 7,243, 46,129,205,196,104, 93, 27, 66,160, 79, 20,239,238,128,129, 77, 2, 28,162, 36,187, 96, 35,159, 8,145,251,
+ 43,246,207, 40,174,215, 52,253, 98, 71,232, 19,169, 81, 76,181, 46,128,148,182,139,147,237,151,173,173, 18,250, 38,155, 59, 13,
+141, 72, 49,186,134,136, 65, 96, 70,174, 35,102,214,149,244,206, 83, 16, 83,172,251,229, 39,220,186, 46,166, 63,203, 52,172,124,
+188,211, 87, 44,135, 4, 42, 98,196, 53,133,203,104,138, 31, 97,138, 22, 62,230,194, 59, 82, 86,123,107, 21, 49, 4,108,246,217,
+148, 82, 80, 90, 65,138,140, 92,122, 89,131,214, 4, 49, 76, 72,115, 28,146, 2, 8, 46,167,179,137,103,117,205, 26, 2,163,229,
+ 13,165,180,190, 14,208,134,163,245,194, 56,144,114,227,139,105,117,200, 38,205,126, 54, 52,187, 16, 34, 9,230, 41,130, 80, 13,
+192, 52,120,251, 33,234,185, 90, 43, 33, 68, 86, 22, 70,136, 40,165,225,178,173, 56,208, 1,156, 34,194, 22,118,200,102,155, 24,
+214,106,193, 55, 32,172,121,179, 8, 74,203,125,222,245, 2, 78,161,242,240,128,121, 74, 16,129,117,246, 52,108, 51,246, 67,249,
+101,183,174, 23,172,231, 85, 5,108,235, 10,169,170, 80,189,185,187, 69,101,198,249,241, 17,235,227,201,170,193,235,177, 82, 87,
+148,154,226, 55,132,128, 92, 10,214, 13,248,226,155,215,120,249,213, 43, 60, 61, 60,160,150,140,152, 34,222,252,252, 11, 74,206,
+184,189, 61,226,227,195, 25, 79, 79, 39,112,140,168,173,225,178, 93,144,107,198,146,148, 53,127, 58, 61, 33,136, 89, 88,164,162,
+ 85,193, 42,181,199, 74,230,220, 48, 77, 19,152, 85,213,158,237,139,237,252,118,219,163,106,245, 69, 61, 93,141, 73, 5, 61,129,
+245, 75,232,168, 80, 30,226, 8,119, 66, 57,114,211, 81,239, 94, 68,213, 90,177,174, 27,136, 9,135,219, 3,210,164,170,243,135,
+247, 39,252,227,191,255,129,199,199, 19, 94,126,254, 25, 94,188,124,137,117, 45, 88,183,162, 81,132,185,216,222,153,240,238,237,
+ 59, 4,102,252,223,255,243,239,184,191, 63,226,252,240,128, 73,128,133, 8,168, 5,107,217, 16,166, 4, 4,198, 47, 63,191,197,
+251,167, 39,108,181,225,178,109,122, 16,198,136, 24, 35,164, 21,220,166,136, 91,102,156,214, 21, 79, 34,216,152,209, 2,129, 99,
+ 68,154,103,164, 41,225,230,230,136,151,175, 63,199,253,243,103, 88, 14, 11,238,159, 61,195,180,204,200, 37,163, 88,117, 62,196,
+108,210,225, 17,227,229,165,157,144,135, 16, 40,130, 57,153, 64,108, 16,184,254, 89, 17,140,222, 57, 55,251, 61,189, 82,223, 95,
+232,126, 49,244,209,154, 29, 32,220, 59,101,253,181,193,172, 46,163,179,236,179,194,110, 79,210,164, 46,234,148, 54,231, 70,251,
+175,119,202,218,232, 0,180,235, 7,237, 2, 54, 90,221, 21, 53, 59, 72, 7, 39, 93, 55, 24, 60,197,149,245,165, 22,228,188,161,
+228,172,233,135,110,225, 19, 50,107, 25,239,226, 90,197,246,199,232,251,127, 30,222, 65,219,197,177,230, 9,216,255,167,162, 89,
+ 87,214, 6,238,210,144,163, 54,245, 29,228, 45,167, 77,118,104,223,167,208,153,189,168, 9,144,157,205,167,131,210, 48, 46, 51,
+218, 5,219, 52,207,122,166, 65,172,243, 3, 86, 33, 35,246, 73,177, 70, 34,251,238,158, 76, 8,216,119,149, 86,120, 83, 45,144,
+156, 53, 29,177, 21, 13,236,104, 5,144,218, 17,187,170,139,208,247, 46,151,140, 92,183,190,154,168, 45,235,229,109,159, 77,109,
+122, 81, 52, 91, 97, 40,248,165, 42,140,171, 86, 13, 3,242,125,179, 33,128,133,131,229,103,200, 46,120, 72,139,165,218, 77,243,
+ 97, 28,127,246,107,107,107,253, 98,247, 34,213,125,243, 99,116,108, 34, 81, 43,186,252,217,237,161, 60, 93, 31,178, 75, 51, 23,
+190, 66, 86, 19,211, 85,110,129,119,191, 14, 75,246,130,108, 12, 94,248,106, 14,195,221,173,212, 12, 78, 72, 87, 99,246, 93,216,
+174, 21,113,210,187,119, 29,102, 82,199,107,143,160, 28,251,187, 48,247,169, 69, 8,172, 84, 83, 75, 52, 75, 81,157, 68,209, 48,
+172,125,122, 0,103, 91,212, 78,244,243, 44,134, 82,117,199, 30,246, 23,172,137,243,226, 20,251,116, 89,131,110, 26,242, 37,155,
+155, 65,119,246, 68,172,231, 89,105, 87,241,174,216,227, 94, 13,167,110,227, 51, 85,191, 7,111, 14,135,101,150,153, 16,131, 65,
+157,172,176, 36,227,147,164, 52, 33,197, 9, 8,220,127,253, 52,165, 30, 9,220,233,155,253, 50,186,246, 82, 68, 78,136, 13,122,
+112, 52,235, 32, 53, 57, 42,154,208,193, 67, 72, 4,141,204, 95, 30, 2,182,124, 65, 46,181,127, 89,181, 42,156, 36,134,104, 51,
+253,136,203,229,130,229,176, 32,197,132,211,195, 3, 68, 52,216,227,254,249, 51, 52,138,248,248,225, 35,202,186,234,126,196, 33,
+ 30,123,129,135,147,156,152,192, 8,184,228,130,121, 6,254,242,111,255,138, 86, 86,172,151, 19,152, 9,143,151, 13, 63,252,240,
+ 51,158,221,223, 65, 74,195,187,167, 39,220,163, 97,158, 3,214, 75, 70, 45, 21,135,227, 4, 74, 9,235,163,118,246,105,137,104,
+ 15,130, 82, 11, 40, 48,114,110,104,172, 35,167,178,163, 59,137,104, 39,227, 15, 92,237,254,211, 49, 71, 10,187,209, 43, 7, 70,
+ 76, 9,107, 51,192,128,141, 81, 7, 90,116, 39, 62, 49,129, 16,139, 62, 68, 13,130,198,130, 41, 69, 28, 14, 51,226,164, 7,194,
+195,175,143,248,240,246, 17, 83, 32, 60,123,249, 28,105, 89,240,244,152,251,161,202,205, 5, 38,140,211,233,130, 16, 18, 94,191,
+122,137,105, 78,168,151,130,155,116, 64, 61, 63,162,230, 13,185, 21,132, 41, 33, 78, 51,126,252,249,103,252,254,238, 17, 43, 53,
+108,155,170,249, 15,243,132,101,158,192, 16, 76,194,184,143,140,135,211, 9,143, 85,176, 50, 41,142, 51, 6,164,121, 65,136, 1,
+ 83,100,188,122,253, 10,175,190,250, 28, 28, 19, 14,199, 35,226,148,176,149,162, 47,124, 72,102,143, 26,246, 47,208, 24, 39, 59,
+ 26,146,119, 40,153,230, 30,117,232,225,171, 42, 88,119, 36,212, 49,134, 53,193,150,244,233,206,117,128, 72,223,111,187,229,202,
+187, 15, 25,220,125,177, 81,219, 30, 55,203,124,141, 50, 29,133,136,134,194, 48,239,178,175, 59, 60, 71,174,198,157,234, 51,114,
+187,154,217, 91,204,106,198, 24, 94,236, 97,133,178, 75, 56, 68,219,233,235,218,166,182, 60,126, 95,179, 13, 9,105,151, 47, 46,
+112,219,121,147,119, 40,109, 8,181,126,112, 57, 31,190,203, 17, 76, 91, 80,225, 59, 74, 45,230,157,164,133, 46,230,145,190, 34,
+217,181,145, 32,110, 61, 81,177,203, 5,236, 29, 32, 26, 2, 69, 47,112, 84,197, 28, 70,150,188,107, 78,204,162,216,108,255,204,
+ 52, 46, 35, 21,146,202,136,163,221, 21,107,158,212, 71,228,254, 92,173, 62,244,236, 9,136, 28, 64, 4,108,167,179, 29,174, 26,
+ 85, 73,136,230, 93,142, 72, 33,162,150,166, 4, 56, 79,186,226, 6, 80, 49,149,177,232, 97,106,170,116,215, 31,244,213,154,141,
+166,245,178, 54, 72,139,127,100,165,152, 98, 58,216,202,197,211, 5,205,253,225,184,105,119,122,200,181, 40,209,159,127,125,119,
+ 58, 98, 73, 69, 87,206,186,104,205, 44, 82,218, 49,170, 88,211, 71,193,216,173,130,134, 88,114, 55,246,234,246, 73, 31,225, 50,
+233,196,194,227,135, 71,135, 95, 45, 30,221, 26, 59,177, 29,121,115, 74,224, 96, 68,116, 3, 6,174, 17,206,190,195,183, 97,136,
+ 77, 54,148,210, 81,188, 0,198,112, 25,176,105,147,154,193,139, 8, 64, 49, 38, 1,251,101,104,227,245, 24, 8,129,109, 90, 96,
+232,214, 90,202,184, 67,100, 88, 15, 99, 12, 35,223,221,133,155, 0,162, 93,154, 34, 26,224,149,115, 69,222,114,183,190,134,228,
+147,176,102,202,125,250,167, 41,157, 17, 0, 80,125,245, 96, 93, 55, 39, 65,172, 22,130, 37, 5, 19, 77, 72, 97,175,177, 82,119,
+ 15, 27,219, 97,158,103,117,142,225,220,239,142, 24, 35,114, 46, 56,157,158,240, 74, 94, 90, 14,132, 54, 41,106,195,212,194, 52,
+196,136,196, 51, 98,110,197,212,182,187, 42,208, 21,192,208,170,180, 65, 5, 20,190,219,238,176, 10, 75,140,145, 90, 32,134,187,
+ 99, 27,233,125,252,248,132,187,103,154,208,182,173, 27,164, 54,188,248,252, 37,110,110,239,144,215, 51,158,158, 30,177,109,219,
+ 0, 47,248,180,117,208, 23,123, 39, 71, 32, 60,157,158,240,197, 55,175,240,249,235, 87, 88, 79, 43,106,222,192,203,132, 55, 63,
+126,143,211,233,140, 63,124,126,143, 31,127,121,135,237,124, 1, 79, 51, 90, 21,108,219, 6, 2,227,112,184,193,122, 94, 81,106,
+193,237,205, 1,113, 74, 26,103, 26, 25, 18, 2,182, 92, 17,142, 73, 69,123, 80, 85,107,148,134, 41,204, 32,206, 38,182, 40,246,
+130, 74,183, 3,105,181,101,221,132, 87,148, 83, 64, 43,140,104,159,105,147, 48, 60,157, 96,128, 90,183,130,232,136, 20,168, 77,
+192,161, 97, 10, 1,243,156,112, 88, 18,100, 43,120,247,118,195,246,177, 98, 90, 24,183,207,238, 16,166,132,188,105, 21, 29, 2,
+148, 94, 71, 0,167,132, 45, 23, 4, 8,158,223, 29, 48,217,131,113,115, 56,162,254,246, 59,242,233,140,181,173, 72,203,130,229,
+120,131, 95,222,188,193,207,111, 62, 32,115, 69,206,250,217,207,115,194, 60,205,106, 59,202, 5,207,227,132,135,243,138, 83, 41,
+216,162, 9,182, 34, 99,158, 15,152,150, 25,204,130,175,190,124,133, 47,255,244, 45,230,192, 72,135, 25, 33, 37,228,214, 6,179,
+217,129, 24,210,186, 64,112,207,133,110,125,151,214,118, 59, 85, 54,134, 57,131, 17,199,248,154,116,199,214,175, 23, 27,135,246,
+ 87,108,135,121, 21, 25, 21, 44,217, 14, 28,206,164,111, 35, 10,245,211,131,103,223,165,127,250,207,250,225,212, 6,253, 11,181,
+129, 2,153, 90,223,247,217,218,185,168,213, 73,250,248,216,119, 94, 20,120, 12, 51,201,255,191,142,152,229,161,122, 39,205, 74,
+102,183, 61, 18, 35,164,104, 22, 38, 86, 3,205,206, 50,197,108,138,124,219,221,161,175,125,120,228,115,219, 13,223,204,231, 75,
+163,125, 86,190, 55,121,183,133, 29,119,222, 60,248, 14,158,177, 96, 13, 37,189,169,222,164,143, 87,125,202, 6,165,105,137,137,
+158,132, 91, 31,199,235,247, 25,186,199, 30,187,142,189,214,134,148,162,117, 92, 99,133, 98,141,143,174, 61, 40, 2,148,205,215,
+ 31,245, 98,161, 10, 10,113, 20, 21,118,233, 11, 11,216, 18, 35,137, 53,145,144, 17, 16,172, 91,175,101, 32, 71,165,173,170,134,
+ 15, 24, 60,123, 23,180,118, 79,178,141,198,113,141, 88,239, 26,164, 90,213, 98,215,244, 66, 31, 23, 53,235,102,201,166,131, 42,
+156,211, 11, 59, 24, 36,167,118, 46,127,181,159, 95,221, 19,216, 55, 58, 67,105, 54,158,183, 62, 73, 25,186, 5,236,146,224,135,
+ 88,115,156,171,157,179,190,203, 60,111,150, 51, 47,109,248,116,154,122,110,205,206,182, 43,136,253,207,223, 21,179,174, 8, 25,
+213, 10,250,180, 83,113,193,138,176,245,224,154, 43,251, 92,247,172,155,198, 5, 10,242,146,214,208,136,112,105, 21, 91, 46,170,
+ 49,161, 1,166,209,204, 12, 49,154, 13,247,162,190,245, 0,157, 1,250, 42,165, 96, 57, 44,154,210,215,154,197,100, 87,112, 99,
+164,152,250, 4, 46,176,224,124,190,216,100, 10, 96,210,105, 88, 21, 85,207, 95,119,198,246, 14,120,113,196,232,132,185,200, 46,
+ 52, 68, 15,104, 18,229,137, 35, 69,182,232, 92,189, 51,107, 19,132,164,246, 53,159, 18, 71, 63, 63,217,186,239,156,241,248,225,
+ 1,248, 51,174,154,138,214, 44, 85,175, 5,101,173,112, 5, 55, 3,186,244,135,195,126,113,112,209,129,113,156,149,137,172, 66,
+129,209,101, 8, 66, 74,125,247, 73, 76, 72, 41,161, 86,193,251,247,239, 16, 99,196, 90, 86, 52,105, 40,107,198,243,103,247, 8,
+199,128,167,243, 5,151,135, 71,148, 42, 35,113,113,183,183,236,187, 32, 64,171,171,214, 16,166,132, 47,191,249, 70,131, 20,182,
+ 13, 32,194,118, 94,241,195, 15,191,224,238,217, 13, 46,219,134,199,119, 79,106, 45,136, 1, 37, 87, 60,157, 51, 98,140,152, 98,
+196,229,124, 65, 94, 11,136, 3, 82, 10, 56, 78, 9,105,153,148,193, 91, 27,242,249,210,199, 64,217, 94, 74, 88,148,163, 38,180,
+237,119, 87,170,162, 84,117,226,158,245, 62, 97, 58, 44,136, 41,233,168, 40, 70, 85, 47,146,199, 28,180,157,152, 68, 44,160, 69,
+109, 66, 33, 48,166, 41, 32, 6,194,249,105,197,239,191, 61,224,233,221,134,120,100,220,220,223,128,195,164, 49,135,202,213, 67,
+ 46,103, 84,169,136,179, 98,107, 67,173, 72,196, 8,243,132,195, 97,198,171,207, 94,160,126,120,196,211,227, 25,235,118, 70, 72,
+ 1, 55, 47,110,240,203,111,191,225,135,159,223,160, 82,197,165,168, 24,114,142, 17,199,105,198,148, 2, 40,103,220,134,132, 83,
+221,240,176, 93,112,178,106,154, 66,196, 97, 57,224,120,179, 96,158, 19,190,120,245, 10, 95,124,251,149,170,125,205, 78,148, 91,
+233,201, 98,212, 19,134,220,246,101, 69, 33,235,133, 84,219, 14, 68,209, 2, 74,110,168,185, 2, 98,226, 20, 11, 35,113, 90,152,
+187, 11, 66, 24, 10,112,135,140, 18, 15,225,151, 39,114, 9,174,209,176,218,205,140, 29,158,194,100,106,255, 55,246,153,212, 87,
+123,244, 33,198, 75, 41,234,100, 10,130,236,161, 43,125,140,183, 11,206,216, 17, 8,117, 92,187,239, 88,124, 36,238, 30, 89, 64,
+ 26,117,252,104,103,163,179, 9,254, 68,121, 5,228, 83, 9,242, 76, 0, 71,115,169, 37, 9,187, 80,145,145,247, 29,186, 66, 93,
+122,176,138, 71,128,214, 49,209,112,190,184,103,194,211, 14, 10,202,123, 65,209, 78,231,224, 93,243,238,239,231, 69,145, 19,239,
+252, 14,148, 54, 62,215, 43, 56,138,217,240,124,239,152,156, 12,230,216, 81,242,245, 91,236, 7,164, 22, 64,220,219, 98, 45,142,
+212,121, 35,168,144, 92, 84,195, 83, 11, 2, 8, 85, 10, 90, 46, 64,105,144, 82, 45,126, 84, 47, 96,130,170,224, 69, 42,196,119,
+230,173, 1, 85,167, 11,254,125,130, 90,207,247,214,207,143,175, 68,122,176,213,215,240,221, 27, 90, 91,148, 41, 15,169,186, 2,
+ 48, 15, 30, 25,168,169,138,185, 24,140,247,176, 31, 89,107, 1, 22,122, 78,132,238,192, 45,105,205, 59,205,158, 43,128, 46,242,
+218,219,223,246,251,214,235, 21,214,126, 45,228,218,136,218, 87, 55, 87, 65,105,192,213,238,219,167, 38,154,176, 73, 87,191, 54,
+ 18,129, 59,216,232,138, 14,172, 66, 65,249, 84,172, 39,182, 81, 24,108,148,125,151,175,123,228,134,199, 39, 93, 15,187, 69,140,
+ 13,208,165,241, 24,193, 70,166, 98, 25, 2,106,117,132,243, 33, 0,108, 89, 27, 8, 7,180, 52,115, 23, 72, 19,112, 98, 68,203,
+ 66, 15, 70,137, 41, 57,107, 49, 64, 58,213, 9,129, 81,106, 69, 17, 30, 25, 19, 87, 89, 18,131, 1,224,246,229,106, 77, 48, 59,
+ 36,167,170,198, 63, 26,223, 61,250,218,204,222,239,101, 57, 96, 89, 22, 76,211,108,171, 64,237,208,153, 96, 46, 44, 70, 46, 21,
+101, 83,210,165, 59, 39,116,176,204, 86, 92,234, 52, 44, 94, 74, 67, 41, 67, 84,209, 59, 22,210,142,160, 52, 69,180,198, 16,176,
+149,140, 32,109,160, 41,161,190,207,188,106, 37, 28, 2, 97, 94,102,156, 63,126,192,186, 22,220,222, 29,177,174, 5,185, 84,112,
+138,184,123,118, 7,146,128,243,199,143, 56, 63,124,212,234,213, 70,133, 46,220,184, 74,218, 34,177,240, 2,193,139,151,159,225,
+197,231,159,161,228, 77,125,174, 68,248,229,231, 55, 88, 79, 23,188,248,242, 11,188,123,251, 59,182,173, 96, 54, 59, 76,206, 5,
+ 28,128,101,153,212,184,143,134,105, 94,208,214, 13,145, 9,203,205,130,105,153, 77, 77, 93, 81,214,162,149,157,219, 52, 88,103,
+ 69,185, 84,148, 98, 7, 82,147,142,254, 99,214,159, 33,128, 81,108, 39, 59, 77, 19,166,101,193,214, 46, 8,107, 64, 16, 61,130,
+ 26,177,117, 65,214,225, 51, 89,228, 36,161,133, 6, 4, 45, 90, 2, 69, 92,206, 25,231, 83,133, 84,194,124,191, 96, 94,110, 85,
+ 61, 91, 20, 6,195,108,241,122, 33, 96,185, 81,178,220,227,187,247,184,156, 47,184,191,187,195,221,237, 45,190,122,249, 18,143,
+191,189,195,249,227, 71, 60,124,252,136,229,176,224,238,249, 11,252,250,235, 91,252,240,211, 27, 84,142,216,138, 10,134,230, 41,
+225, 48, 77, 56,164, 4, 42, 77,115, 0,164,225,105,203, 88, 3,219, 4, 34, 98, 58, 28, 48, 31, 14, 88,150, 25,135,155, 3,158,
+127,254, 2,204,193,132,147,214,161, 75,195, 68, 17,125, 21,103, 47,113,171,202,212,223,143,180,225,209,172,230,229,111, 61,205,
+194,210,187, 58,132,134, 92,154,211, 21,237, 3,187, 46,125, 71, 62,238, 87,238,251, 45,103, 33,137,119,235, 14, 93,129,238, 89,
+251, 52,200, 46,120,247,218,250, 24,111,191,111,220,115,234,251, 10,128, 53, 15,221,185,244,251,168, 93,146,157,145,206,119,250,
+172,199, 12,219,222, 85,107, 72,157,242,216,232, 0, 66,101,248, 89,201, 98, 92, 45,122,180,185,253, 13,176,139,162,117,103,128,
+126,102,230, 79,234, 93, 63,174,216,225,100,120, 90, 31,181, 75, 87,149, 19, 80, 9, 69,246,159,177,194,110,244, 48,149,221, 37,
+189, 23, 47,238,162,177,165,237, 16,168,131,176, 5, 98,115, 21,168, 8, 13,182,210,114,117,184,143,235, 67, 48, 45,135,211,199,
+236,189,103,123, 23,251,232,189, 40, 35, 91,189,197,220, 85,227,181, 86, 52,163,163, 81, 19, 48,151,221, 34, 65,212,166,217,209,
+192,100,107,142, 33,200, 10,190, 31, 30,161,200,250,231, 85,181,169,181,214, 52,208, 37, 4, 27,213, 82,255,140,155, 99,119,253,
+ 96,165,206, 51,238, 41,112, 62, 98,214,144, 75,233, 5, 83, 19,117,213,120,226, 29, 59,234,212,139, 41,227,243, 59,105,111,223,
+ 25, 19, 26,164,238, 34, 68,119, 95, 12, 15,181,163,173, 39,228,234, 98,239,153, 26, 93, 16,167,214, 90, 71, 8,107,182,184,173,
+ 2,140,161, 31, 2,117,206, 60, 80, 13,166,229,151,179,185,181, 67,210,252,250,254,222,232,223, 59,133,128,205,178, 11,104,247,
+ 57,215, 42, 87, 49,168, 28,149, 58, 88,106, 70, 35,193,150, 11,242, 38,125, 42,234,107,181, 64,132,200, 90,208, 69,230, 62,146,
+111, 6, 67,106,187,223,179, 20,125, 39, 98, 8,104, 85,159, 21,207, 82,143, 41, 98, 58,204, 42,172,139, 17,235, 89, 59, 95,101,
+172, 19,226, 20, 33, 80, 56,151, 59, 3, 6, 3, 64, 58,127,159, 92, 51,149, 24,220,180, 64,136, 33,234, 68,134,199,119,144, 66,
+ 64, 12,186, 18, 82, 62,129,174, 18,167, 20, 49,207, 19, 82,138, 40, 77,179, 8, 66, 8, 54,106,215, 38,164,228,205, 62,163,169,
+187, 63,138, 61, 63,129, 2,230,105, 82,167, 85, 46,234,191,228, 30,250, 80,205, 39, 25,117,196, 71,106,199,106,214,209,112,112,
+ 64,130, 62,112, 20,116,151, 92,136, 84, 13,205,140,199,199, 51,150,105,194,113, 62,224,231,223,222, 33, 23,193,237,253, 29, 62,
+255,252, 57,106,206, 56,157,206, 88, 79,167, 94,193,195,189,160, 46, 74,234, 98, 28, 5,160, 76,211,132,249,120, 64,156,103,151,
+ 8,224,252,120,198,207,223,255,138,219,227, 1,185, 20, 92, 78, 39, 80, 36, 36, 11,204,216,242,134,105, 82,230,238,227,211, 3,
+ 14,135,103,186,234, 44,250, 34, 56,206,180,214,128,243,233,140,162, 89,107,136, 83, 66, 89, 51,152, 68,125,176,107, 81,207,178,
+200, 63, 97, 28,117,220,107, 49,146, 28, 49,207, 9,233,152, 16,114, 70,156,162, 21, 68,150, 71,189,123,200,163, 52, 4, 12,136,
+ 3,235, 41,143,245, 92,112, 57,101,240, 20, 49,223,207,152,166,131,237, 75,204, 95,217, 42,164, 2,105, 90,112,115,119,196,225,
+102,193,251, 55,239,241,254,237, 7, 28, 14, 11, 94,190,184,199, 31,190,248, 18,167,119,239,112,122,255, 30,143, 31,222, 67, 2,
+240,226,139,207,240,254,225, 35,190,251,219,143,144, 56, 97,171, 21, 91,221, 48, 69,214, 11,253,112, 0, 89,218, 81, 34,193,135,
+203,138, 26, 84,125, 61,165,132, 52, 77,224, 20,112, 56,204, 26,215,122,123,131,105,158, 16, 99, 64, 92,230,190, 58, 9, 28,187,
+104,133,105,196,210,178,231, 9, 88,194, 24,172,128, 3, 44,169, 11,142,145, 52,145,161,235,122,237,162, 96, 3,191,184,192, 78,
+200,226, 80,157, 58,231, 74,117, 47, 70, 3,237, 56,251,130, 98,240, 15, 14, 42, 64,171,173,129,164,218,158,219,121,228,225, 42,
+ 3, 29,144,238,151,118,241,146,170,178,119, 54, 45, 26, 86,185,209,137,154,138,159, 26, 40, 72, 23,210, 41,116, 38, 14,114,152,
+ 91,177,236,231, 80, 10,155,245,109,210,192, 98,162,182,160,201, 98, 38,167,233, 41, 81,221, 74,135,189, 61,167, 89,241,178,219,
+149, 90,245,238,118, 57,111,238,106,109,200,101,211, 73,139, 11,171,124,207, 23, 24, 84, 70, 71,214,204,134, 37,159,240,201,135,
+ 63, 95,139,146,218,196,176,151,250,157, 48, 19, 40,144, 17,225,176,179,204,237, 83,203,164,255,103,191, 28,187, 0, 46,132, 94,
+ 80,140,131, 51, 24,122, 51,118, 68, 45, 51, 35, 82,236,212, 48,183, 3,138,184, 50,157, 76, 0,172,197, 28, 74,213,100, 45, 10,
+218,233, 89,162, 91, 67,237, 65, 33, 26,229,107, 97, 84,117, 36,162,233,223,189,238,166,139, 90,180,214,106,118,224, 96,226, 53,
+ 49,218,157, 23, 57,181, 1, 84, 13, 75,218, 76,243, 64, 29,117,204, 96, 29,217,119,238,188,244, 38,107, 8, 33,185,115, 20, 70,
+130,159,186, 28,212, 10, 70,125, 4,220,187,125, 23,195,237, 73,115, 54,154,222, 51,106,123, 29,226, 43, 38,167,100,217, 14,188,
+250,127,183,189,186,230, 60, 40,132,136, 58,201,157,118,110,133,193,103,208,232, 90,163,251,245, 2, 72,208,106,209,188, 17,225,
+126, 7, 4,203, 50, 47, 77,167, 37,193,130,130,106,177,207, 41,114,127,119, 82,136,136,193,138,187,160,103, 78,173,122, 94,182,
+218, 52, 42,218, 46,117,157, 0, 41,135,164,212,138, 20,212,194, 54,207, 19, 16, 4, 40, 64,152,168,251,223,131, 17, 9,167, 20,
+209, 74, 67,169,178, 19,215, 93,163, 50,216, 69,137, 52,226,144, 21,133,158,172,197,176,103,135,217, 70,239,218,189,115, 8, 61,
+150,149, 99, 80,134, 61, 49, 10,106, 23, 5, 42, 1,207,178, 68, 90, 5, 73, 49,174, 3, 95, 77, 35, 57, 38, 76,211, 13,138, 84,
+196,146,115, 23,180, 88,205,165,169, 79,174, 70,214,229, 45,182,156,193,104, 8, 8, 40,100,202, 73,123, 48,244,160, 72,152,162,
+142,130, 63,190,127,192,225,230, 8, 68, 29, 25, 68, 0, 55, 47,110, 17,150, 5,173, 49, 78, 15, 15, 56,157,205,118,230, 35,160,
+110,221, 29,190,187, 24, 35,230, 41, 64,234,132,229,230,160,104,199,192,216,106,197,111,191,252,138,199,143,239,113,243,249, 87,
+184, 60, 61, 0,141,145, 44,209,108, 45,218, 93,164, 20,177,230,140,181,100,220, 48,237,118,174, 4, 9, 19,150,227, 17,231,167,
+ 13,231,167, 51,106, 4,210,178, 32, 36,128,182,172,214, 5, 85, 83,217,129, 61,230,236,100,163, 19,167, 7,185,215, 48, 78,201,
+ 40,108,161,251,139,137, 73, 35, 85, 93, 32,230, 98, 44, 31, 69, 66,119,106,235, 57,163, 93, 42,226, 50, 99, 62, 44,136,105,234,
+ 41, 72, 33,250,193, 10, 44,243,130,227,241,128,155,219, 5, 31,127,255,128,223,126,250, 5,203,225,128,175,191,124,133,175,191,
+122,141,199,223,222,226,241,221,123,156, 30,158, 80,208,240,252,139,215,120,220,206,248,219,247,191,160,133,136, 34,130, 82, 50,
+ 34, 51,150, 52,225,176,204,122,248, 74,195, 18, 3, 30,214, 11,178,123, 30, 57,128, 99,212,240,156,195,130,195,237, 65,125,144,
+243,140, 56, 39,164,121,214,184, 78,216,126,182, 41,114,214, 15, 35,183,238,121,186, 90,171,130,198,181, 35, 45, 71, 90,151, 88,
+113,227, 45, 55, 15, 30,154, 83,202,100,140,155,121, 96,204,251,190, 61,152,160, 17, 77,254, 73,224, 54, 14, 87,238, 48, 15,146,
+161, 24, 38,251,254,250,116,128,105,135,243, 20, 99,177,219, 72,221,252,245, 94,112, 80,208, 24,196, 79,149,176, 20,163,193, 72,
+ 6,191, 97,156,163,158,208, 85,245,229,102,199,138, 74,223,211,142,221, 5, 13,150,180,197,196,182,166,194, 72,230, 79, 24,226,
+230, 79, 23, 23,197,181,253,248,212, 63, 76,139,135, 69, 86,152, 83, 43,230, 94, 25,214,249,190, 17,187, 26,227,234,142, 79, 47,
+ 3,234,217,216,110, 63,234,251, 84,247,188,251,247,105, 42, 20, 29,177,143, 14,180,251,178, 69, 16,253,123,180,194,153,254, 23,
+207, 53, 58,120, 75, 11, 5, 87,250, 91,236, 74, 47, 44,200,254, 28,229, 72,232,247, 25,231, 25,221,129,232, 16, 30, 1, 66,180,
+255,119,136,182,247, 28, 65, 86,204, 4, 50,174, 54,122, 34,158,190, 59,212,253,210, 86,104,214,214, 15,176,189, 99,192,131,116,
+ 52, 94, 19, 54, 2,166, 1,193, 38, 21, 34, 59, 90,251, 90,233,104,252,244,125,103, 93,180, 80,188, 10,104, 17, 15, 56,218,143,
+204,109,172,221,157, 9, 3,141,170, 29,125, 27, 55, 80,195, 88, 17, 57,233, 91, 6,147,189,135,202,216,185,233, 5,184,152,224,
+ 76, 76, 47, 34, 68,125,133,235,133, 16,197,221, 37,239,230, 6,222,191, 39,227, 17,171, 93, 52, 75, 88,119, 83,135, 20, 76, 55,
+208,100,204,139, 76, 63,147, 98,180, 2, 78,250,119, 15,201,182,127, 55,111,127,147, 46,176,109,187,176, 1,105, 90, 56,207,203,
+108,132, 79,203, 59,175,213,102, 32,212,241,196,181, 89, 33,213,234,245, 20,103,183,137, 34,179,139,162,234,179,155,194,220, 65,
+ 88,108, 43, 20,134,130,197,180, 33,208,252,245, 42,202,153,143, 41,128, 67,210, 60, 10, 17, 3,111,185,107, 71,159,155, 42, 5,
+181, 65,241,228, 24, 32,158,177,122, 84,216, 89,220,182, 13,213,237, 19,221,114,160,202,214,196, 1, 8,176,177,123,196,226,217,
+211,236,222, 91,181,118,132, 24, 32,102,152, 71,171,120,255,240,132,151, 47,158, 35, 48, 33,215,140, 16, 25, 95,188,252, 66,199,
+200,149,240,241,221, 71,148,186, 97, 50, 81,140,179,133,189,102, 12, 32,160, 54, 68, 98, 76,105, 66,109, 13,203,205, 81,171,150,
+200,120,250,240, 30,111,190,251, 30,211, 28, 64,129,240,112,186,224, 64,132,196,186,151,201,185,130, 99,128, 24,106, 53,236, 52,
+189,243, 20,177,214,128,138, 11,106, 46, 40,181, 98,173, 21,136, 42,206, 8, 28, 80, 75, 65, 14,140, 24,210,136, 60,172,186,183,
+209,195,138,181, 90,178, 42, 45, 48, 35,164,128,120, 51,129, 26, 33,146,239,126,165, 91, 61, 60,199,184,143,123, 91,211,207, 29,
+130,237, 2, 32, 50,230,195,130,180, 36, 16, 71,212, 18, 52,178, 47,160,251,143,231,229,128,233,118,193,243, 23,183,120,120,251,
+ 27,126,248,251, 79, 72, 49,224,207,127,252, 26,223,124,249, 21, 30,223, 62,224,225,237, 91,156,222, 63, 96, 45, 43, 94,125,253,
+ 53, 54,102,252,191,255,247, 29,114,141, 40, 66,200, 69,215, 15, 83, 76,184,155, 14,136,129,209,164,224, 48, 77,120,186,104,144,
+ 11,197,164, 20,167, 73,215, 19,105, 74,184,187,187, 3,197,128,152, 18,142,119,183,152,142, 71,240, 52,171, 47, 25,128, 20, 25,
+ 7, 17,128, 98, 66, 28,233,202,102, 27,111, 82, 83, 18,157,240, 96, 19,128, 59,158, 51,198, 48, 64, 13,204,182, 63,166, 78, 38,
+243,180, 40,120, 55,181,139,168,148, 42, 59, 70,247,232,156, 73, 70, 62, 14, 3, 16, 14,138,102, 13,193,239, 57, 85,252, 6,197,
+141,106,103, 80, 77, 53,223,174,176,153,173,234,190,212,119,154, 21, 98,107,145,216, 71,237,193, 19,219,200,125,232,102,213,106,
+ 74,162, 11, 59,250, 92,136, 1, 20, 20, 82,209, 74, 53,229,179, 97, 67, 91,129, 52,237,136,200,172,127, 12,178,201, 17, 84, 56,
+103, 72, 86,118, 76, 40, 73, 15, 76,161,238,151,180,203,167,169, 0,203, 53,249, 76, 30, 12, 99, 73, 79,212,239,107,140,220,182,
+182,235, 74, 76,217, 47, 29, 1,105,214, 51, 61,188, 32, 21, 26, 71,104,205,129, 24, 74, 25,187,108,120, 25,121,211,186, 87, 24,
+ 81,165,159,162,112, 7,230,180, 89,126, 55,117,244,108,237, 9,101, 26, 60,235,218, 31,142,161,219, 23,115,182,238, 47, 37,245,
+232,187,248, 77,188, 32,242,184, 76, 79, 53,211,140,234,152, 8, 44,220,147,190,200,166, 21,128,244,233,129,127,158, 99,165, 42,
+221,186, 8,195,198,238, 3, 80, 68,154,178,223,131,185,189, 13, 53,123,173,163, 30,235, 34, 31,167,147, 71,185, 82,235,207,163,
+ 79, 9,125,167,203, 38,100, 35,218, 87,120, 24, 10,239, 98,127, 14,201, 21, 24,199,181, 46,253,215,182, 81,220,117, 61,160, 12,
+ 40, 88,179, 85,131,199, 65, 51,116,239, 92,199, 28, 65,233,115,196, 29, 28, 83, 76, 20, 75, 8,157,219,175, 59,102,203, 87,104,
+ 13, 66,213,126,126,117, 12, 85,115,142, 56, 65, 48,144,234, 9,246, 86,205, 72,218,241,250,109, 21, 72,113,213,167,156,113, 94,
+ 21, 72, 70,162,231, 70,173, 43, 82,154,193, 70,138,243, 4, 72, 10,192,178,204,104,210, 84, 44, 7, 66, 46,254,198,219,100,143,
+ 8,155,197,103,251,251, 48,156, 30,220, 19,247,186,109,185, 53, 48, 53, 4,182, 46,221, 4,166, 45,171,120, 52, 37,107, 64, 44,
+183,161, 65,144,162,250,219,131,185,133,132, 24,136, 9, 21,132,104,250, 48, 45,136,245,210,102, 14,154, 24, 72,140, 64,186, 78,
+ 10,162, 77,108,190, 92, 16,115, 45, 35,105,137, 20,165,231, 22,156, 37,205,200,109,195,150, 51, 38,195, 51, 22,114, 8, 22, 43,
+199,153, 0, 14, 19,230, 24, 48, 45, 51,206,219,134, 42, 27, 14,135, 25, 37,107, 69, 28,231, 5,183,183, 71, 44,145,241,225,225,
+ 9, 31, 30, 63,104,142,237,126, 66,208,170,118, 14, 58,107, 64, 36,210,139,229,144,144, 46, 23, 28, 22, 29,191,183,188,225,237,
+ 63,126,193,195,233, 9,247,175, 62,199,227,227, 3,182,203, 25, 55, 83, 66,108,140, 86, 11, 96,118,130, 92, 50,168, 22, 28, 38,
+237, 6, 99, 12, 72,203,132,144,207,192,198,248,240,254, 1,155, 48,230,227,140, 44,222,181, 0,144, 12,105, 12,132,180,131, 53,
+216,120,151,199, 67, 69, 54, 94, 39, 14,136, 49, 34,197,197, 98, 98,181,203,149,102,178, 93,177,174,159,204, 30,199, 77, 69,111,
+ 34, 96,139,187, 13,199, 5,113, 94, 64, 20,141,105,157, 77,180, 97,202,200,101,198,225, 56,227,197,109,196,249,227, 71,252,253,
+ 63,126,134, 72,195, 95,254,245, 47,248,230,171, 87, 56, 63, 62,226,225,247,183, 56, 61, 60,226,148, 47,248,236,243,151,168, 9,
+248,143,255,248, 79,172,155, 34, 77, 75,217, 16,152, 48,133,136,155,121,194,178, 36,180, 90, 49,135,136,117,219,240, 80, 50,132,
+ 24,115, 74,224,121, 70, 12, 1, 83, 0,158, 63,127,129,120, 88,176,173, 27, 62,123,118,139,195,113, 54,139,149,236,124,247,205,
+ 2,146,162,190, 20,141,108,119, 43,125, 87,217, 88, 16,144,140, 76,101,157,233,174,221,100,142, 29, 61, 67,246, 12, 32,232, 14,
+182,149, 58, 2, 47, 48,160, 40,204,174, 6, 85, 6,248, 62,161,170, 83,210,122,248,135,118, 84,145, 89,153,222,158,105,224, 54,
+ 20,139,127,116,200,135,239, 81,181,219,110, 64,136, 26, 43, 26,147,161, 79,205,147,108, 99, 93, 54,144,135, 66, 88,184, 11,227,
+252,103, 8,213, 56,112,100,104, 86,231,166, 27, 30, 54,216,206, 91,209,149,163,209,238, 23,137,104, 33, 72, 49,244, 67,197,247,
+217,166, 13, 82,139,101,231,231,123,206,188,237,114,253,239,101, 42,246,144,162, 42,155, 75,247, 91,218,129,183, 11,103,114, 63,
+ 52, 90, 39,203, 57,255,190,106, 48,243, 46,212, 6,215,188,114,208, 46,123,222,186, 21, 17, 8, 34,216,104, 91, 93,128,183,235,
+111,187,239,191,162,251,249, 41, 66,245, 29, 32, 35, 2,234,251, 8,138, 74,226, 34, 77,237,227,104, 63, 75, 8, 6,172,105, 38,
+162,227,193,154,183,239, 94,215, 58,134,216, 4,208,178,146,230, 16,175, 65, 68,210,174, 11, 59,189, 44, 91,207, 62,191,102,173,
+239,130, 88,108,212,222,120,156,175,161,237,112,169,181,234,119, 97,158, 58,247,222, 55, 43, 90,221,226,213, 90,181, 70,106,124,
+ 76,173,209,206, 81,128, 46, 46,116,134,122,221,197,174, 58,147, 30, 77,140, 55,194,134, 35,214,113,180, 23,109, 30,216,130, 62,
+117, 98,195,146,198,225, 82, 18,178, 75,244,122, 82,235, 54, 68,246, 81, 15, 25, 76, 69,160, 65, 59,141,174,163,129, 77, 44, 40,
+238,182,106,210, 67,148, 80, 27,216,132,178, 49,250,132, 40, 43, 0,166, 89, 31,205,102,243,100, 70,224,136,104,211,181,203,150,
+ 81, 1,204, 4, 84,169,200,165,129, 36,140,253,191, 21, 82, 69,128,155,121,193, 60,235,165, 30, 66, 80,152, 90,173, 61, 53,146,
+195,100,234,242,114,101, 47,220, 79,143,156,110, 39,213, 96,105, 36,224,160, 80, 46, 45, 88, 9,145, 68,215, 9,139,169,226, 27,
+ 84, 95, 99, 43,161, 24, 35, 98, 76, 72, 41,129, 98, 64, 48,189, 75, 45,205, 50, 17, 10, 2, 17,110,166, 3,164,149,254,156, 69,
+102, 43, 75,109,250, 11, 70,205, 5, 92, 74,233,208, 1,199,178,122, 0, 64,138, 17, 37, 23, 85, 53,183,106, 99, 18,116,143,160,
+ 86,196, 6, 35,153, 34, 82,140, 56, 61,157, 64,204, 72, 41,160,214,134, 72,192,237,253, 17,105,158, 65, 33,225,227,199,247, 40,
+231, 51,144,102,179, 88,140, 17, 82,109, 21, 82,138,170,184, 67, 64,156, 34, 32,192,124,115,139,180,204, 0, 51,126,255,233, 55,
+188,249,251,247,152,142, 11, 98, 10,120, 56, 61,170,240,128, 24,213, 90,177,101, 89, 64, 68,216,114,214,131, 78,244,241,156,231,
+ 4, 78,218,193, 83, 21,252,250,235, 91, 92,107,129,196,165, 0, 0, 32, 0, 73, 68, 65, 84,114, 70,156,102, 68,138, 40,155, 6,
+208, 48, 71,165, 44,237,132, 64, 61, 23,152, 25, 81, 29,175,195, 43,206,100,118, 35,233, 80, 6, 31, 59,145,120,174,207,128,168,
+ 52,239,160,154,118,173,233,184, 96,138, 11, 4, 19, 74, 83, 33, 19,219,232, 55,196,136,101,154,112,115,156,113,115, 51,227,116,
+190,224,239,255,253, 3,206,219, 5,127,253,243,183,248,211, 31,191,197,211,186,225,227,219,247,120,122,120, 68,121, 58,225,217,
+171,207, 48,221, 31,240,223,255,245, 29,158, 30, 10, 16, 2,214,124,177,151, 36,225,144, 34,150,121,209,203,135,117,116,250,148,
+ 87,173, 26,231, 9,241,176, 32, 26, 68,232,249,203, 47,240,252,213,103,200,151,134,251,231,247,120,241,217, 75,101,113,123,242,
+ 81, 41, 40,101,179, 46, 66,201,253,110,229,169,230,247,173, 54, 46, 14, 28,109,245,224,163,197,112,229, 13,223,251,105, 83, 74,
+152,166, 5,137,146,205,110,248,147,151,201, 21,242,123,208, 12, 13,178, 23,112,181, 87,239, 35,108,178, 9,139,237, 22, 9,154,
+ 93,172, 40, 85, 40,167,128, 9, 48,197, 53, 55,221,175,161,169, 75,130,153, 16, 98, 2,219,154, 37,116,255,181,141,126,237,191,
+215, 90, 59,192,165, 86, 69,202,170,154,149,255, 41, 30,179,153,101,202,250,131,254,119,245,203,251,106,242,208, 87, 63,122,209,
+ 42, 36, 69,174,126, 63,241, 21, 3, 73, 63,232,101, 23, 89,171,158,120,189,212,187, 77,206, 62, 31, 88, 40,147,240, 46, 27,222,
+236, 78, 16,182,253, 40, 58,130,214,187,226,253,159,239,227, 87, 49,172,166,119,175,123, 93,138,167,145, 48,209,142,245, 46, 87,
+164, 62,218,229,219,247,252,119,203, 85,247,160, 31,117,161,112,239, 92,155, 21,218, 28,212,137, 51,207, 75, 15, 1,106,194, 22,
+ 20,227,209,183,165,131,111,164,212,142,166, 29, 33, 56, 59,177,191, 23, 39, 50,252,247,212, 4, 82, 85, 81,143,118,253, 29,184,
+ 0, 16, 70,155,140, 59, 45,130,243, 64, 58, 68,201,178, 26, 26, 10, 64, 5, 44,138,176,133,113,250,149, 88,233,194,185,177,184,
+237,159, 7, 93, 91,172,252, 95,253,153,105, 58,234, 21,155,176, 40,247, 95,245, 27,254,185,245, 24,217, 54,240,181, 3,174, 72,
+125, 71, 46,173, 90, 97, 38,154, 93, 1, 66, 4, 43,145,207,181, 18,254,188,209,238, 59,228,157, 6,131,232,170, 64,218,255,187,
+213, 97,215, 59, 76, 19,102, 11, 28, 99, 18,204,129, 53, 79,220, 86, 44,238, 44, 82, 29,136, 42,193, 47,167,162,239,170,213,253,
+181, 20,163, 2, 74, 71,146,131, 26, 90,174, 72,243,100, 26, 8, 29,129,151,173,154, 93,123,172,187,244, 82,199,152, 98,203, 39,
+148, 73, 47,182, 2,141,100,198, 24,245,130,118,246, 97, 21, 16, 85,204,209,245, 62,176, 50, 73,211, 79,167,168,174, 26, 29,183,
+ 19, 82,156, 65, 8,102, 85,211,213, 72, 21, 1, 79,170, 35,209,252,119, 35, 8,152, 43, 38,132,128,117, 91, 81, 75, 65,244,238,
+199,247,195,186,207, 84,165, 99, 49,229, 38,193,194,228,125, 7, 70,116, 5,133, 16, 2,166,105, 66, 8,132,117,205, 54,202,208,
+ 95,114,123,123,211,173,111, 2,193,229,227, 3, 74,190,104,248, 68,219, 1, 39,197, 59, 62, 19, 65,196,128,144, 18,106,107,184,
+189,191,193,124, 60,226,114, 57,227,135,239,254,129, 82, 11,142,135, 91, 92,158,206,104,185, 42,108, 34,168,104, 35,133,128, 52,
+ 69,108,143,151,238,163,159,162, 96, 94, 52,238,181, 20, 5,204,172, 91,214, 10, 44, 55,196,201, 70, 94, 86,245,164, 20,116,143,
+ 66, 35, 29, 12,205,198, 76,212,224,110, 14, 5, 46, 40, 57, 42,164,212, 65, 30,100, 85,115, 16,173, 60,187,208,129,236,129,169,
+118, 48, 6,198,180, 28, 16,211,162, 15, 97, 94,117,231, 22,128, 22, 26, 98, 92, 48,165,128,233, 38,225,112, 32,212,203, 3,126,
+254,241, 3, 30, 62,158,241,199, 63,126,137,191,252,245, 79,216, 78, 23, 60,254,250, 59,206,239, 31, 81, 78,103, 28, 63,127,137,
+105, 57,226, 63,255,235, 7,252,252,246, 35, 14,135, 35,182, 90, 84,157,159,162, 6, 6, 76,179,117,184,170,168, 62,175, 43, 26,
+128, 52,205,136,135, 5,147,193, 57,158,191,122,137, 87, 95,191,198,135,143, 31, 48, 79, 1,207,190,120, 6, 49,216,129, 91,126,
+202,150,141,120, 59,118,119, 14,234,113,221, 0,153,152,133,193,230,130, 9,112,134,238,232,159,198,174, 41,118, 37,180,142,234,
+208, 47,180, 8,219,124,247, 68,175,110,149, 3,122,183,172,158,221, 93,215, 4,181,176,120,238, 58,153, 31,184, 7,188,176,177,
+248,199,162, 87,161, 40,173,161, 72, 85,101, 52,252,249, 24,239,138,212,177, 94, 24, 29, 90,187,198,218, 98,100, 69,139,141,174,
+155,231, 58, 91, 23,136,221,132, 97,196, 89, 50, 58,199,198,236, 80, 74,219,163,110,107,242,203, 62, 70,127,111,201,124,238,212,
+199,180,109, 79,184,219,141,117,221,186,170, 53,186, 25,222, 56, 24,220,164,117, 58,217, 80,180,155, 73,200,104,104,109,191,199,
+ 37,135,234,132,127, 86, 17,185, 72,172,235, 6,184,235, 5,250, 69, 73,181, 59,112,174,166, 43, 50, 98, 90, 73,118,196, 48,163,
+227,249,206,179,245, 16, 93,143,205,181,253,108, 12,187,212, 61, 70,206, 85, 39, 34,193,139,136,170, 66,173,238, 32, 80,120,150,
+ 96,104, 33,122, 42, 27, 13, 95,119,159, 48, 50, 1,141, 81, 90,237,235,150,161,211,208, 98, 86, 53, 66,154,246, 23,154, 99,117,
+ 13, 55, 45, 13,108,168, 86,245,112,107,241, 55,118,241, 54, 86, 22, 93, 45,233,175,106, 87,123,246,174, 31,161,107, 6, 60,253,
+ 47,207,228,192,203,114, 47, 38, 58,209,111, 15,191, 33,111, 98,168,103,213,139,140,231, 97,143,221,237, 2, 59, 18,115, 9, 40,
+156, 72,237,190,186,174,213, 2,119,231, 71,103, 61, 3, 53,176,145, 17,132,123,234, 96, 35,157, 2,207,147, 10,199,136, 3, 18,
+105, 65,124,146,172, 48, 24,182,245, 38,239, 4,174, 28,208,202,134,167,167, 83,127, 14,155,241, 34, 92, 88,182,143,194,109, 44,
+ 88,142, 11, 4,218,165, 83, 32,163, 14,142, 52,200, 0,160,116,132, 57, 15,188,119,191,144,141,195, 97,239,108,181,220,249, 24,
+ 39, 76, 83,236,162, 64,231,110,133,168,247, 69,240, 9, 72,107,192,164,231,114,163, 8, 72, 64,224,104,226,190, 77, 27, 76, 91,
+181, 20, 17,204,199,163,230,162,180,210,249, 27,100, 68,211,128, 17,163, 27, 1, 21, 9, 85,170,157,172,228,202, 94, 87,125,163,
+ 35, 82, 27,164, 51,132, 25,204, 13,197, 44, 10,243, 60, 89,214,120,193, 97,158, 59,136,225,217,221, 45,242,182,169,229, 70, 8,
+ 31,223,189, 67,109,176,253, 55,153, 44, 15, 26, 61,186, 19,103,204,203,226,217,176, 88,142, 71, 16, 19,222,124,255, 51, 62,188,
+125,135,105, 86,197,245,118,186, 32, 65, 61,209,218,185, 20, 37,158, 25, 58,144,109,239,178,204, 11, 14,203, 2, 98, 21,250,108,
+165,216, 56, 60, 98, 91, 87,101,222,179,118, 40, 33, 48,184, 5,180,213, 81, 92, 46,128,145,222, 29,120, 80,131,238,211, 53,164,
+ 37, 37,173,162,136,117,188,167,163, 84,181, 14, 49, 93, 7, 86, 40, 43, 57, 98,154, 39,164, 52,155, 39,211, 66, 2, 96, 29, 98,
+136,136, 41, 96,185, 73, 72,145,240,116, 90,241,248,246, 1,239,126,125,139, 87, 95,188,198,191,252,235,191,160, 20,205,146,127,
+122,255,128,211,211, 19,158,189,252, 12,135,251, 59,252,215,119,127,195,143,191,188,197,124, 60, 32,183,134, 64, 74, 42, 98,105,
+152, 56, 24,103, 91,223,224, 53,103,108,230, 53, 15,135, 5,243, 52, 97, 9, 1,207, 95,191,196,231,175, 95, 99,221, 52, 9,235,
+254,229, 51,196, 56,161,212,166,137, 73, 61, 7,188,117,241,161, 95,244, 74,116,210, 10,159, 41, 96, 74,169,139, 83,164,139, 6,
+197, 42,109, 87,102, 13,187, 81, 35, 61, 72, 72, 44,255, 73, 44,229, 74, 21, 50,104, 82, 70,204,103,183,174,216,222,137,130, 93,
+236, 21,165, 20,228,172,209,181, 77,170,146,205, 44, 42, 86,204, 18, 70,113, 40,141, 53,206,177,245,223, 75,160,246, 22,112, 0,
+ 71, 30,126,208, 62,230,212,149, 74,224, 17, 87,220,233,115,174, 74,237,248,202,113,209,178,141, 50,105,119, 0,235,120,123,192,
+111,196, 10,200,214,134, 24,211, 89,213,186, 91,108,187, 40,203,225,233,211, 64, 28,250, 39,223,125,207, 32,223,231, 72,187,149,
+137,172, 27, 99,218,145,245, 8, 18, 24,181,177,237, 5, 13,148,179, 11,148,241,201, 19,219,138,105, 72,115,124,117,161,239,193,
+158, 60, 87, 91, 83,112,146,237,131,155, 40,136,197, 47, 29, 63,200, 58,207,221,243,217,141, 44,201,104, 40,238, 85, 14,161,219,
+ 16,253,210,232,121,217, 80,129, 19, 44,201,203, 83,209, 26,154, 77,227, 70, 68,236,222,115, 60, 44,121, 54, 97,177, 61,186, 39,
+183,193, 32, 56,123,254,125,109,173,255,111, 26, 66, 51,120,231,188,139, 48, 17,195,204,142,194,183,130,105,232,227,164,239,236,
+113,141, 42, 38,116,247,136,174, 2,168,255,186,125,183,235, 20,191, 94,116, 16,118,251,119,190, 78,112,235, 89, 7,237, 74,109,
+ 73,178,191,228,229,147,243, 15, 59,107,222,128,219,200,222,206,105,247,200, 8, 15,218, 97,102,101,151, 5, 64, 99, 29,230,191,
+175,152, 78, 34,197,128,105, 74,136,172,116,192, 24, 20,210, 21, 91, 67, 22, 1,170,174,228, 70,192,142,138,201, 30,159, 54, 92,
+ 46, 21,203,141,102,144,139,173, 63, 60,229, 15, 59,203,105,136, 17, 55,183,183,168,173, 97,154, 39,136,136,157, 21,106,137, 12,
+150, 48,168, 12,139,113,255, 93, 5,230, 88, 51,220,106,219, 77,203,168,231,142, 56, 60,205, 5,165, 49,170, 37,217, 69,171, 2,
+ 82,138,231,113,198,211,217,237,126,250, 61,229,178,170,174, 45, 90,113, 16, 24,243, 50, 67, 88,144,107, 53,136, 14, 16,146,106,
+147, 66, 76, 90,137,213, 58,158, 57, 87,108,251, 3, 85,237,133,231,192, 93,230,167,114,255, 17,226,187,135,123,184, 65,191,214,
+138,227,114, 80, 4, 99,107,120,118,123,139,217,254,146,121,219,240,241,247,223, 48,197,212,169, 94,210, 81,160,182, 79,106,181,
+115,213,107,171, 56, 28,143, 56, 62,187,197,122, 58,225,111,255,253, 29, 2,116,127, 93,214, 77, 67, 76,250, 75,172,163,161, 20,
+244, 48, 98,179, 4,196,168,157,123,154, 82,215,247,104, 16, 73, 68, 41,122, 1, 93,206, 39,172,235, 10,105,192,180, 36,132, 52,
+245,189,217,158, 63, 29,108,204, 68,226,156,105,182, 0,155,176,131, 81, 48, 82, 4,106,222,128, 43,225, 78,233, 57,192, 33, 6,
+ 76,203,130,148,102,212, 38, 40, 89,163, 26, 21,167,169,214,150, 20, 35, 14,139,122,133,215,211, 25,143,239, 30,240,219, 47,239,
+240,252,238, 6,255,231,223,254, 12, 22,224,221,111,239,240,248,241, 17, 15, 15, 31,113,251,226, 25,142, 47,158,227,127,254,254,
+ 15,252,240,230, 55,164,121,210,238, 3,140, 37, 37,213, 40, 16, 89,146,153, 86,148,185, 86,172,185, 0, 28, 48, 31, 14,152,230,
+ 9,135,121,194,203, 47, 95,225,197,235,151, 16, 18,172,219,138,229,120,196,205,243, 27,179,111,208,110, 44,165,233,107,128, 34,
+130,153,117,140, 45, 54,177,240, 49,241,136,137,108,150,112,103, 65, 47,130, 14, 2,169, 37,119,219,100, 41, 5,173, 20, 29, 75,
+219,139, 94,107, 53,219, 14, 16, 67,234, 42,103,223,169, 67,254, 25, 26, 83,204,174,217,109, 82, 59,190, 66,175,215,196,226, 50,
+101,247, 76, 59, 1,206,199,135, 49, 34,164, 89, 3, 86,236,197, 11, 20,236,178,208,124,101,241,151,201,126,159, 49,206, 70,223,
+135,251,228, 40, 96, 40,167,199,103, 52, 78,112, 7,173,180,162,157,100,171,109, 88,146,154,244, 34, 70,236, 51, 38, 26, 32, 11,
+197,137,211,232, 40, 33, 3,151,251,201,129,180,183,198,233,120, 82,122,148, 44,119,196,215, 40, 16, 92, 5,236, 28, 11,124,146,
+187, 61,216,243,215,187,229,225,113,167, 46,222,114, 49,224,222, 79, 63,138, 23, 26,112, 21,241,188,119, 82, 53,117, 96, 21, 83,
+ 6,135,209,140,105,137,195, 67,252,103,247,169, 31, 89,138,156,255,239, 98,187,106, 17,218, 37,249, 82,183,237, 57,133,204, 59,
+ 89,231, 33,136, 40,153,108,255,239, 1, 32, 26,122, 3,218, 41,245,101,119, 97, 85,119, 67, 52,253,253, 34, 13,251, 27,174,146,
+242,208,163, 76,193, 52,242, 81, 72,119,201,159, 66,146,122,238,252, 46,152,200,173,153,190,190,216, 55, 21,170, 5,104, 86, 72,
+238, 32,105,114, 29,215,227,133,179, 10,216,118,176, 29,215,130,208,152,186,104,238,133, 95,242,228,146, 50, 43,130,121,104, 58,
+118,246, 75,223,167, 19, 84, 5, 94,204,181, 20, 2,171, 93,141,157, 46, 57, 28, 71,190,202,113, 13, 1, 58, 76, 10,120,124, 92,
+ 85,115,210,179, 25,180, 8,230,206,106, 31, 60,150,195,113,193,188, 76,246,190, 48,242,154, 33, 69, 69,166, 97,231,239, 31, 24,
+232,235, 48, 35,159,122, 48, 15, 80, 26, 12, 96, 19, 99, 26,249,235,164,240,162, 24,212, 30,215,133,130, 2, 20, 91,201,133, 48,
+219, 59, 28, 16,130,122,208, 91, 85,235, 26,199,136,144,130,226,189,163, 70, 97,251,153,230,132,187,158,213, 82,205,101, 50,126,
+ 94,245, 18, 70, 26, 7, 54, 44, 21,167,211,177,170, 86,137, 34,232,163, 47,152, 76, 63, 68,214,139,209,170,213,117,213, 7,254,
+217,221,173,238, 32,167,132,203,233, 9,235,227,166, 81,127, 78, 82,130,138, 34, 98, 84, 28,159, 56, 16, 65,212,199, 55, 31, 22,
+ 76, 41,225,251,191,125,143,247,191,189, 71,152, 21, 74,145,207,151,238,113,101, 81,235, 66, 43, 13, 83, 74,224,121, 2, 88, 20,
+242,194, 1,211,113, 6, 72, 69, 70,211,116,192,241,112, 68,136, 9,231, 83,197,249,124, 65,173, 13,219,186,226,114,217, 80, 10,
+ 97, 57, 46,230,105,214,159, 37, 55,115,132,146, 81,147,172, 42,246,249,104,140, 81,199, 31, 85, 31,210,117,205,104,181, 32,197,
+164,106,122, 35, 53,165, 16,144,230,164,160,153,192, 26, 23,185,173,246,224,113, 7,112, 76, 49, 98, 78, 0, 33, 35,159, 46,168,
+107,193,195,239, 15,184,153,102,252,235,255,253, 55,196, 57,226,227,187,247, 88, 63, 92,240,240,254, 17, 55,207,159,225,230,197,
+ 11,252,207,223,254,129,191,255,248, 11, 66,156, 77,213, 45, 56, 76,179,122,113, 91,211,221, 87,208, 19,162,244, 11,157, 49,223,
+ 28, 48, 77, 9,199,153,241,242,243,207,240,217, 87,175,145,226,132, 92, 10,114,201, 56,222, 29,109, 12, 56,118,211,210,170,138,
+ 18, 69, 61,160, 26, 7,232,246,151, 29, 16,163, 9,106,206,200,219,182,139,153, 36,248,217, 95,107,189,122,201,217, 20, 82,253,
+224,204, 14,216,216, 17,173, 68,237, 39,106,147,211,159, 67, 15,222, 48, 78, 39,123,193,166, 52,245,241,121,255,206,196, 70,194,
+150,185,173, 54, 22,244,192, 29,213, 10, 84, 11, 20,210,125, 23, 40, 88,144, 72,208,189,159, 42,117,244,239,144, 11,234, 86,144,
+ 87,205,231,238, 99,185,214,180,139, 51, 63,150, 42,231, 91, 31,123, 19,211, 21, 61, 77,174, 40, 85,134,131,149,138, 86,178,117,
+ 3,238,200,170,253,100,225,224,234,122,116, 48,146,236,188,222, 96,238,145,165, 87,185, 10,178, 11, 58,150,129,106, 22, 59,172,
+ 59,176,196,221, 5, 59,118,188,142,100,135, 8,203,209,209,251,232,120,182,248,218,190,171,197,160,140, 57,119,191,181,138,108,
+ 23,227,126,175, 26,236,103,246,184,211,224, 35,112, 11, 21,231, 29, 9,175,115,231, 3,239, 46, 12,253, 53, 1,187,159, 61,120,
+146,159,185, 26,140,168,135,125,208,146, 11,148,170,137,102,247, 65, 78,173,162, 90,250,215, 16, 98,106,209, 29, 3, 15,186, 97,
+ 19, 21,117,214,214, 35,118,247, 99,113,105,227,146,135,157,163,254,161,244, 14, 25,163,203,237,191,206,104,138,154, 24, 55,182,
+ 27,221,145, 46,109, 23,244,226, 46,130,182,235,186,219,149, 16,209, 47, 6,222, 37,197,117, 7, 5, 62, 33,211,185, 37,194,241,
+198,221,182,122,205, 65, 39,187, 92, 53,194,182,237, 98, 87,101,100,209, 96, 76, 63,221,166, 75, 76,200,181,162, 88,152, 88, 52,
+232, 10,184,107,139,117,253,213, 87, 87,114,149, 29, 65,204,120, 58,101,156, 62,174,218, 92,216,243, 93, 60,217,144,168, 67,111,
+244,223, 13,199,155, 69,167,129,172, 13,105,222,242,136,106,118, 99, 97, 27,161, 47,236, 98, 62,217,135, 48,233,154, 78,255, 74,
+212,133,179,105, 74,131, 21, 97,159, 65, 10, 64, 12,232, 69, 68, 35, 93,153,196, 20,205, 94,171, 33, 86,243,188,160,201,134,243,
+249,178,211,102,145, 21, 11,154,104,234, 9, 71,101,219, 64, 34,253,125,240,115, 44, 54,214,160, 1,183,106, 97,247, 15,197,226,
+227, 92,197, 89,131, 50,138,197,230, 52,110,213,137, 81, 71,197,143,143, 23, 83,225, 1,151,245,132,210, 26,238,110,110,240,225,
+240,128, 16, 34,222,124,124,196, 41, 63, 97, 90, 22,235, 21,117,215, 22, 83, 64,136,138, 84,172,173, 34,215, 2,212,134,187,251,
+123, 28,110,110,112,121, 56,225,151,255,250, 59,146,237, 81, 90,222, 80,242,138,184, 44,250,187, 16,144,107, 65,171, 43,142,203,
+140,144, 98,255,181, 20, 2,230,152,208, 74,213, 25,127, 10,192, 69, 15,149,199,243, 25, 11, 8,199,229, 0, 1,225,116, 94,113,
+179,108,184,155,143,152,150, 3,206,151, 51, 24,132,137, 25, 23, 84,125,152, 72,173,217, 1,132,100,182, 40, 50,251, 28, 53, 96,
+219, 86,148, 90, 77,209,216,144,115, 54,203, 91, 66,140, 90,169, 5, 48,114, 85, 60,111, 98, 69, 0, 34, 68, 80, 72, 8,161, 98,
+ 78, 5, 4,198,118, 41, 64, 3,182, 83, 65, 20,198,159,255,229,175, 56,222, 29,240,240,251, 3,206, 15, 23, 60,188,125,135,155,
+231,119,120,254,234, 37,190,255,199, 79,248,238,167,159,144,210,100,188,124, 96, 49,198,125, 43, 21,144,166, 83,136, 16,176, 1,
+216,234, 6, 33,198,116, 92,144,150, 9,203, 28,241,234,243,215,248,242, 15,223, 96, 45, 5, 13,130, 75,222, 48, 29,149, 34,215,
+170, 90, 23,153,213, 97, 80,179, 10,180, 82, 74, 8, 97,178,228, 50, 43, 6, 45, 62,195,247,210,125, 92,109,212, 51,118, 13,135,
+143, 57,115, 70,176,233, 68, 12, 81,187,127, 27,223,249,197,184,199,174, 86,169,187, 28, 65,205, 60,231, 96,164, 56,139, 21,117,
+ 56,133,143, 69,155, 19, 1,221, 79,106,151, 41, 39,237,186, 9,164, 98,165,210, 76,200,103, 2,163, 24, 76, 48, 38,190,104, 68,
+105,162,214, 21,102,144,249,188, 61, 89,172, 51,202,173,187,132, 77, 19, 36, 23,181, 0,217,244, 39,196, 56, 98, 84, 5,136, 20,
+213,227,223,109, 81, 13,149, 70,128,205,245, 94,220,160, 50,221, 89,224,137, 91,108, 97, 65, 78, 59, 83,101,186,163,116, 75,173,
+118,161,183,190, 26,104,187,224,143, 61,124,167, 23, 92,142, 37,197, 0, 46,245,233,179, 17,226,250, 72,217, 92, 9,194,116,181,
+207,143,209,254, 78, 82, 32,136,166,252,109,198, 50, 81,106,161, 7,189, 0,172,160, 19,210,189, 44,177, 22,191,132,134, 16, 38,
+ 85,100, 75, 53,198, 61, 13,254, 57,211,224,250,203,216,103,179, 99, 80,141, 45,224, 42,237,102,214, 35,236, 24,243, 29, 56, 67,
+212,197, 88,213,220, 44,112, 65, 86, 15,165,177,239,181,212,206,176,104,173,161,126,146,213,125, 45,116, 84,113,218,136,182,182,
+207,181,217,106, 83,212, 46,204,230, 85, 38,132, 49, 45, 49,104,144, 72,222, 53,142,195, 94,133,189, 90,127, 47,234,130,158, 37,
+108,105,147, 34, 46,168, 99, 27,119,203,248,236,233,186, 35,173,197,117, 39,166,241, 86,179,129,197,133,182,254,255, 23,155,240,
+184, 48,144, 96,171,156, 29,217, 80,164, 42,118,181, 23, 48, 50,210,219, 10,161,212, 81,220, 5,243,161, 7, 75, 98, 19,115, 15,
+120, 66, 33, 27, 35,133,125,162, 4,224,178, 21, 60,158, 54, 76, 11, 27,126, 91,163,158, 99, 48, 72, 26, 41,114, 58, 52,128,227,
+140,101, 57, 66,154,190,135,144,136, 82, 76,226,197,131,182, 87, 81, 71,250, 51,253,111,227,119,179,118, 51,245,169, 16,135, 73,
+155, 54,118, 95, 32, 33,116,112,143, 10,254,244, 41, 3, 8, 21, 28,180, 83,143, 97,181, 38, 36, 65, 74,195,182,109,136, 86,140,
+232,107, 28, 17, 34, 97,107,130, 92,172, 40,170, 38,208, 76, 10,241, 42,230,226,136,213, 70, 32,201,242,137,201,170,161,224, 59,
+157, 93,149,217, 28,245,111, 59, 1, 45, 4,128, 57, 38, 72, 17,212, 86, 16, 19,163,173, 5,151,156,149, 52, 87, 10,150,227, 1,
+ 89, 26, 78, 79,143, 64, 80, 1,133,127,217, 41, 36,179, 89, 40, 93, 43,214,134,124, 89,241,236,217, 51,220,221,220, 35, 36,198,
+ 63,254,243,123,188,253,240, 14,183,119,247,144, 42,200,235,170,135, 16, 15,197,110, 35, 29,253,205,243, 2,134, 50,212, 11, 59,
+163, 88,191,144, 24, 2, 74,187, 96, 93, 47,144, 74,216, 46, 1,113,206,126, 5,129, 74,197,211,195, 35,166,103, 71,164, 20, 33,
+152,112,190, 60,234, 5,212, 60, 88,130,187,151,158, 64, 72,156, 16,131,238,112,214,147,142,127,162, 93,158,109, 83,148, 98, 58,
+ 76, 6, 48,209, 47,161, 20,181,206, 48, 3,113, 78,160,121,177, 46,102, 67, 96, 5,255,215,220, 32, 20,176,157,129,146, 43,254,
+248,215, 63,226,249,139, 59,156,222, 62,225,242,112,198,195,239,111,176,220, 63,195,179, 47, 62,199,247, 63,190,193,119, 63,252,
+ 12,142, 19, 2, 43,111,126, 73, 1, 83, 12, 40, 37,163,150,162,127,159, 24, 80,108, 44, 45,194, 72,135, 5,135,148,176,196,132,
+151,175, 94,225,213,215,223,224,148, 87, 76, 41,225, 92, 42,206, 91,198,171, 47,238,251,184,213,187,202, 90, 93,160,150, 44,196,
+135, 81,107, 67, 41,217,198,194, 35,123,222,255,101,154, 25, 21, 16,153,232, 40,144,147,182, 20, 24, 75, 78,150,115,248,140, 37,
+ 67,229,210,204,179,207, 54,194, 87, 50, 23, 76,133, 29,236, 32,241,157,181,119, 91,215,157,150,170,156,201,214, 73, 41, 37, 69,
+112,216,225,214, 90, 49,116,172,168, 67,162,233,193, 46,174, 5, 48, 10, 32,211,142,215,221,148, 85,175, 1, 39,164,250, 10,120,
+151, 80, 17,130,250,208, 21,109, 10, 5,250, 32, 40,144,130,117, 77, 65, 85,252, 36,209,113, 62, 0, 41,185, 11,191, 18,235,200,
+121,143,216, 85,161,215, 96,120, 59, 63,187,217, 26, 34,248,101,219,187,115,116, 31,115,179, 21,138, 90,166,168, 23, 61, 42,224,
+132, 22,240,134,146, 65, 51, 33, 95,199,167,181, 14,252,113,235, 95,143, 68, 53, 40,147,127, 7,176,127,214, 83, 10,187, 7,219,
+212,199, 2,163,206,177,117,148, 74, 8,239, 4, 28, 14, 22,162,196, 16,112,119, 45, 64,236, 79,104,122,233, 43,211, 64, 32, 89,
+186, 86, 68,196, 85,206, 3, 53,236,222,103,180,134,138, 2,174, 1, 20,141, 11,208, 4, 34,185,175, 7, 66,138, 87,133, 78,105,
+150, 83,189,203,254,246,226,161,249,159,245,137,229,141,250,120,186,117,160,140,135,230,120,135, 92,247,129, 65,162,250,147,158,
+158, 78, 52,198,255, 77,118,194, 79,187, 80, 6, 37,230,218,126,231,100, 65, 23,101, 90,145,231,173,245,248,231,158,168,103,107,
+ 86, 48, 26,170,145, 27,251, 82,252, 42,129, 15,210,108,146, 99, 54, 67,182,164,184,206,200,177, 80, 25, 91,137,105,145,101, 39,
+ 64,211,137,146,159, 3,165, 86,181,238, 34, 32,151, 13,185,232,228,140, 3,107,163, 64,132,100, 68, 57, 50,241,227,126, 53,235,
+ 84, 57, 69, 39, 52,156, 30,207,200,173, 98, 54,246,132,199,213,178, 21,141,250,243, 20,211, 23, 45, 88,150, 4,145,134,148,102,
+148,186,106, 87,239,228, 75,140,104, 91, 66,179, 16,174,208, 89, 80,104,210,243, 38,184, 91, 55,165, 99,110,217, 50, 67,152, 26,
+ 18, 3,133, 9,161, 53, 4,179,249, 53, 5, 45, 96, 74,140,148, 38,136,173,190,117, 20, 31,177,174, 89, 21,252, 65,147, 58,153,
+ 8,145, 35, 2, 7, 76, 32, 72,205,250,249,132,164,157,185, 77,120,115,205,104,104,136,173,217, 95,196,104, 1,185, 84, 80,140,
+ 61,112, 68,177,155,122, 57,171, 80, 78, 80, 45, 12,128,155,165,179, 89,220,104,105,130, 41, 36,156,202,218,191,156,188, 21, 28,
+231, 25,191,127, 60, 97,189,100,204, 81,195,225, 17, 72,247,227, 18,145,183,130, 82, 5, 37, 55, 48, 21, 84,105,184,125,113,135,
+116, 55, 99,125,218,240,235,247, 63, 96,154, 34, 98, 36,180,173,162,172, 89,125,226, 48,188, 32, 68, 67, 71,152, 16,231,201,212,
+178,163, 43,139,196,104,182,183,220,158, 50, 46,231, 21,156,108, 44,212, 76,133,106,194,136,167,211, 9,199,199, 39, 28, 38, 29,
+251, 79,243,140,202, 5,113,215, 77,184,248,173,239,124, 2, 97, 91, 85, 80,182,220,206,104, 84,177,157, 78,224,152,112,156, 15,
+ 10, 99, 41, 69, 5,100, 89,187,224, 48,105,240, 12,113, 4,183, 10, 9, 85, 15,141, 38,200,181, 25,246, 18,200, 69,240,245, 55,
+223,226,254,238, 25, 78,143,103,172, 79,103,156,126,123,135,112,127,143, 23,175,190,192, 15, 63,255,132,191,127,255, 70,153, 31,
+236, 69, 86,192, 97,154, 80, 74, 85,241, 7, 65,255, 30,126, 82,147,210,243, 98,138,136, 83,196,171,175,191,196,235,111,191, 65,
+169, 85, 15,230, 24,241,240,238, 29,238,110,143,184, 57, 44,168, 16, 5,199,193, 95,126,189,192,180,225, 77,125,127,181,247,135,
+ 7,203,135, 87, 53,177,189, 8,164,197, 87,107,202, 64,110, 36,157, 95,238,121,195, 77,218,128,173,128, 64,246,123,244,171,161,
+ 41,231,152, 24,170, 69,160, 10, 97, 65,181, 54,162, 39, 78,121, 86,114,140,163,243, 48,133,111,112,218,159, 5, 45,120, 60,105,
+173, 2, 4, 45,217, 66, 52, 93,137,253,157,185, 85, 84,179,126,138,193, 69, 24,214, 85,217,120, 22, 34, 64, 86, 95, 50, 60,110,
+181,209, 64, 5,155,240, 74, 58, 38,149,117, 71,237,151,166, 69, 32,239,173,126,238,131,213, 93,106,219,137,203, 67, 23,213, 4,
+251,220,244, 82,178,142,130,209, 89,222, 93, 40, 7, 87,241, 15,203,229,126, 31,220, 76,245,175, 59,125, 66, 11, 12,106, 1,212,
+170,121,196, 25, 21, 64, 69, 5, 7,160, 86,128,155, 0,145,187, 16,178, 59, 89,200, 63,103,101,252,235,251,136, 62,157,241,245,
+ 4,147, 11,153,164,179,249,153,154,217,231, 70, 23,184,167,255,145, 17, 47,135,168,208,108,123,126, 65,146, 42,223,175,146,245,
+140,192,213, 68,193, 86, 96, 2, 87,234,157,101,109, 58, 95,210, 56,100,235, 64, 81,212, 18,107, 49,151,174, 92,103,211, 32, 48,
+ 70,196,185, 79,170, 28, 6, 84,107, 54,239, 60, 13,134, 60, 12, 12,212,154,185, 98,164,167,243,169, 24,145,187, 88, 76, 45,120,
+117,160,180, 93,188, 72, 98,209,158, 24, 88,224, 61, 31,192,200,130,108,164, 70,116,135, 6,117,135,136,235,133,220,154,167,231,
+186, 79, 10,212, 94, 32,238,193,247, 76, 65,183, 48,210, 8,120, 9,196,168,253, 66, 39,203,250,142, 8,216, 84,108, 22, 77, 68,
+104, 22,185, 96,217,241,206,175,112, 29, 67,206, 10,247, 18, 8,166,164, 13, 25, 71, 86,202,154, 73, 69,138,219,138,137, 16, 34,
+ 27, 67, 72, 16, 34,112,202, 21,167,211, 69,149,236, 70,240,116,222,138,239,199,217,190, 23, 97,194,116,152, 16,226, 12,176, 58,
+ 15,202,118, 65, 41, 69,159,123,183, 41,154,109,215,249, 12, 74,146,172, 86, 44,235,148,150,186,102, 67, 17,207,149, 13, 93,171,
+177,127,128,199, 27, 83, 0,102, 86,232, 22, 37,251,254, 11,120, 14, 72,105,238,113,229,243,164,187,245,143, 79,239, 81,132, 48,
+ 91,164,157, 64,227, 95, 83, 72,168, 85,215,146,193,237,177,240,169,159, 78,244, 74,205, 70,220,180,179,162, 74, 27,170,102,135,
+ 4,224,154, 82, 36,162, 84,155,102, 2,135, 67,140, 8, 81, 61,117,190,236,223,242,134,231,247,207,208, 90, 67,174, 27,110,110,
+ 15, 40,235, 5,151,243,134,152, 84,192,149, 98,232,227,104,183,152,229, 77, 47,190,249, 56,227,249,103, 47,192,129,241,230,251,
+159,240,241,189,178,205,217,172, 31, 66,158, 61, 77, 61,125, 42, 26, 13, 44,165,136, 41,164,158,154,196,236, 66, 13, 29,109,157,
+ 79, 23,148,220, 16,130, 94, 84, 53,107, 7,199,182,159, 20, 8,214,203,138,156, 55, 16,128,155,227,130,155,195, 17,174,125, 38,
+168,239,157, 44, 27, 92, 64, 40,173, 32,111, 43, 98,210,151,225,241,253, 35, 66,152,112,115,127,131,249,176,152,221,193,132, 53,
+ 4,164, 73, 17,171, 26, 90,209, 32,117, 3, 33, 43, 77,169,232,131, 83,138, 96,203,130, 47,191,124,141,219,219,123,108,107,198,
+250,116,194,187,223,127, 3, 29, 23,188,124,253, 26,191,252,246, 59,254,246,247,159,144, 91,213,208, 21, 38,204,204, 56, 46, 51,
+154, 8,182, 53,163,150,134, 52, 45,106,249,176,240, 20, 78, 81,139, 46, 6, 94,127,245, 37,254,240,167, 63,232,184,169, 53, 28,
+110,110,112, 62,157,208, 32,184,127,118,175, 98, 64,182, 0, 13, 67, 50,122,110,181,171,122,115,206, 93, 44, 21, 66, 68,224,104,
+126, 83, 26, 76, 50, 10, 90, 64,149, 2, 49, 65,220,232, 46,198, 97,143, 30,253,233,236,243,128,148,146, 2, 67, 60,102, 52, 68,
+176,217,146,216,114, 57,197,146,199,196,158, 15,223, 37,182, 58,160, 53, 74,171,211, 98, 96,219, 76,136,231, 98, 58,150, 65, 10,
+ 52,113,144,231,222,179,137,127,170,135,110, 48,247, 93,158,170,237,131,146,201,124,231,198,132,152,162,226,125,197, 2, 34, 12,
+ 79, 90,107, 70,117,241, 27,196, 68, 61,109,164,197, 25, 97, 75, 80,250,229, 40,166, 44,215,240, 11,227,171, 95, 51,200, 52,235,
+ 27, 67,153,236,110, 13,217, 41,179, 97,221,181,123,200,175, 98, 36, 29, 41, 7, 23,103,113, 15,193,129,219,222,104, 40,243,197,
+ 4, 77,158, 40,181,211, 79,233,250,199,220, 3,221, 35,239,254, 60,222, 89,232,164,141, 24, 77,178,181, 68, 96,211,215,208,117,
+ 94,232, 85,218, 87,235, 36,183,102, 59, 98, 2, 20,214, 97, 19, 37, 95, 21,185, 38,136, 49, 96, 63,250,191, 97,215,209, 27,202,
+ 53,197, 62, 90,246,231,211,177,170,123, 43, 89, 23,132, 88, 71,172, 59,102,233, 64,154,214,106, 95, 57,117, 15,191,115, 12,118,
+172, 5,234,217, 1, 67,205, 14,115,143,212, 82,122,197,224, 9,108,181,238,246,227,123,239,255,149, 64,116,183, 18,105,215, 22,
+172,253,175,107,117,136, 79, 33, 59,177,157,214,181,157, 31, 64, 68, 93, 96,250,105, 60,182,211, 10, 5, 35,224,196, 57, 12,100,
+ 29,102, 8,187,160,176, 93,113,224, 44, 20,152, 96,215, 45,160,202, 28, 1, 98, 36,196, 96,220,244,214, 80,170,139, 94, 71,126,
+185,223, 93,167,199, 21,231,203, 10, 13,129, 12,157, 80,184,143,138,243,226,133,154,224,112, 60, 2, 50, 28, 16,121,205,166,229,
+209,127,174,231, 70,177,243, 93,174,132,159,180, 15,117,114, 90,164,115, 49,160,147, 6,213,251,120, 96, 81,208,233, 89, 36,187,
+239, 20, 48, 37, 44,218,212,197,164, 35,123,160, 91,174,223,127,124, 64, 16, 75,160, 51,140, 47,243, 72,163,108,162, 17,197, 49,
+106,199,239, 98,118, 47,148, 35, 72,247, 31, 77,164,123, 5,129, 6,166, 73,213,151, 40, 86,241,232, 31, 32,108, 12, 97, 59, 0,
+ 92,125, 94,107,237, 35,123,102,198,221,237, 13,206,219,134, 45, 23, 5,157,136,114,174, 67, 72,160, 86,213, 70, 87, 43,170, 52,
+172,219,138, 38,108, 22,186, 9, 47, 63,255, 28, 55,247,183, 56,191,127,194,175, 63,255,140, 48,205, 16, 41,144,102, 59,220, 24,
+108, 52,106,246, 40, 49,161, 89,138, 56, 76, 9,231,181, 98,221, 54, 76,193, 84,247,181,168,109,171, 10,182,146,193, 49, 98,138,
+ 13, 69, 51,230,187, 7,214, 61,197,101, 43,168,169, 90,210, 19,227,238,120,192, 41,158, 20, 56,227, 1, 52,212, 44, 29, 74, 64,
+ 80, 64, 68,173, 5,107,222, 84,240,112,183, 64, 64,216, 12, 8,224,214, 10,133, 98,204,134,146, 92, 65,161,170,205,193,216,211,
+ 1, 4, 41,250,136,124,241,234, 21,158,223,221, 64,114,193,229,233,140,247,191,191,199,114,115,139,207,190,248, 2,239,222,190,
+197,247, 63,252,130, 75, 1,166, 37, 98,142, 17, 83, 36,220,164, 25, 16,224,124, 89, 53,212,102,158, 16,167,164,251, 44,142, 61,
+ 96,100, 78, 9,223,124,243, 26,127,248,246, 15,221,226,183, 44, 11,178, 8, 30, 31, 30,112,255,217,103,152,230, 5,210,170,170,
+ 57,141,165,225,138,117,181,103,196, 43,175,236,222,166,164, 35,248,193, 59,111,246, 82, 87, 25, 52, 53,191, 56, 52,117, 75,127,
+237,182, 21, 29, 45, 55,128,194, 2,226, 4, 70, 67,222, 86,253,124, 12, 62, 65, 36, 8,211,212, 5, 34,181, 22, 45, 52, 88,172,
+ 35,147,206, 70,102, 87,132, 91,196,173,142,217, 27,234,166, 7,100, 76, 9, 49, 78, 96, 54,203,145,237,166,216,237, 50,180,231,
+177,235,127,153,166, 73, 47, 76, 19, 71, 6, 98, 72,212,207, 55,196,136, 52, 77,250, 93, 86,197, 94,170, 51,142, 17, 16,140, 73,
+174,233, 74, 32,179,101,217,243, 44, 50,226, 65,245,244,100,219, 35,203,200, 31,232, 72, 88,236,118,169,122,248, 50,135,157, 48,
+234, 26,136, 2,139, 46,149, 93, 4,235,216,167,162,123,192,155,140,172,238,108, 23,168,238, 14,197, 0,114, 4,169, 1, 64, 53,
+177,172, 82,247, 26,118,184, 82,227,154, 11, 25,215, 2,102,207,227,253,126,126,136, 4,181,160,182,124, 4,111, 7,197,115,189,
+ 7, 49,173,217,168,222,105,106, 3, 37,107,232, 86, 41, 72, 83,236, 41,121, 30, 61,218,176,179,206, 25,125, 12, 77, 64,209, 4,
+ 89,189,203, 55,215, 0, 25,207,156, 2, 36, 24,147,191,201,192,153,186,197, 87,118,123,104,207,176,223,215, 34,210, 84,213,156,
+162, 21,236,114,181, 18,242, 46, 94, 61,206,158, 55,110,211, 21,183,198,238, 10, 51,234, 10,247, 1,185,146,174,231, 48,241,168,
+140,213,147, 84,233,225, 62, 61, 45,112,167,240,215,241, 57,119, 75,160, 51, 33, 58,132,133,130,185,227, 77, 69, 46, 35,240,136,
+ 12,236,229,147, 0, 29,181, 59, 61,147,250,207, 19, 48,162, 98,217,124,242,205,118,252,173, 86,219,167,171, 0, 46,217, 51,225,
+151, 59, 1,200, 46, 48,181, 54,193,133,175, 44,132,146, 27,158,206, 43,114, 89, 17,120, 66, 79,229, 53, 96,117,182,238, 92, 0,
+117, 75,221,104, 56, 24, 8, 38, 60, 19,180, 92,237,251,245, 34, 71,250,218,161,235, 69, 26,140,138,103,128,182,174,197,224,142,
+243,101, 27,155,117,184,148, 0, 83, 32,108,246, 14,116,190,133, 77,103,210,180, 96, 74, 11, 66, 32, 76,203,130,121, 89,240,244,
+116,214,233,247, 60, 33,196,128,182,109, 96, 27,177,239,115, 19,216, 24, 24,213,127,246,170,158,252, 82, 43,162,152,250,181, 54,
+233, 73, 74,189, 63,183, 67,131, 13,106,209,122, 38,180, 83, 58, 9,193, 80, 73,213,186, 69,110,130,195,225,160,150,177,156,177,
+149,130,105,158,193,212,208,138,104, 53, 34, 10, 9,217,114,193,121,203, 40,165,130, 24,168, 53, 35,166,136,207, 62,127, 9, 10,
+ 1,111,126,248, 9,151,167, 51,194, 52, 97,187, 20, 61, 20, 57,106,154, 17,233,139, 26,205,239, 14, 2,164, 20, 28,167,132,211,
+166,184,207,121,154,209,154,224,241,114, 65,110, 64, 44, 21, 91, 43, 88,150, 9, 85, 54,108,173, 34,182, 97,201,209,135, 45,163,
+228, 13,210, 52,253, 77, 59,235,128,251,231, 17, 92,139,206, 28,169,161, 73, 70,105, 27, 66, 22,112,156, 0,106, 40,185, 34,205,
+139, 66,115, 8, 40,219,134,154, 55,144, 84, 76, 49,154, 64, 75,201, 86,212, 54,212,118, 70, 99, 2,144, 76,217,169, 47,218,156,
+102,188,248,226, 91,204,199, 4,217, 8,235,229,132,223,127,250, 25,247, 47, 95,225,254,245, 43,188,127,243, 43,254,254,195,175,
+248,253, 82,112,115,156,112, 8, 1, 19, 1, 55,243, 1, 68,140,199,147, 90,244,152, 24,211,172,187,163,192, 73, 41, 97,196,152,
+ 67,196, 31,191,253, 6,175,191,125,133,181,102, 77, 15,154, 38,132, 41,226,237,175,191, 33,196,136,187,187, 91,163,167, 77,125,
+132, 45,102,133,169,149,250,193,230,201, 88,251, 3,163, 39,147,241,200, 14, 47, 85, 95, 88,207, 41,142,182,115,231, 64, 0,162,
+238,218,172, 56,148,162,227, 93,237,156,146,249, 89,175, 41,217,138,148,213,142,133,236, 34,108, 77, 71,190,129, 8, 85,198, 37,
+161,103,107,177, 46, 38,216, 62,180,234,142, 29,238, 25,133, 37, 94,149, 1, 84, 33, 29,197, 27,222, 28,137,167,209,245,218,120,
+ 13, 70,190, 14, 49, 64,160, 89,194, 41,165, 93, 2,211, 80, 35,131, 77,152, 83, 75, 31,139, 18,196,160, 52,178, 11, 96,113, 17,
+ 97,238,177,155,174,226,245,125,103, 8,100,145,152,118, 41,197, 1,220,161,171, 60,244, 29,137,207,199,236,192,149,197,205, 47,
+213, 62,146,247, 34, 44, 4,112,141,168, 53, 91,151,101,217,237,214, 85, 73, 53,129, 90,105, 59,177,156, 77, 9,120, 31,196, 34,
+198, 66,101,180,170,209,195,112,159, 50,138,117, 32,209, 20,236,220, 87, 39, 62,245, 8, 59, 50,224,222, 58, 58,242, 89,170,217,
+ 31, 27, 2, 8,173,242, 53,152,197,216,241, 46, 92,172,214, 73, 15,177,166, 78, 76,122,168,139,104,206, 54,211,208,217, 55, 75,
+106, 33,143, 90,165,214,213,229,189,168,178,157, 48, 35, 64, 32,216,154, 54, 34, 82, 42,216,215, 3,245, 90,244,233,211,164,234,
+239, 80,207, 69,119,106, 98,216,177, 3,116,189,214,139, 76, 43, 90,219, 46,239, 0,198,115,124, 90,168,120, 0, 0, 32, 0, 73,
+ 68, 65, 84,240,137,192,222, 86, 41,246,129,249,164,134, 45,144,200,191,239, 79,145,184,251,247,186,237, 46,147, 38,205, 70,209,
+ 38, 34,244,247,236, 19,250,158, 91,250, 96, 43, 5,101,149, 72,119,114, 48,128,205, 92, 2,228,157, 46, 11, 66,212,149,169, 71,
+186, 42, 7,192, 44,160, 65,197,102,170,250,102,156,183,140,243,233,130,214, 8,211, 18, 58,130, 90,164, 94,217, 68,165, 86,148,
+ 92, 48, 47,179,210,222,164, 32,198,128,203,101,181,181, 47,239,212,238, 86, 96,187,125, 76,194, 40,168,125, 93,197,205, 2,246,
+168,243, 37, 56, 4, 36, 11, 98,209, 34, 41,244,207, 47,134, 69,181, 49,246,125,177,217,173,167,195, 12,106,132,148, 38,164,152,
+112,185,188, 87, 82, 31,239, 86, 8,166,124, 15,113, 66,163, 19,106, 43,152,211,132, 64,140,203,122,129,228,138, 45, 16,182, 82,
+176,149,130, 8,199, 98, 90,178, 69,163, 6, 65,188,242, 22,187, 13, 98, 63,146, 42, 68, 72,204, 72, 33, 40,121, 78, 4,201,148,
+170,203,178,128, 4,200,173,161,136, 32,113, 66,226,128,210, 52,146,180,102,253, 75,231, 92,181,122, 7,247,151,239,112,123,192,
+221,243,123,188,255,253, 29,222,252,240, 6, 20,185, 31,138, 4, 32,204, 51,152,253,162, 2,230,200,216, 74, 83,168,204, 86, 44,
+ 75, 59,129,161, 35,184,146, 11, 78,167, 21, 33, 45,200, 77, 21,183,199,227,130,119, 31, 46,104, 40, 22,109, 90, 1, 25, 54,161,
+142,206, 21,133,233, 48, 19,150, 99, 68, 91, 5, 21, 69,177,144,165,161,110, 25, 56,120,231, 24,176, 44, 19,210,113, 65, 94, 43,
+182,109, 69,206,185,115,153,117, 20, 11,100, 52,112, 61, 1,200, 93,100,209, 32,224,214, 80,203,134,103,247,247,248,226,229,159,
+ 16,166, 3,176,109, 56,157,206,120,255,227, 47,184,249,236, 57,238,191,122,129,223,127,251, 29, 63,252,227, 71,252,190, 94,112,
+179, 44,184, 73, 17,145, 4,199,229, 6, 32,194,211,233,130,203,101, 85,181,251,205, 2,137,198, 57,247, 93, 36, 11,190,250,227,
+215,248,246, 79,223,224, 82,139, 30, 68, 49, 65,152,241,248,248,132,243,233, 9, 95,126,249, 21,110,150,131,118,177, 83,234,135,
+141,234, 55,164,163, 80, 91,175,234,155,141,150,232,250, 0,138, 81,201,132,165, 88,232,129,141,211,106, 67, 51,246,179, 18,161,
+236,197, 35, 2,199,128,154, 27,106,174, 8, 38,216,114,254, 65, 12, 97,215, 37, 21, 20, 27,251,235, 88, 61,246,223,191, 89, 30,
+117, 12,220,119,188,222,142,149, 90, 45,100, 68,192,209, 43,231,134,146,183,171,238,201,119,203,149,138,229, 21, 39,163,132, 21,
+ 48,212,218,214,227, 77, 99, 48,226,148, 41,137,141,152, 71, 96,227, 83, 3,141,117,180,231, 45,246,176,129,251, 40,163,117,145,
+152, 31,216,222, 49,177, 71,151, 54,183, 91, 1, 34, 81,119,255, 33,118, 59,119,181,145,176,239,250,154, 40, 46, 51,154,114, 91,
+ 33, 62, 90, 84, 42,120,193,196, 79,112,139, 97,235,172,117, 64,181, 38,187,112,194, 29, 96,103,196,116,170,111, 86, 6, 20,167,
+211,215, 84, 4, 37,162,254,217,128, 65, 89, 28,220,126,233,171, 7,238,236,242,235, 14,156, 93,128,103,234,222, 64,123,116,174,
+ 34, 51, 69, 4,185, 20,179, 49, 38,237,164,106,179, 4, 65,116, 40,142,114,201,119, 24, 84,244, 96, 63,197,125,218,178,168,167,
+134,210, 80,244,171,189,176,237, 28, 0,229, 19, 62,188,147, 11,249, 58,119,187,255,179, 81,179, 57, 82,185, 88,222, 5, 72,145,
+190, 16, 71,185, 10,132, 89,241,164, 84, 59,242,215,133,186, 98,205, 86,103, 62,224,147, 17, 60,239,211,245,104, 71,229,181, 78,
+116, 23, 28, 67,123, 40, 12,212, 45, 84,119, 30,248, 94,196, 54, 45,198,201,236,102,246,116,219,190,221,178, 9,106,233,207,179,
+236,224, 74, 2, 91,211, 4,213,108, 53, 79, 82,132,116, 94,132,199,198, 6,235,210,125,253,162, 43, 2,119, 79, 84, 93,163, 88,
+177, 90, 81,241,116,186, 96, 91, 11, 74, 83, 43,156, 23,202,100, 43,148, 42,162,211,132, 38, 64, 99, 28,110,143,186,166, 50, 18,
+ 91,217,178, 82,227, 24,150,105, 95, 59,167,190, 51, 6, 44, 45,115,159,220,200,118, 97, 11, 60,134, 55,128,211,132,227,172,153,
+230, 5,130,164,121, 84, 88,169,161, 81, 3, 7,199,188, 86, 76,139, 42,251,181, 17, 6, 98,156,193, 28,112,217, 46, 96, 36, 84,
+108,216,234,134, 4,193, 20, 2, 98,152, 17,252,157, 43,213, 98,103, 35,114, 22, 19, 25,234,133, 94,155, 32, 2,154, 55, 77, 18,
+145, 20,150, 11,225,216,197, 44, 61,232,158, 24,220, 61,197, 6, 21,176, 93,107,174,101,120, 71, 9,152,230,164, 99, 1,214, 23,
+ 47,111, 25, 47,238,159,225,230,230,128,173,102, 59, 12, 74, 71, 85,170,210,167, 33, 53,193,243,103, 47, 0, 38,252,250,211, 27,
+156, 79, 79, 56,222, 31, 65, 85, 16,236,197, 92,230,132,167, 57,161,229,130, 41,178,237,216,212,231,120, 90, 5,147, 37,225,104,
+102,182,160,148, 21, 92, 50, 40,205, 16,106,152,231, 73,119,147, 44,125, 39, 83,107, 65,147,145,227,221, 21,162,148, 84, 4,209,
+ 26, 82,100,136, 4,195,241, 1, 82, 26, 48, 1,136,201, 2,237, 19, 66, 82, 40,206,122, 94,145,171,230,100, 83, 72, 32,182,116,
+165, 82, 65,181,233,102, 48, 50,168, 9,168, 85,112, 3, 90,201,248,226,245, 55,248,195, 55,127, 65,206, 27,234,182,162,109, 27,
+126,253,241,103,220,188,120,134,207,190,124,141,143,239, 79,248,219,119, 63,224,253,229, 9, 55,135, 35,110,151, 25,129, 5,203,
+ 60, 65, 2,225,233,227, 25,219,229,130,210, 50,150,227,172, 98,138, 24, 65, 41,162, 72,195, 77,136,248,230,219,175,240,215,127,
+255, 23,228, 77,191,203,233,112, 64, 54,209,201,195,195, 3,238,110,158,225,249,139, 23,246,146,169,165,136, 53, 55,242,106, 23,
+200, 59,184,139,218,247, 70,158,181, 56, 2,182,169,128,132, 45, 59,120,223,109,169,162, 89,161, 19, 84, 13,161,234,110, 6, 83,
+103,215, 86,209,182,210, 33,160, 54,211,213, 67,188, 53,228, 53,155,213,204,124,200, 66,144, 74,125,223, 75,126,169, 59, 72,137,
+ 99, 7,215,232,233,220, 12,114,100, 23,139,199,192,154, 96, 81,199,185, 10, 16, 18,174, 67,249,109, 84, 65, 61,202,130, 61,231,
+213,118,138,225, 19, 82,234, 0,128, 52, 42,154,204, 69, 42, 4,146,125,194, 42, 70,134,184, 64, 80, 90, 1,113,210,231, 14,213,
+ 78, 62, 2,144,117,164, 15,210, 49, 51,219, 24,211,187,114,208, 63,125, 79,126,176,249,231, 26, 68,195,117, 90,169,253, 61,177,
+ 23, 90,191,167,178,237,246,198,122,184,215,221,238,212,119,178,159, 50,231,255, 57,114,140,204,187,204, 59,126,128, 5,153,104,
+137,222,125,245,210,212,206,202,157,187, 29, 64, 20, 7, 46,118, 71,234, 83, 5,116,184,226, 27, 4, 99,225,147, 46,132,205,194,
+104,169,112,102,203,106,187, 4, 56,180,253,133,111,241,200,172, 34,180,198,186,146,147,170, 77,206, 72,208,115,123,155, 89, 51,
+177, 11, 63,225, 29, 77, 80, 60, 57, 15,150,200, 53,244, 3,253,123, 49,241,233, 72,143,195,136,110,237,163,114,186, 74, 81,219,
+ 79,195,252,153,197,142, 14,183,247,195,151, 82,123,148,177, 51,248,177,115,135,184, 90,219, 61,248, 93,240,183,163,249,249,228,
+167,161, 90, 81, 3, 75, 89, 68,119, 59,136, 97,128,135,101, 80,140, 31, 97, 98, 64, 26,218,138, 38, 52,242, 50,155,139,130, 11,
+ 54,195,236, 6,211, 28,152,100, 5,176,220,132, 38,117,116,209,221,214, 47,184,172, 13,151,139, 34,134,131, 77,213,136, 2,130,
+ 23, 47, 13, 8, 8, 64, 83, 4,236,180, 48,110,239,111,181, 17, 72, 9,141, 24,219,186,105,145, 97,207,159,236,168,139,226, 57,
+186,132, 14,112,242,117,142,176,241, 38,154, 65,211, 80,145, 82, 2,130, 6,157,181, 86, 17, 16, 17,109,181,170,157,181,254, 57,
+ 81, 4, 73, 4,137, 18, 34,235, 59,156,210,140,173, 20,228,109, 3,115, 67,176,194, 56, 64,155,101, 45, 0, 18, 88,204, 21, 17,
+244,254,221,182, 21,185, 22, 4,142,253, 25,136,212, 69, 95,254,161,135, 97, 11,145, 1, 32,144, 43, 86,180,141,229, 77,249, 91,
+106,235, 2,147, 20, 84, 16,176, 94, 54,164,168,177,139, 79,235, 19, 94, 60,191,195,237,225,136,183, 15, 79, 40,214,129,144, 9,
+ 76, 2, 7,108,185, 97,126,113,143,251,151,207,241,225,253, 3,222,254,242, 70, 85,144, 76,168, 91, 54, 70, 55,105,222,248,241,
+136,252,116,178,234, 86,189,209,165, 10,132,129,121, 14,152,141,154, 84,115, 70,185,172,106,254, 23, 1, 85,181, 28, 88, 49,140,
+ 41, 6, 84,113,159,233,200, 91,175,165,161, 86,193, 60, 3, 83, 74,216,182, 85, 71, 44, 32, 76,209,104, 95,100,209,164, 14, 6,
+ 8,140, 86, 43,182,203,134,156, 11, 66, 12, 72,105, 82,220,174, 84,228,154,209,195,178, 57,116,120, 66,171,186, 6,248,230,155,
+111,241,167, 63,254, 21,219,186,161,174, 25,229,178,225,183,159,127,198,241,217, 17,159,127,253, 26, 31, 62, 60,225,127,190,251,
+ 9,239,206, 79, 56, 46, 7,220, 45, 11, 18, 19,166, 89, 69, 22, 31,222, 63, 98, 93, 47, 64,107,152,166,164,126,245,148,204,158,
+211,112, 31, 24, 95,255,241, 27,252,229,223,254,172, 20, 59, 1,166,155,131,122,132, 1, 92, 78,103,228, 92,240,234,203,103,186,
+203,241, 24, 81,163,116,229, 98,161, 62,190,243,219, 41,146, 99, 84,225,154,131, 17,220, 23, 92, 90, 54,238,191, 90, 53,106, 46,
+150, 3,110,214, 56,235,168,168,169, 13, 75,153,236,210,139, 33, 87,139,187,184, 68,147,167, 24, 49, 24,244, 1,181, 51,227,221,
+ 10,215,119,111, 86,112, 58,136,194, 78, 43, 93,221,184,199,119, 15,254, 40,106,117,114,106,109,143, 47,117,174, 35, 25,177,201,
+193, 24,162, 87,173,147,223,106, 43,224, 20, 70,198,171,171,188,237,214,110, 85, 70, 6,187, 9,125, 90,109,195, 47, 79,193, 68,
+ 72,250,249,121,192, 77,140,170, 53,104,181,218,255,174,184,101,238, 83, 8,125, 47, 3,177,217,197,168,231,178, 19,212, 97,224,
+ 21,134, 42,117,185, 91,165, 64,215, 0, 23, 31, 59,162, 82,199,252,246,194,190,226,154, 98, 38,100,182,188,106, 17,194,214,157,
+ 83, 64,145, 98,244, 60, 30, 48, 20,242, 94,149,186, 45, 81,106, 67, 74, 19,136, 45, 2,181, 54,213,206,136, 32, 82, 68,228,235,
+196, 61,247, 16,195, 71,192, 6,186,210, 3,184, 2,102,129,130,175, 16,101, 68,135,178, 77, 81,196, 11, 11, 75, 18, 20,232,184,
+ 87,159, 61,234, 5, 68, 45, 58,190,173,172, 10,114, 29,185,122,202, 90, 53, 94, 59, 91,108,245,128,204,136,180,222, 13,147,199,
+168, 26, 3,220,109,187, 20,198, 72,218,199,228,173, 99,100,140, 98, 38, 99,111,142, 29,144, 72,118, 56, 98,215, 5,224, 42,212,
+ 72,159,139, 82, 11,106, 29,217, 10,213,242, 6,116, 63, 92, 60,111,204,222,171, 61,145, 86,174,152, 8,125, 37, 19,212,247, 2,
+ 25, 76,147,126,137,219,191, 60,115,158,168, 14, 30,125, 95,217,170, 27,137, 88, 11,249, 42, 21,165, 85,228, 54,194,109,174,216,
+255, 54,254, 22, 66, 87, 41,184,109, 84,109,134,130,243,121,195, 86, 84,236,170,227,111,181,183,114,159, 34, 14,139, 99,149,134,
+251,155,123, 76,211,162, 92,136, 24,177, 94, 46,216,182, 12, 56,139,160,138,190, 31, 84,122, 6,188,214,210, 14, 13,218,191, 47,
+ 35,122, 86,108,228,207,204,168, 92, 59,168, 43, 25, 38, 89, 45,105, 38, 44,110,110,205, 53, 84, 56, 39,180,168,172,150,211,229,
+132,188,109,144,186, 33,248,125,195,140, 32,202,159,159,162,130,117, 20,181, 28, 33, 0, 46,235, 69,167,201,118,255, 2,132,216,
+ 97, 1, 98, 36, 48,225, 62,102,195,142, 48,228, 37,146,216,173,238, 94,100, 85,127, 3,243, 20, 1, 84, 21, 16,217, 88,110, 14,
+202,128,127,248,248,255,201,122,179,102, 73,146,227, 74,243,168,154,153,123,108,119,205,165, 54, 20, 64,128,196, 16, 32,184,205,
+ 80,186,101,100,254,255,235, 60,140,180, 72,147,221, 32,216, 93,168,172, 37, 43, 43,151,187, 69,132,187,153,169,205,131,170,154,
+251, 5, 31, 64,128, 64, 85,229,189, 17,238,102,186,156,243,157, 7,124,249,242, 18,219,221, 6, 8, 65,173, 85,228,184, 82,149,
+ 91, 10, 51, 46, 94,220, 66, 32,184,127,247, 51, 78,119,143,216,109, 55, 8, 20,244,139, 3,169, 92, 63, 37, 28, 14,123,220,159,
+206,104, 82, 48,231,140,156, 5,149, 9,227, 54, 96,187,219, 32,206, 39, 77, 62, 42, 69, 85,198,137,187,103,148, 12,172, 79,149,
+144, 6,224, 60, 47,228, 32, 10, 90, 85, 74, 33,148, 92,250, 75,151, 66, 64, 57,235, 67, 18, 99,194, 56,110, 85,192,101, 17,175,
+129, 25,173, 86, 76,167, 19,242, 84, 45,253, 42, 32,196, 37, 38, 84,164,161, 5, 66,131,238,149,168, 9, 88, 26, 30, 30,158,240,
+119,127,247,123,252,230,215,191,197,227,253, 3,166,167, 35,144, 43,222,191,125,135,253,213, 21,190,248,242,115,188,127, 60,225,
+127,127,243, 29,126,190,191,195,110,191,195,197,110,139, 0,193,184, 25, 65, 0, 62,222, 29,173, 67,159, 49, 12, 3,226, 38,130,
+147,138,115,216,162, 29, 63,255, 74, 85,238,197,192, 28,227,102, 3, 68,234,216,202,233,120,196,213,213, 21, 46,175,174, 58, 77,
+ 79, 33, 42, 70,255, 19, 49, 13, 90,123,150,235,172,240,153,128, 90,170, 41,118,213, 38,226,251, 61,102, 19,180, 84,253,223,155,
+189, 44,181,137,121,189,139,170,168,193, 10,252,242,152,208,106, 59,111, 2,168,233, 58, 36,164, 96, 64,144,130,106, 12,250,192,
+ 1, 49, 69, 29,171, 86,243,193,122,243,211,154, 70,225,118,128, 11,245, 9,138,239, 9,181,227,145, 5,159,233, 2, 36, 45,177,
+ 59, 86,178,102, 59,188, 29,181,233,123, 80,165,205,244, 14,165,182, 2,145,166,169, 85, 45,168, 99,160, 19,204, 22, 5,113, 53,
+ 63,127,128,137,254,172,163,171,181,160,216,254, 81,247,254,250, 55,180,158, 29, 31,244,247, 78, 30,204, 97,241,170, 30,142,227,
+151,186,103,135, 27, 64,163,209,130, 48,237, 69, 64, 15,230,104,207, 46,148,214, 11,121,233,214, 38,120,126,184,229, 64,115, 35,
+212,182, 92, 4, 30, 22,243,204,147,142, 53, 87,221,132, 96,214,101,177,199,246, 66,215, 10,141,218,106, 50,208,250, 42,192, 27,
+ 9, 94, 5, 72, 57,112,167,173,163,105,215,233,119,182, 58,105,150, 29,176,136,204,200,124,203,214, 69,138,141,203, 13, 63,236,
+ 33, 65, 82,171,109, 73,130,229,215,103,171,235, 28,139,170,147,186,117,115,178, 2, 30, 46,133, 4,150,204,108,157, 88, 80,183,
+196,214, 90,140, 46,136,190,187,175,134,254, 93,227,210,251, 78,219, 86, 47, 94, 40,118,155, 91,159,210,144, 5,230,180,174,124,
+239, 9,125,213, 18, 33,163,254, 57,197, 5,122, 94, 32,186,214,101, 21, 20,244,159, 57,239, 90,212, 52,209,130,167,249, 5,108,
+184,108,215, 72,196,224, 86,204,106, 23,144,241,252,217,214, 22, 85,223,185, 82,235,194, 57, 88, 11,213,121,137, 51,213,150,127,
+149,104, 72,206,244, 7,230,156,113,158,179, 90,133,107, 70,140, 74, 13,101, 10,104, 34, 10,247,114,225, 99, 19,156,115,197,197,
+229, 65,149,232, 28,144, 6,194,195,221,132, 50,103,157,210,132,230, 96,130,254, 46,123,184,139,131,146,158,197, 32, 18, 48,176,
+ 38,131,174,117, 5,204,209, 96, 84,202, 69,233,130,224,192, 61,211, 94, 57, 17, 13, 20, 34,184, 41, 22,188,161, 33,231, 25, 77,
+ 42,130,217,195, 9,238, 0, 80,251,116, 12, 17, 33, 64, 81,178,172, 63, 82,169, 64,205, 21, 37,102, 20,209,230, 86,157, 30,236,
+209,132,125, 19,179, 10,130, 88, 88,204, 74, 33, 90,249, 5, 57,116, 28, 32,179, 75,250,195, 82,169,198,136,218, 4, 15,143,143,
+136,156,240,242,246, 6,176, 75,192,237, 74, 62,230,189,190,189,197,205,237, 13,238,238,239,241,112,119,143,121,154, 12, 46,209,
+129,144, 24,135,141, 98, 63, 83, 68, 35, 85, 30, 79,115, 69,129, 32,163,226,230,229, 13,198,113,131,156, 51,114, 54, 46, 57,169,
+ 48,131,216, 43,153,138,196, 9,104, 13,227,192,144, 2,148,162, 10,101,143, 12, 21, 49,171, 83,213, 15,118,136, 17,193, 58,250,
+ 33, 13, 24, 54, 91,181,170,249, 30,166, 84, 76,211,140, 92, 84, 41,158,226,208, 3, 56,134, 65, 15,246, 24, 20, 31,200,209, 85,
+139, 51,202,249,140, 63,252,225, 15,248,253,223,253, 1,167,227, 17,167,251, 39,212, 83,198, 79, 63,253,132,237,213, 37, 94,127,
+245, 5,238,239,158,240,167,111,222,224,221,253, 29,246,251, 45, 46,118, 91, 36,104, 72, 77, 26, 6,124,124,120,194,241,116, 66,
+ 41, 89,131,100,134, 8, 30,146,218,251,108, 18,242,171, 95,124,133,191,254,237,223, 32, 12,154, 62,151,134, 17,108,227,114,110,
+132,233,116,198, 44, 5, 87,215,151,166, 14, 23, 80, 19, 85,169,155, 71,211, 49,193,213, 98, 66,229, 47,128, 27,176, 40, 83,191,
+ 48,186,104,206,192, 33,206,117,247, 60,129,102,240,150,104, 10,217, 82,149,174, 20, 77,161, 95, 74,182, 75, 51,246,177,162,147,
+ 11, 61, 57, 47,196, 4,138,209, 46, 33,191, 60,218, 51, 11,145, 62,203,250, 47,248, 72,214, 86,216, 29,185,104, 7, 8, 71, 70,
+138, 81,197,108,180,172, 30,154,233,188, 84,196, 84, 49,231, 25, 37, 27,159, 62, 23, 11, 14,105,246,223,233, 63,211, 63,167, 82,
+139, 70,233, 6, 94, 44, 75,213,146,238, 98,236, 85,123,195, 66, 14,235,163, 79,235,198, 74, 46, 29,181, 10,219, 79,106, 60, 43,
+ 47,201,107, 82, 61, 54,164, 95, 44,112,136,198, 74, 13,188,116,107,203, 5,188,134,103,136,163, 88,153, 58, 54,116, 73, 1,227,
+110, 99,244,203,215, 65, 41,226, 84, 61,183,152,217,162,191, 86,183, 35, 45,138,123,145,102, 9,119,102, 41, 19, 60,179,221,249,
+116,164, 54, 99, 59, 88,218,214,162, 68, 94,199,184,182,149, 58,121, 57,115, 5, 42,194,228,160, 7,170,143,129, 61,106,244,153,
+138,204,159,109,167,231, 17,155,149, 83,119,233, 76,218,149,247,226, 92,164, 23,189,253,178, 93, 57, 14,220,179,239,236, 6,238,
+104, 93,179,115, 22,181, 89,130,245,188, 12, 81, 53, 55, 49, 42,198,153,136,251, 89,180,184, 29,218, 51,145,166,195, 85, 28,171,
+187, 96,102, 91,207, 74, 55,236,120,255,238,125, 18,180,160, 80,165,239,233, 29,199,235, 4, 51,223,115, 43,237,174,233, 62,222,
+104,142,206, 75,144,214,250,103,237,207, 30,153,136,147,152,150, 41, 89,171,230,139,175, 70, 56,109,221, 48,144,139,103,127,168,
+ 53,212,215, 87,173,227,124,177, 68,221, 90,215,158,139,224, 52,205, 40, 85, 80,170,194,195,152,117,157,193, 68,200,115, 69,246,
+130, 9,126, 14, 3, 23, 23, 7, 37,160,166,136,210, 42,242, 52,169, 46,170, 23,100,212, 85,229,221,191,223,211, 19,219,179,100,
+ 82, 47,100,217,227, 83,140, 19,146, 40,217,119, 94, 17,195,178,166, 48, 76,165, 22,161,222,189, 15, 35, 40, 70,133,162,149,130,
+243,121, 70,173,130, 60,103, 45,129,205, 21, 67,204,202,126, 55,203,101, 12,177, 39, 60,138, 80,119,145, 21,107, 78, 98,127,232,
+124,159, 99, 66,163,214,253,138,139,194,215, 57,202, 26,234, 16,123,104, 70, 50, 32, 71, 10, 10, 29,153, 69,208, 2, 35,218, 69,
+250,243,135, 79,200,191,252, 13,110, 95,222,234, 23,158,140,244,196,212, 71, 42, 95,124,254, 2,148, 5,143,159,238, 48,157,206,
+154, 26,213,204,182,196,172, 62,116, 19, 91,128, 26,166, 50, 67,114, 85, 40, 1,233,152,252,226,226, 2,113,136,104,164, 21, 76,
+ 48,116,100, 48,202, 80,109,130, 16, 18, 34,180,154,243, 42, 40,215,162,150, 40, 11,236, 0,150, 23,156, 89,201, 70,155,180, 55,
+170, 92, 4,199, 4, 10, 22,137, 89, 21,157, 43, 32, 80, 26,187,160, 48,128, 48,110,212, 95, 93, 74, 70,218,140, 32, 84,148, 50,
+227, 92, 51,104,158,241,187,191,251, 61,126,245, 55,127,141,143,111,223,227,225,195, 29,100, 46,120,252,120,135,195,197, 21, 94,
+124,245, 37,238, 30, 30,240,199, 63,189,193,199,199, 71, 28, 46,246, 56,236, 54, 96, 17, 12,155, 13,246,155, 61,222,126,248,128,
+167,199, 35,164, 22,140, 73, 51,124,213, 34,145, 16, 83, 66, 2,240,250,243, 87,248,235,223,252, 10, 45,169, 37, 99, 24, 6, 72,
+ 36,204, 70,101,147,154,113,127,255,128,171,235, 43, 92, 94, 93,118, 13,133, 86,240,150,204, 85,107, 95,184,113,207, 76,182, 3,
+115,181, 47, 93,231,125, 55, 52,180, 96,253, 95,173,139,226,214, 64, 13,205,108,141, 49, 4, 29,123, 5, 54,250,154,244, 0,151,
+ 20, 55, 58,134,111,179,249,129, 93, 61, 10,112, 10, 42,234,177, 66,131, 81,122,170, 82,140, 73,189,162, 65, 87, 45,117, 22, 75,
+115, 10,102, 67,203,230, 9,175,171, 52, 37, 19,114,217,152, 94, 86, 30,109,205,126,175, 32, 10,168, 69,119,218,218, 89, 51,164,
+ 49, 66,212,203,222, 21,190,190,163, 86,139,170, 44,151,182, 65,145,148,198, 21,150,110,184,182, 30,119,218,218, 10, 41,105,127,
+ 77,224, 69,169,222,172,184,164,198,139, 53,203, 96, 52, 76,246, 44,250, 8,223,246,197,205,216,228,142,173,212, 24,225,229,208,
+106,118,145, 50,145, 9,199,100, 1,138,128,209,200,146,211,160, 25,206,122,169, 82, 15,146, 17,169,221,237,231,235, 3, 8,245,
+ 9, 15,170, 32, 14, 97,249, 44,205,233, 65,253,240,244,100, 41, 83,123,147,118,238, 61,137, 10, 4, 97, 2, 75,235, 17,161,228,
+ 43, 22,155, 64, 52, 91,205,168,144,108, 73,144,243,209,189,208, 51, 41,184, 53, 22, 46, 14, 52,119,143,217,114, 67, 76,224,158,
+ 65, 33,207,226, 96,155,136,217,121,237, 50, 91,137,194,244, 35,174, 54,138,102,163,217,201,138, 23, 79, 43,237,134,254, 53,110,
+213, 11,206, 78,183,233,144,102,189, 87, 52, 9, 86, 80,173,156, 20,210,250, 30,219,139,233, 82,107,207,234,240,203,102, 41,198,
+128,166, 51,127,123,135,168,123,238, 26,150,144,149,238,139,239,207,154, 21,134,125,218, 54,233,228, 38,196,103,177,219,212,156,
+ 51, 95,245,247,133,172,244, 36,246,103, 98,161,188, 73,169,198,109,104, 54, 41, 4,152, 23,203, 28,181, 10, 84,237,234, 69,138,
+173, 90, 90,231,125, 72,107,152,179, 78, 91,114, 46,104, 80, 70,137,138,223, 84, 79, 80, 61,130, 88,116,181,118,185,223, 97,216,
+140, 90,116, 12, 17,243,116,194,249,116, 70,205, 69,173,109,129,140, 90, 88,141, 79,207,171, 66,211,198,157, 78,176,107, 58,225,
+233, 90, 35,131, 66, 50, 49, 34, 17,230,218, 64,164, 25, 30, 42, 68, 71, 31, 69,136, 84, 12, 33,129, 56, 96, 59,238, 16, 6,181,
+ 48,207,179, 21,190,128,106,220, 72, 87,121, 58,222, 23, 32,170,216,150, 89,233,114, 98,100, 82,145,138,220,170,134,117,197,128,
+ 90, 21,196,108, 42,200,214, 71,115,141,178,141,148, 24,196,110,223,208,131,161, 4,173, 14,124,124, 87,107, 69,226, 1,145,116,
+ 52,208,247, 49,208, 10,163, 22,193, 79,223,255,140,243,223, 31,113,117,117,192,144, 6,196,176, 69,149,251,142,158,188,188,188,
+193,197,229, 21, 62,222,125,196,124,212,174, 51,164,136, 44, 21,151, 33, 33,142, 35,164,101, 32,207,104, 85, 16,226,136, 83, 86,
+245, 98,173, 25, 28, 45, 43, 60, 4,164,210, 16, 88, 1, 57, 76,172, 73, 80, 73, 61,241,177, 54,196, 97,196,169,156, 80, 90, 85,
+243,190, 77, 40,216, 40,105,141, 27,144,109, 7, 42, 38,192, 72, 17,117,183,211, 76,227, 24,144,203,132,132, 8, 48, 33,139,118,
+ 4, 67, 72, 61, 97,172, 73, 69,136, 9,195,102,192, 60, 77, 32, 2, 82, 26,193, 53, 35,207,132, 13, 2,254,143,127,254, 23,124,
+253,235,175,240,225,187,159,112,247,238, 14,181,204,120,184,187,195,225,234, 10,175,191,252, 12, 79, 15, 19,254,215, 31,191,197,
+251,167, 79,184,188, 60,224,176, 25, 16, 74,197,118,183,197,184, 25,241,227,167, 15,184,123,184, 71, 41, 51,134, 20,109, 36, 59,
+ 34, 36,133,119, 48, 69,220,188,186,194, 87,191,254, 5, 36,217, 14,103, 28, 45,248,198, 58, 11, 52,156, 78,103,180, 6, 92, 93,
+ 93,216,101, 94,148,202,228, 24, 84,160,231,191,195, 8,106,108,128,139,126, 33,182,165,162,100, 86,201,103, 0, 65,168,118,209,
+140, 11,228,136,245, 82, 11,108,123, 38,219, 9,166,148,144, 98,196, 44, 25,181, 1, 69, 52,109, 40,250,120,210,166, 73,220,160,
+126,212,160, 99,107, 38,128, 68,105,106,186, 43,244,180, 35, 85,241,214, 60,235,239, 90,147, 97, 84, 27, 90,105, 75,190,183,249,
+ 93,157,218,214,201, 89, 80,222,178, 90, 93,178,249, 95, 85,119, 18,120,232, 22, 60,110,174, 76, 39, 83, 80,215,101,172,234,197,
+142,167, 93, 33, 24,223,160,185,187,213,186,151, 37,140, 67, 12, 38,209, 21,222,198,172, 15, 65,119,145,170, 28, 46, 32,108, 80,
+101, 57,148,181,147, 50,145,145,119,147,180, 96, 73, 65,210, 15,107, 4, 6,213,188,220,113, 43,123, 27,155, 63,155,104,137,221,
+100,168,255,191, 90,126, 56, 81, 53, 21,185,123,211,101, 57,164,155,114,173,123,146,163,131, 79, 5,224,224,237,116,120, 22, 16,
+ 3,142, 64,208,105, 13, 9, 33, 57,216, 39, 6, 16, 59, 26,212,118,184, 85,121,205,228,163,108, 52,212, 86, 44,250,215,124,226,
+164, 5, 34,153, 85,183,231,173, 87, 81, 29, 71,183, 92, 54,160,114, 39, 2, 46,254,114,195,139, 54,107,117,219, 34,120,132, 21,
+237, 96,127, 39, 76,207, 97, 50,250, 90,141,217, 23, 22,213,185,207,180,152, 86, 17,168, 48, 50,156,169,244,117,236,110,246,200,
+160,197,180, 78, 5,170, 77,189,244,217, 16, 46, 43, 30,185,255,117,178,112,251,149,123,104,103,159, 78, 15,148,127, 47, 43,155,
+ 28,140,172,215,122,138,152,238,135, 45,216,162, 53,112,117, 94,131, 77, 85,136,141,159, 17, 12, 63, 12, 72, 49,139,163,211, 10,
+ 77,172,197,196, 43,176,148,246,241,145,128,218, 2,114,213, 14, 91, 12,118,166,253,194, 26,242, 36,144,202, 11, 18,183, 49,164,
+101,157, 42,136,190, 3, 89, 8,181, 52,139, 87,206, 8,148, 16,195,128,104,223, 77,245, 98,135,212,134,157,155, 96,123,117, 1,
+180,138, 24, 7,132, 68,200,247,130, 60,149, 30, 72,212, 26, 64, 49,232,164,205, 87, 44,221, 73,235,107,172,102,244, 56, 61, 27,
+100,212, 28, 17,182,226,154, 34,117,102, 75, 10, 25, 28, 2,170,110,184,251,212,130,155,122,214, 41, 13, 72,195, 14, 73, 70,228,
+118, 70,206,103, 61,207,188,252, 55, 30,130,152,123,128, 72,239,151, 16, 7, 48, 39,213, 35, 84, 5,164,229,105,198,102,127,129,
+192,128,148, 89, 59,245, 96, 64, 6,141,195,109,160,208, 22,186, 23,120,201, 79,134,199,221,137, 90,149,154, 32,163, 97,140,108,
+184,102,238, 85,169, 19,130,114, 46,248,240,241, 61,158,142, 71,188,188,185,196,213,237, 13, 30,222,255,140,153,124,103, 25,112,
+184,216,163,214,138,211,241,136, 86, 42,242,108,116,125, 17,140, 67,194,118,136, 40, 19,161, 49, 35, 79, 74,226,137,126, 96, 17,
+236, 66, 72,170, 42,103,125, 8,209,128,163,141,221, 67, 28,112,154, 39,112,217, 98, 23, 66, 15, 15, 24,198, 17, 1, 51, 90, 1,
+106, 85,161, 76, 64,192,169,204, 58,250, 13, 58, 34, 77, 12,205, 97,158,102, 96,206,152,114,134,108,183,216,238,246,224, 52,116,
+ 10, 81,149,108,150, 39,198, 97,183, 5,170,102,244,166,113, 64, 74,140, 57, 87,108,247, 35,254,225,111,255,128, 23, 47, 95,224,
+167,239,222,226,227,251, 79, 40,243,132,233,241, 9, 23,215, 55,120,249,250, 37,238, 30,158,240,199,255,120,131,251,135, 71,220,
+222, 92, 99, 28, 6,180,121,194,102,183,193, 48,142,120,255,254, 14,159, 30,239, 81,207, 51,198, 20,144, 98, 0, 15, 17, 60, 4,
+196,148,176, 29, 18,110, 95,238,241,139, 95,125,137, 33,141,104,212, 48, 14, 90, 36,149,234, 85,181, 86,180, 79,143, 79,184,190,
+185,194,246,176,183, 39, 91, 64,164,190,251,138, 98, 7,149,139, 89, 66, 63,164,105,213, 21,192,208,143, 70, 73,208,120, 76, 14,
+154,197,109, 20, 57,199,122,135, 16, 48, 12,163, 85,216,250,226,249,133,238, 99,252, 72,140,228,201, 72, 16, 85,240, 7, 2,135,
+ 6,110,209,190,123, 21, 71,185, 13, 41,164,128,136,173, 30,105, 33, 64,152, 80,167,138,124,158,236,130, 72,157, 40,133,160,175,
+ 78,128, 94, 20, 20, 22,111,109,235,154,109,223,129, 54,179, 21,233,116,194,245, 19,205, 46, 11,117, 67, 24,207, 29, 74,164,171,
+157,174,165, 29,127, 99,152,123,130, 32,205,118,229, 16, 48,196, 14, 66, 35,200,193, 40, 83,214,209,169,109,202,138,252,186,182,
+ 11, 6, 52,148, 21,119, 61, 44, 59, 72,159, 48,240,146,108,198, 85, 39,103,194, 4, 10,234, 19, 47,246,115,181, 21,210, 4,180,
+164, 26,172,199,242,205,166, 16, 66,250, 89,113, 85,251, 92,183,184,214,218,137,100, 85,124, 98,179,100,201,123,247,217,132,236,
+176, 81,129, 99,224, 65, 57,255, 85, 44,245, 78,213,224,165, 20,180, 0,108, 2, 1, 33, 24, 18,117, 21,219, 89,107, 15,175, 89,
+198,239,166,138, 71,232, 19,142, 37,187, 92, 22, 26,222, 74,104, 70, 43, 47, 61,179,138,222,168, 71, 76, 47,153,237, 30,119, 25,
+140,205,175, 62,109,107,108,170,129,106,108,157, 80, 45,121, 76, 45,124, 75,119, 74, 28,236,112,247, 48, 25,238, 73, 98, 44, 97,
+ 89,123, 54, 49,235, 41,247, 34,233, 89,212,170,131,157,104,161,208,173, 59, 74,145, 98,107, 19, 47,170, 90,143, 26,110,180, 6,
+ 26,201, 18,161,203,230,109,183,112, 44, 2,161,144,102,120, 83, 89,206,115,215, 65, 41,171, 66,189,255,246, 55, 88, 97,195, 6,
+ 78,178,237,140, 16, 66, 51,116,141,159, 19, 85,122,168,145, 23,251, 20,104, 73, 72,107, 48,155,179, 18, 46,179, 40, 77, 17,162,
+129, 75, 25,192, 92,117, 74,146,179,118,183,195,160, 54,184, 8,194, 44, 21,165, 11, 16, 9, 82, 51, 2,116,244,206, 70, 43, 36,
+ 0,211, 52,161,204,165, 71, 1,147, 52,133,228,180,250, 76, 27,225,223,181,167,174,249,187,194, 12, 12,196,200,164,103,144,144,
+ 38, 19,138, 71, 81,179, 6,107, 33,104, 1, 64,118,119,114,100, 32, 0,149,129,113,216, 33,141, 3,142,119,143, 56,205,211, 34,
+238,101, 91,195, 64,167, 17, 3, 15, 29,244,149, 44,182,188,148,217,178, 31, 8,211, 52, 97, 87,206, 8, 67,244,226,113, 25, 81,
+249, 78,178,227,103, 72, 3, 1,252,152, 35,163, 1, 49, 41,126,209,115,177, 99, 82,201,189, 10,125,150,209,117, 12, 9,185, 84,
+ 76,117,198,135,187, 71,140,105,131, 23,215, 87,234, 38, 49, 21,244,213,213, 21, 54,187, 45, 30,238,239, 81,138,210,133,148, 95,
+171, 85, 75, 26, 24,227,160, 23, 39,106,133,200,132, 20, 9, 67,136, 22,110, 17, 49,152, 32,140,154,133,100, 72, 65, 19,160, 20,
+ 65, 26, 6, 8, 8,231,227, 25,173, 9, 54,187, 17,197, 42,219, 52, 68,112,100, 21, 27,152, 34, 87, 95,100, 32, 13,170,216,230,
+ 24, 49, 12, 91,203,184,173, 93,224,196,156, 16,134, 1,129,128, 58,159, 49, 79, 39,148, 50,161,200, 9,135,195, 14,227,102,196,
+233,241,168,225, 33, 49, 64, 74,198, 97, 51,226, 31,254,225,239,113,115,115,137, 31,191,251, 1,159, 62,222, 35, 31,103,156,238,
+143,216, 95, 95,227,229,235,207,112,255,120,198, 31,255,227, 27,220, 63, 30,113,113,115,129,253,120, 64,206, 39,236,183, 91,236,
+182, 7,252,244,254, 35, 62,126,250,132,233, 52, 35, 4,253, 29, 98, 84,177, 24,167,132,113, 72,184,190,217,225,243,215,159, 35,
+166, 4, 48, 97,220,237,128, 16, 80, 12, 18,226, 28,255,243,249,132,214, 4,215,215,151,136,198,233, 14, 97,232, 97, 6,209,172,
+141,117,181, 91, 10,172,223, 27,135,160, 98, 60,115, 64,232,132,172, 41, 25,222,188,210,145, 21, 78,228,163,243, 30, 44, 1, 45,
+ 8, 66, 72, 58,234, 76,209, 2, 60,168, 35, 91, 99, 12,138,125, 52,197, 58,135,216,213,201, 68, 2, 72, 65, 43, 5, 82,116, 79,
+199, 33, 34, 36,213, 50, 72,209, 20,185, 90,178, 9, 85, 84,117, 26,250, 51,109, 94, 86,166,158,119,207,166,241,224, 24,208,108,
+ 23,171,192,138,185, 59, 28, 52,135,161,160, 74,214, 81, 59,209,210,117,245,125, 28, 43,157, 46, 4, 32, 16, 56, 69,196,152, 0,
+ 35, 38,162, 7,225, 12,221, 78,196, 38, 80,117, 7, 77,111,161, 69,150, 60,233,181,110,128,160, 73,117,181,116, 74,154,183,133,
+ 30,100,226,185,232,145, 98,247,121,187, 55,217,223,113,119, 42, 52,114,127, 61,245, 3,121,109, 81, 18,243,146,147,237, 55, 23,
+158,247,130,112,117, 7,156,171,160,201,112,179,108, 81,191,190,239,246,136, 86,114, 5, 59, 41,200,132,155,227, 86,165, 79, 60,
+171, 95, 72,109,241,179, 47, 28,251, 69,207, 33, 6,183,233,228,181,102,204,115,247,105,117,127,127, 93,148,255, 29,222,130,103,
+151,189,200,243, 75,116,253, 47, 71,249, 58,255, 93, 76, 0,217,173,154,208, 49, 50,153,206, 70, 86,232,108, 45,128,249, 25, 1,
+174,154, 24,212, 98,233,208,215,207, 6,194,106, 43, 22,132,167,168,177,141,246, 59, 16,106,229,147,119,158, 72, 7, 62,149,188,
+138, 94,109, 30,210,222,125,226,138, 73,181, 12,140, 90, 59,124, 70,177,219,161,175, 9,168,139,189, 20, 82, 20, 35,233,187, 29,
+ 66,207, 39,112,245,119, 23,207,185,126,162, 25,168,202,224, 46,253,207, 49,100,117,255,156,123, 14,187, 90, 48,171,185,108,164,
+ 22, 99, 20, 8,166, 90, 85, 43,149,171,253,126,122,206,107, 99,163,233,110,205,154, 16,152, 93,182,206, 21,135,203, 3,182,219,
+ 61,216,206,154,233, 84,113, 62,158,213, 54,234, 56,116, 11,251,241, 24,231,231,190,255, 21, 12,105, 37,254,140, 38,138,107, 22,
+ 7, 77,224,142,221,140,129,177,137, 65, 75,100,171,170,154,148, 69, 84, 41,132, 97,183, 5,199,128,167,211, 19,166, 41, 35,196,
+212, 1, 85,108,180, 77,103,187,243,160,206, 2, 61,239,217,200,155, 74,226,244,152,106,215, 30,196, 53,130, 74,217,177,171,112,
+142,213, 94,170,167, 19, 53, 50,204,167, 69, 80,218, 72,149, 89, 21,206,158, 8,229, 94,228, 92, 50, 38,169,248,244,225, 35,134,
+113,192,213,197, 14,155, 52, 98,134,118,193,187,253, 14,200, 5, 79,143,143, 72,166,206, 45,185, 96,147, 34, 60,198, 35,198,136,
+ 54, 23, 80, 10,104,181, 42,247,118, 8,160, 73, 69, 15, 49, 38,148, 90,145,204,206,114,124,120,232,192,145,237,144,240,233,116,
+198,124,174,136, 28, 16,168, 33, 79, 51,208,128,237,168,255,156,167,163,160,148, 10, 12, 98, 80,253,102,216,213,136,200,106,209,
+113,106, 39,197,132,237,110,143, 48, 12,200,101,214,243,163,100, 75,134, 23, 28,246, 7,220,220,220,224,211,199, 15,152,167, 25,
+105, 19, 80,206, 25, 23, 87, 7,252,250,215,191, 70, 24, 34,222,190,121,139,251,143,119, 56, 61,205,200,167, 51,174, 94,188,192,
+213,171,107,220, 63, 62,225,143,127,122,131,135,167, 51,174, 47, 15, 24,134,132,167,199, 59, 92, 92,238,177,187,216,225,135,183,
+ 31,241,241,225, 30, 50,207, 8,129,145,198, 0, 78, 12, 74, 17, 41, 4,108,134,136,171,235, 61,174, 95, 92, 35,109,212,102, 54,
+238,182,224, 20,113,158,206, 93, 72, 35,198,151,126,124, 60,226,246,246, 6,251,253,190, 67, 27,188,242,119,164, 33, 89,206,187,
+ 64,197, 94,227,184, 89,241,167, 93,212, 84,109,103,205, 93,160,227,175,168, 24, 91, 59,196, 0,110,202,220,246, 17,164,103, 15,
+ 83,212, 46,206, 43, 85, 52, 6, 5,243,214,214,128, 8, 94,242,162, 3,173, 0, 23,150, 22,104, 93,169, 52, 49,198,254,108,127,
+134, 30,168,176,112, 34,106,161,219,189,217,118,236,128, 42,113,201,207,120, 15, 37, 33,182, 20, 54,237,200,137,158,195, 56, 90,
+107,104,165,104, 21,238, 23, 2,233,103, 17,131,210, 3, 91, 63,154,213,227, 91, 91, 67,228,214,233, 91,126, 25, 5,142, 8,156,
+ 58,190,214,119,218,204,186, 95, 94, 20,200, 54,163, 36, 70,171,197,108,125, 98,107, 2,234,137, 78,100,186, 16, 80, 67,160,136,
+ 74,134, 68,245, 75,144,208,179,177,225,116,178,117,202, 23, 96,122, 11,233,106,127, 98,130,148,134,103,210,236, 85,160,137,191,
+111,100,140,120,255,220, 59,135, 30, 43,223,115,211,134,221, 45,164,224,168, 22,212, 89, 16, 82,234,231,144,255, 44, 88, 65,111,
+ 58,216, 40, 40, 31, 94, 44,166, 86, 25, 7,140, 34, 21,200,232,124,126,113,231,128, 39,223,184,168,203,172,140,193,214, 40,232,
+250, 33,159,182,232,136,184,149,188, 92, 68,171, 67,189, 85,233,110, 50,103,111,115, 47,151,184, 79, 30, 92, 88,216, 65, 77,173,
+ 62,243,157,183,254,190,105,210, 97,205, 85, 51, 36, 44,117, 82,207,156, 69,248,232, 23,178,172, 60,233,206,230,167,182,232, 70,
+150, 34,198, 66,117, 68,186,152,235, 57, 15,126,161,134,246,239,212,136,118,180, 10,200,161, 16, 16,124,133, 99, 86, 81,113, 7,
+197,234,217, 9, 86,112,156,203,180,216,162, 65, 61,244,169, 72,235,127, 70, 46,139,120,178, 59, 48, 68, 25, 10,173,169, 22, 3,
+162,207,162, 54,124, 42, 6,211, 21,128, 21,154, 20, 48,166,132,193,190,131,156,139,217, 49,173, 16, 19,224,226, 98,143,180, 13,
+ 32,214, 28,137,211,227, 9,231,167,147,126,175,150, 93,208, 45,198,242,151,164, 5,211, 56,180,149,120,208, 50,224,153,164, 59,
+100, 60, 44,225,245, 74,109, 0, 0, 32, 0, 73, 68, 65, 84,169,182, 10,230,134,113, 80,160,151,254, 94,138, 75, 86,125, 70, 68,
+107,140,221,238, 2,219,205,128, 10,193,253,227,157,158,139, 62, 57,139,201, 32, 77,122,174, 14,105, 68,108,128,216,103, 43, 21,
+ 40,249,108,162,191, 96, 2, 76, 1,137,174,153,162,135,146, 52,172,171, 86, 90,198, 45, 14, 95,176,100, 50,183,120,249,248,109,
+136,131,146,187, 8,253,176,175,162, 88, 82, 33, 65, 46, 21,224,136,159,127,254,132,214, 42, 94,220, 94,227,234,230, 6,143,247,
+ 15, 72,131, 50,178,207,211,132,167,199, 19,110,175, 14, 8, 32,141,164,227, 1,176,136,190,148,162,141, 55, 84, 60,193,134, 53,
+165, 16, 16,147,118, 60,109,214, 3, 61,162,106, 7, 39, 64, 26, 19, 8,132,211, 52, 33, 50,212, 75, 46,217,210,189, 28,237, 71,
+154,109,219, 8, 41,105, 24, 73, 76,140,221,102,163,163, 36,209,145, 62, 51, 97,220,108, 85,108,193, 1,243, 60, 99,122,154, 16,
+134,100,113,120,130, 52, 50,110,110,111,113, 60,157,241,244,240, 0, 6, 97,206, 21,183,175, 95,225,247,191,253, 45,136,128,239,
+191,127,139,251, 79, 15, 56, 61,158,113, 62,157,112,251,226, 37, 46,175,175,241,225,238, 19,254,247, 55, 63, 96, 42, 13, 55,183,
+215, 24, 2, 35,159,102, 92, 94,238,177, 63, 92,224,205,219,119,184,187,187, 71,206, 5, 3, 3,105, 36, 85,210, 39,205,115, 79,
+ 67,194,203,171, 61, 46,111, 15,250, 51,198,128,221, 97, 11, 30, 35,230,236,116, 59,235, 22, 65, 56,159,180, 48,184,186,186,234,
+ 22, 14,221, 19, 87, 27,255,234, 33, 64,129, 17, 73,109,136,222, 49,198, 16, 76,117, 89,186,215,155, 2, 33,134,193, 84,217, 11,
+120,165,154, 29,145, 45,186,146,221,227,233,234, 98, 19, 57,181, 10, 77,251, 98,173,122, 35, 51,106, 54,208, 70, 41,154, 49,128,
+134, 92,102,237, 16, 98,210, 61,111, 41, 64, 17,195, 71,234,164, 70,170, 96, 72,186,118, 81, 49,147, 35, 98,205,254,101,108,119,
+105, 90, 57,251,158,204,164,185, 70, 99, 91,246,198, 10, 40,209, 56,226,186,212,246,230,253,181, 72, 87, 50, 12,112,211,177, 57,
+194,194,236,102,110,160, 48,152,213,175,174, 44,162, 6,178,160, 37, 1, 79,197, 47, 89, 85,192, 43,177,146,180,214,119,237, 4,
+157,148,137,253, 89,221, 10,200, 4, 18,219,239, 89, 84,109,179,247,151, 93,247,103, 22, 63, 93, 95,160, 79, 50,106,191, 8,100,
+229,239, 94, 14, 91,244, 52,175,101, 54,233, 10,109,239, 18,189,144, 82,208,139,249,214,155,115,234,101, 25,243, 27,170, 84,130,
+253,125, 65, 45,158,234, 21,182, 44,109,114,193,151,203,182,161,147, 51, 91,145,176, 93,154, 98,191, 15,160, 5,208,218, 2,213,
+125,212,180,248,156, 29, 14, 94,139,237,170, 85,232, 14, 49,208,137, 78,158,150,200,208, 37,242,180,245,184, 91, 21,187,181,191,
+200,159,247,245,133, 62,195, 13,170, 38,247, 20, 50,143, 2, 86,212,238,114,169,119,166,189, 77, 63, 40,120, 56, 76, 83,161,113,
+ 47,104,106,183,122, 18,209,127, 10,106,241, 48, 22,136,244,226,220,223, 49,167, 5,118, 7,194,127,250,123,109,162, 98,223,165,
+159,237, 78, 38,212, 98,162,106, 70,134, 61,175, 62,121,227, 85,118,124,103,223, 91,199, 46, 54, 5,242,128, 27,233,207,151,190,
+ 7,181,182,190, 66,241, 41,129, 88, 81,170,234,119, 69, 82,151,172,211, 69,189,212,171,186,120,138, 97,185, 99,194,144, 18,152,
+129,156,181,147, 87,241, 32, 67, 74, 1, 18,176,191, 56,104,193, 19,245, 12, 57, 31, 79,152,143,249,217,196, 34, 4, 70, 37,177,
+ 34, 8,221, 10, 7,211, 8,244,231,201, 7,105, 6,131, 1,205,203,253,201, 13,173, 40,156,103, 59,170,192, 27,129,122,210, 91,
+176,149,101, 41,130, 97,123,129,113, 24,241,240,248,132,227,227, 17,187,195, 14,212,106,119,109, 5,203, 83,108,173, 42,116,134,
+ 53, 55,130, 18, 48,213, 25,179,135,104,145, 62,183, 37,103,240,118,163,234,120,235, 3,122,166,121,199, 47,154,144,170, 11,160,
+224, 15, 33,235,135, 35, 13, 82,129, 52, 90,232, 64,245,204,219,102, 35,198, 0, 20, 65, 43, 21, 3, 15, 56, 30, 79,120,120, 56,
+225,230,230, 26, 87, 55, 23,120,255,243, 78, 5,120, 4,243, 47,235,113,185, 25,148,129,171, 34, 14,160,205, 25,105,171,192,153,
+211,121, 54,153,127, 64, 28,146,122,255, 88,247,143,173, 78, 11,172,164, 1, 45, 2,105,187,197,241,233, 17, 85,148,168,165,176,
+155,128,211,121,234, 60,203, 33, 2, 3, 1, 97,208, 24,210, 20, 71, 29,177, 86,245,238,213, 82, 16,199,136,205, 97, 15,204,106,
+173,153,142, 71, 76,179,126,176,220, 0, 30, 18,168, 2,183,215, 47, 49,132,136, 31,254,252, 6,231,249, 17,151,219, 3,126,241,
+245, 47,241,219,223,253, 14, 53, 87,252,244,237,247,120,248,112,143,251,199,123,148,169,225,197,235,215, 56, 92,238,241,254,227,
+ 71,252,249,219,239, 81,114,195,245,213, 78,147,235, 78, 5,135,139, 29, 54,135, 29,126,124,251, 14,159, 62,221, 97,158, 51, 66,
+ 96, 12, 67, 48,251, 75, 66,160,136, 49, 68,220,222, 92,225,240,226, 18,137, 3, 98, 72, 24, 47, 15,192,102,128,212,102,202, 74,
+233, 86,160, 90, 43,206,211,132,155,235, 43,108,183,155,222,101, 19, 5, 27,119, 85,139,246,212, 17,120,150,220, 49,155, 77,234,
+ 42,192,197, 14, 27,144,118,139,150,138, 21,250,136,177, 64, 12,180, 17,109,164,100,139, 87,243, 26,235,136, 21,181,234, 75, 56,
+207, 93,141,204,164,197,138,160,244, 46,210,253,186,205,246,149, 33, 16,132, 27,202, 92, 81,114, 0,178, 70, 81,166, 56,244,248,
+ 86, 14, 58, 2,115,111, 59, 27, 13,173,148,138, 22, 53, 32,168,239,143,221,219, 75,253, 30,177,139, 65,137,139,139,185,133,160,
+193,171, 58,226,140, 65,215, 56, 68,203,232,185,138,160,213,162,251,115, 22, 4, 19,177,233,164,196, 70,103,196,136,148, 44, 9,
+190, 90, 52,174,121,194,185,233, 56,206,161, 59,180, 74,180,107,210, 35, 73, 93,140, 68,100,133,142, 84, 13,168,208, 96, 88, 85,
+ 84, 55,210,145, 48,121, 0,146,237, 47,217, 52, 52, 62, 89, 91,217,197, 56, 4, 43, 28, 74,239, 89, 66,224,174,175,168,221, 94,
+165, 32, 22,178,213,163,184, 2, 94, 13,246,104, 20,122, 82, 87, 15,142,113,222,190,214,251,253,130,139, 49,246,223,137, 61,100,
+ 69, 76,201,110,105,107,154, 32,103, 19,135,178, 34,164,137,238,128,121, 21,150,210,224,144,157,208, 47,115,216,212,167, 91,130,
+220,161,111,234,249,102, 97, 85,109,237,111,127,182,162,228, 78,198,211,226,175, 24,187,220,152, 1,188, 34,182,209,130,251,245,
+ 74,215,217,248,210,178,138, 34, 77, 1, 95,171,165, 69,134,160, 66, 69,169,253,179,172,121,233,244,188,171,127,206,131,215, 41,
+141,148, 2,167, 39, 5,203, 84,112, 5,122, 88, 97,120,171, 77, 30,124,122, 16, 83,210,169, 68,173,152,165, 90, 97,160,154,165,
+102,130, 64,223,249,215,226,106,110,233,223,149, 22,226,234, 78, 80,183,140,116, 45, 69,105,213,166, 55, 43,196,176, 77,249, 22,
+ 42,161, 95,244, 10,181,162,158, 46, 8,187,208, 53,214, 58, 23, 45,150, 19,219,159, 81,128, 97,163,151,186, 2,119, 42,138,152,
+176, 76,244,159,119,113,177,197,197,205,101, 95, 5, 73, 41,120,186,127, 82,113,165,235, 72,236, 92, 18,172, 10, 20, 24,147,129,
+232, 57,116,201,197,163, 94,212, 88, 17, 87, 87, 20,201,253, 38, 97, 72,193,166, 29, 65,117, 23, 82,193, 80, 16, 88, 17,224,176,
+189,196, 16, 70, 60, 61,126,111, 89, 4,140, 86, 26, 74,206, 72,141, 53, 37,174, 85,196, 72,125,106,199, 20, 77,108, 63,163,228,
+108, 58, 32, 88,179,163, 34, 80,142,188,116,234,125, 28,103,146,184, 10, 32,218, 88,171,153,128,134, 65,214, 29, 39,101, 22, 55,
+221,167,147,117,192, 98,156,110,183,200,204,181, 64, 0,140,227,136,135,167, 35, 30, 31,143,120,245,250, 18,215,215, 87,216,239,
+119,152,207,103,173, 0,165, 98, 11,237, 46,121, 63,130,238, 25,114,202, 16,243,231,198, 52, 34,114,192, 24, 25, 40, 5,219, 65,
+191,200, 96,208, 4,106, 13, 45,207,118, 25,233,139,125,216,141, 40, 85,211,218, 2, 17, 90,110, 72, 38,150, 58, 29,159,176,217,
+110, 32, 41, 97,183, 9, 56, 14, 64, 76, 73, 59, 1, 16, 74,107,152, 37, 99,164, 45,198, 52, 96,179,217,162, 72,197,233,241, 1,
+249,244,136,105,154,186,141,165,206, 51,102,110,248,236,197, 75,220,222, 92,227,155,111,191,197,221,199,119,120,241,234, 37,126,
+253,183,191,197,175,126,243, 43, 76,211,132, 15,223,255,132,135,187, 71, 60, 61,158, 48, 72,192,205, 87,215,216,110,246,248,249,
+253, 7,252,249,199, 31,145,198, 13, 46,175, 19,242,148, 81,167, 25,151, 55,215, 8,105,192, 15, 63,218,133, 62,205, 72, 32,140,
+145,109,223, 60, 32,134,136, 49, 6,220, 92,239,113,251,106,167, 66,159, 20,177,185,220, 34, 13,106,183,152,107, 69,157, 51,170,
+ 85,199, 42,172, 56, 35, 72,195,213,229, 5, 82,138, 11,198, 84, 68,149,222,194,160, 32,207,144,167,250,238, 90,193,100, 85,105,
+196,168,251,221, 58,247,248,200,192, 97,217, 93, 11, 41, 9,176, 45,116,186, 16,244,162,174, 34,125,215, 94,171, 94, 58, 14,236,
+168, 77,144,155,218, 2, 57, 14, 74, 22,236, 47,151,216, 75,111,135, 40, 5,196,164, 93,113, 32, 65,133,146,252, 20,220,162, 59,
+231, 92,171, 5,186, 4,125,177,109,181,227, 59,193, 92,178, 93, 98,218,178,201, 74, 68,197,196,150, 98, 88,128, 74,214, 85, 85,
+ 3,198,232,193,169,187,124, 19, 31,177, 98, 41, 81,103,181, 2,154,239, 88, 90, 1,153,178, 83,139,209,160,202, 94,143,233, 92,
+ 93, 20,196, 42, 14,115,171, 23, 89, 23,204, 28, 12, 46,146,123, 60,170, 62,255,171,203,134, 44,210,178, 17, 80, 21,255, 43, 54,
+ 38,100, 27,235, 11, 90, 47, 32,136,150,112, 17, 16,158,229, 44,244, 34,204,139, 0, 49,101,189,177,200,251, 57, 71, 58,230,182,
+127,184, 2,115, 96,187,116,203,254,238,187, 68,248,122,174,153, 58, 91,139,188, 16,212, 9,224,211,133,234, 98, 52,211,108,192,
+ 38,128,108,118, 74,129, 90, 1,187,192,183,255,172, 86,152,144,152, 15,219, 4,185,160,103, 43, 0, 47,220,156, 29,239, 35, 91,
+162,246,108,199,238,163, 99,142, 1,129,130,103,168,152,187, 64,139, 90,166,184,140,144,215,204,116, 43,110,200, 52, 36, 34, 22,
+247,187, 14, 61,106, 42,166, 37,120,168,142,254, 12, 69, 68,237,157, 88,144,220, 94, 96, 20, 35,168, 45,145,162,134, 41, 22, 65,
+181,159, 63, 37,127,159,107,239,208,215,212, 54,119,234,232, 63, 47,235,196,173, 74,183, 85, 49, 27,100,136, 85, 58, 89,173, 75,
+173,173,233,229, 16,220,134,183,202,238,142,122,129, 17,251,248,158,204,158,173, 86,200,236, 0, 35, 16,106,109, 40, 69,250,200,
+155,104,133, 3,110, 13, 69,128,154, 27,230,217,187, 87,237,236, 55, 73,217, 37,165, 86, 72, 34,108, 54, 90, 52,234, 56, 95, 51,
+ 64,124,237, 81, 50,112,113,125,109, 56, 94, 32,166, 1,143,247, 15, 56,157,207,125,116,175,247,133, 22, 47, 30, 54,165,208,162,
+ 21, 51,194,243,209,237,241,225, 14,253, 41,171, 16,155,214, 39,214,227, 56,232,251,109,159,119,149,220, 33,107,126,243,143,251,
+107, 72, 35,156,143, 39,212,156,123,146, 96,100, 32, 17, 33, 55,221, 62, 12, 60, 32, 38, 61,235,213, 82,171,174,137,156, 51,164,
+ 85,132,160, 99,255, 82, 20,196, 51,112, 66, 92,231,251, 98,153,132,244,135,183,239,246,196, 84,198, 54, 2,204, 70, 89, 74, 49,
+ 42,163,183, 0,173, 54, 11, 40, 80,223,177, 87,132, 67,136,120,124,122,196,135,187,143,120,245,250, 5,110,111,110,176,223,111,
+209,106,198,249,120, 70, 8, 1,227, 62,161, 65, 52,156,131, 3, 38,201, 8,194, 40,181,234,206, 36, 38,148,167, 25, 44,218, 85,
+234,206,194,118, 46, 57,163,205,106,151, 17, 38,164, 33, 97,224, 1,211,211, 81, 31, 50, 34,108,134,134, 33, 6, 76,231, 51,206,
+231, 51, 54,219, 17, 0,176,217, 14,216,111,107, 63,208, 17,180, 7, 11, 41, 97,123,216, 99,179,221,161, 53, 32,159, 39, 76,167,
+ 19,230,243,209, 19, 32, 64, 13,152,159,142,120,245,242,107,188,254,234, 51,252,240,211, 91,188,249,246,207,248,252,245,231,248,
+135,127,254, 7,124,246,197,151,120, 58, 62,225,231, 31,222,225,252,120,196,221,195, 3,194, 56,224,234,250, 21,136, 4,111,223,
+253,132, 31, 63,124,194, 16, 7,108,198,164,190,201, 82,113,117,121,137,237,110,135,111,223,252,128,159, 63,126, 64,157,179,229,
+237, 6,251,252, 35, 82,100,164, 24,112,121,177,195,235,215, 47, 49,151,134,152, 26,246, 23, 23, 24,134, 81, 87, 7, 45, 67,102,
+125, 65,164,101,181,125, 53,224,124, 44,184,186,190,192,102,187,241, 57,141,197,129, 54,176, 56,168,195, 33, 23,244, 44,171, 89,
+109,111,122,249, 70,183,112,128, 13,242, 97,128,159, 30, 84, 99,251,183,213,200,207,119,186,170, 52, 94,196,153,250, 60,105, 86,
+ 58,168, 65,114, 54, 86,251,208,115,192,245, 98,179,161,176,100, 61, 48,141,234,167,153,226,165,119,157,186, 31, 87,150,114,206,
+ 89, 83,214, 34,161, 22,245, 61, 83, 82, 26,221,114, 57,182,197,243, 29, 66,159,248,196, 97, 48, 96, 76, 65,233,151,185,142,192,
+ 21,132, 99, 59, 84,179,166, 53,169, 32, 81, 20, 43,219,162,108, 73, 11,211, 29,174, 78, 64,146,129,139,102, 52,243,253,170,154,
+127,161,212, 73,155,221, 4,162,186,146,186, 82,110,203,178,131,243, 11,147,171,217,242, 66,208,206,167,233, 33,199, 22,148,193,
+254,185,147,142,242,106, 43,166,128,239,217,178,230,243, 14,157,234,197,157,104, 86, 93, 8, 0, 39, 87, 40,116,141,225,130, 97,
+169,205,178, 20, 44,133,139,171, 90, 74,201, 71,187, 70,209,163, 96, 34, 57, 2,139, 98,127,189,251, 21,139,202, 36, 59,216, 27,
+137, 9, 52, 3,194, 10, 27,235,241,162, 30, 57, 75, 29,127,210, 12, 90, 68, 93, 5,239,208,156,103,153,224,180, 44,149,123, 39,
+110, 8, 96,219,166, 47,152, 84,135,243, 52,233,153,246,254,191,245,145, 54,173,172, 80,134, 98,237, 90, 5, 82,166,133,172,216,
+226,207,199,223,122, 25,164, 24,123,106,155,228,210,225, 52,235,119,177,245,204,118,253, 69,168, 46, 96, 35,159, 2, 40, 58,119,
+129,209,168,200, 80, 86, 24, 89,244,117,137, 67,165, 56,104,134,133,246,171, 75,160, 73, 41, 21,193, 82, 8, 59, 65,177, 71,183,
+182,133,240, 71,100,223,181, 91,218,202, 51,162,160, 71,230,138, 16, 74, 89, 44,195, 61,243,189, 25,121, 81,164, 71,179,206,179,
+ 70, 89,207,181,232,207,193, 1, 97, 72, 42, 86,174,130,145, 53, 68,203,220,121,125, 34,201,204, 40,181,128, 34,112,251,226, 70,
+ 45,216, 49, 32,113,195,211,227, 17,199,199,220,247,219, 93, 16,222,117, 28,207,133,147,125,101, 34,205,173,234,234,254,114,240,
+ 19, 47,235, 41, 10,122, 38,111,134,132, 72,107,219,119, 65,106,164,193, 74, 85, 48,110,174,113,113,121, 1, 42, 25,231,211, 89,
+161, 50, 28,186, 0, 29, 22,233,173,236, 31,234,107, 39,237,214,243, 2, 73,130,122,211,137, 44, 41,177, 86, 72,101,196,117, 16,
+ 0,185,232,200, 14, 18, 90, 5, 11, 84, 90,108, 62,160,134,138,138, 49, 42, 33, 77,154,147,149, 84,208, 16,147, 30, 52,165, 20,
+139,103, 85,200,200,221,195, 19, 66, 32,236,183, 7, 92, 93, 30, 80,230, 51, 78, 31, 63, 32, 13, 35,104,183,197,148,207,168,121,
+ 82,191,178,161, 47,107,206,136, 49,170,160,202,169, 92,165, 96,191, 25, 65,118,104, 73, 46,186,147,173, 21,141, 25, 67,138,200,
+245,140, 90,213,103,238, 31,142,176, 18,140,220,154, 18, 67, 80, 40, 76,204, 64,109,166,128,142,216,111,183, 24, 55,131,114,183,
+107, 69,153, 39,204, 79,143,168,229,140,106,201,102,166,121,196,213,229, 37,190,252,226, 11, 60, 62,156,241,253,247,111,241,234,
+243,207,240,143,255,252, 79,184,253,236, 21,238, 62,221,225,227,219,159,241,120,255,132,249, 84, 48,238,119,216,238, 15, 56,157,
+207,184,127,124,192,221,253, 61, 54,105, 64,160,128,243,227, 3, 98, 72,184,121,121, 3, 10, 1,223,124,251, 6,239,127,190,135,
+148, 25, 32,141,172,229,196,106, 91, 11,140, 52, 4, 28, 46, 6, 92, 93,239, 52,177,172, 17, 46, 15,215, 24,134,168,227, 92,129,
+ 37,215,233, 88, 87, 59,217, 1,167,211, 17,141, 10, 14, 87, 7,196,196,168,173,120,131,101,232, 95, 21, 91,248,197,174,145,186,
+154, 3,239, 21, 49,172,131,108,166, 6, 94,118, 98,170,168,230,168,251,222,214,227, 63,105,133,106,125,174, 44, 21,169, 75,246,
+183,237,242, 69, 4, 82, 50,178, 93,140,105, 72,102,117, 50,171, 74, 19,228,170,192,147,148,210,106, 28,153,156,164,164,212,174,
+166, 43,157, 20, 19,116,229, 29, 86,249,210,161,235, 64, 22,241,155, 32, 26,102,146, 44,165, 43,215, 2, 22, 77,162, 10,145, 33,
+ 85,225, 51, 28, 3,196,178,208,165, 42, 76, 7, 6, 13,137, 72,170,170,247,231,132,116, 31, 12,182,181,194,226,136,214,253,179,
+ 79, 32,176, 62,236,165, 11,180,180, 75, 46,186,187, 51,109,128, 64,128,106, 5,136,225,194,200, 46,150,230, 42,167, 85,148,164,
+111, 3, 21, 82,163, 57, 9, 36,220,199,214, 20, 8, 92,245,112,227,192, 96, 97, 21,156,145,114, 28, 32,238,138,113, 74, 31, 86,
+227, 84, 88,154,158, 24, 74,150, 1,214,171,145,164,106, 88,143, 81, 40,153,150,241, 43, 75, 48,161,163,199,137, 54,176,212, 30,
+164,228, 86, 0,189,168, 43, 24, 10,246,145, 90,117, 84, 31,162,241,189,139,118,135, 70,180, 91,160, 86, 97,149,216, 75,125, 74,
+225, 66, 39, 18, 64,109,201,203,234,177,216,216, 94,253,214,209,132,139,205, 2, 90, 44,155,192,156, 34,122, 65, 7, 43, 48,100,
+185,160, 97, 97, 43,182,178,232, 98,179, 21,145,108, 61,210,245,255,159,109, 74, 84,139, 22,167,244, 23,172,119, 15, 90, 97,219,
+203,250, 51,211,224,248,100, 89,229,175, 47,216,215, 62,170,183,159,217,167, 46, 46,238, 18, 17, 20,152,243,103,149,180,232,110,
+ 0, 11, 71,214,115,192, 33, 48, 85, 59, 70, 83,206,117,173, 7, 69, 2, 23,245, 45, 40,233,172,162, 33,160, 9,247,139, 92, 28,
+205, 44,189, 78, 84,251,150,216,237,140,134, 60, 23, 13,123, 41,217, 60,217,138, 32,143, 28,112,156,102,212, 90,177,219,142,136,
+ 49, 88,178,102, 69,206,181,235, 28,230, 82,112,253,234, 26, 87, 23, 7,156, 75, 70, 74, 3,206,231, 9,167,227, 9, 13,185, 23,
+177,158, 81,222, 68,108, 26,161,146,231,158, 94,231,216,106,105,166, 61,117, 77, 4,119,219, 34,208, 84, 3,194,132, 97,136, 24,
+134,193, 62,203, 96, 19,148, 12,178,189,120,147,130,221,230,128,237,120,129,227,253, 3,206,211, 73,221, 50,204, 26, 73, 12,255,
+124, 10,134,141,166, 48, 6,142,157,192,106,190, 64,117,140, 16, 35,133, 1,129, 38, 72, 41,200, 83, 70, 8, 81,213,239,110,199,
+112,165,109,143, 18,116,118, 55, 7,133,191,144, 82,218,208,128, 92, 10, 46,118, 59,221,155, 20,179, 16,152,159, 19, 28, 33, 77,
+237, 95,196,250, 96,115, 76,248,112,127, 7, 17,193,126,183,199,126,183,199,253,112, 7, 74, 73,119,233,155, 29, 30, 30, 31, 48,
+165,140, 97,136,120,178, 79,189, 24,224, 98,216,140,136,251, 4, 97,194,156,103,240, 48, 42, 20,102,158, 81,179, 10,159,226, 56,
+ 32,133,128,185,100, 28,143, 25, 97,163,158,105,176, 70,229, 5,138, 40,243, 19, 24, 98,118,181,164,105, 57,131,166, 97,165, 49,
+ 97,123,184, 64, 12,140,154, 51,242,121, 66,105, 19,202, 52,105,178, 84,205,168,243,172,146, 38, 14, 24, 54, 91,252,213,175,126,
+ 9,105,130,239,223,124,135,219, 23, 47,240, 15,255,248,247,120,245,226, 22,159,238, 62,225,227, 15, 63,227,254,195, 7,204, 21,
+216, 94, 94, 96,220,111,113,124, 60,226,254,241, 17,199,115,198,126,127, 1,112,195,241,225, 9,227,102,131, 23, 55, 47,144, 91,
+197,155,239,191,199,251,143,122,161,115, 83,143,121, 76,212, 81,146, 99, 34,221, 21, 93,108, 16, 55, 17, 21, 5, 99,218, 96,220,
+ 12,166,250,213,209,228,156,149,129, 76,102,123,170,181, 98,154, 38,236, 47, 54,184,184,216,154, 66,122, 65,186,118, 1,142,117,
+191, 61, 66,210,170,250,238,141, 13,193, 44, 26,158,117,108, 35, 55,240,179,132, 50,106,106, 31,139,113,201, 94, 15,134,197,132,
+ 37, 88,209, 74,193,235, 76,235, 82, 50,230,233,100,254,111,141, 97,140, 67, 68, 83,169,114,199,248,114,228,190,143,107, 22, 88,
+ 65,172,163,208, 24, 24,115,182, 44,226, 16, 86,104, 91, 21,148,181, 78, 39,147,158,125, 80,107,134,241,152,116,100,106, 7, 70,
+ 21, 7,194, 4, 37, 86, 81,233,151,181, 34, 79, 75, 71, 31, 71, 94,246,108, 94, 29,251,174, 93, 25, 10, 90,233, 55,243,235,138,
+ 84, 19, 96, 89,153,200, 12,110, 98,136,226, 85,114,150,143,116,151, 69,154,238, 96,221, 91,236,145,175,118,105,120,196, 43,175,
+252,234, 30, 7,170,157,182, 44, 35,127, 31,195,175,194, 55,124,111,216,136, 87,255, 60, 59,132,171,239, 60,235,146,161,110, 86,
+ 44,159,126,178, 37,163,245, 81, 52, 55,227,220,163,139,247, 52,177,173,233,158, 54,134, 69,204,135, 37,107, 94,133, 74,232, 17,
+166, 20, 76,183,192,139, 32, 83,245,239, 11,185,175,209,115,118,186, 11,205, 52,175,221,119,192, 98,159,183,254,195, 57, 68,237,
+166,209, 86,161, 29,210,119,235, 58,145,169,221, 75,189,228,180,219, 84,170, 9, 98,228,110,237, 99, 14, 29, 7,172, 25,235, 64,
+ 53, 74,153, 98,101, 77,161,173,153,166, 86,184,152,248,212, 38, 32,157,184,103, 73,136,181, 86, 76,115,214,103,131, 96, 54, 98,
+233,241,182,110,129,114,235, 31, 76, 15,194, 33, 44,182,198,230,146,125, 23, 63, 58, 65, 81,122,225,133, 78,231,163, 62,173, 45,
+213,146,212, 34,119,209,160, 54, 55, 11, 89,176,139,241, 22, 71,155,141,147,236, 44,175,102, 59, 52,193, 91, 17, 89, 70,230,173,
+ 26, 35,222,214, 60,173, 97, 46, 85, 47,107,131,253,196, 20,245,204,153, 84,143, 48, 12, 73,139, 38, 81,145,156, 79,134,171,193,
+159, 94,221,222, 64,168,118,130,224,233,116,194,249, 52,233, 57,196,100, 58, 34, 90, 83,143, 45,213,111,113,132,201,138, 91,209,
+224,144, 31, 66, 76,140, 38,193,156, 19,190, 95, 39,108,183,169, 63,147,221,209, 80, 69,239, 34, 34,212,198,184,185,125,137, 20,
+ 8,111,159,238, 48,231,169,139,182,165, 53, 67, 42, 91, 54, 1, 8, 28,163, 10,184, 61,240,201,194,181, 60,164, 42,218, 10,177,
+172, 34,109,227,146,136,216,250,190, 11, 96,192,186,176,100, 96, 25,205,191, 54,202, 26, 19, 54,105,163, 2,133,162, 34,187, 44,
+ 25,185,248,174, 47,232,206,195, 64, 8, 49, 6,108,134,128,199,187, 71,204,231, 9,219,109,194,126,191,195,184,217, 96,191,223,
+ 99,122, 58, 97, 28, 19, 68,128,243,148,113,123,117,129,187,159, 63, 1,150, 75, 91, 1, 12,227,160, 47, 59, 19, 42,130,133, 19,
+ 4, 76,211,140, 96, 15,118, 28, 20,143,122,124,120,130,204, 0, 13,186,251, 97, 34,236, 46, 14, 32, 52,228,121, 66,140,205,188,
+214, 9, 3, 1, 23,219,132,195,229, 65,255,154, 24, 81,202,132,233,116, 68,144,134,104, 84, 31, 33, 91, 45, 84, 61,244, 98, 98,
+124,249,213,231,184,184,218,227,251,159,222,225,197,235, 91,252,254,239,126,135,203,171, 3, 62,125,122,192,207, 63,190,199,167,
+119,239,208,152,113,243,249, 43,180, 16,113,255,233, 30, 79,119,247,168,129,113,216, 31, 80,203,140, 79, 31, 62, 96,127, 56,224,
+246,234, 26, 79,211,132, 55,111,126,192,195,195, 35,100,206, 0, 10,226,144,144,172, 75,102,110,216, 15, 1,183,215, 59, 12,219,
+104,140,121,221, 57, 14, 99, 66,138,193,212,218,106,237,153,103, 67, 54,138, 22, 86,231,124, 2,152,112,121,113,109,202, 74, 27,
+ 65, 59,174,212,108, 95,174, 48,214, 70,143, 86,135, 75,179,144, 24, 66,201,179, 42, 85, 99, 64, 16, 19,133,144,118,192, 58,210,
+213,151, 60, 4, 54,237,131,197,237,250,168,147,212,211,238,209,151,181, 1, 77,114,223, 69,198,180, 49,165, 61,119,143,178,103,
+ 69, 55, 65,231,201,103, 0,148,180,123,175, 22,214,192,182,195, 76,113,128, 67,235, 20,173,234, 25, 97, 58,190,173,197, 64, 33,
+ 68,221, 50,231, 25, 0, 10,169,208,145,152, 4,187,124,197, 40, 27, 29,169,106,192, 21,118, 11,215, 66, 17,243, 8, 19,144,143,
+ 41, 61, 6, 84,158, 1, 91,208,196, 72,115, 22,233,217, 68,119,241, 38, 86, 83, 95,184, 66,110,216, 44, 77,160, 98,158,125,253,
+206, 96,151,122,179, 11,219,173, 82,238, 59,103,167,131, 88,129, 80,154, 49,184,237,210, 98, 1,178, 84,237,198,155,217,172, 12,
+232,210, 21,131,204,186, 99,195,194,124,247,253, 39,154,239,219,101, 21, 57,251, 60,255,194, 51, 51, 16, 21, 37, 93, 69,223, 41,
+178,177, 61, 32, 64,100,187,100,213,130,231, 44,242,148,210,114,234, 82,195, 82, 59,154, 77, 8,122, 54, 53, 75, 40, 35, 67, 80,
+ 11,214, 86, 45, 49,165,252,178,239,239,103,119,179, 5, 38,245,204, 30, 99,189,235,247, 68,172,138,162, 30, 52,227,151,104, 80,
+138, 32,170,142,238,245, 99,214, 6,162, 86, 91,123,152, 86,163,211, 25,225, 77,146,122,243, 37,120,124, 44,117,145,177, 10,198,
+236,231, 55,173, 68,173,165, 43,192,165,106, 26,166, 67,104, 22, 72, 0,117, 39,130,143,180,189, 32,171, 77,150, 40, 94,219,235,
+ 55,114,155, 31, 33, 64,159, 51, 69, 58, 55,117,147,128,108, 55,175,214, 48,181,113,218, 59, 19, 66, 23,191,137, 52, 8,170, 53,
+ 79,188,216,252, 96,246, 84,210,247,170,218, 26, 64,154,238,191,115, 41,154,175,110, 20,184, 30,109,218, 8, 21, 21,121,178,188,
+ 8, 0,227, 48, 0, 12,204,150,127, 62, 14,140,113,140, 32,210,139,179,204,179,105, 93,244,243,186,185,185,198,139, 23,215,152,
+138, 32, 68, 45, 80,142,199, 19,242, 52,171,125, 54,232, 61,230, 33, 43, 77, 17,119, 86, 80,152, 2,159, 91,199,194,146, 51, 29,
+ 52, 29, 94, 11,113,210, 39, 76,171,200,128,200,132,171,237,166,231,237, 17, 3, 98,206,135, 49, 24,167, 32, 4,220,190,120,173,
+172,247,233,132, 34, 25, 33, 12,189, 24,213,220, 18, 99,191, 67, 35,134, 21,210,105, 66,230, 38,152,114, 70, 33,247,227,235,174,
+190, 22,160, 88,129, 17, 93, 24, 35,230,113,237,123, 69,132, 46, 6, 91, 12,248,100, 99,182,138, 33, 37,164,144, 80,244,179, 64,
+ 45,210, 47,252,214, 20,190,160,127,168, 2, 61,134,113, 84,193,216,221, 35,190,124,249, 26,187,221, 14,145, 3,118,219, 29,242,
+211, 73,163,228, 8, 56,207, 51,134, 52, 34, 13, 9,179, 20,204, 77,209,133,155,253,168,191,120,174,200,243, 25,227,238,128, 34,
+ 5,243, 92,176, 97, 31,225,232, 56,183,228, 9, 28,151,125, 25, 19, 99, 28, 71,228,170, 8,210, 97,187, 55,136,130,122, 23, 95,
+190, 30,251,203,221,166,140,243,116,194,249,116, 66,106, 64,177,248,216,148,116,151, 93,160,221,230, 23,191,248, 18,175, 94,189,
+196,249, 60,227,246,250, 22,191,252,237, 95,225,226,242,128, 79, 31, 62,226,135,111,222,224,167,183,111,113,177,191,196,213,237,
+ 75, 84,169,248,240,254, 45, 30,158, 78, 24,182, 7,140, 67,196,244,244,132,199,199, 71, 92, 94, 94,225,197,205, 13, 30, 78, 79,
+248,246,207,111,241,248,240,132,156,103, 13,176, 73, 17, 27, 82,207, 54, 24,216, 15, 35, 94,223,236, 17,198,164,177,124, 99, 52,
+ 81,138,254,126, 61, 27,185,122,214,185, 94,150,100, 54,170,114, 46, 56, 28,148,132,231, 47,156,136, 44, 9, 92,176,156,224, 90,
+128,106,236,109,195,231, 50, 27,162,180, 86, 43,238,138,138,196,130,174, 5,164,102, 11,167,214, 75,162,245,100, 34,221, 9,181,
+ 90, 84, 40, 99,128, 31, 77, 38, 50, 96, 69,211,177, 97,169, 74,131, 35,106,136, 33, 34,142,201, 88,234, 54, 46,101, 27,215, 70,
+197, 23,207,243, 73, 89,208,172, 65, 7,205,240,145,106,141, 3, 34,121,199,236,161, 49,170, 70,247,216, 75, 72, 85, 64,143,237,
+240,188,203, 36,243,198,242,192,207,130, 52,218, 42, 34, 82,204,150,197, 54,205, 82,181,181, 21,145,214, 1,232, 42,161,118, 15,
+172,123,124,125,196,166, 29,124,180,103,111, 85, 60,253,101,240, 70,207, 18, 55, 14,180,229,119,251, 14, 48, 52,233, 75,238, 6,
+ 1, 69, 67,136,154,216, 73,140,106, 22,162,173, 63, 86, 92,251, 14,107,241,212, 69, 6,168,160,127,230, 61, 60,165, 73,151,210,
+ 50, 43,139,157, 68,255,247, 92,129,108, 1, 54,108,118, 46,207, 77, 96, 90, 58,240,102,207, 89, 99,151,230, 90, 14, 0,121, 28,
+107, 1, 26, 33, 84, 70,115,116, 42,177, 18,194, 88,245, 53, 84,163,126, 14,188,208,245,224, 25,211,180,234,170,100,161,152,209,
+ 18, 60,102, 93,244,202,103, 95,237,239, 32,253,156, 84, 56,103, 12,120, 27,223,123,130, 95,223,205,183,234, 53,129,193,116,244,
+ 98,119,104, 12,200,134, 41,141, 87,193, 39,102, 15, 38,127,142,188,218,161, 30, 27,234,202,123,125, 39,165, 39,101,198,152,180,
+238,168,106,115,107,196,154,183,109,188,113,125,215,237,217, 52,235, 99,239, 64,109, 82,193, 29, 43,107, 5, 98, 19, 20,180,197,
+146,102,107,173,181, 82, 95,247,211, 75, 76, 52,122,206,189, 62, 19,186,187, 95,233,113, 86,222,201, 14,175,115,225, 91,177, 14,
+ 93, 4,197,166, 51,181, 8,178, 59,115, 86,240, 31, 23,223,214, 98,162,189, 20,144, 70, 21,244,206,101,134, 52,193, 48,166, 30,
+187,155,171,142,234,155,176, 18, 15,153,112,123,123,133, 16, 19,166,233,140,113,136,168,101,194,244,116, 66,201,181, 11, 68, 3,
+185, 53,180, 45, 98,207, 30,216, 66, 29,215,234,137,132, 88,227,126, 27,208,130, 94,254, 68,170,165,217,140, 3,134,237, 6,229,
+116,182,169,101,132,200, 25,209,214,214, 2, 32,140, 91,140,155,173, 10,219,114,209, 84,207,173, 77, 85, 68,212, 85, 53, 21, 5,
+ 57,216, 59, 20, 99, 2, 7,234, 22,205,211,164,171,229, 38,246,252, 26,240,199, 67,133,162,131, 27, 86,203, 39, 29, 77, 53, 70,
+245,234,157, 86, 21,159, 9, 41,246,195,160,187, 57, 11, 66, 40,181, 44,185,199, 22,205, 41, 22, 80, 16, 66, 0, 82,194,241,238,
+ 9, 63,189,255, 25,191,252,197,103,216, 29,246, 40,173, 33,109, 70,212,144,192, 81,189,125, 31, 63,222,161,197,128,184, 25,144,
+103, 69,149,206,210, 48, 12, 7,147,243,219, 88,159, 4,210,253,201,232,182,172, 92, 4,121,158, 87,227, 55, 29, 1,141,195,136,
+214, 84, 57, 62, 12, 3, 98, 8, 24,237,193,200, 83,198,116, 62,219, 94, 98, 70,145,130, 86,102,228, 34, 64, 27,177,217,108,109,
+172,205,144, 66,248,234,235,207,240,197, 47,190,132,128,144,152,240,249, 47,191,198,118,179,193,221,167, 7,124,247,205,119,248,
+225,155, 31,112,245,226, 26,175,191,248, 28, 15,199, 19,190,255,254, 7, 72,107,184,184,185, 70, 26, 6,220,127,252,128,251,251,
+ 35,110,174, 47,241,226,246, 18, 31, 62, 62,225, 63,190,249, 30,231,211, 17,179,253,236,155, 20,144,152, 32, 9,136,145,177, 79,
+140, 23,183, 91,132, 77, 66,174, 13,135, 67, 2, 15, 17,115, 46,216,108,162, 10, 89,172,171,200,165,218,184, 76,119,159,145, 24,
+243,156, 65, 17,216,237, 54, 8,161,117,145, 90,107,170, 44,133, 65, 34,200, 32, 17, 29,149, 26,168, 7, 94,144, 67, 55,208,204,
+107, 78, 22,190, 96, 74, 98, 19, 83, 54,243,188,194, 32, 33, 13, 13,165,233,202, 67, 68,122, 50,145, 7,198,232, 14,136, 1, 40,
+ 61,138, 44, 95,216, 81,143, 28,151,157,103,179,132,138, 24, 2, 36, 4,197, 72,250,222,144,213,174, 70, 85, 39, 1,238, 33,134,
+117, 60, 49, 68, 72, 35, 20, 20, 11,145,176,181, 3, 91, 50, 89, 13,198,206,214,238,185,228, 98, 34, 66,141,121, 93,239, 66,201,
+212,194, 10,153,145, 69,144,213,180, 91,235,176, 38, 90,226, 66,181, 11,172,125,199,218,204,110, 85, 69, 59, 35,107, 23,236,130,
+ 82,127, 88,179, 60,103, 14,158,238,166, 63, 27, 57,194,214,231,156,158, 21,201,218, 5, 19, 25,139,221, 40,100,158,201, 78,171,
+240,157, 30,224,226,212, 48, 98,104,244,193,210,149, 88,184,157,118, 46,198,173,119, 44, 43,108,244,175,133,198, 82, 64,243, 42,
+134,149,108, 63,160, 17,165, 30,160,194,253, 66,100, 19, 27, 25,133, 95, 59,165, 64, 29, 83,189, 6,219,104, 19, 79,203, 10,128,
+ 26,162,217, 31,245,249,177,155,210, 16,190,110,222,232, 19, 5,255,188, 40,244, 92, 49, 10,181, 7,212,232,202,161,217,158,222,
+ 20,211, 33, 24, 69,112, 1,244,192, 14, 81,247, 93,187,194,222,191,215,190,175,181,103,182,227,116, 69, 52, 40,198, 27, 37,104,
+ 10,156,239,202,125,116,204, 6, 46,106,166, 70,215,130,194, 20,226, 6,225,107,108,233,147, 97, 13,141,145,110, 95, 10,129,148,
+146,105,133,128,102, 39, 24,178,208, 46, 62,154, 91, 95, 71, 8, 22,223, 61, 7,178,252, 2,101,179,119, 56,116, 87,220, 99, 5,
+108, 49,188,179,198,185, 65, 88,186, 79,188, 86,233,116, 56,177,139,188,152, 74,125, 46,106, 15,174,181,234,243,215,153, 0, 22,
+239, 42,170,152, 7,128, 20, 20, 26,211,154,160,204, 90, 92, 13,195, 96,185,234,154, 98,168, 28, 14, 13,220,218, 94,108,176, 63,
+236,213, 37, 96,113,197,167, 83,198,124,158, 0,169, 32, 54,228, 57,187,230,129,208, 26,171, 91,199, 87, 42, 13,214,156,232, 89,
+162, 1, 72,254,174, 24, 18,221,116, 32,206,141,191,190,186,232, 12, 7, 37, 74, 2, 85, 50,136,131,138,106, 91,195,245,205, 23,
+ 72,227, 14,231,211, 17,249, 60,117,157, 90, 8, 17, 37,207, 56,158,158, 80, 73, 16,173, 81, 25,135,193,146, 35, 53,222, 58,215,
+ 25,167,227, 9,185, 89, 46,123, 92, 92, 60,173, 86,148, 57, 35,202, 42,227,149, 86, 15,110, 67, 67, 45, 6,167,143,254, 5,146,
+ 97, 45, 89, 71, 98,134,226,147,102, 68, 54, 83, 69,147,117,243, 32, 71, 80,186,157, 9,184,127,124,192,156, 51,174, 47, 47,145,
+ 56, 34, 83,198,197,197, 14, 82, 42,182,155, 45,222,151,247,170, 58, 30, 7,100, 57,226, 16, 7, 20, 99,166,199,144, 32,176, 61,
+ 75,113,138,153,193, 42,130, 61, 12, 13, 56, 77,115,127,201, 68,101, 36,216, 95, 28,108,191,200,216,142, 91,164,113,236,168,197,
+ 34,130,199,135, 7,205,246,230,136,102, 84,178, 64,172,137, 95, 28,144, 75, 6, 69,198,175,126,243, 43,124,249,245,151,216,236,
+118,104, 76,184,186,190,198,225,176,199,211,211, 19,190,253,230, 13,126,248,238, 7,188,250,242, 21, 62,251,234,115,124,120,251,
+ 9,127,252,243,159,177,221,140,248,252,243,207,145, 69,240,225,253,207,168,185,224,179,207, 94, 97,191, 31,240,227,187,143,248,
+246,155,119, 56,231, 35,230, 89,129, 2, 67, 2, 66, 84,169, 52, 19,227,144, 2, 94,190, 60, 96,115, 72,152,231,130,152, 6,164,
+253, 96,133, 84, 67, 74,177, 7, 79, 72,107,168, 53, 63,131, 8, 85, 19,223,108,182, 27, 12, 67,242,225,144, 94,222,188,100,132,
+ 51,175,125,193, 62,174, 54,168, 9, 49, 22,221,172,134,182, 16, 12, 34, 66,189,109,240, 27,192,246, 76,122, 81,137, 84, 85,166,
+ 19,247, 63, 79, 29, 72,173,115,148,217, 90,143,129, 2,192,193, 42, 85,128,173, 19,114,202, 21, 72,109,119,154,121,253, 60, 74,
+147,154,244,223,187,174, 34, 47, 93,221, 31,109,117, 64,213, 85,192,109, 97, 47, 4, 70,105,106, 11,241,182,174,212,210, 45, 73,
+136,232, 32,144,142,226,236,221, 94, 91, 66,100,218,130,164, 90, 72, 99, 90,228, 58, 33, 12,182, 51,117,209,156,239,165,215,250,
+ 2, 49,177, 30,153, 58,189, 54,251,174,196,194, 47,236, 18,204,181, 88,118,117, 70, 13, 80, 44, 44,173,148,213,236,254,236,250,
+172,235, 95, 34,115,177,228,198, 27,108,136,152,122, 59,203, 68,200, 88,137,180, 2,161,102, 43, 18,236,249, 32, 35, 6, 90,248,
+ 50,152,108,247,104,227, 77,215, 51, 48,169,119, 94,180, 22, 90,108, 90,109,253,220,160,103,117, 47, 14, 52,123, 30, 93, 31, 80,
+107, 39,182, 85,131, 21, 33, 24, 49,176, 39,131,152,240,149, 88, 89, 7,230, 82, 32, 7,214, 4,215, 33,176,253, 30,188, 16,189,
+ 76,240,215, 72,208, 56,118,198, 62,218,115,107,216,250,226,238,223,217, 10, 42,179, 94, 69,232,206, 55, 35,152,144, 49,198, 96,
+ 99,241, 6,170, 98,188,115, 60,107,172,146,113,239,251,207,236,133, 20,180,113,209, 73, 8,247, 70,170,174, 38, 64,176,253, 53,
+155, 8,146,176, 40,187,169,145,173, 60,168,235,102,214, 98, 24, 49,108, 45,131,193, 38, 80, 80,216, 15,117,202,159, 58, 11, 22,
+ 82,157, 7, 0, 50, 2,140, 12,108,153,233,130, 70, 1,185,106, 28,106, 45,130, 57, 23,228,108,163,119,127,191,157,123, 1,233,
+221,186,190, 67,192,102, 76, 96, 98,204,121,134, 52, 96, 72, 17, 99, 74,102, 23, 19, 83,211,235,148, 44,109, 18,118,251, 45,246,
+187, 13,178,173,236, 34, 3,247, 79, 39,204,115, 89, 86, 32,182, 70,107, 30, 34,179,230,235, 99, 85,228,216,123, 82,237,221,245,
+192,181, 68, 1,213,211,231, 42,112,216,141,184,184,220, 40, 8,127,246,151, 0, 0, 32, 0, 73, 68, 65, 84,190, 89,128, 96,216,
+218, 42,162, 69, 21, 41,179,254,242,242, 6, 32,224,124, 62,227, 52,205, 58,149,140, 9, 12, 21,101, 79,118, 7,168,246, 72, 69,
+194, 10,159, 9, 0, 42,206, 83,214,132, 77, 79, 64,102,181,148,195,180,109,211,148, 17,213,186,195, 11, 24,194,255, 67,179, 15,
+ 76, 4,161, 41,121,173, 9, 33,215,210,119, 20,126, 40,228, 92,123,186, 20,200,129, 29,235, 7, 94, 71,135,105, 51,226,225,225,
+ 1,249, 84,144, 54, 35,118,155, 13, 62,157,142,184,184,188,192,241,241, 9,227,198,194, 81,102, 85, 43, 82, 10, 8,196, 40,121,
+ 66,107, 35,198,221,136,233, 60, 65,178, 96, 46, 19,134, 33,225,220, 57,194,170,212, 46,249,212,149,166, 14,207, 57, 92,236, 49,
+110,182,104,173, 98,179,221, 88,165,174, 35,186, 82, 42,142,143,143,120,124,248, 4, 2, 43,161,136, 8, 67, 28,108, 63, 93,117,
+100, 19,128,175,255,234, 43,124,246,249, 43,108,182,123,132, 24,177,189,220, 99,136, 3,238,239, 62,225,135, 55,111,241,246,135,
+ 31,241,197, 87, 95,226,197,203, 27,124,255,253, 79,248,211,191,255, 47,188,252,252, 53,190,248,252, 75, 60, 60, 62,224,167,239,
+191, 7, 98,192,203,155, 91,108,182, 35,222,190,251,132,111,190,121,171,220,248, 58,161, 9, 99, 72, 1, 67, 20,139,242, 35,108,
+108,135,190, 25, 19,202, 92,209, 56, 96,187, 79,170,220, 45, 98,169,108, 70,101, 11,213, 44, 35,234,157,117,242,150,100, 49,255,
+164, 22, 50,205,198,244,234, 69,108, 38,128,140, 86,197,115,207, 93,102, 59,145,164, 54,180, 8,203, 96,111, 88,154, 30, 49,127,
+167, 94,106,212,237, 51, 74, 68,106,230,183, 85, 5,142, 44, 60,132, 38,157, 75, 29,120,217,163, 58,254,147,204,214,209, 44,133,
+ 77,164,116,108,165, 90,171,150,196,177, 24, 83,191,160,157,218, 36, 22, 79, 26, 44, 11, 93,106,177,113,102,181,136, 97,177,196,
+ 57, 61,168,156, 24,229,188,116, 31,173,186,178, 63,172,186,109,216,231,247, 28,159, 28,116, 20, 38,203,116,192,255,108,162,214,
+139,159, 42,139,104,135,157, 92,101,211, 44,169,210, 47,134, 42,158, 6,165,232, 71,177,203, 45,153,216, 78,164,162, 54,197,153,
+ 58,249,106,158, 38, 12,219,208, 5,114, 32,181,227,105,185,176,124,126,180,128, 35,187,224,203,105,102,158, 40,230,132, 49,197,
+212, 82, 87,212, 19, 45, 94,240,110,107,178, 78,168,251,214,205,242, 8, 75, 33, 19, 11, 57, 17, 17,196, 96,124,255, 38,230, 52,
+ 97,251, 30, 93, 20, 39, 61,197,207,139,181, 46,182, 51,142,186,139,231,154, 41,209,117,101, 80, 77,155, 81,123,185,211,227, 67,
+237,251, 97, 44,100,180,214,180,129,209,174, 28, 61,189,172,193, 9,120,254, 59, 18,106, 46,182,202,167, 46,156,243,189,247, 95,
+ 94,230,254,239,193,172,157, 11,231,221,153,243,170, 84,175, 69,208, 44, 13,113, 61, 77,210,117,140,231, 40,152,203,161, 35,106,
+165, 43,159,157, 74,232,248,215,214,154,137,230,216, 34, 91,181,248,114,167,129, 72,179, 75, 1, 75,182,135, 61,207,197,246,235,
+196,203,239, 77,157,170,230,212, 56, 45, 14,181,176,244,247,101,217,233, 47, 41,113,246,185, 26,208, 69,178,189, 15, 85, 48,103,
+ 35,200, 85,195,197, 22, 93, 99,166, 4,228, 92,250,119,222,204,150, 73,117,137,200, 77,195, 96, 43,221, 2,166,134, 20,162,118,
+216,166,147,200, 70, 87, 27,198, 17,227,118,196,118,183, 5, 18,163, 76, 19,198,113, 68, 43, 13,199,167,163,190,207,254, 30,183,
+149,179,203, 69,150,174, 75,240,113,188,137, 52, 23, 82,159, 57, 6,130,190,123, 41, 13,234,185,151,130,139,195, 14,155,205, 8,
+ 75, 33, 54,167,150, 66,100, 40, 41, 89,115, 24,119,184,184,190, 65,205, 5,243,108, 26,180,160,211, 32,128, 49,151,242, 12,209,
+158, 82,194,208,161, 93, 58,197,154,115,198, 92, 50, 40, 69, 8, 83,207, 96,112,145,113, 19, 65, 36, 86,225,138,143, 91,201,118,
+ 64,193, 30,182, 92,139, 74,238, 45,254, 50, 24, 78,213,129, 8,173, 20,148,172,194,155,216, 61,185, 75,167, 16,201,196, 6,129,
+ 49,140, 1, 31, 62,125,194,211,233,136,235,235, 43, 92, 92, 93,224,135,239,222,224,197,203,151, 56, 31, 79,216,237,182, 72, 33,
+224,241,233,136,253,197, 14,219,180, 81, 17,207,121, 66,184, 14, 24, 54, 35,166, 73,115,212,143,143,103, 23,112, 46,220,122, 52,
+ 60, 62, 30,193, 4,196, 0, 72, 84,145,202,102,187,197, 48,110, 80,234,140, 84,245,165,158,230, 9,231,227, 17,243, 84, 81,166,
+ 9,119, 15,103, 12, 41,224,229,229,128, 20,212, 51, 95, 74,198, 76, 51, 82,216,226,215,191,254, 37,126,241,171, 47,123, 64,197,
+184,209, 29,255,251,119,239,241,238,167,143,120,255,225,103,252,226,235,175,113,243,242, 5,254,227, 79,127,194,255,252,227,127,
+224,215,127,243,215,248,236,139,207,240,225,221,123,252,252,211, 59,108,182, 91, 92, 95, 41, 12,225,187, 31,222,225,205,247, 63,
+163,230, 51,114,157, 33,181, 34,197,136, 20,122,191,131,205,144,112,125, 57, 32, 14,234, 44,104, 8, 72, 99, 64, 76,208,248,212,
+202, 8,227,138, 20,213, 42, 90, 70,247,205,234, 75, 95,145,231,140,221,126,131,113, 76, 75, 56, 72,179, 21,137,120,231,217,122,
+158,117,183,115, 48, 47,182, 25,207,201,118,110,121,173,118, 24, 91, 16,136,191, 48,108, 7,121,201,154, 59,111, 59,109, 30,130,
+ 41,164, 21,244, 83,114,177,164, 51,243, 91,114, 68,215,156, 64, 71,139, 94, 48,120,247,227,170, 97, 2, 27,168,163,154, 61,145,
+108,199,191, 88,226,152, 25, 45, 24,154,178,138,141,110,205, 74,211,225, 17,170,166, 86,144,137, 93,244, 49,169, 0,198, 58, 16,
+194,130,242, 92,198,166,139, 21, 46,152,167,125,157, 76,184,144, 25,171, 98,121,109,212,238, 66, 63,178, 29,170,194,244,108, 31,
+106, 1, 40, 85, 76, 28, 21, 96,222,119,152,135,213, 47,236,218, 73,119,220,150,160, 25, 47, 10,180,160, 48,246,169,113,207,217,
+ 99,148,125,206,210,184,143,140,129,245,168,152, 58, 34,214,215, 49,202,115,231, 30, 59,219, 76,213,222,150,132,120, 19,157,249,
+174,210, 47,245,197,155,223, 44, 72,166,153, 56,206,247,152, 36, 98, 83,166, 5,244, 65,190,139,247, 12,115,239,210,125, 39,207,
+254,204, 88,134,128,225,107,201,127, 46,169,182,133, 88, 46, 27, 70,176,207, 73,201,125,205,247,145,102,167, 84,226, 93,232, 59,
+ 73,159,112,244,117,135, 5,112,244, 2, 96,197,203, 95,252,234,203,231,239, 42,108, 37,228,121, 80, 77,235,190,246, 42,106,201,
+ 76,131,254, 92, 93,211, 96,154, 38,130, 32,196, 4,145,134,105,242,132, 56,234, 69,138,171,176,253,207, 98, 7,251,180,149,218,
+127,165,224,246,120,233, 78,222, 91,113,231,125,173,225,249,244,158, 59,224,226, 89,112, 48,228,239,226,167,127,238,119, 95, 10,
+ 92,113,154,103, 91, 68,111,205, 87, 63,102,177, 45,173,161,106, 22,145,242, 26, 98,131,136,185, 88, 58,241,208, 49,185,140, 97,
+ 72,134,165,214,234, 54, 48, 43,244,201,178,210, 75,209, 75,157,154, 96,179, 25, 49,164,132,205,102,131,105,154, 49,207, 51,118,
+187, 45, 30,158,142, 56,157,166,133,243, 0,111,100, 44,210,185,162, 19, 55,217,133,180,238,224,233,185, 11,173,127, 46,222,229,
+115,136, 54, 69,201,184,188, 86,215, 84,105, 98,177,205,182, 62,168, 5, 12, 65, 45,192,213,171, 91, 37,150, 86,189, 91,106, 46,
+ 86,108,234, 51,126, 62,159, 53,182,155,213, 33,228,140, 8, 13,119,209,231,113,206, 30,139, 78,189, 64,238,161, 85,166,142,143,
+190,219,241,128, 3, 2, 20,242, 96, 68,167, 82,181, 26, 8, 65, 21,168, 9,140, 33,170,168, 77, 15,161,106, 80,142, 5,212,160,
+140,111, 11, 60,176, 64, 12, 61, 68, 2, 30,166,130,143,143,119,120,113,251, 66,185,227,172,251, 81, 21,166, 48,246, 87, 23,120,
+ 58, 62,225,213,103, 47,177, 25, 20, 53, 59, 63, 60, 1,159, 85,140,219, 13, 30, 30, 30,113,158, 38,176,112,231, 63,187, 18,166,
+150,138,199,187, 71,112, 8,184,188,220, 98,106,140, 22, 3,182,219, 45,234,192,168, 71,221, 41,230, 60,227,241,254,147,229,246,
+ 50,114, 41, 96, 38,108, 66,192,134,163,198, 14,182,134,105,154, 16, 66,196,111,127,247, 27,252,242,215,191, 0, 71,173, 86, 67,
+140,104,212,240,227,119, 63,226,254,195, 29,106, 5,126,243, 55,191, 65,220,238,240,111,255,227,223,241,205, 55,127,198,223,254,
+254,247,120,253,249, 75,124,247,237,247,248,240,254, 61, 46, 14, 23,184,188,220, 35,112,192,219,183,239,240,230,205,123,204,249,
+132,106,193, 7, 49, 70,196,160, 68, 50,226,128, 97, 76, 56, 92, 36, 12,227,114, 40, 18, 11,134,164,136,222,146, 51,152, 71, 12,
+ 49, 46, 25,205,246,223,135,160,249,215, 28,128,124,206,104, 85, 83,231,124, 87, 36,165,168, 45,141, 93, 49,171,120,198,110,127,
+178, 78,211, 45, 25, 30, 58, 33,198,113,151, 38,221,171,217, 71,130,173,244,113,144,139,165,216, 8,114,232,195,159, 6,105, 12,
+ 10, 17,145, 24, 82, 22,228,172,192,195, 72,150, 49,152, 72, 67,206,179,174, 89,204, 6,199,150,118,165,194,161,185, 7,206,232,
+190,190,245, 20,174, 70, 13,115,205,234, 96, 48,127,188,179,205,251, 65, 12,141,241,108,181,117,218, 30,140, 57, 46,118, 40,123,
+234, 20,173, 4, 76, 14, 41,105,107,112,147, 11, 73,215, 9, 92,150, 74,213, 89,217, 49, 44, 36, 48,251,191, 85,150,125,244, 34,
+ 86,109, 11, 89,206, 86, 90, 42, 36,204,102, 31, 12,230,248,104,203,229,215, 76,136,179, 66,248,250,239,228, 5,185, 43,238,189,
+ 32,161,238, 61, 90,208,112,220, 24,226, 86, 31, 87,251,175, 46,113,169,102,115, 52, 52, 40, 86,162, 62, 45, 98,176,136,233, 60,
+167,220,139,178,142,161, 21,164, 72, 38,160,170, 8, 1,160, 24,187, 45,136, 77,100,232,107,138,208, 86,228, 56,178, 16, 25,167,
+207,225,121,225,231,142, 3,240, 10, 23,107,133, 5,155, 19, 3, 34,157,199,173, 19,158, 37,105,172, 81, 89, 68,179,109, 9, 82,
+113, 46,133, 67,116, 28, 10, 67,171, 48, 44,230, 53,239,159, 87,218,127, 39, 37,218, 86,131,170,101,161,154,207,190, 40, 24, 42,
+197,212,247,255,204,206,202,119,157,133, 62,151, 20, 8,145,147,166,114,173, 87, 1,100, 59,115,159,246,212,176,128, 73, 68, 32,
+ 40, 54,194,111,102,191,139, 70,100,244, 66,188, 90, 52, 44,247,239,218, 3,119,200, 18, 49, 57, 44,231,131, 22, 19,188,224,155,
+155,116, 27, 99,183, 2, 58,103,160,138,174, 31,204,194,150,179,141,221,237,203,100,183, 83,194,115, 23,244,239,139,204, 24, 98,
+210,159, 47,183, 30,160, 3,131, 13,105,176, 73,209, 46,120,191, 69, 26, 19,134, 33, 97,140, 17,167, 73,249, 38, 49, 6, 60, 61,
+ 61,233,180,181, 65,201,149,212,116,250,128,214,125,242, 74,106,179, 41, 69, 87,175,219,239,215, 90, 15,166,129, 43,251,109,125,
+ 38, 82, 48, 14, 9, 23,251,173, 29, 3,173,199,208, 54,136, 82, 49,195,136, 92, 4,135,171, 27, 3,210,100,189,192,169, 89, 76,
+ 51, 44,182, 59, 91, 51,161,107,143,142,108,166,128, 0, 77, 99,203,211,140,196,154,197,209, 22,241,134, 90,144, 45, 23, 37,114,
+199, 27,186,245, 69,255, 93,153,221, 38,236,108, 64,178, 74, 48,245,113,231,243,253, 92,239, 98,154, 30,162,226,177, 54, 30,219,
+202,202, 42,130, 0,247,247, 71, 16, 11,174,247, 23, 24, 56, 32,180,134, 77, 76, 56,149, 25, 23,251, 3, 62,124,248, 8,196,136,
+205, 56, 98,154, 79,168, 25,152,243,140,180, 29, 64,196, 56,231, 35,130,169,243,245, 2, 81,152, 70, 17,224,156, 43,120,127,192,
+ 54,204,224, 34, 56,151,170,121,221, 28,112,154, 51, 78,247, 15,152,230, 9,159, 62,190, 71,138,123, 12,155, 17, 41, 69, 92, 93,
+238, 64,185, 32,215,108,230, 33, 96,179,137,248,199,127,250, 3,254,234,183,127,133,113,147,192,182,131,191,187,191,195,183,127,
+254, 22, 79, 79, 79, 56, 12, 59,188,254,226, 11,112, 26,241,223,254,191,255,134, 31,223,190,197, 63,253,159,255,132,195,229, 30,
+223,253,233, 27, 60, 30,143,120,249,226, 37,246,135, 61,230,154,241,195,119, 63,224,219, 55, 31, 81,235, 17,165,232,142, 40,133,
+132,200,203,225, 62,164,136,195, 62, 34,140,128, 52, 45, 94, 74, 19,164, 16,117, 92, 84, 4,181, 50, 66, 92,198,148,210,148,194,
+214, 68, 15,112,134,142,173,171, 20,164,113, 64, 76,193,206,103,187,200,130,138,162,214,213,189,250, 97,217,178,127,249,153, 45,
+137,123,178,149,177,194,221,123, 77,128,216,248, 12,190, 91,135, 66, 98, 2, 67,211,214,138, 10,241,244,141,172, 40,197,198,245,
+182, 87,132, 89,104,186,122,223,186,191,102,163,127,230,160,162, 72, 86, 33, 12, 92,188,102,137, 84, 26,184, 99,174,171, 44,125,
+252, 87, 75,209,228,178,166, 99,108, 90,173,132,196,217,225, 70,192,114, 2,155, 43, 73,121,133,212, 68, 87,150, 90,156,137,180,
+101, 85,229, 73,105, 70,209,210,231,158, 23, 40,133,219,210,154,174,177,154,169,228,253, 66,142, 41, 46, 35,112, 83,184,195,168,
+111, 32,245,197,235,234,162,244, 14,200,242,208,144,115, 70,180, 66, 4,171, 43,160,181,134, 4,244,232, 93,189,231,170,137, 32,
+107, 47, 78,168, 45, 23,149,216,122, 66, 12, 5,236,108,120,231, 99,123, 50, 89, 51, 12,108, 15, 2,177, 17,160, 59, 3,106,191,
+224,165, 3,140,250, 88,179,135,159, 16, 74,109,198, 10,215, 61,108, 99,251,107, 25, 43, 95, 56,245, 85, 81, 8,106,233,233, 26,
+157,200,171,180, 63,111, 74,184, 11, 36,105, 21, 52,226, 34,172, 30, 82, 2, 15, 31,209,103,181, 79,182,160, 7,104,235,206,130,
+106,216, 83, 99,202,219,106, 17,127,225,131,119,208, 12,173,254, 92,101,100,149,110,255, 83, 24,142,142,196, 83, 12, 16, 49, 81,
+226,124,238,164,178, 92,178,229, 39,104,204,112,206,217, 68,118,110,159,163,206,159, 95, 43,198,151,139,188, 46,207,145,173, 36,
+ 37,232, 72, 27,118,153, 3, 64,168,193, 40,108,158, 44,103,115, 22,115,182,132, 96, 68, 70,147,141, 70,103,204,219,133,191,214,
+149,212,213, 78, 94,159,109, 35, 79,186, 91,132, 85,112, 93,138,210,248, 28, 80,134, 70,171, 8, 93, 89,212,133,254,252, 70, 70,
+ 26, 34,134,209,119,231,246, 93, 68,157, 42,250,116, 42,215,140, 22, 26,118,187,157,133,110,141, 90, 6,157, 39,108, 46, 47, 48,
+231,134,227,241,132, 42, 25,209,102,160,106, 99,229,149, 70, 67,150, 72, 94,183,250,249,212,203, 27, 94, 47,236,204, 62, 26, 98,
+128, 88, 4,234,237,229, 30,251,221, 70,175,240,214,148, 38,199,202,153,231,192, 72,148, 16,199, 3,118,151, 55, 16, 91, 87,151,
+ 50,235,247,100, 22, 63,133,241,216,249,138,166,133, 68, 85, 65, 42,135,132, 22, 52, 35, 37,159,158,148,110,167,143,187, 54, 44,
+ 34,168,204, 8,134,174,142, 13,188,202,121,213, 81,188,170,127,217,108, 14,158, 94,165, 74,216, 20,130,217, 53,124,148,217,172,
+ 58,182,142,223,114, 21, 21,117, 89,125, 78,229, 91,125, 16, 70,188,255,244, 17,196, 13,195, 97,135,221,245, 21,206, 85,253,216,
+ 81, 10,246, 23, 7,252,244,254, 29,202, 52, 97, 59, 38,204,159, 78,104,161, 97,154,102,108,247, 59, 20,139,134,205,168, 40, 77,
+ 76, 41,219,192,219, 8, 26, 85, 49, 63, 12,163, 70,103,206,130,153, 11, 34, 7,228,227,132,167,143, 15, 56, 61, 61, 98,154, 39,
+204,167,130,225,146, 48, 14, 91,197,211,134,136,105,154, 48,231,140,141, 0,195,230, 10,255,248, 47,255,130, 47,190,126,133, 49,
+ 37,140,135, 3, 8,192,207,239,126,194,191,255,247,255,129,243, 57,227,139,175,190,194,245,139, 43,220, 63, 62,225,223,254,223,
+127,197,195,116,135,255,250,127,255, 95, 72,156,240,237, 55,223, 2, 32, 92, 95,223, 96,140, 1,243,121,198,159,191,251, 17,111,
+223,190,211, 80, 24,139,107,221,132,128,192, 62, 80,100,140, 67,192,238,192, 74,229, 3,129, 18,161,216, 33,226, 93,111, 46, 58,
+218,217, 70, 85, 23,251,161, 82,109,148,222,164,161,133,170, 66,199,214,112,177, 25, 84, 76,200, 75, 21,222,114, 69, 13,154,237,
+189,222,139,245,212, 43,170,125, 79, 19, 8, 22, 88,178,116,117,212,189,237,234,249,110,165, 32,166,100,129, 20,234,251, 37, 17,
+ 96, 86, 58, 28,113, 0,183,212,189,191,205, 67, 38,152, 65, 49,129, 97, 94,218, 20, 16,237,153,203,173, 34,196, 96, 93,167,128,
+161, 98,145, 34,234,215,101, 39, 57, 53,152,247, 86, 15,209, 16, 7, 43, 46, 8,146,103,163,189,169, 94, 32, 82, 68,131,160,150,
+220, 63, 15,173, 67,184,163, 97, 65, 14,210, 89,196, 65,125,131, 46,210,173,111, 48,194,161, 64, 21,247, 54, 63,126,150,220, 21,
+ 67, 80,133,187,237,213, 27,105,134,187,219,197, 52, 68,196, 26,102, 59, 84,249, 47, 46, 43, 50,122, 95, 91,237,110,117, 92,233,
+161, 45, 38, 70,196,176, 26, 93,187, 62, 97, 65,140, 74, 83, 98, 28,181, 53,219,220,117, 1,139,122,189, 17, 67,124,231,109,184,
+ 75,177,110,208, 39, 3,108,211, 12, 72,235,104,224,190,155, 53, 10, 25,236, 80,119,202, 25,236, 2,232,151,187,193,143,148,162,
+150,129, 20, 84,139, 81, 13, 70, 99, 19,159, 46,122,181, 46,134,140,167,207,171,113,240, 50,109,166,103,208,153,165,227,108, 43,
+236,177,211,224, 74,247,184, 73,243,194,236, 47, 68,132,139,143,201,245,134,157, 38,183, 52, 53,173, 91, 68,219, 95,228,177,147,
+ 77, 79,132,150,166, 71,127, 54,115, 12,181,102, 88,222, 69, 81, 30, 12,170,228, 86, 51,226, 0,177,221, 84,240,206, 91,164,139,
+ 58, 67, 72,102, 21, 43,150,107, 30, 81,237, 29,105,133,150,117,154,141,105, 75,171, 8, 89,145,218,213, 87, 83,174,172, 39,179,
+132, 90,215, 78, 38,134, 14,246, 76,186, 0,176,139, 69,187, 32, 89, 59,216,106, 35,110,106, 90, 76, 40,149, 81,215, 80,218,140,
+ 20, 93, 19,146,125,102,144,191, 8, 58, 53, 36,112,208,169, 92,140, 58,129, 43, 89, 58,176, 42, 70,133,208,148, 90, 81, 91,195,
+126,191, 71, 72, 1, 28, 52,247, 33,231, 2, 64,149,227,247,247,247, 56,159,231,190, 67,119, 13, 7,155,242,221, 94,100,139, 79,
+174,157, 27,175,117, 94,131,106, 47,185, 63,135,254, 78,166, 16, 64,173, 64, 80,112,121,245, 66,113,181,181,129,147,139,197,105,
+113,165,196,128,139,155, 23,216,111, 47,208, 80, 32,181,160,230, 98,250,167,217,178, 32, 24,211,116, 66, 41,130,221, 86,159,125,
+161,140, 97, 28, 13,140, 36,152,231, 25,243,164,120,108, 48,131, 90, 64, 2, 67,162,125, 78, 14,233, 81,228, 28,150, 4, 33,167,
+ 83, 17,235, 11,102, 53,138,194,230,109,247, 9,182,177, 1,117, 21, 42,217,178,213, 71,188, 17,170, 64,246,153,191, 10, 12,128,
+ 24, 26, 78, 57, 99, 58, 11,198, 49,225,242,234, 18, 15, 31, 62,153,103,156,113,216,239, 49,139,224,233,116,198,205, 56,224, 33,
+106,133, 47,165, 96,140, 1, 3, 1, 79, 82,144,115,197,241,116, 2, 71, 85,226,115,220,128, 57, 32,143, 13, 97, 24, 48,132,128,
+ 22,128,199,243, 7,204,121,194,252,105,194,241,238, 3,178,104, 38,111,218,232,200, 54,134,132,218, 38,176, 20,200, 84,240,148,
+ 5,175,191,254, 26,255,242,255,252, 87,236,118, 35, 54,187, 13, 46,111,175, 49,213,140,239,223,252,136,127,255,215,127, 69,158,
+102,252,205,239,126,139,195,213, 45,254,252,230, 71,252,143,127,251,239,184,184,186,193,127,249,199,255,130,121, 62,227,199,183,
+ 63, 32, 16, 99,216, 38, 4, 0,143,199, 19,190,125,251, 51,126,122,247,222,198,255,202, 30, 30, 82,180, 23, 74,125,213, 67, 10,
+ 24, 55, 1, 49, 89,204,125,208,233, 70, 17,193, 72,172,159,105, 46,200,133, 17, 6,117, 31,148, 82, 0,102,181,220,216, 75, 66,
+ 38, 34, 42, 69,176, 29, 6,108,118, 35, 34, 47,187,209, 78,112, 19,194,255, 79,215,155, 62, 75,118, 28, 87,158,199, 35,226,222,
+204,124, 75,237, 85,168,194, 66, 16, 34,137, 2, 9, 2, 92,164,166,212,173,150,205,223, 59, 54, 54, 95,100, 54,102,211,221,195,
+ 97,183, 90, 77, 35,197, 85, 36, 69,144, 4,137,133, 4, 10, 64, 1,133,170,122, 75,102,222, 27, 17,238,243,193,221, 35,110, 22,
+ 52, 50,147,145, 0, 11, 15, 47, 51,111, 70,248,114,206,239,196, 88, 0, 26, 76,137,109, 9, 98,164, 7,177,212,170,150,161, 16,
+204,251,108,209,162,182, 47,139, 22, 77, 75, 54,162,247, 47,142, 82,170,130,249,194,181,235,209, 61,147,104, 44,151,152, 21, 72,
+130,237,238,205, 58, 85, 4,129,169,209,180, 6, 35,159,113,213, 67,197,199,116,206,160, 23,155,199, 21, 46,134, 73,141,205,163,
+205, 92, 27,241, 76,199,229,122, 48,199, 24,144,179, 19,179, 82,179,236, 33, 18,132, 6, 19,225,117,209,152, 83,217,196, 0,231,
+ 33, 82, 19, 31, 81, 53, 0, 59,245, 61,176, 88,250,159,219,113,170,139,136, 22,234,226,254,133, 95,162, 60, 23, 29, 97,211,138,
+ 24, 88, 69,218,160,205, 68, 82,154,167,221, 8,105,128,186, 57,156, 15,109, 73, 95, 98, 99,123, 52,210, 91,191,196, 93, 4,233,
+251, 99,226, 0,144,249,193,219, 53,165,152, 74,150, 2,202, 45, 26,188, 89,159,122, 90,179,151,164,250,231, 43,101,227,224,227,
+ 64, 49, 46, 14, 53, 50,181, 49,193, 48,181,165,232,212,166, 70, 4,182, 29, 52, 51, 88, 2, 16, 59,130,115,217,129, 55,246,121,
+ 88,200,191, 22,246, 91,113, 21, 31,235, 20, 15,109,207,236, 31,108,109, 17,154,228, 65, 57,246,221,105,219,230, 24,108, 50,160,
+ 19,128, 22, 84,211, 58,100,203,233, 50,194, 98,205,165,229,165, 87,214, 81,183,254, 12,133,211,136, 88,196,176,193,122, 92, 75,
+224,124,144,234, 41,147, 45, 63, 68, 52,140,196, 87, 94, 66, 22, 17, 91,155, 77, 78,147, 2,185,105, 52,128, 62, 49,171,181, 64,
+ 92,216,230, 19, 54,139,198,205,108,118, 56,113, 11,159,192,201,239, 62,157,104,227,253, 5, 11, 29, 22,211,236,186, 1, 7, 21,
+ 41,252,200,114, 1,108,202,163,186,143,128,156, 5,185,104, 81,202,213,104,137, 22,134,163, 73,104, 61,204, 5, 13,152, 24, 48,
+ 12, 9, 41, 16,166,146, 81,185, 88,234,162, 77,108,132,181, 56, 73, 9,235,245, 26, 36, 58,225, 12, 1,152,230,140,184, 73,224,
+ 40,120,122,113,129,186, 47,182, 50,165,150, 43,160, 5,139,103, 28, 48, 36, 2,168,177,217, 30, 73,196, 50, 32,216, 72,131,108,
+ 32, 26, 96, 8,150, 81, 17, 18, 18, 8,199, 39, 27,164, 33, 45,210, 76, 67,211,135,104, 80,207,128,227,211,107,246,122,147,226,
+187, 75, 54, 97,167, 21,210,194,200,211,132,200,190,138,141, 72, 65, 51, 79,198, 20, 49, 23,198,110,191,213,247,181,154,134,198,
+ 86,160, 3,169, 91,104,178,226, 58,233,152, 70, 85,208,186,175,116, 79,173, 81,133,173,155, 82,206,108,104, 99,201,106, 97,245,
+ 68,182, 39,100, 86, 72,101,240,110,197,108, 19,228,193,240,182,119, 90, 43, 62,113,151, 39,172,211,128,171, 87,174,226,236,179,
+199, 24, 78,142, 16,230, 25, 49, 17,198,148, 80,166,130,116,237, 68, 31,234, 16, 81,166, 2,204, 5,171, 33, 90, 36,161, 86,146,
+105, 92, 35,165,136, 52,174, 52,197,198,216,227,196,140, 60, 93,162, 78, 51,166,105,111,163,216,130, 16, 6, 68,138, 24, 19, 16,
+136, 33, 60,131,114, 69,148,128,167,231,192,215, 94,187,133,255,252,191,253, 3,226, 42, 96,125,188,193,173,231,110, 99,218,205,
+248,243,123, 31,224,237,183,254,136,205,152,240,218, 95,191,142,163,163, 35,252,246,247,111,227, 55,191,121, 11, 95,126,229,101,
+188,252,202, 43,184, 56, 63,195,118,123,137,148, 18, 74,209, 29,210, 84, 5,239,127,252, 16,159, 63, 58, 3,184, 98, 46,234,227,
+ 28, 82, 68,244,179, 61, 0,113, 80,110, 48,155,224, 36, 69,103, 26,107,114, 15, 37, 83,247, 87,221, 45, 13, 11,255, 45, 87,237,
+244,245, 99,208, 67, 81,147,141, 24,235, 43,167,230, 81, 53,123, 89,101,179, 64,104,231,171,221,132,137, 68,162, 94, 8, 94,212,
+153,199,177,241,157,171,165, 83, 49, 23, 35, 9,162,229, 96, 7, 68,235,184, 84,213, 74,209,186,255, 64, 72,145, 12, 18, 86, 65,
+208, 36,183,234, 65, 18, 86, 25,179, 37,151, 84,210,203, 32, 44,148,197, 77, 85, 13, 35, 1,138,134,201, 52,112,150,219, 41,163,
+142,162,217,208,140, 61, 58, 51,244, 44,114, 34,196, 32,160,100,208, 6,163, 52, 85, 19, 35,105, 87, 71,186, 50,128, 40, 68,205,
+198, 90,132, 62,154,131,189,247, 20,160,209,171,182,255, 38,179,246, 5,161, 86,241,195,120,250, 36, 93, 84, 69,141,137,170,135,
+155, 78, 68, 66,251,185, 22, 8,170,244, 43,244, 49,184, 78,127,237, 34,182, 98, 35,164,100,107,137, 30, 84, 18, 2,117, 8, 73,
+ 8,234,169,247,113,182, 65,114, 98, 26, 44, 34,118, 65, 31,107,216, 76,123,239,130, 42,214,225,214, 25,137, 45,151,156,200,186,
+ 60,235,222,196, 70,250,174,125, 16, 99,160, 47,247,175, 45,194,210, 44,131,176,179, 37, 88, 96,134, 91, 23,169,169,202, 23, 8,
+227, 3,152,140, 62,127, 41, 46, 60,239, 1, 7,118, 62,109,194,251,200, 88,220,182,193, 93, 22,236,169,142, 42, 18, 43, 45, 14,
+212,199,233,136, 29, 3,219,214, 1,134, 38,118,159,126,180,179, 78, 67,124,168,217,223,220,209, 17,205,163, 92,133,148,204,102,
+ 7, 55,129, 80,165,168, 94,194,236,195, 58, 55,135,125, 38,106,135, 42,238,248, 16,106,127,174,229, 29, 56, 27,126, 17, 29, 27,
+ 66, 23,120, 22,174, 45, 46,217,129, 50,210, 52, 34, 70, 85, 19,183,183,234,141,170, 5,145,178,197, 53, 99, 94,249, 30,226, 8,
+ 86, 39,222,177,114, 17, 90,209,106,196, 68,253,172,169,141,200,231, 92,148, 32,200, 58, 78,214,193,153,173,178,204,142,231,163,
+237, 94,147,144,217,111,201,114, 28,148, 73,162,232,102,106,137,125,171,205,216, 38, 6,142,182,230,170, 46,167, 50, 21, 92, 92,
+238,155,139,166, 41,244,161, 36,204,182,190,177,166,181,138,163,210, 23,140,137,224, 13,130,126,230, 94,188,199,213,136, 92,129,
+205,209,145, 98, 92, 99, 68, 24, 8,168,228,150, 16,212, 50,155,150, 99,192,213,171, 55, 26,192,169, 84, 70,206,147, 69, 94, 57,
+242, 57,163, 74, 69, 92, 13, 88,173, 87,160,168, 88,243, 20,245,130,223,207, 10, 69, 43,149,205, 81,162,223,228,144, 92, 51, 19,
+ 44,123,130,145, 20,170, 82, 23,177, 69,253, 63,165,169,145, 85, 65,170,209,171,118,216,216, 67,230, 60,120, 33,105,164, 38,155,
+ 42,218,101, 66,182, 91, 81, 74,204, 24,181,130,156,230,140, 49, 38,156, 30,159,180,189, 83, 76, 9, 41, 68, 4, 36,112,169, 24,
+ 87, 27, 12,195, 10, 85, 8,243,126,194, 60,103,140,171, 17,235, 20, 81, 66, 66,145,162, 12,246, 33, 33,141, 43,189, 56,246, 5,
+121,206,184,188,184,192,197,249, 25,202, 60,163, 72, 69, 45, 21, 20, 71,140,227, 26,177, 86,228, 42,144, 58, 67,242, 12,201, 26,
+244,242,173,239,188,130,255,248,159,254, 3,194,138,112,122,245, 20,119, 94,184,139, 39,143,206,240,187,127,251, 61,222,126,231,
+ 93, 60,119,243, 54,238,127,227,107,160, 49,225,173,127,123, 11,127,122,251, 93,124,253, 27,223,192,205, 59, 55,112,241,244, 12,
+219,221, 22, 57, 23, 8,107,162,218,246,178,224,143, 31,124,136,179,179,115,128,171, 90, 24, 68, 89,228, 1,162,168,200, 24, 17,
+ 7,141, 74, 12, 65, 48, 87,193,224, 97, 54, 76,150,136,109, 73,154,204,224, 26, 16, 19,108, 63,215, 57,253, 61, 25, 90, 16, 69,
+ 65, 52, 33, 18,198, 77, 50,245,246, 98,172, 44,189,250,174, 76,198,109,167, 22,239,217,178,164,101, 17,102,197,104,150, 32,216,
+184,191,165, 80,153,121, 51,134,104,108, 2, 52,241,101, 23, 48,233,232, 13,194, 11,101, 50,244,242, 51, 11, 23,200,184,209,190,
+ 83,165, 67,239,238,179, 9, 87, 46, 96, 67,140, 45, 47,125, 97,216,106, 9, 85,205, 75,235,120,146, 5,117,139,165, 46, 14, 62,
+135,229,216,185,204, 2, 34,141,104,196, 34,192,132, 93,161,141, 96,171,166,216,130, 60,228, 32,226,211,196,135,182, 51, 12, 54,
+106,182,255,197,118,209, 21, 98, 80,152, 64, 29,250, 2, 83, 17,107, 26, 91, 56, 80,220, 67, 20, 72,212,255,156, 49, 9, 66,104,
+ 34,190,208,116, 1,104,204,111, 46, 11,129, 82,211, 12, 68,123,141,193, 70,225,181,199,115,134,106, 73,109, 81,223, 23, 81,120,
+ 10,217,197,165,214, 55, 37,157, 57,220,165,112,110,239, 51,215,250, 5, 79,119, 88, 20, 53,209, 38,126,123, 91,143, 16, 23, 68,
+ 36, 8, 23, 48,169,109, 41, 24,171,161,209,242, 14,236,135,221,134, 20,140, 5, 47, 45,205,204, 24,246, 68, 7,251,239, 46,128,
+146,198,176, 23, 40,160,197, 30, 72, 21, 41, 73, 51, 48,153,151,218, 38, 61, 68, 16,163,103,122,185, 85,109, 53,226,190,111, 90,
+140,255,185, 86,203, 40, 0,184,216,243, 99,242,146, 24, 2, 34, 6,101,125,248, 39,111,251, 85,174,140,100, 54, 51,242,120,105,
+ 43, 44, 26,189, 16, 93,165,174,224,148,174,162, 79, 33,160,136,189, 46,235, 58,217,153,240,254,121,216, 69,236,252, 5,134, 78,
+223,220,151,190, 12, 51, 97,247, 85,114,251,226,245, 96, 79,199, 12,144,230,108,184, 3, 65,229, 50,172,238,168, 42, 10,158,241,
+239,232,130, 9, 79,141, 60,199, 77,176,157, 6,245,104,231, 82, 80,102, 85,137, 47,145,211, 44,130,113, 53, 42,121,176,126,209,
+ 74,184, 94,173,241,228,243, 39,152, 47,102,196,193,166,127, 30,121, 27,151,192, 31,179,183, 9, 25,235, 67, 14,210,229, 26, 75,
+136,186, 27,128, 98, 64, 28, 6,204,115,198,201,201, 6,171,213, 74,159, 63, 46,141, 93,223,136,126, 53,227,228,244, 30,142, 55,
+167,200,134,154, 46,121,182,231, 71,140,167,175,231,181,178, 80, 20,188, 37, 8,216,108, 54, 88,175, 55, 32, 82,101,252,110,183,
+213,233,164, 9, 38, 17,201, 24, 22,186,102, 21, 17,148, 82,244, 82, 87, 36, 44,233, 47,108, 15,190, 82,109, 67,251,130, 16, 69,
+164,164, 21,152, 86,216,158,238,160,153,185, 66,202, 49,134,197,235,197,164,111, 36,172,139,130, 5,107, 8, 39,108,119, 23,216,
+ 93,158,225,234,241, 17,214,167, 71, 45, 93, 39,132,128, 20, 35,174, 28,173,177,207, 25, 97, 28, 48, 30,173,176,223,238, 81,230,
+130,203,139, 11, 28, 29, 29, 41, 29, 46, 87,172,198, 21, 66, 84,177, 17, 69,165,166,213,221, 37, 46,167, 29, 46,119,151,152,231,
+ 61,198,213,136, 50,101, 72, 97,196,144,176, 30, 6,204, 16,228,108,214,146,185,160,112,193, 27,223,126, 3,247,191,254, 42, 32,
+ 5, 87,110, 92,195,189,123,119,240,241,195,199,248,245,143,126,142,247,223,127, 31, 95,122,237, 53,124,253,254,125, 84, 76,248,
+245, 47,127,131, 7, 15, 62,193, 55,222,248, 6, 54, 87, 78,177, 61,187, 64,222, 77,152,182,123,221,117, 31, 31,225,236,209,231,
+248,211, 95, 62,194,110,159, 33,149, 13, 79, 24,116,116, 99,230, 26, 10, 1, 33, 69, 12, 67, 68, 10, 64, 37, 29, 67,207,181, 98,
+101,116,129,102,187, 18, 49, 52,160,190, 14, 49, 97, 29,132, 13, 66, 19,155,183,188, 84,229,154, 31,175, 55,122, 25, 5,235,202,
+ 89, 15,180, 16, 18,188,133, 20, 81, 95,123, 34,160,230,106,136,203,254,133,246, 17,143,198,251, 77,198, 37, 71,171,100,245,243,
+ 54,226, 90,240,221, 35, 45, 98, 37, 15, 47,119,129,237,149, 27,213, 78, 43,245, 16,196,226, 82, 77,192,213,192, 36,190,191,235,
+ 64, 20,177, 17,224,179,255,231,194, 73,191,196, 99,164,174, 26, 14, 74,115,227, 69, 78,182,119,101,114,224,110,238, 95,230,106,
+217,237,234, 43,235, 23, 71,127,253, 58,193,112,141, 64,179,150, 64, 26,101,107,105,119,242, 92,105,223, 71,114,209,196, 55,103,
+119,179, 88,236,232, 82, 54,100,157, 19, 75, 23, 66,121, 39, 4,210,148,182, 56,168,134, 32, 46, 60,251, 8,142, 42, 21,179,206,
+ 85,117, 76,176, 78,190,170, 93,102, 61, 70, 52, 44,118,142,212, 44, 99, 4,122,230, 77,182,208, 15, 39,228, 25, 15, 93, 42,218,
+161, 90,204, 47, 27, 44,206, 20, 33, 52,191,117,138, 17,213,188,245,195,144, 48, 91,176, 71, 29,208, 92, 22, 65, 98,123, 31,225,
+201,107,194, 54, 13, 65,135,149, 64,218, 30,218, 22,194,109, 90, 34, 44, 7,147, 1, 17, 75, 32, 51, 28,176,152,114, 82, 68, 32,
+149,144,171, 24, 98,180,135, 12,249,115,228,225, 54,100,163,247,102, 61, 51, 95,185,126,198, 90, 84, 69, 77, 0, 82,253,132,139,
+208, 44,187, 91,160, 25, 14, 82,116,199, 28,137, 16,134, 4,120,151, 46,130,146, 53,227,156, 82, 68, 37,211, 82, 64, 67,145, 68,
+ 76,165,109,142, 21, 15, 20, 42,165,182, 98, 39, 25,249, 16,139, 12,118,239, 94,155,199,193,191, 91,166,123,240,252,244,106, 46,
+152, 24,226,194,202,133,182,206, 91,134,159,232,223,115, 43,149,180,189,125,191,170,180,128,201, 2,228,162, 54,182, 82,245,172,
+ 82,203,116,104,254,123, 90, 76,111,252,105, 27, 71,125,150,107, 41, 42, 32,164,168,254,116,155, 30, 12,227,168,133,138, 77,217,
+146,173,174, 74,209, 81,123,150,130,243,139, 45, 74, 53,173,143, 49, 14, 66,208, 66,167,185, 19, 92,252,200,114,248,189,243, 73,
+141,161,141,221,222,230,157,190, 14,230, 43,142,143, 55, 24,134,161, 89, 19,237,196,110,120,222, 90, 24, 71, 39,215,108, 90, 86,
+ 17,169, 98,222,239, 44,201,175, 96, 24, 87,136, 20, 48,205, 5,101,158,176, 30,244,175,171, 64,237,121,155, 35, 32, 16,246,251,
+ 75,181,229, 89, 88, 16, 69, 61, 15, 85,185,239, 34, 90,157,164, 36, 55,227,115, 59,144,244,232, 81, 69,173,126, 57,106, 97, 96,
+ 85,193,136, 54,214,244,180,158,170, 66, 12,210, 12,108, 50,146,151, 4,168, 2, 80,244,130, 18,219,213,184,157,178,102,198,229,
+110,210, 75, 60, 37,172, 78,213, 14, 16,135,132,121, 55,225,234,181,107, 56,187,184,208,157, 70,178,189, 7, 87,228, 60,227,100,
+115,138, 56,142, 8, 92,176,138,118,128,146,218,207,230,178,215, 12,109, 46, 22,185,169, 49, 24,181,152, 2, 54, 69, 67, 37, 22,
+ 68, 10,184,188,216, 34, 31, 39,252,195,127,250, 30,222,124,253,235,248,244,211,143,113,245,246,109, 60,127,239, 30,222,255,224,
+207,248,233, 63,255, 28, 31,127,244, 0,223,120,227, 27,248,234, 27,175, 98,222,237,241,167,223,189,135,203,203, 61,238,191,254,
+ 85, 12,227, 10,187,167,231,184, 60, 59,199,167,159,125,134,227,147, 19, 92,187,118, 21,159,125,250, 25,222,251,240, 99,236, 38,
+181, 91,228, 57,131, 65, 88,145, 42, 13, 42,122,182,113, 24,140,171, 30,180, 67,156,107, 5,101,224,104, 24,193, 4, 36, 27,147,
+ 87,219,117,105, 96,137,163,124, 21,226, 32, 54,242, 34,170, 0, 37,212,146,149, 7,239, 40, 95,239, 92,165,194, 49, 28, 28,244,
+ 48,142, 20,218, 23,131, 8,144, 74, 61,156, 66,200,198,233, 2,146,238,185,118,245,109, 74, 73, 41, 78, 20,109,109, 64,246,101,
+ 21, 48,172,235, 51,197,117,143,153,244,137,142, 10, 61,204,216,213,172,113,126,225,186, 61,134, 12,101,250,239,220, 45,166, 18,
+ 39,243, 26,199,118,121,122,196,235, 65,167,239, 24, 92,243,227,251, 88,184, 93,146, 62, 66,110,130,162,128,136,100, 73,104,110,
+125,169, 45, 29, 76, 19,195,130, 9, 74, 53,223,218, 59,192, 46, 14, 13, 61,111, 27,106,101,242,137, 85, 49,255,188,152, 85,208,
+215, 4, 62,186,243,105, 66,207,197,230, 5, 11, 58, 54,107, 31,217, 1,229,151, 50,130,219,194, 98,235,174, 74,158,144,231,217,
+ 18,180,164,141, 18, 29,141, 74, 22, 68, 66,210,150,230, 86,230,244, 78,155,164, 1,102, 53,140,199,118,246,193, 87, 37,164, 22,
+ 31, 4, 83,181, 27, 24, 6,207,164,165,177, 95,244, 76,160,152, 48,132, 81, 39,133,164, 35,197, 80, 11,162, 4,144,145,241,154,
+ 82,223, 8,135,190,127, 20, 19,221,181, 56, 74, 67,251, 54,192, 81,176,152, 18,135,205,184, 53,143,208,186,115,247, 72,249,165,
+ 37, 69, 87, 83, 75,167,159,142, 76, 67, 27,249,187,168, 48,196, 37, 31, 93, 87, 19,206, 88, 39, 16,138, 99,214,200,175, 0,168,
+ 77,141, 5, 37,207,218, 97,145, 0,177, 64,106, 86,181, 51,116,229,229,227,244, 20, 34, 42,233,133,174, 43,189,210, 84,211,174,
+ 64, 87,204,105,159, 90, 44, 53, 5, 68,164, 7,190, 21,202,250,123,198,131, 63,195,237,123, 66, 72,166, 89,233,252, 5, 28, 76,
+ 90,150,186,144, 46,178,164,133,166,202, 6,119, 66,112, 40, 69,206,140,108,184,219,154, 25, 37,203,129,175,221, 53, 55,254, 25,
+ 5, 67,214,166, 65, 27,143, 60, 23, 85,107,196,208,176,191, 14,164,201,181,152, 93, 46, 99,125,116,210,162,148, 55,195,128,186,
+221, 97,123,118,105, 43, 34,187,203, 96, 26,131, 24, 13, 94, 35, 7, 97,102,186,255,145,102,203,142,160,102,205,107,240, 69,187,
+ 39, 39, 48,130, 8,214, 43,205, 13, 73,209, 34,141, 73, 64,131, 61,135, 34, 72, 99,194,149,107,215, 80, 75,209, 59, 85,180,235,
+ 86, 10,107, 65, 28,162,225,247,148, 59,225,248,219,128,138,148, 70, 21,125, 11, 99,154,247,216,239,118, 96,115,148,196,168,130,
+ 86,177, 38,161,154,117, 86, 4, 72,226,220,119,203,139,149, 0,112,136, 72, 80,203,131,144, 10,150,216, 8,104, 89, 11, 74, 0,
+ 0, 32, 0, 73, 68, 65, 84,115, 83,169, 54,122,212, 61, 82,149, 10,162, 1,140,164,112, 50, 34, 68,203,157, 21, 10,230, 57,212,
+ 47, 38, 83,176,204,218,128,189,101,226,130, 8,183,111,220,196,147, 71,159, 35,164,128, 9,140,147,227, 99, 92, 94,110,245,194,
+ 24, 6,236,109,220, 95,107, 69, 74, 3,198,213, 10,179, 0, 50, 85,228,105,198, 84, 38,236,231, 89,199,160,145,154,231,121, 29,
+ 18,136,146,117, 37, 58,142, 46,172, 99,218,139, 41, 35,142, 9,255,241,239,190,131,111,190,241, 26, 42, 87,220,251,210, 75,184,
+121,247, 22,222,125,235, 93,252,175, 31,254, 24,243,126,198, 27,223,253, 54, 94,122,249, 37, 92,158,157,225,193, 7,159, 67, 6,
+194,151,238,127, 25, 17,132,179, 71, 79,240,248,209,103,248,244,209,103,184,113,243, 22,174, 94, 59,197, 7, 15, 62,194, 71, 31,
+127,134,125, 17, 72,206,168, 89,157, 4,131, 81,171,178, 70,110, 33,217, 23, 50, 82, 64,133, 17,196,172, 84, 44, 69,144,171, 32,
+ 66, 71, 49, 58,214,179, 29, 97, 20, 8, 21, 11, 99,233,120, 81,162, 2, 96, 4,177, 6, 95,172,215, 99,179, 75, 5, 97, 19, 41,
+185,197,200, 68, 66,214,197,195, 62,235, 64,130,212,146,183, 13,167, 29,213, 78, 82, 97, 52, 54,240, 2, 42, 38, 42,112,162,216,
+180, 22,206,222,246, 72,201, 34, 85,119, 84,246,250, 28, 47, 73, 77, 41,206,221, 82,133, 62, 94,103,143, 5, 53,140,163,238,114,
+ 23,170,109, 75,144, 99, 62,156, 6, 28,238,111,209, 44,127, 75, 53, 52,183,253, 42, 29,142,246,201,247,128,213,114,185, 85,111,
+175, 89,217,150, 72,105,150,166, 32,139,208, 19,163,141,185,239,219, 71,145,170, 72,239, 35, 81,182,226,148,141,136, 39, 38,146,
+107, 72,213,160,163,108,221, 83,106,229, 47,220, 11, 64, 9,157,208,197, 40, 10,247,177,207, 42, 88, 32,146,176,114,168,165,101,
+197, 23,204, 83, 70,201,181,145,180,164, 90,222,183,229,216,123, 80, 4,216, 70,207,236,254,115, 79,122,245,130,188,219,252, 98,
+ 36,148, 98,129,162,100, 41,105,182, 26,136, 20, 80,169, 30,216, 92,197,112,195, 7,202,105,120,204, 39, 76,208,167,105, 96,154,
+112,166,221,173, 43,131,189, 64,162,160, 23,170,111,197,181, 64, 9,150, 54,102, 29,118,117,188,110, 62,176,159, 57, 79,222,105,
+152,220,162, 65,169, 21, 48,194, 69, 47, 24,183,108, 25,128,166,154, 1,174,131, 89, 60, 8, 92,249,230,228, 78, 0, 66, 19,200,
+ 37, 43, 42,170,129,145, 52, 81, 76,189,200,106,209,243, 61, 51, 90,199, 27,136,218,179,230,197,170, 79, 15,194,194, 54, 23, 77,
+ 35,226,164, 56, 37, 52,126, 81,121, 47, 11,180, 49,154, 7, 62, 52,113,230,178, 90, 94,218, 0,253,115, 90,254,245,114,237, 37,
+ 7, 23, 62, 31,176, 23,156,158, 87, 5,138,132,157, 51,114, 41,152,106,177, 92, 2, 28,252, 76, 9,138, 36, 15,164,233,146,227,
+ 56, 98,220,140,168,147,199, 58,195,226,107,213,250,184,218,172,192,246,217,207,147, 22, 57,171,113,108,247,137,164,136,179, 39,
+231,152, 38,181, 11, 38, 11,111,169, 28, 52,130, 59,134, 5,124,199,139, 91, 89,240, 40,170, 81, 18,169, 57, 54, 28,153, 28, 76,
+216, 54, 82, 4,134,132,245,106,108, 49,205, 18, 8, 67, 8, 80,121,177,226,163, 55,227, 9,174, 92,189,142,105,187, 69, 72, 35,
+132, 42, 74, 85, 28,245,110,154,176, 73, 71, 42,158,166,130,176, 25,128, 90, 81,130, 96,218, 51,134,213,218, 28, 5, 26,153, 93,
+252, 51,234,114, 34,123, 38, 52,161,176,146,238,235, 19, 28, 36, 81, 61,188,195, 21,141, 93, 5,234,251,171,185,168,157,104,140,
+169, 51,114,205, 18, 82,237, 0,107, 30, 87,235,182,220,195,218, 98,245,236,167,238,237,195, 32, 17,108,142, 54,248,236,227,140,
+ 20, 70,112,101, 92,189,114, 5,159, 61,252, 20, 82, 9,227,166,179,202, 75,169, 40,165, 96, 28, 7,240,197, 5,166,253, 30,251,
+237, 37,230,146, 81,131,238,145,200, 70, 31, 33, 16, 70, 74, 64, 8,152,230,172, 1,244, 85,197, 57,251,221, 14, 55,111,220,196,
+119,255,250, 91,184,247,252, 93,148, 90,113,227,230, 77,156, 94, 57,197,191,254,252,151,248,201,143,126,138,147,211, 83,220,255,
+230,107, 56,189,118, 29, 79,207,206,113,113,126,142,213,209,128,107,199, 87, 80,106,197,227, 71,143,240,240,195,135,120,248,232,
+ 33, 94,250,210, 75, 88, 29,109,240,167,119,255,140,143, 63,249, 28, 66,132,154,171,217, 48, 68,213,136, 16, 20, 41, 16,131,154,
+251,131, 93, 45, 5, 40,152,246,128,139,160, 4,197, 42,174, 67, 68,145,170, 22,175, 34,154, 58,102,239, 35,123,114, 22, 83,195,
+170,122, 32, 4, 17,176,222, 12, 58,129,177, 3,210, 57,117, 32,141,222, 12,238,120,176, 3,197,125,213,204,140,100,163, 77,241,
+189,161,123, 38,133,218,248, 83, 21,168,166,122, 54,208,130,239,195,244,231, 20, 83,152,122,218, 22,236, 50,136,237,240,105,112,
+ 11, 4, 48,117,146, 23, 45,128, 34, 45,157,123,121, 1,183,184, 68,179,186,133, 5,182,213, 19,228,218, 62,217, 89,207,189,179,
+234,140,103, 28,208,226,150, 23,189, 19,160,245, 31,179,247,151,186, 71, 89, 51,170,227, 98,196,235, 88, 87,135,152, 72,155,118,
+160,125,214, 93,113,205,108, 17,171,140,131, 48, 15,233,184, 50, 93,241, 82, 80,189,132, 21, 19, 98,187,113, 15,211, 33, 12,154,
+244, 22,146, 9, 33, 5, 53,168,207, 87,225, 55,154,224, 17,130,253, 12, 27,211,249,235, 57,216,203,179,153,249,193,141,181,238,
+ 34, 89,161, 0, 48, 33,194, 45,122,101,145,104,101,229, 30,231,246,190,166,164,164,184, 96, 99, 73, 93, 45,248,248,151, 90,100,
+102,132,118,232,194,130, 48,216, 62,125,193,224, 14,209, 4,152, 13, 51, 43, 29, 8, 99, 59,206,222,113,121, 88,140, 44,246,154,
+212, 38, 75, 7, 44,121, 7,250,112,143, 83,213,243,169, 11,235, 28, 15,171,212, 48,235,194, 66,104, 32,146,234,121,229, 14,235,
+177,167,198, 87, 40, 20,131, 42,167,165, 34, 81,180, 14, 43, 34,141,105,145,210,166,171,129,104, 4, 64,253, 53,217,112,177,166,
+ 51, 49, 1,148,127, 39,116, 13,138, 14,157, 90, 36,156,197,168,254,248, 42,207,100, 9,160,211,218,184,173, 16,208, 18,215, 26,
+131,130, 66, 75, 63, 59, 20, 29, 30, 78,190,218,119,166,217,149, 45,182,180,193,141,244, 63,167, 92, 80,170, 40,124,166,112, 43,
+ 36,220, 65, 2, 15, 7,114, 77,141, 8, 86,171, 1, 49, 4, 76, 57, 55,155,110,176,115, 38,141, 3, 40, 6,212,156, 81,230,140,
+203,243,115,220,184,125, 83, 93, 45,165, 98,181, 26, 65, 53, 99,123,161,250,166, 97, 76, 8, 73,221, 32, 62,233, 81,241,119,215,
+ 35,201,129, 46,128,122, 22, 10,186,222, 0,158,115, 96, 64,140,213,230, 8,137, 9, 73, 98, 43,172,180, 8,202, 6,128,210,181,
+203,205,155, 55, 90, 39,157, 70, 66,206, 85,163, 85, 89,191,167, 78, 87,172,181,106,209, 66,192,156, 43,114, 41, 88,173,109, 20,
+207, 5,251,121,198,106,189,194, 92,170,194,195,156, 43, 99,191,243,152, 34,192,131,210, 57, 85,253,137,102,251,160,208, 47,101,
+ 18,198, 96,162, 11, 0, 58,238,112,118,176, 1, 11,216,208, 5,108, 2, 3, 29, 91, 24, 55,152,170, 14,241, 22, 57,203,100, 59,
+182,167,103, 79,154,221, 71,131, 85,130,141, 48, 72, 5, 94,235, 99, 76,219, 9,113, 28, 52,106,179, 0,211,118,194,249,249, 25,
+ 88, 24, 57,207,200,101, 70, 46, 69,225, 20,105,180, 15, 66,139,246, 24, 18, 98, 32,204, 37,155, 31, 52, 66, 80, 48,149, 61, 94,
+122,233, 5,252,245,223,126, 15,171,113, 0, 98,192,205, 91, 55,177, 57, 90,227,167, 63,249, 25,254,249, 7,255, 19,119,238, 61,
+135, 87, 95,187,143, 97,179,198,229,249, 57,246,251, 29,142, 78, 79,176, 62, 62, 70,222, 79,248,244,225, 39,248,183, 95,253, 22,
+105, 72,248,202, 87,191,134,253,180,199,111,127,251, 54, 46, 46, 46, 80,197,178,147,205,238, 20,130,142,105,114,101,100, 75,207,
+138,198,195,214,138,156, 48,112, 84, 91,151,113,190,185, 42,121, 41, 37, 83,180, 87,237, 82, 57, 42,156,196, 71,129,181,170,250,
+180,237,122,161,123,241,180,138,182,131,171, 0, 52,146,148,153,145, 72,195, 69, 74,163,101, 57,197, 77,215, 20,202, 32,175,202,
+ 17, 31, 82,183,168,185,168,195, 84,191,100, 59,110,239, 32, 28,152, 32, 82,109, 76,235,151, 92,181,195, 51, 54,166,186, 67, 50,
+244, 31,139,189,139,162,133, 56,197,231,237, 44, 93, 81,238,225, 44,210, 65, 48,144,195, 67, 71,217,239,177,117,158, 98,149,181,
+ 78,121,164,237,186, 27, 62,116,177, 67,110,224,137,198,135, 70,247, 9, 91,106,151,170,108,141, 91, 30,108,166, 81,171,141,229,
+173, 98,102, 71,154, 86, 5,153, 16, 14, 10, 9,135, 69,112,219,165,183,197, 94, 99,171,187, 48,174,181,202,134,127,100,115, 47,
+ 56,112,201,110, 72, 29, 60, 75, 23,243,148,204,136,232,234, 94, 63,120,197,254, 29, 93,223,208,197,114, 92,106, 43, 20,157, 71,
+239, 66, 89, 49,117,185, 88,250,150,143,237, 93, 51, 16, 35,117, 44,168,117, 58,122,225,171,149,176,185, 4, 82,210,160,167, 69,
+208, 78,180,110, 88,127,190,254,206,170,117, 88,248,207, 65, 95,216,237,251,180,131, 77, 49, 78,180, 80,251,219, 91,234,151, 45,
+115, 87,179,115, 83,140,115,195,228, 43, 88, 37,218,243, 27,108,253, 89, 14, 14,115,103, 7,244,103,215, 5,141,116,176,127,238,
+112, 65,157,108,214, 69,167,171,218, 3,105, 60, 3, 54,236,113, 8, 61,117,175, 88,232,137,178, 20,236,124, 12,212,158,149, 70,
+ 7, 92, 60, 83,203,201,217,146,154,216,132,122,102, 37, 36,187,232, 43,128,100, 69,135,239,229,197, 46,172, 20,163, 21, 35,220,
+221, 3,114,232,251, 63, 12,179, 89,218, 53,165,133, 74,177, 0,165, 0,243,172,142,159, 82,209, 46,241, 16, 2,178,235, 89,120,
+209, 60,120, 88,202, 48, 32,100, 65,158,125,170, 65, 13,212,148,198,161,129,163,118,151, 59, 80, 32,172, 55,155,182, 46,137,105,
+192,110, 63, 97,191,219,163, 10, 99, 52,151, 72, 80,249, 79,155,112, 44,139,119,215,104,248,154, 78,163,217,186,205,219,109,135,
+176,201, 95, 76, 17,113,136, 24,176,130, 76,165,179, 27, 66,128, 20, 43,200, 69,233,158,167, 87,111,160,204, 25,243, 52,227,202,
+245, 27,120,242,232,115,212, 50, 25, 71, 67,139, 20,182, 0,180, 57, 79,160,144, 80, 75, 69, 26, 70, 28, 31, 29,131, 44,200,102,
+183,219, 57,122,195,141, 21,102,193,212,223, 45,249,250,144,128, 4, 33,219,217,114, 67, 82,122,133, 8, 19,161, 36,131,205,176,
+ 84,164, 56, 42,234, 78,148, 54, 36, 20, 64, 40, 38, 80,114,139, 86, 31,211, 37,123,160,156, 37, 30,162,126,185,159, 94,238, 80,
+172,154,139,195,160, 62, 75, 27, 99, 48, 1,167,167,199,138,144, 28,116, 95, 47,129, 80,168, 98, 63,237,193, 49, 26,108,165, 26,
+ 61, 45,154,234, 55, 88,215,160,251, 16,120,152, 66,101,236, 38,198,122, 3,220,255,218,171,120,253,245,111,180, 7,228,246,221,
+187, 24,199, 1, 63,249,241,207,241,235, 95,191,133, 87,191,254,117, 60,247,194,115, 96, 22,236,119,123,196,148,112,237,218, 85,
+196, 97,196,249,217, 22, 31,254,229, 3, 60,120,247,207,184,126,253, 6,238,220,189,131,207, 30, 61,198,159,255,252, 0, 83, 41,
+200, 18, 80, 75,214,142,154, 8, 20, 42, 2, 1, 69, 88,227, 44, 77,253, 76,149, 81, 98, 64, 96, 66, 52,106,154, 6, 97,116, 75,
+ 79,206, 5, 41,105,136, 7, 23, 21,203,149, 80, 59,125,137,129, 2,103,244,107, 7,166,187,107, 32,165,149,121,101, 11,162, 36,
+136,164, 86,117,162,218,232,215,137, 93,139,139,177, 29, 6, 96, 59,124,251,158, 11,178,240,149,122,236, 42,145, 9,130,106, 19,
+149,212,214,129, 47,190,240,214, 45,185,117,107,217, 25,136,117, 88,190,163, 20, 55,136, 91,117,206,198,165,214,233,176,237,174,
+ 23, 89, 5, 58,198,229, 5,123, 91,143,213,152,186, 21,163, 86,110,135,183,209, 67, 90,214,123, 63,112,251,216, 50, 70, 45,114,
+ 36, 44, 85,246,110,126,233,211, 7, 95, 72,116, 8, 7,154,120,145, 60,132,195,125,200,139, 80, 24,102,134,148,218,197, 71,134,
+149,164, 16, 77, 33,223,169,115,190, 91,119,213,186,239,251, 93,173, 30, 60,243,220,168,122, 98, 65, 24,149, 68,227,137,165, 11,
+156, 40, 68,212,156, 59, 69,205, 73, 48,212,167, 53,125,151,140,230,183,109, 5,185, 1,103,132,130,189,158, 62,190,212,213, 80,
+236, 49,156, 65,245, 11,108,202,238, 96, 16,150, 10,159, 8, 0, 82, 11, 10, 69, 12, 99, 50,125, 72, 81,139,154,237, 30,253, 23,
+105, 66,201,182,102,241,207, 66,250,103, 73, 11,239, 78, 56, 76, 78, 99, 94,166,242, 73, 19,209,185, 95, 63, 4,195,149,134, 96,
+207, 51,181,207,129, 2,125,129,156,217,104,110,134,254,121,118, 36, 29,218,197,102, 74,120, 4,163,169,169,214, 39, 14,250,204,
+102, 35, 16, 18, 89, 1,111, 97, 74,193,207, 87,179,162, 69, 14,109, 95, 44,162,148, 89,182, 78, 87,120, 57,250, 94, 90, 6, 61,
+214, 54, 52,251, 10,133,216,197,113,132,238,130,136,166, 0, 55, 75, 43,219, 68,169, 97, 82,151,218, 8,159,162,185,230, 5,210,
+ 38, 98,173,168,176,201,138,166,177, 85, 69,195, 86,165,202, 69, 91,165,136,165,153,105,242,167,145, 65,185, 34,141, 9,195, 48,
+ 96, 42,213, 4,114,104,147,159,113,189,106, 43,140,105, 63, 97,123,185,197,141,219, 55,144,134,136, 90,197,148,241, 1,219,237,
+ 30,211,222,211,206, 6,179,179,105,234, 94, 67, 87, 47, 96, 82,250,149,149, 22,163, 26, 60,101,207,166, 7,238,169,137, 38,222,
+140, 49, 96,189, 94, 1, 5,216,239, 21, 99,221,232,141,204,160,164,123,176,148, 86, 56,189,114, 29,217,146, 53, 67,136,216, 79,
+123,148,170,247,101, 33, 54,252, 53, 91,241, 50,216,122,154,112,229,248, 4,171,149, 42,223,119,251,189, 70,103,147,173,121,104,
+ 33, 96, 15,172,130,203,144,144,134, 1, 25,130, 4,143,218,108,248, 76,179,109, 24, 97,138,134,193, 40,101,179,138, 45,146,126,
+ 8,108,145,154, 48, 65, 74, 84,207, 13, 22,107, 81, 29,248, 54,142, 52,187, 43, 4, 18, 35, 98, 74,152, 12, 96, 63,164,136,241,
+232, 72,233, 95, 80,139,210,122,189,198,118,187,195, 56,110,244,225,138, 10,183,152,107, 69, 37, 65,136, 73,199, 68, 85, 59, 39,
+ 56, 51,215, 90, 12, 21,146,233, 8,124,119,185,195,106, 88,227,245,215,238,227,205, 55, 94, 71, 26, 35,134,205, 10,183,238,220,
+ 70,201, 25,255,252,223,255, 23, 62,254,232, 9, 94,125,237, 62, 78,111, 28, 99,127,190, 67, 26, 86, 56, 57, 61,198,241,209, 6,
+133, 11,222,249,227,251,120,255,157, 7,216, 79, 59,220,251,210,139, 88,173, 7,188,251,231,191,224,193,131, 79,149,210, 84, 52,
+211, 55,152,224, 45,134,128, 65, 10, 50, 11, 50,107,158, 56,196, 14,244, 40, 72,172, 43,143,154, 43, 48,144, 90,203,132, 26,133,
+ 43,207, 21, 41, 18,114,228,150, 38,150, 76,225,238,170,107, 53, 44, 86,136, 65, 36, 42,107, 58,155,118,233, 5, 92, 3, 10, 85,
+ 16,169, 88, 72,186, 53, 90,247,198,198,156,103,235, 96, 34,162,169,103,101,209, 1,151,198, 34, 8, 38, 16,243, 56,213,118,177,
+ 11, 55, 65, 87, 52,193,144,223,114,236, 24,174, 32,135,149,190, 91,182, 60,228,196,158, 65,165,100,121,135,109,138, 1,234,138,
+114,237, 36, 85,157,187,228,158, 3,181, 33, 75, 59, 93, 76,108, 15,205,173,135,106,221, 71,232,162, 52,127, 62,201,240,142,190,
+110,106,126,237,208, 15, 90, 2,181, 85, 19, 75,191,100,156, 25, 45,182,127,247,215,215,223, 35,233,135, 9, 75, 19,201,249,120,
+219,247,231,140,170, 43,151,216, 59,237, 6, 27,169,188, 0,159, 44,108, 69, 22, 73,235, 89,243,132, 67, 14,189, 47, 5,107,205,
+141, 31,239,194, 59,239,240,196,130, 86, 84,120, 90,109,181,163, 16,144, 16, 8, 41,234,123,198,205,126, 71, 22,189, 44,118,132,
+132,198, 62,111, 62,229, 69,126,188, 88, 56, 80, 36, 21,200,177, 84,148, 6, 60,177,125,165, 17, 13,131,233, 17,148, 39, 46,118,
+ 17, 44, 50, 42, 32, 45,239,193, 47,123, 11, 98,183,215,223, 35,101,123, 65,178, 12,127, 18, 21, 6,123,126,132,117,139,174,218,
+ 86,237, 4, 29, 76,128,150,227,231,131,201,142, 77,204,124, 74, 25,156,110,104,221,159,254,124,101, 76,132,230, 24, 18,151, 51,
+ 24,158,118, 97, 15, 21,103, 4,246,198,168,250, 78, 60, 6, 72,174, 40,149, 91,178,157,143,185,131,229, 10, 52,129,156,117,232,
+209, 80,174,238, 22, 16,119,178,112,255,142, 52,165,188, 44,172,172,109,202,193,135, 74,122, 28, 58, 79, 58, 12,200,138, 98,110,
+ 47, 17, 83,201,152,102, 77,185,116,219,158, 63, 35,125,178, 33,205,246, 44, 16,172, 86,107,172, 40,224, 73,157, 80,185,154,166,
+133, 48,174, 87,136,195,168, 80,173, 41,227,236,233, 25, 98,138,216,108,214, 32, 66,219,197, 87, 46,216, 93,110, 45,249,141,154,
+238, 64,167,196,116,160,231,240,223,169, 26, 37, 18,232, 43,191,102,197,205,135, 33, 63,193, 38,215,171,213,160,223,167,105, 66,
+186,118, 69,147, 75,163,226,204,199,116,140, 90, 5,171,163, 13,142,142, 79,112,118,118,142,113,189, 2, 23, 65,206,154,162,167,
+105,147,250,204,212,146,181,235,142, 58,165,202, 16,172,143,142,176, 74, 9, 85,148,166, 90, 61,186,154,148,126,234, 41,163,174,
+111, 65, 48,221, 21, 17, 82,225,174,248,236,116, 47,243, 10,198,128,113,225,233,108, 35, 90,178, 47, 42,187, 23,157, 13,215,201,
+118, 40,140,128, 36, 16,113, 19, 36, 8, 52,227, 55, 80,192, 17, 69, 12, 81, 48,213, 10,206, 5, 76,192,250,120,141,243,179,217,
+186, 20,198,112,180,130,156,111,205,231, 57, 34, 76, 51, 42, 8,251, 60, 35, 32,169,233, 62, 69,208, 20, 80,181,254,199, 16, 21,
+115,203, 34, 40, 85, 48,205, 25,251,203, 61,174, 93, 61,198, 27,223,125, 19,247,191,126, 31, 18, 8, 71,167, 39,184,121,253, 22,
+158, 94, 94,224,167,255,244, 63,241,232,201, 25,254,234,181,175, 99,179,217,224,226,236, 41,134, 33,226,250,245,171, 88, 31,159,
+ 96,187,223,227, 87,191,248, 21,126,254,195,159,224,165, 87, 94,193,253,251, 95,195,110,123,137, 63,252,238,109, 60,124,242, 57,
+ 36,110,192,181,162,102, 6, 56,160, 2, 24,135,128, 49, 6, 76,146,108, 4,110, 44,102,175,240, 45,177,136,106, 85,248, 67,173,
+234, 39,117,241,116, 21,100, 48, 48, 19,134,177, 34,177,114,219, 71, 16, 88,130, 22, 0, 92, 17,109, 79,201, 2, 84, 53,178, 35,
+174, 3,134, 16, 32, 69, 80, 9, 8, 52,107, 68, 31, 19,136, 45,132, 68,116,231,143, 0,141,240,228,160, 5, 69,128, 10,133,202,
+ 10, 28,109,172,167, 86,135,131, 64, 3,102, 6,170,242,206,210, 66, 76, 19, 40,104, 56,138, 45, 11, 93, 72,134,158, 0,160,158,
+236,229,225, 40, 48,214,124,223,183, 70, 99, 71, 23, 84, 37,219, 29, 0, 77,236, 8,180,144, 17,143, 6,213, 93,104,109,254,215,
+134, 82,197, 97,208, 70,231,185,123,226,149,142,202, 91,215,102,126,126,105, 92,252,216, 56,244, 22, 1, 3, 87, 50,105,114,154,
+ 41,199,155,152, 38,116,225, 25,250,200,209,247,186,234, 6,152, 81, 57, 55, 14,181,158,240,193, 28, 36,162, 14, 5,234,138,102,
+221,189, 75,123, 93, 21,130,181, 40, 96,201, 59,119,160,135, 53,144, 31, 20,185,170,200,200,118,199,149, 21, 0, 45,246,122, 96,
+ 1, 40,108,251, 89, 9,164,218, 6, 19,191, 87,150,110, 1,164,190, 86, 16,174,141,128, 73, 20, 65, 82,155, 80,146, 2,129,197,
+ 99,120,165,141,247, 97,160, 31, 34, 54,208,137,118,195,209, 87, 21,105, 64,138, 65,129, 29, 53,219, 68,196,116, 57,165, 26, 13,
+ 80,223,107,182,184,232,232,133,196, 34, 37,175, 46, 2,100, 22,253, 58, 68,194, 65, 81, 25, 3,181, 41, 81,229,218,233,118,246,
+ 94,232,132, 65,157, 39,238, 14,240, 49,116,187, 11,217,214, 0,162, 81,161, 75,124,172,152,173,143,201,237,149,104,112, 24, 95,
+ 65,117, 93,137,116, 88,139,173, 88,150, 66, 53, 84,165, 96,198,102,151, 44, 54,213,178,201, 64, 10,139,110,218,172,105,232,150,
+242,104,197, 70, 48,170, 96, 8,182,226,176,125, 50,217,106,199,139,100,178,201, 19, 91, 81,220,190, 11, 38, 78,117,219,106,240,
+191,110, 69,172,115, 23, 84,233,190,223, 87, 76, 89,176, 47,150,137,224,133,107, 53,165,127, 91,233,233, 9, 30,130, 82,228, 56,
+138,194,198,108,156, 60,172, 6,164,163,193, 86, 26, 5,219,139, 45,234, 92,113,245,218, 21,140,227,170,101,209,135, 0, 76,151,
+151,152,118,154,122, 73, 81, 57,250, 13,251, 42, 17, 33,169,251, 4,149, 16, 88,133,121, 30, 75,193,188,116,223, 44,113,209, 22,
+212,162,251, 15,164,113, 64, 12, 9,133, 8,185,102,140, 99,194, 16,148,248, 57, 23,253,254, 48, 49,142,174, 92, 7,210, 26,103,
+151,239,227,185,163, 47,161,138,186, 23,132, 77, 23,179,200,116,119,205,166, 83,115,215,171, 35,164, 20, 17,165, 98,218,111, 33,
+ 92,144, 82, 68,141, 21, 41,104,243, 45, 76,136, 20, 91,190,132, 67,114, 82, 21, 65,240,177, 14, 4,194, 10, 16, 8, 33,169, 66,
+219, 70, 43, 25,138,120,213,207, 52,182,139, 84, 88, 61,135, 49, 4, 20, 82,181,167, 11,140,220,180,175, 95,160, 2,193, 96,163,
+ 13,125,136, 74,158, 33,181,154,103,117,208, 63, 31, 35,114,173, 88,111,142, 32,128, 38,165,217,120,140, 88, 16,170,160, 74, 70,
+245,221,191,141,138,210, 48,104,215, 41,140,146, 11,118,243,140,203,105,194,245,219,215,240,173,239,124, 7, 47,189,248, 2, 82,
+140, 56, 62, 57,197,213,107, 87,241,254,123,239,225,119,191,254, 45, 74, 0,238,191,254, 58, 40, 37,156,157, 61,197,181,235, 87,
+113,243,246, 45,172,143,142,240,241, 7, 31,225,135, 63,248, 33,126,243,187,183,112,255,235,247,241,181,175,124, 5,159,125,246,
+ 49,222,251,224, 33,118, 83,134,196, 21,106,158,180, 48, 49,208, 66, 68,194,144,214, 22, 98, 95, 16,163, 94,156,117, 46,139,131,
+148, 77, 41,219, 89,209, 62,181,212, 42, 91,127, 30, 19, 99,158, 19,134,196, 22,105, 25, 81,161,149,183,106,223,244, 42, 11, 34,
+ 58,206, 21, 23,209, 72,123, 72,156, 58,214,152,214, 46, 2, 10,190,218,211,113, 24, 5, 79, 60,137,250, 5, 51,177, 17, 64,136,
+ 30,199,104,227,159, 24,146,205, 27, 11,138,232, 26,129, 16, 64,137, 26,136, 67,161, 48,161,193, 41,220,216,232,211, 2,223,243,
+169, 10,185,218,239,193, 45, 56,129,109,167,217,128, 51,118,211, 68, 90, 10,162,200, 44,103,108, 5,137, 9,112,218,155,137, 47,
+ 10,123, 22,107, 6,181, 64,113,243, 49,123,100,104,104,249,213,225, 64,113,239,172,123,147,185,171,163, 34, 28, 94, 22,203,160,
+141,246,191,153,197,222,115,203, 75,177,112, 10,227, 18, 40,199, 89, 90, 81,147,108, 76, 90, 23,179,112,106, 36, 51, 6, 73, 68,
+ 21,182,130,202, 14,106,234,173, 41, 91,113,157,153,181,240,243,221,170,225, 67, 75, 45,136,118,248,147, 33, 49,153,245,160,240,
+ 14, 19,118, 9, 56,153,143,184,175,179,154, 16,202, 58,113, 23, 56,149,162,150,191,224, 98, 44,116,172, 44, 89,192, 80, 41,188,
+ 88,185, 69, 87,112, 53,176, 17, 47, 20,224, 75,191,175,218,229, 98,123, 63,189, 56, 35, 75, 4, 0,213, 3,111,250,191, 23, 13,
+ 10, 28,238,222,121, 81, 4, 64,122,215, 8,219,241,186,255, 93,187,221,224, 88,255,150,181, 45,237, 81,176, 20, 57,136, 1,150,
+180, 49,146, 69, 96, 72, 76, 97,145, 62,200,237, 59,239,165,199, 82, 28,136,198, 78,176, 34,156, 0,174, 5, 8, 81,233,140,162,
+228, 76, 49, 81, 44, 98, 88, 76,198,148, 19,224, 64,151, 37,120,135,168,191,159,178,200, 85,239, 81,193,124, 56,105,225,110,135,
+ 21,146,150, 74,216,162,117,131, 42,253,109,176,209, 92, 44,181, 86, 92,238, 38,236,231,138, 57,231, 30,135,108, 98,221,217,166,
+ 69,178,208, 91,105, 36,115,194, 56, 36,204, 83,237,225, 59, 33, 96,189, 57,194, 16, 71, 84, 97,108,183, 91, 92, 92, 92, 32,141,
+ 9,155,163,141, 38,103,154,157, 11, 85,176,221,238, 91,190,250, 16,186,115,128, 28,109,237,233,147, 54, 61,245,162,182, 37, 13,
+250,116, 46, 26, 28,138,122, 33,147,108, 90, 57, 40,142,212, 18,219,146, 89, 76, 3,172,127,179, 2, 30,184,118,122, 13,251,221,
+ 22,101,206, 24,199, 85,179, 55,171, 62,173, 54,199,136, 62,183,246,121, 8,176, 25, 7, 28,111,214, 24, 98,196, 52, 77,216,110,
+ 47,144, 72,215, 35, 43, 12, 90,124, 48, 25,127, 68,154,123, 73,106, 65, 20, 65,114, 26,148, 62,156,150,132,181, 24, 53,106,190,
+147,205,138, 66, 58,236, 32, 22, 2, 16,166, 5, 75,152,186,245,103, 89, 53,123,160, 20, 33,160,148,140,139,253, 5,214,113,133,
+ 82,171, 86, 80, 70,215,209,120,199,128, 44, 25,168,212, 50,187, 93,145, 56,205,147,165, 58, 49,194,144, 48, 24,195,155,136,144,
+ 75,197,110,155, 81,184,226,175, 94,126, 25,247, 95,127, 13, 55,175,221, 64, 28, 19,110,220,186,137, 43,167,167,120,251,247,127,
+196, 31,126,255, 71, 92,185,122, 13, 39,215,175, 98,158, 39, 76, 23,103,120,254,133,231,113,243,238, 29, 16, 34,126,254, 47, 63,
+199, 15,255,249,135, 64, 5,254,238,123,223,195,245,219,215,241,254,159,255,130, 79, 62,253, 4, 69, 70,148, 10,204,251,130, 58,
+207,198, 3,215,195, 32, 14,212,119, 51,193,118, 61, 49,128,130, 42, 57,105,209,193, 73, 96,165,119, 50, 12, 42,163,135, 64, 45,
+ 78,136, 11,216,239, 11, 86,134, 33,156, 11, 99,101, 15, 65, 38,198, 64,118,161, 55,171,138, 6, 33,136, 35, 85, 23,133,149,123,
+113,153,184,211,192, 66,176,207,187,179,197,171, 0, 81, 42,184, 64, 21,213,100, 24, 97,104,234,154, 20,106,169,100,202, 49,176,
+177,166,117, 96, 42,252,233,135,166,129,156,219, 8, 43, 52, 95, 53,117,194,149,203,139,204,174,149,107, 81,235, 82, 24,122, 33,
+194,118, 41, 89, 71, 67,240,125,117,247, 19,183,157,186,127, 65,133, 23, 83,129,176,136,218,108,175,182, 33,112, 27, 15, 29, 61,
+ 32, 39, 70, 93, 67, 53,145, 24,168, 79, 30,154,216,198, 17,151, 6,106, 33, 62,216,211,123,103,175,217, 70,166, 12, 46, 89, 15,
+105,138,109,164,215, 38, 20,250,129,104, 97,228, 19, 46, 31, 41, 91,103,227,177,140, 42,182, 43, 0,180,152,245,223,223,185,221,
+195, 56, 64,184, 44,244, 17,177, 91, 8,237,242,246,157, 34, 68, 64, 92,213, 99,110, 97, 43,205,102,104,158,106, 38,209, 11,164,
+ 54,112,173,234, 36,220, 90,102, 23, 98,192, 50,194,211,249,230, 98, 83, 11,110,130, 68,207,137,208,149, 25, 43, 14,149,141,185,
+109,196, 53,207, 83,111, 20, 48,116,145,224, 18,117,206, 86,116, 44, 71,208, 75, 75, 86,247,118, 47,210,219, 92,147, 32,198, 27,
+144, 5, 96,135,173,144,140,139,188,120,234,197, 10, 55,192, 14,181,253,114, 85, 37, 85,115, 17,232,132,168,182, 14,118,201, 76,
+199, 51,144,147, 92,139,217,147,108,148, 90,253,103,196,182,186, 33,203, 25,136, 33,130, 57, 55,217, 74, 48,234, 31, 91, 49, 12,
+ 49,190,164,116,226, 94, 12, 65, 79,241,197,232,123,105,253,244,177, 51,115,247,226,251, 89, 37, 30, 2, 68, 93, 56,185,228, 38,
+182, 73, 3,235,115, 57,229,138,139,221,140, 57,171,104, 83, 63, 86,101,248, 87, 43, 60, 96, 43, 31, 89,228, 7,140,163, 34, 95,
+ 39,119, 70,133,128, 97, 53, 98, 92,143, 16, 0,121,206, 56, 59,187, 0,170, 96, 92, 15, 24,236,239,251,107,220,238,103, 76,211,
+108,177,180,122,129,199, 72, 77,228,150, 12,128, 22, 99, 52,255,190, 79, 10,228, 64,151,208,214, 10,182, 82, 32,246,156, 19,178,
+ 46,122,133,213, 64,216, 85,205, 54, 79,105,176,230,137,129,149,189, 55,105,192,233,213, 43,184,188, 60, 71, 72, 9,227,176,194,
+211,243, 71,200,251,157,105,131,170, 70, 79, 87, 65, 72,125,253, 38, 44, 24,134, 1, 39, 71, 27, 8,128,221,188,199,249,229, 57,
+104, 72,109,234,229,206, 8,169,100,216,221,170,147,137, 42, 32, 6,146, 35,251,136, 4,158, 62, 7,179, 58, 4, 10, 42,161, 71,
+209,240,139, 16,237, 33,235,234, 99,223,197,136,232,165, 84, 28, 89,215,134,174,232,108,218,208, 33, 55,194, 1, 50, 87,212, 81,
+171, 57,105,136,197, 70,136, 64,140, 9, 37,207,122,114,143, 9,156,117,159, 94, 76, 16, 22, 98,192,230,104, 3,174, 10, 86,169,
+181, 98,119,185,197,190, 8,190,249,205,215,240,230,155,223,212,156,221, 52,224,218,157, 27, 0, 37,252,203,143,127,138,207, 63,
+123,132,219,207, 61,135,213,184,194,197,197, 57,136, 4, 47,191,242,101,220,125,225, 30, 46, 47, 46,241,253,239,255, 15,252,224,
+251, 63,196,189,187,215,241,237,191,249, 54, 34, 5,252,254,173,183,240,249,227, 51,132,241, 8, 83,174,216,237,182,200,121, 66,
+ 2, 53,145,136, 48,163,150, 10, 30,187,231, 25, 7, 35,175,106, 8, 74, 15, 52, 8, 40, 85, 87, 30,136, 21, 41, 12,166, 52,214,
+195,188, 66,253,234, 83, 46,136, 73,121,231,213,247, 94, 33, 34, 45,118,162, 92, 5,113,229,226, 36, 63, 88,251,214,170, 50, 43,
+197,141,150, 34,182,165,162,125, 17, 45,105,214, 20,103,124, 59, 26, 85,161, 32,106,177, 32, 46, 8, 52,152, 8, 76, 26, 74,214,
+ 3, 69,204,240,173, 59, 82,145, 70, 3,115,123,155, 22, 4,108, 29, 17,218, 67,221,172, 97,206,165, 35,105,145,164,122,185,251,
+ 10,129, 45, 38,210, 82,218, 24,135, 8, 89, 19,218,181,142,185,154,109,202,133,101, 88, 80,162,250, 98,186, 1, 67, 84,197,219,
+ 11, 32,135, 52,185, 42,170, 93,220,150, 7,221,224, 27,230,111,247,127,183,120,167,107,241,195,149, 25,181,102,112, 41,144, 8,
+ 36, 12,112,212, 11, 22,187,120,247,119,251,175,231,151,136, 52, 21,181,226,101, 69, 42,184, 22,144,216, 37, 6, 82,150, 11,161,
+ 3, 62, 22, 62,109,191, 36,109,227, 96,135,113,143,158, 36,210, 53, 78,173, 5,204,165, 77,210,252,114,114, 93, 76,181, 61, 56,
+ 63, 11, 38,105,222,116,187,228,160,142,139, 54,218, 37, 82,172, 44,115, 3, 25, 53, 39,135,169,120, 91, 7,107,157, 64, 48, 13,
+ 14, 5,139, 17,165,222,129,250,127,209, 49,171,180, 11,208, 97, 68,135,177,182,214,164, 88, 65,209,117, 27,253,217,241, 98, 16,
+129,192, 69,163, 49,101, 17,177,235, 34, 80, 23, 5,118,209,221, 66,169,103,141, 17,200, 68,142,139,226,169,133,219, 44,138,141,
+ 24,163, 5,101,233,243, 82,165,239,232,189,187,132,116,171,157, 78, 58,131, 50, 32,236,117,248,132,198, 59,252, 98,140, 2, 23,
+ 16, 75,179,145,213,131,198,204,199,246, 34,135, 66,201, 38,174,180,233,145,227,238,185,195,105, 21, 40,102,226, 76,145,254,123,
+239,167,138,237,110,198, 60, 23,179,177,249,153, 36,246,123,201, 65,190,128,190,166,128,113, 72,144, 8,100,203,138, 79, 67,194,
+184, 89, 33,164,136,185, 20,156,159, 95,168, 96,108, 8, 88, 29,173, 21,191,219,162,102, 35,246,251, 9,243, 60,155,158,192,154,
+ 22,155,184, 84,102, 12, 70,219,115,241,163, 88,176,144,167, 39, 46, 39, 58, 45,133, 16,142,232, 61,100,210,143,137,144,203,140,
+152, 84,148,235,186, 51, 71, 5,159,158,158, 96, 53,142,120,252,248,115,196,113,176,187, 44,219,186, 84,223,143, 77, 26,145, 2,
+ 33,130,145,231,217,246,237,130,213, 48,226,120,115, 12, 1,176,221,109,177,221,109, 65,105, 88,224,107,237, 51,169, 86,156, 27,
+ 86,152,196,149,240, 97,161,202, 93,140,251,130, 24, 61, 78,248, 25,213,169,125, 24,204,166, 48,199,194,162, 98,150, 8,219,213,
+145,235, 89,130, 70, 57,218,134,202, 38,169, 58, 2,201,165,106,172,234, 48,192, 27,252, 90,106, 67,150, 22,168, 66, 80,134,136,
+202,164,113,171,182,231, 93,175, 6, 80, 21,236,171,126,144,187,237, 14,227,102,141, 55,255,230,155,248,171,175,188,162,135,230,
+ 56,226,214,237,219, 56,223, 94,224, 95,126,242, 19,148,153,241,220,115,119, 17, 67,192,147, 39,159,227,198,173,155,120,225,165,
+123,184,126,253, 26, 62,252,240, 33,254,175,127,252,191,241,203, 95,188,141,215,223,248, 50,190,254,250,125, 92, 62,189,192, 31,
+222,254, 19,206,183, 19, 40,141,216,207, 21,251,253,164,135, 85, 52, 68,168, 93, 80,213,216,190, 34, 74, 27, 67, 69,235,140,135,
+148, 48,155,191,208,119, 60,213, 30,110,205,213, 37, 37,189, 26,162,151,171,216,158,135,177,155, 51,198, 33,130,107,192,156, 25,
+107, 18,196,216,237, 71, 42,160, 10, 45,228, 68,204,243,192,181,244,124,232,202,144,100,135,172, 37,119,201, 98,220,189,136, 1,
+131, 68, 21, 75,218,237, 14,146, 96,248, 79, 69,175,194, 51,184,205,178, 70, 38,176, 12, 20, 90, 32, 8, 16, 52, 48,199, 10, 14,
+114,237, 82,116,181,250, 66, 40, 83, 25,157,184,172, 23,184, 90, 79, 8, 76,162,104,211,118,216, 24,138, 86,249, 59,168, 82, 21,
+174, 99,118, 43, 39,143,117,209,139, 85, 73, 30, 37,106,251,248,166, 48, 95,136,180,156, 82, 39,237,178, 89,180, 37,193,189,201,
+181, 89, 86,220,233,177, 84, 29, 7,219,145, 73,229,131, 78,189,218, 8,155,130, 78, 67,164,148,198, 0,240,253,104, 59, 68,253,
+144,182, 3,197,199,170, 98,175,133,109, 36, 88,185, 34,207, 5,145, 9, 49, 9, 36, 38, 48,133,158, 80, 45, 11, 79,190,147,187,
+170,118,248,186, 38,209, 10,191,178,210, 2,197, 70,227, 92, 43,164, 84,179,185, 85, 8, 23,152, 39, 73,199,173,174,186,150,165,
+246, 96,137,216,181,231,223, 95, 63,107, 76,178,139, 26,219,129, 73,134, 75,102,239,228,168,229,184,235, 36,196,194, 94,200,247,
+175,132,158, 0,222, 43, 21,223, 1,203,179, 41,109,207,172, 91,188, 56,194, 66,162,229,133,156, 79, 97, 28,232,212,212,208,204,
+ 8, 84, 45, 99,188,143,200,189, 88,108,153, 11,203, 20, 51, 90, 76,118,252,226, 95,236,175,151, 34, 49,103,197,187, 88,178,216,
+244,138, 22,246, 60, 23, 53,250,149, 90,185,106,192, 16, 37, 35, 74, 82, 35, 76, 58,209, 48, 88,123,237, 19, 20,159, 82, 45,157,
+ 12, 75,148,140, 44, 10, 88, 79,193, 59,184,240,151,202,122, 43,114,155,136,213,249, 15,162, 34,190,237, 46, 99,154,248, 96,244,
+ 46, 85,192,193, 80,215,130, 69, 60, 49,218, 84, 41, 13, 17,101,206,168, 69, 87, 0, 33, 69, 12,171, 1, 34,192,126,183,195,110,
+187,183,105,104,210,208,147, 5, 57, 79,170, 96,158,250,197,152, 82, 68,138, 73,121, 26,134,137, 78, 67,108,205,150,174,233,220,
+ 74,105, 69, 56,209, 98,202,183,176,192,186, 77,154, 84, 67,228, 78,157, 60,103,164,245,160,244,187, 32,168,147,186,115, 16, 2,
+142,143,149,112,119,126,246, 4,247,238,189, 0, 0, 6,202, 41, 45, 59,133,125, 72, 72,179, 21, 35,250, 76, 29,173, 53,245,141,
+ 33,216,237,119,176, 52,115,125,206,165,219,195, 25,102,189, 92,148, 90,234, 56, 35, 29,171,146, 85,134,109, 91,105, 57,186, 61,
+ 17,104,145,241,196,254,176,163,117, 93, 78, 92, 82,126,123,128, 68,243,236,154,232,135, 77,209,233,191, 92, 36,189,228,220, 35,
+ 75, 73, 85,227, 76,234,217,219,239,247, 8, 41,160,100,139,106,116, 24, 3,107,181, 60,166,216,194, 10,106, 46,184,124,250, 20,
+ 87,111,221,194, 27,223,251, 46, 94,122,254, 69,236,230, 9,235,163, 53,238,220,189,131, 79, 62,250, 4, 63,249,201, 79,113,237,
+244, 26,110,126,249, 30, 46,182, 23,216,109,119,184,247,226, 11,120,254, 75,207, 99,189, 57,194, 47,126,241, 75,252,159,255,251,
+ 63, 66, 42,227, 31,254,254, 59,120,241,229, 23,240,224,147, 15,240,231,119, 62, 70,221, 11,194, 56, 98,151,103, 76,251, 98, 85,
+ 53,217,238,138, 17,152,145,107,231, 60, 87,102,165, 73, 45,115,181, 83,194, 16, 34, 38,239,136, 88, 26,107, 57, 48, 33,154,250,
+189,218,250,130,109,167,203,149,145,103,193, 60, 86,172,198,128, 90, 3, 50, 11, 98,101,136, 77, 77,170, 84, 12, 97,176, 48,174,
+170, 49,178,236, 84, 56,221,193, 58,189, 74,191,172,172,187,243,172,227,248,228, 89,233, 46,206, 53, 37,102, 16, 32, 68, 29,173,
+ 71, 19, 12,233,216,216,246,219, 22, 11, 73,228, 81,146,118, 41,137,219, 28, 14, 35, 71,123, 55,100,221,153,232,184,213,163, 81,
+219,161, 12, 27,167,250,195, 74,221, 19,237,251,204, 64, 62, 62,238,177,165,212,236, 59, 29,213,218,120,206,142,201, 12, 80, 61,
+ 72,197, 23,188,170,210,194, 86, 93,111,103,190,236,133, 93,200, 99, 31, 5, 93,217,190,172,137,136,122,142, 56,219,190,182,129,
+ 63, 76,164, 72,172,140,239, 72, 1,165,102,132,170,211,141,228, 49,150,210,213,254, 13,207, 99,209,150, 85,204, 10,199,172, 40,
+ 82, 95, 69,232,242, 86, 39, 32,139,221, 41,241, 66,180,229,221,126,101,112, 46, 16,174, 42,168,227,130, 82,138,234, 85,114, 70,
+181,189,121,181,105, 64, 45, 89,249,236,158,139, 93,139,237,227,181, 56, 0,139,101, 83,251,184, 55,244,194,200, 52, 14,213, 82,
+191, 28, 36,180, 64,212, 91,102,187, 77,245,220,146, 26, 18,130,116, 23,130,166, 11,194, 24,234,206, 31,239,151, 19,187,151, 24,
+135,236,130,127, 47, 31,224, 39,116,102, 80, 0, 0, 32, 0, 73, 68, 65, 84,192,107,189, 24, 35,187,190,197,189,233,202,224, 46,
+168, 32, 36,219,149,138,199,229,114,181,192, 30,179,159,121,209,227,197,161, 79,159,170, 78, 85, 14, 84,228, 11,157,132,255,203,
+171, 77, 66, 90, 78,128,239,179,195,226,183, 92,172,153,200,167, 26,213,158, 91, 9, 58, 38,246, 11, 19,246,189, 95,128,113,164,
+ 37, 7, 30,142,223, 29, 6,211,194,113, 14,254,188, 23,250,193,211,144,244,247, 12, 42,148, 35, 94,118,220,140,121, 46,184,216,
+237,176,205, 25,115,182,212,187,218, 39,183,122,169, 57,142,181, 83, 31,199, 65,241,168,197, 88,247, 49, 4,196, 33, 33,144,238,
+149, 47, 47,183, 40, 89,243, 4,214,171,149,229,172,119,158,193, 52, 79,200, 57,183,140,249, 96, 25, 23,209,119,234,193, 70,215,
+ 20, 64, 76, 77,168,232,130, 90,242,208,160,229,116,204, 86, 42,108, 41,111, 33, 0, 99, 12, 6,158, 34,236,166, 9, 39,225, 8,
+ 41, 37,132,148, 48,109, 11,216,240,174,155,147, 19,236, 46,119, 40, 57, 99,189, 62, 69, 46, 21,149, 51, 74,169,205,109, 17,163,
+ 22, 19,115,102,204, 69,199,107, 21,181,173, 33,106, 21, 92,238,118,234,134,193,176, 72, 26,180,145,187,240,194,121,208,207,185,
+228, 93, 74,128, 41, 95,185,119, 56,185, 58,204, 94,175,228,104,163,186,234, 93,131, 1, 40,252, 0,129,232,238, 43, 88, 92, 43,
+139, 10, 24, 98, 74, 13, 94,194,172,130,187, 8, 96,206, 25,171,205,136,202,140,146,243, 1,165,104,174, 25,146, 2,144, 2,242,
+ 92, 90, 71, 53, 36,205,227,142,164, 93,255,148,103, 92, 60,126,130,151, 94,253, 10,222,252,235,111, 35,132,136,179,139, 11,220,
+124,238, 54,238,222,187,139, 63,188,245,123,252,226, 23,191,192, 11, 47,188,128,171,215,111,224,225,167,159, 96,189, 90,227,213,
+ 87, 95,197,115,183,175, 99, 47,192,255,251, 95,126,128,127,252, 63,254, 27, 94,120,233, 6,190,243,183,223,194,102,181,198,219,
+127,252, 35, 62,252,203, 39,136,195, 10, 60, 16,166,121,143,188,159, 52,119,156,180,226, 28, 66, 2,163,162, 86,233,151, 25, 52,
+ 70,143, 89,199,152,222, 24, 68,102, 12, 41, 32,215, 78,123, 34, 91, 82, 85,147,150,214, 92, 91, 36, 40, 27, 15, 93, 64,200,133,
+177,203, 51,214,117, 64, 42,130, 41, 40,143, 93, 71,149, 1, 92, 42, 52,211,163, 67, 39,252, 98,107, 99, 62, 1,136, 43,106, 37,
+ 68, 75,220, 66,203,252,206,118, 80, 68, 32, 37,144,196, 86, 65,163,197,157, 0, 44,165,139,136,210, 8, 80,178, 3,128, 17,136,
+ 45, 67, 91,144,194,128,160,225,211,173,115,117,127,235,179,255,223,187,230,238, 57, 7,179,101, 87,203,161,200,135,251,238,171,
+177,195, 68, 76, 61,111,240, 23, 33,227,112,115,219,125, 30,248,120,177,236,230,184,141,221,217,192, 64,120,166, 8, 96, 43, 34,
+221, 53,224, 41, 95, 84, 77, 82, 39,202,174,247,247,200,127,166, 28,172, 2,168,115,100,108,164, 92,230,140, 48,132,118,200,234,
+103, 84,141,197, 79, 45,211, 25,240, 61, 48,181,139, 89,105,125,154, 7,224,171,175, 96,130, 85,125,118,212,243, 78,198, 22, 8,
+ 14,236,177,127,190,214,170, 81,143, 37,219, 42,160,130,184,162,148,172,234,220, 92, 44, 73, 74,179, 11,230,202, 64,205, 16, 35,
+ 58,114, 45, 8,168,138, 60, 21,106,171, 53, 24,165,237,240, 66, 85, 49,104, 52,239, 0, 72, 93, 31,212, 24,180, 45,139,197, 4,
+148,212,210,213, 42,161, 83, 45, 13, 34, 19,236,127,147,176, 96,118, 47, 58,242,103,215, 0, 95,200, 0,176,241,244,179,255,156,
+119,215, 29,106,228,103,156,190,158, 12,181,218, 73,135,113,180,231,241, 32,205,203, 11,135,138, 3, 74,163,239,136,123,172,107,
+119,140, 44,127,239, 3, 70, 62,250,120,159, 22,228,194,160,182, 21, 80, 20,155, 32, 72, 75, 65, 67, 35,167, 37, 24,145, 25, 77,
+ 21,107,207,248,146, 68,183, 20,122,178,105, 87, 84,207,208,105,137, 77,184, 72,238,227,161, 14,187,177,140,119, 54,114,214, 52,
+ 85,108,119,122,161, 23, 22, 20, 16, 10,215,166, 47, 96, 67, 72,171, 37,207,130,125, 82, 64, 26,186,203,138, 40,128,146,198,189,
+ 18, 8,151, 23, 91,148, 89,129, 94, 41, 5,108,142,143,148, 42, 87,251,121,151,115,214, 60,251, 90,219,115,212, 80,196,128,138,
+217,168, 83,248, 24,130,108,172, 9, 6,192,129, 14,151,234,162, 89, 0, 64, 64,244,200, 85, 83,188,166, 97,208, 21, 23, 51, 86,
+235, 17, 33, 37,245,234,148,140,146, 9,171,213, 26,167, 71, 39,248,236,209, 67, 84, 0,155,205, 26,101,222, 89,132,108,231, 8,
+164, 16, 33,145, 48,237, 51,230,201,227,105,171, 38,137, 82,196, 52,103,156,159,109,181,249, 74,108,119, 75,135,228,168, 77, 57,
+ 88, 51, 57,163,120,112, 26, 57,101,170,237,188,170,165, 59,105, 69,191, 8,139,178, 39, 36,128, 81,116, 55,110,218, 83, 23, 46,
+ 85,158, 17,195,216,199, 56, 4,203,173,213,180, 33,191, 32,124,148,159,133,193, 89, 83,223, 56, 18,198,152, 80,102,139, 23,108,
+105, 96,210, 14,125,103,193, 11, 23,203,238, 46,216, 77,123,188,246,221,111,225, 27,223,126, 19, 53, 23,100, 20,220,187,125, 7,
+ 39,167, 87,240,139, 31,253, 12,239,124,240, 46, 94,249,234, 87,112,229,248, 10, 30,124,252, 17,174,221,184,134,151,191,252, 50,
+174, 28, 95,193,227,243,115,252,211,247,255, 9, 63,248,254,143,241,218,235, 47,225,245, 55,190,137,221, 52,227, 87,191,250, 45,
+158,156,157, 35,174, 70,212,202,216,207, 51,114,222,105, 20, 51,148, 15, 29, 98, 68, 68,210,104, 64,206, 86,237,233,168,170, 66,
+144,170,117,132,141,177, 46,198, 47,134,145,229,244, 50, 83,209,121,176,203,157, 33, 69, 15,192,198, 43,150, 10, 98, 96,222, 87,
+236, 87, 25,227,160,184,220, 90, 67, 3,171, 8, 5,132,200,109, 84, 23, 99,178,182,217,134,249,226,153,221, 0, 87, 66, 45,177,
+145,164, 66,176, 44,117,187, 20,117, 51, 98, 99, 81,183,232, 20, 6,211,220,114,217,131, 7, 92,112, 65,136, 38,174, 17, 55,130,
+176,118,127,110,101,106,244,178, 69, 87, 98,241,139,158,117, 93, 77, 25, 27, 14,242,210, 28,111,234, 27, 60, 2, 69,219, 9, 90,
+ 84,176, 8,186,241, 30,135,116, 43, 63, 0,251,193, 46,205,173,209, 99, 26,235, 34,168,161, 95,230, 68, 94,132,218,133,106, 35,
+207,212, 8,122,150, 98, 98,121,243,100, 27, 70,200, 33, 63,187,143, 43,123,130,149,171,251,170, 20, 72, 29,116,220,175,173,104,
+ 79, 64,131,125, 95,108,149,192, 22,228, 81,107,134,148,172, 99,115, 98,173,254,115, 70,172, 35, 66, 42,136,148,140,105,208,125,
+221, 66,220,167, 66,110,167, 42,217,194, 65, 50,184,100,192,246,242,117, 46,200,101, 15,206, 69,247,127, 38,192,129,173,183,242,
+156, 53,152,194,226, 65, 91,182,187,241,211,137,250, 45, 45,203, 61,164,253,253,208,236,173,125, 4, 75, 85,154, 80, 49,165,100,
+135,191, 9, 42, 23, 35,104,178, 78,156,160,176, 20, 35,187,162,154,112, 16, 78,217, 19,252,255, 94,236,203, 76,247,150, 46,183,
+176, 31,246,209,184,244, 93, 59,197,246,122,120, 65,107, 11,162, 44,254,182,222,240,194,171, 86,240, 34,163,251, 32,169,176, 29,
+166,125, 26,176,188, 88, 93, 68, 71,238,187,231, 67,124,177,155, 48, 43,116,141, 66, 69, 39, 65, 69,150,197,133,173, 47,200, 86,
+ 32,173,240, 21, 19,222,165,230,213,111,207,170,131,212,154,127, 94,243, 42,162,135,214,160, 71,218,182,213,131,105, 91, 92, 68,
+107, 95, 18,156, 93,236,177,221,103, 76,185,218, 37,165, 3,164, 16,163,117,199, 61,152,168,218,135, 56,164,161,165, 43,194,146,
+212, 52,184,138,112,113,113,129, 60,101, 93,255,144, 32,174, 70, 12, 67, 50,157,143,218, 74,107, 41, 40,185,104,214, 56, 91, 99,
+ 73,131,190, 31, 81, 15,224,113, 88, 31,146,223,216, 39,206, 38, 89,103, 19,168,182, 72,218, 62,117,108,124, 71,115, 92,109, 78,
+142,117,204, 47,192,122,189,105, 34,208,178,103,112, 74, 88, 31, 29, 3,129,113,190, 59,195,106, 28,177, 90,109,112,113,246, 24,
+185,204,250,177,178, 96,202,123, 12,195, 0,150,128, 41, 23,108,247, 58, 49,163, 32,216,172, 79, 81, 1, 92, 94,158,227,241,231,
+159,169,189,119,214,102,208,137,146,221,237, 64, 40, 96,212, 64,168,166,133, 74,108, 20,130,198,211,142, 98, 7, 67,247,236, 57,
+232, 67,200, 17,139,164,214, 42,169,208, 43, 92, 49,175,186,127, 15,125,237, 98, 28,228,176, 36,105, 57,169, 42,104,220,225, 46,
+ 79, 96, 34,236,171, 89,153,172,171,228, 82,205,190,163,223, 1,120,104, 69, 85, 27,194,249,229, 37,110,222,185,137,191,253,246,
+183,112,227,206, 45,156, 95, 92, 98,115,180,198,139, 47,126, 5, 82, 50,254,199,255,243, 3, 60, 58,123,140,215,190,249, 6, 2,
+ 17,158,158,157,225,149,175,188,130, 59,119,239,128, 64,248,232,193,135,248,111,255,245,191,227, 79,111,255, 30,127,255,159,191,
+133,231, 95,124, 1, 31, 63,248, 4,239,188,247, 23, 48, 24,235,205, 49,230,185, 96, 63, 93,162,148,140, 24, 34, 10,103, 48,128,
+ 68, 17, 49,196, 70,255,137, 8,150,122,102, 25,206, 6,231,113, 32, 73,117,149, 9, 17,214,195,128,204,147, 86,226,230, 65, 85,
+ 31, 56, 48, 75, 65, 52, 24,137, 51,201,217, 86, 14, 44,140,221, 62,227,104,149, 80, 66, 64, 46,140, 58, 48,184, 18,226, 16,204,
+ 71,171,170, 89,142, 21, 44, 65,127, 47, 27,165,106,215,239,159, 33,155, 88, 38,116, 84,172,137,189,116, 87,108,163, 41,104,247,
+199, 92, 77,196,148, 20,174,195, 26,114,162,158, 88,235, 28, 22, 74,244,234, 74,117, 34, 4,161,206,127, 55,151, 69,136, 29, 81,
+202, 22, 90, 65, 70,140, 35,177, 75, 41,120,151,207, 7,227,199, 54,201,247,108,231,190,136,182,103, 36,244, 0, 21,102, 83, 80,
+119,209, 88,104,151, 46, 26,145,172, 31,226,157,168,168,121, 42,125, 48, 31,220, 62,103,227, 83, 47, 72, 14,160, 36, 7,202,234,
+ 78,235,107,218,117, 19, 48,166, 64,144, 90, 80,115, 70,178,176, 33,177,130, 17,166, 95, 0,107,193, 87, 89, 3, 32,184, 22,176,
+117,201,234, 49,158,155,195, 34,212, 25, 41,141,168, 33, 32,134, 81, 59,194, 5,194,211,187,116, 95, 85,148,154, 85,183, 82, 51,
+196,126,118, 41, 25,156, 51,114,221, 67, 50, 35, 23,237,204,165, 48, 10,171,119,220,247,163, 92,139,193, 51, 12, 82,101,154, 5,
+ 50,149,187,176,134,121,224, 96,143, 75,205,145,161,193, 53,174,177,208,196,193, 24,163, 89, 82, 5,148, 52,215, 30, 30,116,211,
+ 18,195, 58, 50, 55,132, 94,212,233,122,207,180, 64, 20,190, 48,106, 95,146,224,218,193, 78, 70,143, 35,117,220,144,137, 65,221,
+246, 5,207,253,118,109,134,209, 19,169,237,143,185,165,121,185,175,220,185, 9,169,229, 26,117,159,127, 83,226,179, 40,237,176,
+ 93,236, 11, 59, 27,245,216,210, 94, 32, 46,212,234, 49,180,110, 78, 22,194, 80,161,142,241,101,211,126,192,215, 71,132, 5, 21,
+144, 90, 49,237, 84, 62,135,208, 4, 19, 40, 54, 12, 67,101, 84,191, 0,205,138,218,252,212, 30, 48, 42,210,132,191,204,130,237,
+ 60,227, 98, 59, 97,158,212,151,238,144, 21,231, 40,176,148,150,197,224,255,238, 20, 35, 98, 10, 11,129,116, 47,128,106,214, 32,
+147, 46,116, 20,172,215,107,211, 50, 25,250,153,124,119, 95,144,109,132, 29,141,140, 23, 99,196,144,162,174,125, 83,106,211,142,
+234, 9,137, 45,134, 89,139,126,198,225,251, 36,206,152, 8,218,112, 68,211,140,109, 54,107,228, 82,145,167, 9,227, 48,128,146,
+133, 11,149,138,184,222,224,232,234, 85,148, 90,112,249,244, 2,183,239,220,209,201,243, 60,105, 35, 42,250,251, 78,211, 14, 39,
+199, 87,192,149,177,219, 79,152, 38, 45,174,143,214, 9, 71, 71, 27, 48, 11,206,206,207,112,126,118,142,213,122,141, 42,192,148,
+171, 77, 52,105,145,241, 14,157,136, 44, 34,145,147,238,117,177,176, 57,105, 54, 57, 72,227, 83,201, 48,149,193,131, 19, 26,113,
+ 9,173,187,140,182, 28, 83, 28, 98, 69, 74,209, 46, 14,244,238,196, 49,147,150, 86, 69, 33, 98,102,198,118,158,213, 84, 95, 5,
+ 89, 96,234, 72, 63, 56, 92,144,103,233, 94, 84, 49,213,138,237,110,143,219,119,239,226, 59,223,251, 14,214,227, 26,143, 30, 63,
+193,213,235,215,241,226,203,207,227,193, 95, 62,194, 79,126,252, 83,172,143,143,240,250,155,111,162, 50, 16, 36,224,171,175,126,
+ 21,155,147, 99, 92,156,159,225,227, 15, 63,196,207,126,250,175,184,120,250, 20,127,255, 15,127,135,163,213, 9,222,250,205, 91,
+120,240,241,167, 88, 31, 29, 35, 14, 27,228, 92,176,223,239, 81,242,132, 33,106,218,156, 24,199, 60,217,120,151,217, 56,224,232,
+ 94, 70, 54,219, 74, 72, 85, 47, 59,152, 45,202,163,248, 98, 68, 10, 1,243,194,159,233,190,198,226,151,109,176,139,207,118, 81,
+108, 20,178,105, 82,228,226,152,180, 83, 42, 85, 9,110,163,231,133,179, 64, 11,241, 30,240,224,136, 85, 49,124,169,226, 56, 51,
+210,160, 39,170, 22,108,177,117,170,234,231,236,112,144,118,105, 45, 58, 98,211,244,216, 69, 22,205, 50,194, 11,242,181,250,141,
+137,185,217,104,136, 14,115,150, 27,131,156, 61,184, 2,205, 11, 30, 22,158,242, 62, 46,151, 3,219, 90,112,181, 62, 63, 67,168,
+ 91,140, 6, 97, 62,216,176, 16,179,181,145,157,141,209, 27,123,125,153, 31,190, 60,224,101, 49,254, 95,224, 98,141, 39,217,105,
+ 96,212, 47,238,229,104,211,119,119, 98,234, 95, 61, 84,117,109, 81,114,198, 80, 51,106, 77,182,175, 45,224, 98,107, 19,174, 77,
+ 8, 83,235,172,107,175,172,157, 50,215, 10, 46,179,237,153, 35, 66,141,168, 49,131, 34, 33,210, 96, 23, 98,112,199,125, 23,192,
+178,152,230,163,152, 64,174, 64,138, 42,241,115,153, 81,203,140, 82, 38,189,212,171, 42,223, 81, 24, 69,170, 2, 66, 74,109, 73,
+103, 66,253,125,110, 86, 44, 80, 23,102, 45, 48,156, 68, 93, 33,206, 96,187,216,169,173, 91, 82, 74, 22,178, 97,153,211, 49, 54,
+160, 74, 31,157, 7,123,126,197,198,200,177,107, 34,252,223,177,120,110,104, 81,172, 45, 25, 5,203,188,117, 89,172, 90,184,101,
+102,163, 79,128,252,192,119,148,174, 55, 46,222,185, 22,209,209,171, 77,129, 98,208, 29,124, 11,146, 97, 58,200,168,175,139,125,
+237,129,135,223,225, 13,100, 93, 33,117, 39,133, 79, 87, 60, 32,199,115, 20,132,236,179,172, 11,148,173, 56, 91,194,236,153,132,
+230, 71,119,228,115, 79, 81,139,157,206,215,244, 39, 90,108,136,137, 33,253,103,247, 88,213,158,203,208,127, 55,216,154, 81,112,
+185,157, 85,245,158,171, 62,199,237,187, 29, 26,163,161, 77,207,236,210, 76,163,101,155,147, 11, 33,209, 96, 79,243, 62,107,193,
+100, 69,248, 48, 68,172,199,149,193,197, 52,103,130,171,198, 79,151,202,106, 27, 52,183, 68,136,201, 8,142,214, 84,198,208,178,
+ 36,220,170,233,201,151, 30, 55,236, 98,222, 30, 7,219,223,155,104, 24,229, 52, 12, 24, 82,196, 60, 11,230,221, 78,215, 93, 5,
+200, 53, 99,174, 25, 55,143, 79,176, 89,173,177,191,188,196,126,119,137,245,122,173,223, 89, 19,160,238,246,123,181,236, 22,195,
+ 38, 23,193,126, 55,129,115,134,144, 96,117,124,213,114, 55, 4,151,151,187,214, 8,151,170,147,115,137,132,234,150,212,150, 31,
+ 34,141,202, 72, 32, 36,207,103, 37,219,201,133, 20, 65, 49, 53,166,125,242,232,187, 16,123,149, 90,179, 94, 88,162,233, 77, 74,
+ 94, 58,140,102,116,224,134, 84,119,219,246,106,175, 2, 45,128, 98, 95, 25,163,125,241, 74, 72, 90,117, 20,221,243,129, 11,168,
+ 84, 68, 83,201, 78,147, 2,252,191,249,173,111,225,229, 87,191,134,105,127,137,207,159, 60,193,205, 91,183,112,237,230, 77,252,
+242,103,191,198,175,127,245, 43,124,249,197, 87,112,227,185,155,224, 64,184,126,253, 42,238,220,185,141,185, 8, 62,250,224, 1,
+ 62,249,232, 99,252,250, 87,191, 1, 64,248, 15,127,251, 55,216,110,247,248,205,175,127,139, 71, 15, 31, 97,115,229, 20, 68, 1,
+251, 73,243,167, 75, 41, 10,206, 97, 15, 4, 81,130, 15, 91, 92,101,176, 7,189,239,101,245,205, 46,208,248, 89,161,174, 44,119,
+ 98, 83,133, 96,136,177,241,200, 17,186,197,136,133,192, 81,143,226, 24, 52, 66,149,205,148,196, 85, 69, 40,211,196, 88,143,140,
+ 42, 64, 46, 9, 20, 24, 97,237,193, 8, 21,196, 10,244,168, 22,185, 26, 61, 89, 77,250, 40,222,194,166,245,159,197, 96, 5, 65,
+135,173,196,152,140, 50,214, 57,219, 62, 22,141, 22, 81,233, 17,138,137, 72,145,171,208, 10, 89, 47,205, 78, 55, 67, 3,182, 4,
+ 43,240,212,155, 31,162,166,140,193, 18, 2,123,160,201, 51, 97, 28,149, 1,100, 11, 52, 89,248,139, 97, 15,168,215,215,236,194,
+172,158,174, 85, 93,220,121,224, 85,246,248, 87,149,109,146,237,205,201, 10, 35,183,120,181,244,172,216,165, 84,203,176, 16,113,
+219,219, 51, 93, 97, 12,125, 71,234, 65, 34,109,125, 37,198,159, 30, 54,136,171, 35,204, 23, 79, 80,242, 30, 20, 34, 50,235,159,
+ 9, 49,234,136,174, 86,237,224, 43, 91, 55,157,145,115, 6,138, 50, 24,234, 60,169, 31, 23, 2, 10, 17,113, 88,235,148, 39, 6,
+237, 74,104,112,216,174, 77,103,208, 58, 20, 24, 36,165,150,220, 10, 5, 31,239,115, 45,138,245,204,213, 85, 80,173,144,111, 73,
+112, 6, 84, 41,190,191, 76,212,223, 19, 67,148,182,189, 52, 45,158, 35, 43,140,171,104, 49, 26,131, 78,147, 66,140,136,163,226,
+168, 75, 41, 24,135, 1,227,122,236, 35, 84,187,200,106, 53,193,164,232, 42,142,188,160,230,106, 54,159,120, 16,242, 3,170,118,
+ 38,135,131, 80,150,150,209, 78,221, 41, 33, 22, 58, 3, 91, 3, 85, 94,152,183, 4, 45,228, 70, 89, 10,116,112, 41,123, 92,175,
+ 61,149, 13, 76,115, 56,161,232,227,119,197, 1,179, 21,149,210, 16,169, 97,161,190, 6,122,131,227,185,233, 32,139, 81, 94, 88,
+227,150,211, 33,181, 38, 42,244,105,145,148,180,200, 94,192, 51, 65, 44,135,110,115, 10,125, 95,219, 24, 5, 65,237,130, 14, 70,
+241, 78, 58, 8, 58, 86,182, 22,228,185,224,236, 98,194,118,158, 49, 23,177, 81, 56,183,180,188,106, 93,186,152,136,182,218,244,
+143,156,189,111,227,109, 69,198, 2, 57,103, 21,143, 53,171, 43, 99,181, 58,194, 24, 35,118, 69,159,189, 33, 13,106,189, 44,106,
+ 37,246,177,190,127,174,254,220,141,126, 17, 79,185, 33,116, 61,175, 64,216,195,146,208,168,141, 62, 73,246,191, 69, 16, 5,177,
+ 37,125, 78, 83, 74,184,188,216,107, 90,155,169,240, 11, 51, 46, 37,227,249,213, 26,235,180,198,231,103, 31, 65,132, 48,174,142,
+ 80,171,106, 81,106, 45, 38,230, 99, 93,175, 66, 47,235, 50,101, 20,154, 81, 10,227,244,232, 42,198, 24, 80,230,138,179,203, 45,
+ 36,168, 32,144, 91,113,168,153, 20,238, 44,107, 25, 3, 66,205, 6,156, 60, 64,195,177,160,128,168, 34,215,246,115, 33, 36,253,
+ 2,166,100, 95,136,210,198,182,122,217, 39, 83,184, 75,171,192,225,157,172, 8, 40,233,114, 63,196,164, 95, 70,219, 33, 83,112,
+208,140,250,176,105, 8, 38, 36, 1,138, 3,113,170, 38,211,138,117, 13,119,158,127, 1,183, 94,122, 30,171,205, 10, 79, 31, 62,
+196, 56,174,240,210,151, 95, 65, 92, 39,252,235,143,126,134, 15, 63,248, 11,190,246,218,125, 28, 31,159, 98,220,172,113,227,230,
+117,220,188,121, 19,143, 31,125,142,143, 63,254, 12,159, 61,122,136,119,223,123, 7,155, 43, 27,124,249,185, 23,241,233, 7,143,
+240,254,159,223,198,118, 59,225,248,202, 53, 84, 82, 11, 65,174, 5, 9, 1, 3, 17,102, 6,178, 17,216,162,161, 52, 53,245,204,
+ 84,190,161, 90, 40, 65,135, 97,212, 82, 80, 13,116, 32,139, 17,156,143,174, 98,138, 8,181, 52, 11,131, 64, 43, 79, 4,173,190,
+ 99, 12, 6,224, 80,193,152, 24,108,164, 50, 99, 55,205, 88,175, 35,134, 4, 76,161, 32, 14,250,224, 6, 97,131, 99, 84, 13,128,
+168, 21, 28, 66,139,196,172,108,136, 68,219,179,115, 37, 21,128,164,103,124,216,206,212, 94,120,119, 21, 25,201, 86, 25,219,151,
+ 49,116,181,191, 78, 44,156,185,205, 45,108,132, 22, 93, 19, 91,209,208,216,245,162, 2, 75,103, 24,104, 49,208, 71,154,109,191,
+ 73,138, 9,165, 64, 7,249,231,135, 2,186, 30, 92, 18,162, 9,183,152, 16,216, 72,115, 11,197,240, 33,236,198, 46,220, 72,109,
+130,224, 2, 66,255, 98, 7, 75, 32, 19,246, 21,135, 52,133, 57,168,186,242,173,205, 45,157, 43, 47, 54,169,128,116,181,191, 90,
+143, 8, 33, 38, 12,235, 21, 30, 63, 58, 67,216,174, 17,106, 4, 86, 5, 41,142, 96,202, 10,123,178, 14,165,214,172,148,176,121,
+ 70,173, 51,192, 5,211, 60,163,238, 39,245,186,219, 52, 35,198, 29, 98, 36,196,113,196, 48,172,244, 2,118,213,188, 79, 72,170,
+ 93,198,134,230,204,101, 70,157, 38,148,156,173,131,207,237,243,236, 58, 11,173,206, 61,224,162,100,183,197, 73, 75,235, 19,223,
+ 69,138,119, 91, 38, 88, 36, 90,128,136, 24,136,100,251, 71,183,166,217,254,115, 84,235,145,242, 23,200, 18, 23, 53, 50, 19, 66,
+ 77,220,180, 12,114, 9, 44,232,226,109, 27,199, 51, 14, 57,229,194, 29, 85, 99,103,147, 82,235,106,179,105,130,124, 68, 29,192,
+149, 90, 56, 18, 14,132,149, 11, 53,180,141,109,131, 61,223,234,191, 14,170,195, 16,110,251,109, 89,140,198, 5,212,210,233,218,
+118,128, 23, 99,119, 54, 96,151, 61, 67, 36,157, 76, 24, 40, 44, 4,196,102, 99, 98, 67,201, 46, 44,111,213,247,238, 33, 54,244,
+236, 65,164,176, 79,217, 40, 52, 81, 40, 57, 14, 25,174,150, 39, 91,163, 4, 91, 9, 85,112, 85, 64, 85, 11,147, 55,124,108,251,
+110,219,244,100,191,207,184,216,238, 49,207,122,225, 22, 86,162, 97, 3,194, 26,128,201,167,182, 44,130, 24,147, 93,194,221,225,
+ 1, 97,219,145,103,237,236, 61,208, 37, 70,164,205, 26, 57, 0, 50, 91,135, 10, 19,110, 26, 31,164,159, 9,250,217, 68,155, 12,
+197, 97, 84,113, 48,102,157, 46, 87, 89,100,207, 75, 11,244, 17,255, 61,154, 77,215,108,126, 54,181, 36, 0,171,205, 6, 20, 19,
+230,124,137, 52, 36, 12,163,226,208,107,158, 65, 66,184,114,114, 21,165,206,216,238,118, 24,215, 35, 86, 70,146, 19,209,233,151,
+ 58, 75, 50,144, 2, 10, 9,234,180, 67,101,193, 64, 35, 66, 96,156,158, 94, 1, 34,176,219,205,120,252,228, 49,210,144, 32,201,
+ 52, 76,208,169, 6,147, 59, 68, 84,223,229,150,198, 38, 10,108,163, 16,247,178, 22,125, 64,146, 0, 17, 35,106, 48,248, 65, 76,
+122,185,126,193, 36,178, 80, 92, 55,111,175,237, 6,171, 65, 55, 22, 98, 23, 87,202, 6,139,196,131,117, 79,181,234, 8,161, 64,
+169, 85, 82,245,225, 42,121,198,201,102,133,219, 95,121, 5, 55,111,222,196,147,179,167,120,240,224, 67,220,185,241, 28,238,190,
+252, 37, 92, 62,126,130,127,249,254,143, 80,171,224,165,175,125, 13,155,245,136, 43,215,175,224,185,231,239,130,136,240,238,187,
+239,226,179,135,143, 49, 77, 91,124,244,224, 1, 78,142,175,224,202,213,171,248,211,187,239,225,179,135,143,148, 14,116, 50,224,
+114,159, 49,229, 12, 46,186, 14, 24, 34,161,148, 46,104, 73, 4, 80, 76,168,182, 51,215,185, 44, 31, 84,214,203,202, 92,121,210,
+116,240,126,113, 27,141, 41,147,152, 57,183,164,179, 2, 81, 11, 15,227,128, 49,221,113,165,218, 25,238,231,130,237, 92,176, 94,
+173, 80, 43,154,205,136, 49, 32, 46, 60,179,176, 75,133,176,164,162, 85,245,147, 47,212,241, 46,107,141, 65, 45,108,126, 82, 30,
+168,112, 77, 57,235,118,171,224,169, 78,118,153,213, 90,129,216, 71,213, 8,130,128,212,161, 52,210,179,193, 53,147,154, 90, 32,
+141, 4, 45, 68, 92,228,131,166,164,230, 3, 58,156, 77,187, 13, 24,130, 62, 6, 53,193, 19, 25, 64,137,117, 33,216, 14, 80,157,
+ 48, 80, 15,117, 33, 90,172, 19,208,126,182,180, 32, 34, 19,151,145,251,249, 35, 32, 21, 18,120,225,147,118, 34,116,106, 16, 13,
+255,153,181, 17,252, 96,151,123,109,124,108,106, 10,219,136,213,233, 41, 4, 1,187,203,115, 16, 2, 2, 18, 48,112,239,106, 44,
+ 82,152,185, 90,165, 63,131,231,108, 21,127,197,148,247,168, 69, 5, 68, 42,254,219,183,226, 59,173,214, 88,173,214, 10, 80,109,
+171, 3,123, 63, 89,201,109, 82, 43,114,157, 81,231,185,249,214, 75,241, 93,185,135,225, 4, 32, 36, 4, 4,229,117, 27, 91, 65,
+172,211, 38, 16,106, 0,170,179, 25,192,166, 57,162, 70, 35, 43,214,153, 17, 41,226, 52, 26, 70, 86,195, 40, 34,194, 16,221,232,
+170,182,186, 24, 17,211,168, 81,201, 76, 29, 81,122, 48, 45,137,205,130,212,186,229, 86, 60, 30, 94,170, 90,224, 45, 49,193,104,
+249,221, 93,212,216, 49,181,125,205,114,216, 89,131,186, 24, 83, 37, 31,138, 20,173,165,168, 69, 55, 4, 77, 83,124,118,212, 15,
+ 91, 49,121, 23,233,212, 72,135,134, 52,223, 4,154,179,228,176,112,133,229, 5,112,139,203,149,182, 71,231, 3,114, 94, 79,240,
+242,149, 83,104,231,243, 82, 9,142,254,181, 55,129,167,137, 56,237,125, 8,212,169,132,174, 31, 8,182,170, 35,113,119,130, 94,
+252, 62,166,191,220,237,177,155, 74,179,103,233,217,196,230,229, 95,190, 31,208, 72, 89, 44,162,155, 93,179, 5,160,212,162,240,
+ 25, 4,197,111,217, 26, 98, 24, 19,210,152,236,251,192,118, 68,216, 10,162, 20, 43,114, 66, 43,106, 34,117,142,125, 26,146, 58,
+178, 16, 26,162,219,159, 41, 57,240, 80, 44, 26, 25, 31,191,163, 54, 60,112,144,128,113, 84, 21, 89,201, 5,227,106,196, 48,174,
+ 80, 45,174, 58, 33,226,232,228, 20,121,154,177,155,119, 88,175,214, 24, 82, 66,206,123, 0,162,187,255, 82,144,231,220, 28, 45,
+ 58,154,215,162,114,179, 89,225,228,228, 84,133,116,187, 29,114,174, 10,183,137,161,217,155,153,196,220, 49,189,128,237,137,151,
+122,254, 37, 10,207,122, 59,185, 1, 17, 42, 50,104,136, 96,137,134,164, 52,242, 19,168, 39,252,144,134, 37, 52, 17, 6, 45, 70,
+ 80,118,248, 38, 19, 26,136,197, 76,122,220, 97,130,118,191, 51, 50,180,208,138, 46,176,215,220,234,129,112,231,206, 11,184,117,
+231, 22, 88, 24,127,121,240, 17,106,174,120,225,249,151,112,251,206,109,252,229,157,247,240,135,223,255, 14,155,147, 19, 92,187,
+121, 11, 49, 69,220,120,238, 54,238,221,123, 14, 79, 31,159,225,157, 63,190,139,203,237,165,237, 39,182,184,126,227, 42,246,151,
+ 5, 63,251,209, 47, 49,205,151,184,121,227, 22, 16, 34,246,151, 59,108,119, 91, 84,102,140, 16, 11,171, 39, 20, 18,112, 0, 70,
+178,189,177,173, 21,230, 58,183,170, 86, 72, 59,247, 32,253,203,230,225, 45, 68,220, 17,138, 11,166, 37,155,216,193, 63,144,106,
+ 21,173, 3, 9, 14,184,215,172,221,115,176,112,149,156, 11,166,125,198,180, 30, 49, 88,254,114,182,252,117, 10, 85,213,236,177,
+ 23,105, 1,140, 96,137, 78,168,140, 0, 6, 69,238, 89,230,210, 59,113,229, 27,119,235, 24,232,153, 35,198, 3,100, 64,138, 19,
+ 37, 23,204,113, 35,207,181, 11, 13,213, 68,114,100,202, 90,106,129, 53, 96, 77, 51,163,102,127, 82,213,106, 76, 22,168,210, 80,
+174,157, 83, 29,150,201,105,188,240,112, 83, 19,204, 31,192, 44,220,190,226,158,104, 22,229, 54,135,228,163, 83, 58,200,163,238,
+ 11,181,208,197, 86,206, 54, 15, 48, 42,213,194, 91,188,252,111,212, 53, 41,178, 16, 57, 53,178,157, 31, 20, 6,224, 0, 10,210,
+234, 8, 39, 87,174,227,241, 39, 31,106,193,147, 19,234, 48, 33,166,164,233, 81,165, 66, 68, 43,251,106, 81,173,243, 52,169, 64,
+ 39, 23,228,170, 22, 30,170, 21,194, 74,100,244, 4,170, 52, 77,200,163, 38, 19, 82, 74,240, 64,186,101,225,206, 98, 22,156,105,
+ 6,115,213, 85, 79,173, 38,130,178,231,145, 18,168, 22,204,101, 97, 8, 20,219, 19, 88,193,199,140, 22,236, 33,164, 59, 89,130,
+142, 11,117,186,164,107,132, 33, 18, 34, 6,200, 72, 8,182, 51, 76, 33, 42, 88,202, 98,157, 5,140, 33,173,144,210,208,246,170,
+126,236, 7,231,228,187,181,138,208, 87, 60, 8,234, 34, 49,117,178, 35, 86,251,132,153, 26,107,163, 9,230, 14, 98,119,121, 81,
+152,123, 49,135,198, 34, 0, 69,117, 43,176,244, 53,130,116,152, 12,140, 72,230, 5, 69,117,103,135,197,144, 74,224, 3,125,128,
+123,210,149, 6,167, 59,105, 95,225, 45,247,185,173,121,111,191, 99,104,221,246,129,128,206,212,220,213,231,197,238, 46, 88,136,
+226, 14, 83,234,168,217,145,237, 79,193, 99,227, 72,146, 21,130, 54, 97, 50, 29,148,123,189,157, 95, 87,196,160, 80,196,200,165,
+224,236, 98,135,221, 92, 49, 89,212,106,101,143, 84,213,187,160,143,188,245,251,156,146,242,211, 37,244,130,172,150, 10,201,230,
+227,134, 58, 12,128,170, 2,185,205, 90,155,188, 89, 97, 43,129,130, 62,199, 85,192,153, 15,186,116, 44,116, 48, 49, 70, 12,131,
+198,133,235,179, 95,251,180,205,109,189,180, 8, 85, 33,210,130,245, 32, 63,190,139, 9,211, 16, 21, 25, 92, 11, 54, 71, 27,144,
+169,239,115,158,177, 26,181,152,190,184,124,138, 58, 79,184,114,235, 10,134, 97,192,110,183,211,134, 85, 4,147,129,120, 98, 28,
+ 0, 9,200, 60,183,215,179, 62,222, 96,179, 94, 65,152,240,228,252, 41,170,148, 78,171, 51,187, 56,215,126,238, 53,168,146, 61,
+ 71,108,103,105,114,177, 10,185, 26,219, 95,128, 89, 56, 10,164, 85, 57,176,208, 7,207,136, 38, 35,242, 68,234, 66,161, 96, 35,
+174, 96,149,220,210, 27, 28,130,238, 65, 83, 12,154, 46, 3, 66,102,133, 93,192, 15, 76,102, 4, 41, 56,190,118,138,187,215,174,
+227,228,248, 20,143,159, 60,198,167,159,127,142,211,147, 99,220,123,254, 69,164, 20,240,251,223,252, 14, 15, 31,126,130, 91,207,
+221,193,234,232, 8,235,163, 99, 60,255,226, 93,156,158, 94,197,123,127,122, 31,127,248,183,183, 48,172,142, 48,174, 3,118,251,
+ 61, 82,140,120,248,241, 67,252,225, 15,239,160,214,138,211, 43,167,168, 34,216,239,247,216,237,182, 10,195,167, 69,202, 17,235,
+ 3,146,162,134,109, 80, 8,150,102,103,227,107,144, 81,155, 22, 34,148,202, 13, 58, 81,165, 26,193, 44, 44, 6,121,178,168, 6,
+ 73,163, 99,161,176, 29,177, 48,129,118,180, 84,105,158,102,230,210, 34, 77,107,101, 76, 83,193, 52,101,172, 99, 64,169, 81,171,
+101,174, 96,142, 42, 12, 99,181,133,176,180, 65,153,190, 6,239,118, 32,202, 4,151,128, 72, 5,137,135,142,137,173,104, 7, 16,
+183,160,138, 37,137,171,127,225, 15,249,255,232,164, 53,223,247, 45, 67, 33,108,124,174, 13,118,213,236, 99, 44, 98, 45,163,114,
+228,149, 23,223,128,242, 7,150, 32,219,238,182, 17,189,152, 40, 75, 69,148,220, 35,127, 67,119, 34,183, 0, 16,135,126,176,167,
+146,117, 69, 50,123, 50, 19,185, 13,208, 20,190,190,171,149,104,133, 43, 31, 76, 14,104, 81, 21,245,110, 49, 52,203,214,146,220,
+229,151, 64, 52, 18, 84,140, 1,215,175,223,197,167, 15,222,197,229,197, 99,172,214,107,240,156, 53,207, 58,160, 1, 42,106,173,
+200,165,162,228, 25, 37,235, 62,125,218,103,221,103,107,130,134,253, 30,154, 71,174,211,173,162,227,250, 33, 35,173, 87, 72, 49,
+ 88,122,156, 52,116,109,169,186, 79, 47,165, 52,170, 28, 22,155, 9,102, 65,174,185,233, 72,180,248,172, 29,235,215,232,146, 42,
+124,117, 18, 91, 35,113,241, 34,243,187,193, 86, 2, 40,169,115, 36,165,164,133,126,213,213, 22,151,172, 16,155, 52, 24,178,211,
+124,204,212, 51, 12, 90,126, 58, 5,171,193,156,186,104,130, 82,207, 68, 55,171,148,174, 15, 67,235,106, 61,120, 37,132, 8,225,
+ 98, 26,160,208,255,153, 5, 37,184, 33,108,201, 82,197, 26, 20, 72, 47,101,152,236,145, 66,128,112,105,118,180,229,168,219,243,
+184, 9,157, 46, 87,159, 1,191,148,131,212, 66, 28,236,203,253, 61, 13, 33,124, 33,253,239, 89,160, 14,183,128, 24,215,140, 72,
+ 3,200,248,250, 98,105,233, 11, 33,180,241,118, 27,139,247, 32, 84,125,159, 90,234,147,235, 97, 44, 21,175,150,182,170, 98, 17,
+ 92,236, 39,108,183,123,236,247, 51,114, 86, 54,135,107, 18,200, 38,114,174, 47,105,153,243, 49, 26,100,203, 10, 15,155,212, 72,
+ 99,120, 88, 19,200,192, 56, 36, 12,227, 96,142, 13,105,175, 77,117, 33,181,143,222, 45, 35,192, 87,124,148,200, 68,152, 73,247,
+207,182, 90, 98,111,158,128, 5,129,179, 51,238,151,107, 72,167,173, 42, 18,153,145,134, 81,163,128,165,224,120,125,212, 86, 37,
+243,156,241,220,221,231, 17, 82,194,118,187, 5, 40, 96,189, 62, 2, 48,160,148,138,148, 6, 92,238,247,170,137, 32, 49,223,188,
+106,118,226, 64,255, 31, 95,111, 30,117,107, 86,149,247, 62,171,121,155,189,247,215,157,166,234,208, 22, 32,189,160,130, 10, 10,
+210, 27, 41,108,144,144,136,193, 6, 52,168,177,185, 70, 99, 98, 12,247,218, 16, 53, 68,140, 13,234,189,106,140, 87, 4,177,215,
+ 32, 10,230,194,141, 32,222, 82, 1, 27, 16,132, 18, 4, 10,170, 63,253,249,250,189,223,247, 93,107,205,252, 49,231, 92,107,237,
+239, 28, 46, 99,156,193,168, 26,167,206,217,223,222,239, 94,107, 54,207,243,123,128, 22,216,217, 57, 13,223,118, 88,133,136,253,
+195,125,105,202, 92, 73,240, 83,251, 40,104, 13, 55, 12,249,252,147, 8, 35,189,149,145,142,149,131,198, 26,142,241, 84, 15,101,
+146,246, 51,171,239,212,146, 36, 36, 57, 35, 42,119, 67, 6,222,153,146,230,101, 84, 41,169,226, 39, 39,193, 38, 38, 83,183,162,
+ 1,166, 20, 49,197, 4,159, 8,173, 55,232, 23, 27,216, 56,179,131,157,237, 45,132,113,137,139, 23, 47, 98,181, 26,112,106,231,
+ 20, 54,119,182,113,245,218, 21,156,191,231, 94, 32, 2,103, 31,240, 0,116,243, 30,139,173, 77,156,189,249, 38, 56,235,240,145,
+ 15,221,142, 79,126,226,110,108,237,108,161,109, 27, 44,143, 15, 1, 2,238,190,243, 30,220,121,215,221,112,206,163,237, 58, 16,
+ 1, 71,199, 43, 76, 97,132, 1,161,245,124, 33, 70,121, 16,157,229,216,217, 33, 6, 86,215, 58,158, 34, 40,233, 41,149,121,173,
+248,102,133,101,110,144,179,197,179,170, 59,167,145, 81,181,127,230, 42,114,138, 1, 33, 73,206,180,181, 34,234,145, 56, 80, 81,
+162,103, 91,140,116,151, 83, 8, 88,173, 70,204, 91,135, 16, 12,198,113, 66,223,122, 89,212, 9,214,147,228, 11,108,213,218,229,
+100,124,158, 68,253,193,165,137, 85,188,164,252,107, 50, 18, 36,146,187,213,106, 61, 99,178,142,182, 10,129, 64, 30,237, 25,185,
+ 56,144, 43,116, 62,212,141,228,113,155, 92, 16,136, 37, 6, 42,130, 41, 33, 66,234,147,101,207,166, 47,153,233, 90,144, 16,178,
+ 82, 86,225,246,234,178, 32, 83, 81,198,170, 98, 64,167, 35,107,187,248, 90, 25,157, 59, 56,202, 98,161,164,129, 68, 86,131, 29,
+196, 25, 98,213,150, 73,107,170,121, 5,138,104, 7,196,239, 77, 92,223,227, 59,145, 97,201,133,209,111,157,194,246,153,155,113,
+233,222, 79, 2,105, 19,209, 77,156,209,233,121,138,146, 2,176, 90,141, 24, 70, 22,176,197, 24, 16, 40, 98, 28,163, 4,101, 72,
+ 34,158, 48, 16, 90,137, 30,142, 54,229, 12,246, 38, 77,104,125, 35, 35, 60,165,151,137,187, 36,196,236, 50, 33,177,165, 17,241,
+120, 52, 74,231,103, 44,119, 38, 38, 99, 52,149, 51,206,147, 11, 30,181,166,252,188,231,169, 56, 81, 21, 14,149, 50, 78,217, 69,
+209,224,168, 87, 88,176,207,227,241, 18,221,124, 14,231, 91,161,195, 69, 88,227,101,116, 95, 7,213,168, 95,172,250, 12,180,232,
+ 94, 11,154, 98,252,167,174, 8, 83,170,186,250,138,184,167,177,172, 44,238,148,228,172,234,192, 76, 18,177,171, 86,199,156,243,
+110,229,178, 76, 41, 7,160,232,119,194,171,230,200, 25, 20, 38,170,194, 93, 72,162, 62, 85,207,225,116, 47, 39,168, 90, 97, 88,
+164,148,149,230, 86,194,131, 40,208, 90,225, 90, 95,232, 60, 4,181, 21, 88,233, 6,138,255,138,245,174,186, 17,157, 70,164,138,
+ 73, 34,221, 85,182,157,234,121,136, 53, 17, 32,107,124, 66, 76, 56, 60, 90, 97, 57, 6,102,189, 11, 96,134,253,212,174, 76, 26,
+ 80, 94,143, 66,101,116,117,194,218,170,136, 56,133,210, 29, 39,130,186, 91,189,111,114,200, 77,134, 74, 69,101, 7,164,181, 28,
+ 1, 35, 9,135, 86, 46,120,223, 48, 85, 14, 33,101,139, 33,172,201, 5, 5,161,110,118, 76,245, 74,139,170, 34, 91,126,157,131,
+107, 60,140,115, 88, 29, 14,216, 56,181,193,175,125,136, 72, 4,116,253, 12, 99, 28,177, 26, 71, 24,235,209,117,115, 76,227,128,
+ 36,142,142, 52, 44,225,173, 65,242,220,241, 91,111, 97,131,131,107, 44,186,206, 99,123,107, 19,214, 25, 28, 29,143,216,219,189,
+186, 70,217,140, 40,159,115, 38, 31,202,106,148, 36,165, 77,207,102, 95, 60,229,149, 95, 81,190, 52,124,129,187,124,120, 70, 81,
+194,195, 54,114,193, 37,206,126, 38,192,154,148,201, 94, 80, 97,136, 84,248,148,225, 11,134, 89,228, 6,152,136, 47,203,144, 18,
+ 2, 89,108,205, 90,220,180,181,129,185,109, 16,195,132,189,171,187,216, 61,175, 37, 53, 32, 0, 0, 32, 0, 73, 68, 65, 84,216,
+135,137, 6, 27,243, 13,116,243, 30, 87, 47, 95,194,213,251, 47,160, 53, 6,179, 7,220,140,197,214, 6, 78,239,236, 96,235,212,
+ 41, 28, 44,143,240,143,183,127, 20,231,239,191, 15,231,206,221,140,190,235,176, 92, 45,113,229,242, 21,124,242,227,159,196,106,
+ 25,176,177,152,139,106, 60, 97, 90,141, 32, 50,232, 59, 15,227, 12,134,113,204, 48, 11,111,192, 17,166,134, 74,138,147, 8,176,
+ 52,216, 66,109,102,202, 1, 54, 34,102,168, 41, 83, 12,130,145,206, 77, 62, 12,189,160,157, 49, 44, 24,204,240, 19,181, 85,240,
+175,148,191,172,188, 91, 42,150, 20,126,136,135, 33,226,120, 53,161,239, 57,189,109, 12, 1,109,240,240, 38,130,156,250,211,197,
+139,235,164,107, 23, 64,140, 38,122,233, 72, 95,169,105, 92,161, 42,253,202,179,125, 70,125,180, 25, 32,152, 74,114,152, 41,135,
+ 8,219,132,144,201,116,122,216,240,112,207,179,162,150, 2,200,164,130,159, 84,110,184,181,197,246, 86,139, 10,171,144, 5,202,
+ 7, 55,139, 53,229,200, 17,207,166,140,211,100, 50,148,164,107,242, 78, 84, 6, 26,117,169, 86, 42,212, 30,103,147, 47,100, 77,
+117, 35,201,235,182,206,230,149,137,174, 36, 77, 29,122, 44,221,139,130,132,180,104,201,171, 22,249,103, 37,211,169, 23, 80,211,
+230, 76,215,226,204, 77, 15,199,222,181,203, 8,171, 37, 2, 13,128,111, 96,251, 30,198, 26, 4, 9,198,152, 38,238,204, 67,140,
+ 56, 88,174,176, 60, 94, 97, 26,121,156,207, 22,224,114,169,247, 77,135,190,111,224, 61, 23,145, 33, 37,206, 96,110, 44,219,114,
+ 36,114,210, 70, 98, 21,189,114,224, 5,170, 19,229,210,231,156,105, 3, 39,153,233,250, 62, 71, 0,211, 16,176, 26, 3, 86, 67,
+192,106,226,131, 93,167, 72, 49,134,188,115,159,181, 30,243,190, 67,219,200, 8, 56, 70,132,196, 7,191, 21, 87,140, 5, 33,140,
+ 3,239, 77,187, 25,188,239,242, 84,204, 86,186, 7, 77,188, 77, 36,209,241,196, 42,244,100,168, 32,139, 76, 57,158,145,131,142,
+226, 90,146, 24,151,115, 83, 78,104, 75, 18,102,147, 20,194,101, 66,246,105,131, 36,121,114, 77, 23, 35, 19,137, 20,185,216, 73,
+ 5,125, 28, 99, 16,122,153,231,117,130, 60, 79, 9,149,101,204,196,252, 29,178,206, 73,148,176,196,239, 86,157,163, 65, 29,150,
+ 85,186,123, 21,234,213,222,123,170,196,130,133,143,160,133,232,122,244,108, 9, 84, 42, 20,208,204, 33,169,237,136, 38,231, 15,
+162, 17,188,178,174, 30,146, 49,160, 16,216,115, 29, 35, 14,143, 6, 28,173, 34,166,137,173,101, 49, 22,112, 83, 82, 74, 16, 27,
+ 93,101, 69,196,152,213, 68,101, 42, 24,166, 32,103, 84,177, 20, 90, 36,120,103,185, 75, 79, 5,233, 10, 33,251,165, 72, 8, 33,
+173,133, 56,105,241,226,189,250,212, 27, 88,199, 99,251, 16, 70,192,248, 44,212,203,121, 10,217,243, 45, 54, 87,107, 5,159, 44,
+211, 27, 73,203,115, 77,207,192,152, 41, 97,117, 60, 98,243,108,195,231, 37, 17,156,111,209,247,115, 12,203,145,239, 62,103, 49,
+ 91,244, 24,167, 37, 12, 69, 41,192,217,201,101,188,129,245, 77, 21, 30, 99, 49,155,245,152,207,103,176, 0,142, 15,143,113,176,
+ 60,100, 85, 65,226, 53, 88,204,250,166, 19,212, 68, 20,171,184, 14, 68, 61,193,192, 70, 25,169,185, 74, 60, 36,209,135,222,187,
+138, 60,196, 48,112,170,220,143, 60, 50,230,212,176,236,175, 76,197, 77, 65,164,162, 5, 42,217,212, 85,196,223,188,109,113,118,
+163,195, 86,219,161, 5,176,187,183,135,227,163, 35, 12,199, 43, 88, 56, 52,109,139, 64, 1,123,247,159,199,242,224, 16,109,223,
+163,217,152,225,236,153, 51, 56,115,243, 89,120,111,112,254,252,121,220,121,199,157, 56, 58, 62,198,131, 31,248, 64,116,179, 22,
+ 87,174, 92,197,189,119,222,135,187, 62,117, 15,194, 56, 97,177,177, 1, 50, 14, 49, 5, 6,107,196,132, 89,207,127,239,209, 56,
+201, 72,134, 47,219, 70, 38, 22, 9,128,245, 46,219, 77,172, 1, 38,245,228, 70,161,226, 16, 9, 93,138,149,167, 41, 78,249, 0,
+ 34,226,223,150,170, 47,161,213,170, 74,104, 76, 36,171,230, 36,113,148,190,117,153,168, 71,153,252, 84,196,115, 60,254, 34, 70,
+199,142,132,213,152,208,119,196, 95,168, 38,160,245, 77,225, 71, 19,114,174,178, 90, 99, 18, 24,243,107, 33,105, 88,114,249, 91,
+ 83, 0, 48,201,122,120, 33, 80, 65, 99, 23,115, 80, 10, 95, 96,140,145, 52, 21,102,178,164,103, 49, 35,158, 11, 4,163, 22, 99,
+147,178, 85, 11, 68, 48,142, 83,255, 40,135, 78,164, 12,222, 33,201, 9, 48,180, 30,192, 97, 43, 50, 93, 81, 5, 23, 1,147, 19,
+ 43, 93,146,231, 53,214,216,208,170, 66,143,160, 98, 95,203, 93,153, 65,241,138, 88,144, 51, 72, 16,229,175, 41,241,164,124,177,
+215,208, 89,254, 25, 12,153, 53,193,214,186, 96, 42,229,137, 0,135,224, 80,134,149,206, 79,159,194,205, 15,122, 4,206,223,241,
+ 17,132, 97, 5,163, 41, 90,190,101,116,164,140, 12,167, 41,224,202,181, 3,220,127,109, 31,118, 42, 74, 93,111,141,192, 76, 56,
+108,194,153, 17,253,172,197,230,172,193,172,111,225, 28,201,251,200,207,181, 33,158,208,164, 24,185, 35, 39, 73,206,130,201,222,
+120, 29,199,102,210,153, 88, 24, 57,147, 97,196,193,209,128,227, 49, 96, 53,240,148, 45,196,136, 16, 18, 98,160,108, 37,243,214,
+161,105, 45,182, 22, 1,155,179, 22,125,239, 65, 6,104, 99,194,184, 90,129, 34,179, 17, 28, 37,132,229, 18,221,230, 38,124,223,
+ 51,120, 70,248,166,117,160, 73,129,253, 0, 78,222,235,104, 10, 70, 85, 69,153,154, 16,104,132,229,158, 32,137, 93, 21, 47, 62,
+196, 36,151, 29,171,250, 99, 82, 11, 20,229, 24, 91,146, 11,198, 18,114, 74, 29, 36, 86, 56, 85,196, 64, 83, 71,253, 74, 97,170,
+133, 77,190,156,101,157, 22, 41, 22,154,158,136,105,213,223,158, 39,122,178, 95, 55, 21,110,151,170, 73,132, 66,119, 82,162, 19,
+252, 4, 83,237,206, 83, 85, 84,150, 70, 75, 69,203,214, 49, 23,163,124,111, 81,196,205, 80, 66,159,203,157, 52,119,171,190, 96,
+106, 29, 64, 83, 66, 8,132,229,225,132,131, 35,158, 38, 77, 49,137, 51,168,186,172, 67, 42,129, 35,196,161, 42,206,185,204, 47,
+247,222, 75,179, 83, 5,149, 68,222,181,123,112,198,186,241, 60,101,212, 2,140,136, 65, 48, 12,160, 73,140,120,149, 16, 32, 67,
+236,255,230, 93,122, 35, 99,110, 69,222, 58,149,118,115, 49, 22, 75, 17,147, 68,132,171,107,184, 80,225,121, 89,224,200,132,189,
+166,235, 16, 98, 64,180, 9,173, 16, 71, 99,140,104,219, 25,250,217, 28, 71, 71,135,136,211,136,126, 99, 3,179,174,195,225,193,
+ 17, 23,120,214,194,131, 56,181, 88,167,178, 25, 46, 76,216,156,111, 96,163,157,129, 12,112,124,188, 47,250, 27,229, 97, 80, 78,
+217,203, 43, 3, 1,107,173, 9,180,229,249,243,236,157,229, 50, 44, 74,133,170, 52, 42,107, 40,175,134, 10, 64,163, 48, 53, 21,
+ 21,235,172,227,177,101,133,217,139,105, 2,169, 61,194, 36, 57, 96, 29,172,229, 11,161,237,122,244,141,195,188,117, 24,143, 6,
+ 28,238,237, 99, 76, 1,113,156, 16,134,128, 4,131,174,105,144, 92,196,241,222, 1, 86,171, 21,250,197, 28,243,205, 77,236,156,
+ 59,135,179,103, 78,227,224,240, 16,187, 87,175,224,226,249, 11, 32, 10,120,240,131,110,134,107, 29,238,188,227, 62,124,228,246,
+143,224, 96,111, 15,141,107,176, 88,116, 72,198, 96,156, 70, 68, 57, 96, 91,239, 49,107, 26, 89, 1, 4,238, 94, 44,131, 92,172,
+ 66, 39, 68,200, 23, 21,121,155,119,137, 50,110,211, 0, 14,121,232,189,141,136,162,252,189,110,245, 85, 91, 93,170,157, 22, 37,
+ 22, 18, 6,233,244,242,232, 23,154,236, 68,185,138,172,199,130, 33, 38,172,134, 1,199, 75,131, 69,231, 17, 91, 18,129, 74,226,
+241, 75, 34, 68,177,193, 89,147, 16,172, 65, 71, 6, 54, 8,253,200, 17,195,133, 20, 9, 12,159,133, 54,214, 70, 97, 10, 83,166,
+198,233,136, 91,175,213, 36,249,239, 42,126,169,107,199, 28,121,105,121,173,224,136, 56,245,139, 40,239, 59,121,121, 41,145,146,
+ 38,192,105, 55,168, 86, 31, 16, 18, 2, 11, 68, 36,131,253,186, 80,149,220,193,184, 92,244, 16,153,235,220, 8,218,229, 40,156,
+ 35, 73,226, 18,100,164,156,147, 12,172, 90,122,138,243,128, 52, 85,195, 22,182, 63,145,203, 83, 10, 85,213, 83,214, 12,208,154,
+247, 87, 63,107,205,232, 78, 38,229,228, 57, 3, 11,219,181,216,190,249, 22,140,203,125,236,222,123, 55, 59, 48,220, 4,138, 22,
+ 49,112,198, 64,138,132,213,114,196,249, 11, 7, 56, 88, 13,128, 66,137, 34, 59, 22, 92, 99,248, 18,237,121, 93,113,176, 12, 56,
+234, 18,118,182,182,208,247, 14,169,245,232, 26,199,212,112, 81, 13,135,192,170, 97, 50, 22, 49,129,129, 52,114,176, 58,219,200,
+197,170, 1, 75, 1, 49, 38, 28, 47, 71, 92,219, 63,194,193, 48, 97,156,128, 24, 13,199,240,138,165, 51, 38, 13,226,113, 24, 40,
+160,133, 3,204, 74, 50, 1, 26,244,125,131,193, 19, 64, 19,226,232,248,251, 77, 19,108,219,160,155,245,176,178, 79, 79,149, 54,
+131,133,190,162,190,231, 23, 7,152, 36, 94,248,146,101, 94,123,181, 53,142, 52, 74,120, 82, 74,148, 63, 75, 99, 10, 78,153, 85,
+226,190,178,253,149,194,153,177,150,204, 27, 79, 96, 4,167,250,200,189,216,251, 56,197, 46,173, 3,111,228, 25, 99,151,135,149,
+ 92,115, 41,164,212,155,173, 10,118, 93,215,153, 40,234,230, 26, 43,140,235, 68,151,181,211,198, 90, 46, 78,140,115,112, 39, 44,
+158, 26, 59,171, 23,119, 86,222, 87,180,189,162, 4, 45, 96, 41, 50,200, 66, 56, 99, 20,247,231,214,138, 84, 53,254, 68,153, 86,
+ 28, 28, 28, 99,185, 28, 49,140,145,159, 35,177,127,250,166, 40,254, 83, 18,157,149,118,233, 34, 14,230,143,179,138,176,173,244,
+ 4,214, 18, 26, 88, 73, 90, 51,160, 32,159,119, 36, 24, 47,220,133, 41,149, 60,116, 57, 35,180, 0,178,170,219,112, 14, 38, 19,
+251, 52, 23, 29,136, 6,156, 70,169,104,158, 58, 65,215,112,115, 83,118,234, 86,222,215, 6, 93,215, 96, 28,150, 8,227,132,198,
+ 55, 48, 6, 8, 33, 96, 54,219, 16,133,251, 10,209, 69,244,109,143,148, 60,134, 21,255,190,195,105,133, 49, 69, 25,255,107,145,
+162, 41,137, 9,253,124, 14,215,121,196, 97,196,242,248, 8,118, 54,227, 48,165, 24,197, 5,104, 10, 88, 75, 9,145,196,254,121,
+202, 96, 47, 89,111, 36, 98,113,141, 83,255,162, 45,121,185, 20,181, 67,143,121, 84, 97, 72,121,207, 90,141,169, 66,213,100,248,
+ 68, 25,151, 49,173,142,227, 22, 61, 26,103,209, 53, 14,190,235,208,180, 30, 49, 14,216,223,221,199,209,238, 62, 26,195, 8, 82,
+ 29,195, 52, 93,131, 48,142, 88, 30, 28,131,136,176,216,222,194,246,206, 14, 78,223,124, 22, 77, 55,199,197,251, 47,226,218,213,
+ 75,128, 1, 22, 27,115,204,186, 25,104,140,248,192,251, 62,132,143,252,227, 71, 65, 83,194,172,155,243, 97,110, 13,134,200, 86,
+ 2,239, 29, 90,231,208,200,107, 95, 6, 30,109,122,107, 89,145, 41, 16, 6,229,235, 6, 57,248, 53,222,145, 49,166, 30,132,144,
+125, 80, 81, 56,197,140,115, 11, 44, 94, 2, 95,170,206, 74,213,175,149, 86, 82, 21, 41, 7, 48,104,197,157,145,170,150, 81,130,
+ 70, 14,162,100, 52,155, 89,162, 56,101,234, 17, 83,192, 56, 18,150,171, 9,203,213,132,190, 3,186,104,217, 34,225, 27, 36,203,
+100,171,224, 4,107, 75, 12,167,209,174,203, 70, 7,216, 38, 11, 94, 20,237,202, 26,155,130,180, 76,242,217, 59, 88,217, 17,154,
+220,129, 20,126,118,161,196, 89,203,209,185, 16,157, 5,178,151, 87,118,229, 32,161, 98,149, 24, 88, 67,142,255, 94, 56,238,232,
+ 53,111, 93, 45, 76, 57,243,221,149,170, 53,241, 72,200, 10,158, 84,217,212, 41, 71,106, 38,102,161, 91,137, 81, 52, 5, 75, 91,
+135,132,104,229,171,161,114, 57, 39,155,202,132, 4, 57, 77, 54, 75,158,120,175, 47,163, 42,170, 82,203, 77, 77,150, 35, 84,123,
+255,162, 28,182, 38,229,239,153,131, 71,191,216,192,206,185, 91,144, 34,176,119,249, 2,166, 20, 17,194,138,117, 26,146,102,119,
+188, 26,225,189,129,179, 1, 33, 26,244,179,185,188,143, 38,235, 37, 66, 8, 18,191, 10, 28,197,132,213,181, 37,230,189,197,206,
+188,197, 98,238, 49,107, 27,206,172, 38, 32,194, 98, 32,136,216, 53,201,202,130,173,171, 70,232,110,218, 17,134,105,194,209,114,
+194,229,253, 99, 28,175, 38, 41, 2,116,109, 36, 9,142,214,202,119,138,187,166,113, 69, 56, 58, 26, 97,168, 67,211, 36, 12, 41,
+192, 39,139, 16,128,198, 0,209, 4,172,210, 4,223, 26,108, 46,182, 97,155, 62,123,129,141,168,221,145, 63,155,178,202, 49,245,
+200, 84,197, 81,178, 30,137,146, 9, 96, 43,103,131, 2,143,136,176,118,249,234, 51,171, 98,200,140,101,133, 6,142, 36,142, 77,
+150, 34,159,100, 92,171,174,149, 24, 13,140,147,212, 11, 21, 16,162,222,163, 35,163,146, 85, 68,167, 29,154, 78,230,108,165,120,
+ 87, 32,158, 18, 24,181, 24,177, 25,115, 87,209,146,117,133, 39,159, 59,213,129, 50, 66,128,227,201, 81,201,112, 47, 25, 30,194,
+191, 52,117,212,106, 9,186, 73, 2, 17,226, 61,186, 43,170,252, 74,201,199,170,126,182,243,237, 31, 45,113,180,154, 48,133,136,
+148, 12, 38, 73,113, 52,112,133,121, 33,227, 97, 47,159,147,177,224,172,122,163,239, 33,101,138, 35, 79,181, 60, 44, 17, 92,235,
+225,218, 6,218, 84, 71,217,169,123,114, 8, 9, 24, 83, 18, 68,112,132,215, 62,155,248,188,244,157,103,250,155, 76, 32, 41, 17,
+ 98,144,207, 71, 44,186,170,227, 1, 1, 86,244, 79, 78, 66,132,234,148, 89, 43,164, 61, 99, 35, 79,112,201, 32, 36,192,119, 13,
+ 12, 18,166,105,196,246,169, 30, 97,100,103, 10, 70,160,109, 91, 16, 18, 14,151, 71,120,192,153, 83,216,223, 93,130,198, 81, 38,
+ 38, 13,175, 14, 76,192, 56, 78,192,148, 48,107,123, 88, 99,112, 60, 12, 24,227, 18,189,183,152,178,155, 65,116, 58, 85,236,177,
+218, 5,131, 36, 84, 18, 82, 78, 5,245,106,255, 81,244,166, 81, 30,182,236,131, 53,231,151, 18, 85,128,123, 86,199, 91,181,182,
+201, 14,216, 42,165, 71, 61,152,196, 98, 9,223,116,232,218, 22,125,235,209, 72,133,185,191,187,143,176, 58,134, 9, 1,222, 57,
+241,194,178,125,161,237, 90,132, 48, 98, 26, 7, 56, 0,179,173, 45,108,223,116, 22, 59,103,207, 96, 58, 94,225,227, 31,251, 24,
+142,175,238, 97,177, 53,199,124, 49, 71,219,182,184,114,254, 18,110,255,224, 71,112,199,221,159,132, 49, 9,109,223,243, 23, 78,
+128, 25,108, 99,225,117,156, 38,246,112, 24, 11, 95,224,222, 54,153, 12,196,106,106,155,119,177, 69, 16, 37, 30,205,138,198, 68,
+114, 89, 38, 39,162, 46,107, 65, 33,101, 63,106,210,253,123, 5,163,208, 81, 32,199,166, 86, 95,238,236,139,229, 47, 72,177, 74,
+ 21,142,180,119, 18,254,146,216,198, 54,142, 30,199,195,132,249,216, 96, 24, 35,250, 38,162, 77, 65,190,162,145,131, 10, 92, 98,
+223,120,138, 72, 82,113,166, 24, 17,228,226,231,145,165,238,124, 69,136,129, 40,227,115,147,237, 61, 32,151, 59, 35, 61,140, 20,
+150,163,226, 49,245,147, 23, 40,135,128,103, 68,225,106,179, 15, 94,133, 91, 9,200,239, 21,239,100,141,138, 48,141,140, 15,245,
+168,165, 40,194, 45, 61,200, 76,201,164, 54, 69, 97, 78, 18,194, 64,182, 16,172, 76, 69,127, 43,164,188, 18, 20, 82,179,219,243,
+ 1, 76, 54,195, 71,140,232, 8,106, 61,128,177, 21,239, 19,235, 29, 21, 42,218, 87,189,123, 49, 42, 28, 37,205,170,119,112, 13,
+ 48,223, 62, 35,195, 11,135,195,131,171,152, 86, 3, 86, 3,143,234,147, 97, 52,240,102,231, 48,235, 55,208,180,155,104,187, 5,
+ 91, 35,157,131,115, 45, 0, 96, 53, 14, 8, 81,196,145,196, 97, 47,199,203, 37,166,229, 10,171,209, 97,123, 17, 48,159,245,240,
+158,177,180,214, 53,210,233,104,193,198,162, 36,235,171,192,136, 16,176, 26, 39,236, 31,174,176, 26,162,136,202,128,198,201,103,
+100, 93,142,167, 53, 70, 70,253,134,208,185, 14,109,171, 95,163,132, 32,221, 90,140, 0, 57,135,136, 8,235, 91, 44, 54,182,209,
+118, 51,222, 89, 58,151, 11, 88, 45, 26,217,194, 83,171,237, 21,110, 84, 33,132,173, 92,238,201, 22, 52, 48,225, 4,135,128,170,
+168,209, 19,108,120, 67,249, 59,165,255,236, 68,245, 29, 41,101,208,141,129,226, 76,139, 56, 51, 67, 12,163,252, 55, 50,247,161,
+ 74,220, 90,111,229,109, 70,200,198, 74,232,166, 69, 76,149,232,166, 58, 21, 20,239, 58, 23,217,148, 81,182, 6,128, 55, 76,169,
+ 36,136, 29, 84,166,168, 58,102,215,227, 43,145,160, 78,243,235,144,221,120, 6,225,200,101,166,187,249, 74,116,135, 74,168,104,
+ 12,177,237, 76, 86, 49,199,203, 17,171,145, 47,249, 36, 23,164,243,182,206,207, 19,117, 54, 11,177,189,103,126, 61, 37,230,145,
+152,106, 85, 89, 91, 69,141,177,240, 93, 3,231, 29,194, 20, 69,164,168, 48, 24,177,182, 81,201, 39,201,233,116, 0,140,179,240,
+173,103, 49, 90,133,135,166,192,193,228,121, 90, 42,232,222,210,132,150,115, 65,133,178,200,124, 13,230,115,120,223, 32,132, 9,
+134,128,166,233, 56, 88, 7, 60,189, 25,194, 74, 68,113, 22,125,219, 97, 26, 71,118, 89, 24,139,105, 28, 1,138, 48,214,243,212,
+201, 16, 8,188, 10,110, 26,139, 89,219, 1, 22, 88,142,199, 24, 35, 79, 46, 35,231, 45, 50,109, 20,197,133, 81, 59,142, 88,171,
+ 21, 69,156,206, 25, 8,222,194,150, 17,170,225, 15, 94, 31,108,239, 88, 80,159, 18,143,249,214, 35, 48,217, 54,101,136,173, 46,
+ 73,204,249,220,245, 49, 74, 50, 2,232, 26,143,190,235, 96,189, 19, 59,206,136,105,201,138,192, 6,252,119, 36,112,146,143,107,
+152, 32, 53,173, 6, 76, 99,128,183, 14, 27,103,206,224,204,185,179,240,237, 12, 87, 46, 92,194,149, 11, 23,177,187,183,139, 83,
+ 59,167,177,181,181,141,166,111,113,255,253,247,225,175,255,226, 61,216,189,182,135,182,105, 56, 14, 16,124,176, 33, 26, 9, 89,
+144, 17,170,192, 44,162,124,217,188,133,140,154, 37, 75,222, 11,250,150,104, 13, 1,106,114,164, 33,242,104, 94, 5,112, 44, 34,
+ 72, 26, 80,143, 73,137, 78, 74, 16,203,116, 43,100, 72, 79, 74,108,111, 49,182,152,221, 72,186, 91, 85,207, 27, 61,184,156, 43,
+ 32, 26, 42,158,219, 24, 18,134, 49, 96,185, 10, 24, 70,194, 48, 0,171,102, 66,219,138,186,146, 28, 76, 76, 8,102,226,208, 10,
+195, 32, 21, 36, 22,144,133, 20,120,167,149,211,127, 44, 43,134,181, 98,182, 14,107,161,146, 73,166, 24, 70, 61,174,133, 80,197,
+ 35, 70, 5, 95,184,181, 92,115,126,248,180,229,181, 82,108,241, 62,149, 17,141, 38,131, 70,138, 93,195, 22, 50,152, 30, 56, 10,
+149, 17,209,161,149,192, 11, 85, 11,243,223,195, 2, 43, 99, 29,103, 24,136,144, 40,143, 59,173, 34,111, 3, 11,192, 76, 65,156,
+154, 26,106, 79, 74,217,163, 92, 20,160, 14, 73,209, 93,170,106,233,112, 34,110,213, 92,255,207, 74, 32, 75, 84,129, 76,164, 59,
+109,186, 25, 22, 91,167,121,250,208, 56, 76,199, 71,232,142, 7,172,198, 37, 26,111,224, 45,176,189, 88, 0,222,193,251, 5, 34,
+ 57, 46, 8, 27,207, 46, 1,199, 93,219, 48, 38, 76, 49, 98, 12, 35,251,217, 23,115, 92,187,188,139,203,215, 14, 17, 67, 68, 72,
+ 6,179, 89, 66,107,124,230, 46,112,168,138,131, 51, 9,222, 21, 95,114,140,220,193, 31, 45,249,207,242,214,160,109, 92,246,241,
+ 26,227,115,250,159,242,181,249,124,136, 72,113,196, 6, 89, 78,220,114, 22,243,206,163,119,178,218, 34,222, 71,110,109,159,194,
+108,182,128,171,213,249,121,148,232, 10, 84, 40,179,198,203,232,252, 36, 43, 0, 84,118,162,202, 21,135,169, 48,194,168,124,189,
+ 39, 86, 51, 44,138, 43,221,189, 50,174, 37,170, 72, 36, 94, 82,140, 39, 70,253, 82, 21,196, 98,192,246, 41,100,149,121,186, 46,
+ 14, 86,199,226,121,194,107, 93,214, 75, 32,155,138,113,131,181,145, 43, 5,171, 60,103,150, 89,181,249,123,226,173, 69,168,214,
+ 14, 36,159, 41, 25, 35, 43,145, 2,106, 98,119, 7,119,210, 86, 68, 94,168,138, 92,214,191,200, 52, 49, 35,191,107, 78, 1,159,
+ 21,136, 9,187, 7, 75, 28, 30, 13,152, 34, 33, 38,195,221, 35,108,201,140, 16, 69, 65,164,144,119,211,186,158,211,233,157, 19,
+101,191,194,186,116,106,226,156,201, 1, 63,117,100,112,227, 25, 69, 29,194, 40, 35,104,158,214, 41, 75,130, 18, 91, 25,217,202,
+102,243,234, 50,198,200, 5,154, 41,161,186,217,106,105,145,137,126, 28, 25,142,220,196,218, 12, 75,115,240,146,115, 62,197, 1,
+ 83, 92,161,107,123, 76, 41,194,187, 78, 16,199, 35,200, 24,116,190,197,172,159,227,224, 96, 95,187, 10, 4, 17,247,150,188, 20,
+153, 44, 38,194,188,155,161,235,122,164, 16,113,188, 60,226,115, 86,197,105, 82,189, 81, 92, 95,113, 22,109, 69, 42, 96, 47, 41,
+ 46,125,137,155,212,203,197,230, 31,198, 75, 38,179,165,117, 49, 74, 78, 20, 74,124, 33,235,240,145, 85,225,146,172, 4, 7,103,
+120,215, 57, 12, 3,134, 21,241, 65, 58, 69, 56, 34,180,134, 32, 32, 75,102,206,183, 13,136, 2,166, 97,194, 52, 69,204,186, 57,
+182,206,236, 96,123,103, 27,211, 52,226,158,187, 62,137,227,107,251,176,214, 97,123,103, 11, 59,167, 78, 1,148,112,247, 93,119,
+226,142,143,126, 12,203,213, 49,186, 89,143, 73,230,130, 36,113,160, 86,138, 19,239, 27, 80, 12, 88, 77, 35, 98, 0,154,182,225,
+116, 51, 65, 6, 70, 34, 6,127,104,151,169,165,112,133,202, 84, 75,151, 85,196, 98, 14, 67, 48, 37, 39,217,122,192,132, 28,166,
+146, 91, 87, 61,170, 44,191, 63, 33,166, 28, 38,161, 23,122,231,188,168,104, 99,181, 3, 42,135, 81,118,192, 26, 17,117, 17,177,
+189,109,156,112,176, 28,208, 53, 64,211, 38,116,193,161,137, 13,156, 75,162,184,228, 47,141,181, 46,175, 79,172,193,137, 75, 7,
+217,186,167,171,134,242, 8,153, 76, 87,210,104, 67, 77, 8,178,213,196,194,164,147,135,174,228,255,146, 68,100,122,207, 54, 37,
+105, 15,162, 8,160,152, 15,111,171, 17,163,149,131, 94,173, 43, 65,214,102,182,216,146, 44, 95, 30,121,207,132, 36,162, 32, 21,
+115,202,170,160, 26, 93, 26, 83,108, 69,197,250,131, 53, 81, 86, 9, 2,225,159,201,137, 80,178,238,142,214,112,153,180,246, 86,
+ 93,151,223, 93, 3,105,178, 45, 80,167, 48,138,184,149,137, 68,219,207,144,232, 12, 96, 45,166,238, 0,227,108,137,217,176, 98,
+143,250, 56, 65,222, 74, 4,242, 8,147,252, 64,142,139, 80,235, 45, 18, 12, 66,116, 24, 67,192, 52,178,120,105, 12, 1,243,102,
+142,187,238,254, 20, 46, 31, 68, 88,187, 2,165, 9,169, 93,192,136,177,133,125,208,134, 59,126,135, 60,110, 54, 0,142, 87, 17,
+203, 8,204,103,179, 12,249,113,226,255, 86,151, 67, 12,200,147, 26,166,121,121, 56, 52, 48,148,208,120, 66,215, 26, 52,222, 51,
+216,200, 17, 90,223, 96, 62,159,163,155, 47, 96,125,203,123, 79,203, 33, 52,137, 18, 11, 30, 85, 27, 81, 32,215,213,103, 38, 83,
+ 35, 21, 38,194,201, 51, 36,164, 58,157,168,201, 7,150, 81,181, 41,173,227,133,233, 68,202,222,154, 40, 47,137,248,146,139, 28,
+165, 42,106,119, 84,231, 9, 32,243, 57,202, 69,160, 29,247,141,254, 87,139,154,204, 73,133,191,177,107, 65, 66, 56, 97,197,100,
+218,102, 2,156, 69,161,228,178, 11,135, 4,218,226,164, 3,134, 78, 52,136, 50, 32, 42,239,244,137, 49,163,208, 21,159,130,237,
+173, 94,100, 54,251,252,181, 33, 65, 34, 70, 4, 38,224, 40, 4, 92, 61, 88,226, 96,152, 16, 67, 66, 10, 69, 32,151, 50, 19, 67,
+ 38,165,137,224, 69, 95,165,235,184, 72, 58,234, 70, 94, 75, 82,118,139, 56, 52, 45,107,108,198, 20, 81, 69,239, 0,134, 67,142,
+248, 92,136,185, 16, 81, 34,157,181, 6,109,219,160,109,219, 28, 52,164, 1, 48,201, 10, 90, 85,246,238, 36, 69, 21, 23,169,242,
+126, 57,157,216, 84,118, 93,203,228,203,166,109,185, 57, 29, 3,218,174, 65,223,181, 88, 13, 75,158,124, 38, 72,192,146, 5, 57,
+139,166,235,112,124,229, 18, 23,219,198, 96,152, 6,192,122, 68, 50,121, 58, 75,196,154,148,217, 98, 11,214, 54,152,166,137, 61,
+238,153,199,161,128, 47,130,177, 9, 38,150,172, 21,202,250,164,178,190,229, 68, 79, 25,191, 43, 33,208,106,149, 38,245,160, 46,
+224,131, 88, 53,140,117,108,113, 54,124,128, 68, 50,194,128,150,184, 59,171, 32,124, 22,133, 36, 99, 49,142, 17,222, 17,171,122,
+ 41,193, 18, 11,180,180,219,241,198,195,120,126,200,195, 56,192, 24,131,157, 51,167,177,181,179, 13,215, 55,184,122,109, 23,187,
+ 23, 46, 97, 53, 44, 49,235,123,244,109, 7, 55,159,225,252,249,251,113,225,194, 37,158, 22, 88, 15,231, 91, 12, 33,178,182, 88,
+244, 75, 22,156,170,227,196, 63, 63, 38,131, 64,128,153, 18,102,189, 69,219, 88,196,105, 66, 26,121, 47, 97, 29,171,218,163, 22,
+ 58, 21,180,209,100,207,166,201, 7,121,253,229,214, 75, 93,169, 94,217,106, 66, 92,189, 38,177,140, 88, 17, 31,165, 58,200, 27,
+235, 22, 46,237,230,108,100,228,166,203,195, 19,190, 16, 72,186,229, 0,245,249, 79, 88, 46, 71, 44,123,143,126,178,152, 36,138,
+ 48, 37,246,104, 90,237, 70, 60,214,162, 41, 33,236,118, 62,200, 53,200, 33, 32, 4, 14,246, 17, 20,247, 9,134,180, 92,118,198,
+101, 1, 71,238, 4,170,116, 44,165, 40,235,232,158, 84,113,234,184,251,138,201,100,118,174,194, 39, 72,245, 11,142,187,236, 84,
+185,203, 57,212,194,115,202, 95,228,145,150, 45,203, 80, 22,175, 81, 61,226, 44,220,128, 60,146,180, 42,128, 51, 18, 22, 66, 37,
+112, 4,235,246, 27, 77,253,226, 11, 89,187, 72,101,185, 99,173, 82, 32,221,153, 86, 66,171,181, 3, 61,199,188, 98, 13,204, 3,
+ 13, 38, 33,137,122,133,129,235, 90,204,204, 14, 26,223,192,119, 75, 52,227,132, 56, 13, 8,211,200,160, 13, 74, 8,196, 5,117,
+ 54, 74, 89,207,130, 55,147, 48, 69,135, 54, 38, 16, 45, 48,173, 38,172,134, 99, 28, 25,139,115,231,110,194,133,123,239,197,209,
+146, 47, 6,227, 38,180,240,108,197,212, 46,219,121, 24,203,233, 87, 20, 34,198, 41, 97, 8, 3, 54,102, 51,244,222,228,137,146,
+118,213, 10,194, 96, 58, 23,229,168, 91,190,192,185,248,109, 27, 66,227, 93,214, 79,120,239,209,182, 61,218,174,131,245, 94,194,
+ 90, 56, 42,147, 47,198, 98, 73,203,137, 94,116,242, 25,100,237, 73,141,117,213,202,152,108, 66, 82,224,138, 73, 21,105,176, 22,
+153,149, 46, 39, 95,200, 81, 28, 24,206,100,212, 42, 40, 34,148, 16,175,220,201,145, 5, 40,136, 22, 65, 20,236,170, 50, 47, 23,
+218,141,226, 95,233,211, 22, 23,186, 18, 42,187,255, 84,136,138,245,207, 47, 97, 48,174,202, 86, 72,137,178,159, 63, 83,213,100,
+156,223, 52,130, 24, 21,100, 52, 18,115, 53,140, 68, 42,107, 2,162, 86,191,188, 11,183,217, 30,198, 23,127,153, 96, 81,226,221,
+238,193,193, 18,123,135, 43,196, 41, 22,248,141,124, 79, 67,140,197,215, 94,253,172,108, 91,167, 42, 55, 93,147,202,162, 52,134,
+252,253,116,150,155,174, 36, 36, 74, 21,252, 25, 99, 97,200,179, 8,155,204, 26, 75,215,129, 69,183,198, 26, 52, 77, 3,231, 61,
+156,177,204,127,143, 92,200, 7, 16,154,234, 51,209,230, 41,115, 38, 84, 4, 44,158,125, 99, 11, 4,201, 24,160,109,249,204, 72,
+ 49,113,232, 80,235, 49, 12,128,107, 90,196, 24, 96,173,135,183, 22,125,215,195, 16, 97,247,218, 53,156, 62,179,131, 72, 9,203,
+105, 64,180,158,181,151,188, 5,144,181,100,139,110,214,131, 76,194,209, 48, 96, 57, 12,114, 96, 72, 49, 17,153,183, 96, 73,242,
+ 38,168, 48,235, 11, 81, 78, 4,206,196, 83, 79,159, 52, 40,195,240, 94, 91, 31, 20,114,146,111,173, 21,136, 53,153,200,164,113,
+155, 38, 59,133,116,124,239,132, 46, 21, 37,237,200, 32,197, 9, 99, 96,175, 99,103,128, 86, 44, 90, 78,148,143, 73,246,118, 67,
+ 76,216,104, 91, 44, 54, 55, 49,219,152, 99, 53, 5, 92,189,247, 60,174, 93,190,134, 89,239,177,177,177,129,166,109,209,247, 61,
+ 62,121,231, 39,241,183,127,253,126,236,156, 58,141,135, 60,244,129, 56, 60, 56, 70, 8,138, 7, 20,112,137,228,127,119,109, 3,
+ 66,196, 16, 98, 69,111,146, 92,107,239,100,180, 19,121, 4, 41,187,187,140,189, 36, 90,243, 2,194,154, 18,156,160,202, 53,193,
+ 16,169,221,130,139, 12,147,221, 81,249,122, 51, 60,118,169,191,185,245,157,110,170,253,187, 66, 91, 34,129,125,253,201,200, 23,
+ 81,146,152, 52,103, 90,124,119,211,100, 48,120,197,199, 58,172, 70,194,108, 74,104,124,204,234, 82,181,208, 24,107, 96,146, 5,
+231,197,112, 87,227,178,101, 49,101,114, 86,182, 85,203,101,100,144, 78,248, 93,105,237, 64,170,199,141, 5, 24,163, 78, 10, 86,
+155, 91,107,249, 98,183,137,151, 29,198,102,238, 55,170, 49, 63, 81,226,240, 18,161,112,105,234, 95,170, 48,176,170,204,206,163,
+242,106,108,175,234,224,148,105,112,213,193,162,201, 75,106, 15,210,138, 54,179,222,245, 18, 79,185, 99,183, 80, 60,173, 17,177,
+156, 88, 28,235,213, 76,213, 83,209,137, 80,143,252,158,213,225,214, 84,240,147, 36,187,104,227, 28,188, 92, 10,206, 90,192,123,
+ 88, 63, 33,134, 14, 29, 69,132, 48,241,229, 30, 57, 25, 79,114, 3, 25, 99, 26, 35, 34, 18, 26,242, 34,224, 35,196,174,197,209,
+202,176,126,147,182,128, 48,224,202,149, 11,104,162,195, 20, 1,235,213, 78,229, 50,104, 68,121,225,220, 53, 79,152,183,156,226,
+231, 27, 7,195, 71, 98,182,182,234,104, 88, 26, 72, 22, 68, 81,121,166,172, 77, 60,174,183, 34, 99,114, 14, 77,227,225,189, 99,
+ 30,183,231, 32, 23, 99,125,209, 88, 24,189, 20,227,154,162, 28, 39,187,107,176, 13,147, 55, 61, 38, 51,248, 73,246,162,100, 34,
+ 39, 68,154, 42, 87, 92,166, 11,154, 52, 89,127, 78,138, 64,205, 94,238,148,178, 56, 18,186,207, 53, 53, 0,169, 96,106,107,103,
+ 6,213, 80,170,234,251,162, 23, 89,173,209, 89, 91,237,213, 10,126,249,119,206,217, 60,118,206, 23, 54,164, 0, 47,213, 37, 63,
+239,154,167,141, 66,218,131,172,255, 26,231, 17, 17, 51,156,165,252,253, 78,124,207,137,241,197,134,249, 0, 10,155, 97,215,149,
+133, 51,156, 27, 49, 77, 1, 49, 78,152, 82,192,181,253, 99, 28, 31,143,153, 2, 25,136, 35,133,141, 49,226, 4, 33,129, 72,197,
+ 12,155,202, 44,132,200,130, 70, 21,122,102,103,157, 62, 75,206,112, 70,185,172,237, 82, 10,249, 92,129, 20,115, 44,168,229,206,
+216, 90,159,133,185,214, 57,180, 93, 43,207,159,172, 41, 53,116, 10, 6,201, 48,122, 22, 18, 27,107,215,178, 46, 82, 30,233, 67,
+ 52,102, 10,235, 73,150,209,182, 6, 22, 97, 74,249, 62,224,152,227,136,105, 26,209, 52, 30,100, 13,186,174,199, 56, 14, 88, 13,
+ 43,248,166,193, 52,141,152,166, 99,105,244,202,106,146, 98, 68,211,122,180,109,135,144, 70, 28, 28,236, 97, 26, 3,136, 36,195,
+ 62,106,242, 26, 23,206, 49,165,146,121,143, 98,151, 84,176,145, 98,242,108, 34, 3,130,102,244,150,195, 89,169,103, 9,194, 92,
+ 54, 82, 81,231,252,112, 66,160, 88,168,113,181,143, 78,224,255,136, 17,105,154, 96,210, 4,155, 18,156, 84, 19,236, 51,245,136,
+137, 48,133, 9, 48,192,246,230, 6, 54,111,186, 9,179,197, 22, 14,119, 15,112,255,157,119,225,112,119, 23,155,155,115,116,125,
+ 15,231, 57,240,254,206,143,223,129,219,223,255, 33,140,203, 17, 77, 43, 7,141,177,128,231, 55,217, 89,203, 42,251,206, 51,126,
+ 15,108,255,202, 49,145, 82,133, 38,217, 25,187,166, 65, 52, 22, 65,152,186, 78, 56,200, 26,221, 1,241, 59,159,180,109,161,242,
+ 52,234,142, 56,201,147,169,187,179, 84, 9,183, 76, 85, 73, 67, 82,215,184, 35, 55, 25, 80, 65, 6, 57,182, 50, 95, 92, 68, 12,
+216, 32, 69,114, 42, 83,191, 80,255,194, 20, 49, 77, 9,135,171, 9,203, 49, 97, 24, 8,227,196, 43,128,164, 92,237, 68,153, 30,
+150,244,192,212, 3, 44,234,195, 28,203,193, 67, 60,186, 39,129,104,212,246, 49, 40,254, 53,209,154, 7, 85, 71,142, 84,169,133,
+197, 21,186,102,233,211, 28, 1,222,119,167, 58, 20,139,199,172, 73, 15,132,148, 87, 19, 84, 89,253,116,103,175,240, 12,181,201,
+192,186,178,215,173,112,174, 73,103, 5, 70,199,123,146, 18, 39, 9, 76,154,190,166,239, 49,201,248,145, 89,230, 78,240,139, 69,
+177,206,172,104, 91,166, 2,186,185, 61, 49,118,215, 3,195,185,154,245, 80,188,175,200, 5,143,122,105, 89,188,198,228, 58,143,
+182,155,161,155,205,209,207, 55,209,204,230,232,230,155,152,109,238, 96,182,177, 35,255,126,142,118,214,161,233, 58,244,179, 5,
+230,243, 5, 54, 55,230,216,152,205,176,152,117,152, 47,122,108,110,109,227,212,230, 54,182, 54, 22, 56,189,179,192,198,172,131,
+ 77,252,156,141, 19, 11,209, 52,235,193, 16, 79,146,172, 20,113,206, 89, 52, 77,131, 89,239,208,119, 45,218,206,162,109, 29,218,
+174,129,111, 89,244,212,245,236,135,159,245, 45, 7, 82,204,103,232,250, 22,125,223, 97, 62,155,161,239,123, 52,109, 3,223,113,
+ 71,210,205, 59,248,174,129,245,250,115,154, 12, 12,209,105,148,138,109,179, 69,201,156,188, 0,141, 8,223, 28, 79, 44,114,215,
+ 38, 32, 25,138,194,157,136,153, 47, 64,213,138,178,128,145,202, 40,188,190,224,163,176, 20,212, 27,109,170,144, 24, 67,144, 76,
+ 3,246,184,123,239,139, 0,143, 40, 7,217,156,164,190,157,180,146,233,101,189,174,198, 79, 21,207, 30,235,223,165,148, 68,187,
+ 82,172,229,250,140,221,242,196, 47,194,203,127,242,157,152,109,158, 41,113,162,146, 97, 96,173,229,132, 51,153,132,212,192, 40,
+181,152, 89,231, 36,182,215,225,150,199,127, 1, 94,241,154,183, 96,243,212, 57,185,208, 82, 25, 5, 35, 50,231,253, 96,133,203,
+151,143, 48,142, 73, 84,233, 42, 68, 20, 33,163,236,254,163,118,146, 50,202, 79, 84, 86, 18,207,126,254,151,225,221,159,220,195,
+ 3, 31,242, 48,201,157,144, 0, 38, 99,209,116, 13,172,113,120,202, 51,254, 9,222,249,193,139,184,249,129,183,100,107,107,142,
+144, 37,147,215,102,214,123, 56,225, 69,184, 70,217, 42,210, 68,200,123, 23, 19,227, 89, 73, 70,212,202, 34,120,198,243,110,197,
+159,221,126, 1, 55, 61,224, 65,229,211, 73,218,200, 80,158,124, 88,235,114,247, 63,172, 86,240,190, 99,253,128, 32,134,185, 49,
+228,239,185,111,231, 88, 30, 45,177, 60, 58, 70,215,244, 24,199, 9,227, 24,165,160, 68,198,161, 19, 17,230,237, 28,141,179, 24,
+166,132,227,163, 35,196, 48,102,194,103,142, 6, 78,200,171, 6, 93,147, 27, 13, 43, 82,205,109, 34, 68,240, 26,217, 43,255,216,
+ 73, 6,175, 38,252,100,197,165, 42,157,115,164,157, 17,168, 74,204, 17,117, 89, 3,101, 20,187, 72,160, 24, 24, 27,203,121,133,
+ 28,234, 66,146, 56,156,149,231, 19, 22,253, 2,155, 27, 11,204, 23, 61,142, 87, 9, 23,174, 94,196,114,119, 23, 77,227,208,205,
+ 56,171, 54,141,156, 37,125,255, 93,119,227,158, 59,239,133,247, 45,156, 29, 48, 13, 44,244,130,177, 8,145,233, 67, 86, 84,176,
+198,178, 16,108,138, 9,147,236, 70, 57, 86,134, 65, 51,164,149,176,236, 87,198,113, 64, 67,173,168,188, 53,126,209,172, 95,228,
+218, 69, 57,131, 36,241,166, 5, 73, 41,153,211, 94,118, 71,182, 8, 10,185,186, 55,165, 83,205,105,106, 37,124,100,237,128, 65,
+ 13, 92, 83, 87, 1,149, 73, 65,162, 12, 91, 32, 97, 25,135, 24,177, 26,217,122, 52,235, 60, 86, 67,192,172, 99, 11, 31,144, 4,
+ 59,235,228,162, 54,249, 64,113,100, 17,193,233, 88, 41,138,111, 84, 80,152,144, 11,156,191, 72,140, 4,182,220, 18,240,115,226,
+100,210,161, 90, 11,208, 90,199, 97,189,201,144, 26, 72, 6, 55, 89, 53,118, 85,113,147,130,234,204,156,118,102, 56,202,138, 67,
+187, 40,147, 45, 56, 38, 91,129,170, 4, 59, 61, 21,180, 40, 81,235,160, 85,123, 15, 43,188, 73,187, 30, 41, 70, 75,103,197, 99,
+ 70,163, 97, 33,169,202,156, 54, 39, 26, 35, 83,237, 25, 11, 4, 62,147, 19,113,131,241,106,150,117,101,233,116, 1,173,103,170,
+160,140,252,146,115, 25,191,236, 97, 17,237,196, 81,178, 94,118,190, 45,193, 43, 11, 64,167, 98,220,142,103, 31, 43,224, 49, 77,
+ 9,206, 71,120, 34, 80, 24, 96,199, 3, 12, 59,115, 44,151,252,221, 69,138, 8,193,192,194, 33, 26, 6,122, 88, 50,112,158,215,
+ 1,206, 26,116,141,231,164, 40, 57, 40, 21,104, 74,146,132,101, 29, 95, 26, 54,235, 77,100,234, 1, 11,239,197, 1, 32,128, 21,
+239, 93,190, 72,116,191, 75,138, 26,210, 78,212,161, 8, 8, 85,185, 46,228,198,114, 57, 82,158,236,212, 59,220,108, 15,173,152,
+255, 36,152,226,242,190,208,154,196,142,104, 93, 81,140, 12,120, 74,186,181,169,128, 49,213,127,147, 57,220,169,100,153,107,103,
+242,137,148, 0, 0, 32, 0, 73, 68, 65, 84, 99, 95,237,100,215,119,247, 39, 47,250,148,237,152, 57, 21, 46,119,237,230,198,207,
+144,116,136, 37, 91,160,232, 95, 50,133, 50,255,249,118, 77,117,159,214, 80,198,242, 90,173,201,194, 57,103, 44,238,251,248,251,
+240, 91,255,233,235, 16,195, 42, 11,131,147,225, 66, 39, 77, 1, 33, 36, 92,217, 59,198,209,113,177, 54,166,170,200,200, 58, 23,
+136, 5,208,251, 28,116, 3, 50, 55,212, 24,196, 84,132, 41,206, 59, 52,157,207,227,101,189,180,244,158, 90, 91,169,213, 19,143,
+196, 97, 77, 77,227,242, 36,200, 91,143, 68, 3,130,120,193, 65, 37, 71,160, 96,113, 79,234, 95, 74, 62,134, 78, 28,173,179, 48,
+212, 84, 77, 2,208,207,102,146, 5,194,119,153,177, 14, 9,132,206, 55,152, 45, 22,184,112,239, 93, 24,134, 21,218,174,195,209,
+238, 46,199, 13, 19,147, 86,181, 16, 32, 34,244, 93, 7, 24, 96, 88, 45, 49,172,134,172,195,178,165, 83,200,175,136, 27, 50, 89,
+ 7,104, 94, 65, 69, 52, 52,242,140,121,103,202,248,216,217,226, 51,207,249,213,169, 84, 90, 70,114,190, 83,148, 56, 58, 91,141,
+ 71,101,252,166, 29,161, 21,161, 74, 99, 45, 83,214, 98,128,113, 13,227,238, 66,132,115, 30, 91,243, 29,108, 44,182,209,181, 6,
+123, 7, 7,184,186,127, 8, 23, 34,102,139, 57,188,183,160, 52, 97,117,116,132,227,107,251, 56, 56, 56,196,225,225,129, 16,155,
+ 8, 9, 78,160, 40, 44,126,176, 0,230,242, 6,165,105, 66, 80,228,160,120,143,141,177,188,159,168,148,168, 36, 49,152,222, 53,
+ 88,197, 37,131, 52,116,132,168,245,144, 49, 57,159, 88,173, 72,166, 58,225,169,108, 21,229, 18,215,177, 76,117, 57, 74, 10, 15,
+235, 20,132, 9, 47, 99, 61,189, 80, 26, 33, 12, 69, 29,253, 37,131,228, 36, 52, 65,170, 54, 15, 39, 66, 41,222,211, 59,235,100,
+135,200,171,133, 41, 90, 28, 47, 7, 44,123,135, 85,103,177, 90,141,232,186, 6, 68,142, 59,238, 20, 69,208,193,200, 86,107,155,
+172, 67,202,135, 85,172,198,236,137,117, 20,234, 9, 87, 76,174, 30,184, 89,185, 75, 41, 95,120,214,213,151, 56, 33, 80, 16,120,
+ 76, 9,180,112,198,113, 39,172, 23, 99,246, 31, 37, 17, 95,149,110, 54, 73,213,138,220,101,112,156, 41,163, 75,221, 26,199,218,
+136,234, 61, 79, 26,170, 60,106,131,226,233,181,162,194,215,253,186,218,204, 52,177,208, 25,147, 11, 14, 61,188,109, 22,168, 32,
+ 39, 90,229, 36, 45,171, 95, 40,147,149,169, 25, 57,155, 61,203, 22,165,161, 43, 54, 57,205,211, 54, 40,118, 37,231, 12,144, 68,
+ 12,104, 36, 37, 46,185,108,131, 12, 20,129,136,181,112, 32, 22, 52,197, 44,190, 33,141,249, 69,130,153,181,112,216, 68, 75, 3,
+ 82, 88,225, 98,188,130,182,233,249, 2, 37, 73, 52,163, 0,136,184,149,201,131, 17,222,179,230,133,140,147,105,131, 23,102, 3,
+114,118,129, 17, 13,137, 5,149, 36, 50, 21,211,169,219,193, 16,188,147,247,201,248,204,231,230, 28,120, 87, 15, 56,114,119,174,
+221, 41,165, 50, 70, 45,157,186,196, 54, 27,170, 38, 78, 84,229,174,155,181,240, 33, 46, 0,101,247, 77,246,134,194,181,181,128,
+ 12, 32, 79,124, 52,227, 29, 89, 11, 47, 19, 40,133,135,104,150,131,190,102, 21,110, 10,204,106, 93, 47, 83,139,228,176,182,114,
+ 66, 85,168,102,240,207, 9,173, 10,107,117,101,175,175,225, 40,214,172,233, 78,242,238,191,210,206,144,196, 0,155, 28, 48, 99,
+215,247,252,214,194,217,134, 45, 87, 32,196,241, 88,206, 76,205, 25,103, 85, 57, 69, 96, 90, 77,184,186,127,132, 41,138,195, 73,
+ 10, 37,103, 93,181,118,224, 75,147,159, 15, 3, 4,102, 79,164,152, 4,224, 99, 50,252,169,176, 8, 88,228,234, 27, 39, 29,109,
+ 40, 32,167, 53, 44,110,204, 52, 82,230, 2,248,188,194,180,214,228,201,137,245, 70,124,221,156, 61, 31,213,110,103, 25,178,198,
+ 77, 13,174, 67,174,150,243,132,139,119, 43, 46, 8,230,213, 91,129,232, 24,116,125, 7,219, 56, 68,112, 2,168,247, 27,236, 98,
+113, 13,188,181,216,219,219,195,108, 54,131,241, 14,227,180,132,179, 30,132, 9,145,162,132,102,241,228,216,251, 6, 19, 37,172,
+198, 21,166,176,130,247, 13,219,122,173, 4,169, 41,201, 21, 66,101,173,133,113, 40,208, 36,168,243,129,209,203, 81,186,130,148,
+149,162,206,241,174,139, 12, 43,247,140, 99,225, 84,222,171,231,209,141, 65,253,217,164,108,185,176, 57, 7, 24,113,130,137,204,
+ 59, 78, 18, 75,216,245, 51,108,109,109, 99,107,107, 19, 41, 13,184,122,245, 26,174, 93, 57, 68, 99, 12, 22,139,158, 43,181, 56,
+225,112,111, 15, 87, 46, 92,192,229,203,151,113,120,124,140,213, 24,177, 90, 13, 8, 97,130,243, 6,171, 24,145, 92, 66,211, 88,
+236, 44, 58, 44,250, 14,222,114, 38,123, 20,240,132,107, 26,182,202, 89,147,195,229, 85,192, 21, 73, 99,240,184,107, 8,211,196,
+ 34, 63, 25, 57,231,139,142,207,216,124,177, 27, 81,197,174,187, 80,120,244,167, 41, 73,234,185, 53,176, 50,246, 35,120,171, 30,
+208,245, 7,213, 84,150, 40,146,145,124, 50,134,213,228,218, 73,200,235, 82,177,202, 26,142, 84,242,232,167, 64, 24,166,132,229,
+ 42,224,120, 57, 97, 53,196, 18,178, 16, 19, 40,114,142, 54,165, 36,208,145, 88, 70,220,249,245, 72,200, 70,110, 40,249, 75,104,
+171, 32, 20,189, 48,117, 60,168,227,200,226, 3, 46, 85, 48, 37, 65,222, 18,239,237,178, 80,144, 21, 81, 25,185,169, 66, 30, 22,
+168, 69,190, 64,165,160,178,178, 27,212,247,184, 14,237,208,139,121,173,219,170,114,211, 57,109,207, 92, 71,229,178, 98,103, 43,
+187,214,146,120,196, 73, 38,108,125, 52,107,123,123,183,214,229, 64, 92, 8,250,249,153,188,134, 58,113,121,115, 96,194,154,210,
+ 89,167, 94,250,135,169, 78,130,244, 27, 36, 2, 71, 99, 29,108,211,194,249, 6,222, 58,102, 97,219, 6,222, 55,240, 13,239,168,
+219,166,229, 44,117,249,197,118, 30,135,198,115,186, 85,215,122,180,243, 22, 91,167, 78,225,244,153, 51,216,218,233,209, 47, 60,
+186,126,134,118,222,161,237, 60,186,174, 69,235, 27, 52, 94, 11,123,135,166,113,104, 91,155,113,155,190,241,104, 27,207, 66,166,
+198,160,241, 14,173,183,232, 26,143, 86,124,193,252,171, 69,211,182,112,206,195, 89, 15,239, 26, 56,219,242,106, 65,206, 17,227,
+108, 53,250,160, 53,164, 46,219,228, 74, 44, 46,223,113,148, 69,168, 57,134, 87, 84,220, 5,121, 90,121,140, 43,173,132,142,221,
+107, 22,196,201,157,183, 94, 96, 72, 84,193, 0, 11,213,206, 26, 43,100, 50,126,125,140,130,165, 18, 43, 90,228,180,153, 43,127,
+ 35,143,188,238,119,235, 44,116,221, 57,199, 92, 44,214,251,119, 48, 85,205, 90, 94, 11, 1,232,251, 5,158,243,178, 87,225,107,
+127,244,143,241,229,223,245, 95,113,246, 33,143,173,152, 11, 22, 15,125,252,211,240,117, 63,246, 54,108,156, 58,151,127,190, 7,
+ 63,238,169,248,154, 87,255, 15, 44,118,206,194, 24,194,131, 30,247, 84,188,244, 63,189, 5, 15,122,236,231,225, 75,191,227,167,
+241, 79,255,221,127, 5,172,195, 67, 31,255, 84,124,253,143,252, 1, 54,119,110, 6, 96,240,164, 91,191, 17, 47,250,215,191,128,
+151,255,200, 31,226,165, 63,244,155,120,216,231, 61, 15,123, 71, 43,132, 41, 0, 49,225, 11,159,119, 43,254,242,206, 3,124,230,
+231,124, 30,254,227,207,253, 10,222,241, 15, 23,240,214,191,254, 56,158,243,165, 95, 9, 39, 93,122,253,125,141, 66, 82, 84,235,
+244,195, 30,245, 88,188,238, 45,183,225, 93, 31,185,132,215,190,225,205, 56,115,211, 57, 94,203, 74,128, 88,190,110,101, 2,248,
+194,151,124, 35,222,250,238,143,224,175,238,216,195, 47,252,198, 91,112,250,236,205,121, 50,250,204, 47,126, 1,222,254,190,187,
+240,216, 39, 62, 9,175,248,174, 31,194,171,223,240, 22,252,200,235,222,140,207,121,250,115,120, 53,106, 13, 54,182,182,240, 3,
+ 63,241,139,120,215,135,239,199,111,189,253,221,120,252,103, 63,249, 58, 61,196,151,125,213,203,240,155,239,248, 0,222,250,183,
+119,225, 63,254,236,175, 99,231,212, 89, 22,114, 58,143,135, 61,250,115,240,147,175,127, 39,158,248,185, 95,132,231,124,197,183,
+226,171,191,233, 85, 8,227, 50,127,167, 27,207,240,166,189,221, 93,108,110,109,227, 65, 15,127, 50,190,248, 69,255, 26,223,242,
+189, 63,143,111,248,142,215,224,179, 62,247,185, 72,137,215,163,198,117,120,200, 35,159,128,127,246,178, 31,196,217,115,143,192,
+215,125,243, 15,227,155,190,235, 39, 0, 16,218,217, 28, 47,121,217,247,224, 7, 95,243, 27,248,174,255,240, 51,248,146, 47,253,
+ 23,120,205,255,249, 7,216, 57,125,147, 60, 91, 88,155,222,144,145, 0, 28,103,181, 71, 98, 35,155,151,100, 27,181,172, 72,205,
+ 10,111,189, 4,141,228,233, 35,172, 43,135,101,160, 8,164,200, 64, 26, 75, 28, 2, 49, 1,113,224,204,103, 39,202,231,214,123,
+108,204, 23,216, 90,108,160,177, 13,246, 15, 15,112,254,242, 69, 28,172,150,152, 45,122,204,103, 29, 44, 25,132, 97,194,222,181,
+ 3, 92,185,120, 21,123,187, 7, 24,134, 17,203,229,132,131,227, 37,150, 49, 50,105, 7, 6,102, 10,112,176,232,231,115,248, 89,
+ 15, 88, 32,192, 10,184,197,192, 55, 44,148,243,214,150,131,216, 22,193, 82, 74, 9, 83, 90,129,108,132,117, 30,211, 68,204,189,
+ 38, 81, 67, 86,227, 91,155,249,224, 34, 30,179,148, 61,157, 41,139,117,229, 66, 52,128,149,112, 27,187,230, 55, 44,130,170, 60,
+218, 19, 11, 87,134,252, 24, 32,153, 4,146,132, 47,163,187,122, 50,153,208,102, 9,112, 17, 57,157, 10,194,147, 79, 41, 33,134,
+128,113, 21, 48, 14,132,229,138, 19,189,210,196, 23,121, 20,155, 95, 74, 17, 49,141,140, 33,164,128, 16, 71,233,228,147,236,225,
+ 41, 79,183, 36, 91, 46,255,249, 76, 30,163,181,131, 88,211,231,202,238, 47, 85, 73, 66, 50,186, 36, 22,197, 25,101,120,231, 29,
+165,142,189,101, 28,158, 44, 64,130,143,133,166,165,150,131, 46,143,196, 52,168,194, 36, 24, 19,175, 27,117,150, 7,149,100, 95,
+ 45,251, 80,195,204,121,115, 98, 71,171,126,214,148, 43, 99, 35, 83, 3,147, 69,121, 84,117,227,220,192, 57, 17, 5,105,241,198,
+101, 43, 39,224,233, 56,207,100, 91,138,240,100,203, 47,216,162,172,207, 96,167, 2, 15, 33,209,127, 88,245, 77,123, 11,239, 91,
+120, 47, 98, 51,215,192,249,134,211,158,156,208,224,172,205,174, 13,107, 9,174,225,203,182,111, 26, 52,125,135,173,237,109,220,
+124,250, 38,222,125,123,143,153,239,209,250, 25,124,211,193, 54, 30,100,121,191,218,182, 13,186,174, 69,227,123,116, 93,195, 23,
+187,227, 11,150,197,110,158, 67, 98,188,133,117, 4,231,141, 20, 26,173,136,227,216,102,103, 28,241,255,123,123,157,119,191, 20,
+129,182, 26,155, 99,237,146,206, 86, 49, 99,214,186,248,188,131,150,239,202,218,231,158,116,183,171,254,236,152, 69,110,186,115,
+ 95,139, 59,149, 29,116,166,255, 81,210, 23, 81, 1, 98,152,247, 29, 73,242,237, 85, 87, 65, 38,119,172,172, 41,138,112,206,156,
+232,210,175, 31,245,171,182, 67,159, 99, 75, 96,103, 75,146, 73,164,172,170,140, 88, 96, 73,126, 15, 96,241,148, 23,127, 15, 22,
+ 59,231,240,214,215,126, 11,222,253,166,215,226, 33,159,249,180, 74,199, 97,214, 38, 31,107, 5, 45,192,223, 45,148,104,226, 39,
+223,250, 10,124,240, 29,191,137,183,255,242,127,200, 72,212,218,230,186, 58,218,197,109,191,243,227,248,245, 31,253, 23,248,216,
+251,111,195, 11, 95,241,253, 72,193,178,243,134, 98,254, 25,127,228,231, 95,135, 15,253,237, 95,225, 37,207,126, 18,222,253,167,
+111,199, 15,254,212, 47,193, 53,162, 96, 55,124,209, 36,163, 1, 60, 41,127,246, 47,253,230,239,198, 79,191,234,123,241,242, 47,
+123, 58, 30,248,144,135,225, 59, 94,249,106,254,249, 37,108, 40,219,187,140,193,243, 94,240, 66,124,219,247,254, 0, 94,249,237,
+ 47,195, 11,159,241, 68,204, 23, 27,248,254, 87,255, 44,107,184, 28,143,238, 1,224, 59, 94,249, 99,248,212, 71,111,199,127,249,
+174,111,196,237,127,243, 30,252,171, 87,254, 40,156,136,187,191,237,223,255, 48,110,122,192,131,241, 53, 47,120, 26, 94,253,202,
+239,196, 51,158,119,107,166,233,129, 44,158,249, 37, 95,129,111,250,238,255, 3, 63,250,111,191, 25,223,250,226,103, 99, 54, 95,
+224, 91, 95,249,163,188,126,170,234,208, 47,126,209, 55,226, 31,222,247, 46,252,238,175,188, 26, 20, 24, 80,228,141, 65,211,182,
+ 88, 45,143,112,184, 60,196, 23, 62,239,159,227,204, 3, 30,137,191,122,215,239,225,215,126,254,251,240,103,255,243,119,113,235,
+ 11, 95,142, 39, 61,245,185, 88,197,132,166,105, 68, 40, 12,124,193, 23,125, 37,254,226, 29,255, 29,111,252,229, 87, 33, 2,120,
+254,139,190, 9,231, 30,120, 11, 94,255,139, 63,128, 63,250,253,255, 11,143,123,194,231,203,126,130,157, 84, 73,166,137, 36,145,
+217,136, 9, 38,114, 64,146, 21,133, 87, 78, 8, 50, 57,164, 32, 2, 20, 96,197, 40,111, 41,194, 82, 18,137,191,128, 49, 13, 4,
+ 47, 74,104,172,129, 55, 4, 19, 2,194,184,196, 52,173, 0, 74,240,206,195,183, 29,102,243, 13, 44, 22, 11,204,230, 29,142,167,
+ 1,151,118,175,226,194,165, 61, 76,176,216,154, 45,208,123, 7, 36,194,106, 28,176,183,191,135, 43, 87, 47, 99,255,248, 8, 67,
+ 76,216, 95, 14, 56, 88, 46, 49, 6, 25, 31, 19, 23, 29, 91,125,143,214,122,244,243, 57,239,125, 4,169, 9, 27,225,188, 69,219,
+ 52,217, 90, 81, 87,197, 53,251,153, 69, 49,252,123,217,182, 25,242, 46, 42,211,198, 84,176, 80, 67,103, 78,166,136,165,162,214,
+ 52,150,113,132,154,229,140,202, 99,158,106,107,156, 78,224,177, 30,209,138,156,236, 36, 64, 13,185, 32, 99, 30,241, 17, 2,196,
+218, 34,202,114, 67,156,186, 21, 82,194,114,156,176, 28, 39,172,166,128,229,106,192, 56, 78,108, 27, 73, 17, 41,133,236,183, 77,
+ 41, 48, 40, 40,175, 1, 40,139,185,214,194, 72,146, 78, 16,162,252, 60,220, 77, 83, 22,179,209,117,246, 21,134,155,199,204, 64,
+224, 46, 59, 21, 10,152, 90,201, 44,203, 49, 65, 28,178,193, 24, 88,237,152, 83,126,239,248,103, 55, 25, 50,147,178,232,137,137,
+ 75,252,254, 83,238,138,214, 71,177,186, 82,178, 57,119, 59, 17,157, 16,182, 89,150,112,187,114,184,159, 12,103, 89,239,190,139,
+216,200,161, 58,124,171, 29, 23, 17,239,171, 13, 85,209,175,166, 2,147,200,165,180,246,231, 75, 71,161, 99,109,141, 46,230, 3,
+215,131,100, 5,198, 43, 1, 87,232,135,142, 95, 71,233, 22, 37,151,193, 88, 52,206,193,121, 22,133, 54,179, 57, 22,155, 59,152,
+245, 51,204,102, 30,109, 99,209,117, 77,142,148, 52,214,163,241, 29,218,166, 71,211,205,209,246, 61,218,182, 65,211, 54,124,209,
+183, 30, 93,215,161,109, 91, 22,138, 57, 7,111,125,198,180,168, 56, 75, 87, 92,122,152,114, 32,134, 91,139, 52,189,110,186,178,
+ 54,106,182, 57,196, 69,119,209, 39, 93, 5,181, 79, 60,157,216,119,235,251,155,233, 97, 84, 34, 43, 13,106,183, 70, 69,166, 51,
+ 37,110, 58,233,168,186, 2,191,212,123,114, 45,182, 84,228,119,210, 54,183,158,173, 14,209, 62, 32,235, 0,178, 5,120,237, 6,
+174, 98,154,215,126,198,130,178,109,103,155,184,229,179,158,133,191,127,231,111, 98,255,234,125,184,114,247, 71,240,129,255,249,
+134, 53,143,187, 49,184, 1,200,198,222,112,159,253,254,183,253, 42,206,127,226,239, 48, 28,239,175, 77, 93,245,189,253,240,159,
+191, 9, 23,239,249, 71,236, 95,187,140,127,120,223,109,104,187, 30,179,141,109, 89, 45, 22,187,231,235,126,230,199,241,251,111,
+248, 37, 92, 58,127, 63,110,123,199,255,192,198,214, 54,118, 78,159,225,103, 81,113,183,154,149, 97, 13,167, 96, 2,248,233, 87,
+253, 59,252,253,251,222,139,187,239,248, 71,188,229,183,127, 21, 79,127,238, 11, 96,136, 49,168,177, 2, 65, 25,107,240,210, 87,
+124, 39,254,232,119,127, 29, 31,124,223,123,113,254,222,187,241,251,191,254, 43,120,206,243,191, 28,173,111,224, 93, 17,166,190,
+245,119,127, 21,127,254,182, 55, 99,255,202, 69,124,224, 61,255, 31,230, 27,155,216, 62,117, 26, 59,167,206,224,233,207,185, 21,
+191,246, 75,175,197, 93,119,124, 28, 31,254,187,191,193,255,253,179,175, 89, 27,192,127,245, 55,124, 59,254,159, 55,253, 22, 62,
+250,161,247,225,210,249,123,240,246, 55,255, 6,158,250,172, 47, 65,215,117, 37, 54, 28,192,123,223,249,251,184,116,255, 39,176,
+119,245, 50, 66,148,213,153,181,104,187, 14,203,227, 35,180,179, 5, 30,241,216,207,199,167,254,225, 47,113,241,190, 79,224,240,
+112, 15, 31,254,224, 95,226,189,127,254, 54, 60,227,185,255, 20,136, 81, 80,178,252, 51,254,233,219,127, 11,159,248,232, 7,112,
+112,237, 26,250,110, 3,143,251,204,167,224, 47,222,245,135,184,122,249,126, 92,190,112, 15,110,251,211, 55,101,205,129,169,112,
+236,245, 4, 50, 73, 86,129,215, 74,200,144, 19, 69, 30,128, 70,148,201, 58, 18, 21, 75, 21,241,204, 58,115,128, 19, 18,188, 33,
+ 52,158, 43,191, 24, 2,166, 97, 64, 10, 19, 90,239,208,185, 6,125,239, 49,235,231,232,186, 30, 33, 68, 28,236, 31,225,232,248,
+ 24,148, 8,253,172,197,188,239, 88, 53, 25, 9,227, 56,225,224,240, 16,123, 7,251, 88,174,142,177, 90,141, 56, 58, 92, 98,146,
+120,189,144, 0, 34,139, 89, 99,177,209,118,152,119, 30,190, 33,184,100, 89,172,165,135,172,179,104, 26, 95,165, 24,137,197, 66,
+224,247,124, 29,242,124, 34, 70,198,236, 89,103,224,155, 34,180, 98,117, 55,202,184, 59, 70,144,227,206,204, 56, 39, 38,127,135,
+ 41,198,220,125,235, 88,185,241, 13, 32, 36,173, 41,152, 74, 16,162, 98, 26, 35,251,115,201,171,215,104, 86,245, 31,202, 63,219,
+ 58, 82, 50,105, 17, 37, 20,164,148,224,100, 34, 97,133,202,150, 34,131, 30,134, 41, 97, 57, 76,152,173, 60,142, 26,131,190,225,
+ 81,172,111,188,116, 0,164, 1, 69,112,137,178, 77, 36,139, 45, 68,161,174,127, 54,137,176, 16, 73, 86, 24,196,187, 73,117, 59,
+ 80,162,234,208, 53,121,244,201,202,212,130,192,229,157, 61,241,206,248,132,242,152,189,221, 96,112,140,129, 84,156, 82,214,184,
+ 42, 41, 75, 56,200,206, 53,121, 39,121,163,195,168,190,116, 79,238,205,242,174, 93, 73, 94,122,105,194,150,221,170,118,108, 39,
+128, 50,117, 12,102,254, 92,179,168,210,228, 76,114,163, 59,204, 42,104,134,242,142, 94,137,103,180, 38,148, 42,153,236, 0,208,
+ 2, 38,176,176, 17, 60, 21, 80,155,153,138,165,160,182,122, 83,136,119, 70, 62, 3,103,141, 96, 38, 45, 7,216, 56, 70, 61, 81,
+ 59,193,247, 29,220,106, 41, 98, 71, 43,113,147, 34, 69, 52,172,121, 96, 17,144,169,128, 59, 22,206, 23, 43, 20,191, 65, 73, 94,
+151,172,230,115, 48,136, 20,208, 64, 94,233,161,250, 60,234,113,116,170, 86, 73,245,251,107, 78,220, 76,117,193, 86, 23,143,181,
+ 8,113, 29, 36, 83, 10, 71, 50, 10,102,209,116, 63,170, 2,128,132, 31,158,170,142,223, 40,197,204,174,237, 93,121,151, 43,103,
+132,112,200,117, 92, 94,232, 99,246, 68, 84,107, 58, 65,136, 51,146,221,174, 19,136,170, 56, 41,106, 73,246, 49, 87,190,100,136,
+ 30,100,243,220,195, 96,172,197,238,197, 59,215,220, 52,165,160,193, 90,156,168,182,228,230,186,206,157,255,205,193,213,251,114,
+ 1, 72,245, 70, 81, 58,234,217,230, 25,124,254,179,190, 10,231, 30,254, 89,152,111,238,228,115,152, 55,170,133,227,241,190,247,
+220, 86, 98, 64, 99, 42, 65, 75,177, 48,248, 41,239,181,203,170,238,232, 96,159, 53, 33,206,224,242,133,123,209,245, 51,108,110,
+157,194,193,253,247, 22,254,186, 24,164, 31,249,184, 39,224,145,143,125, 2, 94,252,181,255, 50, 71,220,250,166,193,153,179,103,
+177,119,237,162, 60,227,192,199, 63,252, 1, 1, 16, 37,118, 87,201,107,121,196,163, 31, 11,107, 45, 62,254,145, 15, 23, 29, 78,
+109,105, 67,194,103, 60,230,241,248,140,199, 60, 30, 47,252,234,151,139, 54,196,195,251, 6, 59,167,207, 34,211,159, 0, 44,143,
+119,209, 56, 73,228,195,148, 51, 24,250,182,195,181,221,171, 56,115,243, 67, 96,172,197,222,229,243, 89,245,159, 18,112,223,221,
+159,192,179,190,248,197,216, 58,125,134,137,121,146,234,121,225,190,187, 16, 2, 55, 65,103,111,122, 16,140,181,184,112,255,167,
+178,206, 71,159, 31,111,109, 33,231, 9,247,190,118, 68,192, 26,134,207, 24,225, 50,115,136,144, 41,227,205,202, 35,204,162, 20,
+147,173, 64, 68, 9,206, 91, 52,162,192,158, 34,239,109,145, 18, 90,231, 49,111, 91,116, 93,139,249,108,134,166,109,112,112,120,
+140,131,195, 35,132,196, 74,244,126,214,160,243, 30, 38, 37,241,222, 2,195, 56, 98, 24, 6, 28, 29, 47,113,116,180,194,241,193,
+ 18,203,113,132, 51,158,137, 64, 48,216,154,247, 56,189,104,132, 71, 63,129,162,146,210,108,134, 91,128, 98, 37,218, 41, 81,158,
+206, 9,227, 58,153,108, 75, 34, 2, 66,152,208,182, 30, 77,227, 17,101, 76,157,177,144, 84, 56,229,245,120,150,201,234, 5,238,
+200, 14, 68,179,158,133,236, 61,236,196, 1, 47,182,206, 5, 71, 1,158,104,154,136, 17,186, 88,198, 2,138, 70,193, 42,224, 70,
+197, 56, 74,177,147,139,215,121, 95,128, 47,201, 32, 6,182, 32, 14, 99,196, 48, 69,172, 70,139,229, 42, 96,214, 79,104,186, 14,
+214,202, 94, 26, 22,137,156, 72,239, 84,125,158,100, 60, 87,108, 55,168,114,157,141,245, 98, 53, 83,127, 61, 85,161, 30, 53, 44,
+ 35,201,218,166, 22,212,217,108, 73, 75,138,191,180, 69,177,172,248, 73,170,210,146, 50, 64,147, 10, 98,213, 24, 92, 71,126, 99,
+ 23,128,174, 13, 10,172,228, 70,190,250,172,112,181,197,215,171,135,159, 65,221,173,165, 28,149,123, 35, 59, 85,125, 9, 89, 73,
+197,130, 81, 69, 9,178,160, 76, 47,117, 67, 5, 29,172, 41,127,200,108,127, 83, 52, 2,149,143, 93,233,140,150,212, 71,110,225,
+200,139, 88, 11, 72, 54,149,231, 40, 50,120,201,100,145,134,136,145,146, 76, 36,172,229, 17,161,239,208,205,230, 8,195,132,129,
+192,223, 31,103,179, 48,140,215,106, 92, 88,165,148, 64,177,232, 16,248, 92,224,221, 34,127, 86, 38, 91,107, 52, 77,208,216,234,
+ 34,177,117,226,221, 58,195,160, 78,207,251,116,162,181,122,157, 18, 69, 53, 28, 43,208, 15,110,192, 84, 87, 59,238,201, 32, 19,
+213,211, 32, 11,217,214, 85,244,250,153,155, 74, 60,166,128, 26,182,193, 34, 7,220,168,237,137, 40, 86, 26,141, 18, 24,164,211,
+128, 90,232, 86,175, 26,234,207, 60, 7, 6, 25, 35,254,107,147, 51, 2,234,160, 25, 53,113,187,134, 57,255, 81, 46,171, 34, 6,
+ 68, 78, 51,212,139, 32,159, 21, 55, 16,157,151,119,198,149, 60,133,234,250, 39, 2,108,211,226, 5,223,242, 26,236, 93, 62,143,
+ 63,252,229, 87,131,218,109,252,203,127,255, 99, 85, 51, 98,214, 24,239, 84, 21, 46,186,179,138,161, 42,106,242, 52,195,173,125,
+127,140, 1, 26,239,208,116,252,179, 45, 87, 75,132, 41,172,125,127,173, 40,223,223,248,223,126, 14,127,240,155,191,202,223,113,
+239,225,157,195,213, 75, 23,209,180, 46,119,255, 70,158,253,132,136, 40, 5,134,115, 22,253,108, 6, 0, 24, 86,171,181,207,162,
+118, 35,164,148,240,123,175,255, 69,252,201, 91,126,155,169,116,214,192,187, 6, 49,174, 48,187,249,116,129, 74,165,130, 17,247,
+190,133,177, 22,190,241,128,179, 88, 46,143, 49,235, 55,164,224, 15, 37,236,167,210, 29, 53, 77, 35,104, 89,126,158,167, 20,101,
+101, 68,240, 82,156,196,105, 82,202,108,126, 47,212,178, 13, 74,136,210,171,170,149, 90,211, 92,173,194, 22,194, 20,132, 68, 22,
+ 17, 66,192, 36, 49,129, 4,176, 37, 32,176,216, 45,239,155,164, 40, 77, 49,113,150,183, 88, 71, 90,231,177,232,103,216,220,216,
+194,230,230, 38, 98, 50,184,116,101, 31, 87,175,237,225,242,149, 75,104,188, 71,223,247,240,206, 33, 73,252, 99,136, 1,171, 48,
+226,104,181,194,254,222, 33, 14,174, 29,226,232, 96,196, 56, 10,173, 8, 9,109,215,224,244,230, 28,219,155, 45,124,195, 7,215,
+144,192,233, 85, 77,131,214,119,112,174,145,221,135,149, 17, 87, 25,141,193, 20,236, 97,166,183,155,170, 91, 72, 36,227,194,166,
+232,162, 52, 12, 28,182,150,126,173,217, 83,168,174,132, 53, 22,143,202,104,217, 9,130,211, 40,103, 88, 56,227, 84,190,167, 44,
+ 26, 66,225, 58,103, 50,102,158, 26, 84,240,126, 37,103,129,100,116, 46, 73, 82,122,201, 5,238,214,199, 41, 97, 24, 2,139, 11,
+199,136, 49, 4, 17,201,201, 24, 94,246, 97, 41,133, 44,124,171, 71,151, 53,135, 93,215, 0, 20,167,204,133,215,221,100,125,120,
+214,194, 32, 99, 72, 2, 90,226,218,104,146, 15, 71,170, 14,162,210, 41, 27,129,205, 20,163, 83,201,116, 47,214, 58, 84, 52, 48,
+166, 9,164,100,242,184, 20,134,214, 40, 98, 55, 18,208, 89, 43, 99,246,106, 37, 83,235, 1,138,104,111, 29,227,185,254,115,210,
+117,209,174,230, 6, 59,204,147, 69, 64,253, 58, 56, 68,201,158, 96,131,235,100, 67, 56,245, 50,110,231,139,183,176, 9, 52,241,
+ 75, 9,142, 58,122,181,206, 8,223, 94,167, 20, 73,180, 33,178,159, 55, 14,125,187,192,214,198, 14,182,182,118,208, 47, 22,104,
+186, 14,109,215,161,235,122,180, 77,199, 64, 13, 42, 43, 43, 43,163, 98, 43,222,108,107, 4,134,148,105,235, 38,191, 62,214,228,
+184, 44,214,243,206, 85,235,166,234,189, 50,230,186, 95, 58,114, 87,206,195, 58, 62,245,211,188,143, 39,132,145,250,138,234,207,
+178, 36,182, 81, 53, 74, 63,145,216,166, 54, 83,131,181,168,223, 12, 62, 18,131,177, 53, 36, 19, 28,202, 80, 41,151,199,232,148,
+207,146,154,235,190,174, 5, 48, 5, 15, 45,207, 92, 16, 31,181, 66,173,244,245, 51,104, 74, 93, 3,252,243, 45, 15,174, 0, 0,
+ 54, 78,157,203,255,174,149, 11,196, 41, 44, 37, 43,248,125,126, 78,111,249,236,103,222,240,109, 35, 9,166,161,235,222, 87,194,
+217,135, 60, 26,139,237,179,120,219,111,252, 20,110,255,155,191,196,249,251,239,203,154, 5,105,237,242, 52,179, 46,182, 79,174,
+ 56,107, 55,130, 94,176, 25,234, 34,105,105,222, 91, 60,244, 17,143,198,133,251,239,193,238,181,171,197,221,145,201,110,192,223,
+191,255,175,241,132,207,249, 60,220,119,207,157,184,239,222,187,112,254,222,187,113,254,222,187,153,119,238, 74, 92,176, 21,109,
+ 64,202,150, 79,182, 26, 95,187,124, 9, 0,240,192, 7,223,146,207,158,141,205,173,210,196, 16,225,246, 15,254, 45, 30,247, 89,
+ 79,198,165,251,239,197,165, 11,247,226,226,253,119,227,234,229,243, 32, 10, 48,213, 28,196, 57,151, 3,128, 72,138, 93,215, 52,
+136, 32, 28, 28, 30, 98,121,116, 13, 68, 9, 27, 59, 55,173,145,253, 31,124,203,163,176,123,237, 18, 72,138,178, 32,255,159,100,
+181, 8, 3,236, 93,227,215,185,181,125, 10, 20, 9,105, 2,250,217, 2,154, 93,217, 58,139,206, 89, 52, 50,109,140,148, 16, 12,
+255, 45, 4,130, 77, 73, 68, 80, 39, 14, 63, 71, 78, 84,197,172,172, 78,210,222, 84,225, 53, 8, 49, 97, 12,124,145, 53,198, 98,
+209,180, 56,189,185,137,157,205, 13, 24,107,176,119,120,132, 75,187,123, 56, 88, 46, 97,189,199,230,214, 54, 12, 2, 82,140,152,
+194,128, 41, 6,132,100, 48, 36,194,114, 90,225,242,165, 75,184,122,225, 10, 86,203, 21,166, 56, 33, 17,224, 93,143,249,108,134,
+179,167,102,216,218,240,130, 73,180,240,221, 12,214,119,136,201, 48,219,189,181, 48,222,177, 66, 84,146,199,172,116,112,252,243,
+ 72,118,110, 66,142, 1, 53,164, 4, 68,139, 40,105, 80,206,250, 50,202,179, 26,185,170,222, 80,130, 73, 16,105, 67, 42, 32, 19,
+ 83, 82,173, 84,248,165,182, 24,235,106,206,119,144, 42,158,197,132,206, 26,120, 39, 97, 51,166, 40,237, 99, 1,213,101,139,148,
+173, 18,191, 20, 7, 81, 4, 58, 44,218, 75,210, 41,132, 24, 17, 66,196,114, 8,152, 38,226,208,151,129,163,103, 65,236,107, 71,
+ 20,245,187,142,254,242, 1, 24,170,113, 32, 63, 19, 33,132,114, 48,166, 4, 10, 49,163, 81,213, 6,199,157,114, 44, 60,230,235,
+198,125,180,230, 51, 78, 20, 51,193, 46,211,185,196,147, 94, 11,169,100, 99,125,226, 2,112,121, 62, 34,209, 61,114,233,248, 53,
+184, 70,254,189,102,125, 87,107,170, 36, 43,133,128,212,135,191,145,131,218,194,220,144,156,119,221,193, 88,117,150,230,132, 32,
+170, 22, 12,214,147,130, 84,167, 95,173, 29,130, 39,138, 5, 17,246,169,183, 53,166,176, 62, 90, 37,192, 36, 18,182,191,149,212,
+ 54, 15, 3,207, 34, 28,217,191,243, 69,235, 88,220,230, 12,218,174,195,124, 99, 7, 27, 91, 59,232,103,115,120, 81,216,155, 42,
+170, 82,119,153, 92, 92, 52,112,190,205, 35, 78, 11, 57,200,124, 43,216, 89, 43,112, 14,119, 66,161,142,235,138,161, 53,116,232,
+137,223, 91, 51,211,235,145,251,201,127, 62, 9,118,201,122, 20,181, 65,158,252,108,100,252, 85,255,119,133,214,118,242,243,172,
+166,149,181,198, 44,131,152, 82,142,158,206,214,175,172, 19,184,126,159,205, 83, 41, 83, 68, 77,149,110, 37, 11, 76, 81,248, 5,
+ 68, 84,196,183, 39, 10,155,253,139,119, 97,247,194,157,120,226,115, 94,138,217,214, 77,120,240, 99,191, 0, 79,124,222,215, 86,
+206, 47,131,195,107,231, 1, 0,143,121,218,139,240,192,199,124, 62,190,232,107,190, 31,219,231, 30, 94, 77, 45,234, 24,215,210,
+ 60,156,212,118, 28, 31,236, 1, 0, 30,242,232, 39,163,219,190, 25,255,228,197, 95, 15, 0,120,244, 19,159,148,237,134,154, 7,
+ 98,114,202,230, 58, 69,143,200,224,243,159,254, 44,252,222,159,253, 29,206, 62,224, 65, 25, 15,171,191,239,123,126,228, 39,241,
+240, 71, 62, 26,143,123,226,231,226,203, 95,242, 13,120,203,239,188,158,133,189,149, 85,207, 72, 81,244,223, 94,251,159,241,212,
+103, 60, 23,255,219,247,253, 48, 30,240,160,135,226,161,183, 60, 2, 47,120,209, 87, 97,231,244, 14,179, 20,164, 24,244,210,228,
+ 76, 33, 33,200,249,223,182, 13,238,186,243, 31,241,169, 79,124, 12, 47,251,214,127,131, 7, 60,248,161,120,198, 23,223,138,111,
+252,246,239, 41, 42, 85, 0,111,248,249,159,192,231,126,225,179,240, 13,223,249, 74,220,116,238,193, 56,247,160,135,226,153, 47,
+120, 17,102,243, 13, 52,222,231,103,179,109,123,118, 75,137,167,252,129,183, 60, 22,207,126,225,183,193,219, 22,135,135,135,176,
+ 22, 56,127,231,135,241,168, 39, 60, 19,103,207, 61, 28,179,249, 22,158,240,217, 79,195, 83,158,254,124,252,197, 59,223,140,198,
+121,152, 16, 49, 76, 99,245,108,243, 10,245,210,133,123,112,225,190, 79,225,169,207,248, 10,108,204,119,240,168,199, 60, 25, 79,
+127,230, 87,234,226, 11,173,116,235,206,154,204,252, 79, 49, 33,136,203,201,102,242, 9,140,236, 15,188, 84,227,252,137,135, 24,
+ 89,177, 40,153,198, 73, 2, 14, 10,204, 33,161,177, 22, 91,179, 30,219,139, 57,250,190,197, 42, 6, 92, 59, 60,192,149,253,125,
+132, 56,162,237, 60,124,215, 72,180,220,192, 59, 43, 99,145, 44, 97,140, 35,246, 15,142,112,233,252, 21,236,239, 29, 34, 16,123,
+249,136,120, 68,177,179,213,227,230,237, 14,157,183, 88, 69,130,157,245,240,139, 5,140,107, 96, 26,102,237, 54,206,160, 23,218,
+143, 54,224, 94, 58,139,220, 61,137,207, 57,139,207,168,148,170, 4,137,230,147, 47,179,119,236, 71, 36,201,155, 54, 85, 55, 78,
+178,251, 50,181,104,198,148,172, 97,165, 19, 24, 25,107,229,112,133, 84, 69,230,229,156, 55,148, 92,250, 42,211,216,105,167,110,
+128,104, 74,204, 94,249,115,144, 37,247,234,217, 84,248, 71, 4,178, 96,110,156, 34, 86, 67,196, 48, 68,172, 86, 9,171,113,196,
+ 24,184,168,226,139, 56,112, 88, 74, 72, 72, 33,229, 75,182,190,216, 83, 12,252,251,180, 51, 38,246,125,166, 72, 72,129, 88,232,
+101, 41, 91,225, 0,115,194,186,101, 50,201,170,102,228,175, 29,222, 58,118, 55,165,107, 39, 21, 55, 85,148, 59, 99, 52, 52,132,
+170,221,179,126,241, 69,160,120,194,105,152,180, 19,177, 66,227,179,204, 52,213, 61,151,185, 1, 5, 78, 85,239, 53,233,236,198,
+100,176,170, 1, 73, 73,214, 35,245,107, 2,200,178,134, 1,134, 64,214,102,242,156,130, 70,226,137,105, 2, 1,107, 5,246,154,
+128, 43, 17,239,186, 69,134,203,155, 87, 43, 32, 37,183,134,141, 85, 10,152, 53,224, 46, 70,108,114,198,121, 88,223, 0,141,135,
+109,153,147,221,246, 29,124, 35,116, 55,199,147,163,182,109,208,120,151,187,110,223,216, 76, 19,132,240,249,157,227,179,194,193,
+100,129,156, 61,161,114, 47,197,212,186,198, 33,157,160, 52,166,235,168,141,159,198,118,118,226,179, 40, 76,133,180,158,178,118,
+163,143, 73,159, 1,117,187,101, 8, 72,148, 34, 93,139,207, 80,249,222,169,144,223, 80, 91, 55, 77, 21, 78, 18,243, 20,192,152,
+235, 19,250, 52, 98, 57,201,106, 47,174,189,214,106,162,115, 34, 65,236,228,251,161,207,194,159,255,214,171,209,111,156,194,139,
+190,247,117,120,204,211, 94,136,219,111,251,189, 50, 82, 79,132,195, 75,247,226,131,239,120, 35, 30,241, 57,207,195, 23,252,243,
+127,139,221, 11,159,196,135,254,228,141,213,151,162, 26, 59,215,227,120, 99, 74,136, 20,128,139,247,220,129,247,252,241, 27,241,
+156,127,246, 45,248,230,239,127, 45, 94,255,179,175,193,123,255,236, 79,240,253, 63,249,139, 56,123,211,131,115, 35,147,225, 40,
+149,135,154,119,239, 28, 22,211,111,108,224,225,143,122, 12,171,211, 13, 79,115, 85, 75,240,206,183,190, 9, 63,245,134, 55,227,
+199, 95,247, 7,184,237,255,253, 35,252,218, 47,252,151,204,134,208, 51,214, 58,142, 20,125,223, 95,253, 5,190,243,235, 95,132,
+ 47,124,230,115,241,150, 63,255,123,252,218, 91,222,133, 23,126,213,215,179,133,178,241,249,247, 59,203, 44,139,152,166,156, 77,
+223,181, 29, 98, 72,248,161,127,243, 10,156, 62,123, 19,222,244,167,127,135,151,188,252, 95,225,119,222,240,139,107, 43,156, 15,
+189,255,175,240,191,127,219, 75,241,164, 47,120, 38,126,225,119,223,137,159,248,213,183,226,217,183,190,152,221, 97, 93,151,239,
+130,144, 56, 19,133,153, 14, 9,109, 63,195, 98,243, 52, 55,171,227,136,214,123,124,236,131,127,138,243,119,253, 3,158,254, 37,
+ 47,195, 43,190,251,167,241,236, 47,249, 42,188,237,205,175,199,135,222,127, 27,156,117,152,166, 9,227, 48,230, 70,109, 34,194,
+ 20, 18,166, 49,225,191,191,241,103,208,207, 55,240,109,223,247,211,120,202,211,111,197,123,110,251, 99, 30,211,143,203,156, 52,
+185,182,186,170,168,131,230,229, 95,243,124,229,145,194, 91,135,182,101, 47,169,118, 1,148,168, 92,144, 82,149,234,232,196, 59,
+160,119, 22,243, 89,139,153,227, 61,247,106, 28, 48,140, 99,230,172, 55, 82, 61,241,136, 41,128,210,132,205,141, 51, 0, 5, 76,
+199, 3,246,246,246,177, 18,154,206,209,225, 33,166,213, 10,105,154,224,136,176,181, 53,195,108,209,138,248,199, 1,182,145,136,
+215,136,214, 54, 32, 3,236,156,218,193,230,246, 6,238,184,227,110,172,134, 9,135,171, 35, 76,203, 99,204,219, 22, 4, 96, 53,
+ 76, 24, 83, 68, 50, 14,141,115, 56,220, 63,148,148,157, 22,221,188,195,209,209, 17,198,101,128, 33,194,108,222,192,219, 6, 49,
+ 5, 44,135, 9,109,223, 35,233,135,231,121,236,184, 92,174,132,116,102, 16, 34, 48,197,136, 85,136,121, 55,231,173, 67,235,123,
+248, 94,250,249, 16,176, 58, 90, 33, 37, 32,164,145,183,241,214, 2, 34, 32, 9, 32,116, 93, 7, 74,137, 71,228, 68,252,101, 64,
+ 9,120, 99, 26,159,218,123, 36,131,189, 42, 40,154,134, 81,167, 83, 80,110, 56, 71,100,246, 77,131,205,121,139, 83,155, 29,182,
+ 55,122,156, 61, 61,195,206,118,143,190,235,224, 61, 43,154,157,107,208,184,150,199,166,173,135,119,158, 65, 16, 78, 2, 91,244,
+176,182, 46, 7, 54,104, 74, 26, 63, 11,158,249, 68,154,203,110,202,104,237,228, 1, 88,246, 66, 18, 3, 43, 95, 94,210,144, 28,
+181, 82,230,253,171,203, 15,112, 6,246,240,147, 39, 98,187,188,112, 98,138,153,105,144, 40, 8,113,137, 95,191,117,110, 93, 64,
+101,148, 83, 64,165,203,176,133,228,231, 20,234, 97,220,218,206,175, 0, 76,112, 93, 40,135,126,127,172,186, 28, 4, 88,146, 5,
+124,153,166, 87, 93,114, 39,114,182, 41, 21,165,127, 14,213, 50,172, 39, 80, 17, 37,139,235, 18, 82, 50,234,219, 98, 20, 39, 81,
+ 94,171,104,100,105, 14,201, 38, 5,250, 68, 68, 68, 46,232,166, 9,211, 56,240,254, 55, 70,196,113,100, 39, 68,136, 72, 20, 4,
+184, 34, 46, 15, 69,128,146,236,219,178,174, 35,193, 89,134,111,128, 72, 18,244, 10, 74, 85,117, 34,159,142,133,159, 82, 20,194,
+ 99,201,177,175, 39, 34, 39, 59,253,235,236,224,198,186,199, 0, 0, 20,185, 73, 68, 65, 84,138,159, 38, 52, 37,235, 75, 8,107,
+ 22, 82, 64,167, 38,234,123, 86, 49,108,172,130, 99,140,236, 96, 99, 22, 22,106,129, 91,130, 85,108, 38,102,106, 1, 33,200,153,
+172, 95,176,102,189,104, 53,146,251,160,171, 51,214, 42,153, 60,153,163, 19,108,123,101,189,159, 60,184,235, 85,209,201, 81,119,
+ 45,152,131,193,117, 83, 32, 93, 95,105, 68,178, 70,203,162,226,206, 59,153,102, 4, 68, 76, 41, 98,127,127,137, 43,151,247,112,
+254,210, 46,238,187,112, 21, 71,199, 1, 33,112,164,117, 18,215, 84,144, 44,113, 11,194, 48, 77,104,219, 22,190,113, 24,199, 9,
+171,213,200,176, 41,231, 96, 45, 71,249, 26, 99,176,179,181,192,162,107,177,154, 6,132, 41,162,107, 25, 24, 19, 82,196,209,241,
+128, 24,152,116,167,132,197,126,198,168,213,105,156,184,136, 74, 4,235, 60, 26,223,192, 25,131,249,162,197,230,230, 6, 92,211,
+ 99, 99, 62,199,185,237, 45, 32, 6, 92,219, 63,196,238,254, 1,108,107,177,181,189,133,123,239, 59,143,221,221, 61,132,192,212,
+212,166,105,208,247,204,120,152,198, 17,137, 56, 77,206, 26,160,159,117, 2,178, 49,216,220,222,129, 73, 19, 30,245,152,207,192,
+230,246, 38,124,235,177,177,117, 26,137, 34,174, 93,190,140,107, 87, 47,227,225,143,120, 20, 30,255,132,207,194,189,247,221,133,
+ 79,124,226,227,120,228,103,124, 6, 78,109,159, 66, 8, 19, 46, 94,188, 31,187,123,135,184,118, 60, 32,198,136,249,124,134,197,
+ 98, 3,227, 48,225,218,254, 53, 78, 22,133,224,177, 83,161,100, 58,111,185,193, 36,224, 41, 79,191, 21,207,125,254, 75,240,115,
+255,249, 91, 65, 96,130,234, 56, 77,156,196, 56, 8, 37, 85,114, 88, 60,153,146, 29, 11, 65,226,145,169, 82,199,114,130,141, 97,
+191, 39, 88, 44,213, 55, 14,243,190, 67,235, 29, 44, 37,172,134, 21, 66, 8, 8,148,144,172, 65,211,244, 60, 22, 8, 35, 99,244,
+ 92,139,190,221,192, 56, 92, 1, 82,196,234,120,194,229,139,151,113,116,120,192,248,200,196, 23, 85,227, 24,114,209,119, 22,222,
+ 38, 17, 56,108,194,192, 99,255,248, 16, 41, 4,204,186, 30,125,219,130, 18, 19,121, 8,149,208,167,218,173,241,104,132, 4,238,
+ 47, 4,172,170,186, 52,149,216,195, 66,132, 90, 38,230,212, 57, 13,117,168,129,132, 57, 97,200,249,108,183, 49, 2,142, 96, 21,
+173,250, 42,157, 68,119,122, 81,236, 78,165,125,211,131, 44, 82,225, 19,203,104, 91,247,103, 86,212,238,218,185, 89,225,173,231,
+ 56, 74, 77,179, 50, 66,105,147, 11,137,133,103,124, 96, 69,129, 28,140, 83,131, 97,136, 56, 60, 26, 49,239, 61, 90,231, 88,201,
+ 31, 69, 0,105,185,136,112,106,159,113, 70, 68, 80, 38,119,199, 57,110,151, 20,147,203,196, 40,172, 41,183,145, 5, 69, 76, 75,
+141,215,229,255,214,164,212, 68, 37, 13,205,230,224,244, 82, 16,100, 85,167, 8,131, 85,104,229, 52,130,149,120,252, 84, 46,195,
+ 28, 78, 91,172,129,149,186,222,202, 94, 57, 37,130, 35,147, 73, 97, 28, 87, 32, 64,162, 28, 94,148, 50,169,173,188,102,179,166,
+174,207,227, 96, 37,232,153,178,179, 39,107,214, 73,103,154, 87,226,202, 62,213, 84,203, 72,170,214, 20, 70, 44,114, 68, 34,240,
+ 50,168, 8, 97, 74,230,195,122, 16,136,114,249,141,129, 33,254, 25,147,181, 5, 55,202,169, 6, 2, 97,226, 48, 23,155, 88, 31,
+ 79,158,199, 66,198,122, 16, 26,249, 30,200,107,119,200,252, 2,189, 24, 51,206,212,241, 84, 41, 81,125,121, 20,190,182,174,173,
+244,114,173,223, 51, 47, 98, 59,157,108,213, 44,252,162,234, 94, 31, 83,223,232, 34, 95,223,225, 82, 65,174,214, 59,124, 82,215,
+136,116, 52,100,242, 51,157, 47, 69,161, 34,241,115,106, 42,203,157,108,143, 21,253,106, 84, 83,162, 79, 90, 90,203,230, 6,241,
+ 41, 89, 10,146, 36,153,231, 76, 0, 75, 66,139, 84,129, 97, 18,206, 62, 23, 19,238, 58,241, 32,157, 96,212,103,189,129,190,183,
+ 21,126,216,160,232, 51, 18,174, 95, 23,145,174, 22, 44, 99,159,115, 36,180,234, 39, 82,225, 82, 12,227,132,163,227, 1,135, 71,
+252,107,152,146,208,143,249,210,137, 72,176,137,119,145,214, 90,196,137,179,196,249, 71,144, 9, 95,109,134,209,116, 61,213,142,
+ 88, 84,194, 73,228,239, 94, 44, 81, 74, 98, 88,178, 25,219,139, 68,215,173, 36,172, 51, 25, 97,172,121,235,214, 0,129, 74, 26,
+156, 58,161,120,141, 72, 37,204,230,196,218,231,164,215,159, 3,186, 90,198,184,198,129, 27, 31,239,114, 68, 47,135, 64,241,127,
+211,118, 45,172, 37, 12,203, 37,156, 76,138, 33,211,181, 24, 18, 23,204, 18,183,173,175,117, 53,140, 44,148, 51, 54, 11, 92, 73,
+190, 35,143,121,220,147, 48,141, 3,118,175, 93,194,153,155,206,225,233,207,254, 10,124,248,131,239, 6, 39,139, 19, 66, 96,157,
+ 91,140,194,218, 39,117,188, 27,120, 34, 35, 25,198, 60, 58,203, 2,174,202,239,106, 53,211, 21,132,198, 25,204,186, 22, 27,109,
+131,148, 18,134,213, 50, 91,225,140,227,212, 26,238,172,132,137,155,136,115,180,157,135, 51, 30,136, 22,215, 46, 95,198,225,225,
+ 18,251,123,135,240, 14,204,108, 7, 97,214, 55,232, 54, 55,176,232, 45, 86,227, 17,194, 56, 96,115,243, 12,200, 54, 56, 60, 58,
+ 64,140,137,129, 25,179, 25,156,115,152,166,192,192, 12,199,193, 27, 44, 76, 43, 23,183, 19,188, 39, 18,119, 21, 78,172, 82,245,
+151,208, 74,165,173, 29, 7, 3,208, 89,224,147,193, 33, 98,251,161, 68, 21,179,189,240,148,245, 27, 78, 68,217,237,163,157,165,
+ 21,174,126, 8, 50, 83, 23,209,158,142, 0,157,160, 77, 83, 8,114,121,151,117,105, 60, 33,104, 65,165,150, 45,155,175,130,157,
+180, 48, 57,157, 73,211,147,166, 72, 88,141,129, 45,134,131,197,209,241,132,190,107,224,147,240,144, 67, 0, 44,224,200, 35, 4,
+ 11,239, 1, 99,116, 55,230,178, 90,216,218,117,242, 90,233, 52, 40, 11,180,114, 90, 31,149, 68,191,122,188,170,157,187, 38, 39,
+113, 1,224,214, 53,180,242,254, 40,163, 58, 67,122,114, 40,142, 45, 24, 76, 83,162,157,172,177,217,189,129,156,252, 68,149, 26,
+151,114, 80, 2, 36,252, 33,115,221,179, 42, 61,137, 91,130, 10,244, 5,213,235,160,117,146, 83, 29,167,169,128, 16, 50,149,189,
+ 74, 73, 88,226,112, 32, 9,171,201, 26,139,250,114,175, 60,214,150,170, 8, 78, 20,144,142,177, 0, 37, 11, 66,168,248,222,102,
+205,183, 90, 11,165, 40,134, 28,165,188, 22,106, 98, 12, 91, 2,213,202, 4, 3, 68, 39,135,102,161, 75,230,203, 43, 70, 97, 65,
+166, 2, 14,145,238, 95, 3, 51,235, 14, 82, 3, 98,200, 89, 32,176,181,179,230, 58,168,166,161, 8, 60,249,217, 77, 39, 45,108,
+149,160,236,255,111, 20,159, 1, 71, 39, 70,215,121,212, 31, 83,245,109, 17,171,162,136, 57,141, 20,116, 42,234,226,103,197,103,
+ 10,162, 85, 54,121, 53,230,212, 65,128,174,138, 64, 69, 48,198, 10,250,147,221, 52, 36, 85,142,215, 64,106, 17, 45, 76, 8,197,
+ 28,115, 97,166, 26, 15,102,222,175, 11, 7,215,198,250,250,108,102,201,115, 37, 6, 61,177, 2, 40,200,252,130,152, 45, 59,189,
+194,129, 84,126,252, 56,140, 88, 46, 7, 28,202,197, 30, 66,137, 87,205,131,123, 73,114,179, 6, 24, 19, 67,134,172, 53,124,225,
+ 80,170,158,221, 98, 52,208,162, 60,101,140,115, 41,202,115,108,109,206, 27,225,166,173,208,144, 69, 52, 92, 33,113,157,115, 48,
+206, 51, 28, 21, 6,157,111, 74,124,181,156,139,109,211,136, 54, 40, 85, 22, 65, 20,242,159,173,146, 0,109,213, 24,138,104,147,
+ 82,130, 35, 96, 54,155, 9, 59, 33,102, 56,149, 34,139,187,182,197, 24, 88,183,212,183,179, 66, 16, 12,129, 5,225, 81,196,144,
+114, 38,114, 86,199, 8, 77,194,208,166, 34,201,207,120,211,185,135,226,139,158,253,229,216,220, 58,133, 97,117,140,219, 63,244,
+ 94,188,227,109,191,205,174,151,152, 16, 66,194, 40,127, 46, 73, 50,162,206,254, 60, 4,121,234, 37,160,129, 59, 35, 81,138, 27,
+ 43, 66, 36,190,120,251,166,193,162,237, 96,157,193,106, 10, 24, 86, 3,156, 21,213,120,227,178, 45, 41, 6,254,192,156,179,112,
+205, 12, 10, 14, 30,198, 3, 28, 29, 15,184,120,239,121,184,255,213,214,217, 37, 71,142,228, 72,216,129, 8,146,169,146,186,186,
+123,108,214,108,239,127,136, 62,193,216, 92,103,119,186,164,204, 36, 25, 0,230, 1, 64, 68, 80,210, 67,155,149,117, 85,169, 36,
+ 50,201,192,143,187,127,235,138, 82, 92, 9,185,108, 11,214,178,224,183,245,119,188,189,110, 56, 30,255,143,199,255,157,168,219,
+ 11, 26, 45, 56,142, 7, 68, 61, 44,255,199,182,162, 44, 27, 0, 69, 43, 13, 84, 61, 71, 28,197,233, 90,203, 82,177,119,138, 13,
+ 65,169, 36, 89, 54,168, 59, 83,119,212,197,140, 20, 1, 95, 20,228,176,138,194,174, 31, 56,101,212,227, 60, 91,154, 2, 14,192,
+129, 41,180,102,157, 36, 38,166, 40,170, 30,202, 65,110,117,216, 15,238,103, 16,226,192,118, 9,128,245,224, 18, 85,160,176,162,
+192,208, 48, 24,234,224, 43, 11,129, 3, 42,192,209,229, 88, 28, 24,202, 4,154,188,148, 98,138,166,132,199,161,216,150,134,199,
+206,120,127,156,120,125, 61,177,174, 5,197, 92, 40,215, 90,140,169, 99,180,155,251, 89, 87,243,158, 62, 3,152, 56, 0, 73, 83,
+178, 65,146,112,143,111,184,203,191, 69,145,118, 15,181, 13, 44,107,242,212,193, 17,195,139,158,192,151, 15,109, 23,149,245,195,
+ 99, 16,240, 40,112,172,158,248,135, 0,142, 76, 12,246,232, 10,188,203,105, 51, 91,207,241,175,148,163,228,180, 35,165,128,174,
+116, 53,123,186, 15, 6,100,195, 62,217,177, 34,177,157,166,221,214,148, 38,151, 41,102,185,106,228, 79,123, 76, 75,129, 37, 97,
+242, 35,195,177,146,136, 20,177,238,141,227, 97,111,233, 80,152,200,181, 15,132,171,230,148,131,252,185, 68,140,114, 45,137,147,
+144, 8, 5, 10, 23, 6, 23, 47, 44,137, 61,115, 90, 29,123,233,147,150,132, 72, 48,106,228, 59,120, 62, 56,245, 74,211,195,140,
+ 34, 65, 48, 81,181, 60,220, 28,157,146, 77, 95,199,228, 92,188, 99,225, 60,100, 52,138,197, 30,207, 28,135,254,116,248, 1,159,
+ 68,139,147, 91,226,115, 39, 63, 4,119,122,177,105,102,238, 3, 81,247, 54,246,162,220,177,165,220, 15,198, 62, 69,163, 49,190,
+206, 91, 65, 25, 34, 25, 93, 22,115,236,150, 15,189, 6, 83,197,215, 24,242, 37, 47, 0, 53,254,178,239,143,175,110, 13,149,110,
+129,185,104, 17,102,212,111,230, 65,104,215,234,122,183,158, 86,182,107,146, 28,245,194, 42, 71,219,179,169, 15, 0,132,125,245,
+119, 30, 13,247,143, 29,191,126, 61,240,235,253,137,199,126, 66, 36, 19,252, 92, 85, 14, 85, 40,249,212, 79,180, 65,201, 39,162,
+ 91, 41,184, 31, 97,145, 69,243, 51, 36, 63,211,225, 71, 47,209,244,228,202, 13, 29, 42,227, 4, 60,233, 41,131,134,117, 93,124,
+138, 97,145,226, 25,204,244, 14, 62,169,110,101,107, 32,172, 84,240,163,174, 29, 52, 35,166,254,251, 75,197,227,249,128, 54,141,
+103, 93,193, 37, 24, 11, 25, 65, 77,212,215, 4,204,212,169,137,181,214,200,245,247, 36, 69, 98,160,197, 20,130, 99,146, 87,168,
+ 98,221,110, 56,143,134,199,227, 3,219,122,235, 46, 32,105,238, 56,106, 33,102,171,236, 12,135,125,119,140,173,193,115, 33,178,
+153, 41, 4, 24, 27,254,253,175,191,240,239,127,253,117,117,133, 68, 32,132,136,225,104, 13,123,107, 80,177,142,171,229, 48, 40,
+ 87,168,245, 8, 77,205, 32,149,105, 31, 72,204,184,213,138,151,205,119, 15,135, 26,246,247, 59, 90, 19,135,209, 47,236,223, 40,
+ 1,123, 59, 32, 49, 82,113,193, 76,180,173, 77,208,142, 29,143,251, 3,239,255,249, 27,199,121,199,219,203, 11, 42, 23,220,182,
+ 5,191,253,252,137,219,219, 43,222, 94,111, 56,218, 59,158, 7,135, 16,103,129,178,251,104,215,117,117, 49,210, 82, 34,114,178,
+160,218, 75,128,233,151,174, 88, 6,151, 56, 40, 25, 92, 43,112,138,123,216,227,129,236, 2,140, 28, 39, 70,140, 33,193,253,250,
+ 14,175, 58,221,243,190, 84,239, 79,204,147,219, 52,186, 61, 85,235, 25, 19, 20, 25,221, 48,237,188,104, 7, 26,132, 21,133, 9,
+117, 89, 1,122,130, 72, 47,188,229, 92, 9,171,186,170, 62,223,211,133, 10,242,163, 13,178, 47,138,218, 94,201,134,152, 44,135,
+ 12,212, 83,210,226,251, 60, 13, 18, 68,188,231,193,168, 85,176,237, 39,238,143, 3, 47,183, 13,181, 12,190,188, 74, 67, 33,130,
+ 50,112,180, 36,112, 69,238,123, 86,189,113,208,149, 62,178,140,151, 19,208,247,186,156, 97, 42, 81,121,246,241, 30,212, 89, 2,
+106,160, 34, 93,101,220,105,109,134,111, 83,220,124,127,102, 83, 82,150,117, 96, 70,102,165,251,191,207, 32,246, 61,114, 58, 22,
+230,241, 90, 73,188, 48, 39, 73,202,199,196, 74,209, 65,105,198,216, 74, 92,195,236, 82, 39, 12,225, 52, 59,201,172,231,180,215,
+ 93,173, 87,248,116,152,240,244,189,135,159, 87,245,130,240, 21, 75,138, 84,116,252, 61, 76,162,244,189,190,153,116,160,195, 64,
+ 80, 78, 28,249, 72,171, 99, 34,104,104, 25, 56,126,207, 71,157,181,239,134, 53,198,168,158,102,154,157,188,139, 96, 11, 5, 36,
+ 67,100, 80,203, 84, 61,202,212,232, 83,199,168, 35,214,117, 66, 27,119,209, 88, 69,239, 10,231,188,243,121,207,126, 25,169,218,
+ 24,215,102, 72, 83,148,203,177,157, 41,221, 65, 66,145,205,224, 93,157,125,217,203,127, 22, 31,114, 47, 58, 8,198, 22,200,233,
+188, 79,165, 63,159, 10, 23,127, 26, 8,210, 50, 72, 72, 64, 38, 61, 32, 40,237,165,196,163, 49,232,148,186, 79,182, 77,255,238,
+ 5,106,252, 69,205,158,215,212,136,252, 93, 51,173, 25,232,147,229,242,243,117,227, 24, 60,245,125, 58,141,113,255,117,146,193,
+ 93,156, 75, 23,108,201,117,234,161,145,185,127,127,238,120,127,236,248,117,127,226,227,254,196, 33, 2,179,214, 11,131,211, 12,
+224,130,133, 13,133,128, 93, 21, 86,128, 82, 9, 77, 13,162,103,136, 61,227,186,112,233,158,254,101,241,116,195,243,244, 53,103,
+141,244, 71,233,163,245,156,196,121,116, 55,151,130,227, 56, 70,208, 21,114,224, 73, 40,181,118, 0, 12, 68,240,178,222, 80,202,
+ 2,177,195, 87, 84, 34,222, 48,222, 86,188,127,124,196,132, 36, 68,204, 83,202,165, 70, 97,220, 53, 12, 57, 42,101,111, 98, 90,
+ 19,215, 12, 69,184,144, 30, 54,166,122,230, 16,154,109, 91,177,239,187, 55,186,111, 53,186,254,130,163, 9,246, 38,104,162, 17,
+ 45,189,248, 20,251, 56, 34,141,149,251, 36,131, 45,182, 23, 65,129,156, 29, 50, 94,145, 83, 76,113, 60,163, 68,196,153,235,126,
+ 13, 66,171,101, 64, 85, 17, 23, 49, 4, 39, 88, 99,175,107,102,193, 37, 95,240,163,250,254,235, 99,127,226,104, 2,131, 96,169,
+174, 58,135,133,218,186,197, 94,182,174,254, 65, 20, 5,164,161,105,131,180, 19,231,115,199,254, 60, 60,244,254,182,130, 8,120,
+253,249,134,223,254,248,137,223,255,248, 29,219, 90, 61, 87,249,136, 49, 80,169, 88,215, 23,240, 82, 81,150, 10, 57, 20,231,121,
+ 56,150, 50,197, 90,203, 10,170,165,211,121,206,122, 66,141,125,239, 64, 64,217, 10,240,244, 23,213,226, 74,141, 20,239,118,207,
+121,153, 49,140, 0, 26, 8,135,156, 88,203,138, 98, 4, 38,141,125, 35,161,105,252,253, 56,192,136, 25, 5, 65, 35,106,205, 71,
+ 61,219,234,251,161, 22,195, 74, 83,212, 90,194, 51,207,240,136,144,156, 28,211, 24,141, 98,130,135,208, 36,248, 25, 89, 34,163,
+187,163,129,188,205,221,147, 23, 5, 12,152,204,113,226, 16, 49, 8, 43,142,230,246,195,125, 55,220, 31,130,215,219,129,165, 16,
+ 42,209, 8, 31, 82,198, 34,236,157,156, 54,175, 57, 74,241,105,141,249,215, 70,210,254,120,236, 73,189,107,207,129,160,142, 32,
+ 29,162, 80,171,115,223, 79, 91, 80,232, 48, 65, 57,136,180, 67, 79,134,160, 39,253,215,158,248, 7,154, 20,244, 52, 70,121, 41,
+ 78, 67,190,152, 75,137,235,115,245,139, 11,220, 95,204,198, 83, 65,145, 88,214,208, 41,164, 62,160,112,228, 13,132,205, 14,152,
+ 84,253, 58,133,151,232,183,190,245, 76, 42,251,156, 62,151,147, 5, 88, 68,190,134,149, 73, 48,244, 43,131, 37, 94,195,178,199,
+ 96,182,216,185,122,135, 82,234,128,153,152,153, 31, 80,102, 48,153,119,203,126,208,149,220,179, 79,135,157, 98,236,255,109,142,
+204,229,226,206,144,233,222, 58,140,201,119,224, 34, 45,246,235, 17,148, 17, 80, 28,228, 14, 55,178,191, 44,166, 38, 84, 70, 72,
+145, 23,133,137,207,180,152,104,216, 37, 19,130,248,170,154,239,120,210,153,128, 24,208,164,204,143,176,192, 61,115,184, 0, 12,
+246, 45, 7, 32,211,206, 75,117,172,109,174,104,116,138, 45, 51,137,128,167,146, 84, 50, 29,164,190,148,113, 76,209,165,152,133,
+144, 74,144, 8,143, 49, 30, 63, 23,193, 65, 48,158,125,174,151,224,149,156,166,113,175, 14,198,215,247, 61,241, 87,223,119, 18,
+ 5,115, 90,133, 75, 84,245,119,126,126,158, 16,199, 35, 87,195,166, 92,218,196,203,170, 2,103, 83,220, 31, 39,222,223, 15,188,
+127,236,120, 28,103,136, 37,253, 90,139, 26,208, 0, 98, 69, 45, 43,154,181, 32, 87, 18,106,241,213,129, 68,136, 21, 37, 27, 62,
+154, 37,103, 47,240, 52, 34, 24,185, 2, 46, 36,164, 17,147, 28,222,117,170,190,107, 79, 42, 89,215,219,128,130,129, 16, 94,124,
+ 37,172,235, 2,131,196, 57, 6, 40, 9,182,178,130,137,112,180, 51, 72,109,220, 93, 50,184,132,128,161,187,136,208,181, 49, 20,
+194, 84,233, 83,101, 3, 3,146,182, 89,191,138,219,143, 87, 80, 41,120,124,236,174, 85,130,130, 23,194,113, 42,142,125, 71,107,
+242,137,101, 32,176,214, 2,124, 54,246,139,158,232, 25,110,168,224, 83,228, 57, 69, 42,145,177,233,197, 74, 90,176,105,178,132,
+ 18,121, 67, 91, 29, 76,224, 0,249, 6, 65, 5, 99,227,130,151,101, 65, 93, 60,138,243, 63,207,167,239,152,226,126, 44,133,177,
+ 70, 66,149,168, 64, 11, 67, 74,167, 19,192, 90, 67, 59, 5,164, 2,134,132,104,203, 1, 21,117, 91,177,217, 13,101, 49,252,241,
+207, 63,241,251, 31,127,226,118,187,193,180,225,216, 21,173, 1,135, 24,164, 84, 44, 47, 47, 88,214, 13, 12,194, 67,119,127,105,
+149, 5, 90,185, 35, 20, 77,189, 19,174,213, 71,221, 62,238,241,135,114,140,174,232,107,220,103, 79, 35, 27,244, 53,181,200, 81,
+ 39,194,169,138, 26,251,112, 85,129,178, 57,171, 3,132, 66,215, 66,192,163, 39,253, 97,221,234, 6,102,198, 71,123, 7,169, 0,
+ 92, 71,209,113,182, 62, 34, 73,241,147, 37,206, 53, 20,224,233, 57,231, 68,179, 98,234,196,227, 5,201,125,175, 76, 17,222, 16,
+145,161,230, 34,183,124, 97, 22,206,113,141,224,104, 26,185, 2, 13,207,157,241,124,158,216,182, 10, 46, 26, 48, 30,134,168,248,
+ 8, 74,201, 17,172, 16,103,184, 43,129,217, 15,118, 19,241,240,136, 4,208, 36, 3,157, 57,152, 1,234,190,101,226, 73, 40, 54,
+119, 25, 9, 18,196, 36, 20,163, 41,217, 41, 4, 57, 60,186,218,188,182, 61,217, 79, 37, 40,107, 60,249,126,237, 58,198,142,132,
+174, 81, 56,240,183,182,180,194, 52,189, 99,226, 80,233,251,254,241, 2,207, 4, 45, 31,205, 79,162, 48,179, 47, 59, 76, 34,124,
+107,237,235, 72,199,220,185, 50,141, 20,194,238, 81,214,169,136, 40, 35,221, 43,175, 95, 23, 90, 22,207,228,215, 12,220, 81,180,
+176,153,114, 97,180,136,159, 52,230,206,119,207, 3, 63,177,147, 68, 10, 81,153,198,225, 37,240,192,177,111,132,196, 65,208,226,
+179, 24, 33, 63, 29, 60, 19, 83,131, 82,188, 48,148,214, 99,112, 17,130,196, 11,122, 52,160, 80, 58, 81,187,122,198,251,236, 95,
+ 79,106, 97,138, 62,109,232, 25,250,100, 41,138,187,196,137,150,201,183,223,221, 6, 29,206, 19,135,201, 52, 98, 71,199, 32,167,
+248,208, 15,149,252, 60,137, 72,188, 63, 98,223,101,185,174, 9, 44,175, 14, 59,105,135,252, 4,212,135,212,109, 88,221,230, 54,
+225,119,241,197,199,237,107, 62, 14, 77,140,198, 97,209,133,145,243,218,194, 38, 58,224, 28, 5, 11, 30, 98,214,139,134, 37,139,
+ 85,238, 16,171, 57,205, 78, 97, 83,220,129, 64,245,196,243,249,196,199,251, 19,191,222, 31,184, 63, 14,156, 77,167, 66, 43,214,
+ 83,166,190,178, 49, 7, 72, 33,181, 60, 68,145,248,103,157,243,192, 97, 15,205, 61,120, 45,124, 33, 84,114,113,250,156, 73, 67,
+154, 62,114, 76,181, 44, 11, 32,128, 74,235,255, 47,181, 67,149, 24,235, 82,163, 72,244,132,181,117, 41, 99,169,101,134, 82, 23,
+ 44,107,245, 3,189,233,104, 58,250,179, 53, 66,134,250,173, 73, 91, 45, 83, 56,126, 98,183, 31,244, 82, 37,128, 23,246,159, 63,
+174,243,207,183, 55,112, 41,120, 62,239, 17,200,229, 41,144, 34, 59,246, 99,199,105,209,240, 22, 95, 93,138, 10,154, 74,127,235,
+177, 13, 6, 72,166, 72, 22,248,159, 85, 9,177, 54, 57,228, 74,213,247,233,102,131,107,225, 34,241,177,208,227, 18,122, 35,152,
+143, 85,127,108, 55,220,110, 43,192,140,231,113,224,253,126,199,126,182, 62,120,244,221,187,119, 98, 77, 37,170,126,247,100,171,
+ 24,246,251, 19,207,231, 30, 49,178, 14,123, 16,113,235, 13, 10, 97,251,241, 3,255,248,159,255,197,126, 54,252,252,243, 13,219,
+143, 23, 87,129,198,192, 89, 34, 16,101, 89,111,216,222, 94,177,221,110,142, 30, 12,123,210,178, 84, 87,148,151,130, 90,151, 14,
+138,168,225,173,231, 57, 49, 34,110,208,136, 78, 28, 35, 61, 36, 20, 36, 97, 28, 19, 13,200,149,146,254, 33,168,181,160, 44,117,
+ 84,181,166, 99, 23, 62,179,108, 99, 52, 93, 11, 97, 91, 23, 48, 49, 68,206,254,128, 46,203,218,177,171,246,169,226, 79, 69,102,
+ 2, 71, 44, 42,218,220, 53,118, 53,104, 22,145,121,216,147, 97, 90,243,197,152,209, 15, 97,183, 61,161, 87,118,173, 53, 28,231,
+137,179,163, 89, 15,156,167,223,195,158, 57,175,158,149,172,131,150,226, 99, 32,139,226,109, 82, 4,107,216,165,242, 32,154, 41,
+ 43,157,190,214,175,179,126, 17, 55,125,206,252, 22,209, 47, 10,231,209,225,206, 73,119,218, 29, 59,170,218, 59, 45,149,152, 0,
+ 36,159, 96, 38,121, 1, 23,190,244, 72,221,116,143,177,246,196,167,145,229,157, 99,106,179, 1,239,193, 20, 51,154,157,178, 31,
+ 64,246,109, 82,218,176, 74, 77, 73,102, 70,211, 62, 29, 87, 1,217, 5,240, 97, 19, 94, 52, 69, 61, 17,233,153,105, 89,185,254,
+ 97,223,255,113,164,228,169,105,143, 74,189,238,149,109,250,249,228, 42, 64,163, 97,133, 34, 46,253,185,154,199,233, 57,153,224,
+ 72, 74,164, 46, 76,211, 81,152,230,227, 23, 19, 25,127, 41,101, 71, 54,127, 22,174, 89,252,179, 91, 33,133,118, 72, 27,159, 98,
+160, 76,117, 36,103,229,139,190,135, 48,229,127, 19,200, 37, 67, 9, 47, 84,193, 16, 7, 39,103,193,139, 21,239, 62,115,202,210,
+199,230,169,154, 87,111, 32,114,208,238,100, 66,185, 36, 49,186,224,138,134,150, 32,138, 44, 73,188,238, 20, 73,106,225,246,233,
+125,162,141, 84,193, 47,246,203,217, 18,154, 34,102, 78,199, 15,127, 10,118,250,164,233,179,152,158,128,191, 9,198,153, 62,135,
+106,190, 75,127,223,241,247,175, 59,254,254,245,192,243,233, 59,219,110,221,211, 76,104, 51,212,194,177,235,166,176,209,186,208,
+210, 15,117, 30, 42,135, 32, 41, 90,144, 46,107, 41,113, 45, 16,191,230, 75,112,143,230,174,156, 8,203,178,198, 61, 26,176,155,
+ 20,197,114,224,192, 65, 6, 17,195,194,140,109, 89,134, 16, 25, 30, 87,206,196, 16,179,128,129,201, 39,161, 37,245, 48, 37, 34,
+ 23, 77,115,164, 4,142,181,147,223,251,101, 45,158,143, 1, 96,169, 91, 20,109,190,203,190,189,188, 64,196,109,162,173,157, 61,
+232,232,148, 19, 71,172,164, 13, 22,186,165,224, 88, 92,110, 64, 52, 35,240,208,161, 49, 9,141,224,177, 30,119,142, 30, 23,157,
+223,223, 82, 11,146,187,231,130,111,197,127, 1, 99,173, 92,242, 48,148, 43, 5, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130,
};
-
diff --git a/source/blender/editors/gpencil/drawgpencil.c b/source/blender/editors/gpencil/drawgpencil.c
index 6651c7745bb..4f6fb92336f 100644
--- a/source/blender/editors/gpencil/drawgpencil.c
+++ b/source/blender/editors/gpencil/drawgpencil.c
@@ -52,7 +52,7 @@
#include "BKE_context.h"
#include "BKE_global.h"
#include "BKE_gpencil.h"
-#include "BKE_sequence.h"
+#include "BKE_sequencer.h"
#include "BKE_utildefines.h"
#include "PIL_time.h"
diff --git a/source/blender/editors/gpencil/gpencil_buttons.c b/source/blender/editors/gpencil/gpencil_buttons.c
index 4da5ec02ddc..5deffbabb77 100644
--- a/source/blender/editors/gpencil/gpencil_buttons.c
+++ b/source/blender/editors/gpencil/gpencil_buttons.c
@@ -187,7 +187,7 @@ static void gp_drawui_layer (uiLayout *layout, bGPdata *gpd, bGPDlayer *gpl)
/* new backdrop ----------------------------------- */
box= uiLayoutBox(layout);
- split= uiLayoutSplit(box, 0.5f);
+ split= uiLayoutSplit(box, 0.5f, 0);
/* draw settings ---------------------------------- */
diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c
index c2b9a1a4bb9..e5a0cd0f8cb 100644
--- a/source/blender/editors/gpencil/gpencil_edit.c
+++ b/source/blender/editors/gpencil/gpencil_edit.c
@@ -493,7 +493,6 @@ static void gp_layer_to_curve (bContext *C, bGPdata *gpd, bGPDlayer *gpl, short
Scene *scene= CTX_data_scene(C);
bGPDframe *gpf= gpencil_layer_getframe(gpl, CFRA, 0);
bGPDstroke *gps;
- Base *base= BASACT;
Object *ob;
Curve *cu;
@@ -529,9 +528,6 @@ static void gp_layer_to_curve (bContext *C, bGPdata *gpd, bGPDlayer *gpl, short
break;
}
}
-
- /* restore old active object */
- BASACT= base;
}
/* --- */
diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c
index 4229c66353c..3f9e3e04411 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -151,6 +151,21 @@ static int gpencil_draw_poll (bContext *C)
return (gpencil_data_get_pointers(C, NULL) != NULL);
}
+/* check if projecting strokes into 3d-geometry in the 3D-View */
+static int gpencil_project_check (tGPsdata *p)
+{
+ bGPdata *gpd= p->gpd;
+
+ if( (gpd->sbuffer_sflag & GP_STROKE_3DSPACE) &&
+ (p->scene->toolsettings->snap_mode==SCE_SNAP_MODE_FACE) &&
+ (p->scene->toolsettings->snap_flag & SCE_SNAP_PROJECT) )
+ {
+ return 1;
+ }
+
+ return 0;
+}
+
/* ******************************************* */
/* Calculations/Conversions */
@@ -211,24 +226,31 @@ static void gp_stroke_convertcoords (tGPsdata *p, short mval[], float out[])
/* in 3d-space - pt->x/y/z are 3 side-by-side floats */
if (gpd->sbuffer_sflag & GP_STROKE_3DSPACE) {
- const short mx=mval[0], my=mval[1];
- float rvec[3], dvec[3];
-
- /* Current method just converts each point in screen-coordinates to
- * 3D-coordinates using the 3D-cursor as reference. In general, this
- * works OK, but it could of course be improved.
- *
- * TODO:
- * - investigate using nearest point(s) on a previous stroke as
- * reference point instead or as offset, for easier stroke matching
- * - investigate projection onto geometry (ala retopo)
- */
- gp_get_3d_reference(p, rvec);
-
- /* method taken from editview.c - mouse_cursor() */
- project_short_noclip(p->ar, rvec, mval);
- window_to_3d_delta(p->ar, dvec, mval[0]-mx, mval[1]-my);
- sub_v3_v3v3(out, rvec, dvec);
+ if(gpencil_project_check(p) && (view_autodist_simple(p->ar, mval, out))) {
+ /* projecting onto 3D-Geometry
+ * - nothing more needs to be done here, since view_autodist_simple() has already done it
+ */
+ }
+ else {
+ const short mx=mval[0], my=mval[1];
+ float rvec[3], dvec[3];
+
+ /* Current method just converts each point in screen-coordinates to
+ * 3D-coordinates using the 3D-cursor as reference. In general, this
+ * works OK, but it could of course be improved.
+ *
+ * TODO:
+ * - investigate using nearest point(s) on a previous stroke as
+ * reference point instead or as offset, for easier stroke matching
+ */
+
+ gp_get_3d_reference(p, rvec);
+
+ /* method taken from editview.c - mouse_cursor() */
+ project_short_noclip(p->ar, rvec, mval);
+ window_to_3d_delta(p->ar, dvec, mval[0]-mx, mval[1]-my);
+ sub_v3_v3v3(out, rvec, dvec);
+ }
}
/* 2d - on 'canvas' (assume that p->v2d is set) */
@@ -1114,6 +1136,14 @@ static void gpencil_draw_exit (bContext *C, wmOperator *op)
}
/* cleanup */
+ if(gpencil_project_check(p)) {
+ View3D *v3d= p->sa->spacedata.first;
+
+ /* need to restore the original projection settings before packing up */
+ view3d_operator_needs_opengl(C);
+ view_autodist_init(p->scene, p->ar, v3d);
+ }
+
gp_paint_cleanup(p);
gp_session_cleanup(p);
@@ -1180,8 +1210,8 @@ static void gpencil_draw_apply_event (bContext *C, wmOperator *op, wmEvent *even
{
tGPsdata *p= op->customdata;
ARegion *ar= p->ar;
- //PointerRNA itemptr;
- //float mousef[2];
+ PointerRNA itemptr;
+ float mousef[2];
int tablet=0;
/* convert from window-space to area-space mouse coordintes */
@@ -1216,7 +1246,6 @@ static void gpencil_draw_apply_event (bContext *C, wmOperator *op, wmEvent *even
return;
}
-#if 0 // NOTE: disabled for now, since creating this data is currently useless anyways (and slows things down)
/* fill in stroke data (not actually used directly by gpencil_draw_apply) */
RNA_collection_add(op->ptr, "stroke", &itemptr);
@@ -1224,7 +1253,6 @@ static void gpencil_draw_apply_event (bContext *C, wmOperator *op, wmEvent *even
mousef[1]= p->mval[1];
RNA_float_set_array(&itemptr, "mouse", mousef);
RNA_float_set(&itemptr, "pressure", p->pressure);
-#endif
/* apply the current latest drawing point */
gpencil_draw_apply(C, op, p);
@@ -1235,7 +1263,7 @@ static void gpencil_draw_apply_event (bContext *C, wmOperator *op, wmEvent *even
/* ------------------------------- */
-/* operator 'redo' (i.e. after changing some properties) */
+/* operator 'redo' (i.e. after changing some properties, but also for repeat last) */
static int gpencil_draw_exec (bContext *C, wmOperator *op)
{
tGPsdata *p = NULL;
@@ -1436,6 +1464,5 @@ void GPENCIL_OT_draw (wmOperatorType *ot)
/* settings for drawing */
RNA_def_enum(ot->srna, "mode", prop_gpencil_drawmodes, 0, "Mode", "Way to intepret mouse movements.");
- // xxx the stuff below is used only for redo operator, but is not really working
RNA_def_collection_runtime(ot->srna, "stroke", &RNA_OperatorStrokeElement, "Stroke", "");
}
diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h
index 9e6a757baa2..b971abac995 100644
--- a/source/blender/editors/include/ED_anim_api.h
+++ b/source/blender/editors/include/ED_anim_api.h
@@ -311,7 +311,7 @@ typedef enum eAnimChannels_SetFlag {
ACHANNEL_SETFLAG_TOGGLE
} eAnimChannels_SetFlag;
-/* types of settings for AnimChanels */
+/* types of settings for AnimChannels */
typedef enum eAnimChannel_Settings {
ACHANNEL_SETTING_SELECT = 0,
ACHANNEL_SETTING_PROTECT, // warning: for drawing UI's, need to check if this is off (maybe inverse this later)
@@ -377,12 +377,27 @@ short ANIM_channel_setting_get(bAnimContext *ac, bAnimListElem *ale, int setting
void ANIM_channel_setting_set(bAnimContext *ac, bAnimListElem *ale, int setting, short mode);
+/* Flush visibility (for Graph Editor) changes up/down hierarchy for changes in the given setting
+ * - anim_data: list of the all the anim channels that can be chosen
+ * -> filtered using ANIMFILTER_CHANNELS only, since if we took VISIBLE too,
+ * then the channels under closed expanders get ignored...
+ * - ale_setting: the anim channel (not in the anim_data list directly, though occuring there)
+ * with the new state of the setting that we want flushed up/down the hierarchy
+ * - vizOn: whether the visibility setting has been enabled or disabled
+ */
+void ANIM_visibility_flush_anim_channels(bAnimContext *ac, ListBase *anim_data, bAnimListElem *ale_setting, short vizOn);
+
+
/* Deselect all animation channels */
void ANIM_deselect_anim_channels(void *data, short datatype, short test, short sel);
/* Set the 'active' channel of type channel_type, in the given action */
void ANIM_set_active_channel(bAnimContext *ac, void *data, short datatype, int filter, void *channel_data, short channel_type);
+
+/* Delete the F-Curve from the given AnimData block (if possible), as appropriate according to animation context */
+void ANIM_fcurve_delete_from_animdata(bAnimContext *ac, struct AnimData *adt, struct FCurve *fcu);
+
/* ************************************************ */
/* DRAWING API */
/* anim_draw.c */
@@ -409,16 +424,11 @@ void ANIM_draw_cfra(const struct bContext *C, struct View2D *v2d, short flag);
/* main call to draw preview range curtains */
void ANIM_draw_previewrange(const struct bContext *C, struct View2D *v2d);
-/* ------------- Preview Range Drawing -------------- */
-
-/* standard header buttons for Animation Editors */
-short ANIM_headerUI_standard_buttons(const struct bContext *C, struct bDopeSheet *ads, struct uiBlock *block, short xco, short yco);
-
/* ************************************************* */
/* F-MODIFIER TOOLS */
/* draw a given F-Modifier for some layout/UI-Block */
-void ANIM_uiTemplate_fmodifier_draw(const struct bContext *C, struct uiLayout *layout, struct ID *id, ListBase *modifiers, struct FModifier *fcm);
+void ANIM_uiTemplate_fmodifier_draw(struct uiLayout *layout, struct ID *id, ListBase *modifiers, struct FModifier *fcm);
/* ************************************************* */
/* ASSORTED TOOLS */
@@ -430,7 +440,7 @@ void ANIM_uiTemplate_fmodifier_draw(const struct bContext *C, struct uiLayout *l
int getname_anim_fcurve(char *name, struct ID *id, struct FCurve *fcu);
/* Automatically determine a color for the nth F-Curve */
-void ipo_rainbow(int cur, int tot, float *out);
+void getcolor_fcurve_rainbow(int cur, int tot, float *out);
/* ------------- NLA-Mapping ----------------------- */
/* anim_draw.c */
@@ -481,14 +491,11 @@ void ED_nla_postop_refresh(bAnimContext *ac);
/* --------- anim_deps.c, animation updates -------- */
- /* generic update flush, does tagged objects only, reads from Context screen (layers) and scene */
-void ED_anim_dag_flush_update(const struct bContext *C);
- /* only flush object */
-void ED_anim_object_flush_update(const struct bContext *C, struct Object *ob);
+void ANIM_id_update(struct Scene *scene, struct ID *id);
+void ANIM_list_elem_update(struct Scene *scene, bAnimListElem *ale);
-/* pose <-> action syncing */
-void ANIM_action_to_pose_sync(struct Object *ob);
-void ANIM_pose_to_action_sync(struct Object *ob, struct ScrArea *sa);
+/* data -> channels syncing */
+void ANIM_sync_animchannels_to_data(const struct bContext *C);
/* ************************************************* */
/* OPERATORS */
diff --git a/source/blender/editors/include/ED_armature.h b/source/blender/editors/include/ED_armature.h
index 1836729e419..9d35121032c 100644
--- a/source/blender/editors/include/ED_armature.h
+++ b/source/blender/editors/include/ED_armature.h
@@ -27,22 +27,23 @@
#ifndef ED_ARMATURE_H
#define ED_ARMATURE_H
-struct bContext;
-struct Scene;
-struct Object;
+struct bArmature;
struct Base;
+struct bContext;
struct Bone;
-struct bArmature;
struct bPoseChannel;
-struct wmOperator;
-struct wmKeyConfig;
+struct DerivedMesh;
+struct IDProperty;
struct ListBase;
-struct View3D;
-struct ViewContext;
+struct MeshDeformModifierData;
+struct Object;
struct RegionView3D;
+struct Scene;
struct SK_Sketch;
-struct IDProperty;
-struct MeshDeformModifierData;
+struct View3D;
+struct ViewContext;
+struct wmKeyConfig;
+struct wmOperator;
typedef struct EditBone
{
@@ -65,17 +66,16 @@ typedef struct EditBone
their parents. Therefore any rotations specified during the
animation are automatically relative to the bones' rest positions*/
int flag;
-
- int parNr; /* Used for retrieving values from the menu system */
+ int layer;
float dist, weight;
float xwidth, length, zwidth; /* put them in order! transform uses this as scale */
float ease1, ease2;
float rad_head, rad_tail;
- short layer, segments;
float oldlength; /* for envelope scaling */
-
+
+ short segments;
} EditBone;
#define BONESEL_ROOT 0x10000000
@@ -107,7 +107,7 @@ void ED_armature_deselectall(struct Object *obedit, int toggle, int doundo);
int ED_do_pose_selectbuffer(struct Scene *scene, struct Base *base, unsigned int *buffer,
short hits, short extend);
-void mouse_armature(struct bContext *C, short mval[2], int extend);
+int mouse_armature(struct bContext *C, short mval[2], int extend);
int join_armature_exec(struct bContext *C, struct wmOperator *op);
struct Bone *get_indexed_bone (struct Object *ob, int index);
float ED_rollBoneToVector(EditBone *bone, float new_up_axis[3]);
@@ -116,7 +116,8 @@ void ED_armature_sync_selection(struct ListBase *edbo);
void ED_armature_validate_active(struct bArmature *arm);
void add_primitive_bone(struct Scene *scene, struct View3D *v3d, struct RegionView3D *rv3d);
-EditBone *addEditBone(struct bArmature *arm, char *name); /* used by COLLADA importer */
+struct EditBone *ED_armature_edit_bone_add(struct bArmature *arm, char *name);
+void ED_armature_edit_bone_remove(struct bArmature *arm, EditBone *exBone);
void transform_armature_mirror_update(struct Object *obedit);
void clear_armature(struct Scene *scene, struct Object *ob, char mode);
@@ -165,7 +166,8 @@ void BDR_drawSketch(const struct bContext *vc);
int BDR_drawSketchNames(struct ViewContext *vc);
/* meshlaplacian.c */
-void harmonic_coordinates_bind(struct Scene *scene, struct MeshDeformModifierData *mmd,
+void mesh_deform_bind(struct Scene *scene, struct DerivedMesh *dm,
+ struct MeshDeformModifierData *mmd,
float *vertexcos, int totvert, float cagemat[][4]);
#endif /* ED_ARMATURE_H */
diff --git a/source/blender/editors/include/ED_curve.h b/source/blender/editors/include/ED_curve.h
index fea684971b2..0cfa743b0fa 100644
--- a/source/blender/editors/include/ED_curve.h
+++ b/source/blender/editors/include/ED_curve.h
@@ -43,6 +43,11 @@ void ED_operatortypes_curve(void);
void ED_keymap_curve (struct wmKeyConfig *keyconf);
/* editcurve.c */
+void CU_deselect_all(struct Object *obedit);
+void CU_select_all(struct Object *obedit);
+void CU_select_swap(struct Object *obedit);
+
+
void undo_push_curve (struct bContext *C, char *name);
ListBase *curve_get_editcurve(struct Object *ob);
@@ -50,7 +55,7 @@ void load_editNurb (struct Object *obedit);
void make_editNurb (struct Object *obedit);
void free_editNurb (struct Object *obedit);
-void mouse_nurb (struct bContext *C, short mval[2], int extend);
+int mouse_nurb (struct bContext *C, short mval[2], int extend);
struct Nurb *add_nurbs_primitive(struct bContext *C, int type, int newname);
diff --git a/source/blender/editors/include/ED_keyframes_edit.h b/source/blender/editors/include/ED_keyframes_edit.h
index 4a0a3ee24db..9e29d747d4a 100644
--- a/source/blender/editors/include/ED_keyframes_edit.h
+++ b/source/blender/editors/include/ED_keyframes_edit.h
@@ -100,11 +100,19 @@ typedef struct BeztEditData {
/* ------- Function Pointer Typedefs ---------------- */
- /* callback function that refreshes the IPO curve after use */
+ /* callback function that refreshes the F-Curve after use */
typedef void (*FcuEditFunc)(struct FCurve *fcu);
/* callback function that operates on the given BezTriple */
typedef short (*BeztEditFunc)(BeztEditData *bed, struct BezTriple *bezt);
+/* ------- Custom Data Type Defines ------------------ */
+
+/* Custom data for remapping one range to another in a fixed way */
+typedef struct BeztEditCD_Remap {
+ float oldMin, oldMax; /* old range */
+ float newMin, newMax; /* new range */
+} BeztEditCD_Remap;
+
/* ---------------- Looping API --------------------- */
/* functions for looping over keyframes */
@@ -137,9 +145,17 @@ BeztEditFunc ANIM_editkeyframes_keytype(short mode);
/* ----------- BezTriple Callback (Assorted Utilities) ---------- */
+/* used to calculate the the average location of all relevant BezTriples by summing their locations */
short bezt_calc_average(BeztEditData *bed, struct BezTriple *bezt);
+
+/* used to extract a set of cfra-elems from the keyframes */
short bezt_to_cfraelem(BeztEditData *bed, struct BezTriple *bezt);
+/* used to remap times from one range to another
+ * requires: bed->custom = BeztEditCD_Remap
+ */
+void bezt_remap_times(BeztEditData *bed, struct BezTriple *bezt);
+
/* ************************************************ */
/* Destructive Editing API (keyframes_general.c) */
diff --git a/source/blender/editors/include/ED_keyframing.h b/source/blender/editors/include/ED_keyframing.h
index 97a08845020..d16cfe540ea 100644
--- a/source/blender/editors/include/ED_keyframing.h
+++ b/source/blender/editors/include/ED_keyframing.h
@@ -49,6 +49,13 @@ struct PropertyRNA;
/* ************ Keyframing Management **************** */
+/* Get the active settings for keyframing settings from context (specifically the given scene)
+ * - incl_mode: include settings from keyframing mode in the result (i.e. replace only)
+ */
+short ANIM_get_keyframing_flags(struct Scene *scene, short incl_mode);
+
+/* -------- */
+
/* Get (or add relevant data to be able to do so) the Active Action for the given
* Animation Data block, given an ID block where the Animation Data should reside.
*/
@@ -149,7 +156,7 @@ short ANIM_driver_can_paste(void);
/* Main Driver Management API calls:
* Add a new driver for the specified property on the given ID block
*/
-short ANIM_add_driver (struct ID *id, const char rna_path[], int array_index, short flag, int type);
+short ANIM_add_driver(struct ID *id, const char rna_path[], int array_index, short flag, int type);
/* Main Driver Management API calls:
* Remove the driver for the specified property on the given ID block (if available)
diff --git a/source/blender/editors/include/ED_mball.h b/source/blender/editors/include/ED_mball.h
index 6708a73e088..b21bcb0cc09 100644
--- a/source/blender/editors/include/ED_mball.h
+++ b/source/blender/editors/include/ED_mball.h
@@ -35,7 +35,7 @@ void ED_keymap_metaball(struct wmKeyConfig *keyconf);
struct MetaElem *add_metaball_primitive(struct bContext *C, int type, int newname);
-void mouse_mball(struct bContext *C, short mval[2], int extend);
+int mouse_mball(struct bContext *C, short mval[2], int extend);
void free_editMball(struct Object *obedit);
void make_editMball(struct Object *obedit);
diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h
index 1cd685b5f32..273dc50317b 100644
--- a/source/blender/editors/include/ED_mesh.h
+++ b/source/blender/editors/include/ED_mesh.h
@@ -151,6 +151,9 @@ struct BMVert *editmesh_get_x_mirror_vert(struct Object *ob, struct BMEditMesh
int mesh_get_x_mirror_vert(struct Object *ob, int index);
int *mesh_get_x_mirror_faces(struct Object *ob, struct BMEditMesh *em);
+int join_mesh_exec(struct bContext *C, struct wmOperator *op);
+int join_mesh_shapes_exec(struct bContext *C, struct wmOperator *op);
+
/* mesh_ops.c */
void ED_operatortypes_mesh(void);
void ED_operatormacros_mesh(void);
@@ -193,6 +196,7 @@ void EM_select_face_fgon(struct EditMesh *em, struct EditFace *efa, int val);
void EM_select_swap(struct EditMesh *em);
void EM_toggle_select_all(struct EditMesh *em);
void EM_select_all(struct EditMesh *em);
+void EM_deselect_all(struct EditMesh *em);
void EM_selectmode_flush(struct EditMesh *em);
void EM_deselect_flush(struct EditMesh *em);
void EM_selectmode_set(struct EditMesh *em);
@@ -210,11 +214,16 @@ struct UvVertMap *EM_make_uv_vert_map(struct EditMesh *em, int selected, int do_
struct UvMapVert *EM_get_uv_map_vert(struct UvVertMap *vmap, unsigned int v);
void EM_free_uv_vert_map(struct UvVertMap *vmap);
+void EM_make_hq_normals(struct EditMesh *em);
+void EM_solidify(struct EditMesh *em, float dist);
+
+int EM_deselect_nth(struct EditMesh *em, int nth);
+
/* editmesh_mods.c */
extern unsigned int bm_vertoffs, bm_solidoffs, bm_wireoffs;
void EM_cache_x_mirror_vert(struct Object *ob, struct EditMesh *em);
-void mouse_mesh(struct bContext *C, short mval[2], short extend);
+int mouse_mesh(struct bContext *C, short mval[2], short extend);
int EM_check_backbuf(unsigned int index);
int EM_mask_init_backbuf_border(struct ViewContext *vc, short mcords[][2], short tot, short xmin, short ymin, short xmax, short ymax);
void EM_free_backbuf(void);
@@ -229,8 +238,8 @@ void EM_automerge(struct Scene *scene, struct Object *obedit, int update);
/* editface.c */
struct MTFace *EM_get_active_mtface(struct EditMesh *em, struct EditFace **act_efa, struct MCol **mcol, int sloppy);
int face_select(struct bContext *C, struct Object *ob, short mval[2], int extend);
-void face_borderselect(struct bContext *C, struct Object *ob, struct rcti *rect, int select);
-void deselectall_tface(struct Object *ob);
+void face_borderselect(struct bContext *C, struct Object *ob, struct rcti *rect, int select, int extend);
+void selectall_tface(struct Object *ob, int action);
void select_linked_tfaces(struct bContext *C, struct Object *ob, short mval[2], int mode);
/* object_vgroup.c */
diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h
index e48a98a65f1..1b77d298e3a 100644
--- a/source/blender/editors/include/ED_object.h
+++ b/source/blender/editors/include/ED_object.h
@@ -36,6 +36,7 @@ struct bContext;
struct Base;
struct View3D;
struct bConstraint;
+struct bPoseChannel;
struct KeyBlock;
struct Lattice;
struct Mesh;
@@ -92,6 +93,7 @@ int object_data_is_libdata(struct Object *ob);
/* constraints */
struct ListBase *get_active_constraints(struct Object *ob);
+struct ListBase *get_constraint_lb(struct Object *ob, struct bConstraint *con, struct bPoseChannel **pchan_r);
struct bConstraint *get_active_constraint(struct Object *ob);
void object_test_constraints(struct Object *ob);
@@ -102,7 +104,7 @@ void ED_object_constraint_update(struct Object *ob);
void ED_object_constraint_dependency_update(struct Scene *scene, struct Object *ob);
/* object_lattice.c */
-void mouse_lattice(struct bContext *C, short mval[2], int extend);
+int mouse_lattice(struct bContext *C, short mval[2], int extend);
void undo_push_lattice(struct bContext *C, char *name);
/* object_shapekey.c */
@@ -113,13 +115,17 @@ 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_lattice.c */
+
+void ED_setflagsLatt(struct Object *obedit, int flag);
+
/* object_modifier.c */
enum {
MODIFIER_APPLY_DATA=1,
MODIFIER_APPLY_SHAPE,
} eModifier_Apply_Mode;
-struct ModifierData *ED_object_modifier_add(struct ReportList *reports, struct Scene *scene, struct Object *ob, int type);
+struct ModifierData *ED_object_modifier_add(struct ReportList *reports, struct Scene *scene, struct Object *ob, char *name, int type);
int ED_object_modifier_remove(struct ReportList *reports, struct Scene *scene, 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);
diff --git a/source/blender/editors/include/ED_particle.h b/source/blender/editors/include/ED_particle.h
index fcdaf8cb59d..6dd54fd9b1a 100644
--- a/source/blender/editors/include/ED_particle.h
+++ b/source/blender/editors/include/ED_particle.h
@@ -57,7 +57,7 @@ void PE_update_object(struct Scene *scene, struct Object *ob, int useflag);
/* selection tools */
int PE_mouse_particles(struct bContext *C, short *mval, int extend);
-int PE_border_select(struct bContext *C, struct rcti *rect, int select);
+int PE_border_select(struct bContext *C, struct rcti *rect, int select, int extend);
int PE_circle_select(struct bContext *C, int selecting, short *mval, float rad);
int PE_lasso_select(struct bContext *C, short mcords[][2], short moves, short select);
diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h
index 18c86306e44..89f032efc21 100644
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@ -81,7 +81,7 @@ void ED_area_tag_refresh(ScrArea *sa);
void ED_area_do_refresh(struct bContext *C, ScrArea *sa);
void ED_area_headerprint(ScrArea *sa, const char *str);
void ED_area_newspace(struct bContext *C, ScrArea *sa, int type);
-void ED_area_prevspace(struct bContext *C);
+void ED_area_prevspace(struct bContext *C, ScrArea *sa);
void ED_area_swapspace(struct bContext *C, ScrArea *sa1, ScrArea *sa2);
/* screens */
@@ -98,9 +98,10 @@ void ED_screen_delete_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 redraws, int sync, int enable);
-void ED_screen_animation_timer_update(struct bContext *C, int redraws);
+void ED_screen_animation_timer_update(struct bScreen *screen, int redraws);
int ED_screen_full_newspace(struct bContext *C, ScrArea *sa, int type);
-void ED_screen_full_prevspace(struct bContext *C);
+void ED_screen_full_prevspace(struct bContext *C, ScrArea *sa);
+void ED_screen_full_restore(struct bContext *C, ScrArea *sa);
void ED_screen_new_window(struct bContext *C, struct rcti *position, int type);
@@ -132,7 +133,9 @@ int ED_operator_nla_active(struct bContext *C);
int ED_operator_logic_active(struct bContext *C);
int ED_operator_object_active(struct bContext *C);
+int ED_operator_object_active_editable(struct bContext *C);
int ED_operator_editmesh(struct bContext *C);
+int ED_operator_editmesh_view3d(struct bContext *C);
int ED_operator_editarmature(struct bContext *C);
int ED_operator_editcurve(struct bContext *C);
int ED_operator_editsurf(struct bContext *C);
@@ -152,6 +155,7 @@ int ED_operator_posemode(struct bContext *C);
#define ED_KEYMAP_ANIMATION 8
#define ED_KEYMAP_FRAMES 16
#define ED_KEYMAP_GPENCIL 32
+#define ED_KEYMAP_HEADER 64
#endif /* ED_SCREEN_H */
diff --git a/source/blender/editors/include/ED_screen_types.h b/source/blender/editors/include/ED_screen_types.h
index dcdc9e417e4..0deda5a2a84 100644
--- a/source/blender/editors/include/ED_screen_types.h
+++ b/source/blender/editors/include/ED_screen_types.h
@@ -32,8 +32,9 @@
/* for animplayer */
typedef struct ScreenAnimData {
ARegion *ar; /* do not read from this, only for comparing if region exists */
- int redraws;
- int flag; /* flags for playback */
+ short redraws;
+ short flag; /* flags for playback */
+ int sfra; /* frame that playback was started from */
} ScreenAnimData;
/* for animplayer */
@@ -49,7 +50,7 @@ enum {
};
-
+/* for editing areas/regions */
typedef struct AZone {
struct AZone *next, *prev;
ARegion *ar;
diff --git a/source/blender/editors/include/ED_sculpt.h b/source/blender/editors/include/ED_sculpt.h
index 764efb4ef0c..aae79e9a1de 100644
--- a/source/blender/editors/include/ED_sculpt.h
+++ b/source/blender/editors/include/ED_sculpt.h
@@ -28,18 +28,28 @@
#ifndef ED_SCULPT_H
#define ED_SCULPT_H
+struct ARegion;
struct bContext;
+struct Object;
+struct RegionView3D;
struct wmKeyConfig;
+struct wmWindowManager;
/* sculpt.c */
void ED_operatortypes_sculpt(void);
+void sculpt_get_redraw_planes(float planes[4][4], struct ARegion *ar,
+ struct RegionView3D *rv3d, struct Object *ob);
+void ED_sculpt_force_update(struct bContext *C);
/* paint_ops.c */
void ED_operatortypes_paint(void);
void ED_keymap_paint(struct wmKeyConfig *keyconf);
-/* paint_image.c */
-void undo_imagepaint_step(int step);
-void undo_imagepaint_clear(void);
+/* paint_undo.c */
+#define UNDO_PAINT_IMAGE 0
+#define UNDO_PAINT_MESH 1
+
+void ED_undo_paint_step(struct bContext *C, int type, int step);
+void ED_undo_paint_free(void);
#endif
diff --git a/source/blender/editors/include/ED_sequencer.h b/source/blender/editors/include/ED_sequencer.h
index 2a3b5445dfe..07c4dd6ca41 100644
--- a/source/blender/editors/include/ED_sequencer.h
+++ b/source/blender/editors/include/ED_sequencer.h
@@ -28,4 +28,7 @@
#define SEQ_ZOOM_FAC(szoom) (szoom > 0)? (szoom) : (szoom == 0)? (1.0) : (-1.0/szoom)
+/* in space_sequencer.c, for rna update function */
+void ED_sequencer_update_view(bContext *C, int view);
+
#endif /* ED_SEQUENCER_H */
diff --git a/source/blender/editors/include/ED_transform.h b/source/blender/editors/include/ED_transform.h
index 0f17599daae..8750010bed5 100644
--- a/source/blender/editors/include/ED_transform.h
+++ b/source/blender/editors/include/ED_transform.h
@@ -77,7 +77,8 @@ enum {
TFM_BEVEL,
TFM_BWEIGHT,
TFM_ALIGN,
- TFM_EDGE_SLIDE
+ TFM_EDGE_SLIDE,
+ TFM_SEQ_SLIDE
} TfmMode;
/* TRANSFORM CONTEXTS */
@@ -95,7 +96,7 @@ enum {
* returns 1 if successful, 0 otherwise (usually means there's no selection)
* (if 0 is returns, *vec is unmodified)
* */
-int calculateTransformCenter(struct bContext *C, struct wmEvent *event, int centerMode, float *vec);
+int calculateTransformCenter(struct bContext *C, int centerMode, float *vec);
struct TransInfo;
struct ScrArea;
@@ -135,7 +136,7 @@ void BIF_selectOrientation(void);
/* to be able to add operator properties to other operators */
void Properties_Proportional(struct wmOperatorType *ot);
-void Properties_Snapping(struct wmOperatorType *ot, short align);
+void Properties_Snapping(struct wmOperatorType *ot, short fullsnap, short align);
void Properties_Constraints(struct wmOperatorType *ot);
/* view3d manipulators */
diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h
index 65a9e24d93d..7210d6a4151 100644
--- a/source/blender/editors/include/ED_view3d.h
+++ b/source/blender/editors/include/ED_view3d.h
@@ -30,6 +30,7 @@
/* ********* exports for space_view3d/ module ********** */
struct ARegion;
+struct BoundBox;
struct View3D;
struct RegionView3D;
struct ViewContext;
@@ -44,6 +45,7 @@ struct ImBuf;
struct Scene;
struct bContext;
struct Main;
+struct rcti;
/* for derivedmesh drawing callbacks, for view3d_select, .... */
typedef struct ViewContext {
@@ -80,6 +82,8 @@ void request_depth_update(struct RegionView3D *rv3d);
/* Projection */
#define IS_CLIPPED 12000
+void view3d_calculate_clipping(struct BoundBox *bb, float planes[4][4], struct bglMats *mats, struct rcti *rect);
+
void project_short(struct ARegion *ar, float *vec, short *adr);
void project_short_noclip(struct ARegion *ar, float *vec, short *adr);
@@ -117,8 +121,13 @@ unsigned int view3d_sample_backbuf_rect(struct ViewContext *vc, short mval[2], i
void *handle, unsigned int (*indextest)(void *handle, unsigned int index));
unsigned int view3d_sample_backbuf(struct ViewContext *vc, int x, int y);
+/* draws and does a 4x4 sample */
int view_autodist(struct Scene *scene, struct ARegion *ar, struct View3D *v3d, short *mval, float mouse_worldloc[3]);
+/* only draw so view_autodist_simple can be called many times after */
+int view_autodist_init(struct Scene *scene, struct ARegion *ar, struct View3D *v3d);
+int view_autodist_simple(struct ARegion *ar, short *mval, float mouse_worldloc[3]);
+
/* select */
#define MAXPICKBUF 10000
short view3d_opengl_select(struct ViewContext *vc, unsigned int *buffer, unsigned int bufsize, rcti *input);
@@ -126,7 +135,7 @@ short view3d_opengl_select(struct ViewContext *vc, unsigned int *buffer, unsigne
void view3d_set_viewcontext(struct bContext *C, struct ViewContext *vc);
void view3d_operator_needs_opengl(const struct bContext *C);
void view3d_get_view_aligned_coordinate(struct ViewContext *vc, float *fp, short mval[2]);
-void view3d_get_transformation(struct ViewContext *vc, struct Object *ob, struct bglMats *mats);
+void view3d_get_transformation(struct ARegion *ar, struct RegionView3D *rv3d, struct Object *ob, struct bglMats *mats);
/* XXX should move to arithb.c */
int edge_inside_circle(short centx, short centy, short rad, short x1, short y1, short x2, short y2);
@@ -139,6 +148,7 @@ struct RegionView3D *ED_view3d_context_rv3d(struct bContext *C);
void ED_view3d_init_mats_rv3d(struct Object *ob, struct RegionView3D *rv3d);
void ED_view3d_scene_layers_update(struct Main *bmain, struct Scene *scene);
+int ED_view3d_scene_layer_set(int lay, const int *values);
int ED_view3d_context_activate(struct bContext *C);
void ED_view3d_draw_offscreen(struct Scene *scene, struct View3D *v3d, struct ARegion *ar,
diff --git a/source/blender/editors/include/UI_icons.h b/source/blender/editors/include/UI_icons.h
index a3dd6426f99..01c15a7d303 100644
--- a/source/blender/editors/include/UI_icons.h
+++ b/source/blender/editors/include/UI_icons.h
@@ -76,7 +76,7 @@ DEF_ICON(ICON_UNLOCKED)
DEF_ICON(ICON_LOCKED)
DEF_ICON(ICON_UNPINNED)
DEF_ICON(ICON_PINNED)
-DEF_ICON(ICON_BLANK015)
+DEF_ICON(ICON_SCREEN_BACK)
DEF_ICON(ICON_RIGHTARROW)
DEF_ICON(ICON_DOWNARROW_HLT)
DEF_ICON(ICON_DOTSUP)
@@ -394,18 +394,18 @@ DEF_ICON(ICON_BLANK654)
DEF_ICON(ICON_BLANK655)
/* EMPTY */
-DEF_ICON(ICON_BLANK660)
-DEF_ICON(ICON_BLANK661)
-DEF_ICON(ICON_BLANK662)
-DEF_ICON(ICON_BLANK663)
-DEF_ICON(ICON_BLANK664)
-DEF_ICON(ICON_BLANK665)
-DEF_ICON(ICON_BLANK666)
-DEF_ICON(ICON_BLANK667)
-DEF_ICON(ICON_BLANK668)
-DEF_ICON(ICON_BLANK669)
-DEF_ICON(ICON_BLANK670)
-DEF_ICON(ICON_BLANK671)
+DEF_ICON(ICON_FORCE_FORCE)
+DEF_ICON(ICON_FORCE_WIND)
+DEF_ICON(ICON_FORCE_VORTEX)
+DEF_ICON(ICON_FORCE_MAGNETIC)
+DEF_ICON(ICON_FORCE_HARMONIC)
+DEF_ICON(ICON_FORCE_CHARGE)
+DEF_ICON(ICON_FORCE_LENNARDJONES)
+DEF_ICON(ICON_FORCE_TEXTURE)
+DEF_ICON(ICON_FORCE_CURVE)
+DEF_ICON(ICON_FORCE_BOID)
+DEF_ICON(ICON_FORCE_TURBULENCE)
+DEF_ICON(ICON_FORCE_DRAG)
DEF_ICON(ICON_BLANK672)
DEF_ICON(ICON_BLANK673)
DEF_ICON(ICON_BLANK674)
@@ -641,19 +641,19 @@ DEF_ICON(ICON_PROP_OFF)
DEF_ICON(ICON_PROP_ON)
DEF_ICON(ICON_PROP_CON)
DEF_ICON(ICON_BLANK212)
-DEF_ICON(ICON_BLANK213)
-DEF_ICON(ICON_BLANK214)
-DEF_ICON(ICON_BLANK214b)
+DEF_ICON(ICON_PARTICLE_POINT)
+DEF_ICON(ICON_PARTICLE_TIP)
+DEF_ICON(ICON_PARTICLE_PATH)
/* EDITING */
DEF_ICON(ICON_MAN_TRANS)
DEF_ICON(ICON_MAN_ROT)
DEF_ICON(ICON_MAN_SCALE)
DEF_ICON(ICON_MANIPUL)
-DEF_ICON(ICON_BLANK215)
-DEF_ICON(ICON_SNAP_GEAR)
-DEF_ICON(ICON_SNAP_GEO)
+DEF_ICON(ICON_SNAP_OFF)
+DEF_ICON(ICON_SNAP_ON)
DEF_ICON(ICON_SNAP_NORMAL)
+DEF_ICON(ICON_SNAP_INCREMENT)
DEF_ICON(ICON_SNAP_VERTEX)
DEF_ICON(ICON_SNAP_EDGE)
DEF_ICON(ICON_SNAP_FACE)
@@ -709,7 +709,7 @@ DEF_ICON(ICON_SMOOTH)
DEF_ICON(ICON_POTATO)
DEF_ICON(ICON_BLANK248)
DEF_ICON(ICON_ORTHO)
-DEF_ICON(ICON_BLANK249)
+DEF_ICON(ICON_ORTHO_OFF)
DEF_ICON(ICON_CAMERA)
DEF_ICON(ICON_LOCKVIEW_OFF)
DEF_ICON(ICON_LOCKVIEW_ON)
@@ -871,14 +871,14 @@ DEF_ICON(ICON_BLANK346b)
/* vector icons */
-DEF_ICON(VICON_VIEW3D)
-DEF_ICON(VICON_EDIT)
-DEF_ICON(VICON_EDITMODE_DEHLT)
-DEF_ICON(VICON_EDITMODE_HLT)
-DEF_ICON(VICON_DISCLOSURE_TRI_RIGHT)
-DEF_ICON(VICON_DISCLOSURE_TRI_DOWN)
-DEF_ICON(VICON_MOVE_UP)
-DEF_ICON(VICON_MOVE_DOWN)
-DEF_ICON(VICON_X)
-DEF_ICON(VICON_SMALL_TRI_RIGHT)
+DEF_ICON(VICO_VIEW3D_VEC)
+DEF_ICON(VICO_EDIT_VEC)
+DEF_ICON(VICO_EDITMODE_DEHLT)
+DEF_ICON(VICO_EDITMODE_HLT)
+DEF_ICON(VICO_DISCLOSURE_TRI_RIGHT_VEC)
+DEF_ICON(VICO_DISCLOSURE_TRI_DOWN_VEC)
+DEF_ICON(VICO_MOVE_UP_VEC)
+DEF_ICON(VICO_MOVE_DOWN_VEC)
+DEF_ICON(VICO_X_VEC)
+DEF_ICON(VICO_SMALL_TRI_RIGHT_VEC)
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h
index 7fa601c749d..2af7fe09509 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -591,6 +591,8 @@ void UI_exit(void);
#define UI_ITEM_R_ICON_ONLY 16
#define UI_ITEM_R_EVENT 32
#define UI_ITEM_R_FULL_EVENT 64
+#define UI_ITEM_R_NO_BG 128
+#define UI_ITEM_R_IMMEDIATE 256
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);
@@ -600,6 +602,7 @@ uiBlock *uiLayoutGetBlock(uiLayout *layout);
void uiLayoutSetFunc(uiLayout *layout, uiMenuHandleFunc handlefunc, void *argv);
void uiLayoutSetContextPointer(uiLayout *layout, char *name, struct PointerRNA *ptr);
+char *uiLayoutIntrospect(uiLayout *layout); // XXX - testing
void uiLayoutSetOperatorContext(uiLayout *layout, int opcontext);
void uiLayoutSetActive(uiLayout *layout, int active);
@@ -628,13 +631,14 @@ uiLayout *uiLayoutBox(uiLayout *layout);
uiLayout *uiLayoutListBox(uiLayout *layout, struct PointerRNA *ptr, struct PropertyRNA *prop,
struct PointerRNA *actptr, struct PropertyRNA *actprop);
uiLayout *uiLayoutAbsolute(uiLayout *layout, int align);
-uiLayout *uiLayoutSplit(uiLayout *layout, float percentage);
+uiLayout *uiLayoutSplit(uiLayout *layout, float percentage, int align);
uiLayout *uiLayoutOverlap(uiLayout *layout);
uiBlock *uiLayoutAbsoluteBlock(uiLayout *layout);
/* templates */
void uiTemplateHeader(uiLayout *layout, struct bContext *C, int menus);
+void uiTemplateDopeSheetFilter(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr);
void uiTemplateID(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname,
char *newop, char *openop, char *unlinkop);
void uiTemplateAnyID(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname,
@@ -647,7 +651,8 @@ void uiTemplatePreview(uiLayout *layout, struct ID *id, struct ID *parent, struc
void uiTemplateColorRamp(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand);
void uiTemplateCurveMapping(uiLayout *layout, struct PointerRNA *ptr, char *propname, int type, int levels);
void uiTemplateTriColorSet(uiLayout *layout, struct PointerRNA *ptr, char *propname);
-void uiTemplateLayers(uiLayout *layout, struct PointerRNA *ptr, char *propname);
+void uiTemplateLayers(uiLayout *layout, struct PointerRNA *ptr, char *propname,
+ PointerRNA *used_ptr, char *used_propname, int active_layer);
void uiTemplateImage(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, struct PointerRNA *userptr, int compact);
void uiTemplateImageLayers(uiLayout *layout, struct bContext *C, struct Image *ima, struct ImageUser *iuser);
void uiTemplateRunningJobs(uiLayout *layout, struct bContext *C);
@@ -674,6 +679,7 @@ void uiItemEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr,
void uiItemEnumR_string(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, char *value);
void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, char *propname);
void uiItemPointerR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, struct PointerRNA *searchptr, char *searchpropname);
+void uiItemsFullEnumO(uiLayout *layout, char *opname, char *propname, struct IDProperty *properties, int context, int flag);
void uiItemL(uiLayout *layout, char *name, int icon); /* label */
void uiItemM(uiLayout *layout, struct bContext *C, char *name, int icon, char *menuname); /* menu */
@@ -684,6 +690,9 @@ void uiItemMenuF(uiLayout *layout, char *name, int icon, uiMenuCreateFunc func,
void uiItemMenuEnumO(uiLayout *layout, char *name, int icon, char *opname, char *propname);
void uiItemMenuEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname);
+/* UI Operators */
+void UI_buttons_operatortypes(void);
+
/* Helpers for Operators */
void uiAnimContextProperty(const struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA **prop, int *index);
void uiFileBrowseContextProperty(const struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA **prop);
diff --git a/source/blender/editors/include/UI_view2d.h b/source/blender/editors/include/UI_view2d.h
index 8fbff25589d..e3b00c21d04 100644
--- a/source/blender/editors/include/UI_view2d.h
+++ b/source/blender/editors/include/UI_view2d.h
@@ -195,7 +195,7 @@ 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);
+void UI_view2d_operatortypes(void);
void UI_view2d_keymap(struct wmKeyConfig *keyconf);
#endif /* UI_VIEW2D_H */
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index f8490204968..88b9c7819fd 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -320,7 +320,11 @@ static void ui_centered_bounds_block(const bContext *C, uiBlock *block)
int startx, starty;
int width, height;
- wm_window_get_size(window, &xmax, &ymax);
+ /* note: this is used for the splash where window bounds event has not been
+ * updated by ghost, get the window bounds from ghost directly */
+
+ // wm_window_get_size(window, &xmax, &ymax);
+ wm_window_get_size_ghost(window, &xmax, &ymax);
ui_bounds_block(block);
@@ -1786,14 +1790,17 @@ uiBlock *uiBeginBlock(const bContext *C, ARegion *region, const char *name, shor
{
uiBlock *block;
wmWindow *window;
+ Scene *scn;
int getsizex, getsizey;
window= CTX_wm_window(C);
+ scn = CTX_data_scene(C);
block= MEM_callocN(sizeof(uiBlock), "uiBlock");
block->active= 1;
block->dt= dt;
block->evil_C= (void*)C; // XXX
+ if (scn) block->color_profile= (scn->r.color_mgt_flag & R_COLOR_MANAGEMENT);
BLI_strncpy(block->name, name, sizeof(block->name));
if(region)
@@ -1960,7 +1967,7 @@ void ui_check_but(uiBut *but)
sprintf(but->drawstr, "%s%.2f", but->str, value);
}
}
- else strcpy(but->drawstr, but->str);
+ else strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR);
break;
@@ -1978,7 +1985,7 @@ void ui_check_but(uiBut *but)
break;
case KEYEVT:
- strcpy(but->drawstr, but->str);
+ strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR);
if (but->flag & UI_SELECT) {
strcat(but->drawstr, "Press a key");
} else {
@@ -1988,48 +1995,43 @@ void ui_check_but(uiBut *but)
case HOTKEYEVT:
if (but->flag & UI_SELECT) {
- short *sp= (short *)but->func_arg3;
-
- if(but->flag & UI_BUT_IMMEDIATE)
- strcpy(but->drawstr, but->str);
- else
- strcpy(but->drawstr, "");
+ strncpy(but->drawstr, "", UI_MAX_DRAW_STR);
- if(*sp) {
+ if(but->modifier_key) {
char *str= but->drawstr;
- if(*sp & KM_SHIFT)
+ if(but->modifier_key & KM_SHIFT)
str= strcat(str, "Shift ");
- if(*sp & KM_CTRL)
+ if(but->modifier_key & KM_CTRL)
str= strcat(str, "Ctrl ");
- if(*sp & KM_ALT)
+ if(but->modifier_key & KM_ALT)
str= strcat(str, "Alt ");
- if(*sp & KM_OSKEY)
+ if(but->modifier_key & KM_OSKEY)
str= strcat(str, "Cmd ");
}
else
strcat(but->drawstr, "Press a key ");
}
else
- strcpy(but->drawstr, but->str);
+ strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR);
break;
case BUT_TOGDUAL:
/* trying to get the dual-icon to left of text... not very nice */
if(but->str[0]) {
- strcpy(but->drawstr, " ");
- strcpy(but->drawstr+2, but->str);
+ strncpy(but->drawstr, " ", UI_MAX_DRAW_STR);
+ strncpy(but->drawstr+2, but->str, UI_MAX_DRAW_STR-2);
}
break;
default:
- strcpy(but->drawstr, but->str);
+ strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR);
}
/* if we are doing text editing, this will override the drawstr */
if(but->editstr)
- strcpy(but->drawstr, but->editstr);
+ strncpy(but->drawstr, but->editstr, UI_MAX_DRAW_STR);
/* text clipping moved to widget drawing code itself */
}
@@ -2235,6 +2237,7 @@ static uiBut *ui_def_but(uiBlock *block, int type, int retval, char *str, short
but->bit= type & BIT;
but->bitnr= type & 31;
but->icon = 0;
+ but->iconadd=0;
but->retval= retval;
if( strlen(str)>=UI_MAX_NAME_STR-1 ) {
@@ -2290,6 +2293,7 @@ static uiBut *ui_def_but(uiBlock *block, int type, int retval, char *str, short
if(ELEM(but->type, HSVCUBE, HSVCIRCLE)) { /* hsv buttons temp storage */
float rgb[3];
ui_get_but_vectorf(but, rgb);
+
rgb_to_hsv(rgb[0], rgb[1], rgb[2], but->hsv, but->hsv+1, but->hsv+2);
}
@@ -2963,7 +2967,7 @@ PointerRNA *uiButGetOperatorPtrRNA(uiBut *but)
{
if(but->optype && !but->opptr) {
but->opptr= MEM_callocN(sizeof(PointerRNA), "uiButOpPtr");
- WM_operator_properties_create(but->opptr, but->optype->idname);
+ WM_operator_properties_create_ptr(but->opptr, but->optype);
}
return but->opptr;
@@ -3160,7 +3164,7 @@ uiBut *uiDefKeyevtButS(uiBlock *block, int retval, char *str, short x1, short y1
uiBut *uiDefHotKeyevtButS(uiBlock *block, int retval, char *str, short x1, short y1, short x2, short y2, short *keypoin, short *modkeypoin, char *tip)
{
uiBut *but= ui_def_but(block, HOTKEYEVT|SHO, retval, str, x1, y1, x2, y2, keypoin, 0.0, 0.0, 0.0, 0.0, tip);
- but->func_arg3= modkeypoin; /* XXX hrmf, abuse! */
+ but->modifier_key= *modkeypoin;
ui_check_but(but);
return but;
}
diff --git a/source/blender/editors/interface/interface_anim.c b/source/blender/editors/interface/interface_anim.c
index d2948852346..acfd48e0269 100644
--- a/source/blender/editors/interface/interface_anim.c
+++ b/source/blender/editors/interface/interface_anim.c
@@ -147,14 +147,7 @@ void ui_but_anim_autokey(uiBut *but, Scene *scene, float cfra)
// TODO: this should probably respect the keyingset only option for anim
if(autokeyframe_cfra_can_key(scene, id)) {
- short flag = 0;
-
- if (IS_AUTOKEY_FLAG(INSERTNEEDED))
- flag |= INSERTKEY_NEEDED;
- if (IS_AUTOKEY_FLAG(AUTOMATKEY))
- flag |= INSERTKEY_MATRIX;
- if (IS_AUTOKEY_MODE(scene, EDITKEYS))
- flag |= INSERTKEY_REPLACE;
+ short flag = ANIM_get_keyframing_flags(scene, 1);
fcu->flag &= ~FCURVE_SELECTED;
insert_keyframe(id, action, ((fcu->grp)?(fcu->grp->name):(NULL)), fcu->rna_path, fcu->array_index, cfra, flag);
@@ -189,25 +182,25 @@ void uiAnimContextProperty(const bContext *C, struct PointerRNA *ptr, struct Pro
void ui_but_anim_insert_keyframe(bContext *C)
{
/* this operator calls uiAnimContextProperty above */
- WM_operator_name_call(C, "ANIM_OT_insert_keyframe_button", WM_OP_INVOKE_DEFAULT, NULL);
+ WM_operator_name_call(C, "ANIM_OT_keyframe_insert_button", WM_OP_INVOKE_DEFAULT, NULL);
}
void ui_but_anim_delete_keyframe(bContext *C)
{
/* this operator calls uiAnimContextProperty above */
- WM_operator_name_call(C, "ANIM_OT_delete_keyframe_button", WM_OP_INVOKE_DEFAULT, NULL);
+ WM_operator_name_call(C, "ANIM_OT_keyframe_delete_button", WM_OP_INVOKE_DEFAULT, NULL);
}
void ui_but_anim_add_driver(bContext *C)
{
/* this operator calls uiAnimContextProperty above */
- WM_operator_name_call(C, "ANIM_OT_add_driver_button", WM_OP_INVOKE_DEFAULT, NULL);
+ WM_operator_name_call(C, "ANIM_OT_driver_button_add", WM_OP_INVOKE_DEFAULT, NULL);
}
void ui_but_anim_remove_driver(bContext *C)
{
/* this operator calls uiAnimContextProperty above */
- WM_operator_name_call(C, "ANIM_OT_remove_driver_button", WM_OP_INVOKE_DEFAULT, NULL);
+ WM_operator_name_call(C, "ANIM_OT_driver_button_remove", WM_OP_INVOKE_DEFAULT, NULL);
}
void ui_but_anim_copy_driver(bContext *C)
@@ -225,11 +218,11 @@ void ui_but_anim_paste_driver(bContext *C)
void ui_but_anim_add_keyingset(bContext *C)
{
/* this operator calls uiAnimContextProperty above */
- WM_operator_name_call(C, "ANIM_OT_add_keyingset_button", WM_OP_INVOKE_DEFAULT, NULL);
+ WM_operator_name_call(C, "ANIM_OT_keyingset_button_add", WM_OP_INVOKE_DEFAULT, NULL);
}
void ui_but_anim_remove_keyingset(bContext *C)
{
/* this operator calls uiAnimContextProperty above */
- WM_operator_name_call(C, "ANIM_OT_remove_keyingset_button", WM_OP_INVOKE_DEFAULT, NULL);
+ WM_operator_name_call(C, "ANIM_OT_keyingset_button_remove", WM_OP_INVOKE_DEFAULT, NULL);
}
diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c
index 92bbd1c6573..0602ca656b9 100644
--- a/source/blender/editors/interface/interface_draw.c
+++ b/source/blender/editors/interface/interface_draw.c
@@ -468,8 +468,8 @@ void ui_draw_but_IMAGE(ARegion *ar, uiBut *but, uiWidgetColors *wcol, rcti *rect
extern char datatoc_splash_png[];
extern int datatoc_splash_png_size;
ImBuf *ibuf;
- GLint scissor[4];
- int w, h;
+ //GLint scissor[4];
+ //int w, h;
/* hardcoded to splash, loading and freeing every draw, eek! */
ibuf= IMB_ibImageFromMemory((int *)datatoc_splash_png, datatoc_splash_png_size, IB_rect);
@@ -698,7 +698,7 @@ void ui_draw_but_COLORBAND(uiBut *but, uiWidgetColors *wcol, rcti *rect)
float x1, y1, sizex, sizey;
float dx, v3[2], v1[2], v2[2], v1a[2], v2a[2];
int a;
- float pos, colf[4];
+ float pos, colf[4]= {0,0,0,0}; /* initialize incase the colorband isnt valid */
coba= (ColorBand *)(but->editcoba? but->editcoba: but->poin);
if(coba==NULL) return;
@@ -736,6 +736,8 @@ void ui_draw_but_COLORBAND(uiBut *but, uiWidgetColors *wcol, rcti *rect)
for( a = 1; a < sizex; a++ ) {
pos = ((float)a) / (sizex-1);
do_colorband( coba, pos, colf );
+ if (but->block->color_profile != BLI_PR_NONE)
+ linearrgb_to_srgb_v3_v3(colf, colf);
v1[0]=v2[0]= x1 + a;
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 5db2d8e0551..a5dbf21a896 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -1059,24 +1059,16 @@ static short test_special_char(char ch)
static int ui_textedit_delete_selection(uiBut *but, uiHandleButtonData *data)
{
- char *str;
- int x, changed;
-
- str= data->str;
- changed= (but->selsta != but->selend);
-
- for(x=0; x< strlen(str); x++) {
- if (but->selend + x <= strlen(str) ) {
- str[but->selsta + x]= str[but->selend + x];
- } else {
- str[but->selsta + x]= '\0';
- break;
- }
+ char *str= data->str;
+ int len= strlen(str);
+ int change= 0;
+ if(but->selsta != but->selend && len) {
+ memmove( str+but->selsta, str+but->selend, len+1 );
+ change= 1;
}
-
+
but->pos = but->selend = but->selsta;
-
- return changed;
+ return change;
}
static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, short x)
@@ -1087,9 +1079,9 @@ static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, sho
uiStyleFontSet(&style->widget);
- origstr= MEM_callocN(sizeof(char)*(data->maxlen+1), "ui_textedit origstr");
+ origstr= MEM_callocN(sizeof(char)*data->maxlen, "ui_textedit origstr");
- BLI_strncpy(origstr, but->drawstr, data->maxlen+1);
+ BLI_strncpy(origstr, but->drawstr, data->maxlen);
but->pos= strlen(origstr)-but->ofs;
/* XXX solve generic */
@@ -1138,7 +1130,7 @@ static int ui_textedit_type_ascii(uiBut *but, uiHandleButtonData *data, char asc
changed= ui_textedit_delete_selection(but, data);
len= strlen(str);
- if(len < data->maxlen) {
+ if(len+1 < data->maxlen) {
for(x= data->maxlen; x>but->pos; x--)
str[x]= str[x-1];
str[but->pos]= ascii;
@@ -1365,13 +1357,15 @@ static int ui_textedit_copypaste(uiBut *but, uiHandleButtonData *data, int paste
buf[i]= 0;
/* paste over the current selection */
- if ((but->selend - but->selsta) > 0)
+ if ((but->selend - but->selsta) > 0) {
ui_textedit_delete_selection(but, data);
+ len= strlen(str);
+ }
for (y=0; y<strlen(buf); y++)
{
/* add contents of buffer */
- if(len < data->maxlen) {
+ if(len+1 < data->maxlen) {
for(x= data->maxlen; x>but->pos; x--)
str[x]= str[x-1];
str[but->pos]= buf[y];
@@ -1417,8 +1411,8 @@ static void ui_textedit_begin(bContext *C, uiBut *but, uiHandleButtonData *data)
/* retrieve string */
data->maxlen= ui_get_but_string_max_length(but);
- data->str= MEM_callocN(sizeof(char)*(data->maxlen+1), "textedit str");
- ui_get_but_string(but, data->str, data->maxlen+1);
+ data->str= MEM_callocN(sizeof(char)*data->maxlen + 1, "textedit str");
+ ui_get_but_string(but, data->str, data->maxlen);
data->origstr= BLI_strdup(data->str);
data->selextend= 0;
@@ -1868,13 +1862,12 @@ static int ui_do_but_HOTKEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data
if(data->state == BUTTON_STATE_HIGHLIGHT) {
if(ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->val==KM_PRESS) {
but->drawstr[0]= 0;
- *(short *)but->func_arg3= 0;
+ but->modifier_key= 0;
button_activate_state(C, but, BUTTON_STATE_WAIT_KEY_EVENT);
return WM_UI_HANDLER_BREAK;
}
}
else if(data->state == BUTTON_STATE_WAIT_KEY_EVENT) {
- short *sp= (short *)but->func_arg3;
if(event->type == MOUSEMOVE)
return WM_UI_HANDLER_CONTINUE;
@@ -1890,15 +1883,15 @@ static int ui_do_but_HOTKEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data
}
/* always set */
- *sp= 0;
+ but->modifier_key = 0;
if(event->shift)
- *sp |= KM_SHIFT;
+ but->modifier_key |= KM_SHIFT;
if(event->alt)
- *sp |= KM_ALT;
+ but->modifier_key |= KM_ALT;
if(event->ctrl)
- *sp |= KM_CTRL;
+ but->modifier_key |= KM_CTRL;
if(event->oskey)
- *sp |= KM_OSKEY;
+ but->modifier_key |= KM_OSKEY;
ui_check_but(but);
ED_region_tag_redraw(data->region);
@@ -2703,7 +2696,13 @@ static int ui_numedit_but_HSVCUBE(uiBut *but, uiHandleButtonData *data, int mx,
{
float x, y;
int changed= 1;
-
+ int color_profile = but->block->color_profile;
+
+ if (but->rnaprop) {
+ if (RNA_property_subtype(but->rnaprop) == PROP_COLOR_GAMMA)
+ color_profile = BLI_PR_NONE;
+ }
+
/* relative position within box */
x= ((float)mx-but->x1)/(but->x2-but->x1);
y= ((float)my-but->y1)/(but->y2-but->y1);
@@ -2725,8 +2724,12 @@ static int ui_numedit_but_HSVCUBE(uiBut *but, uiHandleButtonData *data, int mx,
else if(but->a1==3) {
but->hsv[0]= x;
}
- else
+ else {
+ /* vertical 'value' strip */
but->hsv[2]= y;
+ if (color_profile)
+ but->hsv[2] = srgb_to_linearrgb(but->hsv[2]);
+ }
ui_set_but_hsv(but); // converts to rgb
@@ -2986,6 +2989,16 @@ static int ui_numedit_but_CURVE(uiBut *but, uiHandleButtonData *data, int snap,
offsx= cumap->curr.xmin;
offsy= cumap->curr.ymin;
+ if(snap) {
+ float d[2];
+
+ d[0]= mx - data->dragstartx;
+ d[1]= my - data->dragstarty;
+
+ if(len_v2(d) < 3.0f)
+ snap= 0;
+ }
+
if(data->dragsel != -1) {
int moved_point= 0; /* for ctrl grid, can't use orig coords because of sorting */
@@ -3122,10 +3135,13 @@ static int ui_do_but_CURVE(bContext *C, uiBlock *block, uiBut *but, uiHandleButt
if(sel!= -1) {
/* ok, we move a point */
/* deselect all if this one is deselect. except if we hold shift */
- if(event->shift==0 && (cmp[sel].flag & SELECT)==0)
+ if(event->shift==0) {
for(a=0; a<cuma->totpoint; a++)
cmp[a].flag &= ~SELECT;
- cmp[sel].flag |= SELECT;
+ cmp[sel].flag |= SELECT;
+ }
+ else
+ cmp[sel].flag ^= SELECT;
}
else {
/* move the view */
@@ -3146,7 +3162,7 @@ static int ui_do_but_CURVE(bContext *C, uiBlock *block, uiBut *but, uiHandleButt
else if(data->state == BUTTON_STATE_NUM_EDITING) {
if(event->type == MOUSEMOVE) {
if(mx!=data->draglastx || my!=data->draglasty) {
- if(ui_numedit_but_CURVE(but, data, event->shift, mx, my))
+ if(ui_numedit_but_CURVE(but, data, event->ctrl, mx, my))
ui_numedit_apply(C, block, but, data);
}
}
@@ -3316,69 +3332,134 @@ static int ui_do_but_LINK(bContext *C, uiBut *but, uiHandleButtonData *data, wmE
return WM_UI_HANDLER_CONTINUE;
}
-/* callback for hotkey change button/menu */
-static void do_menu_change_hotkey(bContext *C, void *but_v, void *key_v)
+static void but_shortcut_name_func(bContext *C, void *arg1, int event)
{
- uiBut *but= but_v;
- IDProperty *prop= (but->opptr)? but->opptr->data: NULL;
- short *key= key_v;
- char buf[512], *butstr, *cpoin;
+ uiBut *but = (uiBut *)arg1;
- /* signal for escape */
- if(key[0]==0) return;
+ char buf[512], *butstr, *cpoin;
- WM_key_event_operator_change(C, but->optype->idname, but->opcontext, prop, key[0], key[1]);
-
- /* complex code to change name of button */
- if(WM_key_event_operator_string(C, but->optype->idname, but->opcontext, prop, buf, sizeof(buf))) {
+ if (but->optype) {
+ IDProperty *prop= (but->opptr)? but->opptr->data: NULL;
- butstr= MEM_mallocN(strlen(but->str)+strlen(buf)+2, "menu_block_set_keymaps");
-
- /* XXX but->str changed... should not, remove the hotkey from it */
- cpoin= strchr(but->str, '|');
- if(cpoin) *cpoin= 0;
-
- strcpy(butstr, but->str);
- strcat(butstr, "|");
- strcat(butstr, buf);
-
- but->str= but->strdata;
- BLI_strncpy(but->str, butstr, sizeof(but->strdata));
- MEM_freeN(butstr);
-
- ui_check_but(but);
+ /* complex code to change name of button */
+ if(WM_key_event_operator_string(C, but->optype->idname, but->opcontext, prop, buf, sizeof(buf))) {
+
+ butstr= MEM_mallocN(strlen(but->str)+strlen(buf)+2, "menu_block_set_keymaps");
+
+ // XXX but->str changed... should not, remove the hotkey from it
+ cpoin= strchr(but->str, '|');
+ if(cpoin) *cpoin= 0;
+
+ strcpy(butstr, but->str);
+ strcat(butstr, "|");
+ strcat(butstr, buf);
+
+ but->str= but->strdata;
+ BLI_strncpy(but->str, butstr, sizeof(but->strdata));
+ MEM_freeN(butstr);
+
+ ui_check_but(but);
+ } else {
+ /* shortcut was removed */
+ cpoin= strchr(but->str, '|');
+ if(cpoin) *cpoin= 0;
+ }
}
-
}
+static uiBlock *menu_change_shortcut(bContext *C, ARegion *ar, void *arg)
+{
+ uiBlock *block;
+ uiBut *but = (uiBut *)arg;
+ wmKeyMap *km;
+ wmKeyMapItem *kmi;
+ PointerRNA ptr;
+ uiLayout *layout;
+ uiStyle *style= U.uistyles.first;
+ IDProperty *prop= (but->opptr)? but->opptr->data: NULL;
+ int kmi_id = WM_key_event_operator_id(C, but->optype->idname, but->opcontext, prop, &km);
+
+ kmi = WM_keymap_item_find_id(km, kmi_id);
+
+ RNA_pointer_create(NULL, &RNA_KeyMapItem, kmi, &ptr);
+
+ block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS);
+ uiBlockSetHandleFunc(block, but_shortcut_name_func, but);
+ uiBlockSetFlag(block, UI_BLOCK_RET_1|UI_BLOCK_MOVEMOUSE_QUIT);
+ uiBlockSetDirection(block, UI_CENTER);
+
+ layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, 200, 20, style);
+
+ uiItemR(layout, "", 0, &ptr, "type", UI_ITEM_R_FULL_EVENT|UI_ITEM_R_IMMEDIATE);
+
+ uiPopupBoundsBlock(block, 6, 100, 10);
+ uiEndBlock(C, block);
+
+ return block;
+}
-static uiBlock *menu_change_hotkey(bContext *C, ARegion *ar, void *arg_but)
+static uiBlock *menu_add_shortcut(bContext *C, ARegion *ar, void *arg)
{
uiBlock *block;
- uiBut *but= arg_but;
- wmOperatorType *ot= WM_operatortype_find(but->optype->idname, 1);
- static short dummy[2];
- char buf[OP_MAX_TYPENAME+10];
+ uiBut *but = (uiBut *)arg;
+ wmKeyMap *km;
+ wmKeyMapItem *kmi;
+ PointerRNA ptr;
+ uiLayout *layout;
+ uiStyle *style= U.uistyles.first;
+ IDProperty *prop= (but->opptr)? but->opptr->data: NULL;
- dummy[0]= 0;
- dummy[1]= 0;
+ km = WM_keymap_guess_opname(C, but->optype->idname);
+ kmi = WM_keymap_add_item(km, but->optype->idname, AKEY, KM_PRESS, 0, 0);
+ MEM_freeN(kmi->properties);
+ kmi->properties= IDP_CopyProperty(prop);
- block= uiBeginBlock(C, ar, "_popup", UI_EMBOSSP);
- uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_MOVEMOUSE_QUIT|UI_BLOCK_RET_1|UI_BLOCK_MOVEMOUSE_QUIT);
+ RNA_pointer_create(NULL, &RNA_KeyMapItem, kmi, &ptr);
- BLI_strncpy(buf, ot->name, OP_MAX_TYPENAME);
- strcat(buf, " |");
+ block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS);
+ uiBlockSetHandleFunc(block, but_shortcut_name_func, but);
+ uiBlockSetFlag(block, UI_BLOCK_RET_1);
+ uiBlockSetDirection(block, UI_CENTER);
- but= uiDefHotKeyevtButS(block, 0, buf, 0, 0, 200, 20, dummy, dummy+1, "");
- uiButSetFlag(but, UI_BUT_IMMEDIATE);
- uiButSetFunc(but, do_menu_change_hotkey, arg_but, dummy);
+ layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, 200, 20, style);
- uiPopupBoundsBlock(block, 6.0f, 50, -10);
+ uiItemR(layout, "", 0, &ptr, "type", UI_ITEM_R_FULL_EVENT|UI_ITEM_R_IMMEDIATE);
+
+ uiPopupBoundsBlock(block, 6, 100, 10);
uiEndBlock(C, block);
return block;
}
+static void popup_change_shortcut_func(bContext *C, void *arg1, void *arg2)
+{
+ uiBut *but = (uiBut *)arg1;
+ button_timers_tooltip_remove(C, but);
+ uiPupBlock(C, menu_change_shortcut, but);
+}
+
+static void remove_shortcut_func(bContext *C, void *arg1, void *arg2)
+{
+ uiBut *but = (uiBut *)arg1;
+ wmKeyMap *km;
+ wmKeyMapItem *kmi;
+ IDProperty *prop= (but->opptr)? but->opptr->data: NULL;
+ int kmi_id = WM_key_event_operator_id(C, but->optype->idname, but->opcontext, prop, &km);
+
+ kmi = WM_keymap_item_find_id(km, kmi_id);
+ WM_keymap_remove_item(km, kmi);
+
+ but_shortcut_name_func(C, but, 0);
+}
+
+static void popup_add_shortcut_func(bContext *C, void *arg1, void *arg2)
+{
+ uiBut *but = (uiBut *)arg1;
+ button_timers_tooltip_remove(C, but);
+ uiPupBlock(C, menu_add_shortcut, but);
+}
+
+
static int ui_but_menu(bContext *C, uiBut *but)
{
uiPopupMenu *pup;
@@ -3388,7 +3469,8 @@ static int ui_but_menu(bContext *C, uiBut *but)
if((but->rnapoin.data && but->rnaprop)==0 && but->optype==NULL)
return 0;
-
+
+ button_timers_tooltip_remove(C, but);
if(but->rnaprop)
name= (char*)RNA_property_ui_name(but->rnaprop);
@@ -3409,24 +3491,24 @@ static int ui_but_menu(bContext *C, uiBut *but)
/* Keyframes */
if(but->flag & UI_BUT_ANIMATED_KEY) {
if(length) {
- uiItemBooleanO(layout, "Replace Keyframes", 0, "ANIM_OT_insert_keyframe_button", "all", 1);
- uiItemBooleanO(layout, "Replace Single Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0);
- uiItemBooleanO(layout, "Delete Keyframes", 0, "ANIM_OT_delete_keyframe_button", "all", 1);
- uiItemBooleanO(layout, "Delete Single Keyframe", 0, "ANIM_OT_delete_keyframe_button", "all", 0);
+ uiItemBooleanO(layout, "Replace Keyframes", 0, "ANIM_OT_keyframe_insert_button", "all", 1);
+ uiItemBooleanO(layout, "Replace Single Keyframe", 0, "ANIM_OT_keyframe_insert_button", "all", 0);
+ uiItemBooleanO(layout, "Delete Keyframes", 0, "ANIM_OT_keyframe_delete_button", "all", 1);
+ uiItemBooleanO(layout, "Delete Single Keyframe", 0, "ANIM_OT_keyframe_delete_button", "all", 0);
}
else {
- uiItemBooleanO(layout, "Replace Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0);
- uiItemBooleanO(layout, "Delete Keyframe", 0, "ANIM_OT_delete_keyframe_button", "all", 0);
+ uiItemBooleanO(layout, "Replace Keyframe", 0, "ANIM_OT_keyframe_insert_button", "all", 0);
+ uiItemBooleanO(layout, "Delete Keyframe", 0, "ANIM_OT_keyframe_delete_button", "all", 0);
}
}
else if(but->flag & UI_BUT_DRIVEN);
else if(RNA_property_animateable(&but->rnapoin, but->rnaprop)) {
if(length) {
- uiItemBooleanO(layout, "Insert Keyframes", 0, "ANIM_OT_insert_keyframe_button", "all", 1);
- uiItemBooleanO(layout, "Insert Single Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0);
+ uiItemBooleanO(layout, "Insert Keyframes", 0, "ANIM_OT_keyframe_insert_button", "all", 1);
+ uiItemBooleanO(layout, "Insert Single Keyframe", 0, "ANIM_OT_keyframe_insert_button", "all", 0);
}
else
- uiItemBooleanO(layout, "Insert Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0);
+ uiItemBooleanO(layout, "Insert Keyframe", 0, "ANIM_OT_keyframe_insert_button", "all", 0);
}
/* Drivers */
@@ -3434,11 +3516,11 @@ static int ui_but_menu(bContext *C, uiBut *but)
uiItemS(layout);
if(length) {
- uiItemBooleanO(layout, "Delete Drivers", 0, "ANIM_OT_remove_driver_button", "all", 1);
- uiItemBooleanO(layout, "Delete Single Driver", 0, "ANIM_OT_remove_driver_button", "all", 0);
+ uiItemBooleanO(layout, "Delete Drivers", 0, "ANIM_OT_driver_button_remove", "all", 1);
+ uiItemBooleanO(layout, "Delete Single Driver", 0, "ANIM_OT_driver_button_remove", "all", 0);
}
else
- uiItemBooleanO(layout, "Delete Driver", 0, "ANIM_OT_remove_driver_button", "all", 0);
+ uiItemBooleanO(layout, "Delete Driver", 0, "ANIM_OT_driver_button_remove", "all", 0);
uiItemO(layout, "Copy Driver", 0, "ANIM_OT_copy_driver_button");
if (ANIM_driver_can_paste())
@@ -3449,11 +3531,11 @@ static int ui_but_menu(bContext *C, uiBut *but)
uiItemS(layout);
if(length) {
- uiItemBooleanO(layout, "Add Drivers", 0, "ANIM_OT_add_driver_button", "all", 1);
- uiItemBooleanO(layout, "Add Single Driver", 0, "ANIM_OT_add_driver_button", "all", 0);
+ uiItemBooleanO(layout, "Add Drivers", 0, "ANIM_OT_driver_button_add", "all", 1);
+ uiItemBooleanO(layout, "Add Single Driver", 0, "ANIM_OT_driver_button_add", "all", 0);
}
else
- uiItemBooleanO(layout, "Add Driver", 0, "ANIM_OT_add_driver_button", "all", 0);
+ uiItemBooleanO(layout, "Add Driver", 0, "ANIM_OT_driver_button_add", "all", 0);
if (ANIM_driver_can_paste())
uiItemO(layout, "Paste Driver", 0, "ANIM_OT_paste_driver_button");
@@ -3464,13 +3546,13 @@ static int ui_but_menu(bContext *C, uiBut *but)
uiItemS(layout);
if(length) {
- uiItemBooleanO(layout, "Add All to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 1);
- uiItemBooleanO(layout, "Add Single to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 0);
- uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_remove_keyingset_button");
+ uiItemBooleanO(layout, "Add All to Keying Set", 0, "ANIM_OT_keyingset_button_add", "all", 1);
+ uiItemBooleanO(layout, "Add Single to Keying Set", 0, "ANIM_OT_keyingset_button_add", "all", 0);
+ uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_keyingset_button_remove");
}
else {
- uiItemBooleanO(layout, "Add to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 0);
- uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_remove_keyingset_button");
+ uiItemBooleanO(layout, "Add to Keying Set", 0, "ANIM_OT_keyingset_button_add", "all", 0);
+ uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_keyingset_button_remove");
}
}
@@ -3481,14 +3563,49 @@ static int ui_but_menu(bContext *C, uiBut *but)
//Copy Property Value
//Paste Property Value
- //uiItemO(layout, "Reset to Default Value", 0, "WM_OT_property_value_reset_button");
+ if(length) {
+ uiItemBooleanO(layout, "Reset All to Default Values", 0, "UI_OT_reset_default_button", "all", 1);
+ uiItemBooleanO(layout, "Reset Single to Default Value", 0, "UI_OT_reset_default_button", "all", 0);
+ }
+ else
+ uiItemO(layout, "Reset to Default Value", 0, "UI_OT_reset_default_button");
- uiItemO(layout, "Copy Data Path", 0, "ANIM_OT_copy_clipboard_button");
+ uiItemO(layout, "Copy Data Path", 0, "UI_OT_copy_data_path_button");
+ uiItemO(layout, "Copy To Selected", 0, "UI_OT_copy_to_selected_button");
uiItemS(layout);
}
+ /* Operator buttons */
+ if(but->optype) {
+ uiBlock *block = uiLayoutGetBlock(layout);
+ uiBut *but2;
+ IDProperty *prop= (but->opptr)? but->opptr->data: NULL;
+ int w = uiLayoutGetWidth(layout);
+ char buf[512];
+
+ /* keyboard shortcuts */
+ if(WM_key_event_operator_string(C, but->optype->idname, but->opcontext, prop, buf, sizeof(buf))) {
+
+ // would rather use a block but, but gets weirdly positioned...
+ //uiDefBlockBut(block, menu_change_shortcut, but, "Change Shortcut", 0, 0, uiLayoutGetWidth(layout), UI_UNIT_Y, "");
+
+ but2 = uiDefIconTextBut(block, BUT, 0, 0, "Change Shortcut", 0, 0, w, UI_UNIT_Y, NULL, 0, 0, 0, 0, "");
+ uiButSetFunc(but2, popup_change_shortcut_func, but, NULL);
+
+ but2 = uiDefIconTextBut(block, BUT, 0, 0, "Remove Shortcut", 0, 0, w, UI_UNIT_Y, NULL, 0, 0, 0, 0, "");
+ uiButSetFunc(but2, remove_shortcut_func, but, NULL);
+ }
+ /* only show 'add' if there's a suitable key map for it to go in */
+ else if (WM_keymap_guess_opname(C, but->optype->idname)) {
+ but2 = uiDefIconTextBut(block, BUT, 0, 0, "Add Shortcut", 0, 0, w, UI_UNIT_Y, NULL, 0, 0, 0, 0, "");
+ uiButSetFunc(but2, popup_add_shortcut_func, but, NULL);
+ }
+
+ uiItemS(layout);
+ }
+
{ /* Docs */
char buf[512];
PointerRNA ptr_props;
@@ -3581,18 +3698,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event)
/* handle menu */
else if(event->type == RIGHTMOUSE && event->val == KM_PRESS) {
/* RMB has two options now */
-
- if((but->block->flag & UI_BLOCK_LOOP) && but->optype) {
- IDProperty *prop= (but->opptr)? but->opptr->data: NULL;
- char buf[512];
-
- if(WM_key_event_operator_string(C, but->optype->idname, but->opcontext, prop, buf, sizeof(buf))) {
-
- uiPupBlock(C, menu_change_hotkey, but);
-
- }
- }
- else if (ui_but_menu(C, but)) {
+ if (ui_but_menu(C, but)) {
return WM_UI_HANDLER_BREAK;
}
}
@@ -3815,12 +3921,14 @@ static int ui_mouse_inside_button(ARegion *ar, uiBut *but, int x, int y)
return 1;
}
-static uiBut *ui_but_find_mouse_over(ARegion *ar, int x, int y)
+static uiBut *ui_but_find_mouse_over(wmWindow *win, ARegion *ar, int x, int y)
{
uiBlock *block;
uiBut *but, *butover= NULL;
int mx, my;
+ if(!win->active)
+ return NULL;
if(!ui_mouse_inside_region(ar, x, y))
return NULL;
@@ -3842,12 +3950,14 @@ static uiBut *ui_but_find_mouse_over(ARegion *ar, int x, int y)
return butover;
}
-static uiBut *ui_list_find_mouse_over(ARegion *ar, int x, int y)
+static uiBut *ui_list_find_mouse_over(wmWindow *win, ARegion *ar, int x, int y)
{
uiBlock *block;
uiBut *but;
int mx, my;
+ if(!win->active)
+ return NULL;
if(!ui_mouse_inside_region(ar, x, y))
return NULL;
@@ -3930,7 +4040,7 @@ static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState s
int time;
if(but->block->auto_open==2) time= 1; // test for toolbox
- else if(but->block->flag & UI_BLOCK_LOOP || but->block->auto_open) time= 5*U.menuthreshold2;
+ else if((but->block->flag & UI_BLOCK_LOOP && but->type != BLOCK) || but->block->auto_open) time= 5*U.menuthreshold2;
else if(U.uiflag & USER_MENUOPENAUTO) time= 5*U.menuthreshold1;
else time= -1;
@@ -3990,7 +4100,11 @@ static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState s
data->state= state;
- ui_check_but(but);
+ if(state != BUTTON_STATE_EXIT) {
+ /* When objects for eg. are removed, running ui_check_but()
+ * can access the removed data - so disable update on exit */
+ ui_check_but(but);
+ }
/* redraw */
ED_region_tag_redraw(data->region);
@@ -4154,10 +4268,11 @@ static uiBut *uit_but_find_open_event(ARegion *ar, wmEvent *event)
static int ui_handle_button_over(bContext *C, wmEvent *event, ARegion *ar)
{
+ wmWindow *win= CTX_wm_window(C);
uiBut *but;
if(event->type == MOUSEMOVE) {
- but= ui_but_find_mouse_over(ar, event->x, event->y);
+ but= ui_but_find_mouse_over(win, ar, event->x, event->y);
if(but)
button_activate_init(C, ar, but, BUTTON_ACTIVATE_OVER);
}
@@ -4223,14 +4338,18 @@ static int ui_handle_button_event(bContext *C, wmEvent *event, uiBut *but)
if(data->state == BUTTON_STATE_HIGHLIGHT) {
switch(event->type) {
-
+ case WINDEACTIVATE:
+ data->cancel= 1;
+ button_activate_state(C, but, BUTTON_STATE_EXIT);
+ retval= WM_UI_HANDLER_CONTINUE;
+ break;
case MOUSEMOVE:
/* verify if we are still over the button, if not exit */
if(!ui_mouse_inside_button(ar, but, event->x, event->y)) {
data->cancel= 1;
button_activate_state(C, but, BUTTON_STATE_EXIT);
}
- else if(ui_but_find_mouse_over(ar, event->x, event->y) != but) {
+ else if(ui_but_find_mouse_over(data->window, ar, event->x, event->y) != but) {
data->cancel= 1;
button_activate_state(C, but, BUTTON_STATE_EXIT);
}
@@ -4278,8 +4397,12 @@ static int ui_handle_button_event(bContext *C, wmEvent *event, uiBut *but)
}
else if(data->state == BUTTON_STATE_WAIT_RELEASE) {
switch(event->type) {
+ case WINDEACTIVATE:
+ data->cancel= 1;
+ button_activate_state(C, but, BUTTON_STATE_EXIT);
+ break;
+
case MOUSEMOVE:
-
if(ELEM(but->type,LINK, INLINK)) {
but->flag |= UI_SELECT;
ui_do_button(C, block, but, event);
@@ -4324,7 +4447,7 @@ static int ui_handle_button_event(bContext *C, wmEvent *event, uiBut *but)
else if(data->state == BUTTON_STATE_MENU_OPEN) {
switch(event->type) {
case MOUSEMOVE: {
- uiBut *bt= ui_but_find_mouse_over(ar, event->x, event->y);
+ uiBut *bt= ui_but_find_mouse_over(data->window, ar, event->x, event->y);
if(bt && bt->active != data) {
if(but->type != COL) /* exception */
@@ -4359,7 +4482,8 @@ static int ui_handle_button_event(bContext *C, wmEvent *event, uiBut *but)
static int ui_handle_list_event(bContext *C, wmEvent *event, ARegion *ar)
{
- uiBut *but= ui_list_find_mouse_over(ar, event->x, event->y);
+ wmWindow *win= CTX_wm_window(C);
+ uiBut *but= ui_list_find_mouse_over(win, ar, event->x, event->y);
int retval= WM_UI_HANDLER_CONTINUE;
int value, min, max;
@@ -4707,9 +4831,14 @@ int ui_handle_menu_event(bContext *C, wmEvent *event, uiPopupBlockHandle *menu,
if(inside==0) {
uiSafetyRct *saferct= block->saferct.first;
- if(ELEM3(event->type, LEFTMOUSE, MIDDLEMOUSE, RIGHTMOUSE) && event->val==KM_PRESS)
- if(saferct && !BLI_in_rctf(&saferct->parent, event->x, event->y))
- menu->menuretval= UI_RETURN_OK;
+ if(ELEM3(event->type, LEFTMOUSE, MIDDLEMOUSE, RIGHTMOUSE) && event->val==KM_PRESS) {
+ if(saferct && !BLI_in_rctf(&saferct->parent, event->x, event->y)) {
+ if(block->flag & (UI_BLOCK_OUT_1|UI_BLOCK_KEEP_OPEN))
+ menu->menuretval= UI_RETURN_OK;
+ else
+ menu->menuretval= UI_RETURN_OUT;
+ }
+ }
}
if(menu->menuretval);
@@ -4745,10 +4874,10 @@ int ui_handle_menu_event(bContext *C, wmEvent *event, uiPopupBlockHandle *menu,
/* strict check, and include the parent rect */
if(!menu->dotowards && !saferct) {
- if(block->flag & UI_BLOCK_OUT_1)
+ if(block->flag & (UI_BLOCK_OUT_1|UI_BLOCK_KEEP_OPEN))
menu->menuretval= UI_RETURN_OK;
else
- menu->menuretval= (block->flag & UI_BLOCK_KEEP_OPEN)? UI_RETURN_OK: UI_RETURN_OUT;
+ menu->menuretval= UI_RETURN_OUT;
}
else if(menu->dotowards && event->type==MOUSEMOVE)
retval= WM_UI_HANDLER_BREAK;
diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c
index 23a0ff7d223..e219198da0f 100644
--- a/source/blender/editors/interface/interface_icons.c
+++ b/source/blender/editors/interface/interface_icons.c
@@ -528,16 +528,16 @@ static void init_internal_icons()
}
}
- def_internal_vicon(VICON_VIEW3D, vicon_view3d_draw);
- def_internal_vicon(VICON_EDIT, vicon_edit_draw);
- def_internal_vicon(VICON_EDITMODE_DEHLT, vicon_editmode_dehlt_draw);
- def_internal_vicon(VICON_EDITMODE_HLT, vicon_editmode_hlt_draw);
- def_internal_vicon(VICON_DISCLOSURE_TRI_RIGHT, vicon_disclosure_tri_right_draw);
- def_internal_vicon(VICON_DISCLOSURE_TRI_DOWN, vicon_disclosure_tri_down_draw);
- def_internal_vicon(VICON_MOVE_UP, vicon_move_up_draw);
- def_internal_vicon(VICON_MOVE_DOWN, vicon_move_down_draw);
- def_internal_vicon(VICON_X, vicon_x_draw);
- def_internal_vicon(VICON_SMALL_TRI_RIGHT, vicon_small_tri_right_draw);
+ def_internal_vicon(VICO_VIEW3D_VEC, vicon_view3d_draw);
+ def_internal_vicon(VICO_EDIT_VEC, vicon_edit_draw);
+ def_internal_vicon(VICO_EDITMODE_DEHLT, vicon_editmode_dehlt_draw);
+ def_internal_vicon(VICO_EDITMODE_HLT, vicon_editmode_hlt_draw);
+ def_internal_vicon(VICO_DISCLOSURE_TRI_RIGHT_VEC, vicon_disclosure_tri_right_draw);
+ def_internal_vicon(VICO_DISCLOSURE_TRI_DOWN_VEC, vicon_disclosure_tri_down_draw);
+ def_internal_vicon(VICO_MOVE_UP_VEC, vicon_move_up_draw);
+ def_internal_vicon(VICO_MOVE_DOWN_VEC, vicon_move_down_draw);
+ def_internal_vicon(VICO_X_VEC, vicon_x_draw);
+ def_internal_vicon(VICO_SMALL_TRI_RIGHT_VEC, vicon_small_tri_right_draw);
IMB_freeImBuf(bbuf);
}
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index 21425bbb261..02808f9c2e7 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -199,7 +199,8 @@ struct uiBut {
BIFIconID icon;
short but_align; /* aligning buttons, horiz/vertical */
- short lock, win;
+ short lock;
+ short modifier_key;
short iconadd, dt;
/* IDPOIN data */
@@ -303,6 +304,8 @@ struct uiBlock {
int active; // to keep blocks while drawing and free them afterwards
int puphash; // popup menu hash for memory
+
+ int color_profile; // color profile for correcting linear colors for display
void *evil_C; // XXX hack for dynamic operator enums
};
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c
index 9ffd2bf434a..e512c1f6bf8 100644
--- a/source/blender/editors/interface/interface_layout.c
+++ b/source/blender/editors/interface/interface_layout.c
@@ -409,10 +409,10 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, char *name, int icon
}
}
else {
- if(ELEM(subtype, PROP_COLOR, PROP_RGB))
+ if(ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA))
uiDefAutoButR(block, ptr, prop, -1, "", 0, 0, 0, w, UI_UNIT_Y);
- if(!ELEM(subtype, PROP_COLOR, PROP_RGB) || expand) {
+ if(!ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA) || expand) {
/* layout for known array subtypes */
char str[3];
@@ -439,7 +439,7 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, char *name, int icon
but->type= TOG;
}
}
- else if(ELEM(subtype, PROP_COLOR, PROP_RGB) && len == 4) {
+ else if(ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA) && len == 4) {
but= uiDefAutoButR(block, ptr, prop, 3, "A:", 0, 0, 0, w, UI_UNIT_Y);
if(slider && but->type==NUM)
but->type= NUMSLI;
@@ -486,12 +486,11 @@ static void ui_item_enum_row(uiLayout *layout, uiBlock *block, PointerRNA *ptr,
static void ui_keymap_but_cb(bContext *C, void *but_v, void *key_v)
{
uiBut *but= but_v;
- short modifier= *((short*)key_v);
- RNA_boolean_set(&but->rnapoin, "shift", (modifier & KM_SHIFT) != 0);
- RNA_boolean_set(&but->rnapoin, "ctrl", (modifier & KM_CTRL) != 0);
- RNA_boolean_set(&but->rnapoin, "alt", (modifier & KM_ALT) != 0);
- RNA_boolean_set(&but->rnapoin, "oskey", (modifier & KM_OSKEY) != 0);
+ RNA_boolean_set(&but->rnapoin, "shift", (but->modifier_key & KM_SHIFT) != 0);
+ RNA_boolean_set(&but->rnapoin, "ctrl", (but->modifier_key & KM_CTRL) != 0);
+ RNA_boolean_set(&but->rnapoin, "alt", (but->modifier_key & KM_ALT) != 0);
+ RNA_boolean_set(&but->rnapoin, "oskey", (but->modifier_key & KM_OSKEY) != 0);
}
/* create label + button for RNA property */
@@ -533,14 +532,14 @@ static uiBut *ui_item_with_label(uiLayout *layout, uiBlock *block, char *name, i
}
else if(flag & UI_ITEM_R_FULL_EVENT) {
if(RNA_struct_is_a(ptr->type, &RNA_KeyMapItem)) {
- static short dummy = 0;
char buf[128];
WM_keymap_item_to_string(ptr->data, buf, sizeof(buf));
but= uiDefButR(block, HOTKEYEVT, 0, buf, x, y, w, h, ptr, RNA_property_identifier(prop), 0, 0, 0, -1, -1, NULL);
- but->func_arg3= &dummy; // XXX abuse
- uiButSetFunc(but, ui_keymap_but_cb, but, &dummy);
+ uiButSetFunc(but, ui_keymap_but_cb, but, NULL);
+ if (flag & UI_ITEM_R_IMMEDIATE)
+ uiButSetFlag(but, UI_BUT_IMMEDIATE);
}
}
else
@@ -695,7 +694,7 @@ void uiItemEnumO(uiLayout *layout, char *name, int icon, char *opname, char *pro
uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext, 0);
}
-void uiItemsEnumO(uiLayout *layout, char *opname, char *propname)
+void uiItemsFullEnumO(uiLayout *layout, char *opname, char *propname, IDProperty *properties, int context, int flag)
{
wmOperatorType *ot= WM_operatortype_find(opname, 0);
PointerRNA ptr;
@@ -714,14 +713,28 @@ void uiItemsEnumO(uiLayout *layout, char *opname, char *propname)
if(prop && RNA_property_type(prop) == PROP_ENUM) {
EnumPropertyItem *item;
int totitem, i, free;
- uiLayout *split= uiLayoutSplit(layout, 0);
+ uiLayout *split= uiLayoutSplit(layout, 0, 0);
uiLayout *column= uiLayoutColumn(split, 0);
RNA_property_enum_items(block->evil_C, &ptr, prop, &item, &totitem, &free);
for(i=0; i<totitem; i++) {
if(item[i].identifier[0]) {
- uiItemEnumO(column, (char*)item[i].name, item[i].icon, opname, propname, item[i].value);
+ if(properties) {
+ PointerRNA ptr;
+
+ WM_operator_properties_create(&ptr, opname);
+ if(ptr.data) {
+ IDP_FreeProperty(ptr.data);
+ MEM_freeN(ptr.data);
+ }
+ ptr.data= IDP_CopyProperty(properties);
+ RNA_enum_set(&ptr, propname, item[i].value);
+
+ uiItemFullO(column, (char*)item[i].name, item[i].icon, opname, ptr.data, context, flag);
+ }
+ else
+ uiItemEnumO(column, (char*)item[i].name, item[i].icon, opname, propname, item[i].value);
}
else {
if(item[i].name) {
@@ -745,6 +758,11 @@ void uiItemsEnumO(uiLayout *layout, char *opname, char *propname)
}
}
+void uiItemsEnumO(uiLayout *layout, char *opname, char *propname)
+{
+ uiItemsFullEnumO(layout, opname, propname, NULL, layout->root->opcontext, 0);
+}
+
/* for use in cases where we have */
void uiItemEnumO_string(uiLayout *layout, char *name, int icon, char *opname, char *propname, char *value_str)
{
@@ -880,7 +898,7 @@ void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, Proper
uiBut *but;
PropertyType type;
char namestr[UI_MAX_NAME_STR];
- int len, w, h, slider, toggle, expand, icon_only;
+ int len, w, h, slider, toggle, expand, icon_only, no_bg;
uiBlockSetCurLayout(block, layout);
@@ -896,7 +914,7 @@ void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, Proper
if(ELEM4(type, PROP_INT, PROP_FLOAT, PROP_STRING, PROP_POINTER))
name= ui_item_name_add_colon(name, namestr);
- else if(type == PROP_BOOLEAN && len)
+ else if(type == PROP_BOOLEAN && len && index == RNA_NO_INDEX)
name= ui_item_name_add_colon(name, namestr);
else if(type == PROP_ENUM && index != RNA_ENUM_VALUE)
name= ui_item_name_add_colon(name, namestr);
@@ -912,10 +930,14 @@ void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, Proper
toggle= (flag & UI_ITEM_R_TOGGLE);
expand= (flag & UI_ITEM_R_EXPAND);
icon_only= (flag & UI_ITEM_R_ICON_ONLY);
+ no_bg= (flag & UI_ITEM_R_NO_BG);
/* get size */
ui_item_rna_size(layout, name, icon, ptr, prop, index, icon_only, &w, &h);
+ if (no_bg)
+ uiBlockSetEmboss(block, UI_EMBOSSN);
+
/* array property */
if(index == RNA_NO_INDEX && len > 0)
ui_item_array(layout, block, name, icon, ptr, prop, len, 0, 0, w, h, expand, slider, toggle, icon_only);
@@ -948,6 +970,9 @@ void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, Proper
if(toggle && but->type==OPTION)
but->type= TOG;
}
+
+ if (no_bg)
+ uiBlockSetEmboss(block, UI_EMBOSS);
}
void uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *propname, int flag)
@@ -1024,7 +1049,7 @@ void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, char *propname)
if(RNA_property_type(prop) == PROP_ENUM) {
EnumPropertyItem *item;
int totitem, i, free;
- uiLayout *split= uiLayoutSplit(layout, 0);
+ uiLayout *split= uiLayoutSplit(layout, 0, 0);
uiLayout *column= uiLayoutColumn(split, 0);
RNA_property_enum_items(block->evil_C, ptr, prop, &item, &totitem, &free);
@@ -1057,38 +1082,72 @@ void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, char *propname)
/* Pointer RNA button with search */
+typedef struct CollItemSearch {
+ struct CollItemSearch *next, *prev;
+ char *name;
+ int index;
+ int iconid;
+} CollItemSearch;
+
+int sort_search_items_list(void *a, void *b)
+{
+ CollItemSearch *cis1 = (CollItemSearch *)a;
+ CollItemSearch *cis2 = (CollItemSearch *)b;
+
+ if (BLI_strcasecmp(cis1->name, cis2->name)>0)
+ return 1;
+ else
+ return 0;
+}
+
static void rna_search_cb(const struct bContext *C, void *arg_but, char *str, uiSearchItems *items)
{
uiBut *but= arg_but;
char *name;
- int i, iconid, flag= RNA_property_flag(but->rnaprop);
+ int i=0, iconid=0, flag= RNA_property_flag(but->rnaprop);
+ ListBase *items_list= MEM_callocN(sizeof(ListBase), "items_list");
+ CollItemSearch *cis;
- i = 0;
+ /* build a temporary list of relevant items first */
RNA_PROP_BEGIN(&but->rnasearchpoin, itemptr, but->rnasearchprop) {
if(flag & PROP_ID_SELF_CHECK)
if(itemptr.data == but->rnapoin.id.data)
continue;
-
- iconid= 0;
+
if(RNA_struct_is_ID(itemptr.type))
iconid= ui_id_icon_get((bContext*)C, itemptr.data);
-
+
name= RNA_struct_name_get_alloc(&itemptr, NULL, 0);
-
+
if(name) {
if(BLI_strcasestr(name, str)) {
- if(!uiSearchItemAdd(items, name, SET_INT_IN_POINTER(i), iconid)) {
- MEM_freeN(name);
- break;
- }
+ cis = MEM_callocN(sizeof(CollItemSearch), "CollectionItemSearch");
+ cis->name = MEM_dupallocN(name);
+ cis->index = i;
+ cis->iconid = iconid;
+ BLI_addtail(items_list, cis);
}
-
- MEM_freeN(name);
}
-
+ MEM_freeN(name);
+
i++;
}
RNA_PROP_END;
+
+ BLI_sortlist(items_list, sort_search_items_list);
+
+ /* add search items from temporary list */
+ for (cis=items_list->first; cis; cis=cis->next) {
+ if (!uiSearchItemAdd(items, cis->name, SET_INT_IN_POINTER(cis->index), cis->iconid)) {
+ break;
+ }
+ }
+
+ for (cis=items_list->first; cis; cis=cis->next) {
+ MEM_freeN(cis->name);
+ }
+ BLI_freelistN(items_list);
+ MEM_freeN(items_list);
}
static void search_id_collection(StructRNA *ptype, PointerRNA *ptr, PropertyRNA **prop)
@@ -2054,13 +2113,14 @@ uiLayout *uiLayoutOverlap(uiLayout *layout)
return litem;
}
-uiLayout *uiLayoutSplit(uiLayout *layout, float percentage)
+uiLayout *uiLayoutSplit(uiLayout *layout, float percentage, int align)
{
uiLayoutItemSplt *split;
split= MEM_callocN(sizeof(uiLayoutItemSplt), "uiLayoutItemSplt");
split->litem.item.type= ITEM_LAYOUT_SPLIT;
split->litem.root= layout->root;
+ split->litem.align= align;
split->litem.active= 1;
split->litem.enabled= 1;
split->litem.context= layout->context;
@@ -2454,3 +2514,89 @@ void uiLayoutSetContextPointer(uiLayout *layout, char *name, PointerRNA *ptr)
layout->context= CTX_store_add(&block->contexts, name, ptr);
}
+
+/* introspect funcs */
+#include "BLI_dynstr.h"
+
+static void ui_intro_button(DynStr *ds, uiButtonItem *bitem)
+{
+ uiBut *but = bitem->but;
+ BLI_dynstr_appendf(ds, "'type':%d, ", but->type); /* see ~ UI_interface.h:200 */
+ BLI_dynstr_appendf(ds, "'draw_string':'''%s''', ", but->drawstr);
+ BLI_dynstr_appendf(ds, "'tip':'''%s''', ", but->tip ? but->tip : ""); // not exactly needed, rna has this
+
+ if(but->optype) {
+ char *opstr = WM_operator_pystring(but->block->evil_C, but->optype, but->opptr, 0);
+ BLI_dynstr_appendf(ds, "'operator':'''%s''', ", opstr ? opstr : "");
+ MEM_freeN(opstr);
+ }
+
+ if(but->rnaprop) {
+ BLI_dynstr_appendf(ds, "'rna':'%s.%s[%d]', ", RNA_struct_identifier(but->rnapoin.type), RNA_property_identifier(but->rnaprop), but->rnaindex);
+ }
+
+}
+
+static void ui_intro_items(DynStr *ds, ListBase *lb)
+{
+ uiItem *item;
+
+ BLI_dynstr_append(ds, "[");
+
+ for(item=lb->first; item; item=item->next) {
+
+ BLI_dynstr_append(ds, "{");
+
+ /* could also use the INT but this is nicer*/
+ switch(item->type) {
+ case ITEM_BUTTON: BLI_dynstr_append(ds, "'type':'BUTTON', ");break;
+ case ITEM_LAYOUT_ROW: BLI_dynstr_append(ds, "'type':'ROW', "); break;
+ case ITEM_LAYOUT_COLUMN: BLI_dynstr_append(ds, "'type':'COLUMN', "); break;
+ case ITEM_LAYOUT_COLUMN_FLOW:BLI_dynstr_append(ds, "'type':'COLUMN_FLOW', "); break;
+ case ITEM_LAYOUT_ROW_FLOW: BLI_dynstr_append(ds, "'type':'ROW_FLOW', "); break;
+ case ITEM_LAYOUT_BOX: BLI_dynstr_append(ds, "'type':'BOX', "); break;
+ case ITEM_LAYOUT_ABSOLUTE: BLI_dynstr_append(ds, "'type':'ABSOLUTE', "); break;
+ case ITEM_LAYOUT_SPLIT: BLI_dynstr_append(ds, "'type':'SPLIT', "); break;
+ case ITEM_LAYOUT_OVERLAP: BLI_dynstr_append(ds, "'type':'OVERLAP', "); break;
+ case ITEM_LAYOUT_ROOT: BLI_dynstr_append(ds, "'type':'ROOT', "); break;
+ default: BLI_dynstr_append(ds, "'type':'UNKNOWN', "); break;
+ }
+
+ switch(item->type) {
+ case ITEM_BUTTON:
+ ui_intro_button(ds, (uiButtonItem *)item);
+ break;
+ default:
+ BLI_dynstr_append(ds, "'items':");
+ ui_intro_items(ds, &((uiLayout*)item)->items);
+ break;
+ }
+
+ BLI_dynstr_append(ds, "}");
+
+ if(item != lb->last)
+ BLI_dynstr_append(ds, ", ");
+ }
+ BLI_dynstr_append(ds, "], ");
+}
+
+static void ui_intro_uiLayout(DynStr *ds, uiLayout *layout)
+{
+ ui_intro_items(ds, &layout->items);
+}
+
+static char *str = NULL; // XXX, constant re-freeing, far from ideal.
+char *uiLayoutIntrospect(uiLayout *layout)
+{
+ DynStr *ds= BLI_dynstr_new();
+
+ if(str)
+ MEM_freeN(str);
+
+ ui_intro_uiLayout(ds, layout);
+
+ str = BLI_dynstr_get_cstring(ds);
+ BLI_dynstr_free(ds);
+
+ return str;
+}
diff --git a/source/blender/editors/interface/interface_ops.c b/source/blender/editors/interface/interface_ops.c
new file mode 100644
index 00000000000..25bfaf3d682
--- /dev/null
+++ b/source/blender/editors/interface/interface_ops.c
@@ -0,0 +1,255 @@
+/**
+ * $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, Joshua Leung
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+
+
+#include "MEM_guardedalloc.h"
+
+#include "DNA_scene_types.h"
+#include "DNA_screen_types.h"
+#include "DNA_space_types.h"
+#include "DNA_userdef_types.h"
+#include "DNA_vec_types.h"
+#include "DNA_view2d_types.h"
+
+#include "BLI_blenlib.h"
+
+#include "BKE_context.h"
+#include "BKE_utildefines.h"
+
+#include "RNA_access.h"
+#include "RNA_define.h"
+
+#include "WM_api.h"
+#include "WM_types.h"
+
+#include "BIF_gl.h"
+
+#include "ED_screen.h"
+
+#include "UI_interface.h"
+#include "UI_resources.h"
+
+/* ********************************************************** */
+
+/* Copy Data Path Operator ------------------------ */
+
+static int copy_data_path_button_exec(bContext *C, wmOperator *op)
+{
+ PointerRNA ptr;
+ PropertyRNA *prop;
+ char *path;
+ int success= 0;
+ int index;
+
+ /* try to create driver using property retrieved from UI */
+ uiAnimContextProperty(C, &ptr, &prop, &index);
+
+ if (ptr.data && prop) {
+ path= RNA_path_from_ID_to_property(&ptr, prop);
+
+ if (path) {
+ WM_clipboard_text_set(path, FALSE);
+ MEM_freeN(path);
+ }
+ }
+
+ /* since we're just copying, we don't really need to do anything else...*/
+ return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED;
+}
+
+void UI_OT_copy_data_path_button(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Copy Data Path";
+ ot->idname= "UI_OT_copy_data_path_button";
+ ot->description= "Copy the RNA data path for this property to the clipboard.";
+
+ /* callbacks */
+ ot->exec= copy_data_path_button_exec;
+ //op->poll= ??? // TODO: need to have some valid property before this can be done
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+}
+
+/* Reset to Default Values Button Operator ------------------------ */
+
+static int reset_default_button_poll(bContext *C)
+{
+ PointerRNA ptr;
+ PropertyRNA *prop;
+ int index;
+
+ uiAnimContextProperty(C, &ptr, &prop, &index);
+
+ return (ptr.data && prop && RNA_property_editable(&ptr, prop));
+}
+
+static int reset_default_button_exec(bContext *C, wmOperator *op)
+{
+ PointerRNA ptr;
+ PropertyRNA *prop;
+ int success= 0;
+ int index, all = RNA_boolean_get(op->ptr, "all");
+
+ /* try to reset the nominated setting to its default value */
+ uiAnimContextProperty(C, &ptr, &prop, &index);
+
+ /* if there is a valid property that is editable... */
+ if (ptr.data && prop && RNA_property_editable(&ptr, prop)) {
+ if(RNA_property_reset(&ptr, prop, (all)? -1: index)) {
+ /* perform updates required for this property */
+ RNA_property_update(C, &ptr, prop);
+ success= 1;
+ }
+ }
+
+ return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED;
+}
+
+void UI_OT_reset_default_button(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Reset to Default Value";
+ ot->idname= "UI_OT_reset_default_button";
+ ot->description= "Copy the RNA data path for this property to the clipboard.";
+
+ /* callbacks */
+ ot->poll= reset_default_button_poll;
+ ot->exec= reset_default_button_exec;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* properties */
+ RNA_def_boolean(ot->srna, "all", 1, "All", "Reset to default values all elements of the array.");
+}
+
+/* Copy To Selected Operator ------------------------ */
+
+static int copy_to_selected_list(bContext *C, PointerRNA *ptr, ListBase *lb)
+{
+ if(RNA_struct_is_a(ptr->type, &RNA_Object))
+ *lb = CTX_data_collection_get(C, "selected_editable_objects");
+ else if(RNA_struct_is_a(ptr->type, &RNA_EditBone))
+ *lb = CTX_data_collection_get(C, "selected_editable_bones");
+ else if(RNA_struct_is_a(ptr->type, &RNA_PoseBone))
+ *lb = CTX_data_collection_get(C, "selected_pose_bones");
+ else
+ return 0;
+
+ return 1;
+}
+
+static int copy_to_selected_button_poll(bContext *C)
+{
+ PointerRNA ptr;
+ PropertyRNA *prop;
+ int index, success= 0;
+
+ uiAnimContextProperty(C, &ptr, &prop, &index);
+
+ if (ptr.data && prop) {
+ CollectionPointerLink *link;
+ ListBase lb;
+
+ if(copy_to_selected_list(C, &ptr, &lb)) {
+ for(link= lb.first; link; link=link->next)
+ if(link->ptr.data != ptr.data && RNA_property_editable(&link->ptr, prop))
+ success= 1;
+
+ BLI_freelistN(&lb);
+ }
+ }
+
+ return success;
+}
+
+static int copy_to_selected_button_exec(bContext *C, wmOperator *op)
+{
+ PointerRNA ptr;
+ PropertyRNA *prop;
+ int success= 0;
+ int index, all = RNA_boolean_get(op->ptr, "all");
+
+ /* try to reset the nominated setting to its default value */
+ uiAnimContextProperty(C, &ptr, &prop, &index);
+
+ /* if there is a valid property that is editable... */
+ if (ptr.data && prop) {
+ CollectionPointerLink *link;
+ ListBase lb;
+
+ if(copy_to_selected_list(C, &ptr, &lb)) {
+ for(link= lb.first; link; link=link->next) {
+ if(link->ptr.data != ptr.data && RNA_property_editable(&link->ptr, prop)) {
+ if(RNA_property_copy(&link->ptr, &ptr, prop, (all)? -1: index)) {
+ RNA_property_update(C, &link->ptr, prop);
+ success= 1;
+ }
+ }
+ }
+
+ BLI_freelistN(&lb);
+ }
+ }
+
+ return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED;
+}
+
+void UI_OT_copy_to_selected_button(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Copy To Selected";
+ ot->idname= "UI_OT_copy_to_selected_button";
+ ot->description= "Copy property from this object to selected objects or bones.";
+
+ /* callbacks */
+ ot->poll= copy_to_selected_button_poll;
+ ot->exec= copy_to_selected_button_exec;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* properties */
+ RNA_def_boolean(ot->srna, "all", 1, "All", "Reset to default values all elements of the array.");
+}
+
+/* ********************************************************* */
+/* Registration */
+
+void UI_buttons_operatortypes(void)
+{
+ WM_operatortype_append(UI_OT_copy_data_path_button);
+ WM_operatortype_append(UI_OT_reset_default_button);
+ WM_operatortype_append(UI_OT_copy_to_selected_button);
+}
+
diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c
index c3eac3f3893..8ebfed21dcc 100644
--- a/source/blender/editors/interface/interface_regions.c
+++ b/source/blender/editors/interface/interface_regions.c
@@ -1377,7 +1377,7 @@ static void ui_block_func_MENUSTR(bContext *C, uiLayout *layout, void *arg_str)
}
/* create items */
- split= uiLayoutSplit(layout, 0);
+ split= uiLayoutSplit(layout, 0, 0);
for(a=0, b=0; a<md->nitems; a++, b++) {
if(block->flag & UI_BLOCK_NO_FLIP)
@@ -1902,9 +1902,16 @@ static void uiBlockPickerNew(uiBlock *block, float *col, float *hsv, float *old,
static short colormode= 0; /* temp? 0=rgb, 1=hsv, 2=hex */
uiBut *bt;
int width;
+ static char tip[50];
VECCOPY(old, col); // old color stored there, for palette_cb to work
+ /* existence of profile means storage is in linear colour space, with display correction */
+ if (block->color_profile == BLI_PR_NONE)
+ sprintf(tip, "Value in Display Color Space");
+ else
+ sprintf(tip, "Value in Linear RGB Color Space");
+
/* HS circle */
bt= uiDefButF(block, HSVCIRCLE, retval, "", 0, 0,SPICK1,SPICK1, col, 0.0, 0.0, 0, 0, "");
uiButSetFunc(bt, do_picker_small_cb, bt, hsv);
@@ -1930,11 +1937,11 @@ static void uiBlockPickerNew(uiBlock *block, float *col, float *hsv, float *old,
sprintf(hexcol, "%02X%02X%02X", (unsigned int)(col[0]*255.0), (unsigned int)(col[1]*255.0), (unsigned int)(col[2]*255.0));
uiBlockBeginAlign(block);
- bt= uiDefButF(block, NUMSLI, 0, "R ", 0, -60, width, 19, col, 0.0, 1.0, 10, 3, "");
+ bt= uiDefButF(block, NUMSLI, 0, "R ", 0, -60, width, 19, col, 0.0, 1.0, 10, 3, tip);
uiButSetFunc(bt, do_palette1_cb, bt, hsv);
- bt= uiDefButF(block, NUMSLI, 0, "G ", 0, -80, width, 19, col+1, 0.0, 1.0, 10, 3, "");
+ bt= uiDefButF(block, NUMSLI, 0, "G ", 0, -80, width, 19, col+1, 0.0, 1.0, 10, 3, tip);
uiButSetFunc(bt, do_palette1_cb, bt, hsv);
- bt= uiDefButF(block, NUMSLI, 0, "B ", 0, -100, width, 19, col+2, 0.0, 1.0, 10, 3, "");
+ bt= uiDefButF(block, NUMSLI, 0, "B ", 0, -100, width, 19, col+2, 0.0, 1.0, 10, 3, tip);
uiButSetFunc(bt, do_palette1_cb, bt, hsv);
uiBlockEndAlign(block);
@@ -2000,6 +2007,13 @@ uiBlock *ui_block_func_COL(bContext *C, uiPopupBlockHandle *handle, void *arg_bu
block= uiBeginBlock(C, handle->region, "colorpicker", UI_EMBOSS);
+ /* XXX ideally the colour picker buttons would reference the rna property itself */
+ if (but->rnaprop) {
+ if (RNA_property_subtype(but->rnaprop) == PROP_COLOR_GAMMA) {
+ block->color_profile = BLI_PR_NONE;
+ }
+ }
+
uiBlockSetFlag(block, UI_BLOCK_MOVEMOUSE_QUIT);
VECCOPY(handle->retvec, but->editvec);
@@ -2274,6 +2288,7 @@ uiPopupBlockHandle *ui_popup_menu_create(bContext *C, ARegion *butregion, uiBut
/* menu is created from a string */
pup->menu_func= ui_block_func_MENUSTR;
pup->menu_arg= str;
+ // XXX pup->block->flag |= UI_BLOCK_NO_FLIP;
}
else {
/* menu is created from a callback */
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index c263729f4fe..d2b58e61757 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -60,12 +60,58 @@ void ui_template_fix_linking()
void uiTemplateHeader(uiLayout *layout, bContext *C, int menus)
{
uiBlock *block;
-
+
block= uiLayoutAbsoluteBlock(layout);
if(menus) ED_area_header_standardbuttons(C, block, 0);
else ED_area_header_switchbutton(C, block, 0);
}
+/********************** DopeSheet Filter Template *************************/
+
+void uiTemplateDopeSheetFilter(uiLayout *layout, bContext *C, PointerRNA *ptr)
+{
+ Main *mainptr= CTX_data_main(C);
+ ScrArea *sa= CTX_wm_area(C);
+ uiLayout *row= layout;
+ short nlaActive= ((sa) && (sa->spacetype==SPACE_NLA));
+
+ /* more 'generic' filtering options */
+ if (nlaActive)
+ row= uiLayoutRow(layout, 1);
+
+ uiItemR(row, "", 0, ptr, "only_selected", 0);
+
+ if (nlaActive)
+ uiItemR(row, "", 0, ptr, "include_missing_nla", 0);
+
+ if (nlaActive)
+ row= layout;
+
+ /* datatype based - only available datatypes are shown */
+ row= uiLayoutRow(layout, 1);
+
+ uiItemR(row, "", 0, ptr, "display_scene", 0);
+ uiItemR(row, "", 0, ptr, "display_world", 0);
+ uiItemR(row, "", 0, ptr, "display_node", 0);
+
+ if (mainptr && mainptr->key.first)
+ uiItemR(row, "", 0, ptr, "display_shapekeys", 0);
+ if (mainptr && mainptr->mat.first)
+ uiItemR(row, "", 0, ptr, "display_material", 0);
+ if (mainptr && mainptr->lamp.first)
+ uiItemR(row, "", 0, ptr, "display_lamp", 0);
+ if (mainptr && mainptr->camera.first)
+ uiItemR(row, "", 0, ptr, "display_camera", 0);
+ if (mainptr && mainptr->curve.first)
+ uiItemR(row, "", 0, ptr, "display_curve", 0);
+ if (mainptr && mainptr->mball.first)
+ uiItemR(row, "", 0, ptr, "display_metaball", 0);
+ if (mainptr && mainptr->armature.first)
+ uiItemR(row, "", 0, ptr, "display_armature", 0);
+ if (mainptr && mainptr->particle.first)
+ uiItemR(row, "", 0, ptr, "display_particle", 0);
+}
+
/********************** Search Callbacks *************************/
typedef struct TemplateID {
@@ -669,12 +715,12 @@ static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, i
if(ELEM3(psys->part->ren_as, PART_DRAW_PATH, PART_DRAW_GR, PART_DRAW_OB) && psys->pathcache)
uiItemO(row, "Convert", 0, "OBJECT_OT_modifier_convert");
}
- else
+ else {
uiItemEnumO(row, "Apply", 0, "OBJECT_OT_modifier_apply", "apply_as", MODIFIER_APPLY_DATA);
-
- if (modifier_sameTopology(md))
- uiItemEnumO(row, "Apply as Shape", 0, "OBJECT_OT_modifier_apply", "apply_as", MODIFIER_APPLY_SHAPE);
-
+
+ if (modifier_sameTopology(md))
+ uiItemEnumO(row, "Apply as Shape", 0, "OBJECT_OT_modifier_apply", "apply_as", MODIFIER_APPLY_SHAPE);
+ }
uiBlockClearButLock(block);
uiBlockSetButLock(block, ob && ob->id.lib, ERROR_LIBDATA_MESSAGE);
@@ -1444,7 +1490,7 @@ static void colorband_del_cb(bContext *C, void *cb_v, void *coba_v)
/* offset aligns from bottom, standard width 300, height 115 */
-static void colorband_buttons_large(uiBlock *block, ColorBand *coba, int xoffs, int yoffs, RNAUpdateCb *cb)
+static void colorband_buttons_large(uiLayout *layout, uiBlock *block, ColorBand *coba, int xoffs, int yoffs, RNAUpdateCb *cb)
{
uiBut *bt;
@@ -1469,18 +1515,28 @@ static void colorband_buttons_large(uiBlock *block, ColorBand *coba, int xoffs,
if(coba->tot) {
CBData *cbd= coba->data + coba->cur;
+#if 1
+ /* better to use rna so we can animate them */
+ PointerRNA ptr;
+ RNA_pointer_create(cb->ptr.id.data, &RNA_ColorRampElement, cbd, &ptr);
+ uiItemR(layout, NULL, 0, &ptr, "color", 0);
+ //uiItemR(layout, NULL, 0, &ptr, "position", 0);
+ bt= uiDefButF(block, NUM, 0, "Pos:", 0+xoffs,40+yoffs,100, 20, &cbd->pos, 0.0, 1.0, 10, 0, "The position of the active color stop");
+ uiButSetNFunc(bt, colorband_pos_cb, MEM_dupallocN(cb), coba);
+#else
bt= uiDefButF(block, NUM, 0, "Pos:", 0+xoffs,40+yoffs,100, 20, &cbd->pos, 0.0, 1.0, 10, 0, "The position of the active color stop");
uiButSetNFunc(bt, colorband_pos_cb, MEM_dupallocN(cb), coba);
bt= uiDefButF(block, COL, 0, "", 110+xoffs,40+yoffs,80,20, &(cbd->r), 0, 0, 0, B_BANDCOL, "The color value for the active color stop");
uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL);
bt= uiDefButF(block, NUMSLI, 0, "A ", 200+xoffs,40+yoffs,100,20, &cbd->a, 0.0, 1.0, 10, 0, "The alpha value of the active color stop");
uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL);
+#endif
}
}
-static void colorband_buttons_small(uiBlock *block, ColorBand *coba, rctf *butr, RNAUpdateCb *cb)
+static void colorband_buttons_small(uiLayout *layout, uiBlock *block, ColorBand *coba, rctf *butr, RNAUpdateCb *cb)
{
uiBut *bt;
float unit= (butr->xmax-butr->xmin)/14.0f;
@@ -1494,10 +1550,16 @@ static void colorband_buttons_small(uiBlock *block, ColorBand *coba, rctf *butr,
if(coba->tot) {
CBData *cbd= coba->data + coba->cur;
+#if 1
+ PointerRNA ptr;
+ RNA_pointer_create(cb->ptr.id.data, &RNA_ColorRampElement, cbd, &ptr);
+ uiItemR(layout, "", 0, &ptr, "color", 0);
+#else
bt= uiDefButF(block, COL, 0, "", xs+4.0f*unit,butr->ymin+20.0f,2.0f*unit,20, &(cbd->r), 0, 0, 0, B_BANDCOL, "The color value for the active color stop");
uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL);
bt= uiDefButF(block, NUMSLI, 0, "A:", xs+6.0f*unit,butr->ymin+20.0f,4.0f*unit,20, &(cbd->a), 0.0f, 1.0f, 10, 2, "The alpha value of the active color stop");
uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL);
+#endif
}
bt= uiDefButS(block, MENU, 0, "Interpolation %t|Ease %x1|Cardinal %x3|Linear %x0|B-Spline %x2|Constant %x4",
@@ -1510,12 +1572,12 @@ static void colorband_buttons_small(uiBlock *block, ColorBand *coba, rctf *butr,
uiBlockEndAlign(block);
}
-static void colorband_buttons_layout(uiBlock *block, ColorBand *coba, rctf *butr, int small, RNAUpdateCb *cb)
+static void colorband_buttons_layout(uiLayout *layout, uiBlock *block, ColorBand *coba, rctf *butr, int small, RNAUpdateCb *cb)
{
if(small)
- colorband_buttons_small(block, coba, butr, cb);
+ colorband_buttons_small(layout, block, coba, butr, cb);
else
- colorband_buttons_large(block, coba, 0, 0, cb);
+ colorband_buttons_large(layout, block, coba, 0, 0, cb);
}
void uiTemplateColorRamp(uiLayout *layout, PointerRNA *ptr, char *propname, int expand)
@@ -1541,7 +1603,7 @@ void uiTemplateColorRamp(uiLayout *layout, PointerRNA *ptr, char *propname, int
rect.ymin= 0; rect.ymax= 190;
block= uiLayoutAbsoluteBlock(layout);
- colorband_buttons_layout(block, cptr.data, &rect, !expand, cb);
+ colorband_buttons_layout(layout, block, cptr.data, &rect, !expand, cb);
MEM_freeN(cb);
}
@@ -1818,7 +1880,7 @@ static void curvemap_buttons_layout(uiLayout *layout, PointerRNA *ptr, char labe
/* black/white levels */
if(levels) {
- split= uiLayoutSplit(layout, 0);
+ split= uiLayoutSplit(layout, 0, 0);
uiItemR(uiLayoutColumn(split, 0), NULL, 0, ptr, "black_level", UI_ITEM_R_EXPAND);
uiItemR(uiLayoutColumn(split, 0), NULL, 0, ptr, "white_level", UI_ITEM_R_EXPAND);
@@ -1878,51 +1940,94 @@ void uiTemplateTriColorSet(uiLayout *layout, PointerRNA *ptr, char *propname)
/********************* Layer Buttons Template ************************/
+static void handle_layer_buttons(bContext *C, void *arg1, void *arg2)
+{
+ uiBut *but = arg1;
+ int cur = GET_INT_FROM_POINTER(arg2);
+ wmWindow *win= CTX_wm_window(C);
+ int i, tot, shift= win->eventstate->shift;
+
+ if(!shift) {
+ tot= RNA_property_array_length(&but->rnapoin, but->rnaprop);
+
+ /* Normally clicking only selects one layer */
+ RNA_property_boolean_set_index(&but->rnapoin, but->rnaprop, cur, 1);
+ for(i = 0; i < tot; ++i) {
+ if(i != cur)
+ RNA_property_boolean_set_index(&but->rnapoin, but->rnaprop, i, 0);
+ }
+ }
+}
+
// TODO:
-// - option for showing extra info like whether layer has contents?
// - for now, grouping of layers is determined by dividing up the length of
// the array of layer bitflags
-void uiTemplateLayers(uiLayout *layout, PointerRNA *ptr, char *propname)
+void uiTemplateLayers(uiLayout *layout, PointerRNA *ptr, char *propname,
+ PointerRNA *used_ptr, char *used_propname, int active_layer)
{
- uiLayout *uRow, *uSplit, *uCol;
- PropertyRNA *prop;
+ uiLayout *uRow, *uCol;
+ PropertyRNA *prop, *used_prop= NULL;
int groups, cols, layers;
int group, col, layer, row;
+ int cols_per_group = 5;
+ const char *desc;
prop= RNA_struct_find_property(ptr, propname);
if (!prop) {
printf("uiTemplateLayer: layers property not found: %s\n", propname);
return;
}
+
+ desc= RNA_property_description(prop);
/* the number of layers determines the way we group them
* - we want 2 rows only (for now)
* - the number of columns (cols) is the total number of buttons per row
* the 'remainder' is added to this, as it will be ok to have first row slightly wider if need be
- * - for now, only split into groups if if group will have at least 5 items
+ * - for now, only split into groups if group will have at least 5 items
*/
layers= RNA_property_array_length(ptr, prop);
cols= (layers / 2) + (layers % 2);
- groups= ((cols / 2) < 5) ? (1) : (cols / 2);
+ groups= ((cols / 2) < cols_per_group) ? (1) : (cols / cols_per_group);
+
+ if(used_ptr && used_propname) {
+ used_prop= RNA_struct_find_property(used_ptr, used_propname);
+ if (!used_prop) {
+ printf("uiTemplateLayer: used layers property not found: %s\n", used_propname);
+ return;
+ }
+
+ if(RNA_property_array_length(used_ptr, used_prop) < layers)
+ used_prop = NULL;
+ }
/* layers are laid out going across rows, with the columns being divided into groups */
- if (groups > 1)
- uSplit= uiLayoutSplit(layout, (1.0f/(float)groups));
- else
- uSplit= layout;
for (group= 0; group < groups; group++) {
- uCol= uiLayoutColumn(uSplit, 1);
+ uCol= uiLayoutColumn(layout, 1);
for (row= 0; row < 2; row++) {
+ uiBlock *block;
+ uiBut *but;
+
uRow= uiLayoutRow(uCol, 1);
- layer= groups*cols*row + cols*group;
+ block= uiLayoutGetBlock(uRow);
+ layer= groups*cols_per_group*row + cols_per_group*group;
/* add layers as toggle buts */
- for (col= 0; (col < cols) && (layer < layers); col++, layer++) {
- int icon=0; // XXX - add some way of setting this...
- uiItemFullR(uRow, "", icon, ptr, prop, layer, 0, UI_ITEM_R_TOGGLE);
+ for (col= 0; (col < cols_per_group) && (layer < layers); col++, layer++) {
+ int icon = 0;
+ int butlay = 1 << layer;
+
+ if(active_layer & butlay)
+ icon = ICON_LAYER_ACTIVE;
+ else if(used_prop && RNA_property_boolean_get_index(used_ptr, used_prop, layer))
+ icon = ICON_LAYER_USED;
+
+ but= uiDefAutoButR(block, ptr, prop, layer, "", icon, 0, 0, 10, 10);
+ uiButSetFunc(but, handle_layer_buttons, but, SET_INT_IN_POINTER(layer));
+ but->type= TOG;
}
}
}
@@ -2009,7 +2114,7 @@ static void list_item_row(bContext *C, uiLayout *layout, PointerRNA *ptr, Pointe
else if(itemptr->type == &RNA_ShapeKey) {
ob= (Object*)activeptr->data;
- split= uiLayoutSplit(sub, 0.75f);
+ split= uiLayoutSplit(sub, 0.75f, 0);
uiItemL(split, name, icon);
diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c
index cb6cc5dcacf..a8cd0e017ed 100644
--- a/source/blender/editors/interface/interface_utils.c
+++ b/source/blender/editors/interface/interface_utils.c
@@ -69,11 +69,10 @@ uiBut *uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int ind
else
value= RNA_property_boolean_get(ptr, prop);
- // XXX: when to do TOG, and when to do ICONTOG? for now, let's just do TOG, since ICONTOG causes too much trouble everywhere else
if(icon && name && strcmp(name, "") == 0)
- but= uiDefIconButR(block, TOG, 0, icon, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
+ but= uiDefIconButR(block, ICONTOG, 0, icon, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
else if(icon)
- but= uiDefIconTextButR(block, TOG, 0, icon, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
+ but= uiDefIconTextButR(block, ICONTOG, 0, icon, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
else
but= uiDefButR(block, OPTION, 0, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
break;
@@ -81,7 +80,7 @@ uiBut *uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int ind
case PROP_INT:
case PROP_FLOAT:
if(arraylen && index == -1) {
- if(RNA_property_subtype(prop) == PROP_COLOR)
+ if(ELEM(RNA_property_subtype(prop), PROP_COLOR, PROP_COLOR_GAMMA))
but= uiDefButR(block, COL, 0, name, x1, y1, x2, y2, ptr, propname, 0, 0, 0, -1, -1, NULL);
}
else if(RNA_property_subtype(prop) == PROP_PERCENTAGE || RNA_property_subtype(prop) == PROP_FACTOR)
@@ -152,7 +151,7 @@ void uiDefAutoButsRNA(const bContext *C, uiLayout *layout, PointerRNA *ptr, int
uiItemL(col, name, 0);
}
else if(columns == 2) {
- split = uiLayoutSplit(layout, 0.5f);
+ split = uiLayoutSplit(layout, 0.5f, 0);
uiItemL(uiLayoutColumn(split, 0), name, 0);
col= uiLayoutColumn(split, 0);
diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c
index e148fd9217f..4c9698974b4 100644
--- a/source/blender/editors/interface/interface_widgets.c
+++ b/source/blender/editors/interface/interface_widgets.c
@@ -44,6 +44,8 @@
#include "BKE_global.h"
#include "BKE_utildefines.h"
+#include "RNA_access.h"
+
#include "BIF_gl.h"
#include "BIF_glutil.h"
@@ -1693,6 +1695,17 @@ static void ui_draw_but_HSV_v(uiBut *but, rcti *rect)
uiWidgetBase wtb;
float rad= 0.5f*(rect->xmax - rect->xmin);
float x, y;
+ float v = but->hsv[2];
+ int color_profile = but->block->color_profile;
+
+ if (but->rnaprop) {
+ if (RNA_property_subtype(but->rnaprop) == PROP_COLOR_GAMMA) {
+ color_profile = BLI_PR_NONE;
+ }
+ }
+
+ if (color_profile)
+ v = linearrgb_to_srgb(v);
widget_init(&wtb);
@@ -1709,8 +1722,8 @@ static void ui_draw_but_HSV_v(uiBut *but, rcti *rect)
widgetbase_draw(&wtb, &wcol_tmp);
/* cursor */
- x= rect->xmin + 0.5f*(rect->xmax-rect->xmin);
- y= rect->ymin + but->hsv[2]*(rect->ymax-rect->ymin);
+ x= rect->xmin + 0.5f * (rect->xmax-rect->xmin);
+ y= rect->ymin + v * (rect->ymax-rect->ymin);
CLAMP(y, rect->ymin+3.0, rect->ymax-3.0);
ui_hsv_cursor(x, y);
@@ -2005,6 +2018,12 @@ static void widget_swatch(uiBut *but, uiWidgetColors *wcol, rcti *rect, int stat
{
uiWidgetBase wtb;
float col[4];
+ int color_profile = but->block->color_profile;
+
+ if (but->rnaprop) {
+ if (RNA_property_subtype(but->rnaprop) == PROP_COLOR_GAMMA)
+ color_profile = BLI_PR_NONE;
+ }
widget_init(&wtb);
@@ -2012,6 +2031,10 @@ static void widget_swatch(uiBut *but, uiWidgetColors *wcol, rcti *rect, int stat
round_box_edges(&wtb, roundboxalign, rect, 5.0f);
ui_get_but_vectorf(but, col);
+
+ if (color_profile)
+ linearrgb_to_srgb_v3_v3(col, col);
+
wcol->inner[0]= FTOCHAR(col[0]);
wcol->inner[1]= FTOCHAR(col[1]);
wcol->inner[2]= FTOCHAR(col[2]);
diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c
index 5e148717963..dadde97aba7 100644
--- a/source/blender/editors/interface/resources.c
+++ b/source/blender/editors/interface/resources.c
@@ -46,6 +46,7 @@
#include "DNA_userdef_types.h"
#include "DNA_screen_types.h"
#include "DNA_space_types.h"
+#include "DNA_windowmanager_types.h"
#include "BLI_blenlib.h"
@@ -1259,8 +1260,14 @@ void init_userdef_do_versions(void)
/* new audio system */
if(U.audiochannels == 0)
U.audiochannels = 2;
- if(U.audiodevice == 0)
+ if(U.audiodevice == 0) {
+#ifdef WITH_OPENAL
U.audiodevice = 2;
+#endif
+#ifdef WITH_SDL
+ U.audiodevice = 1;
+#endif
+ }
if(U.audioformat == 0)
U.audioformat = 0x24;
if(U.audiorate == 0)
@@ -1270,6 +1277,47 @@ void init_userdef_do_versions(void)
if (G.main->versionfile < 250 || (G.main->versionfile == 250 && G.main->subversionfile < 5))
U.gameflags |= USER_DISABLE_VBO;
+ if (G.main->versionfile < 250 || (G.main->versionfile == 250 && G.main->subversionfile < 8)) {
+ wmKeyMap *km;
+
+ for(km=U.keymaps.first; km; km=km->next) {
+ if (strcmp(km->idname, "Armature_Sketch")==0)
+ strcpy(km->idname, "Armature Sketch");
+ else if (strcmp(km->idname, "View3D")==0)
+ strcpy(km->idname, "3D View");
+ else if (strcmp(km->idname, "View3D Generic")==0)
+ strcpy(km->idname, "3D View Generic");
+ else if (strcmp(km->idname, "EditMesh")==0)
+ strcpy(km->idname, "Mesh");
+ else if (strcmp(km->idname, "TimeLine")==0)
+ strcpy(km->idname, "Timeline");
+ else if (strcmp(km->idname, "UVEdit")==0)
+ strcpy(km->idname, "UV Editor");
+ else if (strcmp(km->idname, "Animation_Channels")==0)
+ strcpy(km->idname, "Animation Channels");
+ else if (strcmp(km->idname, "GraphEdit Keys")==0)
+ strcpy(km->idname, "Graph Editor");
+ else if (strcmp(km->idname, "GraphEdit Generic")==0)
+ strcpy(km->idname, "Graph Editor Generic");
+ else if (strcmp(km->idname, "Action_Keys")==0)
+ strcpy(km->idname, "Dopesheet");
+ else if (strcmp(km->idname, "NLA Data")==0)
+ strcpy(km->idname, "NLA Editor");
+ else if (strcmp(km->idname, "Node Generic")==0)
+ strcpy(km->idname, "Node Editor");
+ else if (strcmp(km->idname, "Logic Generic")==0)
+ strcpy(km->idname, "Logic Editor");
+ else if (strcmp(km->idname, "File")==0)
+ strcpy(km->idname, "File Browser");
+ else if (strcmp(km->idname, "FileMain")==0)
+ strcpy(km->idname, "File Browser Main");
+ else if (strcmp(km->idname, "FileButtons")==0)
+ strcpy(km->idname, "File Browser Buttons");
+ else if (strcmp(km->idname, "Buttons Generic")==0)
+ strcpy(km->idname, "Property Editor");
+ }
+ }
+
/* GL Texture Garbage Collection (variable abused above!) */
if (U.textimeout == 0) {
U.texcollectrate = 60;
@@ -1281,6 +1329,12 @@ void init_userdef_do_versions(void)
if (U.frameserverport == 0) {
U.frameserverport = 8080;
}
+ if (U.dbl_click_time == 0) {
+ U.dbl_click_time = 350;
+ }
+ if (U.anim_player_preset == 0) {
+ U.anim_player_preset =1 ;
+ }
/* funny name, but it is GE stuff, moves userdef stuff to engine */
// XXX space_set_commmandline_options();
diff --git a/source/blender/editors/interface/view2d_ops.c b/source/blender/editors/interface/view2d_ops.c
index 6579e30900b..7d1dc00e271 100644
--- a/source/blender/editors/interface/view2d_ops.c
+++ b/source/blender/editors/interface/view2d_ops.c
@@ -274,7 +274,7 @@ void VIEW2D_OT_pan(wmOperatorType *ot)
ot->cancel= view_pan_cancel;
/* operator is repeatable */
- ot->flag= OPTYPE_BLOCKING;
+ ot->flag= OPTYPE_BLOCKING|OPTYPE_GRAB_POINTER;
/* rna - must keep these in sync with the other operators */
RNA_def_int(ot->srna, "deltax", 0, INT_MIN, INT_MAX, "Delta X", "", INT_MIN, INT_MAX);
@@ -656,6 +656,7 @@ typedef struct v2dViewZoomData {
int lastx, lasty; /* previous x/y values of mouse in window */
float dx, dy; /* running tally of previous delta values (for obtaining final zoom) */
+ float mx_2d, my_2d; /* initial mouse location in v2d coords */
} v2dViewZoomData;
/* initialise panning customdata */
@@ -701,8 +702,17 @@ static void view_zoomdrag_apply(bContext *C, wmOperator *op)
v2d->cur.xmax -= 2*dx;
}
else {
- v2d->cur.xmin += dx;
- v2d->cur.xmax -= dx;
+ if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) {
+ float mval_fac = (vzd->mx_2d - v2d->cur.xmin) / (v2d->cur.xmax-v2d->cur.xmin);
+ float mval_faci = 1.0 - mval_fac;
+ float ofs= (mval_fac * dx) - (mval_faci * dx);
+ v2d->cur.xmin += ofs + dx;
+ v2d->cur.xmax += ofs - dx;
+ }
+ else {
+ v2d->cur.xmin += dx;
+ v2d->cur.xmax -= dx;
+ }
}
}
if ((v2d->keepzoom & V2D_LOCKZOOM_Y)==0) {
@@ -710,8 +720,17 @@ static void view_zoomdrag_apply(bContext *C, wmOperator *op)
v2d->cur.ymax -= 2*dy;
}
else {
- v2d->cur.ymin += dy;
- v2d->cur.ymax -= dy;
+ if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) {
+ float mval_fac = (vzd->my_2d - v2d->cur.ymin) / (v2d->cur.ymax-v2d->cur.ymin);
+ float mval_faci = 1.0 - mval_fac;
+ float ofs= (mval_fac * dy) - (mval_faci * dy);
+ v2d->cur.ymin += ofs + dy;
+ v2d->cur.ymax += ofs - dy;
+ }
+ else {
+ v2d->cur.ymin += dy;
+ v2d->cur.ymax -= dy;
+ }
}
}
@@ -764,6 +783,11 @@ static int view_zoomdrag_invoke(bContext *C, wmOperator *op, wmEvent *event)
RNA_float_set(op->ptr, "deltax", 0);
RNA_float_set(op->ptr, "deltay", 0);
+ if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) {
+ ARegion *ar= CTX_wm_region(C);
+ UI_view2d_region_to_view(&ar->v2d, event->x - ar->winrct.xmin, event->y - ar->winrct.ymin, &vzd->mx_2d, &vzd->my_2d);
+ }
+
if (v2d->keepofs & V2D_LOCKOFS_X)
WM_cursor_modal(window, BC_NS_SCROLLCURSOR);
else if (v2d->keepofs & V2D_LOCKOFS_Y)
@@ -1403,7 +1427,7 @@ void VIEW2D_OT_reset(wmOperatorType *ot)
/* ********************************************************* */
/* Registration */
-void ui_view2d_operatortypes(void)
+void UI_view2d_operatortypes(void)
{
WM_operatortype_append(VIEW2D_OT_pan);
diff --git a/source/blender/editors/mesh/bmesh_select.c b/source/blender/editors/mesh/bmesh_select.c
index bc05947aa6a..6119568c460 100644
--- a/source/blender/editors/mesh/bmesh_select.c
+++ b/source/blender/editors/mesh/bmesh_select.c
@@ -1165,6 +1165,11 @@ static void mouse_mesh_loop(bContext *C, short mval[2], short extend, short ring
EDBM_selectmode_flush(em);
// if (EM_texFaceCheck())
+ /* sets as active, useful for other tools */
+ if(select && em->selectmode & SCE_SELECT_EDGE) {
+ EDBM_store_selection(em, eed, BM_EDGE);
+ }
+
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc.obedit);
}
}
@@ -1300,11 +1305,10 @@ void MESH_OT_select_shortest_path(wmOperatorType *ot)
RNA_def_boolean(ot->srna, "extend", 0, "Extend Select", "");
}
-
/* ************************************************** */
/* here actual select happens */
/* gets called via generic mouse select operator */
-void mouse_mesh(bContext *C, short mval[2], short extend)
+int mouse_mesh(bContext *C, short mval[2], short extend)
{
ViewContext vc;
BMVert *eve = NULL;
@@ -1363,9 +1367,12 @@ void mouse_mesh(bContext *C, short mval[2], short extend)
vc.em->mat_nr= efa->mat_nr;
// BIF_preview_changed(ID_MA);
}
+
+ WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc.obedit);
+ return 1;
}
- WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc.obedit);
+ return 0;
}
static void EDBM_strip_selections(BMEditMesh *em)
@@ -1775,3 +1782,274 @@ void MESH_OT_select_less(wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
+
+static int mesh_select_nth_exec(bContext *C, wmOperator *op)
+{
+ Object *obedit= CTX_data_edit_object(C);
+ EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data));
+ int nth = RNA_int_get(op->ptr, "nth");
+
+ if(EM_deselect_nth(em, nth) == 0) {
+ BKE_report(op->reports, RPT_ERROR, "Mesh has no active vert/edge/face.");
+ return OPERATOR_CANCELLED;
+ }
+
+ BKE_mesh_end_editmesh(obedit->data, em);
+
+ DAG_id_flush_update(obedit->data, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data);
+
+ return OPERATOR_FINISHED;
+}
+
+
+void MESH_OT_select_nth(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Select Nth";
+ ot->description= "";
+ ot->idname= "MESH_OT_select_nth";
+
+ /* api callbacks */
+ ot->exec= mesh_select_nth_exec;
+ ot->poll= ED_operator_editmesh;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ RNA_def_int(ot->srna, "nth", 2, 2, 100, "Nth Selection", "", 1, INT_MAX);
+}
+
+#if 0 //BMESH_TODO, select nth tool
+/* not that optimal!, should be nicer with bmesh */
+static void tag_face_edges(EditFace *efa)
+{
+ if(efa->v4)
+ efa->e1->tmp.l= efa->e2->tmp.l= efa->e3->tmp.l= efa->e4->tmp.l= 1;
+ else
+ efa->e1->tmp.l= efa->e2->tmp.l= efa->e3->tmp.l= 1;
+}
+static int tag_face_edges_test(EditFace *efa)
+{
+ if(efa->v4)
+ return (efa->e1->tmp.l || efa->e2->tmp.l || efa->e3->tmp.l || efa->e4->tmp.l) ? 1:0;
+ else
+ return (efa->e1->tmp.l || efa->e2->tmp.l || efa->e3->tmp.l) ? 1:0;
+}
+
+void em_deselect_nth_face(EditMesh *em, int nth, EditFace *efa_act)
+{
+ EditFace *efa;
+ EditEdge *eed;
+ int ok= 1;
+
+ if(efa_act==NULL) {
+ return;
+ }
+
+ /* to detect loose edges, we put f2 flag on 1 */
+ for(eed= em->edges.first; eed; eed= eed->next) {
+ eed->tmp.l= 0;
+ }
+
+ for (efa= em->faces.first; efa; efa= efa->next) {
+ efa->tmp.l = 0;
+ }
+
+ efa_act->tmp.l = 1;
+
+ while(ok) {
+ ok = 0;
+
+ for (efa= em->faces.first; efa; efa= efa->next) {
+ if(efa->tmp.l==1) { /* initialize */
+ tag_face_edges(efa);
+ }
+
+ if(efa->tmp.l)
+ efa->tmp.l++;
+ }
+
+ for (efa= em->faces.first; efa; efa= efa->next) {
+ if(efa->tmp.l==0 && tag_face_edges_test(efa)) {
+ efa->tmp.l= 1;
+ ok = 1; /* keep looping */
+ }
+ }
+ }
+
+ for (efa= em->faces.first; efa; efa= efa->next) {
+ if(efa->tmp.l > 0 && efa->tmp.l % nth) {
+ EM_select_face(efa, 0);
+ }
+ }
+ for (efa= em->faces.first; efa; efa= efa->next) {
+ if(efa->f & SELECT) {
+ EM_select_face(efa, 1);
+ }
+ }
+
+ EM_nvertices_selected(em);
+ EM_nedges_selected(em);
+ EM_nfaces_selected(em);
+}
+
+/* not that optimal!, should be nicer with bmesh */
+static void tag_edge_verts(EditEdge *eed)
+{
+ eed->v1->tmp.l= eed->v2->tmp.l= 1;
+}
+static int tag_edge_verts_test(EditEdge *eed)
+{
+ return (eed->v1->tmp.l || eed->v2->tmp.l) ? 1:0;
+}
+
+void em_deselect_nth_edge(EditMesh *em, int nth, EditEdge *eed_act)
+{
+ EditEdge *eed;
+ EditVert *eve;
+ int ok= 1;
+
+ if(eed_act==NULL) {
+ return;
+ }
+
+ for(eve= em->verts.first; eve; eve= eve->next) {
+ eve->tmp.l= 0;
+ }
+
+ for (eed= em->edges.first; eed; eed= eed->next) {
+ eed->tmp.l = 0;
+ }
+
+ eed_act->tmp.l = 1;
+
+ while(ok) {
+ ok = 0;
+
+ for (eed= em->edges.first; eed; eed= eed->next) {
+ if(eed->tmp.l==1) { /* initialize */
+ tag_edge_verts(eed);
+ }
+
+ if(eed->tmp.l)
+ eed->tmp.l++;
+ }
+
+ for (eed= em->edges.first; eed; eed= eed->next) {
+ if(eed->tmp.l==0 && tag_edge_verts_test(eed)) {
+ eed->tmp.l= 1;
+ ok = 1; /* keep looping */
+ }
+ }
+ }
+
+ for (eed= em->edges.first; eed; eed= eed->next) {
+ if(eed->tmp.l > 0 && eed->tmp.l % nth) {
+ EM_select_edge(eed, 0);
+ }
+ }
+ for (eed= em->edges.first; eed; eed= eed->next) {
+ if(eed->f & SELECT) {
+ EM_select_edge(eed, 1);
+ }
+ }
+
+ {
+ /* grr, should be a function */
+ EditFace *efa;
+ for (efa= em->faces.first; efa; efa= efa->next) {
+ if(efa->v4) {
+ if(efa->e1->f & efa->e2->f & efa->e3->f & efa->e4->f & SELECT );
+ else efa->f &= ~SELECT;
+ }
+ else {
+ if(efa->e1->f & efa->e2->f & efa->e3->f & SELECT );
+ else efa->f &= ~SELECT;
+ }
+ }
+ }
+
+ EM_nvertices_selected(em);
+ EM_nedges_selected(em);
+ EM_nfaces_selected(em);
+}
+
+void em_deselect_nth_vert(EditMesh *em, int nth, EditVert *eve_act)
+{
+ EditVert *eve;
+ EditEdge *eed;
+ int ok= 1;
+
+ if(eve_act==NULL) {
+ return;
+ }
+
+ for (eve= em->verts.first; eve; eve= eve->next) {
+ eve->tmp.l = 0;
+ }
+
+ eve_act->tmp.l = 1;
+
+ while(ok) {
+ ok = 0;
+
+ for (eve= em->verts.first; eve; eve= eve->next) {
+ if(eve->tmp.l)
+ eve->tmp.l++;
+ }
+
+ for (eed= em->edges.first; eed; eed= eed->next) {
+ if(eed->v1->tmp.l==2 && eed->v2->tmp.l==0) { /* initialize */
+ eed->v2->tmp.l= 1;
+ ok = 1; /* keep looping */
+ }
+ else if(eed->v2->tmp.l==2 && eed->v1->tmp.l==0) { /* initialize */
+ eed->v1->tmp.l= 1;
+ ok = 1; /* keep looping */
+ }
+ }
+ }
+
+ for (eve= em->verts.first; eve; eve= eve->next) {
+ if(eve->tmp.l > 0 && eve->tmp.l % nth) {
+ eve->f &= ~SELECT;
+ }
+ }
+
+ EM_deselect_flush(em);
+
+ EM_nvertices_selected(em);
+ // EM_nedges_selected(em); // flush does these
+ // EM_nfaces_selected(em); // flush does these
+}
+#endif
+
+int EM_deselect_nth(EditMesh *em, int nth)
+{
+#if 0
+ EditSelection *ese;
+ ese = ((EditSelection*)em->selected.last);
+ if(ese) {
+ if(ese->type == EDITVERT) {
+ em_deselect_nth_vert(em, nth, (EditVert*)ese->data);
+ return 1;
+ }
+
+ if(ese->type == EDITEDGE) {
+ em_deselect_nth_edge(em, nth, (EditEdge*)ese->data);
+ return 1;
+ }
+ }
+ else {
+ EditFace *efa_act = EM_get_actFace(em, 0);
+ if(efa_act) {
+ em_deselect_nth_face(em, nth, efa_act);
+ return 1;
+ }
+ }
+
+ return 0;
+#endif
+ return 1;
+}
diff --git a/source/blender/editors/mesh/bmesh_tools.c b/source/blender/editors/mesh/bmesh_tools.c
index af14e60dcd9..e92eab07c1b 100644
--- a/source/blender/editors/mesh/bmesh_tools.c
+++ b/source/blender/editors/mesh/bmesh_tools.c
@@ -690,7 +690,7 @@ static int mesh_extrude_region_invoke(bContext *C, wmOperator *op, wmEvent *even
RNA_enum_set(op->ptr, "constraint_orientation", V3D_MANIP_NORMAL);
RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis);
}
- WM_operator_name_call(C, "TFM_OT_translate", WM_OP_INVOKE_REGION_WIN, op->ptr);
+ WM_operator_name_call(C, "TRANSFORM_OT_translate", WM_OP_INVOKE_REGION_WIN, op->ptr);
return OPERATOR_FINISHED;
}
@@ -749,7 +749,7 @@ static int mesh_extrude_verts_invoke(bContext *C, wmOperator *op, wmEvent *event
RNA_enum_set(op->ptr, "constraint_orientation", V3D_MANIP_NORMAL);
RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis);
}
- WM_operator_name_call(C, "TFM_OT_translate", WM_OP_INVOKE_REGION_WIN, op->ptr);
+ WM_operator_name_call(C, "TRANSFORM_OT_translate", WM_OP_INVOKE_REGION_WIN, op->ptr);
return OPERATOR_FINISHED;
}
@@ -808,7 +808,7 @@ static int mesh_extrude_edges_invoke(bContext *C, wmOperator *op, wmEvent *event
RNA_enum_set(op->ptr, "constraint_orientation", V3D_MANIP_NORMAL);
RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis);
}*/
- WM_operator_name_call(C, "TFM_OT_translate", WM_OP_INVOKE_REGION_WIN, op->ptr);
+ WM_operator_name_call(C, "TRANSFORM_OT_translate", WM_OP_INVOKE_REGION_WIN, op->ptr);
return OPERATOR_FINISHED;
}
@@ -864,13 +864,13 @@ static int mesh_extrude_faces_invoke(bContext *C, wmOperator *op, wmEvent *event
RNA_boolean_set(op->ptr, "mirror", 0);
if (tmode == 's') {
- WM_operator_name_call(C, "TFM_OT_shrink_fatten", WM_OP_INVOKE_REGION_WIN, op->ptr);
+ WM_operator_name_call(C, "TRANSFORM_OT_shrink_fatten", WM_OP_INVOKE_REGION_WIN, op->ptr);
} else {
if (tmode == 'n') {
RNA_enum_set(op->ptr, "constraint_orientation", V3D_MANIP_NORMAL);
RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis);
}
- WM_operator_name_call(C, "TFM_OT_translate", WM_OP_INVOKE_REGION_WIN, op->ptr);
+ WM_operator_name_call(C, "TRANSFORM_OT_translate", WM_OP_INVOKE_REGION_WIN, op->ptr);
}
return OPERATOR_FINISHED;
}
@@ -1028,11 +1028,11 @@ static int toggle_select_all_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void MESH_OT_select_all_toggle(wmOperatorType *ot)
+void MESH_OT_select_all(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Select/Deselect All";
- ot->idname= "MESH_OT_select_all_toggle";
+ ot->idname= "MESH_OT_select_all";
ot->description= "(de)select all vertices, edges or faces.";
/* api callbacks */
@@ -3348,7 +3348,7 @@ static int mesh_rip_invoke(bContext *C, wmOperator *op, wmEvent *event)
// RNA_enum_set(op->ptr, "proportional", 0);
// RNA_boolean_set(op->ptr, "mirror", 0);
-// WM_operator_name_call(C, "TFM_OT_translate", WM_OP_INVOKE_REGION_WIN, op->ptr);
+// WM_operator_name_call(C, "TRANSFORM_OT_translate", WM_OP_INVOKE_REGION_WIN, op->ptr);
#endif
}
@@ -3608,3 +3608,48 @@ void MESH_OT_select_axis(wmOperatorType *ot)
RNA_def_int(ot->srna, "axis", 0, 0, 2, "Axis", "Select the axis to compare each vertex on", 0, 2);
}
+static int solidify_exec(bContext *C, wmOperator *op)
+{
+#if 0
+ Object *obedit= CTX_data_edit_object(C);
+ EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data));
+ float nor[3] = {0,0,1};
+
+ float thickness= RNA_float_get(op->ptr, "thickness");
+
+ extrudeflag(obedit, em, SELECT, nor, 1);
+ EM_make_hq_normals(em);
+ EM_solidify(em, thickness);
+
+
+ /* update vertex normals too */
+ recalc_editnormals(em);
+
+ BKE_mesh_end_editmesh(obedit->data, em);
+
+ DAG_id_flush_update(obedit->data, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data);
+
+ return OPERATOR_FINISHED;
+#endif
+}
+
+
+void MESH_OT_solidify(wmOperatorType *ot)
+{
+ PropertyRNA *prop;
+ /* identifiers */
+ ot->name= "Solidify";
+ ot->description= "Create a solid skin by extruding, compensating for sharp angles.";
+ ot->idname= "MESH_OT_solidify";
+
+ /* api callbacks */
+ ot->exec= solidify_exec;
+ ot->poll= ED_operator_editmesh;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ prop= RNA_def_float(ot->srna, "thickness", 0.01f, -FLT_MAX, FLT_MAX, "thickness", "", -10.0f, 10.0f);
+ RNA_def_property_ui_range(prop, -10, 10, 0.1, 4);
+}
diff --git a/source/blender/editors/mesh/editface.c b/source/blender/editors/mesh/editface.c
index 9754a7db4fe..4fa7a19a1b3 100644
--- a/source/blender/editors/mesh/editface.c
+++ b/source/blender/editors/mesh/editface.c
@@ -99,15 +99,17 @@ void object_facesel_flush_dm(Object *ob)
int totface;
int i;
-
- if(me==NULL || dm==NULL || !CustomData_has_layer( &dm->faceData, CD_ORIGINDEX))
+ if(me==NULL || dm==NULL)
+ return;
+
+ index_array = dm->getTessFaceDataArray(dm, CD_ORIGINDEX);
+
+ if(!index_array)
return;
faces = dm->getTessFaceArray(dm);
totface = dm->getNumTessFaces(dm);
- index_array = dm->getTessFaceDataArray(dm, CD_ORIGINDEX);
-
mf= faces;
for (i= 0; i<totface; i++, mf++) { /* loop over derived mesh faces */
@@ -125,7 +127,7 @@ int facesel_face_pick(struct bContext *C, Mesh *me, short *mval, unsigned int *i
if (!me || me->totface==0)
return 0;
-// XXX if (v3d->flag & V3D_NEEDBACKBUFDRAW) {
+// XXX if (v3d->flag & V3D_INVALID_BACKBUF) {
// XXX drawview.c! check_backbuf();
// XXX persp(PERSP_VIEW);
// XXX }
@@ -378,34 +380,44 @@ void select_linked_tfaces(bContext *C, Object *ob, short mval[2], int mode)
object_facesel_flush_dm(ob);
}
-void deselectall_tface(Object *ob)
+void selectall_tface(Object *ob, int action)
{
Mesh *me;
MFace *mface;
- int a, sel;
+ int a;
me= get_mesh(ob);
if(me==0) return;
- mface= me->mface;
- a= me->totface;
- sel= 0;
- while(a--) {
- if(mface->flag & ME_HIDE);
- else if(mface->flag & ME_FACE_SEL) {
- sel= 1;
- break;
+ if (action == SEL_TOGGLE) {
+ action = SEL_SELECT;
+
+ mface= me->mface;
+ a= me->totface;
+ while(a--) {
+ if((mface->flag & ME_HIDE) == 0 && mface->flag & ME_FACE_SEL) {
+ action = SEL_DESELECT;
+ break;
+ }
+ mface++;
}
- mface++;
}
mface= me->mface;
a= me->totface;
while(a--) {
- if(mface->flag & ME_HIDE);
- else {
- if(sel) mface->flag &= ~ME_FACE_SEL;
- else mface->flag |= ME_FACE_SEL;
+ if((mface->flag & ME_HIDE) == 0) {
+ switch (action) {
+ case SEL_SELECT:
+ mface->flag |= ME_FACE_SEL;
+ break;
+ case SEL_DESELECT:
+ mface->flag &= ~ME_FACE_SEL;
+ break;
+ case SEL_INVERT:
+ mface->flag ^= ME_FACE_SEL;
+ break;
+ }
}
mface++;
}
@@ -815,7 +827,7 @@ int face_select(struct bContext *C, Object *ob, short mval[2], int extend)
return 1;
}
-void face_borderselect(struct bContext *C, Object *ob, rcti *rect, int select)
+void face_borderselect(struct bContext *C, Object *ob, rcti *rect, int select, int extend)
{
Mesh *me;
MFace *mface;
@@ -837,6 +849,14 @@ void face_borderselect(struct bContext *C, Object *ob, rcti *rect, int select)
sy= (rect->ymax-rect->ymin+1);
if(sx*sy<=0) return;
+ if (extend == 0 && select) {
+ mface= me->mface;
+ for(a=1; a<=me->totface; a++, mface++) {
+ if((mface->flag & ME_HIDE) == 0)
+ mface->flag &= ~ME_FACE_SEL;
+ }
+ }
+
view3d_validate_backbuf(&vc);
ibuf = IMB_allocImBuf(sx,sy,32,IB_rect,0);
diff --git a/source/blender/editors/mesh/editmesh_add.c b/source/blender/editors/mesh/editmesh_add.c
index bf4befa55ea..11fac90a26f 100644
--- a/source/blender/editors/mesh/editmesh_add.c
+++ b/source/blender/editors/mesh/editmesh_add.c
@@ -920,7 +920,7 @@ static void make_prim(Object *obedit, int type, float mat[4][4], int tot, int se
mul_mat3_m4_v3(mat, vec);
for(a=0;a<seg-1;a++) {
- extrudeflag_vert(obedit, em, 2, nor); // nor unused
+ extrudeflag_vert(obedit, em, 2, nor, 0); // nor unused
translateflag(em, 2, vec);
}
break;
@@ -955,7 +955,7 @@ static void make_prim(Object *obedit, int type, float mat[4][4], int tot, int se
quat_to_mat3( cmat,q);
for(a=0; a<seg; a++) {
- extrudeflag_vert(obedit, em, 2, nor); // nor unused
+ extrudeflag_vert(obedit, em, 2, nor, 0); // nor unused
rotateflag(em, 2, v1->co, cmat);
}
diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c
index ceba0788b1c..626062b27a1 100644
--- a/source/blender/editors/mesh/editmesh_mods.c
+++ b/source/blender/editors/mesh/editmesh_mods.c
@@ -80,6 +80,7 @@ editmesh_mods.c, UI level access, no geometry changes
#include "RNA_access.h"
#include "RNA_define.h"
+#include "RNA_enum_types.h"
#include "ED_mesh.h"
#include "ED_screen.h"
@@ -1697,6 +1698,8 @@ void MESH_OT_bmesh_test(wmOperatorType *ot)
/* api callbacks */
ot->exec= bmesh_test_exec;
ot->poll= ED_operator_editmesh;
+
+ WM_operator_properties_select_all(ot);
}
/* ******************** **************** */
@@ -1800,14 +1803,12 @@ void EM_select_less(EditMesh *em)
}
}
-static void selectrandom_mesh(EditMesh *em, float perc) /* randomly selects a user-set % of vertices/edges/faces */
+static void selectrandom_mesh(EditMesh *em, float randfac) /* randomly selects a user-set % of vertices/edges/faces */
{
+#if 0
EditVert *eve;
EditEdge *eed;
EditFace *efa;
- float randfac= perc;
- /* Get the percentage of vertices to randomly select as 'randfac' */
-// XXX if(button(&randfac,0, 100,"Percentage:")==0) return;
BLI_srand( BLI_rand() ); /* random seed */
@@ -1840,18 +1841,24 @@ static void selectrandom_mesh(EditMesh *em, float perc) /* randomly selects a us
EM_selectmode_flush(em);
}
// if (EM_texFaceCheck())
+#endif
}
static int mesh_select_random_exec(bContext *C, wmOperator *op)
{
+#if 0
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data));
- selectrandom_mesh(em, RNA_float_get(op->ptr,"percent"));
+ if(!RNA_boolean_get(op->ptr, "extend"))
+ EM_deselect_all(em);
+
+ selectrandom_mesh(em, RNA_float_get(op->ptr, "percent")/100.0f);
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data);
BKE_mesh_end_editmesh(obedit->data, em);
+#endif
return OPERATOR_FINISHED;
}
@@ -1864,14 +1871,14 @@ void MESH_OT_select_random(wmOperatorType *ot)
/* api callbacks */
ot->exec= mesh_select_random_exec;
- ot->invoke= WM_operator_props_popup;
ot->poll= ED_operator_editmesh;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* props */
- RNA_def_float_percentage(ot->srna, "percent", 50.0f, 0.0f, 100.0f, "Percent", "Percentage of vertices to select randomly.", 0.0001f, 1.0f);
+ RNA_def_float_percentage(ot->srna, "percent", 50.f, 0.0f, 100.0f, "Percent", "Percentage of elements to select randomly.", 0.f, 100.0f);
+ RNA_def_boolean(ot->srna, "extend", FALSE, "Extend Selection", "Extend selection instead of deselecting everything first.");
}
void EM_select_by_material(EditMesh *em, int index)
diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c
index aed8f84b974..70e1ba0f54f 100644
--- a/source/blender/editors/mesh/editmesh_tools.c
+++ b/source/blender/editors/mesh/editmesh_tools.c
@@ -627,7 +627,7 @@ void extrude_mesh(Scene *scene, Object *obedit, EditMesh *em, wmOperator *op)
if(nr<1) return;
- if(nr==1) transmode= extrudeflag(obedit, em, SELECT, nor);
+ if(nr==1) transmode= extrudeflag(obedit, em, SELECT, nor, 0);
else if(nr==4) transmode= extrudeflag_verts_indiv(em, SELECT, nor);
else if(nr==3) transmode= extrudeflag_edges_indiv(em, SELECT, nor);
else transmode= extrudeflag_face_indiv(em, SELECT, nor);
@@ -791,7 +791,7 @@ static int extrude_repeat_mesh(bContext *C, wmOperator *op)
mul_m3_v3(tmat, dvec);
for(a=0; a<steps; a++) {
- extrudeflag(obedit, em, SELECT, nor);
+ extrudeflag(obedit, em, SELECT, nor, 0);
translateflag(em, SELECT, dvec);
}
@@ -872,7 +872,7 @@ static int spin_mesh(bContext *C, wmOperator *op, float *dvec, int steps, float
adduplicateflag(em, 1);
for(a=0; a<steps; a++) {
- if(dupli==0) ok= extrudeflag(obedit, em, SELECT, nor);
+ if(dupli==0) ok= extrudeflag(obedit, em, SELECT, nor, 0);
else adduplicateflag(em, SELECT);
if(ok==0)
diff --git a/source/blender/editors/mesh/loopcut.c b/source/blender/editors/mesh/loopcut.c
index e9e1b5185a3..059e8fb5059 100644
--- a/source/blender/editors/mesh/loopcut.c
+++ b/source/blender/editors/mesh/loopcut.c
@@ -544,7 +544,7 @@ void MESH_OT_edgering_select (wmOperatorType *ot)
ot->invoke= ringsel_invoke;
ot->modal= ringsel_modal;
ot->cancel= ringsel_cancel;
- ot->poll= ED_operator_editmesh;
+ ot->poll= ED_operator_editmesh_view3d;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
@@ -563,7 +563,7 @@ void MESH_OT_loopcut (wmOperatorType *ot)
ot->invoke= ringcut_invoke;
ot->modal= loopcut_modal;
ot->cancel= ringsel_cancel;
- ot->poll= ED_operator_editmesh;
+ ot->poll= ED_operator_editmesh_view3d;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
diff --git a/source/blender/editors/mesh/mesh_data.c b/source/blender/editors/mesh/mesh_data.c
index 58dc0790d52..601c31df20c 100644
--- a/source/blender/editors/mesh/mesh_data.c
+++ b/source/blender/editors/mesh/mesh_data.c
@@ -73,10 +73,10 @@ static void delete_customdata_layer(bContext *C, Object *ob, CustomDataLayer *la
{
Mesh *me = ob->data;
CustomData *data= (me->edit_btmesh)? &me->edit_btmesh->bm->pdata: &me->pdata;
- void *actlayerdata, *rndlayerdata, *clonelayerdata, *masklayerdata, *layerdata=layer->data;
+ void *actlayerdata, *rndlayerdata, *clonelayerdata, *stencillayerdata, *layerdata=layer->data;
int type= layer->type;
int index= CustomData_get_layer_index(data, type);
- int i, actindex, rndindex, cloneindex, maskindex, tot = me->totpoly;
+ int i, actindex, rndindex, cloneindex, stencilindex, tot = me->totpoly;
if (layer->type == CD_MLOOPCOL) {
data = (me->edit_btmesh)? &me->edit_btmesh->bm->ldata: &me->ldata;
@@ -93,7 +93,7 @@ static void delete_customdata_layer(bContext *C, Object *ob, CustomDataLayer *la
actlayerdata = data->layers[CustomData_get_active_layer_index(data, type)].data;
rndlayerdata = data->layers[CustomData_get_render_layer_index(data, type)].data;
clonelayerdata = data->layers[CustomData_get_clone_layer_index(data, type)].data;
- masklayerdata = data->layers[CustomData_get_mask_layer_index(data, type)].data;
+ stencillayerdata = data->layers[CustomData_get_stencil_layer_index(data, type)].data;
CustomData_set_layer_active(data, type, layer - &data->layers[index]);
if(me->edit_btmesh) {
@@ -150,18 +150,18 @@ static void delete_customdata_layer(bContext *C, Object *ob, CustomDataLayer *la
CustomData_set_layer_clone(data, type, cloneindex);
}
- if (masklayerdata != layerdata) {
+ if (stencillayerdata != layerdata) {
/* find index */
- maskindex = CustomData_get_layer_index(data, type);
- for (i=maskindex; i<data->totlayer; i++) {
- if (data->layers[i].data == masklayerdata) {
- maskindex = i - maskindex;
+ stencilindex = CustomData_get_layer_index(data, type);
+ for (i=stencilindex; i<data->totlayer; i++) {
+ if (data->layers[i].data == stencillayerdata) {
+ stencilindex = i - stencilindex;
break;
}
}
/* set index */
- CustomData_set_layer_mask(data, type, maskindex);
+ CustomData_set_layer_stencil(data, type, stencilindex);
}
}
@@ -682,7 +682,8 @@ void ED_mesh_material_add(Mesh *me, Material *ma)
me->mat = mat;
me->mat[me->totcol++] = ma;
- ma->id.us++;
+ if(ma)
+ ma->id.us++;
test_object_materials((ID*)me);
}
diff --git a/source/blender/editors/mesh/mesh_intern.h b/source/blender/editors/mesh/mesh_intern.h
index 0f9dceabb9e..5283e98d9ae 100644
--- a/source/blender/editors/mesh/mesh_intern.h
+++ b/source/blender/editors/mesh/mesh_intern.h
@@ -44,6 +44,8 @@ struct BMEditMesh;
struct BMesh;
struct BMEdge;
struct BMFace;
+struct wmOperator;
+
#define UVCOPY(t, s) memcpy(t, s, 2 * sizeof(float));
@@ -165,8 +167,8 @@ extern int compareface(EditFace *vl1, EditFace *vl2);
extern short extrudeflag_face_indiv(EditMesh *em, short flag, float *nor);
extern short extrudeflag_verts_indiv(EditMesh *em, short flag, float *nor);
extern short extrudeflag_edges_indiv(EditMesh *em, short flag, float *nor);
-extern short extrudeflag_vert(Object *obedit, EditMesh *em, short flag, float *nor);
-extern short extrudeflag(Object *obedit, EditMesh *em, short flag, float *nor);
+extern short extrudeflag_vert(Object *obedit, EditMesh *em, short flag, float *nor, int all);
+extern short extrudeflag(Object *obedit, EditMesh *em, short flag, float *nor, int all);
extern void adduplicateflag(EditMesh *em, int flag);
extern void delfaceflag(EditMesh *em, int flag);
@@ -190,7 +192,7 @@ void MESH_OT_knife_cut(struct wmOperatorType *ot);
/* ******************* editmesh_mods.c */
void MESH_OT_loop_select(struct wmOperatorType *ot);
-void MESH_OT_select_all_toggle(struct wmOperatorType *ot);
+void MESH_OT_select_all(struct wmOperatorType *ot);
void MESH_OT_bmesh_test(struct wmOperatorType *ot);
void MESH_OT_select_more(struct wmOperatorType *ot);
void MESH_OT_select_less(struct wmOperatorType *ot);
@@ -210,14 +212,14 @@ void MESH_OT_edges_select_sharp(struct wmOperatorType *ot);
void MESH_OT_select_shortest_path(struct wmOperatorType *ot);
void MESH_OT_select_similar(struct wmOperatorType *ot);
void MESH_OT_select_random(struct wmOperatorType *ot);
-void MESH_OT_selection_type(struct wmOperatorType *ot);
void MESH_OT_loop_multi_select(struct wmOperatorType *ot);
void MESH_OT_mark_seam(struct wmOperatorType *ot);
void MESH_OT_mark_sharp(struct wmOperatorType *ot);
void MESH_OT_vertices_smooth(struct wmOperatorType *ot);
void MESH_OT_flip_normals(struct wmOperatorType *ot);
+void MESH_OT_solidify(struct wmOperatorType *ot);
+void MESH_OT_select_nth(struct wmOperatorType *ot);
-extern EditEdge *findnearestedge(struct ViewContext *vc, int *dist);
extern void EM_automerge(Scene *scene, Object *obedit, int update);
void editmesh_select_by_material(EditMesh *em, int index);
void righthandfaces(EditMesh *em, int select); /* makes faces righthand turning */
diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c
index 24946042462..85148b128c3 100644
--- a/source/blender/editors/mesh/mesh_ops.c
+++ b/source/blender/editors/mesh/mesh_ops.c
@@ -68,7 +68,7 @@
void ED_operatortypes_mesh(void)
{
- WM_operatortype_append(MESH_OT_select_all_toggle);
+ WM_operatortype_append(MESH_OT_select_all);
WM_operatortype_append(MESH_OT_select_more);
WM_operatortype_append(MESH_OT_select_less);
WM_operatortype_append(MESH_OT_select_inverse);
@@ -76,7 +76,6 @@ void ED_operatortypes_mesh(void)
WM_operatortype_append(MESH_OT_select_linked);
WM_operatortype_append(MESH_OT_select_linked_pick);
WM_operatortype_append(MESH_OT_select_random);
- WM_operatortype_append(MESH_OT_selection_type);
//WM_operatortype_append(MESH_OT_pin);
//WM_operatortype_append(MESH_OT_unpin);
WM_operatortype_append(MESH_OT_hide);
@@ -164,6 +163,9 @@ void ED_operatortypes_mesh(void)
WM_operatortype_append(MESH_OT_edgering_select);
WM_operatortype_append(MESH_OT_loopcut);
+
+ WM_operatortype_append(MESH_OT_solidify);
+ WM_operatortype_append(MESH_OT_select_nth);
}
void ED_operatormacros_mesh(void)
@@ -171,26 +173,23 @@ void ED_operatormacros_mesh(void)
wmOperatorType *ot;
wmOperatorTypeMacro *otmacro;
- /*combining operators with invoke and exec portions doesn't work yet.
-
- ot= WM_operatortype_append_macro("MESH_OT_loopcut", "Loopcut", OPTYPE_UNDO|OPTYPE_REGISTER);
- WM_operatortype_macro_define(ot, "MESH_OT_edgering_select");
- WM_operatortype_macro_define(ot, "MESH_OT_subdivide");
- */
+ ot= WM_operatortype_append_macro("MESH_OT_loopcut_slide", "Loop Cut and Slide", OPTYPE_UNDO|OPTYPE_REGISTER);
+ WM_operatortype_macro_define(ot, "MESH_OT_loopcut");
+ WM_operatortype_macro_define(ot, "TRANSFORM_OT_edge_slide");
ot= WM_operatortype_append_macro("MESH_OT_duplicate_move", "Add Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER);
WM_operatortype_macro_define(ot, "MESH_OT_duplicate");
- otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate");
+ otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
RNA_enum_set(otmacro->ptr, "proportional", 0);
ot= WM_operatortype_append_macro("MESH_OT_rip_move", "Rip", OPTYPE_UNDO|OPTYPE_REGISTER);
WM_operatortype_macro_define(ot, "MESH_OT_rip");
- otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate");
+ otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
RNA_enum_set(otmacro->ptr, "proportional", 0);
/*ot= WM_operatortype_append_macro("MESH_OT_extrude_move", "Extrude", OPTYPE_UNDO|OPTYPE_REGISTER);
WM_operatortype_macro_define(ot, "MESH_OT_extrude");
- otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate");
+ otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
RNA_enum_set(otmacro->ptr, "proportional", 0);
RNA_enum_set(otm->ptr, "proportional", 0);
RNA_boolean_set(otm->ptr, "mirror", 0);
@@ -206,7 +205,7 @@ void ED_keymap_mesh(wmKeyConfig *keyconf)
wmKeyMap *keymap;
wmKeyMapItem *kmi;
- keymap= WM_keymap_find(keyconf, "EditMesh", 0, 0);
+ keymap= WM_keymap_find(keyconf, "Mesh", 0, 0);
keymap->poll= ED_operator_editmesh;
WM_keymap_add_item(keymap, "MESH_OT_loopcut", RKEY, KM_PRESS, KM_CTRL, 0);
@@ -223,7 +222,7 @@ void ED_keymap_mesh(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "MESH_OT_select_shortest_path", SELECTMOUSE, KM_PRESS, KM_CTRL, 0);
- WM_keymap_add_item(keymap, "MESH_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "MESH_OT_select_all", AKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "MESH_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "MESH_OT_select_non_manifold", MKEY, KM_PRESS, (KM_CTRL|KM_SHIFT|KM_ALT), 0);
@@ -243,7 +242,7 @@ void ED_keymap_mesh(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "MESH_OT_edge_split", MKEY, KM_PRESS, 0, 0);
/* selection mode */
- WM_keymap_add_item(keymap, "MESH_OT_selection_type", TABKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_selection_mode", TABKEY, KM_PRESS, KM_CTRL, 0);
/* pin */
//WM_keymap_add_item(keymap, "MESH_OT_pin", RETKEY, KM_PRESS, 0, 0);
@@ -265,7 +264,6 @@ void ED_keymap_mesh(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "MESH_OT_vert_connect", YKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "MESH_OT_spin", RKEY, KM_PRESS, KM_ALT, 0);
- WM_keymap_add_item(keymap, "MESH_OT_screw", NINEKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "MESH_OT_fill", FKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "MESH_OT_beauty_fill", FKEY, KM_PRESS, KM_ALT, 0);
@@ -273,22 +271,11 @@ void ED_keymap_mesh(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "MESH_OT_tris_convert_to_quads", JKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_add_item(keymap, "MESH_OT_edge_flip", FKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
- WM_keymap_add_item(keymap, "MESH_OT_extrude_repeat", FOURKEY, KM_PRESS, KM_ALT, 0);
- WM_keymap_add_item(keymap, "MESH_OT_edge_rotate", FIVEKEY, KM_PRESS, KM_CTRL, 0);
-
- WM_keymap_add_item(keymap, "MESH_OT_loop_to_region",SIXKEY, KM_PRESS, KM_CTRL, 0);
- WM_keymap_add_item(keymap, "MESH_OT_region_to_loop",SIXKEY, KM_PRESS, KM_ALT, 0);
-
- WM_keymap_add_item(keymap, "MESH_OT_uvs_rotate",SEVENKEY, KM_PRESS, KM_CTRL, 0);
- //WM_keymap_add_item(keymap, "MESH_OT_uvs_mirror",SEVENKEY, KM_PRESS, KM_ALT, 0);
- WM_keymap_add_item(keymap, "MESH_OT_uvs_reverse",SEVENKEY, KM_PRESS, KM_ALT, 0);
- WM_keymap_add_item(keymap, "MESH_OT_colors_rotate",EIGHTKEY, KM_PRESS, KM_CTRL, 0);
- //WM_keymap_add_item(keymap, "MESH_OT_colors_mirror",EIGHTKEY, KM_PRESS, KM_ALT, 0);
- WM_keymap_add_item(keymap, "MESH_OT_colors_reverse",EIGHTKEY, KM_PRESS, KM_ALT, 0);
-
WM_keymap_add_item(keymap, "MESH_OT_rip_move",VKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "MESH_OT_merge", MKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "TRANSFORM_OT_shrink_fatten", SKEY, KM_PRESS, KM_ALT, 0);
+
/* add/remove */
WM_keymap_add_item(keymap, "MESH_OT_edge_face_add", FKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "MESH_OT_skin", FKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); /* python */
@@ -299,10 +286,9 @@ void ED_keymap_mesh(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "MESH_OT_separate", PKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "MESH_OT_split", YKEY, KM_PRESS, 0, 0);
- /* use KM_RELEASE because same key is used for tweaks
- * TEMPORARY REMAP TO ALT+CTRL TO AVOID CONFLICT
- * */
- WM_keymap_add_item(keymap, "MESH_OT_dupli_extrude_cursor", LEFTMOUSE, KM_PRESS, KM_CTRL|KM_ALT, 0);
+
+ /* use KM_CLICK because same key is used for tweaks */
+ WM_keymap_add_item(keymap, "MESH_OT_dupli_extrude_cursor", LEFTMOUSE, KM_CLICK, KM_CTRL, 0);
WM_keymap_add_item(keymap, "MESH_OT_delete", XKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "MESH_OT_delete", DELKEY, KM_PRESS, 0, 0);
@@ -326,7 +312,7 @@ void ED_keymap_mesh(wmKeyConfig *keyconf)
RNA_string_set(kmi->ptr, "name", "VIEW3D_MT_edit_mesh_vertices");
kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", UKEY, KM_PRESS, 0, 0);
- RNA_string_set(kmi->ptr, "name", "VIEW3D_MT_uv_map");
+ RNA_string_set(kmi->ptr, "name", "VIEW3D_MT_uv_map");
ED_object_generic_keymap(keyconf, keymap, TRUE);
}
diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c
index 09bc513a568..99c2bc65ee4 100644
--- a/source/blender/editors/mesh/meshtools.c
+++ b/source/blender/editors/mesh/meshtools.c
@@ -31,6 +31,7 @@
meshtools.c: no editmode (violated already :), tools operating on meshes
*/
+#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
@@ -62,6 +63,7 @@
#include "BKE_blender.h"
#include "BKE_context.h"
#include "BKE_depsgraph.h"
+#include "BKE_DerivedMesh.h"
#include "BKE_customdata.h"
#include "BKE_global.h"
#include "BKE_image.h"
@@ -598,6 +600,82 @@ int join_mesh_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
+/*********************** JOIN AS SHAPES ***************************/
+
+/* Append selected meshes vertex locations as shapes of the active mesh,
+ return 0 if no join is made (error) and 1 of the join is done */
+
+int join_mesh_shapes_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= CTX_data_active_object(C);
+ Mesh *me= (Mesh *)ob->data;
+ Mesh *selme=NULL;
+ DerivedMesh *dm=NULL;
+ Key *key=me->key;
+ KeyBlock *kb;
+ int ok=0, nonequal_verts=0;
+
+ CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) {
+ if (base->object == ob) continue;
+
+ if (base->object->type==OB_MESH) {
+ selme = (Mesh *)base->object->data;
+
+ if (selme->totvert==me->totvert)
+ ok++;
+ else
+ nonequal_verts=1;
+ }
+ }
+ CTX_DATA_END;
+
+ if (!ok) {
+ if (nonequal_verts)
+ BKE_report(op->reports, RPT_ERROR, "Selected meshes must have equal numbers of vertices.");
+ else
+ BKE_report(op->reports, RPT_ERROR, "No additional selected meshes with equal vertex count to join.");
+ return OPERATOR_CANCELLED;
+ }
+
+ if(key == NULL) {
+ key= me->key= add_key((ID *)me);
+ key->type= KEY_RELATIVE;
+
+ /* first key added, so it was the basis. initialise it with the existing mesh */
+ kb= add_keyblock(scene, key);
+ mesh_to_key(me, kb);
+ }
+
+ /* now ready to add new keys from selected meshes */
+ CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) {
+ if (base->object == ob) continue;
+
+ if(base->object->type==OB_MESH) {
+ selme = (Mesh *)base->object->data;
+
+ if (selme->totvert==me->totvert) {
+ dm = mesh_get_derived_deform(scene, base->object, CD_MASK_BAREMESH);
+
+ if (!dm) continue;
+
+ kb= add_keyblock(scene, key);
+ strcpy(kb->name, base->object->id.name+2);
+ BLI_uniquename(&key->block, kb, "Key", '.', offsetof(KeyBlock, name), 32);
+
+ DM_to_meshkey(dm, me, kb);
+
+ dm->release(dm);
+ }
+ }
+ }
+ CTX_DATA_END;
+
+ WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, scene);
+
+ return OPERATOR_FINISHED;
+}
+
/* ********************** SORT FACES ******************* */
static void permutate(void *list, int num, int size, int *index)
diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c
index 23e601c5de2..39f63648320 100644
--- a/source/blender/editors/metaball/mball_edit.c
+++ b/source/blender/editors/metaball/mball_edit.c
@@ -189,49 +189,63 @@ MetaElem *add_metaball_primitive(bContext *C, int type, int newname)
/***************************** Select/Deselect operator *****************************/
/* Select or deselect all MetaElements */
-static int select_deselect_all_metaelems_exec(bContext *C, wmOperator *op)
+static int select_all_exec(bContext *C, wmOperator *op)
{
//Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
MetaBall *mb = (MetaBall*)obedit->data;
MetaElem *ml;
- int any_sel= 0;
-
- /* Is any metaelem selected? */
+ int action = RNA_enum_get(op->ptr, "action");
+
ml= mb->editelems->first;
if(ml) {
- while(ml) {
- if(ml->flag & SELECT) break;
- ml= ml->next;
+ if (action == SEL_TOGGLE) {
+ action = SEL_SELECT;
+ while(ml) {
+ if(ml->flag & SELECT) {
+ action = SEL_DESELECT;
+ break;
+ }
+ ml= ml->next;
+ }
}
- if(ml) any_sel= 1;
ml= mb->editelems->first;
while(ml) {
- if(any_sel) ml->flag &= ~SELECT;
- else ml->flag |= SELECT;
+ switch (action) {
+ case SEL_SELECT:
+ ml->flag |= SELECT;
+ break;
+ case SEL_DESELECT:
+ ml->flag &= ~SELECT;
+ break;
+ case SEL_INVERT:
+ ml->flag ^= SELECT;
+ break;
+ }
ml= ml->next;
}
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, mb);
- //DAG_id_flush_update(obedit->data, OB_RECALC_DATA);
}
return OPERATOR_FINISHED;
}
-void MBALL_OT_select_deselect_all_metaelems(wmOperatorType *ot)
+void MBALL_OT_select_all(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Select/Deselect All";
- ot->description= "(de)select all metaelements.";
- ot->idname= "MBALL_OT_select_deselect_all_metaelems";
+ ot->description= "Change selection of all meta elements.";
+ ot->idname= "MBALL_OT_select_all";
/* callback functions */
- ot->exec= select_deselect_all_metaelems_exec;
+ ot->exec= select_all_exec;
ot->poll= ED_operator_editmball;
/* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ WM_operator_properties_select_all(ot);
}
/***************************** Select inverse operator *****************************/
@@ -356,7 +370,7 @@ static int duplicate_metaelems_invoke(bContext *C, wmOperator *op, wmEvent *even
if (retv == OPERATOR_FINISHED) {
RNA_int_set(op->ptr, "mode", TFM_TRANSLATION);
- WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
+ WM_operator_name_call(C, "TRANSFORM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
}
return retv;
@@ -517,7 +531,7 @@ void MBALL_OT_reveal_metaelems(wmOperatorType *ot)
/* Select MetaElement with mouse click (user can select radius circle or
* stiffness circle) */
-void mouse_mball(bContext *C, short mval[2], int extend)
+int mouse_mball(bContext *C, short mval[2], int extend)
{
static MetaElem *startelem=NULL;
Object *obedit= CTX_data_edit_object(C);
@@ -588,8 +602,12 @@ void mouse_mball(bContext *C, short mval[2], int extend)
mb->lastelem= act;
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, mb);
+
+ return 1;
}
}
+
+ return 0;
}
diff --git a/source/blender/editors/metaball/mball_intern.h b/source/blender/editors/metaball/mball_intern.h
index 8cf749733dd..fca9fc7e650 100644
--- a/source/blender/editors/metaball/mball_intern.h
+++ b/source/blender/editors/metaball/mball_intern.h
@@ -39,7 +39,7 @@ void MBALL_OT_reveal_metaelems(struct wmOperatorType *ot);
void MBALL_OT_delete_metaelems(struct wmOperatorType *ot);
void MBALL_OT_duplicate_metaelems(struct wmOperatorType *ot);
-void MBALL_OT_select_deselect_all_metaelems(struct wmOperatorType *ot);
+void MBALL_OT_select_all(struct wmOperatorType *ot);
void MBALL_OT_select_inverse_metaelems(struct wmOperatorType *ot);
void MBALL_OT_select_random_metaelems(struct wmOperatorType *ot);
diff --git a/source/blender/editors/metaball/mball_ops.c b/source/blender/editors/metaball/mball_ops.c
index 01da90212a0..b638eaecbc2 100644
--- a/source/blender/editors/metaball/mball_ops.c
+++ b/source/blender/editors/metaball/mball_ops.c
@@ -46,7 +46,7 @@ void ED_operatortypes_metaball(void)
WM_operatortype_append(MBALL_OT_hide_metaelems);
WM_operatortype_append(MBALL_OT_reveal_metaelems);
- WM_operatortype_append(MBALL_OT_select_deselect_all_metaelems);
+ WM_operatortype_append(MBALL_OT_select_all);
WM_operatortype_append(MBALL_OT_select_inverse_metaelems);
WM_operatortype_append(MBALL_OT_select_random_metaelems);
}
@@ -68,7 +68,7 @@ void ED_keymap_metaball(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "MBALL_OT_delete_metaelems", DELKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "MBALL_OT_duplicate_metaelems", DKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "MBALL_OT_select_deselect_all_metaelems", AKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "MBALL_OT_select_all", AKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "MBALL_OT_select_inverse_metaelems", IKEY, KM_PRESS, KM_CTRL, 0);
}
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c
index eabbe8f90fa..2c02954b7cb 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -235,19 +235,18 @@ void OBJECT_OT_add(wmOperatorType *ot)
/********************* Add Effector Operator ********************/
/* copy from rna_object_force.c*/
static EnumPropertyItem field_type_items[] = {
- {0, "NONE", 0, "None", ""},
- {PFIELD_FORCE, "FORCE", 0, "Force", ""},
- {PFIELD_WIND, "WIND", 0, "Wind", ""},
- {PFIELD_VORTEX, "VORTEX", 0, "Vortex", ""},
- {PFIELD_MAGNET, "MAGNET", 0, "Magnetic", ""},
- {PFIELD_HARMONIC, "HARMONIC", 0, "Harmonic", ""},
- {PFIELD_CHARGE, "CHARGE", 0, "Charge", ""},
- {PFIELD_LENNARDJ, "LENNARDJ", 0, "Lennard-Jones", ""},
- {PFIELD_TEXTURE, "TEXTURE", 0, "Texture", ""},
- {PFIELD_GUIDE, "GUIDE", 0, "Curve Guide", ""},
- {PFIELD_BOID, "BOID", 0, "Boid", ""},
- {PFIELD_TURBULENCE, "TURBULENCE", 0, "Turbulence", ""},
- {PFIELD_DRAG, "DRAG", 0, "Drag", ""},
+ {PFIELD_FORCE, "FORCE", ICON_FORCE_FORCE, "Force", ""},
+ {PFIELD_WIND, "WIND", ICON_FORCE_WIND, "Wind", ""},
+ {PFIELD_VORTEX, "VORTEX", ICON_FORCE_VORTEX, "Vortex", ""},
+ {PFIELD_MAGNET, "MAGNET", ICON_FORCE_MAGNETIC, "Magnetic", ""},
+ {PFIELD_HARMONIC, "HARMONIC", ICON_FORCE_HARMONIC, "Harmonic", ""},
+ {PFIELD_CHARGE, "CHARGE", ICON_FORCE_CHARGE, "Charge", ""},
+ {PFIELD_LENNARDJ, "LENNARDJ", ICON_FORCE_LENNARDJONES, "Lennard-Jones", ""},
+ {PFIELD_TEXTURE, "TEXTURE", ICON_FORCE_TEXTURE, "Texture", ""},
+ {PFIELD_GUIDE, "GUIDE", ICON_FORCE_CURVE, "Curve Guide", ""},
+ {PFIELD_BOID, "BOID", ICON_FORCE_BOID, "Boid", ""},
+ {PFIELD_TURBULENCE, "TURBULENCE", ICON_FORCE_TURBULENCE, "Turbulence", ""},
+ {PFIELD_DRAG, "DRAG", ICON_FORCE_DRAG, "Drag", ""},
{0, NULL, 0, NULL, NULL}};
void add_effector_draw(Scene *scene, View3D *v3d, int type) /* for toolbox or menus, only non-editmode stuff */
@@ -743,7 +742,7 @@ static int object_delete_exec(bContext *C, wmOperator *op)
if(CTX_data_edit_object(C))
return OPERATOR_CANCELLED;
- CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) {
+ CTX_DATA_BEGIN(C, Base*, base, selected_bases) {
if(base->object->type==OB_LAMP) islamp= 1;
@@ -755,7 +754,7 @@ static int object_delete_exec(bContext *C, wmOperator *op)
if(islamp) reshadeall_displist(scene); /* only frees displist */
DAG_scene_sort(scene);
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, CTX_data_scene(C));
@@ -951,7 +950,7 @@ static int object_duplicates_make_real_exec(bContext *C, wmOperator *op)
CTX_DATA_END;
DAG_scene_sort(scene);
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_SCENE, scene);
return OPERATOR_FINISHED;
@@ -1000,7 +999,7 @@ static int convert_poll(bContext *C)
Object *obact= CTX_data_active_object(C);
Scene *scene= CTX_data_scene(C);
- return (!scene->id.lib && obact && scene->obedit != obact && (obact->flag & SELECT));
+ return (!scene->id.lib && obact && scene->obedit != obact && (obact->flag & SELECT) && !(obact->id.lib));
}
static int convert_exec(bContext *C, wmOperator *op)
@@ -1480,7 +1479,7 @@ static int duplicate_exec(bContext *C, wmOperator *op)
copy_object_set_idnew(C, dupflag);
DAG_scene_sort(scene);
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene);
@@ -1507,6 +1506,18 @@ void OBJECT_OT_duplicate(wmOperatorType *ot)
}
/**************************** Join *************************/
+static int join_poll(bContext *C)
+{
+ Object *ob= CTX_data_active_object(C);
+
+ if (!ob || ob->id.lib) return 0;
+
+ if (ELEM4(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_ARMATURE))
+ return ED_operator_screenactive(C);
+ else
+ return 0;
+}
+
static int join_exec(bContext *C, wmOperator *op)
{
@@ -1517,10 +1528,6 @@ static int join_exec(bContext *C, wmOperator *op)
BKE_report(op->reports, RPT_ERROR, "This data does not support joining in editmode.");
return OPERATOR_CANCELLED;
}
- else if(!ob) {
- BKE_report(op->reports, RPT_ERROR, "Can't join unless there is an active object.");
- return OPERATOR_CANCELLED;
- }
else if(object_data_is_libdata(ob)) {
BKE_report(op->reports, RPT_ERROR, "Can't edit external libdata.");
return OPERATOR_CANCELLED;
@@ -1532,9 +1539,7 @@ static int join_exec(bContext *C, wmOperator *op)
return join_curve_exec(C, op);
else if(ob->type == OB_ARMATURE)
return join_armature_exec(C, op);
-
- BKE_report(op->reports, RPT_ERROR, "This object type doesn't support joining.");
-
+
return OPERATOR_CANCELLED;
}
@@ -1547,9 +1552,57 @@ void OBJECT_OT_join(wmOperatorType *ot)
/* api callbacks */
ot->exec= join_exec;
- ot->poll= ED_operator_scene_editable;
+ ot->poll= join_poll;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
+/**************************** Join as Shape Key*************************/
+static int join_shapes_poll(bContext *C)
+{
+ Object *ob= CTX_data_active_object(C);
+
+ if (!ob || ob->id.lib) return 0;
+
+ /* only meshes supported at the moment */
+ if (ob->type == OB_MESH)
+ return ED_operator_screenactive(C);
+ else
+ return 0;
+}
+
+static int join_shapes_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= CTX_data_active_object(C);
+
+ if(scene->obedit) {
+ BKE_report(op->reports, RPT_ERROR, "This data does not support joining in editmode.");
+ return OPERATOR_CANCELLED;
+ }
+ else if(object_data_is_libdata(ob)) {
+ BKE_report(op->reports, RPT_ERROR, "Can't edit external libdata.");
+ return OPERATOR_CANCELLED;
+ }
+
+ if(ob->type == OB_MESH)
+ return join_mesh_shapes_exec(C, op);
+
+ return OPERATOR_CANCELLED;
+}
+
+void OBJECT_OT_join_shapes(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Join as Shapes";
+ ot->description = "Merge selected objects to shapes of active object.";
+ ot->idname= "OBJECT_OT_join_shapes";
+
+ /* api callbacks */
+ ot->exec= join_shapes_exec;
+ ot->poll= join_shapes_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c
index e40a92d3056..9c04ba8c4b5 100644
--- a/source/blender/editors/object/object_constraint.c
+++ b/source/blender/editors/object/object_constraint.c
@@ -98,6 +98,33 @@ ListBase *get_active_constraints (Object *ob)
return NULL;
}
+ListBase *get_constraint_lb (Object *ob, bConstraint *con, bPoseChannel **pchan_r)
+{
+ if(pchan_r)
+ *pchan_r= NULL;
+
+ if (ELEM(NULL, ob, con))
+ return NULL;
+
+ if((BLI_findindex(&ob->constraints, con) != -1)) {
+ return &ob->constraints;
+ }
+ else if(ob->pose) {
+ bPoseChannel *pchan;
+ for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
+ if((BLI_findindex(&pchan->constraints, con) != -1)) {
+
+ if(pchan_r)
+ *pchan_r= pchan;
+
+ return &pchan->constraints;
+ }
+ }
+ }
+
+ return NULL;
+}
+
/* single constraint */
bConstraint *get_active_constraint (Object *ob)
{
@@ -800,7 +827,7 @@ static int pose_constraints_clear_exec(bContext *C, wmOperator *op)
Scene *scene= CTX_data_scene(C);
/* free constraints for all selected bones */
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones)
{
free_constraints(&pchan->constraints);
pchan->constflag &= ~(PCHAN_HAS_IK|PCHAN_HAS_SPLINEIK|PCHAN_HAS_CONST);
@@ -858,7 +885,7 @@ void OBJECT_OT_constraints_clear(wmOperatorType *ot)
/* callbacks */
ot->exec= object_constraints_clear_exec;
- ot->poll= ED_operator_object_active;
+ ot->poll= ED_operator_object_active_editable;
}
/************************ add constraint operators *********************/
@@ -917,7 +944,7 @@ static short get_new_constraint_target(bContext *C, int con_type, Object **tar_o
/* if the active Object is Armature, and we can search for bones, do so... */
if ((obact->type == OB_ARMATURE) && (only_ob == 0)) {
/* search in list of selected Pose-Channels for target */
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones)
{
/* just use the first one that we encounter, as long as it is not the active one */
if (pchan != pchanact) {
@@ -1185,7 +1212,7 @@ void OBJECT_OT_constraint_add(wmOperatorType *ot)
/* api callbacks */
ot->invoke= WM_menu_invoke;
ot->exec= object_constraint_add_exec;
- ot->poll= ED_operator_object_active;
+ ot->poll= ED_operator_object_active_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -1204,7 +1231,7 @@ void OBJECT_OT_constraint_add_with_targets(wmOperatorType *ot)
/* api callbacks */
ot->invoke= WM_menu_invoke;
ot->exec= object_constraint_add_exec;
- ot->poll= ED_operator_object_active;
+ ot->poll= ED_operator_object_active_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -1345,7 +1372,7 @@ static int pose_ik_clear_exec(bContext *C, wmOperator *op)
Object *ob= CTX_data_active_object(C);
/* only remove IK Constraints */
- CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans)
+ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones)
{
bConstraint *con, *next;
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c
index 7e2487e2ae4..084b092e320 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -544,7 +544,7 @@ void OBJECT_OT_posemode_toggle(wmOperatorType *ot)
/* api callbacks */
ot->exec= posemode_exec;
- ot->poll= ED_operator_object_active;
+ ot->poll= ED_operator_object_active_editable;
/* flag */
ot->flag= OPTYPE_REGISTER;
@@ -1053,7 +1053,7 @@ void flip_subdivison(Scene *scene, View3D *v3d, int level)
}
}
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
}
static void copymenu_properties(Scene *scene, View3D *v3d, Object *ob)
@@ -1540,8 +1540,7 @@ void copy_attr(Scene *scene, View3D *v3d, short event)
if(do_scene_sort)
DAG_scene_sort(scene);
- ED_anim_dag_flush_update(C);
-
+ DAG_ids_flush_update(0);
}
void copy_attr_menu(Scene *scene, View3D *v3d)
@@ -1643,6 +1642,7 @@ void OBJECT_OT_shade_flat(wmOperatorType *ot)
ot->idname= "OBJECT_OT_shade_flat";
/* api callbacks */
+ ot->poll= ED_operator_object_active_editable;
ot->exec= shade_smooth_exec;
/* flags */
@@ -1656,8 +1656,9 @@ void OBJECT_OT_shade_smooth(wmOperatorType *ot)
ot->idname= "OBJECT_OT_shade_smooth";
/* api callbacks */
+ ot->poll= ED_operator_object_active_editable;
ot->exec= shade_smooth_exec;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
@@ -1725,85 +1726,6 @@ void image_aspect(Scene *scene, View3D *v3d)
}
-void set_ob_ipoflags(Scene *scene, View3D *v3d)
-{
-#if 0 // XXX old animation system
- Base *base;
- int set= 1;
-
- if (!v3d) {
- error("Can't do this! Open a 3D window");
- return;
- }
-
- for(base= FIRSTBASE; base; base= base->next) {
- if(TESTBASELIB(v3d, base)) {
- if(base->object->ipoflag & OB_DRAWKEY) {
- set= 0;
- break;
- }
- }
- }
-
- for(base= FIRSTBASE; base; base= base->next) {
- if(TESTBASELIB(v3d, base)) {
- if(set) {
- base->object->ipoflag |= OB_DRAWKEY;
- if(base->object->ipo) base->object->ipo->showkey= 1;
- }
- else {
- base->object->ipoflag &= ~OB_DRAWKEY;
- if(base->object->ipo) base->object->ipo->showkey= 0;
- }
- }
- }
-#endif // XXX old animation system
-}
-
-
-void select_select_keys(Scene *scene, View3D *v3d)
-{
-#if 0 // XXX old animation system
- Base *base;
- IpoCurve *icu;
- BezTriple *bezt;
- int a;
-
- if (!v3d) {
- error("Can't do this! Open a 3D window");
- return;
- }
-
- if(scene->id.lib) return;
-
- if(okee("Show and select all keys")==0) return;
-
- for(base= FIRSTBASE; base; base= base->next) {
- if(TESTBASELIB(v3d, base)) {
- if(base->object->ipo) {
- base->object->ipoflag |= OB_DRAWKEY;
- base->object->ipo->showkey= 1;
- icu= base->object->ipo->curve.first;
- while(icu) {
- a= icu->totvert;
- bezt= icu->bezt;
- while(a--) {
- bezt->f1 |= SELECT;
- bezt->f2 |= SELECT;
- bezt->f3 |= SELECT;
- bezt++;
- }
- icu= icu->next;
- }
- }
- }
- }
-
-
-#endif // XXX old animation system
-}
-
-
int vergbaseco(const void *a1, const void *a2)
{
Base **x1, **x2;
@@ -2032,7 +1954,7 @@ void OBJECT_OT_mode_set(wmOperatorType *ot)
/* api callbacks */
ot->exec= object_mode_set_exec;
- ot->poll= ED_operator_object_active;
+ ot->poll= ED_operator_object_active_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -2087,6 +2009,7 @@ void OBJECT_OT_game_property_new(wmOperatorType *ot)
/* api callbacks */
ot->exec= game_property_new;
+ ot->poll= ED_operator_object_active_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -2123,6 +2046,7 @@ void OBJECT_OT_game_property_remove(wmOperatorType *ot)
/* api callbacks */
ot->exec= game_property_remove;
+ ot->poll= ED_operator_object_active_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
diff --git a/source/blender/editors/object/object_hook.c b/source/blender/editors/object/object_hook.c
index a2feee54c8c..313ffe79c66 100644
--- a/source/blender/editors/object/object_hook.c
+++ b/source/blender/editors/object/object_hook.c
@@ -491,7 +491,7 @@ static int object_add_hook_selob_exec(bContext *C, wmOperator *op)
add_hook_object(scene, obedit, obsel, OBJECT_ADDHOOK_SELOB);
- WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene);
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, obedit);
return OPERATOR_FINISHED;
}
@@ -518,6 +518,7 @@ static int object_add_hook_newob_exec(bContext *C, wmOperator *op)
add_hook_object(scene, obedit, NULL, OBJECT_ADDHOOK_NEWOB);
WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene);
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, obedit);
return OPERATOR_FINISHED;
}
@@ -559,7 +560,7 @@ static int object_hook_remove_exec(bContext *C, wmOperator *op)
modifier_free((ModifierData *)hmd);
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
return OPERATOR_FINISHED;
}
diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h
index 046dd8939ba..562216e5890 100644
--- a/source/blender/editors/object/object_intern.h
+++ b/source/blender/editors/object/object_intern.h
@@ -53,7 +53,7 @@ void OBJECT_OT_visual_transform_apply(struct wmOperatorType *ot);
void OBJECT_OT_location_apply(struct wmOperatorType *ot);
void OBJECT_OT_scale_apply(struct wmOperatorType *ot);
void OBJECT_OT_rotation_apply(struct wmOperatorType *ot);
-void OBJECT_OT_center_set(struct wmOperatorType *ot);
+void OBJECT_OT_origin_set(struct wmOperatorType *ot);
/* object_relations.c */
void OBJECT_OT_parent_set(struct wmOperatorType *ot);
@@ -81,7 +81,7 @@ void OBJECT_OT_shade_smooth(struct wmOperatorType *ot);
void OBJECT_OT_shade_flat(struct wmOperatorType *ot);
/* object_select.c */
-void OBJECT_OT_select_all_toggle(struct wmOperatorType *ot);
+void OBJECT_OT_select_all(struct wmOperatorType *ot);
void OBJECT_OT_select_inverse(struct wmOperatorType *ot);
void OBJECT_OT_select_random(struct wmOperatorType *ot);
void OBJECT_OT_select_by_type(struct wmOperatorType *ot);
@@ -106,6 +106,7 @@ void OBJECT_OT_duplicates_make_real(struct wmOperatorType *ot);
void OBJECT_OT_duplicate(struct wmOperatorType *ot);
void OBJECT_OT_delete(struct wmOperatorType *ot);
void OBJECT_OT_join(struct wmOperatorType *ot);
+void OBJECT_OT_join_shapes(struct wmOperatorType *ot);
void OBJECT_OT_convert(struct wmOperatorType *ot);
/* object_hook.c */
@@ -123,7 +124,7 @@ void make_editLatt(Object *obedit);
void load_editLatt(Object *obedit);
void remake_editLatt(Object *obedit);
-void LATTICE_OT_select_all_toggle(struct wmOperatorType *ot);
+void LATTICE_OT_select_all(struct wmOperatorType *ot);
void LATTICE_OT_make_regular(struct wmOperatorType *ot);
/* object_group.c */
@@ -141,7 +142,10 @@ void OBJECT_OT_modifier_apply(struct wmOperatorType *ot);
void OBJECT_OT_modifier_convert(struct wmOperatorType *ot);
void OBJECT_OT_modifier_copy(struct wmOperatorType *ot);
void OBJECT_OT_multires_subdivide(struct wmOperatorType *ot);
+void OBJECT_OT_multires_reshape(struct wmOperatorType *ot);
void OBJECT_OT_multires_higher_levels_delete(struct wmOperatorType *ot);
+void OBJECT_OT_multires_save_external(struct wmOperatorType *ot);
+void OBJECT_OT_multires_pack_external(struct wmOperatorType *ot);
void OBJECT_OT_meshdeform_bind(struct wmOperatorType *ot);
void OBJECT_OT_explode_refresh(struct wmOperatorType *ot);
diff --git a/source/blender/editors/object/object_lattice.c b/source/blender/editors/object/object_lattice.c
index 41005904494..6b71c78f238 100644
--- a/source/blender/editors/object/object_lattice.c
+++ b/source/blender/editors/object/object_lattice.c
@@ -38,6 +38,8 @@
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
+#include "RNA_access.h"
+
#include "BKE_context.h"
#include "BKE_depsgraph.h"
#include "BKE_key.h"
@@ -154,7 +156,7 @@ void load_editLatt(Object *obedit)
/************************** Operators *************************/
-static void setflagsLatt(Object *obedit, int flag)
+void ED_setflagsLatt(Object *obedit, int flag)
{
Lattice *lt= obedit->data;
BPoint *bp;
@@ -172,49 +174,71 @@ static void setflagsLatt(Object *obedit, int flag)
}
}
-int de_select_all_exec(bContext *C, wmOperator *op)
+int select_all_exec(bContext *C, wmOperator *op)
{
Object *obedit= CTX_data_edit_object(C);
Lattice *lt= obedit->data;
BPoint *bp;
- int a, deselect= 0;
-
- bp= lt->editlatt->def;
- a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
-
- while(a--) {
- if(bp->hide==0) {
- if(bp->f1) {
- deselect= 1;
- break;
+ int a;
+ int action = RNA_enum_get(op->ptr, "action");
+
+ if (action == SEL_TOGGLE) {
+ action = SEL_SELECT;
+
+ bp= lt->editlatt->def;
+ a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
+
+ while(a--) {
+ if(bp->hide==0) {
+ if(bp->f1) {
+ action = SEL_DESELECT;
+ break;
+ }
+ }
+ bp++;
+ }
+ }
+
+ switch (action) {
+ case SEL_SELECT:
+ ED_setflagsLatt(obedit, 1);
+ break;
+ case SEL_DESELECT:
+ ED_setflagsLatt(obedit, 0);
+ break;
+ case SEL_INVERT:
+ bp= lt->editlatt->def;
+ a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
+
+ while(a--) {
+ if(bp->hide==0) {
+ bp->f1 ^= 1;
}
+ bp++;
}
- bp++;
+ break;
}
- if(deselect)
- setflagsLatt(obedit, 0);
- else
- setflagsLatt(obedit, 1);
-
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data);
return OPERATOR_FINISHED;
}
-void LATTICE_OT_select_all_toggle(wmOperatorType *ot)
+void LATTICE_OT_select_all(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Select or Deselect All";
- ot->description= "Toggle (de)select all UVW control points.";
- ot->idname= "LATTICE_OT_select_all_toggle";
+ ot->description= "Change selection of all UVW control points.";
+ ot->idname= "LATTICE_OT_select_all";
/* api callbacks */
- ot->exec= de_select_all_exec;
+ ot->exec= select_all_exec;
ot->poll= ED_operator_editlattice;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ WM_operator_properties_select_all(ot);
}
int make_regular_poll(bContext *C)
@@ -298,7 +322,7 @@ static BPoint *findnearestLattvert(ViewContext *vc, short mval[2], int sel)
return data.bp;
}
-void mouse_lattice(bContext *C, short mval[2], int extend)
+int mouse_lattice(bContext *C, short mval[2], int extend)
{
ViewContext vc;
BPoint *bp= NULL;
@@ -308,14 +332,18 @@ void mouse_lattice(bContext *C, short mval[2], int extend)
if(bp) {
if(extend==0) {
- setflagsLatt(vc.obedit, 0);
+ ED_setflagsLatt(vc.obedit, 0);
bp->f1 |= SELECT;
}
else
bp->f1 ^= SELECT; /* swap */
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc.obedit->data);
+
+ return 1;
}
+
+ return 0;
}
/******************************** Undo *************************/
diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index 58f2ed443ca..552de1f8f60 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -43,6 +43,8 @@
#include "BLI_math.h"
#include "BLI_listbase.h"
+#include "BLI_string.h"
+#include "BLI_path_util.h"
#include "BKE_action.h"
#include "BKE_curve.h"
@@ -78,7 +80,7 @@
/******************************** API ****************************/
-ModifierData *ED_object_modifier_add(ReportList *reports, Scene *scene, Object *ob, int type)
+ModifierData *ED_object_modifier_add(ReportList *reports, Scene *scene, Object *ob, char *name, int type)
{
ModifierData *md=NULL, *new_md=NULL;
ModifierTypeInfo *mti = modifierType_getInfo(type);
@@ -94,7 +96,7 @@ ModifierData *ED_object_modifier_add(ReportList *reports, Scene *scene, Object *
/* don't need to worry about the new modifier's name, since that is set to the number
* of particle systems which shouldn't have too many duplicates
*/
- object_add_particle_system(scene, ob);
+ new_md = object_add_particle_system(scene, ob, name);
}
else {
/* get new modifier data to add */
@@ -110,8 +112,12 @@ ModifierData *ED_object_modifier_add(ReportList *reports, Scene *scene, Object *
}
else
BLI_addtail(&ob->modifiers, new_md);
-
+
+ if(name)
+ BLI_strncpy(new_md->name, name, sizeof(new_md->name));
+
/* make sure modifier data has unique name */
+
modifier_unique_name(&ob->modifiers, new_md);
/* special cases */
@@ -148,8 +154,10 @@ int ED_object_modifier_remove(ReportList *reports, Scene *scene, Object *ob, Mod
if(obmd==md)
break;
- if(!obmd)
+ if(!obmd) {
+ BKE_reportf(reports, RPT_ERROR, "Modifier '%s' not in object '%s'.", ob->id.name, md->name);
return 0;
+ }
/* special cases */
if(md->type == eModifierType_ParticleSystem) {
@@ -178,7 +186,13 @@ int ED_object_modifier_remove(ReportList *reports, Scene *scene, Object *ob, Mod
DAG_scene_sort(scene);
}
else if(md->type == eModifierType_Smoke) {
- ob->dt = OB_SHADED;
+ ob->dt = OB_TEXTURE;
+ }
+ else if(md->type == eModifierType_Multires) {
+ Mesh *me= ob->data;
+
+ CustomData_external_remove(&me->fdata, &me->id, CD_MDISPS, me->totface);
+ CustomData_free_layer_active(&me->fdata, CD_MDISPS, me->totface);
}
BLI_remlink(&ob->modifiers, md);
@@ -331,119 +345,127 @@ int ED_object_modifier_convert(ReportList *reports, Scene *scene, Object *ob, Mo
return 1;
}
-int ED_object_modifier_apply(ReportList *reports, Scene *scene, Object *ob, ModifierData *md, int mode)
+static int modifier_apply_shape(ReportList *reports, Scene *scene, Object *ob, ModifierData *md)
{
- DerivedMesh *dm;
- Mesh *me = ob->data;
- int converted = 0;
+ if (ob->type==OB_MESH) {
+ DerivedMesh *dm;
+ Mesh *me= ob->data;
+ Key *key=me->key;
+ KeyBlock *kb;
+
+ if(!modifier_sameTopology(md)) {
+ BKE_report(reports, RPT_ERROR, "Only deforming modifiers can be applied to Shapes");
+ 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;
+ }
+
+ if(key == NULL) {
+ key= me->key= add_key((ID *)me);
+ key->type= KEY_RELATIVE;
+ /* if that was the first key block added, then it was the basis.
+ * Initialise it with the mesh, and add another for the modifier */
+ kb= add_keyblock(scene, key);
+ mesh_to_key(me, kb);
+ }
- 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");
+ kb= add_keyblock(scene, key);
+ DM_to_meshkey(dm, me, kb);
+
+ dm->release(dm);
+ }
+ else {
+ BKE_report(reports, RPT_ERROR, "Cannot apply modifier for this object type");
return 0;
}
+ return 1;
+}
- if (md!=ob->modifiers.first)
- BKE_report(reports, RPT_INFO, "Applied modifier was not first, result may not be as expected.");
-
+static int modifier_apply_obdata(ReportList *reports, Scene *scene, Object *ob, ModifierData *md)
+{
if (ob->type==OB_MESH) {
- if (mode == MODIFIER_APPLY_SHAPE) {
- Key *key=me->key;
- KeyBlock *kb;
- int newkey=0;
-
- if(!modifier_sameTopology(md)) {
- BKE_report(reports, RPT_ERROR, "Only deforming modifiers can be applied to Shapes");
- 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;
- }
-
- if(key == NULL) {
- key= me->key= add_key((ID *)me);
- key->type= KEY_RELATIVE;
- newkey= 1;
- }
- kb= add_keyblock(scene, key);
-
- if (newkey) {
- /* if that was the first key block added, then it was the basis.
- * Initialise it with the mesh, and add another for the modifier */
- mesh_to_key(me, kb);
- kb= add_keyblock(scene, key);
- }
- DM_to_meshkey(dm, me, kb);
- converted = 1;
-
- dm->release(dm);
+ DerivedMesh *dm;
+ Mesh *me = ob->data;
+ if( me->key) {
+ BKE_report(reports, RPT_ERROR, "Modifier cannot be applied to Mesh with Shape Keys");
+ return 0;
}
- else { /* MODIFIER_APPLY_DATA */
- if( me->key) {
- BKE_report(reports, RPT_ERROR, "Modifier cannot be applied to Mesh with Shape Keys");
- return 0;
- }
-
- mesh_pmv_off(ob, me);
-
- /* Multires: ensure that recent sculpting is applied */
- if(md->type == eModifierType_Multires)
- multires_force_update(ob);
-
- 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);
+
+ mesh_pmv_off(ob, me);
+
+ /* Multires: ensure that recent sculpting is applied */
+ if(md->type == eModifierType_Multires)
+ multires_force_update(ob);
+
+ 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);
+
+ 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))) {
+
+ if (!(md->mode&eModifierMode_Realtime) || (mti->isDisabled && mti->isDisabled(md, 0))) {
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_id_flush_update(&ob->id, OB_RECALC_DATA);
}
else {
BKE_report(reports, RPT_ERROR, "Cannot apply modifier for this object type");
return 0;
}
+ return 1;
+}
- if (converted) {
- BLI_remlink(&ob->modifiers, md);
- modifier_free(md);
+int ED_object_modifier_apply(ReportList *reports, Scene *scene, Object *ob, ModifierData *md, int mode)
+{
+ 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;
+ }
- return 1;
+ if (md!=ob->modifiers.first)
+ BKE_report(reports, RPT_INFO, "Applied modifier was not first, result may not be as expected.");
+
+ if (mode == MODIFIER_APPLY_SHAPE) {
+ if (!modifier_apply_shape(reports, scene, ob, md))
+ return 0;
+ } else {
+ if (!modifier_apply_obdata(reports, scene, ob, md))
+ return 0;
}
- return 0;
+ BLI_remlink(&ob->modifiers, md);
+ modifier_free(md);
+
+ return 1;
}
int ED_object_modifier_copy(ReportList *reports, Object *ob, ModifierData *md)
@@ -474,7 +496,7 @@ static int modifier_add_exec(bContext *C, wmOperator *op)
Object *ob = CTX_data_active_object(C);
int type= RNA_enum_get(op->ptr, "type");
- if(!ED_object_modifier_add(op->reports, scene, ob, type))
+ if(!ED_object_modifier_add(op->reports, scene, ob, NULL, type))
return OPERATOR_CANCELLED;
WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
@@ -527,7 +549,7 @@ void OBJECT_OT_modifier_add(wmOperatorType *ot)
/* api callbacks */
ot->invoke= WM_menu_invoke;
ot->exec= modifier_add_exec;
- ot->poll= ED_operator_object_active;
+ ot->poll= ED_operator_object_active_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -559,7 +581,6 @@ void OBJECT_OT_modifier_remove(wmOperatorType *ot)
ot->name= "Remove Modifier";
ot->description= "Remove a modifier from the active object.";
ot->idname= "OBJECT_OT_modifier_remove";
- ot->poll= ED_operator_object_active;
ot->exec= modifier_remove_exec;
ot->poll= modifier_poll;
@@ -590,7 +611,6 @@ void OBJECT_OT_modifier_move_up(wmOperatorType *ot)
ot->name= "Move Up Modifier";
ot->description= "Move modifier up in the stack.";
ot->idname= "OBJECT_OT_modifier_move_up";
- ot->poll= ED_operator_object_active;
ot->exec= modifier_move_up_exec;
ot->poll= modifier_poll;
@@ -621,7 +641,6 @@ void OBJECT_OT_modifier_move_down(wmOperatorType *ot)
ot->name= "Move Down Modifier";
ot->description= "Move modifier down in the stack.";
ot->idname= "OBJECT_OT_modifier_move_down";
- ot->poll= ED_operator_object_active;
ot->exec= modifier_move_down_exec;
ot->poll= modifier_poll;
@@ -659,7 +678,6 @@ void OBJECT_OT_modifier_apply(wmOperatorType *ot)
ot->name= "Apply Modifier";
ot->description= "Apply modifier and remove from the stack.";
ot->idname= "OBJECT_OT_modifier_apply";
- ot->poll= ED_operator_object_active;
//ot->invoke= WM_menu_invoke;
ot->exec= modifier_apply_exec;
@@ -694,7 +712,6 @@ void OBJECT_OT_modifier_convert(wmOperatorType *ot)
ot->name= "Convert Modifier";
ot->description= "Convert particles to a mesh object.";
ot->idname= "OBJECT_OT_modifier_convert";
- ot->poll= ED_operator_object_active;
ot->exec= modifier_convert_exec;
ot->poll= modifier_poll;
@@ -725,7 +742,6 @@ void OBJECT_OT_modifier_copy(wmOperatorType *ot)
ot->name= "Copy Modifier";
ot->description= "Duplicate modifier at the same position in the stack.";
ot->idname= "OBJECT_OT_modifier_copy";
- ot->poll= ED_operator_object_active;
ot->exec= modifier_copy_exec;
ot->poll= modifier_poll;
@@ -736,6 +752,13 @@ void OBJECT_OT_modifier_copy(wmOperatorType *ot)
/************* multires delete higher levels operator ****************/
+static int multires_poll(bContext *C)
+{
+ PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MultiresModifier);
+ ID *id= ptr.id.data;
+ return (ptr.data && id && !id->lib);
+}
+
static int multires_higher_levels_delete_exec(bContext *C, wmOperator *op)
{
PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MultiresModifier);
@@ -754,8 +777,8 @@ void OBJECT_OT_multires_higher_levels_delete(wmOperatorType *ot)
{
ot->name= "Delete Higher Levels";
ot->idname= "OBJECT_OT_multires_higher_levels_delete";
- ot->poll= ED_operator_object_active;
+ ot->poll= multires_poll;
ot->exec= multires_higher_levels_delete_exec;
/* flags */
@@ -770,27 +793,158 @@ static int multires_subdivide_exec(bContext *C, wmOperator *op)
Object *ob= ptr.id.data;
MultiresModifierData *mmd= ptr.data;
- multiresModifier_subdivide(mmd, ob, 1, 0, mmd->simple);
+ multiresModifier_subdivide(mmd, ob, 0, mmd->simple);
+
+ DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
return OPERATOR_FINISHED;
}
-static int multires_subdivide_poll(bContext *C)
-{
- PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MultiresModifier);
- ID *id= ptr.id.data;
- return (ptr.data && id && !id->lib);
-}
-
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= multires_poll;
ot->exec= multires_subdivide_exec;
- ot->poll= multires_subdivide_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+/****************** multires reshape operator *********************/
+
+static int multires_reshape_exec(bContext *C, wmOperator *op)
+{
+ PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MultiresModifier);
+ Object *ob= ptr.id.data, *secondob= NULL;
+ MultiresModifierData *mmd= ptr.data;
+
+ CTX_DATA_BEGIN(C, Object*, selob, selected_editable_objects) {
+ if(selob->type == OB_MESH && selob != ob) {
+ secondob= selob;
+ break;
+ }
+ }
+ CTX_DATA_END;
+
+ if(!secondob) {
+ BKE_report(op->reports, RPT_ERROR, "Second selected mesh object require to copy shape from.");
+ return OPERATOR_CANCELLED;
+ }
+
+ if(!multiresModifier_reshape(mmd, ob, secondob)) {
+ BKE_report(op->reports, RPT_ERROR, "Objects do not have the same number of vertices.");
+ return OPERATOR_CANCELLED;
+ }
+
+ DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+
+ return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_multires_reshape(wmOperatorType *ot)
+{
+ ot->name= "Multires Reshape";
+ ot->description= "Copy vertex coordinates from other object.";
+ ot->idname= "OBJECT_OT_multires_reshape";
+
+ ot->poll= multires_poll;
+ ot->exec= multires_reshape_exec;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+/****************** multires save external operator *********************/
+
+static int multires_save_external_exec(bContext *C, wmOperator *op)
+{
+ PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MultiresModifier);
+ Object *ob= ptr.id.data;
+ Mesh *me= (ob)? ob->data: op->customdata;
+ char path[FILE_MAX];
+
+ if(CustomData_external_test(&me->fdata, CD_MDISPS))
+ return OPERATOR_CANCELLED;
+
+ RNA_string_get(op->ptr, "path", path);
+ if(G.save_over)
+ BLI_makestringcode(G.sce, path); /* make relative */
+
+ CustomData_external_add(&me->fdata, &me->id, CD_MDISPS, me->totface, path);
+ CustomData_external_write(&me->fdata, &me->id, CD_MASK_MESH, me->totface, 0);
+
+ return OPERATOR_FINISHED;
+}
+
+static int multires_save_external_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MultiresModifier);
+ Object *ob= ptr.id.data;
+ Mesh *me= ob->data;
+ char path[FILE_MAX];
+
+ if(CustomData_external_test(&me->fdata, CD_MDISPS))
+ return OPERATOR_CANCELLED;
+
+ if(RNA_property_is_set(op->ptr, "path"))
+ return multires_save_external_exec(C, op);
+
+ op->customdata= me;
+
+ BLI_snprintf(path, sizeof(path), "//%s.btx", me->id.name+2);
+ RNA_string_set(op->ptr, "path", path);
+
+ WM_event_add_fileselect(C, op);
+
+ return OPERATOR_RUNNING_MODAL;
+}
+
+void OBJECT_OT_multires_save_external(wmOperatorType *ot)
+{
+ ot->name= "Multires Save External";
+ ot->description= "Save displacements to an external file.";
+ ot->idname= "OBJECT_OT_multires_save_external";
+
+ ot->poll= multires_poll;
+ ot->exec= multires_save_external_exec;
+ ot->invoke= multires_save_external_invoke;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ WM_operator_properties_filesel(ot, FOLDERFILE|BTXFILE, FILE_SPECIAL);
+}
+
+/****************** multires pack operator *********************/
+
+static int multires_pack_external_exec(bContext *C, wmOperator *op)
+{
+ PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MultiresModifier);
+ Object *ob= ptr.id.data;
+ Mesh *me= ob->data;
+
+ if(!CustomData_external_test(&me->fdata, CD_MDISPS))
+ return OPERATOR_CANCELLED;
+
+ // XXX don't remove..
+ CustomData_external_remove(&me->fdata, &me->id, CD_MDISPS, me->totface);
+
+ return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_multires_pack_external(wmOperatorType *ot)
+{
+ ot->name= "Multires Pack External";
+ ot->description= "Pack displacements from an external file.";
+ ot->idname= "OBJECT_OT_multires_pack_external";
+
+ ot->poll= multires_poll;
+ ot->exec= multires_pack_external_exec;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -832,7 +986,7 @@ static int meshdeform_bind_exec(bContext *C, wmOperator *op)
int mode= mmd->modifier.mode;
/* force modifier to run, it will call binding routine */
- mmd->bindfunc= harmonic_coordinates_bind;
+ mmd->bindfunc= mesh_deform_bind;
mmd->modifier.mode |= eModifierMode_Realtime;
if(ob->type == OB_MESH) {
diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c
index fd66b564d53..8272d989718 100644
--- a/source/blender/editors/object/object_ops.c
+++ b/source/blender/editors/object/object_ops.c
@@ -71,7 +71,7 @@ void ED_operatortypes_object(void)
WM_operatortype_append(OBJECT_OT_location_apply);
WM_operatortype_append(OBJECT_OT_scale_apply);
WM_operatortype_append(OBJECT_OT_rotation_apply);
- WM_operatortype_append(OBJECT_OT_center_set);
+ WM_operatortype_append(OBJECT_OT_origin_set);
WM_operatortype_append(OBJECT_OT_mode_set);
WM_operatortype_append(OBJECT_OT_editmode_toggle);
@@ -98,7 +98,7 @@ void ED_operatortypes_object(void)
WM_operatortype_append(OBJECT_OT_select_inverse);
WM_operatortype_append(OBJECT_OT_select_random);
- WM_operatortype_append(OBJECT_OT_select_all_toggle);
+ WM_operatortype_append(OBJECT_OT_select_all);
WM_operatortype_append(OBJECT_OT_select_by_type);
WM_operatortype_append(OBJECT_OT_select_by_layer);
WM_operatortype_append(OBJECT_OT_select_linked);
@@ -124,6 +124,7 @@ void ED_operatortypes_object(void)
WM_operatortype_append(OBJECT_OT_duplicates_make_real);
WM_operatortype_append(OBJECT_OT_duplicate);
WM_operatortype_append(OBJECT_OT_join);
+ WM_operatortype_append(OBJECT_OT_join_shapes);
WM_operatortype_append(OBJECT_OT_convert);
WM_operatortype_append(OBJECT_OT_modifier_add);
@@ -134,7 +135,10 @@ void ED_operatortypes_object(void)
WM_operatortype_append(OBJECT_OT_modifier_convert);
WM_operatortype_append(OBJECT_OT_modifier_copy);
WM_operatortype_append(OBJECT_OT_multires_subdivide);
+ WM_operatortype_append(OBJECT_OT_multires_reshape);
WM_operatortype_append(OBJECT_OT_multires_higher_levels_delete);
+ WM_operatortype_append(OBJECT_OT_multires_save_external);
+ WM_operatortype_append(OBJECT_OT_multires_pack_external);
WM_operatortype_append(OBJECT_OT_meshdeform_bind);
WM_operatortype_append(OBJECT_OT_explode_refresh);
@@ -179,7 +183,7 @@ void ED_operatortypes_object(void)
WM_operatortype_append(OBJECT_OT_shape_key_mirror);
WM_operatortype_append(OBJECT_OT_shape_key_move);
- WM_operatortype_append(LATTICE_OT_select_all_toggle);
+ WM_operatortype_append(LATTICE_OT_select_all);
WM_operatortype_append(LATTICE_OT_make_regular);
WM_operatortype_append(OBJECT_OT_group_add);
@@ -202,7 +206,7 @@ void ED_operatormacros_object(void)
ot= WM_operatortype_append_macro("OBJECT_OT_duplicate_move", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER);
if(ot) {
WM_operatortype_macro_define(ot, "OBJECT_OT_duplicate");
- otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate");
+ otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
RNA_enum_set(otmacro->ptr, "proportional", PROP_EDIT_OFF);
}
@@ -211,7 +215,7 @@ void ED_operatormacros_object(void)
if(ot) {
otmacro= WM_operatortype_macro_define(ot, "OBJECT_OT_duplicate");
RNA_boolean_set(otmacro->ptr, "linked", 1);
- otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate");
+ otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
RNA_enum_set(otmacro->ptr, "proportional", PROP_EDIT_OFF);
}
}
@@ -226,6 +230,7 @@ void ED_keymap_object(wmKeyConfig *keyconf)
{
wmKeyMap *keymap;
wmKeyMapItem *kmi;
+ int i;
/* Objects, Regardless of Mode -------------------------------------------------- */
keymap= WM_keymap_find(keyconf, "Object Non-modal", 0, 0);
@@ -243,14 +248,11 @@ void ED_keymap_object(wmKeyConfig *keyconf)
RNA_enum_set(kmi->ptr, "mode", OB_MODE_VERTEX_PAINT);
RNA_boolean_set(kmi->ptr, "toggle", 1);
- kmi = WM_keymap_add_item(keymap, "OBJECT_OT_mode_set", VKEY, KM_PRESS, 0, 0);
- RNA_enum_set(kmi->ptr, "mode", OB_MODE_VERTEX_PAINT);
- RNA_boolean_set(kmi->ptr, "toggle", 1);
kmi = WM_keymap_add_item(keymap, "OBJECT_OT_mode_set", TABKEY, KM_PRESS, KM_CTRL, 0);
RNA_enum_set(kmi->ptr, "mode", OB_MODE_WEIGHT_PAINT);
RNA_boolean_set(kmi->ptr, "toggle", 1);
- WM_keymap_add_item(keymap, "OBJECT_OT_center_set", CKEY, KM_PRESS, KM_ALT|KM_SHIFT|KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "OBJECT_OT_origin_set", CKEY, KM_PRESS, KM_ALT|KM_SHIFT|KM_CTRL, 0);
/* Object Mode ---------------------------------------------------------------- */
/* Note: this keymap gets disabled in non-objectmode, */
@@ -260,7 +262,9 @@ void ED_keymap_object(wmKeyConfig *keyconf)
/* object mode supports PET now */
ED_object_generic_keymap(keyconf, keymap, TRUE);
- WM_keymap_add_item(keymap, "OBJECT_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "VIEW3D_OT_game_start", PKEY, KM_PRESS, 0, 0);
+
+ WM_keymap_add_item(keymap, "OBJECT_OT_select_all", AKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "OBJECT_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "OBJECT_OT_select_linked", LKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "OBJECT_OT_select_grouped", GKEY, KM_PRESS, KM_SHIFT, 0);
@@ -305,19 +309,24 @@ void ED_keymap_object(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "OBJECT_OT_make_local", LKEY, KM_PRESS, 0, 0);
// XXX this should probably be in screen instead... here for testing purposes in the meantime... - Aligorith
- WM_keymap_verify_item(keymap, "ANIM_OT_insert_keyframe_menu", IKEY, KM_PRESS, 0, 0);
- WM_keymap_verify_item(keymap, "ANIM_OT_delete_keyframe_v3d", IKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_insert_menu", IKEY, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_delete_v3d", IKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_verify_item(keymap, "GROUP_OT_create", GKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove", GKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
WM_keymap_verify_item(keymap, "GROUP_OT_objects_add_active", GKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove_active", GKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0);
+ for(i=0; i<=5; i++) {
+ kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", ZEROKEY+i, KM_PRESS, KM_CTRL, 0);
+ RNA_int_set(kmi->ptr, "level", i);
+ }
+
/* Lattice -------------------------------------------------------------------- */
keymap= WM_keymap_find(keyconf, "Lattice", 0, 0);
keymap->poll= ED_operator_editlattice;
- WM_keymap_add_item(keymap, "LATTICE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "LATTICE_OT_select_all", AKEY, KM_PRESS, 0, 0);
/* menus */
WM_keymap_add_menu(keymap, "VIEW3D_MT_hook", HKEY, KM_PRESS, KM_CTRL, 0);
@@ -327,27 +336,23 @@ void ED_keymap_object(wmKeyConfig *keyconf)
void ED_object_generic_keymap(struct wmKeyConfig *keyconf, struct wmKeyMap *keymap, int do_pet)
{
- wmKeyMapItem *km;
-
- /* snap */
- km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(km->ptr, "path", "scene.tool_settings.snap");
+ wmKeyMapItem *kmi;
/* used by mesh, curve & lattice only */
if(do_pet) {
/* context ops */
- km = WM_keymap_add_item(keymap, "WM_OT_context_cycle_enum", OKEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(km->ptr, "path", "scene.tool_settings.proportional_editing_falloff");
-
- km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, 0, 0);
- RNA_string_set(km->ptr, "path", "scene.tool_settings.proportional_editing");
- RNA_string_set(km->ptr, "value_1", "DISABLED");
- RNA_string_set(km->ptr, "value_2", "ENABLED");
-
- km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, KM_ALT, 0);
- RNA_string_set(km->ptr, "path", "scene.tool_settings.proportional_editing");
- RNA_string_set(km->ptr, "value_1", "DISABLED");
- RNA_string_set(km->ptr, "value_2", "CONNECTED");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_enum", OKEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_string_set(kmi->ptr, "path", "tool_settings.proportional_editing_falloff");
+
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", "tool_settings.proportional_editing");
+ RNA_string_set(kmi->ptr, "value_1", "DISABLED");
+ RNA_string_set(kmi->ptr, "value_2", "ENABLED");
+
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, KM_ALT, 0);
+ RNA_string_set(kmi->ptr, "path", "tool_settings.proportional_editing");
+ RNA_string_set(kmi->ptr, "value_1", "DISABLED");
+ RNA_string_set(kmi->ptr, "value_2", "CONNECTED");
}
}
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index 2391ce9020f..15ab98a14bd 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -458,7 +458,7 @@ static int parent_clear_exec(bContext *C, wmOperator *op)
CTX_DATA_END;
DAG_scene_sort(CTX_data_scene(C));
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
return OPERATOR_FINISHED;
@@ -475,7 +475,7 @@ void OBJECT_OT_parent_clear(wmOperatorType *ot)
ot->invoke= WM_menu_invoke;
ot->exec= parent_clear_exec;
- ot->poll= ED_operator_object_active;
+ ot->poll= ED_operator_object_active_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -598,9 +598,46 @@ static int parent_set_exec(bContext *C, wmOperator *op)
/* handle types */
if (pchan)
- strcpy (ob->parsubstr, pchan->name);
+ strcpy(ob->parsubstr, pchan->name);
else
ob->parsubstr[0]= 0;
+
+ if(partype == PAR_PATH_CONST)
+ ; /* don't do anything here, since this is not technically "parenting" */
+ else if( ELEM(partype, PAR_CURVE, PAR_LATTICE) || pararm )
+ {
+ /* partype is now set to PAROBJECT so that invisible 'virtual' modifiers don't need to be created
+ * NOTE: the old (2.4x) method was to set ob->partype = PARSKEL, creating the virtual modifiers
+ */
+ ob->partype= PAROBJECT; /* note, dna define, not operator property */
+ //ob->partype= PARSKEL; /* note, dna define, not operator property */
+
+ /* BUT, to keep the deforms, we need a modifier, and then we need to set the object that it uses */
+ // XXX currently this should only happen for meshes, curves, surfaces, and lattices - this stuff isn't available for metas yet
+ if (ELEM5(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_LATTICE))
+ {
+ ModifierData *md;
+
+ switch (partype) {
+ case PAR_CURVE: /* curve deform */
+ md= ED_object_modifier_add(op->reports, scene, ob, NULL, eModifierType_Curve);
+ ((CurveModifierData *)md)->object= par;
+ break;
+ case PAR_LATTICE: /* lattice deform */
+ md= ED_object_modifier_add(op->reports, scene, ob, NULL, eModifierType_Lattice);
+ ((LatticeModifierData *)md)->object= par;
+ break;
+ default: /* armature deform */
+ md= ED_object_modifier_add(op->reports, scene, ob, NULL, eModifierType_Armature);
+ ((ArmatureModifierData *)md)->object= par;
+ break;
+ }
+ }
+ }
+ else if (partype == PAR_BONE)
+ ob->partype= PARBONE; /* note, dna define, not operator property */
+ else
+ ob->partype= PAROBJECT; /* note, dna define, not operator property */
/* constraint */
if(partype == PAR_PATH_CONST) {
@@ -641,55 +678,13 @@ static int parent_set_exec(bContext *C, wmOperator *op)
}
ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA;
-
- if(partype == PAR_PATH_CONST)
- ; /* don't do anything here, since this is not technically "parenting" */
- else if( ELEM(partype, PAR_CURVE, PAR_LATTICE) || pararm )
- {
- /* partype is now set to PAROBJECT so that invisible 'virtual' modifiers don't need to be created
- * NOTE: the old (2.4x) method was to set ob->partype = PARSKEL, creating the virtual modifiers
- */
- ob->partype= PAROBJECT; /* note, dna define, not operator property */
- //ob->partype= PARSKEL; /* note, dna define, not operator property */
-
- /* BUT, to keep the deforms, we need a modifier, and then we need to set the object that it uses */
- // XXX currently this should only happen for meshes, curves, surfaces, and lattices - this stuff isn't available for metas yet
- if (ELEM5(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_LATTICE))
- {
- switch (partype)
- {
- case PAR_CURVE: /* curve deform */
- {
- CurveModifierData *cmd= ED_object_modifier_add(op->reports, scene, ob, eModifierType_Curve);
- cmd->object= par;
- }
- break;
- case PAR_LATTICE: /* lattice deform */
- {
- LatticeModifierData *lmd= ED_object_modifier_add(op->reports, scene, ob, eModifierType_Lattice);
- lmd->object= par;
- }
- break;
- default: /* armature deform */
- {
- ArmatureModifierData *amd= ED_object_modifier_add(op->reports, scene, ob, eModifierType_Armature);
- amd->object= par;
- }
- break;
- }
- }
- }
- else if (partype == PAR_BONE)
- ob->partype= PARBONE; /* note, dna define, not operator property */
- else
- ob->partype= PAROBJECT; /* note, dna define, not operator property */
}
}
}
CTX_DATA_END;
DAG_scene_sort(scene);
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
return OPERATOR_FINISHED;
@@ -738,7 +733,7 @@ void OBJECT_OT_parent_set(wmOperatorType *ot)
ot->invoke= parent_set_invoke;
ot->exec= parent_set_exec;
- ot->poll= ED_operator_object_active;
+ ot->poll= ED_operator_object_active_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -777,7 +772,7 @@ static int parent_noinv_set_exec(bContext *C, wmOperator *op)
CTX_DATA_END;
DAG_scene_sort(CTX_data_scene(C));
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
return OPERATOR_FINISHED;
@@ -793,7 +788,7 @@ void OBJECT_OT_parent_no_inverse_set(wmOperatorType *ot)
/* api callbacks */
ot->invoke= WM_operator_confirm;
ot->exec= parent_noinv_set_exec;
- ot->poll= ED_operator_object_active;
+ ot->poll= ED_operator_object_active_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -817,7 +812,7 @@ static int object_slow_parent_clear_exec(bContext *C, wmOperator *op)
}
CTX_DATA_END;
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_SCENE, scene);
return OPERATOR_FINISHED;
@@ -855,7 +850,7 @@ static int object_slow_parent_set_exec(bContext *C, wmOperator *op)
}
CTX_DATA_END;
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_SCENE, scene);
return OPERATOR_FINISHED;
@@ -904,8 +899,8 @@ static int object_track_clear_exec(bContext *C, wmOperator *op)
}
CTX_DATA_END;
+ DAG_ids_flush_update(0);
DAG_scene_sort(CTX_data_scene(C));
- ED_anim_dag_flush_update(C);
return OPERATOR_FINISHED;
}
@@ -997,7 +992,7 @@ static int track_set_exec(bContext *C, wmOperator *op)
CTX_DATA_END;
}
DAG_scene_sort(scene);
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
return OPERATOR_FINISHED;
}
@@ -1177,7 +1172,7 @@ static int make_links_scene_exec(bContext *C, wmOperator *op)
}
CTX_DATA_END;
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
/* one day multiple scenes will be visible, then we should have some update function for them */
return OPERATOR_FINISHED;
@@ -1245,7 +1240,7 @@ static int make_links_data_exec(bContext *C, wmOperator *op)
}
CTX_DATA_END;
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, CTX_wm_view3d(C));
return OPERATOR_FINISHED;
}
diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c
index 20f3ea3df9e..becad003d5c 100644
--- a/source/blender/editors/object/object_select.c
+++ b/source/blender/editors/object/object_select.c
@@ -571,6 +571,7 @@ static int object_select_grouped_exec(bContext *C, wmOperator *op)
if (extend == 0) {
CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
ED_base_object_select(base, BA_DESELECT);
+ changed = 1;
}
CTX_DATA_END;
}
@@ -581,17 +582,17 @@ static int object_select_grouped_exec(bContext *C, wmOperator *op)
return OPERATOR_CANCELLED;
}
- if(nr==1) changed = select_grouped_children(C, ob, 1);
- else if(nr==2) changed = select_grouped_children(C, ob, 0);
- else if(nr==3) changed = select_grouped_parent(C);
- else if(nr==4) changed = select_grouped_siblings(C, ob);
- else if(nr==5) changed = select_grouped_type(C, ob);
- else if(nr==6) changed = select_grouped_layer(C, ob);
- else if(nr==7) changed = select_grouped_group(C, ob);
- else if(nr==8) changed = select_grouped_object_hooks(C, ob);
- else if(nr==9) changed = select_grouped_index_object(C, ob);
- else if(nr==10) changed = select_grouped_color(C, ob);
- else if(nr==11) changed = select_grouped_gameprops(C, ob);
+ if(nr==1) changed |= select_grouped_children(C, ob, 1);
+ else if(nr==2) changed |= select_grouped_children(C, ob, 0);
+ else if(nr==3) changed |= select_grouped_parent(C);
+ else if(nr==4) changed |= select_grouped_siblings(C, ob);
+ else if(nr==5) changed |= select_grouped_type(C, ob);
+ else if(nr==6) changed |= select_grouped_layer(C, ob);
+ else if(nr==7) changed |= select_grouped_group(C, ob);
+ else if(nr==8) changed |= select_grouped_object_hooks(C, ob);
+ else if(nr==9) changed |= select_grouped_index_object(C, ob);
+ else if(nr==10) changed |= select_grouped_color(C, ob);
+ else if(nr==11) changed |= select_grouped_gameprops(C, ob);
if (changed) {
WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C));
@@ -707,49 +708,64 @@ void OBJECT_OT_select_inverse(wmOperatorType *ot)
/**************************** (De)select All ****************************/
-static int object_select_de_select_all_exec(bContext *C, wmOperator *op)
+static int object_select_all_exec(bContext *C, wmOperator *op)
{
+ int action = RNA_enum_get(op->ptr, "action");
- int a=0, ok=0;
-
- CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
- if (base->flag & SELECT) {
- ok= a= 1;
- break;
+ /* passthrough if no objects are visible */
+ if (CTX_DATA_COUNT(C, visible_bases) == 0) return OPERATOR_PASS_THROUGH;
+
+ if (action == SEL_TOGGLE) {
+ action = SEL_SELECT;
+ CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
+ if (base->flag & SELECT) {
+ action = SEL_DESELECT;
+ break;
+ }
}
- else ok=1;
+ CTX_DATA_END;
}
- CTX_DATA_END;
-
- if (!ok) return OPERATOR_PASS_THROUGH;
-
+
CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
- if (a) ED_base_object_select(base, BA_DESELECT);
- else ED_base_object_select(base, BA_SELECT);
+ switch (action) {
+ case SEL_SELECT:
+ ED_base_object_select(base, BA_SELECT);
+ break;
+ case SEL_DESELECT:
+ ED_base_object_select(base, BA_DESELECT);
+ break;
+ case SEL_INVERT:
+ if (base->flag & SELECT) {
+ ED_base_object_select(base, BA_DESELECT);
+ } else {
+ ED_base_object_select(base, BA_SELECT);
+ }
+ break;
+ }
}
CTX_DATA_END;
- /* undo? */
WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C));
return OPERATOR_FINISHED;
}
-void OBJECT_OT_select_all_toggle(wmOperatorType *ot)
+void OBJECT_OT_select_all(wmOperatorType *ot)
{
/* identifiers */
ot->name= "deselect all";
- ot->description = "(de)select all visible objects in scene.";
- ot->idname= "OBJECT_OT_select_all_toggle";
+ ot->description = "Change selection of all visible objects in scene.";
+ ot->idname= "OBJECT_OT_select_all";
/* api callbacks */
- ot->exec= object_select_de_select_all_exec;
+ ot->exec= object_select_all_exec;
ot->poll= ED_operator_scene_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-
+
+ WM_operator_properties_select_all(ot);
}
/**************************** Select Mirror ****************************/
@@ -981,11 +997,11 @@ static int object_select_random_exec(bContext *C, wmOperator *op)
}
CTX_DATA_END;
}
- percent = RNA_float_get(op->ptr, "percent");
+ percent = RNA_float_get(op->ptr, "percent")/100.0f;
CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
if (BLI_frand() < percent) {
- ED_base_object_select(base, BA_SELECT);
+ ED_base_object_select(base, BA_SELECT);
}
}
CTX_DATA_END;
@@ -998,7 +1014,7 @@ static int object_select_random_exec(bContext *C, wmOperator *op)
void OBJECT_OT_select_random(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Random select";
+ ot->name= "Select Random";
ot->description = "Set select on random visible objects.";
ot->idname= "OBJECT_OT_select_random";
@@ -1011,8 +1027,8 @@ void OBJECT_OT_select_random(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
- RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first.");
- RNA_def_float_percentage(ot->srna, "percent", 0.5f, 0.0f, 1.0f, "Percent", "percentage of objects to randomly select", 0.0001f, 1.0f);
+ RNA_def_float_percentage(ot->srna, "percent", 50.f, 0.0f, 100.0f, "Percent", "Percentage of objects to select randomly", 0.f, 100.0f);
+ RNA_def_boolean(ot->srna, "extend", FALSE, "Extend Selection", "Extend selection instead of deselecting everything first.");
}
diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c
index 20d93083410..a16b0f2a7ac 100644
--- a/source/blender/editors/object/object_transform.c
+++ b/source/blender/editors/object/object_transform.c
@@ -26,6 +26,7 @@
*/
#include <stdlib.h>
+#include <string.h>
#include "DNA_anim_types.h"
#include "DNA_action_types.h"
@@ -104,8 +105,11 @@ static int object_location_clear_exec(bContext *C, wmOperator *op)
}
CTX_DATA_END;
+ /* this is needed so children are also updated */
+ DAG_ids_flush_update(0);
+
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
-
+
return OPERATOR_FINISHED;
}
@@ -118,7 +122,7 @@ void OBJECT_OT_location_clear(wmOperatorType *ot)
/* api callbacks */
ot->exec= object_location_clear_exec;
- ot->poll= ED_operator_object_active;
+ ot->poll= ED_operator_object_active_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -240,6 +244,9 @@ static int object_rotation_clear_exec(bContext *C, wmOperator *op)
}
CTX_DATA_END;
+ /* this is needed so children are also updated */
+ DAG_ids_flush_update(0);
+
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
return OPERATOR_FINISHED;
@@ -254,7 +261,7 @@ void OBJECT_OT_rotation_clear(wmOperatorType *ot)
/* api callbacks */
ot->exec= object_rotation_clear_exec;
- ot->poll= ED_operator_object_active;
+ ot->poll= ED_operator_object_active_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -298,6 +305,9 @@ static int object_scale_clear_exec(bContext *C, wmOperator *op)
}
CTX_DATA_END;
+ /* this is needed so children are also updated */
+ DAG_ids_flush_update(0);
+
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
return OPERATOR_FINISHED;
@@ -312,7 +322,7 @@ void OBJECT_OT_scale_clear(wmOperatorType *ot)
/* api callbacks */
ot->exec= object_scale_clear_exec;
- ot->poll= ED_operator_object_active;
+ ot->poll= ED_operator_object_active_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -340,7 +350,7 @@ static int object_origin_clear_exec(bContext *C, wmOperator *op)
CTX_DATA_END;
if(armature_clear==0) /* in this case flush was done */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
@@ -356,7 +366,7 @@ void OBJECT_OT_origin_clear(wmOperatorType *ot)
/* api callbacks */
ot->exec= object_origin_clear_exec;
- ot->poll= ED_operator_object_active;
+ ot->poll= ED_operator_object_active_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -545,17 +555,7 @@ static int visual_transform_apply_exec(bContext *C, wmOperator *op)
CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) {
where_is_object(scene, ob);
-
- VECCOPY(ob->loc, ob->obmat[3]);
- mat4_to_size(ob->size,ob->obmat);
-
- if (ob->rotmode == ROT_MODE_QUAT)
- mat4_to_quat(ob->quat, ob->obmat);
- else if (ob->rotmode == ROT_MODE_AXISANGLE)
- mat4_to_axis_angle(ob->rotAxis, &ob->rotAngle, ob->obmat);
- else
- mat4_to_eul(ob->rot,ob->obmat);
-
+ object_apply_mat4(ob, ob->obmat);
where_is_object(scene, ob);
change = 1;
@@ -578,7 +578,7 @@ void OBJECT_OT_visual_transform_apply(wmOperatorType *ot)
/* api callbacks */
ot->exec= visual_transform_apply_exec;
- ot->poll= ED_operator_object_active;
+ ot->poll= ED_operator_object_active_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -598,7 +598,7 @@ void OBJECT_OT_location_apply(wmOperatorType *ot)
/* api callbacks */
ot->exec= location_apply_exec;
- ot->poll= ED_operator_object_active;
+ ot->poll= ED_operator_object_active_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -618,7 +618,7 @@ void OBJECT_OT_scale_apply(wmOperatorType *ot)
/* api callbacks */
ot->exec= scale_apply_exec;
- ot->poll= ED_operator_object_active;
+ ot->poll= ED_operator_object_active_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -638,7 +638,7 @@ void OBJECT_OT_rotation_apply(wmOperatorType *ot)
/* api callbacks */
ot->exec= rotation_apply_exec;
- ot->poll= ED_operator_object_active;
+ ot->poll= ED_operator_object_active_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -694,14 +694,14 @@ void texspace_edit(Scene *scene, View3D *v3d)
/********************* Set Object Center ************************/
static EnumPropertyItem prop_set_center_types[] = {
- {0, "CENTER", 0, "ObData to Center", "Move object data around Object center"},
- {1, "CENTER_NEW", 0, "Center New", "Move Object center to center of object data"},
- {2, "CENTER_CURSOR", 0, "Center Cursor", "Move Object Center to position of the 3d cursor"},
+ {0, "GEOMETRY_ORIGIN", 0, "Geometry to Origin", "Move object geometry to object origin"},
+ {1, "ORIGIN_GEOMETRY", 0, "Origin to Geometry", "Move object origin to center of object geometry"},
+ {2, "ORIGIN_CURSOR", 0, "Origin to 3D Cursor", "Move object origin to position of the 3d cursor"},
{0, NULL, 0, NULL, NULL}
};
/* 0 == do center, 1 == center new, 2 == center cursor */
-static int object_center_set_exec(bContext *C, wmOperator *op)
+static int object_origin_set_exec(bContext *C, wmOperator *op)
{
Main *bmain= CTX_data_main(C);
Scene *scene= CTX_data_scene(C);
@@ -1009,7 +1009,8 @@ static int object_center_set_exec(bContext *C, wmOperator *op)
CTX_DATA_END;
if (tot_change) {
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
+ WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
}
/* Warn if any errors occured */
@@ -1024,16 +1025,16 @@ static int object_center_set_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void OBJECT_OT_center_set(wmOperatorType *ot)
+void OBJECT_OT_origin_set(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Set Center";
- ot->description = "Set the object's center, by either moving the data, or set to center of data, or use 3d cursor";
- ot->idname= "OBJECT_OT_center_set";
+ ot->name= "Set Origin";
+ ot->description = "Set the object's origin, by either moving the data, or set to center of data, or use 3d cursor";
+ ot->idname= "OBJECT_OT_origin_set";
/* api callbacks */
ot->invoke= WM_menu_invoke;
- ot->exec= object_center_set_exec;
+ ot->exec= object_origin_set_exec;
ot->poll= ED_operator_view3d_active;
diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c
index 297fbbdef0b..9ad1d29fe9c 100644
--- a/source/blender/editors/object/object_vgroup.c
+++ b/source/blender/editors/object/object_vgroup.c
@@ -1735,7 +1735,7 @@ static int set_active_group_exec(bContext *C, wmOperator *op)
ob->actdef= nr+1;
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+ WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob);
return OPERATOR_FINISHED;
}
diff --git a/source/blender/editors/physics/SConscript b/source/blender/editors/physics/SConscript
index 85a40c91b3a..fcf94eae994 100644
--- a/source/blender/editors/physics/SConscript
+++ b/source/blender/editors/physics/SConscript
@@ -8,6 +8,8 @@ incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
incs += ' ../../gpu'
incs += ' ../../makesrna ../../render/extern/include #/intern/elbeem/extern'
+defs = ''
+
if env['OURPLATFORM'] == 'linux2':
cflags='-pthread'
incs += ' ../../../extern/binreloc/include'
@@ -15,4 +17,9 @@ if env['OURPLATFORM'] == 'linux2':
if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'):
incs += ' ' + env['BF_PTHREADS_INC']
-env.BlenderLib ( 'bf_editors_physics', sources, Split(incs), [], libtype=['core'], priority=[45] )
+
+if env['OURPLATFORM'] == 'darwin':
+ if env['WITH_BF_OPENMP']:
+ defs += ' PARALLEL=1'
+
+env.BlenderLib ( 'bf_editors_physics', sources, Split(incs), Split(defs), libtype=['core'], priority=[45] )
diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c
index 2a33cf38137..bf13370fbfd 100644
--- a/source/blender/editors/physics/particle_edit.c
+++ b/source/blender/editors/physics/particle_edit.c
@@ -362,7 +362,7 @@ static void PE_set_view3d_data(bContext *C, PEData *data)
PE_set_data(C, data);
view3d_set_viewcontext(C, &data->vc);
- view3d_get_transformation(&data->vc, data->ob, &data->mats);
+ view3d_get_transformation(data->vc.ar, data->vc.rv3d, data->ob, &data->mats);
if((data->vc.v3d->drawtype>OB_WIRE) && (data->vc.v3d->flag & V3D_ZBUF_SELECT))
view3d_validate_backbuf(&data->vc);
@@ -373,7 +373,6 @@ static void PE_set_view3d_data(bContext *C, PEData *data)
static int key_test_depth(PEData *data, float co[3])
{
View3D *v3d= data->vc.v3d;
- RegionView3D *rv3d= data->vc.rv3d;
double ux, uy, uz;
float depth;
short wco[3], x,y;
@@ -393,26 +392,16 @@ static int key_test_depth(PEData *data, float co[3])
x=wco[0];
y=wco[1];
- // XXX verify ..
+ x+= (short)data->vc.ar->winrct.xmin;
+ y+= (short)data->vc.ar->winrct.ymin;
- if(rv3d->depths && x<rv3d->depths->w && y<rv3d->depths->h) {
- /* the 0.0001 is an experimental threshold to make selecting keys right next to a surface work better */
- if((float)uz - 0.0001 > rv3d->depths->depths[y*rv3d->depths->w+x])
- return 0;
- else
- return 1;
- }
- else {
- x+= (short)data->vc.ar->winrct.xmin;
- y+= (short)data->vc.ar->winrct.ymin;
+ view3d_validate_backbuf(&data->vc);
+ glReadPixels(x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &depth);
- glReadPixels(x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &depth);
-
- if((float)uz - 0.0001 > depth)
- return 0;
- else
- return 1;
- }
+ if((float)uz - 0.0001 > depth)
+ return 0;
+ else
+ return 1;
}
static int key_inside_circle(PEData *data, float rad, float co[3], float *distance)
@@ -1174,8 +1163,11 @@ static void update_velocities(Object *ob, PTCacheEdit *edit)
}
}
}
+
void PE_update_object(Scene *scene, Object *ob, int useflag)
{
+ /* use this to do partial particle updates, not usable when adding or
+ removing, then a full redo is necessary and calling this may crash */
ParticleEditSettings *pset= PE_settings(scene);
PTCacheEdit *edit = PE_get_current(scene, ob);
POINT_P;
@@ -1261,29 +1253,51 @@ static void toggle_key_select(PEData *data, int point_index, int key_index)
/************************ de select all operator ************************/
-static int de_select_all_exec(bContext *C, wmOperator *op)
+static int select_all_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
Object *ob= CTX_data_active_object(C);
PTCacheEdit *edit= PE_get_current(scene, ob);
POINT_P; KEY_K;
- int sel= 0;
-
- LOOP_VISIBLE_POINTS {
- LOOP_SELECTED_KEYS {
- sel= 1;
- key->flag &= ~PEK_SELECT;
- point->flag |= PEP_EDIT_RECALC;
+ int action = RNA_enum_get(op->ptr, "action");
+
+ if (action == SEL_TOGGLE) {
+ action = SEL_SELECT;
+ LOOP_VISIBLE_POINTS {
+ LOOP_SELECTED_KEYS {
+ action = SEL_DESELECT;
+ break;
+ }
+
+ if (action == SEL_DESELECT)
+ break;
}
}
- if(sel==0) {
- LOOP_VISIBLE_POINTS {
- LOOP_KEYS {
- if(!(key->flag & PEK_SELECT)) {
+ LOOP_VISIBLE_POINTS {
+ LOOP_VISIBLE_KEYS {
+ switch (action) {
+ case SEL_SELECT:
+ if ((key->flag & PEK_SELECT) == 0) {
+ key->flag |= PEK_SELECT;
+ point->flag |= PEP_EDIT_RECALC;
+ }
+ break;
+ case SEL_DESELECT:
+ if (key->flag & PEK_SELECT) {
+ key->flag &= ~PEK_SELECT;
+ point->flag |= PEP_EDIT_RECALC;
+ }
+ break;
+ case SEL_INVERT:
+ if ((key->flag & PEK_SELECT) == 0) {
key->flag |= PEK_SELECT;
point->flag |= PEP_EDIT_RECALC;
+ } else {
+ key->flag &= ~PEK_SELECT;
+ point->flag |= PEP_EDIT_RECALC;
}
+ break;
}
}
}
@@ -1294,18 +1308,20 @@ static int de_select_all_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void PARTICLE_OT_select_all_toggle(wmOperatorType *ot)
+void PARTICLE_OT_select_all(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Select or Deselect All";
- ot->idname= "PARTICLE_OT_select_all_toggle";
+ ot->name= "Selection of all particles";
+ ot->idname= "PARTICLE_OT_select_all";
/* api callbacks */
- ot->exec= de_select_all_exec;
+ ot->exec= select_all_exec;
ot->poll= PE_poll;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ WM_operator_properties_select_all(ot);
}
/************************ pick select operator ************************/
@@ -1472,7 +1488,7 @@ void PARTICLE_OT_select_linked(wmOperatorType *ot)
/************************ border select operator ************************/
-int PE_border_select(bContext *C, rcti *rect, int select)
+int PE_border_select(bContext *C, rcti *rect, int select, int extend)
{
Scene *scene= CTX_data_scene(C);
Object *ob= CTX_data_active_object(C);
@@ -1482,6 +1498,17 @@ int PE_border_select(bContext *C, rcti *rect, int select)
if(!PE_start_edit(edit))
return OPERATOR_CANCELLED;
+ if (extend == 0 && select) {
+ POINT_P; KEY_K;
+
+ LOOP_VISIBLE_POINTS {
+ LOOP_SELECTED_KEYS {
+ key->flag &= ~PEK_SELECT;
+ point->flag |= PEP_EDIT_RECALC;
+ }
+ }
+ }
+
PE_set_view3d_data(C, &data);
data.rect= rect;
data.select= select;
@@ -2029,6 +2056,12 @@ static int remove_tagged_particles(Scene *scene, Object *ob, ParticleSystem *psy
edit->mirror_cache= NULL;
}
+ if(psys->child) {
+ MEM_freeN(psys->child);
+ psys->child= NULL;
+ psys->totchild=0;
+ }
+
edit->totpoint= psys->totpart= new_totpart;
}
@@ -2295,7 +2328,6 @@ static int remove_doubles_exec(bContext *C, wmOperator *op)
BKE_reportf(op->reports, RPT_INFO, "Remove %d double particles.", totremoved);
- PE_update_object(scene, ob, 0);
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, ob);
@@ -2472,7 +2504,6 @@ static int delete_exec(bContext *C, wmOperator *op)
recalc_lengths(data.edit);
}
- PE_update_object(data.scene, data.ob, 0);
DAG_id_flush_update(&data.ob->id, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, data.ob);
@@ -3698,7 +3729,6 @@ void PE_undo_step(Scene *scene, int step)
}
}
- PE_update_object(scene, OBACT, 0);
DAG_id_flush_update(&OBACT->id, OB_RECALC_DATA);
}
@@ -3983,6 +4013,7 @@ static int clear_edited_exec(bContext *C, wmOperator *op)
psys->flag &= ~PSYS_EDITED;
psys_reset(psys, PSYS_RESET_DEPSGRAPH);
+ WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, ob);
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
}
}
@@ -4004,39 +4035,3 @@ void PARTICLE_OT_edited_clear(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
-/*********************** specials menu **************************/
-
-static int specials_menu_invoke(bContext *C, wmOperator *op, wmEvent *event)
-{
- Scene *scene= CTX_data_scene(C);
- ParticleEditSettings *pset=PE_settings(scene);
- uiPopupMenu *pup;
- uiLayout *layout;
-
- pup= uiPupMenuBegin(C, "Specials", 0);
- layout= uiPupMenuLayout(pup);
-
- uiItemO(layout, NULL, 0, "PARTICLE_OT_rekey");
- if(pset->selectmode & SCE_SELECT_POINT) {
- uiItemO(layout, NULL, 0, "PARTICLE_OT_subdivide");
- uiItemO(layout, NULL, 0, "PARTICLE_OT_select_first");
- uiItemO(layout, NULL, 0, "PARTICLE_OT_select_last");
- }
- uiItemO(layout, NULL, 0, "PARTICLE_OT_remove_doubles");
-
- uiPupMenuEnd(C, pup);
-
- return OPERATOR_CANCELLED;
-}
-
-void PARTICLE_OT_specials_menu(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Specials Menu";
- ot->idname= "PARTICLE_OT_specials_menu";
-
- /* api callbacks */
- ot->invoke= specials_menu_invoke;
- ot->poll= PE_hair_poll;
-}
-
diff --git a/source/blender/editors/physics/particle_object.c b/source/blender/editors/physics/particle_object.c
index 90e45f81c17..38ee11954e9 100644
--- a/source/blender/editors/physics/particle_object.c
+++ b/source/blender/editors/physics/particle_object.c
@@ -56,6 +56,7 @@
#include "WM_types.h"
#include "ED_particle.h"
+#include "ED_screen.h"
#include "physics_intern.h"
@@ -69,7 +70,7 @@ static int particle_system_add_exec(bContext *C, wmOperator *op)
if(!scene || !ob)
return OPERATOR_CANCELLED;
- object_add_particle_system(scene, ob);
+ object_add_particle_system(scene, ob, NULL);
WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
return OPERATOR_FINISHED;
@@ -83,8 +84,9 @@ void OBJECT_OT_particle_system_add(wmOperatorType *ot)
ot->description="Add a particle system.";
/* api callbacks */
+ ot->poll= ED_operator_object_active_editable;
ot->exec= particle_system_add_exec;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
@@ -120,6 +122,7 @@ void OBJECT_OT_particle_system_remove(wmOperatorType *ot)
ot->description="Remove the selected particle system.";
/* api callbacks */
+ ot->poll= ED_operator_object_active_editable;
ot->exec= particle_system_remove_exec;
/* flags */
@@ -266,11 +269,11 @@ static int remove_particle_target_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void PARTICLE_OT_remove_target(wmOperatorType *ot)
+void PARTICLE_OT_target_remove(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Remove Particle Target";
- ot->idname= "PARTICLE_OT_remove_target";
+ ot->idname= "PARTICLE_OT_target_remove";
ot->description="Remove the selected particle target.";
/* api callbacks */
diff --git a/source/blender/editors/physics/physics_fluid.c b/source/blender/editors/physics/physics_fluid.c
index e5d553dacc7..eec971e777e 100644
--- a/source/blender/editors/physics/physics_fluid.c
+++ b/source/blender/editors/physics/physics_fluid.c
@@ -98,6 +98,14 @@
/* enable/disable overall compilation */
#ifndef DISABLE_ELBEEM
+#if defined(__APPLE__) && (PARALLEL == 1) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 2)
+/* ************** libgomp (Apple gcc 4.2.1) TLS bug workaround *************** */
+#include <pthread.h>
+extern pthread_key_t gomp_tls_key;
+static void *thread_tls_data;
+#endif
+
+
/* XXX */
/* from header info.c */
static int start_progress_bar(void) {return 0;};
@@ -320,6 +328,11 @@ static void *fluidsimSimulateThread(void *unused) { // *ptr) {
//char* fnameCfgPath = (char*)(ptr);
int ret=0;
+#if defined(__APPLE__) && (PARALLEL == 1) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 2)
+ // Workaround for Apple gcc 4.2.1 omp vs background thread bug
+ pthread_setspecific (gomp_tls_key, thread_tls_data);
+#endif
+
ret = elbeemSimulate();
BLI_lock_thread(LOCK_CUSTOM1);
if(globalBakeState==0) {
@@ -1036,6 +1049,11 @@ int fluidsimBake(bContext *C, ReportList *reports, Object *ob)
// set to neutral, -1 means user abort, -2 means init error
globalBakeState = 0;
globalBakeFrame = 0;
+
+#if defined(__APPLE__) && (PARALLEL == 1) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 2)
+ // Workaround for Apple gcc 4.2.1 omp vs background thread bug
+ thread_tls_data = pthread_getspecific(gomp_tls_key);
+#endif
BLI_init_threads(&threads, fluidsimSimulateThread, 1);
BLI_insert_thread(&threads, targetFile);
@@ -1200,6 +1218,6 @@ void FLUID_OT_bake(wmOperatorType *ot)
/* api callbacks */
ot->exec= fluid_bake_exec;
- ot->poll= ED_operator_object_active;
+ ot->poll= ED_operator_object_active_editable;
}
diff --git a/source/blender/editors/physics/physics_intern.h b/source/blender/editors/physics/physics_intern.h
index e8169adc8dc..e1b1a8b90a8 100644
--- a/source/blender/editors/physics/physics_intern.h
+++ b/source/blender/editors/physics/physics_intern.h
@@ -36,7 +36,7 @@
struct wmOperatorType;
/* particle_edit.c */
-void PARTICLE_OT_select_all_toggle(struct wmOperatorType *ot);
+void PARTICLE_OT_select_all(struct wmOperatorType *ot);
void PARTICLE_OT_select_first(struct wmOperatorType *ot);
void PARTICLE_OT_select_last(struct wmOperatorType *ot);
void PARTICLE_OT_select_linked(struct wmOperatorType *ot);
@@ -57,8 +57,6 @@ void PARTICLE_OT_brush_set(struct wmOperatorType *ot);
void PARTICLE_OT_brush_edit(struct wmOperatorType *ot);
void PARTICLE_OT_brush_radial_control(struct wmOperatorType *ot);
-void PARTICLE_OT_specials_menu(struct wmOperatorType *ot);
-
void PARTICLE_OT_particle_edit_toggle(struct wmOperatorType *ot);
void PARTICLE_OT_edited_clear(struct wmOperatorType *ot);
@@ -68,7 +66,7 @@ void OBJECT_OT_particle_system_remove(struct wmOperatorType *ot);
void PARTICLE_OT_new(struct wmOperatorType *ot);
void PARTICLE_OT_new_target(struct wmOperatorType *ot);
-void PARTICLE_OT_remove_target(struct wmOperatorType *ot);
+void PARTICLE_OT_target_remove(struct wmOperatorType *ot);
void PARTICLE_OT_target_move_up(struct wmOperatorType *ot);
void PARTICLE_OT_target_move_down(struct wmOperatorType *ot);
void PARTICLE_OT_connect_hair(struct wmOperatorType *ot);
@@ -99,7 +97,7 @@ void PTCACHE_OT_free_bake_all(struct wmOperatorType *ot);
void PTCACHE_OT_bake(struct wmOperatorType *ot);
void PTCACHE_OT_free_bake(struct wmOperatorType *ot);
void PTCACHE_OT_bake_from_cache(struct wmOperatorType *ot);
-void PTCACHE_OT_add_new(struct wmOperatorType *ot);
+void PTCACHE_OT_add(struct wmOperatorType *ot);
void PTCACHE_OT_remove(struct wmOperatorType *ot);
#endif /* ED_PHYSICS_INTERN_H */
diff --git a/source/blender/editors/physics/physics_ops.c b/source/blender/editors/physics/physics_ops.c
index af269dc8ed0..24b3881d6b8 100644
--- a/source/blender/editors/physics/physics_ops.c
+++ b/source/blender/editors/physics/physics_ops.c
@@ -43,7 +43,7 @@
static void operatortypes_particle(void)
{
- WM_operatortype_append(PARTICLE_OT_select_all_toggle);
+ WM_operatortype_append(PARTICLE_OT_select_all);
WM_operatortype_append(PARTICLE_OT_select_first);
WM_operatortype_append(PARTICLE_OT_select_last);
WM_operatortype_append(PARTICLE_OT_select_linked);
@@ -64,8 +64,6 @@ static void operatortypes_particle(void)
WM_operatortype_append(PARTICLE_OT_brush_edit);
WM_operatortype_append(PARTICLE_OT_brush_radial_control);
- WM_operatortype_append(PARTICLE_OT_specials_menu);
-
WM_operatortype_append(PARTICLE_OT_particle_edit_toggle);
WM_operatortype_append(PARTICLE_OT_edited_clear);
@@ -75,7 +73,7 @@ static void operatortypes_particle(void)
WM_operatortype_append(PARTICLE_OT_new);
WM_operatortype_append(PARTICLE_OT_new_target);
- WM_operatortype_append(PARTICLE_OT_remove_target);
+ WM_operatortype_append(PARTICLE_OT_target_remove);
WM_operatortype_append(PARTICLE_OT_target_move_up);
WM_operatortype_append(PARTICLE_OT_target_move_down);
WM_operatortype_append(PARTICLE_OT_connect_hair);
@@ -94,7 +92,7 @@ static void keymap_particle(wmKeyConfig *keyconf)
keymap= WM_keymap_find(keyconf, "Particle", 0, 0);
keymap->poll= PE_poll;
- WM_keymap_add_item(keymap, "PARTICLE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "PARTICLE_OT_select_all", AKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "PARTICLE_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "PARTICLE_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "PARTICLE_OT_select_linked", LKEY, KM_PRESS, 0, 0);
@@ -113,7 +111,7 @@ static void keymap_particle(wmKeyConfig *keyconf)
RNA_enum_set(WM_keymap_add_item(keymap, "PARTICLE_OT_brush_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE);
RNA_enum_set(WM_keymap_add_item(keymap, "PARTICLE_OT_brush_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH);
- WM_keymap_add_item(keymap, "PARTICLE_OT_specials_menu", WKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_particle_specials", WKEY, KM_PRESS, 0, 0);
ED_object_generic_keymap(keyconf, keymap, 1);
}
@@ -149,7 +147,7 @@ static void operatortypes_pointcache(void)
WM_operatortype_append(PTCACHE_OT_bake);
WM_operatortype_append(PTCACHE_OT_free_bake);
WM_operatortype_append(PTCACHE_OT_bake_from_cache);
- WM_operatortype_append(PTCACHE_OT_add_new);
+ WM_operatortype_append(PTCACHE_OT_add);
WM_operatortype_append(PTCACHE_OT_remove);
}
diff --git a/source/blender/editors/physics/physics_pointcache.c b/source/blender/editors/physics/physics_pointcache.c
index 26099a18966..0cd4c2e6ce8 100644
--- a/source/blender/editors/physics/physics_pointcache.c
+++ b/source/blender/editors/physics/physics_pointcache.c
@@ -80,9 +80,21 @@ static int ptcache_poll(bContext *C)
return (ptr.data && ptr.id.data);
}
+void bake_console_progress(void *arg, int nr)
+{
+ printf("\rbake: %3i%%", nr);
+ fflush(stdout);
+}
+
+void bake_console_progress_end(void *arg)
+{
+ printf("\n");
+}
+
static int ptcache_bake_all_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
+ wmWindow *win = CTX_wm_window(C);
PTCacheBaker baker;
@@ -94,8 +106,16 @@ static int ptcache_bake_all_exec(bContext *C, wmOperator *op)
baker.quick_step = 1;
baker.break_test = cache_break_test;
baker.break_data = NULL;
- baker.progressbar = (void (*)(void *, int))WM_timecursor;
- baker.progresscontext = CTX_wm_window(C);
+
+ if (win) {
+ baker.progressbar = (void (*)(void *, int))WM_timecursor;
+ baker.progressend = (void (*)(void *))WM_cursor_restore;
+ baker.progresscontext = win;
+ } else {
+ baker.progressbar = bake_console_progress;
+ baker.progressend = bake_console_progress_end;
+ baker.progresscontext = NULL;
+ }
BKE_ptcache_make_cache(&baker);
@@ -156,6 +176,7 @@ void PTCACHE_OT_free_bake_all(wmOperatorType *ot)
static int ptcache_bake_exec(bContext *C, wmOperator *op)
{
Scene *scene = CTX_data_scene(C);
+ wmWindow *win = CTX_wm_window(C);
PointerRNA ptr= CTX_data_pointer_get_type(C, "PointCache", &RNA_PointCache);
Object *ob= ptr.id.data;
PointCache *cache= ptr.data;
@@ -178,8 +199,17 @@ static int ptcache_bake_exec(bContext *C, wmOperator *op)
baker.quick_step = 1;
baker.break_test = cache_break_test;
baker.break_data = NULL;
- baker.progressbar = (void (*)(void *, int))WM_timecursor;
- baker.progresscontext = CTX_wm_window(C);
+
+ if (win) {
+ baker.progressbar = (void (*)(void *, int))WM_timecursor;
+ baker.progressend = (void (*)(void *))WM_cursor_restore;
+ baker.progresscontext = win;
+ } else {
+ printf("\n"); /* empty first line before console reports */
+ baker.progressbar = bake_console_progress;
+ baker.progressend = bake_console_progress_end;
+ baker.progresscontext = NULL;
+ }
BKE_ptcache_make_cache(&baker);
@@ -308,11 +338,11 @@ static int ptcache_remove_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void PTCACHE_OT_add_new(wmOperatorType *ot)
+void PTCACHE_OT_add(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Add new cache";
- ot->idname= "PTCACHE_OT_add_new";
+ ot->idname= "PTCACHE_OT_add";
/* api callbacks */
ot->exec= ptcache_add_new_exec;
diff --git a/source/blender/editors/render/SConscript b/source/blender/editors/render/SConscript
index 99818f180a1..f7aaff883f6 100644
--- a/source/blender/editors/render/SConscript
+++ b/source/blender/editors/render/SConscript
@@ -16,4 +16,12 @@ if env['OURPLATFORM'] == 'linux2':
if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'):
incs += ' ' + env['BF_PTHREADS_INC']
-env.BlenderLib ( 'bf_editors_render', sources, Split(incs), [], libtype=['core'], priority=[45] )
+
+if env['WITH_BF_QUICKTIME']:
+ incs += ' ../../quicktime'
+ env.Append(CFLAGS=['-DWITH_QUICKTIME'])
+
+if env['USE_QTKIT']:
+ env.Append(CFLAGS=['-DUSE_QTKIT'])
+
+env.BlenderLib ( 'bf_editors_render', sources, Split(incs), [], libtype=['core'], priority=[45])
diff --git a/source/blender/editors/render/render_ops.c b/source/blender/editors/render/render_ops.c
index 8c0c1b18fca..3e1643fab7b 100644
--- a/source/blender/editors/render/render_ops.c
+++ b/source/blender/editors/render/render_ops.c
@@ -34,6 +34,10 @@
#include "render_intern.h" // own include
+#if (defined(WITH_QUICKTIME) && !defined(USE_QTKIT))
+#include "quicktime_export.h"
+#endif
+
/***************************** render ***********************************/
void ED_operatortypes_render(void)
@@ -52,6 +56,10 @@ void ED_operatortypes_render(void)
WM_operatortype_append(SCENE_OT_render_layer_add);
WM_operatortype_append(SCENE_OT_render_layer_remove);
+#if (defined(WITH_QUICKTIME) && !defined(USE_QTKIT))
+ WM_operatortype_append(SCENE_OT_render_data_set_quicktime_codec);
+#endif
+
WM_operatortype_append(TEXTURE_OT_slot_move);
}
diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c
index 3c6ee8b672a..6689651d39d 100644
--- a/source/blender/editors/render/render_shading.c
+++ b/source/blender/editors/render/render_shading.c
@@ -446,7 +446,9 @@ static int material_slot_copy_exec(bContext *C, wmOperator *op)
CTX_DATA_BEGIN(C, Object*, ob_iter, selected_editable_objects) {
if(ob != ob_iter && give_matarar(ob_iter)) {
- assign_matarar(ob_iter, matar, ob->totcol);
+ if (ob->data != ob_iter->data)
+ assign_matarar(ob_iter, matar, ob->totcol);
+
if(ob_iter->totcol==ob->totcol) {
ob_iter->actcol= ob->actcol;
WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob_iter);
diff --git a/source/blender/editors/screen/SConscript b/source/blender/editors/screen/SConscript
index 820609d7d30..1b5a33e12be 100644
--- a/source/blender/editors/screen/SConscript
+++ b/source/blender/editors/screen/SConscript
@@ -22,4 +22,8 @@ if env['OURPLATFORM'] == 'linux2':
if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'):
incs += ' ' + env['BF_PTHREADS_INC']
+if env['OURPLATFORM'] == 'darwin':
+ if env['WITH_BF_OPENMP']:
+ defs += ' PARALLEL=1'
+
env.BlenderLib ( 'bf_editors_screen', sources, Split(incs), Split(defs), libtype=['core'], priority=[105] )
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index 08a05f4646a..d9d76e963a3 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -828,29 +828,40 @@ static void ed_default_handlers(wmWindowManager *wm, ListBase *handlers, int fla
// XXX it would be good to have boundbox checks for some of these...
if(flag & ED_KEYMAP_UI) {
+ /* user interface widgets */
UI_add_region_handlers(handlers);
}
if(flag & ED_KEYMAP_VIEW2D) {
+ /* 2d-viewport handling+manipulation */
wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "View2D", 0, 0);
WM_event_add_keymap_handler(handlers, keymap);
}
if(flag & ED_KEYMAP_MARKERS) {
+ /* time-markers */
wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Markers", 0, 0);
WM_event_add_keymap_handler(handlers, keymap);
// XXX need boundbox check urgently!!!
}
if(flag & ED_KEYMAP_ANIMATION) {
+ /* frame changing and timeline operators (for time spaces) */
wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Animation", 0, 0);
WM_event_add_keymap_handler(handlers, keymap);
}
if(flag & ED_KEYMAP_FRAMES) {
+ /* frame changing/jumping (for all spaces) */
wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Frames", 0, 0);
WM_event_add_keymap_handler(handlers, keymap);
}
if(flag & ED_KEYMAP_GPENCIL) {
+ /* grease pencil */
wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Grease Pencil", 0, 0);
WM_event_add_keymap_handler(handlers, keymap);
}
+ if(flag & ED_KEYMAP_HEADER) {
+ /* standard keymap for headers regions */
+ wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Header", 0, 0);
+ WM_event_add_keymap_handler(handlers, keymap);
+ }
}
@@ -1078,30 +1089,11 @@ void ED_area_newspace(bContext *C, ScrArea *sa, int type)
}
}
-void ED_area_prevspace(bContext *C)
+void ED_area_prevspace(bContext *C, ScrArea *sa)
{
- SpaceLink *sl= CTX_wm_space_data(C);
- ScrArea *sa= CTX_wm_area(C);
-
- /* cleanup */
-#if 0 // XXX needs to be space type specific
- if(sfile->spacetype==SPACE_FILE) {
- if(sfile->pupmenu) {
- MEM_freeN(sfile->pupmenu);
- sfile->pupmenu= NULL;
- }
- }
-#endif
+ SpaceLink *sl = (sa) ? sa->spacedata.first : CTX_wm_space_data(C);
if(sl->next) {
-
-#if 0 // XXX check whether this is still needed
- if (sfile->spacetype == SPACE_SCRIPT) {
- SpaceScript *sc = (SpaceScript *)sfile;
- if (sc->script) sc->script->flags &=~SCRIPT_FILESEL;
- }
-#endif
-
/* workaround for case of double prevspace, render window
with a file browser on top of it */
if(sl->next->spacetype == SPACE_FILE && sl->next->next)
@@ -1182,7 +1174,8 @@ int ED_area_header_standardbuttons(const bContext *C, uiBlock *block, int yco)
ScrArea *sa= CTX_wm_area(C);
int xco= 8;
- xco= ED_area_header_switchbutton(C, block, yco);
+ if (!sa->full)
+ xco= ED_area_header_switchbutton(C, block, yco);
uiBlockSetEmboss(block, UI_EMBOSSN);
@@ -1332,6 +1325,8 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex
/* only allow scrolling in vertical direction */
v2d->keepofs |= V2D_LOCKOFS_X|V2D_KEEPOFS_Y;
v2d->keepofs &= ~(V2D_LOCKOFS_Y|V2D_KEEPOFS_X);
+ v2d->scroll |= V2D_SCROLL_HORIZONTAL_HIDE;
+ v2d->scroll &= ~V2D_SCROLL_VERTICAL_HIDE;
// don't jump back when panels close or hide
if(!newcontext)
@@ -1346,6 +1341,8 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex
v2d->keepofs &= ~(V2D_LOCKOFS_X|V2D_LOCKOFS_Y|V2D_KEEPOFS_X|V2D_KEEPOFS_Y);
//v2d->keepofs |= V2D_LOCKOFS_Y|V2D_KEEPOFS_X;
//v2d->keepofs &= ~(V2D_LOCKOFS_X|V2D_KEEPOFS_Y);
+ v2d->scroll |= V2D_SCROLL_VERTICAL_HIDE;
+ v2d->scroll &= ~V2D_SCROLL_HORIZONTAL_HIDE;
// don't jump back when panels close or hide
if(!newcontext)
diff --git a/source/blender/editors/screen/glutil.c b/source/blender/editors/screen/glutil.c
index 742fab07bcc..752c6feb9af 100644
--- a/source/blender/editors/screen/glutil.c
+++ b/source/blender/editors/screen/glutil.c
@@ -439,10 +439,15 @@ void glaDrawPixelsTexScaled(float x, float y, int img_w, int img_h, int format,
glPixelStorei(GL_UNPACK_ROW_LENGTH, img_w);
glBindTexture(GL_TEXTURE_2D, texid);
- /* don't want nasty border artifacts */
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ /* don't want nasty border artifacts */
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+#ifdef __APPLE__
+ /* workaround for os x 10.5/10.6 driver bug: http://lists.apple.com/archives/Mac-opengl/2008/Jul/msg00117.html */
+ glPixelZoom(1.f, 1.f);
+#endif
+
for (subpart_y=0; subpart_y<nsubparts_y; subpart_y++) {
for (subpart_x=0; subpart_x<nsubparts_x; subpart_x++) {
int subpart_w= (subpart_x==nsubparts_x-1)?(img_w-subpart_x*tex_w):tex_w;
@@ -476,6 +481,11 @@ void glaDrawPixelsTexScaled(float x, float y, int img_w, int img_h, int format,
glBindTexture(GL_TEXTURE_2D, ltexid);
glPixelStorei(GL_UNPACK_ROW_LENGTH, lrowlength);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+
+#ifdef __APPLE__
+ /* workaround for os x 10.5/10.6 driver bug (above) */
+ glPixelZoom(xzoom, yzoom);
+#endif
}
void glaDrawPixelsTex(float x, float y, int img_w, int img_h, int format, void *rect)
diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c
index 1ddc19a5ec0..1cacf57e42a 100644
--- a/source/blender/editors/screen/screen_context.c
+++ b/source/blender/editors/screen/screen_context.c
@@ -64,7 +64,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
"scene", "selected_objects", "selected_bases",
"selected_editable_objects", "selected_editable_bases",
"visible_bones", "editable_bones", "selected_bones", "selected_editable_bones",
- "visible_pchans", "selected_pchans", "active_bone", "active_pchan",
+ "visible_pose_bones", "selected_pose_bones", "active_bone", "active_pose_bone",
"active_base", "active_object", "object", "edit_object",
"sculpt_object", "vertex_paint_object", "weight_paint_object",
"texture_paint_object", "particle_edit_object", NULL};
@@ -192,7 +192,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
return 1;
}
}
- else if(CTX_data_equals(member, "visible_pchans")) {
+ else if(CTX_data_equals(member, "visible_pose_bones")) {
bArmature *arm= (obact) ? obact->data : NULL;
bPoseChannel *pchan;
@@ -207,7 +207,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
return 1;
}
}
- else if(CTX_data_equals(member, "selected_pchans")) {
+ else if(CTX_data_equals(member, "selected_pose_bones")) {
bArmature *arm= (obact) ? obact->data : NULL;
bPoseChannel *pchan;
@@ -240,7 +240,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
}
}
}
- else if(CTX_data_equals(member, "active_pchan")) {
+ else if(CTX_data_equals(member, "active_pose_bone")) {
bPoseChannel *pchan;
pchan= get_active_posechannel(obact);
diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c
index 6b079d3981a..06e281905e4 100644
--- a/source/blender/editors/screen/screen_edit.c
+++ b/source/blender/editors/screen/screen_edit.c
@@ -1124,7 +1124,14 @@ void ED_screen_exit(bContext *C, wmWindow *window, bScreen *screen)
/* mark it available for use for other windows */
screen->winid= 0;
+ /* before deleting the temp screen or we get invalid access */
CTX_wm_window_set(C, prevwin);
+
+ /* if temp screen, delete it */
+ if(screen->full == SCREENTEMP) {
+ Main *bmain= CTX_data_main(C);
+ free_libblock(&bmain->screen, screen);
+ }
}
/* *********************************** */
@@ -1306,7 +1313,13 @@ void ED_screen_delete(bContext *C, bScreen *sc)
wmWindow *win= CTX_wm_window(C);
bScreen *newsc;
int delete= 1;
-
+
+ /* don't allow deleting temp fullscreens for now */
+ if (sc->full == SCREENFULL) {
+ return;
+ }
+
+
/* screen can only be in use by one window at a time, so as
long as we are able to find a screen that is unused, we
can safely assume ours is not in use anywhere an delete it */
@@ -1456,7 +1469,7 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa)
// default. So use the old headertype instead
area_copy_data(old, sa, 1); /* 1 = swap spacelist */
-
+ if (sa->flag & AREA_TEMP_INFO) sa->flag &= ~AREA_TEMP_INFO;
old->full= NULL;
/* animtimer back */
@@ -1471,16 +1484,19 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa)
}
else {
ScrArea *newa;
+ char newname[20];
oldscreen= win->screen;
- /* is there only 1 area? */
+ /* nothing wrong with having only 1 area, as far as I can see...
+ // is there only 1 area?
if(oldscreen->areabase.first==oldscreen->areabase.last)
return NULL;
+ */
oldscreen->full = SCREENFULL;
-
- sc= ED_screen_add(win, oldscreen->scene, "temp");
+ BLI_snprintf(newname, sizeof(newname), "%s-%s", oldscreen->id.name+2, "temp");
+ sc= ED_screen_add(win, oldscreen->scene, newname);
sc->full = SCREENFULL; // XXX
/* timer */
@@ -1490,7 +1506,7 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa)
/* returns the top small area */
newa= area_split(win, sc, (ScrArea *)sc->areabase.first, 'h', 0.99f);
ED_area_newspace(C, newa, SPACE_INFO);
-
+
/* use random area when we have no active one, e.g. when the
mouse is outside of the window and we open a file browser */
if(!sa)
@@ -1499,11 +1515,12 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa)
/* copy area */
newa= newa->prev;
area_copy_data(newa, sa, 1); /* 1 = swap spacelist */
+ sa->flag |= AREA_TEMP_INFO;
sa->full= oldscreen;
newa->full= oldscreen;
newa->next->full= oldscreen; // XXX
-
+
ED_screen_set(C, sc);
}
@@ -1518,29 +1535,71 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa)
int ED_screen_full_newspace(bContext *C, ScrArea *sa, int type)
{
wmWindow *win= CTX_wm_window(C);
+ bScreen *screen= CTX_wm_screen(C);
ScrArea *newsa= NULL;
- if(!sa || sa->full==0)
+ if(!sa || sa->full==0) {
newsa= ed_screen_fullarea(C, win, sa);
- if(!newsa)
- newsa= sa;
-
+ }
+
+ if(!newsa) {
+ if (sa->full) {
+ /* if this has been called from the temporary info header generated in
+ * temp fullscreen layouts, find the correct fullscreen area to change
+ * to create a new space inside */
+ for (newsa = screen->areabase.first; newsa; newsa=newsa->next) {
+ if (!(sa->flag & AREA_TEMP_INFO))
+ break;
+ }
+ } else
+ newsa= sa;
+ }
+
ED_area_newspace(C, newsa, type);
return 1;
}
-void ED_screen_full_prevspace(bContext *C)
+void ED_screen_full_prevspace(bContext *C, ScrArea *sa)
{
wmWindow *win= CTX_wm_window(C);
- ScrArea *sa= CTX_wm_area(C);
-
- ED_area_prevspace(C);
+
+ ED_area_prevspace(C, sa);
if(sa->full)
ed_screen_fullarea(C, win, sa);
}
+/* restore a screen / area back to default operation, after temp fullscreen modes */
+void ED_screen_full_restore(bContext *C, ScrArea *sa)
+{
+ wmWindow *win= CTX_wm_window(C);
+ SpaceLink *sl = sa->spacedata.first;
+
+ /* if fullscreen area has a secondary space (such as as file browser or fullscreen render
+ * overlaid on top of a existing setup) then return to the previous space */
+
+ if (sl->next) {
+ /* specific checks for space types */
+ if (sl->spacetype == SPACE_IMAGE) {
+ SpaceImage *sima= sa->spacedata.first;
+ if (sima->flag & SI_PREVSPACE)
+ sima->flag &= ~SI_PREVSPACE;
+ if (sima->flag & SI_FULLWINDOW) {
+ sima->flag &= ~SI_FULLWINDOW;
+ ED_screen_full_prevspace(C, sa);
+ }
+ } else if (sl->spacetype == SPACE_FILE) {
+ ED_screen_full_prevspace(C, sa);
+ } else
+ ed_screen_fullarea(C, win, sa);
+ }
+ /* otherwise just tile the area again */
+ else {
+ ed_screen_fullarea(C, win, sa);
+ }
+}
+
/* redraws: uses defines from stime->redraws
* enable: 1 - forward on, -1 - backwards on, 0 - off
*/
@@ -1556,10 +1615,11 @@ void ED_screen_animation_timer(bContext *C, int redraws, int sync, int enable)
screen->animtimer= NULL;
if(enable) {
- struct ScreenAnimData *sad= MEM_callocN(sizeof(ScreenAnimData), "ScreenAnimData");
+ ScreenAnimData *sad= MEM_callocN(sizeof(ScreenAnimData), "ScreenAnimData");
screen->animtimer= WM_event_add_timer(wm, win, TIMER0, (1.0/FPS));
sad->ar= CTX_wm_region(C);
+ sad->sfra = scene->r.cfra;
sad->redraws= redraws;
sad->flag |= (enable < 0)? ANIMPLAY_FLAG_REVERSE: 0;
sad->flag |= (sync == 0)? ANIMPLAY_FLAG_NO_SYNC: (sync == 1)? ANIMPLAY_FLAG_SYNC: 0;
@@ -1594,10 +1654,8 @@ static ARegion *time_top_left_3dwindow(bScreen *screen)
return aret;
}
-void ED_screen_animation_timer_update(bContext *C, int redraws)
+void ED_screen_animation_timer_update(bScreen *screen, int redraws)
{
- bScreen *screen= CTX_wm_screen(C);
-
if(screen && screen->animtimer) {
wmTimer *wt= screen->animtimer;
ScreenAnimData *sad= wt->customdata;
@@ -1613,13 +1671,42 @@ void ED_screen_animation_timer_update(bContext *C, int redraws)
void ED_update_for_newframe(const bContext *C, int mute)
{
bScreen *screen= CTX_wm_screen(C);
- Scene *scene= screen->scene;
+ Scene *scene= CTX_data_scene(C);
+#ifdef DURIAN_CAMERA_SWITCH
+ void *camera= scene_find_camera_switch(scene);
+ if(camera && scene->camera != camera) {
+
+ if(camera && scene->camera && (camera != scene->camera)) {
+ bScreen *sc;
+ /* are there cameras in the views that are not in the scene? */
+ for(sc= CTX_data_main(C)->screen.first; sc; sc= sc->id.next) {
+ ScrArea *sa= sc->areabase.first;
+ while(sa) {
+ SpaceLink *sl= sa->spacedata.first;
+ while(sl) {
+ if(sl->spacetype==SPACE_VIEW3D) {
+ View3D *v3d= (View3D*) sl;
+ if (v3d->scenelock) {
+ v3d->camera= camera;
+ }
+ }
+ sl= sl->next;
+ }
+ sa= sa->next;
+ }
+ }
+ }
+
+ scene->camera= camera;
+ }
+#endif
+
//extern void audiostream_scrub(unsigned int frame); /* seqaudio.c */
/* this function applies the changes too */
/* XXX future: do all windows */
- scene_update_for_newframe(scene, BKE_screen_visible_layers(screen)); /* BKE_scene.h */
+ scene_update_for_newframe(scene, BKE_screen_visible_layers(screen, scene)); /* BKE_scene.h */
//if ( (CFRA>1) && (!mute) && (scene->r.audio.flag & AUDIO_SCRUB))
// audiostream_scrub( CFRA );
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 18c3a1784a4..f03883d9130 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -97,6 +97,12 @@
#define KM_MODAL_STEP10 3
#define KM_MODAL_STEP10_OFF 4
+#if defined(__APPLE__) && (PARALLEL == 1) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 2)
+/* ************** libgomp (Apple gcc 4.2.1) TLS bug workaround *************** */
+#include <pthread.h>
+extern pthread_key_t gomp_tls_key;
+static void *thread_tls_data;
+#endif
/* ************** Exported Poll tests ********************** */
int ED_operator_regionactive(bContext *C)
@@ -181,10 +187,10 @@ int ED_operator_buttons_active(bContext *C)
int ED_operator_node_active(bContext *C)
{
SpaceNode *snode= CTX_wm_space_node(C);
-
+
if(snode && snode->edittree)
return 1;
-
+
return 0;
}
@@ -219,6 +225,12 @@ int ED_operator_object_active(bContext *C)
return NULL != CTX_data_active_object(C);
}
+int ED_operator_object_active_editable(bContext *C)
+{
+ Object *ob=CTX_data_active_object(C);
+ return ((ob != NULL) && !(ob->id.lib));
+}
+
int ED_operator_editmesh(bContext *C)
{
Object *obedit= CTX_data_edit_object(C);
@@ -227,6 +239,11 @@ int ED_operator_editmesh(bContext *C)
return 0;
}
+int ED_operator_editmesh_view3d(bContext *C)
+{
+ return ED_operator_editmesh(C) && ED_operator_view3d_active(C);
+}
+
int ED_operator_editarmature(bContext *C)
{
Object *obedit= CTX_data_edit_object(C);
@@ -242,7 +259,7 @@ int ED_operator_posemode(bContext *C)
if ((obact != obedit) && (obact) && (obact->type==OB_ARMATURE))
return (obact->mode & OB_MODE_POSE)!=0;
-
+
return 0;
}
@@ -251,12 +268,13 @@ int ED_operator_uvedit(bContext *C)
{
Object *obedit= CTX_data_edit_object(C);
BMEditMesh *em= NULL;
-
+
if(obedit && obedit->type==OB_MESH)
em= ((Mesh *)obedit->data)->edit_btmesh;
+
if (em && em->bm->totface && CustomData_has_layer(&em->bm->pdata, CD_MTEXPOLY))
return 1;
-
+
return 0;
}
@@ -264,13 +282,13 @@ int ED_operator_uvmap(bContext *C)
{
Object *obedit= CTX_data_edit_object(C);
BMEditMesh *em= NULL;
-
+
if(obedit && obedit->type==OB_MESH)
em= ((Mesh *)obedit->data)->edit_btmesh;
-
+
if(em && (em->bm->totface))
return 1;
-
+
return 0;
}
@@ -326,27 +344,27 @@ int ED_operator_editmball(bContext *C)
/* *************************** action zone operator ************************** */
/* operator state vars used:
- none
-
-functions:
-
- apply() set actionzone event
-
- exit() free customdata
-
-callbacks:
-
- exec() never used
-
- invoke() check if in zone
- add customdata, put mouseco and area in it
- add modal handler
-
- modal() accept modal events while doing it
- call apply() with gesture info, active window, nonactive window
- call exit() and remove handler when LMB confirm
-
-*/
+ none
+
+ functions:
+
+ apply() set actionzone event
+
+ exit() free customdata
+
+ callbacks:
+
+ exec() never used
+
+ invoke() check if in zone
+ add customdata, put mouseco and area in it
+ add modal handler
+
+ modal() accept modal events while doing it
+ call apply() with gesture info, active window, nonactive window
+ call exit() and remove handler when LMB confirm
+
+ */
typedef struct sActionzoneData {
ScrArea *sa1, *sa2;
@@ -380,7 +398,7 @@ static int actionzone_area_poll(bContext *C)
for(az= sa->actionzones.first; az; az= az->next)
if(BLI_in_rcti(&az->rect, x, y))
- return 1;
+ return 1;
}
return 0;
}
@@ -495,14 +513,14 @@ static int actionzone_modal(bContext *C, wmOperator *op, wmEvent *event)
return OPERATOR_FINISHED;
}
- break;
+ break;
case ESCKEY:
actionzone_exit(C, op);
return OPERATOR_CANCELLED;
case LEFTMOUSE:
actionzone_exit(C, op);
return OPERATOR_CANCELLED;
-
+
}
return OPERATOR_RUNNING_MODAL;
@@ -518,7 +536,7 @@ static void SCREEN_OT_actionzone(wmOperatorType *ot)
ot->invoke= actionzone_invoke;
ot->modal= actionzone_modal;
ot->poll= actionzone_area_poll;
-
+
ot->flag= OPTYPE_BLOCKING;
RNA_def_int(ot->srna, "modifier", 0, 0, 2, "modifier", "modifier state", 0, 2);
@@ -527,25 +545,25 @@ static void SCREEN_OT_actionzone(wmOperatorType *ot)
/* ************** swap area operator *********************************** */
/* operator state vars used:
- sa1 start area
- sa2 area to swap with
-
- functions:
-
- init() set custom data for operator, based on actionzone event custom data
-
- cancel() cancel the operator
-
- exit() cleanup, send notifier
-
- callbacks:
-
- invoke() gets called on shift+lmb drag in actionzone
- call init(), add handler
-
- modal() accept modal events while doing it
-
-*/
+ sa1 start area
+ sa2 area to swap with
+
+ functions:
+
+ init() set custom data for operator, based on actionzone event custom data
+
+ cancel() cancel the operator
+
+ exit() cleanup, send notifier
+
+ callbacks:
+
+ invoke() gets called on shift+lmb drag in actionzone
+ call init(), add handler
+
+ modal() accept modal events while doing it
+
+ */
typedef struct sAreaSwapData {
ScrArea *sa1, *sa2;
@@ -555,15 +573,15 @@ static int area_swap_init(bContext *C, wmOperator *op, wmEvent *event)
{
sAreaSwapData *sd= NULL;
sActionzoneData *sad= event->customdata;
-
+
if(sad==NULL || sad->sa1==NULL)
- return 0;
+ return 0;
sd= MEM_callocN(sizeof(sAreaSwapData), "sAreaSwapData");
sd->sa1= sad->sa1;
sd->sa2= sad->sa2;
op->customdata= sd;
-
+
return 1;
}
@@ -583,22 +601,22 @@ static int area_swap_cancel(bContext *C, wmOperator *op)
static int area_swap_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
-
+
if(!area_swap_init(C, op, event))
return OPERATOR_PASS_THROUGH;
-
+
/* add modal handler */
WM_cursor_modal(CTX_wm_window(C), BC_SWAPAREA_CURSOR);
WM_event_add_modal_handler(C, op);
return OPERATOR_RUNNING_MODAL;
-
+
}
static int area_swap_modal(bContext *C, wmOperator *op, wmEvent *event)
{
sActionzoneData *sad= op->customdata;
-
+
switch(event->type) {
case MOUSEMOVE:
/* second area, for join */
@@ -607,19 +625,19 @@ static int area_swap_modal(bContext *C, wmOperator *op, wmEvent *event)
case LEFTMOUSE: /* release LMB */
if(event->val==KM_RELEASE) {
if(!sad->sa2 || sad->sa1 == sad->sa2) {
-
+
return area_swap_cancel(C, op);
}
ED_area_swapspace(C, sad->sa1, sad->sa2);
-
+
area_swap_exit(C, op);
-
+
WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
-
+
return OPERATOR_FINISHED;
}
break;
-
+
case ESCKEY:
return area_swap_cancel(C, op);
}
@@ -631,11 +649,11 @@ static void SCREEN_OT_area_swap(wmOperatorType *ot)
ot->name= "Swap areas";
ot->description= "Swap selected areas screen positions.";
ot->idname= "SCREEN_OT_area_swap";
-
+
ot->invoke= area_swap_invoke;
ot->modal= area_swap_modal;
ot->poll= ED_operator_areaactive;
-
+
ot->flag= OPTYPE_BLOCKING;
}
@@ -656,10 +674,10 @@ static int area_dupli_invoke(bContext *C, wmOperator *op, wmEvent *event)
/* XXX hrmf! */
if(event->type==EVT_ACTIONZONE_AREA) {
sActionzoneData *sad= event->customdata;
-
+
if(sad==NULL)
return OPERATOR_PASS_THROUGH;
-
+
sa= sad->sa1;
}
@@ -684,7 +702,7 @@ static int area_dupli_invoke(bContext *C, wmOperator *op, wmEvent *event)
/* screen, areas init */
WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
-
+
if(event->type==EVT_ACTIONZONE_AREA)
actionzone_exit(C, op);
@@ -705,33 +723,33 @@ static void SCREEN_OT_area_dupli(wmOperatorType *ot)
/* ************** move area edge operator *********************************** */
/* operator state vars used:
- x, y mouse coord near edge
- delta movement of edge
-
- functions:
-
- init() set default property values, find edge based on mouse coords, test
- if the edge can be moved, select edges, calculate min and max movement
-
- apply() apply delta on selection
-
- exit() cleanup, send notifier
-
- cancel() cancel moving
-
- callbacks:
-
- exec() execute without any user interaction, based on properties
- call init(), apply(), exit()
-
- invoke() gets called on mouse click near edge
- call init(), add handler
-
- modal() accept modal events while doing it
- call apply() with delta motion
- call exit() and remove handler
-
-*/
+ x, y mouse coord near edge
+ delta movement of edge
+
+ functions:
+
+ init() set default property values, find edge based on mouse coords, test
+ if the edge can be moved, select edges, calculate min and max movement
+
+ apply() apply delta on selection
+
+ exit() cleanup, send notifier
+
+ cancel() cancel moving
+
+ callbacks:
+
+ exec() execute without any user interaction, based on properties
+ call init(), apply(), exit()
+
+ invoke() gets called on mouse click near edge
+ call init(), add handler
+
+ modal() accept modal events while doing it
+ call apply() with delta motion
+ call exit() and remove handler
+
+ */
typedef struct sAreaMoveData {
int bigger, smaller, origval, step;
@@ -776,25 +794,25 @@ static int area_move_init (bContext *C, wmOperator *op)
ScrEdge *actedge;
sAreaMoveData *md;
int x, y;
-
+
/* required properties */
x= RNA_int_get(op->ptr, "x");
y= RNA_int_get(op->ptr, "y");
-
+
/* setup */
actedge= screen_find_active_scredge(sc, x, y);
if(actedge==NULL) return 0;
-
+
md= MEM_callocN(sizeof(sAreaMoveData), "sAreaMoveData");
op->customdata= md;
-
+
md->dir= scredge_is_horizontal(actedge)?'h':'v';
if(md->dir=='h') md->origval= actedge->v1->vec.y;
else md->origval= actedge->v1->vec.x;
select_connected_scredge(sc, actedge);
/* now all vertices with 'flag==1' are the ones that can be moved. */
-
+
area_move_set_limits(sc, md->dir, &md->bigger, &md->smaller);
return 1;
@@ -818,7 +836,7 @@ static void area_move_apply_do(bContext *C, int origval, int delta, int dir, int
}
if((dir=='h') && v1->vec.y>0 && v1->vec.y<win->sizey-1) {
v1->vec.y= origval + delta;
-
+
v1->vec.y+= AREAGRID-1;
v1->vec.y-= (v1->vec.y % AREAGRID);
@@ -828,7 +846,7 @@ static void area_move_apply_do(bContext *C, int origval, int delta, int dir, int
}
}
}
-
+
WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
}
@@ -868,7 +886,7 @@ static int area_move_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
RNA_int_set(op->ptr, "x", event->x);
RNA_int_set(op->ptr, "y", event->y);
-
+
if(!area_move_init(C, op))
return OPERATOR_PASS_THROUGH;
@@ -880,11 +898,11 @@ static int area_move_invoke(bContext *C, wmOperator *op, wmEvent *event)
static int area_move_cancel(bContext *C, wmOperator *op)
{
-
+
RNA_int_set(op->ptr, "delta", 0);
area_move_apply(C, op);
area_move_exit(C, op);
-
+
return OPERATOR_CANCELLED;
}
@@ -893,7 +911,7 @@ static int area_move_modal(bContext *C, wmOperator *op, wmEvent *event)
{
sAreaMoveData *md= op->customdata;
int delta, x, y;
-
+
/* execute the events */
switch(event->type) {
case MOUSEMOVE:
@@ -904,7 +922,7 @@ static int area_move_modal(bContext *C, wmOperator *op, wmEvent *event)
delta= (md->dir == 'v')? event->x - x: event->y - y;
if(md->step) delta= delta - (delta % md->step);
RNA_int_set(op->ptr, "delta", delta);
-
+
area_move_apply(C, op);
break;
@@ -914,7 +932,7 @@ static int area_move_modal(bContext *C, wmOperator *op, wmEvent *event)
case KM_MODAL_APPLY:
area_move_exit(C, op);
return OPERATOR_FINISHED;
-
+
case KM_MODAL_CANCEL:
return area_move_cancel(C, op);
@@ -936,15 +954,15 @@ static void SCREEN_OT_area_move(wmOperatorType *ot)
ot->name= "Move area edges";
ot->description= "Move selected area edges.";
ot->idname= "SCREEN_OT_area_move";
-
+
ot->exec= area_move_exec;
ot->invoke= area_move_invoke;
ot->cancel= area_move_cancel;
ot->modal= area_move_modal;
ot->poll= ED_operator_screen_mainwinactive; /* when mouse is over area-edge */
-
+
ot->flag= OPTYPE_BLOCKING;
-
+
/* rna */
RNA_def_int(ot->srna, "x", 0, INT_MIN, INT_MAX, "X", "", INT_MIN, INT_MAX);
RNA_def_int(ot->srna, "y", 0, INT_MIN, INT_MAX, "Y", "", INT_MIN, INT_MAX);
@@ -954,56 +972,56 @@ static void SCREEN_OT_area_move(wmOperatorType *ot)
/* ************** split area operator *********************************** */
/*
-operator state vars:
- fac spit point
- dir direction 'v' or 'h'
-
-operator customdata:
- area pointer to (active) area
- x, y last used mouse pos
- (more, see below)
-
-functions:
-
- init() set default property values, find area based on context
-
- apply() split area based on state vars
-
- exit() cleanup, send notifier
-
- cancel() remove duplicated area
-
-callbacks:
-
- exec() execute without any user interaction, based on state vars
- call init(), apply(), exit()
-
- invoke() gets called on mouse click in action-widget
- call init(), add modal handler
- call apply() with initial motion
-
- modal() accept modal events while doing it
- call move-areas code with delta motion
- call exit() or cancel() and remove handler
-
-*/
+ operator state vars:
+ fac spit point
+ dir direction 'v' or 'h'
+
+ operator customdata:
+ area pointer to (active) area
+ x, y last used mouse pos
+ (more, see below)
+
+ functions:
+
+ init() set default property values, find area based on context
+
+ apply() split area based on state vars
+
+ exit() cleanup, send notifier
+
+ cancel() remove duplicated area
+
+ callbacks:
+
+ exec() execute without any user interaction, based on state vars
+ call init(), apply(), exit()
+
+ invoke() gets called on mouse click in action-widget
+ call init(), add modal handler
+ call apply() with initial motion
+
+ modal() accept modal events while doing it
+ call move-areas code with delta motion
+ call exit() or cancel() and remove handler
+
+ */
#define SPLIT_STARTED 1
#define SPLIT_PROGRESS 2
typedef struct sAreaSplitData
-{
- int x, y; /* last used mouse position */
-
- int origval; /* for move areas */
- int bigger, smaller; /* constraints for moving new edge */
- int delta; /* delta move edge */
- int origmin, origsize; /* to calculate fac, for property storage */
-
- ScrEdge *nedge; /* new edge */
- ScrArea *sarea; /* start area */
- ScrArea *narea; /* new area */
-} sAreaSplitData;
+ {
+ int x, y; /* last used mouse position */
+
+ int origval; /* for move areas */
+ int bigger, smaller; /* constraints for moving new edge */
+ int delta; /* delta move edge */
+ int origmin, origsize; /* to calculate fac, for property storage */
+
+ ScrEdge *nedge; /* new edge */
+ ScrArea *sarea; /* start area */
+ ScrArea *narea; /* new area */
+ } sAreaSplitData;
/* generic init, no UI stuff here */
static int area_split_init(bContext *C, wmOperator *op)
@@ -1021,7 +1039,7 @@ static int area_split_init(bContext *C, wmOperator *op)
/* minimal size */
if(dir=='v' && sa->winx < 2*AREAMINX) return 0;
if(dir=='h' && sa->winy < 2*AREAMINY) return 0;
-
+
/* custom data */
sd= (sAreaSplitData*)MEM_callocN(sizeof (sAreaSplitData), "op_area_split");
op->customdata= sd;
@@ -1058,7 +1076,7 @@ static ScrEdge *area_findsharededge(bScreen *screen, ScrArea *sa, ScrArea *sb)
else if(sav1==sbv2 && sav4==sbv3) { /* sa on top of sb = S*/
return screen_findedge(screen, sav1, sav4);
}
-
+
return NULL;
}
@@ -1073,24 +1091,24 @@ static int area_split_apply(bContext *C, wmOperator *op)
fac= RNA_float_get(op->ptr, "factor");
dir= RNA_enum_get(op->ptr, "direction");
-
+
sd->narea= area_split(CTX_wm_window(C), sc, sd->sarea, dir, fac);
if(sd->narea) {
ScrVert *sv;
sd->nedge= area_findsharededge(sc, sd->sarea, sd->narea);
-
+
/* select newly created edge, prepare for moving edge */
for(sv= sc->vertbase.first; sv; sv= sv->next)
sv->flag = 0;
sd->nedge->v1->flag= 1;
sd->nedge->v2->flag= 1;
-
+
if(dir=='h') sd->origval= sd->nedge->v1->vec.y;
else sd->origval= sd->nedge->v1->vec.x;
-
+
WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
return 1;
@@ -1107,7 +1125,7 @@ static void area_split_exit(bContext *C, wmOperator *op)
}
WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
-
+
/* this makes sure aligned edges will result in aligned grabbing */
removedouble_scrverts(CTX_wm_screen(C));
removedouble_scredges(CTX_wm_screen(C));
@@ -1122,7 +1140,7 @@ static int area_split_invoke(bContext *C, wmOperator *op, wmEvent *event)
if(event->type==EVT_ACTIONZONE_AREA) {
sActionzoneData *sad= event->customdata;
int dir;
-
+
if(sad->modifier>0) {
return OPERATOR_PASS_THROUGH;
}
@@ -1149,7 +1167,7 @@ static int area_split_invoke(bContext *C, wmOperator *op, wmEvent *event)
RNA_float_set(op->ptr, "factor", ((float)(event->y - sad->sa1->v1->vec.y)) / (float)sad->sa1->winy);
}
RNA_enum_set(op->ptr, "direction", dir);
-
+
/* general init, also non-UI case, adds customdata, sets area and defaults */
if(!area_split_init(C, op))
return OPERATOR_PASS_THROUGH;
@@ -1195,7 +1213,7 @@ static int area_split_exec(bContext *C, wmOperator *op)
static int area_split_cancel(bContext *C, wmOperator *op)
{
sAreaSplitData *sd= (sAreaSplitData *)op->customdata;
-
+
if (screen_area_join(C, CTX_wm_screen(C), sd->sarea, sd->narea)) {
if (CTX_wm_area(C) == sd->narea) {
CTX_wm_area_set(C, NULL);
@@ -1204,7 +1222,7 @@ static int area_split_cancel(bContext *C, wmOperator *op)
sd->narea = NULL;
}
area_split_exit(C, op);
-
+
return OPERATOR_CANCELLED;
}
@@ -1213,7 +1231,7 @@ static int area_split_modal(bContext *C, wmOperator *op, wmEvent *event)
sAreaSplitData *sd= (sAreaSplitData *)op->customdata;
float fac;
int dir;
-
+
/* execute the events */
switch(event->type) {
case MOUSEMOVE:
@@ -1243,9 +1261,9 @@ static int area_split_modal(bContext *C, wmOperator *op, wmEvent *event)
}
static EnumPropertyItem prop_direction_items[] = {
- {'h', "HORIZONTAL", 0, "Horizontal", ""},
- {'v', "VERTICAL", 0, "Vertical", ""},
- {0, NULL, 0, NULL, NULL}};
+{'h', "HORIZONTAL", 0, "Horizontal", ""},
+{'v', "VERTICAL", 0, "Vertical", ""},
+{0, NULL, 0, NULL, NULL}};
static void SCREEN_OT_area_split(wmOperatorType *ot)
{
@@ -1275,14 +1293,51 @@ typedef struct RegionMoveData {
ScrArea *sa;
int bigger, smaller, origval;
int origx, origy;
+ int maxsize;
char edge;
} RegionMoveData;
+
+static int area_max_regionsize(ScrArea *sa, ARegion *scalear, char edge)
+{
+ ARegion *ar;
+ int dist;
+
+ if(edge=='l' || edge=='r') {
+ dist = sa->totrct.xmax - sa->totrct.xmin;
+ } else { /* t, b */
+ dist = sa->totrct.ymax - sa->totrct.ymin;
+ }
+
+ /* subtractwidth of regions on opposite side
+ * prevents dragging regions into other opposite regions */
+ for (ar=sa->regionbase.first; ar; ar=ar->next)
+ {
+ if (scalear->alignment == RGN_ALIGN_TOP && ar->alignment == RGN_ALIGN_BOTTOM)
+ dist -= ar->winy;
+ else if (scalear->alignment == RGN_ALIGN_BOTTOM && ar->alignment == RGN_ALIGN_TOP)
+ dist -= ar->winy;
+ else if (scalear->alignment == RGN_ALIGN_LEFT && ar->alignment == RGN_ALIGN_RIGHT)
+ dist -= ar->winx;
+ else if (scalear->alignment == RGN_ALIGN_RIGHT && ar->alignment == RGN_ALIGN_LEFT)
+ dist -= ar->winx;
+ }
+
+ return dist;
+}
+
static int region_scale_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
sActionzoneData *sad= event->customdata;
- AZone *az= sad->az;
+ AZone *az;
+
+ if(event->type!=EVT_ACTIONZONE_REGION) {
+ BKE_report(op->reports, RPT_ERROR, "Can only scale region size from an action zone");
+ return OPERATOR_CANCELLED;
+ }
+
+ az = sad->az;
if(az->ar) {
RegionMoveData *rmd= MEM_callocN(sizeof(RegionMoveData), "RegionMoveData");
@@ -1295,10 +1350,13 @@ static int region_scale_invoke(bContext *C, wmOperator *op, wmEvent *event)
rmd->edge= az->edge;
rmd->origx= event->x;
rmd->origy= event->y;
- if(rmd->edge=='l' || rmd->edge=='r')
+ rmd->maxsize = area_max_regionsize(rmd->sa, rmd->ar, rmd->edge);
+ if(rmd->edge=='l' || rmd->edge=='r') {
rmd->origval= rmd->ar->type->minsizex;
- else
+ } else {
rmd->origval= rmd->ar->type->minsizey;
+ }
+ CLAMP(rmd->maxsize, 0, 1000);
/* add temp handler */
WM_event_add_modal_handler(C, op);
@@ -1321,8 +1379,10 @@ static int region_scale_modal(bContext *C, wmOperator *op, wmEvent *event)
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);
+ CLAMP(rmd->ar->type->minsizex, 0, rmd->maxsize);
+
if(rmd->ar->type->minsizex < 24) {
rmd->ar->type->minsizex= rmd->origval;
if(!(rmd->ar->flag & RGN_FLAG_HIDDEN))
@@ -1334,8 +1394,10 @@ static int region_scale_modal(bContext *C, wmOperator *op, wmEvent *event)
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);
+ CLAMP(rmd->ar->type->minsizey, 0, rmd->maxsize);
+
if(rmd->ar->type->minsizey < 24) {
rmd->ar->type->minsizey= rmd->origval;
if(!(rmd->ar->flag & RGN_FLAG_HIDDEN))
@@ -1346,7 +1408,7 @@ static int region_scale_modal(bContext *C, wmOperator *op, wmEvent *event)
}
WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
-
+
break;
case LEFTMOUSE:
@@ -1360,7 +1422,7 @@ static int region_scale_modal(bContext *C, wmOperator *op, wmEvent *event)
}
MEM_freeN(op->customdata);
op->customdata = NULL;
-
+
return OPERATOR_FINISHED;
}
break;
@@ -1395,13 +1457,13 @@ static void SCREEN_OT_region_scale(wmOperatorType *ot)
static int frame_offset_exec(bContext *C, wmOperator *op)
{
int delta;
-
+
delta = RNA_int_get(op->ptr, "delta");
-
+
CTX_data_scene(C)->r.cfra += delta;
-
+
WM_event_add_notifier(C, NC_SCENE|ND_FRAME, CTX_data_scene(C));
-
+
return OPERATOR_FINISHED;
}
@@ -1409,12 +1471,12 @@ static void SCREEN_OT_frame_offset(wmOperatorType *ot)
{
ot->name = "Frame Offset";
ot->idname = "SCREEN_OT_frame_offset";
-
+
ot->exec= frame_offset_exec;
-
+
ot->poll= ED_operator_screenactive;
ot->flag= 0;
-
+
/* rna */
RNA_def_int(ot->srna, "delta", 0, INT_MIN, INT_MAX, "Delta", "", INT_MIN, INT_MAX);
}
@@ -1429,9 +1491,9 @@ static int frame_jump_exec(bContext *C, wmOperator *op)
CFRA= PEFRA;
else
CFRA= PSFRA;
-
+
WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
-
+
return OPERATOR_FINISHED;
}
@@ -1440,12 +1502,12 @@ static void SCREEN_OT_frame_jump(wmOperatorType *ot)
ot->name = "Jump to Endpoint";
ot->description= "Jump to first/last frame in frame range.";
ot->idname = "SCREEN_OT_frame_jump";
-
+
ot->exec= frame_jump_exec;
-
+
ot->poll= ED_operator_screenactive;
ot->flag= 0;
-
+
/* rna */
RNA_def_boolean(ot->srna, "end", 0, "Last Frame", "Jump to the last frame of the frame range.");
}
@@ -1475,7 +1537,7 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op)
scene_to_keylist(NULL, scene, &keys, NULL);
if (ob && ob->adt)
ob_to_keylist(NULL, ob, &keys, NULL);
-
+
/* build linked-list for searching */
BLI_dlrbTree_linkedlist_sync(&keys);
@@ -1495,7 +1557,7 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op)
BLI_dlrbTree_free(&keys);
WM_event_add_notifier(C, NC_SCENE|ND_FRAME, CTX_data_scene(C));
-
+
return OPERATOR_FINISHED;
}
@@ -1504,12 +1566,12 @@ static void SCREEN_OT_keyframe_jump(wmOperatorType *ot)
ot->name = "Jump to Keyframe";
ot->description= "Jump to previous/next keyframe.";
ot->idname = "SCREEN_OT_keyframe_jump";
-
+
ot->exec= keyframe_jump_exec;
-
+
ot->poll= ED_operator_screenactive;
ot->flag= 0;
-
+
/* rna */
RNA_def_boolean(ot->srna, "next", 1, "Next Keyframe", "");
}
@@ -1525,9 +1587,9 @@ static int screen_set_exec(bContext *C, wmOperator *op)
int tot= BLI_countlist(&CTX_data_main(C)->screen);
int delta= RNA_int_get(op->ptr, "delta");
- /* this screen is 'fake', solve later XXX */
+ /* return to previous state before switching screens */
if(sa && sa->full)
- return OPERATOR_CANCELLED;
+ ED_screen_full_restore(C, sa);
if(delta==1) {
while(tot--) {
@@ -1588,7 +1650,7 @@ static void SCREEN_OT_screen_full_area(wmOperatorType *ot)
ot->exec= screen_full_area_exec;
ot->poll= ED_operator_areaactive;
ot->flag= 0;
-
+
}
@@ -1596,40 +1658,40 @@ static void SCREEN_OT_screen_full_area(wmOperatorType *ot)
/* ************** join area operator ********************************************** */
/* operator state vars used:
- x1, y1 mouse coord in first area, which will disappear
- x2, y2 mouse coord in 2nd area, which will become joined
-
-functions:
-
- init() find edge based on state vars
- test if the edge divides two areas,
- store active and nonactive area,
-
- apply() do the actual join
-
- exit() cleanup, send notifier
-
-callbacks:
-
- exec() calls init, apply, exit
-
- invoke() sets mouse coords in x,y
- call init()
- add modal handler
-
- modal() accept modal events while doing it
- call apply() with active window and nonactive window
- call exit() and remove handler when LMB confirm
-
-*/
+ x1, y1 mouse coord in first area, which will disappear
+ x2, y2 mouse coord in 2nd area, which will become joined
+
+ functions:
+
+ init() find edge based on state vars
+ test if the edge divides two areas,
+ store active and nonactive area,
+
+ apply() do the actual join
+
+ exit() cleanup, send notifier
+
+ callbacks:
+
+ exec() calls init, apply, exit
+
+ invoke() sets mouse coords in x,y
+ call init()
+ add modal handler
+
+ modal() accept modal events while doing it
+ call apply() with active window and nonactive window
+ call exit() and remove handler when LMB confirm
+
+ */
typedef struct sAreaJoinData
-{
- ScrArea *sa1; /* first area to be considered */
- ScrArea *sa2; /* second area to be considered */
- ScrArea *scr; /* designed for removal */
-
-} sAreaJoinData;
+ {
+ ScrArea *sa1; /* first area to be considered */
+ ScrArea *sa2; /* second area to be considered */
+ ScrArea *scr; /* designed for removal */
+
+ } sAreaJoinData;
/* validate selection inside screen, set variables OK */
@@ -1641,7 +1703,7 @@ static int area_join_init(bContext *C, wmOperator *op)
sAreaJoinData* jd= NULL;
int x1, y1;
int x2, y2;
-
+
/* required properties, make negative to get return 0 if not set by caller */
x1= RNA_int_get(op->ptr, "x1");
y1= RNA_int_get(op->ptr, "y1");
@@ -1652,9 +1714,9 @@ static int area_join_init(bContext *C, wmOperator *op)
sa2 = screen_areahascursor(CTX_wm_screen(C), x2, y2);
if(sa1==NULL || sa2==NULL || sa1==sa2)
return 0;
-
+
jd = (sAreaJoinData*)MEM_callocN(sizeof (sAreaJoinData), "op_area_join");
-
+
jd->sa1 = sa1;
jd->sa1->flag |= AREA_FLAG_DRAWJOINFROM;
jd->sa2 = sa2;
@@ -1670,7 +1732,7 @@ static int area_join_apply(bContext *C, wmOperator *op)
{
sAreaJoinData *jd = (sAreaJoinData *)op->customdata;
if (!jd) return 0;
-
+
if(!screen_area_join(C, CTX_wm_screen(C), jd->sa1, jd->sa2)){
return 0;
}
@@ -1678,7 +1740,7 @@ static int area_join_apply(bContext *C, wmOperator *op)
CTX_wm_area_set(C, NULL);
CTX_wm_region_set(C, NULL);
}
-
+
return 1;
}
@@ -1689,7 +1751,7 @@ static void area_join_exit(bContext *C, wmOperator *op)
MEM_freeN(op->customdata);
op->customdata = NULL;
}
-
+
/* this makes sure aligned edges will result in aligned grabbing */
removedouble_scredges(CTX_wm_screen(C));
removenotused_scredges(CTX_wm_screen(C));
@@ -1703,17 +1765,17 @@ static int area_join_exec(bContext *C, wmOperator *op)
area_join_apply(C, op);
area_join_exit(C, op);
-
+
return OPERATOR_FINISHED;
}
/* interaction callback */
static int area_join_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
-
+
if(event->type==EVT_ACTIONZONE_AREA) {
sActionzoneData *sad= event->customdata;
-
+
if(sad->modifier>0) {
return OPERATOR_PASS_THROUGH;
}
@@ -1731,13 +1793,13 @@ static int area_join_invoke(bContext *C, wmOperator *op, wmEvent *event)
RNA_int_set(op->ptr, "y1", sad->y);
RNA_int_set(op->ptr, "x2", event->x);
RNA_int_set(op->ptr, "y2", event->y);
-
+
if(!area_join_init(C, op))
return OPERATOR_PASS_THROUGH;
-
+
/* add temp handler */
WM_event_add_modal_handler(C, op);
-
+
return OPERATOR_RUNNING_MODAL;
}
@@ -1747,7 +1809,7 @@ static int area_join_invoke(bContext *C, wmOperator *op, wmEvent *event)
static int area_join_cancel(bContext *C, wmOperator *op)
{
sAreaJoinData *jd = (sAreaJoinData *)op->customdata;
-
+
if (jd->sa1) {
jd->sa1->flag &= ~AREA_FLAG_DRAWJOINFROM;
jd->sa1->flag &= ~AREA_FLAG_DRAWJOINTO;
@@ -1756,11 +1818,11 @@ static int area_join_cancel(bContext *C, wmOperator *op)
jd->sa2->flag &= ~AREA_FLAG_DRAWJOINFROM;
jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO;
}
-
+
WM_event_add_notifier(C, NC_WINDOW, NULL);
area_join_exit(C, op);
-
+
return OPERATOR_CANCELLED;
}
@@ -1774,66 +1836,66 @@ static int area_join_modal(bContext *C, wmOperator *op, wmEvent *event)
switch(event->type) {
case MOUSEMOVE:
- {
- ScrArea *sa = screen_areahascursor(sc, event->x, event->y);
- int dir;
-
- if (sa) {
- if (jd->sa1 != sa) {
- dir = area_getorientation(sc, jd->sa1, sa);
- if (dir >= 0) {
- if (jd->sa2) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO;
- jd->sa2 = sa;
- jd->sa2->flag |= AREA_FLAG_DRAWJOINTO;
- }
- else {
- /* we are not bordering on the previously selected area
- we check if area has common border with the one marked for removal
- in this case we can swap areas.
- */
- dir = area_getorientation(sc, sa, jd->sa2);
- if (dir >= 0) {
- if (jd->sa1) jd->sa1->flag &= ~AREA_FLAG_DRAWJOINFROM;
- if (jd->sa2) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO;
- jd->sa1 = jd->sa2;
- jd->sa2 = sa;
- if (jd->sa1) jd->sa1->flag |= AREA_FLAG_DRAWJOINFROM;
- if (jd->sa2) jd->sa2->flag |= AREA_FLAG_DRAWJOINTO;
- }
- else {
- if (jd->sa2) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO;
- jd->sa2 = NULL;
- }
- }
- WM_event_add_notifier(C, NC_WINDOW, NULL);
+ {
+ ScrArea *sa = screen_areahascursor(sc, event->x, event->y);
+ int dir;
+
+ if (sa) {
+ if (jd->sa1 != sa) {
+ dir = area_getorientation(sc, jd->sa1, sa);
+ if (dir >= 0) {
+ if (jd->sa2) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO;
+ jd->sa2 = sa;
+ jd->sa2->flag |= AREA_FLAG_DRAWJOINTO;
}
else {
- /* we are back in the area previously selected for keeping
- * we swap the areas if possible to allow user to choose */
- if (jd->sa2 != NULL) {
+ /* we are not bordering on the previously selected area
+ we check if area has common border with the one marked for removal
+ in this case we can swap areas.
+ */
+ dir = area_getorientation(sc, sa, jd->sa2);
+ if (dir >= 0) {
if (jd->sa1) jd->sa1->flag &= ~AREA_FLAG_DRAWJOINFROM;
if (jd->sa2) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO;
jd->sa1 = jd->sa2;
jd->sa2 = sa;
if (jd->sa1) jd->sa1->flag |= AREA_FLAG_DRAWJOINFROM;
if (jd->sa2) jd->sa2->flag |= AREA_FLAG_DRAWJOINTO;
- dir = area_getorientation(sc, jd->sa1, jd->sa2);
- if (dir < 0) {
- printf("oops, didn't expect that!\n");
- }
}
else {
- dir = area_getorientation(sc, jd->sa1, sa);
- if (dir >= 0) {
- if (jd->sa2) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO;
- jd->sa2 = sa;
- jd->sa2->flag |= AREA_FLAG_DRAWJOINTO;
- }
+ if (jd->sa2) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO;
+ jd->sa2 = NULL;
+ }
+ }
+ WM_event_add_notifier(C, NC_WINDOW, NULL);
+ }
+ else {
+ /* we are back in the area previously selected for keeping
+ * we swap the areas if possible to allow user to choose */
+ if (jd->sa2 != NULL) {
+ if (jd->sa1) jd->sa1->flag &= ~AREA_FLAG_DRAWJOINFROM;
+ if (jd->sa2) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO;
+ jd->sa1 = jd->sa2;
+ jd->sa2 = sa;
+ if (jd->sa1) jd->sa1->flag |= AREA_FLAG_DRAWJOINFROM;
+ if (jd->sa2) jd->sa2->flag |= AREA_FLAG_DRAWJOINTO;
+ dir = area_getorientation(sc, jd->sa1, jd->sa2);
+ if (dir < 0) {
+ printf("oops, didn't expect that!\n");
+ }
+ }
+ else {
+ dir = area_getorientation(sc, jd->sa1, sa);
+ if (dir >= 0) {
+ if (jd->sa2) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO;
+ jd->sa2 = sa;
+ jd->sa2->flag |= AREA_FLAG_DRAWJOINTO;
}
- WM_event_add_notifier(C, NC_WINDOW, NULL);
}
+ WM_event_add_notifier(C, NC_WINDOW, NULL);
}
}
+ }
break;
case LEFTMOUSE:
if(event->val==KM_RELEASE) {
@@ -1844,10 +1906,11 @@ static int area_join_modal(bContext *C, wmOperator *op, wmEvent *event)
}
break;
+ case RIGHTMOUSE:
case ESCKEY:
return area_join_cancel(C, op);
}
-
+
return OPERATOR_RUNNING_MODAL;
}
@@ -1864,9 +1927,9 @@ static void SCREEN_OT_area_join(wmOperatorType *ot)
ot->invoke= area_join_invoke;
ot->modal= area_join_modal;
ot->poll= ED_operator_areaactive;
-
+
ot->flag= OPTYPE_BLOCKING;
-
+
/* rna */
RNA_def_int(ot->srna, "x1", -100, INT_MIN, INT_MAX, "X 1", "", INT_MIN, INT_MAX);
RNA_def_int(ot->srna, "y1", -100, INT_MIN, INT_MAX, "Y 1", "", INT_MIN, INT_MAX);
@@ -1914,10 +1977,10 @@ static int repeat_history_invoke(bContext *C, wmOperator *op, wmEvent *event)
pup= uiPupMenuBegin(C, op->type->name, 0);
layout= uiPupMenuLayout(pup);
-
+
for (i=items-1, lastop= wm->operators.last; lastop; lastop= lastop->prev, i--)
uiItemIntO(layout, lastop->type->name, 0, op->type->idname, "index", i);
-
+
uiPupMenuEnd(C, pup);
return OPERATOR_CANCELLED;
@@ -1935,7 +1998,7 @@ static int repeat_history_exec(bContext *C, wmOperator *op)
WM_operator_repeat(C, op);
}
-
+
return OPERATOR_FINISHED;
}
@@ -1961,7 +2024,7 @@ static int redo_last_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
wmWindowManager *wm= CTX_wm_manager(C);
wmOperator *lastop;
-
+
/* only for operators that are registered and did an undo push */
for(lastop= wm->operators.last; lastop; lastop= lastop->prev)
if((lastop->type->flag & OPTYPE_REGISTER) && (lastop->type->flag & OPTYPE_UNDO))
@@ -1969,7 +2032,7 @@ static int redo_last_invoke(bContext *C, wmOperator *op, wmEvent *event)
if(lastop)
WM_operator_redo_popup(C, lastop);
-
+
return OPERATOR_CANCELLED;
}
@@ -1986,56 +2049,10 @@ static void SCREEN_OT_redo_last(wmOperatorType *ot)
ot->poll= ED_operator_screenactive;
}
-/* ************** region split operator ***************************** */
-
-/* insert a region in the area region list */
-static int region_split_exec(bContext *C, wmOperator *op)
-{
- ARegion *ar= CTX_wm_region(C);
-
- if(ar->regiontype==RGN_TYPE_HEADER)
- BKE_report(op->reports, RPT_ERROR, "Cannot split header");
- else if(ar->alignment==RGN_ALIGN_QSPLIT)
- BKE_report(op->reports, RPT_ERROR, "Cannot split further");
- else {
- ScrArea *sa= CTX_wm_area(C);
- ARegion *newar= BKE_area_region_copy(sa->type, ar);
- int dir= RNA_enum_get(op->ptr, "type");
-
- BLI_insertlinkafter(&sa->regionbase, ar, newar);
-
- newar->alignment= ar->alignment;
-
- if(dir=='h')
- ar->alignment= RGN_ALIGN_HSPLIT;
- else
- ar->alignment= RGN_ALIGN_VSPLIT;
-
- WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
- }
-
- return OPERATOR_FINISHED;
-}
-
-static void SCREEN_OT_region_split(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Split Region";
- ot->description= "Split area by directional position.";
- ot->idname= "SCREEN_OT_region_split";
-
- /* api callbacks */
- ot->invoke= WM_menu_invoke;
- ot->exec= region_split_exec;
- ot->poll= ED_operator_areaactive;
-
- RNA_def_enum(ot->srna, "type", prop_direction_items, 'h', "Direction", "");
-}
-
/* ************** region four-split operator ***************************** */
/* insert a region in the area region list */
-static int region_foursplit_exec(bContext *C, wmOperator *op)
+static int region_quadview_exec(bContext *C, wmOperator *op)
{
ARegion *ar= CTX_wm_region(C);
@@ -2107,16 +2124,16 @@ static int region_foursplit_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-static void SCREEN_OT_region_foursplit(wmOperatorType *ot)
+static void SCREEN_OT_region_quadview(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Toggle Quad View";
ot->description= "Split selected area into camera, front, right & top views.";
- ot->idname= "SCREEN_OT_region_foursplit";
+ ot->idname= "SCREEN_OT_region_quadview";
/* api callbacks */
-// ot->invoke= WM_operator_confirm;
- ot->exec= region_foursplit_exec;
+ // ot->invoke= WM_operator_confirm;
+ ot->exec= region_quadview_exec;
ot->poll= ED_operator_areaactive;
ot->flag= 0;
}
@@ -2129,7 +2146,10 @@ static void SCREEN_OT_region_foursplit(wmOperatorType *ot)
static int region_flip_exec(bContext *C, wmOperator *op)
{
ARegion *ar= CTX_wm_region(C);
-
+
+ if (!ar)
+ return OPERATOR_CANCELLED;
+
if(ar->alignment==RGN_ALIGN_TOP)
ar->alignment= RGN_ALIGN_BOTTOM;
else if(ar->alignment==RGN_ALIGN_BOTTOM)
@@ -2140,7 +2160,6 @@ static int region_flip_exec(bContext *C, wmOperator *op)
ar->alignment= RGN_ALIGN_LEFT;
WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
- printf("executed region flip\n");
return OPERATOR_FINISHED;
}
@@ -2157,7 +2176,104 @@ static void SCREEN_OT_region_flip(wmOperatorType *ot)
ot->poll= ED_operator_areaactive;
ot->flag= 0;
+}
+/* ************** header flip operator ***************************** */
+
+/* flip a header region alignment */
+static int header_flip_exec(bContext *C, wmOperator *op)
+{
+ ARegion *ar= CTX_wm_region(C);
+
+ /* find the header region
+ * - try context first, but upon failing, search all regions in area...
+ */
+ if((ar == NULL) || (ar->regiontype != RGN_TYPE_HEADER)) {
+ ScrArea *sa= CTX_wm_area(C);
+
+ /* loop over all regions until a matching one is found */
+ for (ar= sa->regionbase.first; ar; ar= ar->next) {
+ if(ar->regiontype == RGN_TYPE_HEADER)
+ break;
+ }
+
+ /* don't do anything if no region */
+ if(ar == NULL)
+ return OPERATOR_CANCELLED;
+ }
+
+ /* copied from SCREEN_OT_region_flip */
+ if(ar->alignment==RGN_ALIGN_TOP)
+ ar->alignment= RGN_ALIGN_BOTTOM;
+ else if(ar->alignment==RGN_ALIGN_BOTTOM)
+ ar->alignment= RGN_ALIGN_TOP;
+ else if(ar->alignment==RGN_ALIGN_LEFT)
+ ar->alignment= RGN_ALIGN_RIGHT;
+ else if(ar->alignment==RGN_ALIGN_RIGHT)
+ ar->alignment= RGN_ALIGN_LEFT;
+
+ WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
+ printf("executed header region flip\n");
+
+ return OPERATOR_FINISHED;
+}
+
+
+static void SCREEN_OT_header_flip(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Flip Header Region";
+ ot->idname= "SCREEN_OT_header_flip";
+
+ /* api callbacks */
+ ot->exec= header_flip_exec;
+
+ ot->poll= ED_operator_areaactive;
+ ot->flag= 0;
+}
+
+/* ************** header tools operator ***************************** */
+
+static int header_toolbox_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ ScrArea *sa= CTX_wm_area(C);
+ ARegion *ar= CTX_wm_region(C);
+ uiPopupMenu *pup;
+ uiLayout *layout;
+
+ pup= uiPupMenuBegin(C, "Header", 0);
+ layout= uiPupMenuLayout(pup);
+
+ // XXX SCREEN_OT_region_flip doesn't work - gets wrong context for active region, so added custom operator
+ if (ar->alignment == RGN_ALIGN_TOP)
+ uiItemO(layout, "Flip to Bottom", 0, "SCREEN_OT_header_flip");
+ else
+ uiItemO(layout, "Flip to Top", 0, "SCREEN_OT_header_flip");
+
+ uiItemS(layout);
+
+ /* file browser should be fullscreen all the time, but other regions can be maximised/restored... */
+ if (sa->spacetype != SPACE_FILE) {
+ if (sa->full)
+ uiItemO(layout, "Tile Window", 0, "SCREEN_OT_screen_full_area");
+ else
+ uiItemO(layout, "Maximize Window", 0, "SCREEN_OT_screen_full_area");
+ }
+
+ uiPupMenuEnd(C, pup);
+
+ return OPERATOR_CANCELLED;
+}
+
+void SCREEN_OT_header_toolbox(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Header Toolbox";
+ ot->description="Display header region toolbox";
+ ot->idname= "SCREEN_OT_header_toolbox";
+
+ /* api callbacks */
+ ot->invoke= header_toolbox_invoke;
}
/* ****************** anim player, with timer ***************** */
@@ -2165,7 +2281,7 @@ static void SCREEN_OT_region_flip(wmOperatorType *ot)
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)
@@ -2209,6 +2325,14 @@ static int match_region_with_redraws(int spacetype, int regiontype, int redraws)
if(spacetype==SPACE_TIME)
return 1;
}
+ else if (regiontype==RGN_TYPE_PREVIEW) {
+ switch (spacetype) {
+ case SPACE_SEQ:
+ if(redraws & (TIME_SEQ|TIME_ALL_ANIM_WIN))
+ return 1;
+ break;
+ }
+ }
return 0;
}
@@ -2280,10 +2404,11 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event)
}
/* since we follow drawflags, we can't send notifier but tag regions ourselves */
+
ED_update_for_newframe(C, 1);
sound_update_playing(C);
-
+
for(sa= screen->areabase.first; sa; sa= sa->next) {
ARegion *ar;
for(ar= sa->regionbase.first; ar; ar= ar->next) {
@@ -2301,8 +2426,6 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event)
// TODO: this may make evaluation a bit slower if the value doesn't change... any way to avoid this?
wt->timestep= (1.0/FPS);
- //WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
-
return OPERATOR_FINISHED;
}
return OPERATOR_PASS_THROUGH;
@@ -2330,6 +2453,7 @@ static int screen_animation_play(bContext *C, wmOperator *op, wmEvent *event)
bScreen *screen= CTX_wm_screen(C);
if(screen->animtimer) {
+ /* stop playback now */
ED_screen_animation_timer(C, 0, 0, 0);
sound_stop_all(C);
}
@@ -2348,16 +2472,16 @@ static int screen_animation_play(bContext *C, wmOperator *op, wmEvent *event)
ED_screen_animation_timer(C, stime->redraws, sync, mode);
/* update region if TIME_REGION was set, to leftmost 3d window */
- ED_screen_animation_timer_update(C, stime->redraws);
+ ED_screen_animation_timer_update(screen, stime->redraws);
}
else {
int redraws = TIME_REGION|TIME_ALL_3D_WIN;
-
+
/* XXX - would like a better way to deal with this situation - Campbell */
if((sa) && (sa->spacetype == SPACE_SEQ)) {
redraws |= TIME_SEQ;
}
-
+
ED_screen_animation_timer(C, redraws, sync, mode);
if(screen->animtimer) {
@@ -2392,8 +2516,19 @@ static int screen_animation_cancel(bContext *C, wmOperator *op, wmEvent *event)
{
bScreen *screen= CTX_wm_screen(C);
- if(screen->animtimer)
+ if(screen->animtimer) {
+ ScreenAnimData *sad= screen->animtimer->customdata;
+ Scene *scene= CTX_data_scene(C);
+
+ /* reset current frame before stopping, and just send a notifier to deal with the rest
+ * (since playback still needs to be stopped)
+ */
+ scene->r.cfra= sad->sfra;
+ WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
+
+ /* call the other "toggling" operator to clean up now */
return screen_animation_play(C, op, event);
+ }
return OPERATOR_PASS_THROUGH;
}
@@ -2402,7 +2537,7 @@ static void SCREEN_OT_animation_cancel(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Cancel Animation";
- ot->description= "Cancel animation.";
+ ot->description= "Cancel animation, returning to the original frame.";
ot->idname= "SCREEN_OT_animation_cancel";
/* api callbacks */
@@ -2414,23 +2549,23 @@ static void SCREEN_OT_animation_cancel(wmOperatorType *ot)
/* ************** border select operator (template) ***************************** */
/* operator state vars used: (added by default WM callbacks)
- xmin, ymin
- xmax, ymax
-
- customdata: the wmGesture pointer
-
-callbacks:
-
- exec() has to be filled in by user
-
- invoke() default WM function
- adds modal handler
-
- modal() default WM function
- accept modal events while doing it, calls exec(), handles ESC and border drawing
-
- poll() has to be filled in by user for context
-*/
+ xmin, ymin
+ xmax, ymax
+
+ customdata: the wmGesture pointer
+
+ callbacks:
+
+ exec() has to be filled in by user
+
+ invoke() default WM function
+ adds modal handler
+
+ modal() default WM function
+ accept modal events while doing it, calls exec(), handles ESC and border drawing
+
+ poll() has to be filled in by user for context
+ */
#if 0
static int border_select_do(bContext *C, wmOperator *op)
{
@@ -2465,14 +2600,14 @@ static void SCREEN_OT_border_select(wmOperatorType *ot)
RNA_def_int(ot->srna, "xmax", 0, INT_MIN, INT_MAX, "X Max", "", INT_MIN, INT_MAX);
RNA_def_int(ot->srna, "ymin", 0, INT_MIN, INT_MAX, "Y Min", "", INT_MIN, INT_MAX);
RNA_def_int(ot->srna, "ymax", 0, INT_MIN, INT_MAX, "Y Max", "", INT_MIN, INT_MAX);
-
+
}
#endif
/* ****************************** render invoking ***************** */
/* set callbacks, exported to sequence render too.
-Only call in foreground (UI) renders. */
+ Only call in foreground (UI) renders. */
/* returns biggest area that is not uv/image editor. Note that it uses buttons */
/* window as the last possible alternative. */
@@ -2537,7 +2672,7 @@ static ScrArea *find_area_showing_r_result(bContext *C)
}
}
}
-
+
return sa;
}
@@ -2646,13 +2781,13 @@ static void screen_set_image_output(bContext *C, int mx, int my)
/* get the correct image, and scale it */
sima->image= BKE_image_verify_viewer(IMA_TYPE_R_RESULT, "Render Result");
-// if(G.displaymode==2) { // XXX
- if(sa->full) {
- sima->flag |= SI_FULLWINDOW|SI_PREVSPACE;
-
-// ed_screen_fullarea(C, win, sa);
- }
-// }
+ // if(G.displaymode==2) { // XXX
+ if(sa->full) {
+ sima->flag |= SI_FULLWINDOW|SI_PREVSPACE;
+
+ // ed_screen_fullarea(C, win, sa);
+ }
+ // }
}
@@ -2668,7 +2803,7 @@ static int screen_render_exec(bContext *C, wmOperator *op)
RE_test_break_cb(re, NULL, (int (*)(void *)) blender_test_break);
if(RNA_boolean_get(op->ptr, "animation"))
- RE_BlenderAnim(re, scene, scene->r.sfra, scene->r.efra, scene->r.frame_step);
+ RE_BlenderAnim(re, scene, scene->r.sfra, scene->r.efra, scene->r.frame_step, op->reports);
else
RE_BlenderFrame(re, scene, scene->r.cfra);
@@ -2676,7 +2811,7 @@ static int screen_render_exec(bContext *C, wmOperator *op)
ED_update_for_newframe(C, 1);
WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, scene);
-
+
return OPERATOR_FINISHED;
}
@@ -2689,6 +2824,7 @@ typedef struct RenderJob {
ImageUser iuser;
short *stop;
short *do_update;
+ ReportList *reports;
} RenderJob;
static void render_freejob(void *rjv)
@@ -2756,7 +2892,7 @@ static void image_renderinfo_cb(void *rjv, RenderStats *rs)
/* make jobs timer to send notifier */
*(rj->do_update)= 1;
-
+
}
/* called inside thread! */
@@ -2819,7 +2955,7 @@ static void image_buffer_rect_update(Scene *scene, RenderResult *rr, ImBuf *ibuf
rectf+= 4*(rr->rectx*ymin + xmin);
rectc= (char *)(ibuf->rect + ibuf->x*rymin + rxmin);
-
+
/* XXX make nice consistent functions for this */
if (scene && (scene->r.color_mgt_flag & R_COLOR_MANAGEMENT)) {
for(y1= 0; y1<ymax; y1++) {
@@ -2833,7 +2969,7 @@ static void image_buffer_rect_update(Scene *scene, RenderResult *rr, ImBuf *ibuf
srgb[0]= linearrgb_to_srgb(rf[0]);
srgb[1]= linearrgb_to_srgb(rf[1]);
srgb[2]= linearrgb_to_srgb(rf[2]);
-
+
rc[0]= FTOCHAR(srgb[0]);
rc[1]= FTOCHAR(srgb[1]);
rc[2]= FTOCHAR(srgb[2]);
@@ -2873,7 +3009,7 @@ static void image_rect_update(void *rjv, RenderResult *rr, volatile rcti *renrec
ibuf= BKE_image_acquire_ibuf(rj->image, &rj->iuser, &lock);
if(ibuf) {
image_buffer_rect_update(rj->scene, rr, ibuf, renrect);
-
+
/* make jobs timer to send notifier */
*(rj->do_update)= 1;
}
@@ -2887,8 +3023,13 @@ static void render_startjob(void *rjv, short *stop, short *do_update)
rj->stop= stop;
rj->do_update= do_update;
+#if defined(__APPLE__) && (PARALLEL == 1) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 2)
+ // Workaround for Apple gcc 4.2.1 omp vs background thread bug
+ pthread_setspecific (gomp_tls_key, thread_tls_data);
+#endif
+
if(rj->anim)
- RE_BlenderAnim(rj->re, rj->scene, rj->scene->r.sfra, rj->scene->r.efra, rj->scene->r.frame_step);
+ RE_BlenderAnim(rj->re, rj->scene, rj->scene->r.sfra, rj->scene->r.efra, rj->scene->r.frame_step, rj->reports);
else
RE_BlenderFrame(rj->re, rj->scene, rj->scene->r.cfra);
}
@@ -2910,7 +3051,7 @@ static int screen_render_modal(bContext *C, wmOperator *op, wmEvent *event)
{
/* no running blender, remove handler and pass through */
if(0==WM_jobs_test(CTX_wm_manager(C), CTX_data_scene(C)))
- return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH;
+ return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH;
/* running render */
switch (event->type) {
@@ -2940,12 +3081,12 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event)
/* handle UI stuff */
WM_cursor_wait(1);
-
+
/* flush multires changes (for sculpt) */
multires_force_update(CTX_data_active_object(C));
/* get editmode results */
- ED_object_exit_editmode(C, EM_DO_UNDO); /* 0 = does not exit editmode */
+ ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); /* 0 = does not exit editmode */
// store spare
// get view3d layer, local layer, make this nice api call to render
@@ -2953,7 +3094,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event)
/* ensure at least 1 area shows result */
screen_set_image_output(C, event->x, event->y);
-
+
/* job custom data */
rj= MEM_callocN(sizeof(RenderJob), "render job");
rj->scene= scene;
@@ -2961,6 +3102,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event)
rj->anim= RNA_boolean_get(op->ptr, "animation");
rj->iuser.scene= scene;
rj->iuser.ok= 1;
+ rj->reports= op->reports;
/* setup job */
steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), scene, WM_JOB_EXCL_RENDER|WM_JOB_PRIORITY);
@@ -2968,6 +3110,11 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event)
WM_jobs_timer(steve, 0.2, NC_SCENE|ND_RENDER_RESULT, 0);
WM_jobs_callbacks(steve, render_startjob, NULL, NULL);
+#if defined(__APPLE__) && (PARALLEL == 1) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 2)
+ // Workaround for Apple gcc 4.2.1 omp vs background thread bug
+ thread_tls_data = pthread_getspecific(gomp_tls_key);
+#endif
+
/* get a render result image, and make sure it is empty */
ima= BKE_image_verify_viewer(IMA_TYPE_R_RESULT, "Render Result");
BKE_image_signal(ima, NULL, IMA_SIGNAL_FREE);
@@ -2984,14 +3131,12 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event)
// BKE_report in render!
// RE_error_cb(re, error_cb);
-
- WM_jobs_start(CTX_wm_manager(C), steve);
- G.afbreek= 0;
+ WM_jobs_start(CTX_wm_manager(C), steve);
WM_cursor_wait(0);
WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, scene);
-
+
/* add modal handler for ESC */
WM_event_add_modal_handler(C, op);
@@ -3022,20 +3167,21 @@ static void SCREEN_OT_render(wmOperatorType *ot)
typedef struct OGLRender {
Render *re;
Scene *scene;
-
+
View3D *v3d;
RegionView3D *rv3d;
ARegion *ar;
-
+
Image *ima;
ImageUser iuser;
-
+
GPUOffScreen *ofs;
int sizex, sizey;
-
+
+ ReportList *reports;
bMovieHandle *mh;
int cfrao, nfra;
-
+
wmTimer *timer;
} OGLRender;
@@ -3051,10 +3197,10 @@ static void screen_opengl_render_apply(OGLRender *oglrender)
float winmat[4][4];
int sizex= oglrender->sizex;
int sizey= oglrender->sizey;
-
+
/* bind */
GPU_offscreen_bind(oglrender->ofs);
-
+
/* render 3d view */
if(rv3d->persp==RV3D_CAMOB && v3d->camera) {
RE_GetCameraWindow(oglrender->re, v3d->camera, scene->r.cfra, winmat);
@@ -3062,19 +3208,19 @@ static void screen_opengl_render_apply(OGLRender *oglrender)
}
else
ED_view3d_draw_offscreen(scene, v3d, ar, sizex, sizey, NULL, NULL);
-
+
/* read in pixels & stamp */
rr= RE_AcquireResultRead(oglrender->re);
glReadPixels(0, 0, sizex, sizey, GL_RGBA, GL_FLOAT, rr->rectf);
if((scene->r.scemode & R_STAMP_INFO) && (scene->r.stamp & R_STAMP_DRAW))
BKE_stamp_buf(scene, (unsigned char *)rr->rect32, rr->rectf, rr->rectx, rr->recty, 3);
RE_ReleaseResult(oglrender->re);
-
+
/* update byte from float buffer */
ibuf= BKE_image_acquire_ibuf(oglrender->ima, &oglrender->iuser, &lock);
if(ibuf) image_buffer_rect_update(NULL, rr, ibuf, NULL);
BKE_image_release_ibuf(oglrender->ima, lock);
-
+
/* unbind */
GPU_offscreen_unbind(oglrender->ofs);
}
@@ -3087,7 +3233,7 @@ static int screen_opengl_render_init(bContext *C, wmOperator *op)
GPUOffScreen *ofs;
OGLRender *oglrender;
int sizex, sizey;
-
+
/* ensure we have a 3d view */
if(!ED_view3d_context_activate(C))
return 0;
@@ -3101,79 +3247,79 @@ static int screen_opengl_render_init(bContext *C, wmOperator *op)
/* handle UI stuff */
WM_cursor_wait(1);
-
+
/* create offscreen buffer */
sizex= (scene->r.size*scene->r.xsch)/100;
sizey= (scene->r.size*scene->r.ysch)/100;
-
+
view3d_operator_needs_opengl(C);
ofs= GPU_offscreen_create(sizex, sizey);
-
+
if(!ofs) {
BKE_report(op->reports, RPT_ERROR, "Failed to create OpenGL offscreen buffer.");
return 0;
}
-
+
/* allocate opengl render */
oglrender= MEM_callocN(sizeof(OGLRender), "OGLRender");
op->customdata= oglrender;
-
+
oglrender->ofs= ofs;
oglrender->sizex= sizex;
oglrender->sizey= sizey;
oglrender->scene= scene;
-
+
oglrender->v3d= CTX_wm_view3d(C);
oglrender->ar= CTX_wm_region(C);
oglrender->rv3d= CTX_wm_region_view3d(C);
-
+
/* create image and image user */
oglrender->ima= BKE_image_verify_viewer(IMA_TYPE_R_RESULT, "Render Result");
BKE_image_signal(oglrender->ima, NULL, IMA_SIGNAL_FREE);
-
+
oglrender->iuser.scene= scene;
oglrender->iuser.ok= 1;
-
+
/* create render and render result */
oglrender->re= RE_NewRender(scene->id.name);
RE_InitState(oglrender->re, NULL, &scene->r, sizex, sizey, NULL);
-
+
rr= RE_AcquireResultWrite(oglrender->re);
if(rr->rectf==NULL)
rr->rectf= MEM_mallocN(sizeof(float)*4*sizex*sizex, "32 bits rects");
RE_ReleaseResult(oglrender->re);
-
+
return 1;
}
static void screen_opengl_render_end(bContext *C, OGLRender *oglrender)
{
Scene *scene= oglrender->scene;
-
+
if(oglrender->mh) {
if(BKE_imtype_is_movie(scene->r.imtype))
oglrender->mh->end_movie();
}
-
+
if(oglrender->timer) {
scene->r.cfra= oglrender->cfrao;
scene_update_for_newframe(scene, scene->lay);
-
+
WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), oglrender->timer);
}
-
+
WM_cursor_wait(0);
WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, oglrender->scene);
-
+
GPU_offscreen_free(oglrender->ofs);
-
+
MEM_freeN(oglrender);
}
static int screen_opengl_render_cancel(bContext *C, wmOperator *op)
{
screen_opengl_render_end(C, op->customdata);
-
+
return OPERATOR_CANCELLED;
}
@@ -3186,7 +3332,7 @@ static int screen_opengl_render_modal(bContext *C, wmOperator *op, wmEvent *even
char name[FILE_MAXDIR+FILE_MAXFILE];
unsigned int lay;
int ok= 0;
-
+
switch(event->type) {
case ESCKEY:
/* cancel */
@@ -3200,31 +3346,40 @@ static int screen_opengl_render_modal(bContext *C, wmOperator *op, wmEvent *even
/* nothing to do */
return OPERATOR_RUNNING_MODAL;
}
-
+
/* go to next frame */
while(CFRA<oglrender->nfra) {
if(scene->lay & 0xFF000000)
lay= scene->lay & 0xFF000000;
else
lay= scene->lay;
-
+
scene_update_for_newframe(scene, lay);
CFRA++;
}
-
+
scene_update_for_newframe(scene, scene->lay);
+ if(oglrender->rv3d->persp==RV3D_CAMOB && oglrender->v3d->camera && oglrender->v3d->scenelock) {
+ /* since scene_update_for_newframe() is used rather
+ * then ED_update_for_newframe() the camera needs to be set */
+ Object *camera= scene_find_camera_switch(scene);
+
+ if(camera)
+ oglrender->v3d->camera= scene->camera= camera;
+ }
+
/* render into offscreen buffer */
screen_opengl_render_apply(oglrender);
/* save to disk */
ibuf= BKE_image_acquire_ibuf(oglrender->ima, &oglrender->iuser, &lock);
-
+
if(ibuf) {
if(BKE_imtype_is_movie(scene->r.imtype)) {
- oglrender->mh->append_movie(&scene->r, CFRA, (int*)ibuf->rect, oglrender->sizex, oglrender->sizey);
- printf("Append frame %d", scene->r.cfra);
- ok= 1;
+ ok= oglrender->mh->append_movie(&scene->r, CFRA, (int*)ibuf->rect, oglrender->sizex, oglrender->sizey, oglrender->reports);
+ if(ok)
+ printf("Append frame %d", scene->r.cfra);
}
else {
BKE_makepicstring(scene, name, scene->r.pic, scene->r.cfra, scene->r.imtype);
@@ -3234,31 +3389,31 @@ static int screen_opengl_render_modal(bContext *C, wmOperator *op, wmEvent *even
else printf("saved: %s", name);
}
}
-
+
BKE_image_release_ibuf(oglrender->ima, lock);
-
+
/* movie stats prints have no line break */
printf("\n");
/* go to next frame */
oglrender->nfra += scene->r.frame_step;
scene->r.cfra++;
-
+
WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, oglrender->scene);
-
+
/* stop at the end or on error */
if(scene->r.cfra > EFRA || !ok) {
screen_opengl_render_end(C, op->customdata);
return OPERATOR_FINISHED;
}
-
+
return OPERATOR_RUNNING_MODAL;
}
static int screen_opengl_render_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
int anim= RNA_boolean_get(op->ptr, "animation");
-
+
if(!screen_opengl_render_init(C, op))
return OPERATOR_CANCELLED;
@@ -3267,30 +3422,35 @@ static int screen_opengl_render_invoke(bContext *C, wmOperator *op, wmEvent *eve
screen_opengl_render_apply(op->customdata);
screen_opengl_render_end(C, op->customdata);
screen_set_image_output(C, event->x, event->y);
-
+
return OPERATOR_FINISHED;
}
else {
/* initialize animation */
OGLRender *oglrender;
Scene *scene;
-
+
oglrender= op->customdata;
scene= oglrender->scene;
-
+
+ oglrender->reports= op->reports;
oglrender->mh= BKE_get_movie_handle(scene->r.imtype);
- if(BKE_imtype_is_movie(scene->r.imtype))
- oglrender->mh->start_movie(scene, &scene->r, oglrender->sizex, oglrender->sizey);
-
+ if(BKE_imtype_is_movie(scene->r.imtype)) {
+ if(!oglrender->mh->start_movie(scene, &scene->r, oglrender->sizex, oglrender->sizey, oglrender->reports)) {
+ screen_opengl_render_end(C, oglrender);
+ return OPERATOR_CANCELLED;
+ }
+ }
+
oglrender->cfrao= scene->r.cfra;
oglrender->nfra= SFRA;
scene->r.cfra= SFRA;
-
+
WM_event_add_modal_handler(C, op);
oglrender->timer= WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER, 0.01f);
-
+
screen_set_image_output(C, event->x, event->y);
-
+
return OPERATOR_RUNNING_MODAL;
}
}
@@ -3331,11 +3491,11 @@ static int render_view_cancel_exec(bContext *C, wmOperator *unused)
if(sima->flag & SI_FULLWINDOW) {
sima->flag &= ~SI_FULLWINDOW;
- ED_screen_full_prevspace(C);
+ ED_screen_full_prevspace(C, sa);
}
else
- ED_area_prevspace(C);
-
+ ED_area_prevspace(C, sa);
+
return OPERATOR_FINISHED;
}
else if(sima->flag & SI_FULLWINDOW) {
@@ -3343,7 +3503,7 @@ static int render_view_cancel_exec(bContext *C, wmOperator *unused)
ed_screen_fullarea(C, win, sa);
return OPERATOR_FINISHED;
}
-
+
return OPERATOR_PASS_THROUGH;
}
@@ -3364,7 +3524,7 @@ static void SCREEN_OT_render_view_cancel(struct wmOperatorType *ot)
static int render_view_show_invoke(bContext *C, wmOperator *unused, wmEvent *event)
{
ScrArea *sa= find_area_showing_r_result(C);
-
+
/* test if we have a temp screen in front */
if(CTX_wm_window(C)->screen->full==SCREENTEMP) {
wm_window_lower(CTX_wm_window(C));
@@ -3378,7 +3538,7 @@ static int render_view_show_invoke(bContext *C, wmOperator *unused, wmEvent *eve
if(sima->flag & SI_FULLWINDOW) {
sima->flag &= ~SI_FULLWINDOW;
- ED_screen_full_prevspace(C);
+ ED_screen_full_prevspace(C, sa);
}
else if(sima->next) {
ED_area_newspace(C, sa, sima->next->spacetype);
@@ -3405,6 +3565,40 @@ static void SCREEN_OT_render_view_show(struct wmOperatorType *ot)
ot->poll= ED_operator_screenactive;
}
+/* *********************** generic fullscreen 'back' button *************** */
+
+
+static int fullscreen_back_exec(bContext *C, wmOperator *op)
+{
+ bScreen *screen = CTX_wm_screen(C);
+ ScrArea *sa=NULL;
+
+ /* search current screen for 'fullscreen' areas */
+ for (sa=screen->areabase.first; sa; sa=sa->next) {
+ if (sa->full) break;
+ }
+ if (!sa) {
+ BKE_report(op->reports, RPT_ERROR, "No fullscreen areas were found.");
+ return OPERATOR_CANCELLED;
+ }
+
+ ED_screen_full_restore(C, sa);
+
+ return OPERATOR_FINISHED;
+}
+
+static void SCREEN_OT_back_to_previous(struct wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Back to Previous Screen";
+ ot->description= "Revert back to the original screen layout, before fullscreen area overlay.";
+ ot->idname= "SCREEN_OT_back_to_previous";
+
+ /* api callbacks */
+ ot->exec= fullscreen_back_exec;
+ ot->poll= ED_operator_screenactive;
+}
+
/* *********** show user pref window ****** */
static int userpref_show_invoke(bContext *C, wmOperator *unused, wmEvent *event)
@@ -3450,10 +3644,10 @@ static int screen_new_exec(bContext *C, wmOperator *op)
{
wmWindow *win= CTX_wm_window(C);
bScreen *sc= CTX_wm_screen(C);
-
+
sc= ED_screen_duplicate(win, sc);
WM_event_add_notifier(C, NC_SCREEN|ND_SCREENBROWSE, sc);
-
+
return OPERATOR_FINISHED;
}
@@ -3466,7 +3660,7 @@ void SCREEN_OT_new(wmOperatorType *ot)
/* api callbacks */
ot->exec= screen_new_exec;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
@@ -3476,9 +3670,9 @@ void SCREEN_OT_new(wmOperatorType *ot)
static int screen_delete_exec(bContext *C, wmOperator *op)
{
bScreen *sc= CTX_wm_screen(C);
-
+
WM_event_add_notifier(C, NC_SCREEN|ND_SCREENDELETE, sc);
-
+
return OPERATOR_FINISHED;
}
@@ -3491,7 +3685,7 @@ void SCREEN_OT_delete(wmOperatorType *ot)
/* api callbacks */
ot->exec= screen_delete_exec;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
@@ -3503,17 +3697,17 @@ static int scene_new_exec(bContext *C, wmOperator *op)
Scene *newscene, *scene= CTX_data_scene(C);
Main *bmain= CTX_data_main(C);
int type= RNA_enum_get(op->ptr, "type");
-
+
newscene= copy_scene(bmain, scene, type);
-
+
/* these can't be handled in blenkernel curently, so do them here */
if(type == SCE_COPY_LINK_DATA)
ED_object_single_users(newscene, 0);
else if(type == SCE_COPY_FULL)
ED_object_single_users(newscene, 1);
-
+
WM_event_add_notifier(C, NC_SCENE|ND_SCENEBROWSE, newscene);
-
+
return OPERATOR_FINISHED;
}
@@ -3525,7 +3719,7 @@ void SCENE_OT_new(wmOperatorType *ot)
{SCE_COPY_LINK_DATA, "LINK_OBJECT_DATA", 0, "Link Object Data", "Copy objects linked to data from the current scene."},
{SCE_COPY_FULL, "FULL_COPY", 0, "Full Copy", "Make a full copy of the current scene."},
{0, NULL, 0, NULL, NULL}};
-
+
/* identifiers */
ot->name= "New Scene";
ot->description= "Add new scene by type.";
@@ -3534,10 +3728,10 @@ void SCENE_OT_new(wmOperatorType *ot)
/* api callbacks */
ot->exec= scene_new_exec;
ot->invoke= WM_menu_invoke;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-
+
/* properties */
RNA_def_enum(ot->srna, "type", type_items, 0, "Type", "");
}
@@ -3547,9 +3741,9 @@ void SCENE_OT_new(wmOperatorType *ot)
static int scene_delete_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
-
+
WM_event_add_notifier(C, NC_SCENE|ND_SCENEDELETE, scene);
-
+
return OPERATOR_FINISHED;
}
@@ -3562,7 +3756,7 @@ void SCENE_OT_delete(wmOperatorType *ot)
/* api callbacks */
ot->exec= scene_delete_exec;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
@@ -3584,12 +3778,14 @@ void ED_operatortypes_screen(void)
WM_operatortype_append(SCREEN_OT_area_join);
WM_operatortype_append(SCREEN_OT_area_dupli);
WM_operatortype_append(SCREEN_OT_area_swap);
- 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_quadview);
WM_operatortype_append(SCREEN_OT_region_scale);
+ WM_operatortype_append(SCREEN_OT_region_flip);
+ WM_operatortype_append(SCREEN_OT_header_flip);
+ WM_operatortype_append(SCREEN_OT_header_toolbox);
WM_operatortype_append(SCREEN_OT_screen_set);
WM_operatortype_append(SCREEN_OT_screen_full_area);
+ WM_operatortype_append(SCREEN_OT_back_to_previous);
WM_operatortype_append(SCREEN_OT_screenshot);
WM_operatortype_append(SCREEN_OT_screencast);
WM_operatortype_append(SCREEN_OT_userpref_show);
@@ -3608,13 +3804,13 @@ void ED_operatortypes_screen(void)
WM_operatortype_append(SCREEN_OT_render_view_cancel);
WM_operatortype_append(SCREEN_OT_render_view_show);
WM_operatortype_append(SCREEN_OT_opengl_render);
-
+
/* new/delete */
WM_operatortype_append(SCREEN_OT_new);
WM_operatortype_append(SCREEN_OT_delete);
WM_operatortype_append(SCENE_OT_new);
WM_operatortype_append(SCENE_OT_delete);
-
+
/* tools shared by more space types */
WM_operatortype_append(ED_OT_undo);
WM_operatortype_append(ED_OT_redo);
@@ -3638,12 +3834,12 @@ static void keymap_modal_set(wmKeyConfig *keyconf)
WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_ANY, KM_ANY, 0, KM_MODAL_APPLY);
WM_modalkeymap_add_item(keymap, RETKEY, KM_PRESS, KM_ANY, 0, KM_MODAL_APPLY);
WM_modalkeymap_add_item(keymap, PADENTER, KM_PRESS, KM_ANY, 0, KM_MODAL_APPLY);
-
+
WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, KM_MODAL_STEP10);
WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_RELEASE, KM_ANY, 0, KM_MODAL_STEP10_OFF);
WM_modalkeymap_assign(keymap, "SCREEN_OT_area_move");
-
+
}
/* called in spacetypes.c */
@@ -3657,17 +3853,21 @@ void ED_keymap_screen(wmKeyConfig *keyconf)
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 */
+ /* area move after action zones */
WM_keymap_verify_item(keymap, "SCREEN_OT_area_move", LEFTMOUSE, KM_PRESS, 0, 0);
-
-
+
+ /* Header Editing ------------------------------------------------ */
+ keymap= WM_keymap_find(keyconf, "Header", 0, 0);
+
+ WM_keymap_add_item(keymap, "SCREEN_OT_header_toolbox", RIGHTMOUSE, KM_PRESS, 0, 0);
+
/* Screen General ------------------------------------------------ */
keymap= WM_keymap_find(keyconf, "Screen", 0, 0);
@@ -3682,45 +3882,40 @@ void ED_keymap_screen(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "SCREEN_OT_screen_full_area", SPACEKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "SCREEN_OT_screenshot", F3KEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "SCREEN_OT_screencast", F3KEY, KM_PRESS, KM_ALT, 0);
-
- /* tests */
- WM_keymap_add_item(keymap, "SCREEN_OT_region_split", SKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
- WM_keymap_add_item(keymap, "SCREEN_OT_region_foursplit", SKEY, KM_PRESS, KM_CTRL|KM_ALT|KM_SHIFT, 0);
+ /* tests */
+ WM_keymap_add_item(keymap, "SCREEN_OT_region_quadview", QKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
WM_keymap_verify_item(keymap, "SCREEN_OT_repeat_history", F3KEY, KM_PRESS, 0, 0);
-
WM_keymap_add_item(keymap, "SCREEN_OT_repeat_last", RKEY, KM_PRESS, KM_SHIFT, 0);
-
- WM_keymap_add_item(keymap, "SCREEN_OT_region_flip", F5KEY, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "SCREEN_OT_region_flip", F5KEY, KM_PRESS, 0, 0);
WM_keymap_verify_item(keymap, "SCREEN_OT_redo_last", F6KEY, KM_PRESS, 0, 0);
-
- RNA_string_set(WM_keymap_add_item(keymap, "SCRIPT_OT_python_file_run", F7KEY, KM_PRESS, 0, 0)->ptr, "path", "test.py");
WM_keymap_verify_item(keymap, "WM_OT_reload_scripts", F8KEY, KM_PRESS, 0, 0);
-
+
/* files */
WM_keymap_add_item(keymap, "FILE_OT_execute", RETKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "FILE_OT_execute", PADENTER, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "FILE_OT_cancel", ESCKEY, KM_PRESS, 0, 0);
/* undo */
- #ifdef __APPLE__
+#ifdef __APPLE__
WM_keymap_add_item(keymap, "ED_OT_undo", ZKEY, KM_PRESS, KM_OSKEY, 0);
WM_keymap_add_item(keymap, "ED_OT_redo", ZKEY, KM_PRESS, KM_SHIFT|KM_OSKEY, 0);
- #endif
+#endif
WM_keymap_add_item(keymap, "ED_OT_undo", ZKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "ED_OT_redo", ZKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
-
+
/* render */
WM_keymap_add_item(keymap, "SCREEN_OT_render", F12KEY, KM_PRESS, 0, 0);
RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_render", F12KEY, KM_PRESS, KM_CTRL, 0)->ptr, "animation", 1);
WM_keymap_add_item(keymap, "SCREEN_OT_render_view_cancel", ESCKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "SCREEN_OT_render_view_show", F11KEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "SCREEN_OT_play_rendered_anim", F11KEY, KM_PRESS, KM_CTRL, 0);
/* user prefs */
- #ifdef __APPLE__
+#ifdef __APPLE__
WM_keymap_add_item(keymap, "SCREEN_OT_userpref_show", COMMAKEY, KM_PRESS, KM_OSKEY, 0);
- #endif
+#endif
WM_keymap_add_item(keymap, "SCREEN_OT_userpref_show", UKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
@@ -3745,7 +3940,7 @@ void ED_keymap_screen(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", KKEY, KM_PRESS, 0, LKEY);
RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", AKEY, KM_PRESS, KM_ALT|KM_SHIFT, 0)->ptr, "reverse", 1);
WM_keymap_add_item(keymap, "SCREEN_OT_animation_cancel", ESCKEY, KM_PRESS, 0, 0);
-
+
keymap_modal_set(keyconf);
}
diff --git a/source/blender/editors/screen/screendump.c b/source/blender/editors/screen/screendump.c
index 81c3f4d6814..088be194fe8 100644
--- a/source/blender/editors/screen/screendump.c
+++ b/source/blender/editors/screen/screendump.c
@@ -42,6 +42,7 @@
#include "BKE_context.h"
#include "BKE_global.h"
#include "BKE_image.h"
+#include "BKE_report.h"
#include "BKE_utildefines.h"
#include "BKE_writeavi.h"
@@ -185,6 +186,7 @@ typedef struct ScreenshotJob {
int x, y, dumpsx, dumpsy;
short *stop;
short *do_update;
+ ReportList reports;
} ScreenshotJob;
@@ -227,8 +229,12 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update)
rd.frs_sec= 10;
rd.frs_sec_base= 1.0f;
- if(BKE_imtype_is_movie(rd.imtype))
- mh->start_movie(sj->scene, &rd, sj->dumpsx, sj->dumpsy);
+ if(BKE_imtype_is_movie(rd.imtype)) {
+ if(!mh->start_movie(sj->scene, &rd, sj->dumpsx, sj->dumpsy, &sj->reports)) {
+ printf("screencast job stopped\n");
+ return;
+ }
+ }
else
mh= NULL;
@@ -242,8 +248,10 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update)
if(sj->dumprect) {
if(mh) {
- mh->append_movie(&rd, cfra, (int *)sj->dumprect, sj->dumpsx, sj->dumpsy);
- printf("Append frame %d\n", cfra);
+ if(mh->append_movie(&rd, cfra, (int *)sj->dumprect, sj->dumpsx, sj->dumpsy, &sj->reports))
+ printf("Append frame %d\n", cfra);
+ else
+ break;
}
else {
ImBuf *ibuf= IMB_allocImBuf(sj->dumpsx, sj->dumpsy, rd.planes, 0, 0);
@@ -286,7 +294,7 @@ static int screencast_exec(bContext *C, wmOperator *op)
bScreen *screen= CTX_wm_screen(C);
wmJob *steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), screen, 0);
ScreenshotJob *sj= MEM_callocN(sizeof(ScreenshotJob), "screenshot job");
-
+
/* setup sj */
if(RNA_boolean_get(op->ptr, "full")) {
wmWindow *win= CTX_wm_window(C);
@@ -304,6 +312,8 @@ static int screencast_exec(bContext *C, wmOperator *op)
}
sj->scene= CTX_data_scene(C);
+ BKE_reports_init(&sj->reports, RPT_PRINT);
+
/* setup job */
WM_jobs_customdata(steve, sj, screenshot_freejob);
WM_jobs_timer(steve, 0.1, 0, NC_SCREEN|ND_SCREENCAST);
diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c
index fd85f282fd1..7a604eaf763 100644
--- a/source/blender/editors/sculpt_paint/paint_image.c
+++ b/source/blender/editors/sculpt_paint/paint_image.c
@@ -86,6 +86,7 @@
#include "ED_image.h"
#include "ED_object.h"
#include "ED_screen.h"
+#include "ED_sculpt.h"
#include "ED_view3d.h"
#include "WM_api.h"
@@ -113,8 +114,6 @@
#define IMAPAINT_TILE_SIZE (1 << IMAPAINT_TILE_BITS)
#define IMAPAINT_TILE_NUMBER(size) (((size)+IMAPAINT_TILE_SIZE-1) >> IMAPAINT_TILE_BITS)
-#define MAXUNDONAME 64
-
static void imapaint_image_update(SpaceImage *sima, Image *image, ImBuf *ibuf, short texpaint);
@@ -204,7 +203,7 @@ typedef struct ProjPaintImage {
Image *ima;
ImBuf *ibuf;
ImagePaintPartialRedraw *partRedrawRect;
- struct UndoTile **undoRect; /* only used to build undo tiles after painting */
+ void **undoRect; /* only used to build undo tiles after painting */
int touch;
} ProjPaintImage;
@@ -229,7 +228,7 @@ typedef struct ProjPaintState {
MFace *dm_mface;
MTFace *dm_mtface;
MTFace *dm_mtface_clone; /* other UV layer, use for cloning between layers */
- MTFace *dm_mtface_mask;
+ MTFace *dm_mtface_stencil;
/* projection painting only */
MemArena *arena_mt[BLENDER_MAX_THREADS];/* for multithreading, the first item is sometimes used for non threaded cases too */
@@ -258,8 +257,8 @@ typedef struct ProjPaintState {
/* options for projection painting */
int do_layer_clone;
- int do_layer_mask;
- int do_layer_mask_inv;
+ int do_layer_stencil;
+ int do_layer_stencil_inv;
short do_occlude; /* Use raytraced occlusion? - ortherwise will paint right through to the back*/
short do_backfacecull; /* ignore faces with normals pointing away, skips a lot of raycasts if your normals are correctly flipped */
@@ -332,32 +331,20 @@ typedef struct ProjPixelClone {
/* Finish projection painting structs */
+typedef struct UndoImageTile {
+ struct UndoImageTile *next, *prev;
+
+ char idname[MAX_ID_NAME]; /* name instead of pointer*/
-typedef struct UndoTile {
- struct UndoTile *next, *prev;
- ID id;
void *rect;
int x, y;
-} UndoTile;
-
-typedef struct UndoElem {
- struct UndoElem *next, *prev;
- char name[MAXUNDONAME];
- uintptr_t undosize;
+} UndoImageTile;
- ImBuf *ibuf;
- ListBase tiles;
-} UndoElem;
-
-static ListBase undobase = {NULL, NULL};
-static UndoElem *curundo = NULL;
static ImagePaintPartialRedraw imapaintpartial = {0, 0, 0, 0, 0};
/* UNDO */
-/* internal functions */
-
-static void undo_copy_tile(UndoTile *tile, ImBuf *tmpibuf, ImBuf *ibuf, int restore)
+static void undo_copy_tile(UndoImageTile *tile, ImBuf *tmpibuf, ImBuf *ibuf, int restore)
{
/* copy or swap contents of tile->rect and region in ibuf->rect */
IMB_rectcpy(tmpibuf, ibuf, 0, 0, tile->x*IMAPAINT_TILE_SIZE,
@@ -374,49 +361,52 @@ static void undo_copy_tile(UndoTile *tile, ImBuf *tmpibuf, ImBuf *ibuf, int rest
tile->y*IMAPAINT_TILE_SIZE, 0, 0, IMAPAINT_TILE_SIZE, IMAPAINT_TILE_SIZE);
}
-static UndoTile *undo_init_tile(ID *id, ImBuf *ibuf, ImBuf **tmpibuf, int x_tile, int y_tile)
+static void *image_undo_push_tile(Image *ima, ImBuf *ibuf, ImBuf **tmpibuf, int x_tile, int y_tile)
{
- UndoTile *tile;
+ ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_IMAGE);
+ UndoImageTile *tile;
int allocsize;
+
+ for(tile=lb->first; tile; tile=tile->next)
+ if(tile->x == x_tile && tile->y == y_tile && strcmp(tile->idname, ima->id.name)==0)
+ return tile->rect;
if (*tmpibuf==NULL)
*tmpibuf = IMB_allocImBuf(IMAPAINT_TILE_SIZE, IMAPAINT_TILE_SIZE, 32, IB_rectfloat|IB_rect, 0);
- tile= MEM_callocN(sizeof(UndoTile), "ImaUndoTile");
- tile->id= *id;
+ tile= MEM_callocN(sizeof(UndoImageTile), "UndoImageTile");
+ strcpy(tile->idname, ima->id.name);
tile->x= x_tile;
tile->y= y_tile;
allocsize= IMAPAINT_TILE_SIZE*IMAPAINT_TILE_SIZE*4;
allocsize *= (ibuf->rect_float)? sizeof(float): sizeof(char);
- tile->rect= MEM_mapallocN(allocsize, "ImaUndoRect");
+ tile->rect= MEM_mapallocN(allocsize, "UndeImageTile.rect");
undo_copy_tile(tile, *tmpibuf, ibuf, 0);
- curundo->undosize += allocsize;
+ undo_paint_push_count_alloc(UNDO_PAINT_IMAGE, allocsize);
- BLI_addtail(&curundo->tiles, tile);
+ BLI_addtail(lb, tile);
- return tile;
+ return tile->rect;
}
-static void undo_restore(UndoElem *undo)
+static void image_undo_restore(bContext *C, ListBase *lb)
{
+ Main *bmain= CTX_data_main(C);
Image *ima = NULL;
ImBuf *ibuf, *tmpibuf;
- UndoTile *tile;
-
- if(!undo)
- return;
+ UndoImageTile *tile;
tmpibuf= IMB_allocImBuf(IMAPAINT_TILE_SIZE, IMAPAINT_TILE_SIZE, 32,
IB_rectfloat|IB_rect, 0);
- for(tile=undo->tiles.first; tile; tile=tile->next) {
+ for(tile=lb->first; tile; tile=tile->next) {
/* find image based on name, pointer becomes invalid with global undo */
- if(ima && strcmp(tile->id.name, ima->id.name)==0);
+ if(ima && strcmp(tile->idname, ima->id.name)==0);
else {
- for(ima=G.main->image.first; ima; ima=ima->id.next)
- if(strcmp(tile->id.name, ima->id.name)==0)
+ for(ima=bmain->image.first; ima; ima=ima->id.next)
+ if(strcmp(tile->idname, ima->id.name)==0)
break;
}
@@ -435,117 +425,12 @@ static void undo_restore(UndoElem *undo)
IMB_freeImBuf(tmpibuf);
}
-static void undo_free(UndoElem *undo)
+static void image_undo_free(ListBase *lb)
{
- UndoTile *tile;
+ UndoImageTile *tile;
- for(tile=undo->tiles.first; tile; tile=tile->next)
+ for(tile=lb->first; tile; tile=tile->next)
MEM_freeN(tile->rect);
- BLI_freelistN(&undo->tiles);
-}
-
-static void undo_imagepaint_push_begin(char *name)
-{
- UndoElem *uel;
- int nr;
-
- /* Undo push is split up in begin and end, the reason is that as painting
- * happens more tiles are added to the list, and at the very end we know
- * how much memory the undo used to remove old undo elements */
-
- /* remove all undos after (also when curundo==NULL) */
- while(undobase.last != curundo) {
- uel= undobase.last;
- undo_free(uel);
- BLI_freelinkN(&undobase, uel);
- }
-
- /* make new */
- curundo= uel= MEM_callocN(sizeof(UndoElem), "undo file");
- BLI_addtail(&undobase, uel);
-
- /* name can be a dynamic string */
- strncpy(uel->name, name, MAXUNDONAME-1);
-
- /* limit amount to the maximum amount*/
- nr= 0;
- uel= undobase.last;
- while(uel) {
- nr++;
- if(nr==U.undosteps) break;
- uel= uel->prev;
- }
- if(uel) {
- while(undobase.first!=uel) {
- UndoElem *first= undobase.first;
- undo_free(first);
- BLI_freelinkN(&undobase, first);
- }
- }
-}
-
-static void undo_imagepaint_push_end()
-{
- UndoElem *uel;
- uintptr_t totmem, maxmem;
-
- if(U.undomemory != 0) {
- /* limit to maximum memory (afterwards, we can't know in advance) */
- totmem= 0;
- maxmem= ((uintptr_t)U.undomemory)*1024*1024;
-
- uel= undobase.last;
- while(uel) {
- totmem+= uel->undosize;
- if(totmem>maxmem) break;
- uel= uel->prev;
- }
-
- if(uel) {
- while(undobase.first!=uel) {
- UndoElem *first= undobase.first;
- undo_free(first);
- BLI_freelinkN(&undobase, first);
- }
- }
- }
-}
-
-void undo_imagepaint_step(int step)
-{
- UndoElem *undo;
-
- if(step==1) {
- if(curundo==NULL);
- else {
- if(G.f & G_DEBUG) printf("undo %s\n", curundo->name);
- undo_restore(curundo);
- curundo= curundo->prev;
- }
- }
- else if(step==-1) {
- if((curundo!=NULL && curundo->next==NULL) || undobase.first==NULL);
- else {
- undo= (curundo && curundo->next)? curundo->next: undobase.first;
- undo_restore(undo);
- curundo= undo;
- if(G.f & G_DEBUG) printf("redo %s\n", undo->name);
- }
- }
-}
-
-void undo_imagepaint_clear(void)
-{
- UndoElem *uel;
-
- uel= undobase.first;
- while(uel) {
- undo_free(uel);
- uel= uel->next;
- }
-
- BLI_freelistN(&undobase);
- curundo= NULL;
}
/* fast projection bucket array lookup, use the safe version for bound checking */
@@ -1380,10 +1265,10 @@ float project_paint_uvpixel_mask(
float mask;
/* Image Mask */
- if (ps->do_layer_mask) {
+ if (ps->do_layer_stencil) {
/* another UV layers image is masking this one's */
ImBuf *ibuf_other;
- const MTFace *tf_other = ps->dm_mtface_mask + face_index;
+ const MTFace *tf_other = ps->dm_mtface_stencil + face_index;
if (tf_other->tpage && (ibuf_other = BKE_image_get_ibuf(tf_other->tpage, NULL))) {
/* BKE_image_get_ibuf - TODO - this may be slow */
@@ -1399,7 +1284,7 @@ float project_paint_uvpixel_mask(
mask = ((rgba_ub[0]+rgba_ub[1]+rgba_ub[2])/(256*3.0f)) * (rgba_ub[3]/256.0f);
}
- if (!ps->do_layer_mask_inv) /* matching the gimps layer mask black/white rules, white==full opacity */
+ if (!ps->do_layer_stencil_inv) /* matching the gimps layer mask black/white rules, white==full opacity */
mask = (1.0f - mask);
if (mask == 0.0f) {
@@ -2978,15 +2863,15 @@ static void project_paint_begin(ProjPaintState *ps)
}
}
- if (ps->do_layer_mask) {
- //int layer_num = CustomData_get_mask_layer(&ps->dm->faceData, CD_MTFACE);
- int layer_num = CustomData_get_mask_layer(&((Mesh *)ps->ob->data)->fdata, CD_MTFACE);
+ if (ps->do_layer_stencil) {
+ //int layer_num = CustomData_get_stencil_layer(&ps->dm->faceData, CD_MTFACE);
+ int layer_num = CustomData_get_stencil_layer(&((Mesh *)ps->ob->data)->fdata, CD_MTFACE);
if (layer_num != -1)
- ps->dm_mtface_mask = CustomData_get_layer_n(&ps->dm->faceData, CD_MTFACE, layer_num);
+ ps->dm_mtface_stencil = CustomData_get_layer_n(&ps->dm->faceData, CD_MTFACE, layer_num);
- if (ps->dm_mtface_mask==NULL || ps->dm_mtface_mask==ps->dm_mtface) {
- ps->do_layer_mask = 0;
- ps->dm_mtface_mask = NULL;
+ if (ps->dm_mtface_stencil==NULL || ps->dm_mtface_stencil==ps->dm_mtface) {
+ ps->do_layer_stencil = 0;
+ ps->dm_mtface_stencil = NULL;
}
}
@@ -3315,7 +3200,7 @@ static void project_paint_end(ProjPaintState *ps)
ProjPixel *projPixel;
ImBuf *tmpibuf = NULL, *tmpibuf_float = NULL;
LinkNode *pixel_node;
- UndoTile *tile;
+ void *tilerect;
MemArena *arena = ps->arena_mt[0]; /* threaded arena re-used for non threaded case */
int bucket_tot = (ps->buckets_x * ps->buckets_y); /* we could get an X/Y but easier to loop through all possible buckets */
@@ -3331,8 +3216,8 @@ static void project_paint_end(ProjPaintState *ps)
int last_tile_width=0;
for(a=0, last_projIma=ps->projImages; a < ps->image_tot; a++, last_projIma++) {
- 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);
+ int size = sizeof(void **) * IMAPAINT_TILE_NUMBER(last_projIma->ibuf->x) * IMAPAINT_TILE_NUMBER(last_projIma->ibuf->y);
+ last_projIma->undoRect = (void **) BLI_memarena_alloc(arena, size);
memset(last_projIma->undoRect, 0, size);
last_projIma->ibuf->userflags |= IB_BITMAPDIRTY;
}
@@ -3372,21 +3257,21 @@ static void project_paint_end(ProjPaintState *ps)
if (last_projIma->undoRect[tile_index]==NULL) {
/* add the undo tile from the modified image, then write the original colors back into it */
- tile = last_projIma->undoRect[tile_index] = undo_init_tile(&last_projIma->ima->id, last_projIma->ibuf, is_float ? (&tmpibuf_float):(&tmpibuf) , x_tile, y_tile);
+ tilerect = last_projIma->undoRect[tile_index] = image_undo_push_tile(last_projIma->ima, last_projIma->ibuf, is_float ? (&tmpibuf_float):(&tmpibuf) , x_tile, y_tile);
}
else {
- tile = last_projIma->undoRect[tile_index];
+ tilerect = last_projIma->undoRect[tile_index];
}
/* This is a BIT ODD, but overwrite the undo tiles image info with this pixels original color
* because allocating the tiles allong the way slows down painting */
if (is_float) {
- float *rgba_fp = (float *)tile->rect + (((projPixel->x_px - x_round) + (projPixel->y_px - y_round) * IMAPAINT_TILE_SIZE)) * 4;
+ float *rgba_fp = (float *)tilerect + (((projPixel->x_px - x_round) + (projPixel->y_px - y_round) * IMAPAINT_TILE_SIZE)) * 4;
QUATCOPY(rgba_fp, projPixel->origColor.f);
}
else {
- ((unsigned int *)tile->rect)[ (projPixel->x_px - x_round) + (projPixel->y_px - y_round) * IMAPAINT_TILE_SIZE ] = projPixel->origColor.uint;
+ ((unsigned int *)tilerect)[ (projPixel->x_px - x_round) + (projPixel->y_px - y_round) * IMAPAINT_TILE_SIZE ] = projPixel->origColor.uint;
}
}
}
@@ -3957,7 +3842,6 @@ static void imapaint_clear_partial_redraw()
static void imapaint_dirty_region(Image *ima, ImBuf *ibuf, int x, int y, int w, int h)
{
ImBuf *tmpibuf = NULL;
- UndoTile *tile;
int srcx= 0, srcy= 0, origx;
IMB_rectclip(ibuf, NULL, &x, &y, &srcx, &srcy, &w, &h);
@@ -3984,17 +3868,9 @@ static void imapaint_dirty_region(Image *ima, ImBuf *ibuf, int x, int y, int w,
origx = (x >> IMAPAINT_TILE_BITS);
y = (y >> IMAPAINT_TILE_BITS);
- for (; y <= h; y++) {
- for (x=origx; x <= w; x++) {
- for(tile=curundo->tiles.first; tile; tile=tile->next)
- if(tile->x == x && tile->y == y && strcmp(tile->id.name, ima->id.name)==0)
- break;
-
- if(!tile) {
- undo_init_tile(&ima->id, ibuf, &tmpibuf, x, y);
- }
- }
- }
+ for (; y <= h; y++)
+ for (x=origx; x <= w; x++)
+ image_undo_push_tile(ima, ibuf, &tmpibuf, x, y);
ibuf->userflags |= IB_BITMAPDIRTY;
@@ -4530,10 +4406,23 @@ static int texture_paint_init(bContext *C, wmOperator *op)
}
if(pop->mode != PAINT_MODE_2D) {
+ Mesh *me;
+
pop->ps.ob = pop->s.ob = OBACT;
if (!pop->s.ob || !(pop->s.ob->lay & pop->ps.v3d->lay)) return 0;
pop->s.me = get_mesh(pop->s.ob);
if (!pop->s.me) return 0;
+
+ me = pop->s.me;
+
+ /*recalc mesh tesselation so the face origindex values point
+ to the tesselation faces themselves, instead of polys*/
+ me->totface = mesh_recalcTesselation(&me->fdata, &me->ldata,
+ &me->pdata, me->mvert, me->totface, me->totloop, me->totpoly, 0, 1);
+ mesh_update_customdata_pointers(me);
+
+ /*force customdata update*/
+ makeDerivedMesh(scene, pop->ps.ob, NULL, CD_MASK_BAREMESH);
/* Dont allow brush size below 2 */
if (pop->ps.brush && pop->ps.brush->size<=1)
@@ -4562,8 +4451,8 @@ static int texture_paint_init(bContext *C, wmOperator *op)
if (pop->ps.tool == PAINT_TOOL_CLONE)
pop->ps.do_layer_clone = (settings->imapaint.flag & IMAGEPAINT_PROJECT_LAYER_CLONE);
- pop->ps.do_layer_mask = (settings->imapaint.flag & IMAGEPAINT_PROJECT_LAYER_MASK) ? 1 : 0;
- pop->ps.do_layer_mask_inv = (settings->imapaint.flag & IMAGEPAINT_PROJECT_LAYER_MASK_INV) ? 1 : 0;
+ pop->ps.do_layer_stencil = (settings->imapaint.flag & IMAGEPAINT_PROJECT_LAYER_STENCIL) ? 1 : 0;
+ pop->ps.do_layer_stencil_inv = (settings->imapaint.flag & IMAGEPAINT_PROJECT_LAYER_STENCIL_INV) ? 1 : 0;
#ifndef PROJ_DEBUG_NOSEAMBLEED
@@ -4592,7 +4481,8 @@ static int texture_paint_init(bContext *C, wmOperator *op)
}
settings->imapaint.flag |= IMAGEPAINT_DRAWING;
- undo_imagepaint_push_begin("Image Paint");
+ undo_paint_push_begin(UNDO_PAINT_IMAGE, "Image Paint",
+ image_undo_restore, image_undo_free);
/* create painter */
pop->painter= brush_painter_new(pop->s.brush);
@@ -4656,7 +4546,7 @@ static void paint_exit(bContext *C, wmOperator *op)
}
paint_redraw(C, &pop->s, 1);
- undo_imagepaint_push_end();
+ undo_paint_push_end(UNDO_PAINT_IMAGE);
if(pop->s.warnmultifile)
BKE_reportf(op->reports, RPT_WARNING, "Image requires 4 color channels to paint: %s", pop->s.warnmultifile);
@@ -5255,3 +5145,4 @@ int facemask_paint_poll(bContext *C)
{
return paint_facesel_test(CTX_data_active_object(C));
}
+
diff --git a/source/blender/editors/sculpt_paint/paint_intern.h b/source/blender/editors/sculpt_paint/paint_intern.h
index b5748d7bc88..108be50267d 100644
--- a/source/blender/editors/sculpt_paint/paint_intern.h
+++ b/source/blender/editors/sculpt_paint/paint_intern.h
@@ -41,13 +41,16 @@ struct wmOperator;
struct wmOperatorType;
struct ARegion;
struct VPaint;
+struct ListBase;
/* paint_stroke.c */
+typedef int (*StrokeGetLocation)(struct bContext *C, struct PaintStroke *stroke, float location[3], float mouse[2]);
typedef int (*StrokeTestStart)(struct bContext *C, struct wmOperator *op, struct wmEvent *event);
typedef void (*StrokeUpdateStep)(struct bContext *C, struct PaintStroke *stroke, struct PointerRNA *itemptr);
typedef void (*StrokeDone)(struct bContext *C, struct PaintStroke *stroke);
-struct PaintStroke *paint_stroke_new(struct bContext *C, StrokeTestStart test_start,
+struct PaintStroke *paint_stroke_new(struct bContext *C,
+ StrokeGetLocation get_location, StrokeTestStart test_start,
StrokeUpdateStep update_step, StrokeDone done);
int paint_stroke_modal(struct bContext *C, struct wmOperator *op, struct wmEvent *event);
int paint_stroke_exec(struct bContext *C, struct wmOperator *op);
@@ -96,9 +99,18 @@ void BRUSH_OT_curve_preset(struct wmOperatorType *ot);
void PAINT_OT_face_select_linked(struct wmOperatorType *ot);
void PAINT_OT_face_select_linked_pick(struct wmOperatorType *ot);
-void PAINT_OT_face_deselect_all(struct wmOperatorType *ot);
+void PAINT_OT_face_select_all(struct wmOperatorType *ot);
int facemask_paint_poll(struct bContext *C);
+/* paint_undo.c */
+typedef void (*UndoRestoreCb)(struct bContext *C, struct ListBase *lb);
+typedef void (*UndoFreeCb)(struct ListBase *lb);
+
+void undo_paint_push_begin(int type, char *name, UndoRestoreCb restore, UndoFreeCb free);
+struct ListBase *undo_paint_push_get_list(int type);
+void undo_paint_push_count_alloc(int type, int size);
+void undo_paint_push_end(int type);
+
#endif /* ED_PAINT_INTERN_H */
diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c
index 256d114fbdc..5cfda009514 100644
--- a/source/blender/editors/sculpt_paint/paint_ops.c
+++ b/source/blender/editors/sculpt_paint/paint_ops.c
@@ -137,7 +137,7 @@ void ED_operatortypes_paint(void)
/* face-select */
WM_operatortype_append(PAINT_OT_face_select_linked);
WM_operatortype_append(PAINT_OT_face_select_linked_pick);
- WM_operatortype_append(PAINT_OT_face_deselect_all);
+ WM_operatortype_append(PAINT_OT_face_select_all);
}
static void ed_keymap_paint_brush_switch(wmKeyMap *keymap, const char *path)
@@ -173,12 +173,14 @@ static void ed_keymap_paint_brush_switch(wmKeyMap *keymap, const char *path)
RNA_int_set(kmi->ptr, "value", 8);
kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", ZEROKEY, KM_PRESS, 0, 0);
RNA_string_set(kmi->ptr, "path", path);
- RNA_int_set(kmi->ptr, "value", 10);
+ RNA_int_set(kmi->ptr, "value", 9);
}
void ED_keymap_paint(wmKeyConfig *keyconf)
{
wmKeyMap *keymap;
+ wmKeyMapItem *kmi;
+ int i;
/* Sculpt mode */
keymap= WM_keymap_find(keyconf, "Sculpt", 0, 0);
@@ -193,6 +195,57 @@ void ED_keymap_paint(wmKeyConfig *keyconf)
ed_keymap_paint_brush_switch(keymap, "tool_settings.sculpt.active_brush_index");
+ for(i=0; i<=5; i++)
+ RNA_int_set(WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", ZEROKEY+i, KM_PRESS, KM_CTRL, 0)->ptr, "level", i);
+
+ /* multires switch */
+ kmi= WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", PAGEUPKEY, KM_PRESS, 0, 0);
+ RNA_int_set(kmi->ptr, "level", 1);
+ RNA_boolean_set(kmi->ptr, "relative", 1);
+
+ kmi= WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", PAGEDOWNKEY, KM_PRESS, 0, 0);
+ RNA_int_set(kmi->ptr, "level", -1);
+ RNA_boolean_set(kmi->ptr, "relative", 1);
+
+ /* toggles */
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", AKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.use_anchor");
+
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SKEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.use_smooth_stroke");
+
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", RKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.use_rake");
+
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", AKEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.use_airbrush");
+
+ /* brush switching */
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", DKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.sculpt_tool");
+ RNA_string_set(kmi->ptr, "value", "DRAW");
+
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", SKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.sculpt_tool");
+ RNA_string_set(kmi->ptr, "value", "SMOOTH");
+
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.sculpt_tool");
+ RNA_string_set(kmi->ptr, "value", "PINCH");
+
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", GKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.sculpt_tool");
+ RNA_string_set(kmi->ptr, "value", "GRAB");
+
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", LKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.sculpt_tool");
+ RNA_string_set(kmi->ptr, "value", "LAYER");
+
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", TKEY, KM_PRESS, KM_SHIFT, 0); /* was just T in 2.4x */
+ RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.sculpt_tool");
+ RNA_string_set(kmi->ptr, "value", "FLATTEN");
+
+
/* Vertex Paint mode */
keymap= WM_keymap_find(keyconf, "Vertex Paint", 0, 0);
keymap->poll= vertex_paint_poll;
@@ -238,7 +291,7 @@ void ED_keymap_paint(wmKeyConfig *keyconf)
keymap= WM_keymap_find(keyconf, "Face Mask", 0, 0);
keymap->poll= facemask_paint_poll;
- WM_keymap_add_item(keymap, "PAINT_OT_face_deselect_all", AKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "PAINT_OT_face_select_all", AKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "PAINT_OT_face_select_linked", LKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "PAINT_OT_face_select_linked_pick", LKEY, KM_PRESS, 0, 0);
diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c
index 8e795c5542e..e26b1945e7f 100644
--- a/source/blender/editors/sculpt_paint/paint_stroke.c
+++ b/source/blender/editors/sculpt_paint/paint_stroke.c
@@ -73,6 +73,7 @@ typedef struct PaintStroke {
passes over the mesh */
int stroke_started;
+ StrokeGetLocation get_location;
StrokeTestStart test_start;
StrokeUpdateStep update_step;
StrokeDone done;
@@ -100,7 +101,11 @@ static void paint_draw_smooth_stroke(bContext *C, int x, int y, void *customdata
static void paint_draw_cursor(bContext *C, int x, int y, void *customdata)
{
- Brush *brush = paint_brush(paint_get_active(CTX_data_scene(C)));
+ Paint *paint = paint_get_active(CTX_data_scene(C));
+ Brush *brush = paint_brush(paint);
+
+ if(!(paint->flags & PAINT_SHOW_BRUSH))
+ return;
glColor4ubv(paint_get_active(CTX_data_scene(C))->paint_cursor_col);
glEnable(GL_LINE_SMOOTH);
@@ -118,13 +123,14 @@ static void paint_draw_cursor(bContext *C, int x, int y, void *customdata)
static void paint_brush_stroke_add_step(bContext *C, wmOperator *op, wmEvent *event, float mouse[2])
{
PointerRNA itemptr;
- float cur_depth, pressure = 1;
- float center[3];
+ float pressure = 1;
+ float center[3] = {0, 0, 0};
int flip= event->shift?1:0;
PaintStroke *stroke = op->customdata;
- cur_depth = read_cached_depth(&stroke->vc, mouse[0], mouse[1]);
- view3d_unproject(&stroke->mats, center, mouse[0], mouse[1], cur_depth);
+ /* XXX: can remove the if statement once all modes have this */
+ if(stroke->get_location)
+ stroke->get_location(C, stroke, center, mouse);
/* Tablet */
if(event->custom == EVT_DATA_TABLET) {
@@ -211,15 +217,19 @@ static int paint_space_stroke(bContext *C, wmOperator *op, wmEvent *event, const
/**** Public API ****/
-PaintStroke *paint_stroke_new(bContext *C, StrokeTestStart test_start,
- StrokeUpdateStep update_step, StrokeDone done)
+PaintStroke *paint_stroke_new(bContext *C,
+ StrokeGetLocation get_location,
+ StrokeTestStart test_start,
+ StrokeUpdateStep update_step,
+ StrokeDone done)
{
PaintStroke *stroke = MEM_callocN(sizeof(PaintStroke), "PaintStroke");
stroke->brush = paint_brush(paint_get_active(CTX_data_scene(C)));
view3d_set_viewcontext(C, &stroke->vc);
- view3d_get_transformation(&stroke->vc, stroke->vc.obact, &stroke->mats);
+ view3d_get_transformation(stroke->vc.ar, stroke->vc.rv3d, stroke->vc.obact, &stroke->mats);
+ stroke->get_location = get_location;
stroke->test_start = test_start;
stroke->update_step = update_step;
stroke->done = done;
@@ -229,12 +239,9 @@ PaintStroke *paint_stroke_new(bContext *C, StrokeTestStart test_start,
int paint_stroke_modal(bContext *C, wmOperator *op, wmEvent *event)
{
- ARegion *ar = CTX_wm_region(C);
PaintStroke *stroke = op->customdata;
float mouse[2];
-
- if(event->type == TIMER && (event->customdata != stroke->timer))
- return OPERATOR_RUNNING_MODAL;
+ int first= 0;
if(!stroke->stroke_started) {
stroke->last_mouse_position[0] = event->x;
@@ -249,26 +256,13 @@ int paint_stroke_modal(bContext *C, wmOperator *op, wmEvent *event)
stroke->timer = WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER, stroke->brush->rate);
}
- ED_region_tag_redraw(ar);
- }
-
- if(stroke->stroke_started) {
- if(paint_smooth_stroke(stroke, mouse, event)) {
- if(paint_space_stroke_enabled(stroke->brush)) {
- if(!paint_space_stroke(C, op, event, mouse))
- ED_region_tag_redraw(ar);
- }
- else
- paint_brush_stroke_add_step(C, op, event, mouse);
- }
- else
- ED_region_tag_redraw(ar);
+ first= 1;
+ //ED_region_tag_redraw(ar);
}
- /* TODO: fix hardcoded event here */
+ /* TODO: fix hardcoded events here */
if(event->type == LEFTMOUSE && event->val == KM_RELEASE) {
- /* Exit stroke, free data */
-
+ /* exit stroke, free data */
if(stroke->smooth_stroke_cursor)
WM_paint_cursor_end(CTX_wm_manager(C), stroke->smooth_stroke_cursor);
@@ -279,8 +273,22 @@ int paint_stroke_modal(bContext *C, wmOperator *op, wmEvent *event)
MEM_freeN(stroke);
return OPERATOR_FINISHED;
}
- else
- return OPERATOR_RUNNING_MODAL;
+ else if(first || event->type == MOUSEMOVE || (event->type == TIMER && (event->customdata == stroke->timer))) {
+ if(stroke->stroke_started) {
+ if(paint_smooth_stroke(stroke, mouse, event)) {
+ if(paint_space_stroke_enabled(stroke->brush)) {
+ if(!paint_space_stroke(C, op, event, mouse))
+ ;//ED_region_tag_redraw(ar);
+ }
+ else
+ paint_brush_stroke_add_step(C, op, event, mouse);
+ }
+ else
+ ;//ED_region_tag_redraw(ar);
+ }
+ }
+
+ return OPERATOR_RUNNING_MODAL;
}
int paint_stroke_exec(bContext *C, wmOperator *op)
diff --git a/source/blender/editors/sculpt_paint/paint_undo.c b/source/blender/editors/sculpt_paint/paint_undo.c
new file mode 100644
index 00000000000..05f2b565e82
--- /dev/null
+++ b/source/blender/editors/sculpt_paint/paint_undo.c
@@ -0,0 +1,235 @@
+/**
+ * $Id$
+ *
+ * Undo system for painting and sculpting.
+ *
+ * ***** 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.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "MEM_guardedalloc.h"
+
+#include "DNA_userdef_types.h"
+
+#include "BLI_listbase.h"
+
+#include "BKE_context.h"
+#include "BKE_global.h"
+
+#include "ED_sculpt.h"
+
+#include "paint_intern.h"
+
+#define MAXUNDONAME 64
+
+typedef struct UndoElem {
+ struct UndoElem *next, *prev;
+ char name[MAXUNDONAME];
+ uintptr_t undosize;
+
+ ListBase elems;
+
+ UndoRestoreCb restore;
+ UndoFreeCb free;
+} UndoElem;
+
+typedef struct UndoStack {
+ int type;
+ ListBase elems;
+ UndoElem *current;
+} UndoStack;
+
+static UndoStack ImageUndoStack = {UNDO_PAINT_IMAGE, {NULL, NULL}, NULL};
+static UndoStack MeshUndoStack = {UNDO_PAINT_MESH, {NULL, NULL}, NULL};
+
+/* Generic */
+
+static void undo_restore(bContext *C, UndoStack *stack, UndoElem *uel)
+{
+ if(uel && uel->restore)
+ uel->restore(C, &uel->elems);
+}
+
+static void undo_elem_free(UndoStack *stack, UndoElem *uel)
+{
+ if(uel && uel->free) {
+ uel->free(&uel->elems);
+ BLI_freelistN(&uel->elems);
+ }
+}
+
+static void undo_stack_push_begin(UndoStack *stack, char *name, UndoRestoreCb restore, UndoFreeCb free)
+{
+ UndoElem *uel;
+ int nr;
+
+ /* Undo push is split up in begin and end, the reason is that as painting
+ * happens more tiles/nodes are added to the list, and at the very end we
+ * know how much memory the undo used to remove old undo elements */
+
+ /* remove all undos after (also when stack->current==NULL) */
+ while(stack->elems.last != stack->current) {
+ uel= stack->elems.last;
+ undo_elem_free(stack, uel);
+ BLI_freelinkN(&stack->elems, uel);
+ }
+
+ /* make new */
+ stack->current= uel= MEM_callocN(sizeof(UndoElem), "undo file");
+ uel->restore= restore;
+ uel->free= free;
+ BLI_addtail(&stack->elems, uel);
+
+ /* name can be a dynamic string */
+ strncpy(uel->name, name, MAXUNDONAME-1);
+
+ /* limit amount to the maximum amount*/
+ nr= 0;
+ uel= stack->elems.last;
+ while(uel) {
+ nr++;
+ if(nr==U.undosteps) break;
+ uel= uel->prev;
+ }
+ if(uel) {
+ while(stack->elems.first!=uel) {
+ UndoElem *first= stack->elems.first;
+ undo_elem_free(stack, first);
+ BLI_freelinkN(&stack->elems, first);
+ }
+ }
+}
+
+static void undo_stack_push_end(UndoStack *stack)
+{
+ UndoElem *uel;
+ uintptr_t totmem, maxmem;
+
+ if(U.undomemory != 0) {
+ /* limit to maximum memory (afterwards, we can't know in advance) */
+ totmem= 0;
+ maxmem= ((uintptr_t)U.undomemory)*1024*1024;
+
+ uel= stack->elems.last;
+ while(uel) {
+ totmem+= uel->undosize;
+ if(totmem>maxmem) break;
+ uel= uel->prev;
+ }
+
+ if(uel) {
+ while(stack->elems.first!=uel) {
+ UndoElem *first= stack->elems.first;
+ undo_elem_free(stack, first);
+ BLI_freelinkN(&stack->elems, first);
+ }
+ }
+ }
+}
+
+static void undo_stack_step(bContext *C, UndoStack *stack, int step)
+{
+ UndoElem *undo;
+
+ if(step==1) {
+ if(stack->current==NULL);
+ else {
+ if(G.f & G_DEBUG) printf("undo %s\n", stack->current->name);
+ undo_restore(C, stack, stack->current);
+ stack->current= stack->current->prev;
+ }
+ }
+ else if(step==-1) {
+ if((stack->current!=NULL && stack->current->next==NULL) || stack->elems.first==NULL);
+ else {
+ undo= (stack->current && stack->current->next)? stack->current->next: stack->elems.first;
+ undo_restore(C, stack, undo);
+ stack->current= undo;
+ if(G.f & G_DEBUG) printf("redo %s\n", undo->name);
+ }
+ }
+}
+
+static void undo_stack_free(UndoStack *stack)
+{
+ UndoElem *uel;
+
+ for(uel=stack->elems.first; uel; uel=uel->next)
+ undo_elem_free(stack, uel);
+
+ BLI_freelistN(&stack->elems);
+ stack->current= NULL;
+}
+
+/* Exported Functions */
+
+void undo_paint_push_begin(int type, char *name, UndoRestoreCb restore, UndoFreeCb free)
+{
+ if(type == UNDO_PAINT_IMAGE)
+ undo_stack_push_begin(&ImageUndoStack, name, restore, free);
+ else if(type == UNDO_PAINT_MESH)
+ undo_stack_push_begin(&MeshUndoStack, name, restore, free);
+}
+
+ListBase *undo_paint_push_get_list(int type)
+{
+ if(type == UNDO_PAINT_IMAGE) {
+ if(ImageUndoStack.current)
+ return &ImageUndoStack.current->elems;
+ }
+ else if(type == UNDO_PAINT_MESH) {
+ if(MeshUndoStack.current)
+ return &MeshUndoStack.current->elems;
+ }
+
+ return NULL;
+}
+
+void undo_paint_push_count_alloc(int type, int size)
+{
+ if(type == UNDO_PAINT_IMAGE)
+ ImageUndoStack.current->undosize += size;
+ else if(type == UNDO_PAINT_MESH)
+ MeshUndoStack.current->undosize += size;
+}
+
+void undo_paint_push_end(int type)
+{
+ if(type == UNDO_PAINT_IMAGE)
+ undo_stack_push_end(&ImageUndoStack);
+ else if(type == UNDO_PAINT_MESH)
+ undo_stack_push_end(&MeshUndoStack);
+}
+
+void ED_undo_paint_step(bContext *C, int type, int step)
+{
+ if(type == UNDO_PAINT_IMAGE)
+ undo_stack_step(C, &ImageUndoStack, step);
+ else if(type == UNDO_PAINT_MESH)
+ undo_stack_step(C, &MeshUndoStack, step);
+}
+
+void ED_undo_paint_free(void)
+{
+ undo_stack_free(&ImageUndoStack);
+ undo_stack_free(&MeshUndoStack);
+}
+
diff --git a/source/blender/editors/sculpt_paint/paint_utils.c b/source/blender/editors/sculpt_paint/paint_utils.c
index a10c2017828..d799a60a864 100644
--- a/source/blender/editors/sculpt_paint/paint_utils.c
+++ b/source/blender/editors/sculpt_paint/paint_utils.c
@@ -96,7 +96,7 @@ void imapaint_pick_uv(Scene *scene, Object *ob, Mesh *mesh, unsigned int faceind
DerivedMesh *dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH);
int *index = dm->getTessFaceDataArray(dm, CD_ORIGINDEX);
MTFace *tface = dm->getTessFaceDataArray(dm, CD_MTFACE), *tf;
- int numfaces = dm->getNumTessFaces(dm), a;
+ int numfaces = dm->getNumTessFaces(dm), a, findex;
float p[2], w[3], absw, minabsw;
MFace mf;
MVert mv[4];
@@ -106,7 +106,9 @@ void imapaint_pick_uv(Scene *scene, Object *ob, Mesh *mesh, unsigned int faceind
/* test all faces in the derivedmesh with the original index of the picked face */
for(a = 0; a < numfaces; a++) {
- if(index[a] == faceindex) {
+ findex= (index)? index[a]: a;
+
+ if(findex == faceindex) {
dm->getTessFace(dm, a, &mf);
dm->getVert(dm, mf.v1, &mv[0]);
@@ -273,22 +275,24 @@ void PAINT_OT_face_select_linked_pick(wmOperatorType *ot)
}
-static int face_deselect_all_exec(bContext *C, wmOperator *op)
+static int face_select_all_exec(bContext *C, wmOperator *op)
{
- deselectall_tface(CTX_data_active_object(C));
+ selectall_tface(CTX_data_active_object(C), RNA_enum_get(op->ptr, "action"));
ED_region_tag_redraw(CTX_wm_region(C));
return OPERATOR_FINISHED;
}
-void PAINT_OT_face_deselect_all(wmOperatorType *ot)
+void PAINT_OT_face_select_all(wmOperatorType *ot)
{
- ot->name= "Select Linked";
- ot->description= "Select linked faces under the mouse.";
- ot->idname= "PAINT_OT_face_deselect_all";
+ ot->name= "Face Selection";
+ ot->description= "Change selection for all faces.";
+ ot->idname= "PAINT_OT_face_select_all";
- ot->exec= face_deselect_all_exec;
+ ot->exec= face_select_all_exec;
ot->poll= facemask_paint_poll;
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ WM_operator_properties_select_all(ot);
}
diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c
index 8eddbb3c799..876d2bef4f0 100644
--- a/source/blender/editors/sculpt_paint/paint_vertex.c
+++ b/source/blender/editors/sculpt_paint/paint_vertex.c
@@ -1181,7 +1181,7 @@ static int set_wpaint(bContext *C, wmOperator *op) /* toggle */
/* verify if active weight group is also active bone */
par= modifiers_isDeformedByArmature(ob);
if(par && (par->mode & OB_MODE_POSE)) {
- bArmature *arm= ob->data;
+ bArmature *arm= par->data;
if(arm->act_bone)
ED_vgroup_select_by_name(ob, arm->act_bone->name);
@@ -1359,15 +1359,18 @@ static char *wpaint_make_validmap(Mesh *me, Object *ob)
if (md->type == eModifierType_Armature)
{
amd = (ArmatureModifierData*) md;
- pose = amd->object->pose;
-
- for (chan=pose->chanbase.first; chan; chan=chan->next) {
- if (chan->bone->flag & BONE_NO_DEFORM)
- continue;
- if (BLI_ghash_haskey(gh, chan->name)) {
- BLI_ghash_remove(gh, chan->name, NULL, NULL);
- BLI_ghash_insert(gh, chan->name, SET_INT_IN_POINTER(1));
+ if(amd->object && amd->object->pose) {
+ pose = amd->object->pose;
+
+ for (chan=pose->chanbase.first; chan; chan=chan->next) {
+ if (chan->bone->flag & BONE_NO_DEFORM)
+ continue;
+
+ if (BLI_ghash_haskey(gh, chan->name)) {
+ BLI_ghash_remove(gh, chan->name, NULL, NULL);
+ BLI_ghash_insert(gh, chan->name, SET_INT_IN_POINTER(1));
+ }
}
}
}
@@ -1404,7 +1407,7 @@ static int wpaint_stroke_test_start(bContext *C, wmOperator *op, wmEvent *event)
/*we can't assume mfaces have a correct origindex layer that indices to mpolys.
so instead we have to regenerate the tesselation faces altogether.*/
me->totface = mesh_recalcTesselation(&me->fdata, &me->ldata, &me->pdata,
- me->mvert, me->totface, me->totloop, me->totpoly, 1);
+ me->mvert, me->totface, me->totloop, me->totpoly, 1, 0);
mesh_update_customdata_pointers(me);
makeDerivedMesh(scene, ob, NULL, CD_MASK_BAREMESH);
@@ -1501,22 +1504,35 @@ static void wpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P
VPaint *wp= ts->wpaint;
Brush *brush = paint_brush(&wp->paint);
struct WPaintData *wpd= paint_stroke_mode_data(stroke);
- ViewContext *vc= &wpd->vc;
- Object *ob= vc->obact;
- Mesh *me= ob->data;
+ ViewContext *vc;
+ Object *ob;
+ Mesh *me;
float mat[4][4];
float paintweight= ts->vgroup_weight;
- int *indexar= wpd->indexar;
+ int *indexar;
int totindex, index, totw, flip;
float alpha;
float mval[2], pressure;
-
+
+ /* cannot paint if there is no stroke data */
+ if (wpd == NULL) {
+ // XXX: force a redraw here, since even though we can't paint,
+ // at least view won't freeze until stroke ends
+ ED_region_tag_redraw(CTX_wm_region(C));
+ return;
+ }
+
+ vc= &wpd->vc;
+ ob= vc->obact;
+ me= ob->data;
+ indexar= wpd->indexar;
+
view3d_operator_needs_opengl(C);
-
+
/* load projection matrix */
wmMultMatrix(ob->obmat);
wmGetSingleMatrix(mat);
- wmLoadMatrix(wpd->vc.rv3d->viewmat);
+ wmLoadMatrix(vc->rv3d->viewmat);
flip = RNA_boolean_get(itemptr, "flip");
pressure = RNA_float_get(itemptr, "pressure");
@@ -1631,13 +1647,17 @@ static void wpaint_stroke_done(bContext *C, struct PaintStroke *stroke)
Object *ob= CTX_data_active_object(C);
struct WPaintData *wpd= paint_stroke_mode_data(stroke);
- if(wpd->vertexcosnos)
- MEM_freeN(wpd->vertexcosnos);
- MEM_freeN(wpd->indexar);
+ if(wpd) {
+ if(wpd->vertexcosnos)
+ MEM_freeN(wpd->vertexcosnos);
+ MEM_freeN(wpd->indexar);
+
+ if (wpd->vgroup_validmap)
+ MEM_freeN(wpd->vgroup_validmap);
+
+ MEM_freeN(wpd);
+ }
- if (wpd->vgroup_validmap)
- MEM_freeN(wpd->vgroup_validmap);
-
/* frees prev buffer */
copy_wpaint_prev(ts->wpaint, NULL, 0);
@@ -1656,16 +1676,14 @@ static void wpaint_stroke_done(bContext *C, struct PaintStroke *stroke)
}
}
- DAG_id_flush_update(ob->data, OB_RECALC_DATA);
-
- MEM_freeN(wpd);
+ DAG_id_flush_update(ob->data, OB_RECALC_DATA);
}
static int wpaint_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
- op->customdata = paint_stroke_new(C, wpaint_stroke_test_start,
+ op->customdata = paint_stroke_new(C, NULL, wpaint_stroke_test_start,
wpaint_stroke_update_step,
wpaint_stroke_done);
@@ -1847,7 +1865,7 @@ static void vpaint_build_poly_facemap(struct VPaintData *vd, Mesh *me,
/*we can't assume mfaces have a correct origindex layer that indices to mpolys.
so instead we have to regenerate the tesselation faces altogether.*/
me->totface = mesh_recalcTesselation(&me->fdata, &me->ldata, &me->pdata,
- me->mvert, me->totface, me->totloop, me->totpoly, 1);
+ me->mvert, me->totface, me->totloop, me->totpoly, 1, 0);
mesh_update_customdata_pointers(me);
makeDerivedMesh(scene, ob, NULL, CD_MASK_BAREMESH);
@@ -2116,7 +2134,7 @@ static void vpaint_stroke_done(bContext *C, struct PaintStroke *stroke)
static int vpaint_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
- op->customdata = paint_stroke_new(C, vpaint_stroke_test_start,
+ op->customdata = paint_stroke_new(C, NULL, vpaint_stroke_test_start,
vpaint_stroke_update_step,
vpaint_stroke_done);
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c
index 4b33cff73ca..11a7cfb4a1d 100644
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source/blender/editors/sculpt_paint/sculpt.c
@@ -35,6 +35,9 @@
#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_dynstr.h"
+#include "BLI_ghash.h"
+#include "BLI_pbvh.h"
+#include "BLI_threads.h"
#include "DNA_armature_types.h"
#include "DNA_brush_types.h"
@@ -52,6 +55,7 @@
#include "DNA_color_types.h"
#include "BKE_brush.h"
+#include "BKE_cdderivedmesh.h"
#include "BKE_context.h"
#include "BKE_customdata.h"
#include "BKE_DerivedMesh.h"
@@ -106,15 +110,6 @@
*
*/
-/* ActiveData stores an Index into the mvert array of Mesh, plus Fade, which
- stores how far the vertex is from the brush center, scaled to the range [0,1]. */
-typedef struct ActiveData {
- struct ActiveData *next, *prev;
- unsigned int Index;
- float Fade;
- float dist;
-} ActiveData;
-
typedef enum StrokeFlags {
CLIP_X = 1,
CLIP_Y = 2,
@@ -133,7 +128,6 @@ typedef struct StrokeCache {
int flag;
float clip_tolerance[3];
float initial_mouse[2];
- float depth;
/* Variants */
float radius;
@@ -142,7 +136,10 @@ typedef struct StrokeCache {
float flip;
float pressure;
float mouse[2];
+ float bstrength;
float tex_mouse[2];
+
+ rctf prect;
/* The rest is temporary storage that isn't saved as a property */
@@ -150,32 +147,24 @@ typedef struct StrokeCache {
bglMats *mats;
- short (*orig_norms)[3]; /* Copy of the mesh vertices' normals */
+ /* Clean this up! */
+ ViewContext *vc;
+ Brush *brush;
+
float (*face_norms)[3]; /* Copy of the mesh faces' normals */
float rotation; /* Texture rotation (radians) for anchored and rake modes */
int pixel_radius, previous_pixel_radius;
- ListBase grab_active_verts[8]; /* The same list of verts is used throught grab stroke */
+ PBVHNode **grab_active_nodes[8]; /* The same list of nodes is used throught grab stroke */
+ int grab_active_totnode[8];
+ float grab_active_location[8][3];
float grab_delta[3], grab_delta_symmetry[3];
- float old_grab_location[3];
+ float old_grab_location[3], orig_grab_location[3];
int symmetry; /* Symmetry index between 0 and 7 */
float view_normal[3], view_normal_symmetry[3];
int last_rake[2]; /* Last location of updating rake rotation */
+ int original;
} StrokeCache;
-typedef struct RectNode {
- struct RectNode *next, *prev;
- rcti r;
-} RectNode;
-
-/* Used to store to 2D screen coordinates of each vertex in the mesh. */
-typedef struct ProjVert {
- short co[2];
-
- /* Used to mark whether a vertex is inside a rough bounding box
- containing the brush. */
- char inside;
-} ProjVert;
-
/* ===== OPENGL =====
*
* Simple functions to get data from the GL
@@ -192,7 +181,7 @@ static void projectf(bglMats *mats, const float v[3], float p[2])
p[1]= uy;
}
-static void project(bglMats *mats, const float v[3], short p[2])
+/*XXX: static void project(bglMats *mats, const float v[3], short p[2])
{
float f[2];
projectf(mats, v, f);
@@ -200,6 +189,355 @@ static void project(bglMats *mats, const float v[3], short p[2])
p[0]= f[0];
p[1]= f[1];
}
+*/
+
+/*** BVH Tree ***/
+
+/* Get a screen-space rectangle of the modified area */
+int sculpt_get_redraw_rect(ARegion *ar, RegionView3D *rv3d,
+ Object *ob, rcti *rect)
+{
+ StrokeCache *cache = ob->sculpt->cache;
+ float bb_min[3], bb_max[3], pmat[4][4];
+ int i, j, k;
+
+ if (G.rt == 1) {
+ rect->xmin = cache->prect.xmin;
+ rect->xmax = cache->prect.xmax;
+ rect->ymin = cache->prect.ymin;
+ rect->ymax = cache->prect.ymax;
+
+ return rect->xmin < rect->xmax && rect->ymin < rect->ymax;;
+ }
+
+ view3d_get_object_project_mat(rv3d, ob, pmat);
+
+ BLI_pbvh_redraw_BB(ob->sculpt->tree, bb_min, bb_max);
+
+ rect->xmin = rect->ymin = INT_MAX;
+ rect->xmax = rect->ymax = INT_MIN;
+
+ if(bb_min[0] > bb_max[0] || bb_min[1] > bb_max[1] || bb_min[2] > bb_max[2])
+ return 0;
+
+ for(i = 0; i < 2; ++i) {
+ for(j = 0; j < 2; ++j) {
+ for(k = 0; k < 2; ++k) {
+ float vec[3], proj[2];
+ vec[0] = i ? bb_min[0] : bb_max[0];
+ vec[1] = j ? bb_min[1] : bb_max[1];
+ vec[2] = k ? bb_min[2] : bb_max[2];
+ view3d_project_float(ar, vec, proj, pmat);
+ rect->xmin = MIN2(rect->xmin, proj[0]);
+ rect->xmax = MAX2(rect->xmax, proj[0]);
+ rect->ymin = MIN2(rect->ymin, proj[1]);
+ rect->ymax = MAX2(rect->ymax, proj[1]);
+ }
+ }
+ }
+
+ return rect->xmin < rect->xmax && rect->ymin < rect->ymax;
+}
+
+void sculpt_get_redraw_planes(float planes[4][4], ARegion *ar,
+ RegionView3D *rv3d, Object *ob)
+{
+ BoundBox *bb = MEM_callocN(sizeof(BoundBox), "sculpt boundbox");
+ bglMats mats;
+ StrokeCache *cache = ob->sculpt->cache;
+ rcti rect;
+ int i;
+
+ view3d_get_transformation(ar, rv3d, ob, &mats);
+ sculpt_get_redraw_rect(ar, rv3d,ob, &rect);
+
+#if 1
+ /* use some extra space just in case */
+ rect.xmin -= 2;
+ rect.xmax += 2;
+ rect.ymin -= 2;
+ rect.ymax += 2;
+#else
+ /* it was doing this before, allows to redraw a smaller
+ part of the screen but also gives artifaces .. */
+ rect.xmin += 2;
+ rect.xmax -= 2;
+ rect.ymin += 2;
+ rect.ymax -= 2;
+#endif
+
+ view3d_calculate_clipping(bb, planes, &mats, &rect);
+
+ for(i = 0; i < 16; ++i)
+ ((float*)planes)[i] = -((float*)planes)[i];
+
+ MEM_freeN(bb);
+
+ /* clear redraw flag from nodes */
+ BLI_pbvh_update(ob->sculpt->tree, PBVH_UpdateRedraw, NULL);
+
+ /*clear prect*/
+ cache->prect.xmin = FLT_MAX;
+ cache->prect.xmax = -FLT_MAX;
+ cache->prect.ymin = FLT_MAX;
+ cache->prect.ymax = -FLT_MAX;
+
+}
+
+/************************** Undo *************************/
+
+typedef struct SculptUndoNode {
+ struct SculptUndoNode *next, *prev;
+
+ char idname[MAX_ID_NAME]; /* name instead of pointer*/
+ void *node; /* only during push, not valid afterwards! */
+
+ float (*co)[3];
+ short (*no)[3];
+ int totvert;
+
+ /* non-multires */
+ int maxvert; /* to verify if totvert it still the same */
+ int *index; /* to restore into right location */
+
+ /* multires */
+ int maxgrid; /* same for grid */
+ int gridsize; /* same for grid */
+ int totgrid; /* to restore into right location */
+ int *grids; /* to restore into right location */
+} SculptUndoNode;
+
+static void update_cb(PBVHNode *node, void *data)
+{
+ BLI_pbvh_node_mark_update(node);
+}
+
+static void sculpt_undo_restore(bContext *C, ListBase *lb)
+{
+ Scene *scene = CTX_data_scene(C);
+ Object *ob = CTX_data_active_object(C);
+ DerivedMesh *dm = mesh_get_derived_final(scene, ob, 0);
+ SculptSession *ss = ob->sculpt;
+ SculptUndoNode *unode;
+ MVert *mvert;
+ MultiresModifierData *mmd;
+ int *index;
+ int i, j, update= 0;
+
+ sculpt_update_mesh_elements(scene, ob, 0);
+
+ for(unode=lb->first; unode; unode=unode->next) {
+ if(!(strcmp(unode->idname, ob->id.name)==0))
+ continue;
+
+ if(unode->maxvert) {
+ /* regular mesh restore */
+ if(ss->totvert != unode->maxvert)
+ continue;
+
+ index= unode->index;
+ mvert= ss->mvert;
+
+ for(i=0; i<unode->totvert; i++) {
+ swap_v3_v3(mvert[index[i]].co, unode->co[i]);
+ mvert[index[i]].flag |= ME_VERT_PBVH_UPDATE;
+ }
+ }
+ else if(unode->maxgrid) {
+ /* multires restore */
+ DMGridData **grids, *grid;
+ float (*co)[3];
+ int gridsize;
+
+ if(dm->getNumGrids(dm) != unode->maxgrid)
+ continue;
+ if(dm->getGridSize(dm) != unode->gridsize)
+ continue;
+
+ grids= dm->getGridData(dm);
+ gridsize= dm->getGridSize(dm);
+
+ co = unode->co;
+ for(j=0; j<unode->totgrid; j++) {
+ grid= grids[unode->grids[j]];
+
+ for(i=0; i<gridsize*gridsize; i++, co++)
+ swap_v3_v3(grid[i].co, co[0]);
+ }
+ }
+
+ update= 1;
+ }
+
+ if(update) {
+ if(ss->kb) sculpt_mesh_to_key(ss->ob, ss->kb);
+ if(ss->refkb) sculpt_key_to_mesh(ss->refkb, ob);
+
+ /* we update all nodes still, should be more clever, but also
+ needs to work correct when exiting/entering sculpt mode and
+ the nodes get recreated, though in that case it could do all */
+ BLI_pbvh_search_callback(ss->tree, NULL, NULL, update_cb, NULL);
+ BLI_pbvh_update(ss->tree, PBVH_UpdateBB|PBVH_UpdateOriginalBB|PBVH_UpdateRedraw, NULL);
+
+ if((mmd=sculpt_multires_active(ob)))
+ multires_mark_as_modified(ob);
+ }
+}
+
+static void sculpt_undo_free(ListBase *lb)
+{
+ SculptUndoNode *unode;
+
+ for(unode=lb->first; unode; unode=unode->next) {
+ if(unode->co)
+ MEM_freeN(unode->co);
+ if(unode->no)
+ MEM_freeN(unode->no);
+ if(unode->index)
+ MEM_freeN(unode->index);
+ if(unode->grids)
+ MEM_freeN(unode->grids);
+ }
+}
+
+static SculptUndoNode *sculpt_undo_get_node(SculptSession *ss, PBVHNode *node)
+{
+ ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH);
+ SculptUndoNode *unode;
+
+ if(!lb)
+ return NULL;
+
+ for(unode=lb->first; unode; unode=unode->next)
+ if(unode->node == node)
+ return unode;
+
+ return NULL;
+}
+
+static SculptUndoNode *sculpt_undo_push_node(SculptSession *ss, PBVHNode *node)
+{
+ ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH);
+ Object *ob= ss->ob;
+ SculptUndoNode *unode;
+ int totvert, allvert, totgrid, maxgrid, gridsize, *grids;
+
+ /* list is manipulated by multiple threads, so we lock */
+ BLI_lock_thread(LOCK_CUSTOM1);
+
+ if((unode= sculpt_undo_get_node(ss, node))) {
+ BLI_unlock_thread(LOCK_CUSTOM1);
+ return unode;
+ }
+
+ unode= MEM_callocN(sizeof(SculptUndoNode), "SculptUndoNode");
+ strcpy(unode->idname, ob->id.name);
+ unode->node= node;
+
+ BLI_pbvh_node_num_verts(ss->tree, node, &totvert, &allvert);
+ BLI_pbvh_node_get_grids(ss->tree, node, &grids, &totgrid,
+ &maxgrid, &gridsize, NULL, NULL);
+
+ unode->totvert= totvert;
+ /* we will use this while sculpting, is mapalloc slow to access then? */
+ unode->co= MEM_mapallocN(sizeof(float)*3*allvert, "SculptUndoNode.co");
+ unode->no= MEM_mapallocN(sizeof(short)*3*allvert, "SculptUndoNode.no");
+ undo_paint_push_count_alloc(UNDO_PAINT_MESH, (sizeof(float)*3 + sizeof(short)*3 + sizeof(int))*allvert);
+ BLI_addtail(lb, unode);
+
+ if(maxgrid) {
+ /* multires */
+ unode->maxgrid= maxgrid;
+ unode->totgrid= totgrid;
+ unode->gridsize= gridsize;
+ unode->grids= MEM_mapallocN(sizeof(int)*totgrid, "SculptUndoNode.grids");
+ }
+ else {
+ /* regular mesh */
+ unode->maxvert= ss->totvert;
+ unode->index= MEM_mapallocN(sizeof(int)*allvert, "SculptUndoNode.index");
+ }
+
+ BLI_unlock_thread(LOCK_CUSTOM1);
+
+ /* copy threaded, hopefully this is the performance critical part */
+ {
+ PBVHVertexIter vd;
+
+ BLI_pbvh_vertex_iter_begin(ss->tree, node, vd, PBVH_ITER_ALL) {
+ copy_v3_v3(unode->co[vd.i], vd.co);
+ if(vd.no) VECCOPY(unode->no[vd.i], vd.no)
+ else normal_float_to_short_v3(unode->no[vd.i], vd.fno);
+ if(vd.vert_indices) unode->index[vd.i]= vd.vert_indices[vd.i];
+ }
+ BLI_pbvh_vertex_iter_end;
+ }
+
+ if(unode->grids)
+ memcpy(unode->grids, grids, sizeof(int)*totgrid);
+
+ return unode;
+}
+
+static void sculpt_undo_push_begin(SculptSession *ss, char *name)
+{
+ undo_paint_push_begin(UNDO_PAINT_MESH, name,
+ sculpt_undo_restore, sculpt_undo_free);
+}
+
+static void sculpt_undo_push_end(SculptSession *ss)
+{
+ ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH);
+ SculptUndoNode *unode;
+
+ /* we don't need normals in the undo stack */
+ for(unode=lb->first; unode; unode=unode->next) {
+ if(unode->no) {
+ MEM_freeN(unode->no);
+ unode->no= NULL;
+ }
+ }
+
+ undo_paint_push_end(UNDO_PAINT_MESH);
+}
+
+void ED_sculpt_force_update(bContext *C)
+{
+ Object *ob= CTX_data_active_object(C);
+
+ if(ob && (ob->mode & OB_MODE_SCULPT))
+ multires_force_update(ob);
+}
+
+/************************ Brush Testing *******************/
+
+typedef struct SculptBrushTest {
+ float radius_squared;
+ float location[3];
+
+ float dist;
+} SculptBrushTest;
+
+static void sculpt_brush_test_init(SculptSession *ss, SculptBrushTest *test)
+{
+ test->radius_squared= ss->cache->radius*ss->cache->radius;
+ copy_v3_v3(test->location, ss->cache->location);
+}
+
+static int sculpt_brush_test(SculptBrushTest *test, float co[3])
+{
+ float distsq, delta[3];
+
+ sub_v3_v3v3(delta, co, test->location);
+ distsq = INPR(delta, delta);
+
+ if(distsq < test->radius_squared) {
+ test->dist = sqrt(distsq);
+ return 1;
+ }
+
+ return 0;
+}
/* ===== Sculpting =====
*
@@ -239,6 +577,169 @@ static float brush_strength(Sculpt *sd, StrokeCache *cache)
}
}
+/* Uses symm to selectively flip any axis of a coordinate. */
+static void flip_coord(float out[3], float in[3], const char symm)
+{
+ if(symm & SCULPT_SYMM_X)
+ out[0]= -in[0];
+ else
+ out[0]= in[0];
+ if(symm & SCULPT_SYMM_Y)
+ out[1]= -in[1];
+ else
+ out[1]= in[1];
+ if(symm & SCULPT_SYMM_Z)
+ out[2]= -in[2];
+ else
+ out[2]= in[2];
+}
+
+/* Get a pixel from the texcache at (px, py) */
+static unsigned char get_texcache_pixel(const SculptSession *ss, int px, int py)
+{
+ unsigned *p;
+ p = ss->texcache + py * ss->texcache_side + px;
+ return ((unsigned char*)(p))[0];
+}
+
+static float get_texcache_pixel_bilinear(const SculptSession *ss, float u, float v)
+{
+ int x, y, x2, y2;
+ const int tc_max = ss->texcache_side - 1;
+ float urat, vrat, uopp;
+
+ if(u < 0) u = 0;
+ else if(u >= ss->texcache_side) u = tc_max;
+ if(v < 0) v = 0;
+ else if(v >= ss->texcache_side) v = tc_max;
+
+ x = floor(u);
+ y = floor(v);
+ x2 = x + 1;
+ y2 = y + 1;
+
+ if(x2 > ss->texcache_side) x2 = tc_max;
+ if(y2 > ss->texcache_side) y2 = tc_max;
+
+ urat = u - x;
+ vrat = v - y;
+ uopp = 1 - urat;
+
+ return ((get_texcache_pixel(ss, x, y) * uopp +
+ get_texcache_pixel(ss, x2, y) * urat) * (1 - vrat) +
+ (get_texcache_pixel(ss, x, y2) * uopp +
+ get_texcache_pixel(ss, x2, y2) * urat) * vrat) / 255.0;
+}
+
+/* Return a multiplier for brush strength on a particular vertex. */
+static float tex_strength(SculptSession *ss, Brush *br, float *point, const float len)
+{
+ MTex *tex = NULL;
+ float avg= 1;
+
+ if(br->texact >= 0)
+ tex = br->mtex[br->texact];
+
+ if(!tex) {
+ avg= 1;
+ }
+ else if(tex->brush_map_mode == MTEX_MAP_MODE_3D) {
+ float jnk;
+
+ /* Get strength by feeding the vertex
+ location directly into a texture */
+ externtex(tex, point, &avg,
+ &jnk, &jnk, &jnk, &jnk);
+ }
+ else if(ss->texcache) {
+ const float bsize= ss->cache->pixel_radius * 2;
+ const float rot= tex->rot + ss->cache->rotation;
+ int px, py;
+ float flip[3], point_2d[2];
+
+ /* If the active area is being applied for symmetry, flip it
+ across the symmetry axis in order to project it. This insures
+ that the brush texture will be oriented correctly. */
+ copy_v3_v3(flip, point);
+ flip_coord(flip, flip, ss->cache->symmetry);
+ projectf(ss->cache->mats, flip, point_2d);
+
+ /* For Tile and Drag modes, get the 2D screen coordinates of the
+ and scale them up or down to the texture size. */
+ if(tex->brush_map_mode == MTEX_MAP_MODE_TILED) {
+ const int sx= (const int)tex->size[0];
+ const int sy= (const int)tex->size[1];
+
+ float fx= point_2d[0];
+ float fy= point_2d[1];
+
+ float angle= atan2(fy, fx) - rot;
+ float flen= sqrtf(fx*fx + fy*fy);
+
+ if(rot<0.001 && rot>-0.001) {
+ px= point_2d[0];
+ py= point_2d[1];
+ } else {
+ px= flen * cos(angle) + 2000;
+ py= flen * sin(angle) + 2000;
+ }
+ if(sx != 1)
+ px %= sx-1;
+ if(sy != 1)
+ py %= sy-1;
+ avg= get_texcache_pixel_bilinear(ss, ss->texcache_side*px/sx, ss->texcache_side*py/sy);
+ }
+ else if(tex->brush_map_mode == MTEX_MAP_MODE_FIXED) {
+ float fx= (point_2d[0] - ss->cache->tex_mouse[0]) / bsize;
+ float fy= (point_2d[1] - ss->cache->tex_mouse[1]) / bsize;
+
+ float angle= atan2(fy, fx) - rot;
+ float flen= sqrtf(fx*fx + fy*fy);
+
+ fx = flen * cos(angle) + 0.5;
+ fy = flen * sin(angle) + 0.5;
+
+ avg= get_texcache_pixel_bilinear(ss, fx * ss->texcache_side, fy * ss->texcache_side);
+ }
+ }
+
+ avg*= brush_curve_strength(br, len, ss->cache->radius); /* Falloff curve */
+
+ return avg;
+}
+
+typedef struct {
+ Sculpt *sd;
+ SculptSession *ss;
+ float radius_squared;
+ ListBase *active_verts;
+ float area_normal[3];
+} SculptSearchSphereData;
+
+/* Test AABB against sphere */
+static int sculpt_search_sphere_cb(PBVHNode *node, void *data_v)
+{
+ SculptSearchSphereData *data = data_v;
+ float *center = data->ss->cache->location, nearest[3];
+ float t[3], bb_min[3], bb_max[3];
+ int i;
+
+ BLI_pbvh_node_get_BB(node, bb_min, bb_max);
+
+ for(i = 0; i < 3; ++i) {
+ if(bb_min[i] > center[i])
+ nearest[i] = bb_min[i];
+ else if(bb_max[i] < center[i])
+ nearest[i] = bb_max[i];
+ else
+ nearest[i] = center[i];
+ }
+
+ sub_v3_v3v3(t, center, nearest);
+
+ return t[0] * t[0] + t[1] * t[1] + t[2] * t[2] < data->radius_squared;
+}
+
/* Handles clipping against a mirror modifier and SCULPT_LOCK axis flags */
static void sculpt_clip(Sculpt *sd, SculptSession *ss, float *co, const float val[3])
{
@@ -255,12 +756,8 @@ static void sculpt_clip(Sculpt *sd, SculptSession *ss, float *co, const float va
}
}
-static void add_norm_if(float view_vec[3], float out[3], float out_flip[3], const short no[3])
+static void add_norm_if(float view_vec[3], float out[3], float out_flip[3], float fno[3])
{
- float fno[3] = {no[0], no[1], no[2]};
-
- normalize_v3(fno);
-
if((dot_v3v3(view_vec, fno)) > 0) {
add_v3_v3v3(out, out, fno);
} else {
@@ -268,74 +765,123 @@ static void add_norm_if(float view_vec[3], float out[3], float out_flip[3], cons
}
}
-/* Currently only for the draw brush; finds average normal for all active
- vertices */
-static void calc_area_normal(Sculpt *sd, SculptSession *ss, float out[3], const ListBase* active_verts)
+/* For draw/layer/flatten; finds average normal for all active vertices */
+static void calc_area_normal(Sculpt *sd, SculptSession *ss, float area_normal[3], PBVHNode **nodes, int totnode)
{
- Brush *brush = paint_brush(&sd->paint);
+ PBVH *bvh= ss->tree;
StrokeCache *cache = ss->cache;
- ActiveData *node = active_verts->first;
const int view = 0; /* XXX: should probably be a flag, not number: brush_type==SCULPT_TOOL_DRAW ? sculptmode_brush()->view : 0; */
- float out_flip[3];
- float *out_dir = cache->view_normal_symmetry;
-
- out[0]=out[1]=out[2] = out_flip[0]=out_flip[1]=out_flip[2] = 0;
+ float out[3] = {0.0f, 0.0f, 0.0f};
+ float out_flip[3] = {0.0f, 0.0f, 0.0f};
+ float out_dir[3];
+ int n;
+
+ copy_v3_v3(out_dir, cache->view_normal_symmetry);
+
+ /* threaded loop over nodes */
+ #pragma omp parallel for private(n) schedule(static)
+ for(n=0; n<totnode; n++) {
+ PBVHVertexIter vd;
+ SculptBrushTest test;
+ SculptUndoNode *unode;
+ float fno[3];
+ float nout[3] = {0.0f, 0.0f, 0.0f};
+ float nout_flip[3] = {0.0f, 0.0f, 0.0f};
+
+ // XXX push instead of get for thread safety in draw
+ // brush .. lame, but also not harmful really
+ unode= sculpt_undo_push_node(ss, nodes[n]);
+ sculpt_brush_test_init(ss, &test);
+
+ if(ss->cache->original) {
+ BLI_pbvh_vertex_iter_begin(bvh, nodes[n], vd, PBVH_ITER_UNIQUE) {
+ if(sculpt_brush_test(&test, unode->co[vd.i])) {
+ normal_short_to_float_v3(fno, unode->no[vd.i]);
+ add_norm_if(out_dir, nout, nout_flip, fno);
+ }
+ }
+ BLI_pbvh_vertex_iter_end;
+ }
+ else {
+ BLI_pbvh_vertex_iter_begin(bvh, nodes[n], vd, PBVH_ITER_UNIQUE) {
+ if(sculpt_brush_test(&test, vd.co)) {
+ if(vd.no) {
+ normal_short_to_float_v3(fno, vd.no);
+ add_norm_if(out_dir, nout, nout_flip, fno);
+ }
+ else
+ add_norm_if(out_dir, nout, nout_flip, vd.fno);
+ }
+ }
+ BLI_pbvh_vertex_iter_end;
+ }
- if(brush->flag & BRUSH_ANCHORED) {
- for(; node; node = node->next)
- add_norm_if(out_dir, out, out_flip, cache->orig_norms[node->Index]);
- }
- else {
- for(; node; node = node->next)
- add_norm_if(out_dir, out, out_flip, ss->mvert[node->Index].no);
+ #pragma omp critical
+ {
+ /* we sum per node and add together later for threads */
+ add_v3_v3v3(out, out, nout);
+ add_v3_v3v3(out_flip, out_flip, nout_flip);
+ }
}
if (out[0]==0.0 && out[1]==0.0 && out[2]==0.0) {
- VECCOPY(out, out_flip);
+ copy_v3_v3(out, out_flip);
}
normalize_v3(out);
- if(out_dir) {
- out[0] = out_dir[0] * view + out[0] * (10-view);
- out[1] = out_dir[1] * view + out[1] * (10-view);
- out[2] = out_dir[2] * view + out[2] * (10-view);
- }
+ out[0] = out_dir[0] * view + out[0] * (10-view);
+ out[1] = out_dir[1] * view + out[1] * (10-view);
+ out[2] = out_dir[2] * view + out[2] * (10-view);
normalize_v3(out);
+ copy_v3_v3(area_normal, out);
}
-static void do_draw_brush(Sculpt *sd, SculptSession *ss, const ListBase* active_verts)
+static void do_draw_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode)
{
- float area_normal[3];
- ActiveData *node= active_verts->first;
- float* buffer;
+ Brush *brush = paint_brush(&sd->paint);
+ float offset[3], area_normal[3];
+ float bstrength= ss->cache->bstrength;
+ int n;
+
+ /* area normal */
+ calc_area_normal(sd, ss, area_normal, nodes, totnode);
+
+ /* offset with as much as possible factored in already */
+ offset[0]= area_normal[0]*ss->cache->radius*ss->cache->scale[0]*bstrength;
+ offset[1]= area_normal[1]*ss->cache->radius*ss->cache->scale[1]*bstrength;
+ offset[2]= area_normal[2]*ss->cache->radius*ss->cache->scale[2]*bstrength;
+
+ /* threaded loop over nodes */
+ #pragma omp parallel for private(n) schedule(static)
+ for(n=0; n<totnode; n++) {
+ PBVHVertexIter vd;
+ SculptBrushTest test;
+ int update = 0;
+
+ sculpt_undo_push_node(ss, nodes[n]);
+ sculpt_brush_test_init(ss, &test);
- calc_area_normal(sd, ss, area_normal, active_verts);
-
- buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0;
+ BLI_pbvh_vertex_iter_begin(ss->tree, nodes[n], vd, PBVH_ITER_UNIQUE) {
+ if(sculpt_brush_test(&test, vd.co)) {
+ /* offset vertex */
+ float fade = tex_strength(ss, brush, vd.co, test.dist);
+ float val[3]= {vd.co[0] + offset[0]*fade,
+ vd.co[1] + offset[1]*fade,
+ vd.co[2] + offset[2]*fade};
- while(node){
- float *co= ss->mvert[node->Index].co;
+ sculpt_clip(sd, ss, vd.co, val);
+ if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE;
- const float val[3]= {co[0]+area_normal[0]*ss->cache->radius*node->Fade*ss->cache->scale[0],
- co[1]+area_normal[1]*ss->cache->radius*node->Fade*ss->cache->scale[1],
- co[2]+area_normal[2]*ss->cache->radius*node->Fade*ss->cache->scale[2]};
-
- if( buffer != 0 ) {
- IndexLink *cur = &ss->drawobject->indices[node->Index];
- while( cur != 0 && cur->element != -1 ) {
- sculpt_clip(sd, ss, &buffer[cur->element*3], val);
- cur = cur->next;
+ update = 1;
}
}
-
- sculpt_clip(sd, ss, co, val);
-
- node= node->next;
+ BLI_pbvh_vertex_iter_end;
+
+ if (update)
+ BLI_pbvh_node_mark_update(nodes[n]);
}
- if( buffer != 0 )
- GPU_buffer_unlock( ss->drawobject->vertices );
}
/* For the smooth brush, uses the neighboring vertices around vert to calculate
@@ -382,195 +928,340 @@ static void neighbor_average(SculptSession *ss, float avg[3], const int vert)
copy_v3_v3(avg, ss->mvert[vert].co);
}
-static void do_smooth_brush(Sculpt *s, SculptSession *ss, const ListBase* active_verts)
+static void do_mesh_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode *node)
{
- ActiveData *node= active_verts->first;
- float *buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0;
- int i;
+ Brush *brush = paint_brush(&sd->paint);
+ float bstrength= ss->cache->bstrength;
+ PBVHVertexIter vd;
+ SculptBrushTest test;
- for(i = 0; i < 2; ++i) {
- while(node){
- float *co= ss->mvert[node->Index].co;
+ sculpt_brush_test_init(ss, &test);
+
+ BLI_pbvh_vertex_iter_begin(ss->tree, node, vd, PBVH_ITER_UNIQUE) {
+ if(sculpt_brush_test(&test, vd.co)) {
+ float fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength;
float avg[3], val[3];
- neighbor_average(ss, avg, node->Index);
- val[0] = co[0]+(avg[0]-co[0])*node->Fade;
- val[1] = co[1]+(avg[1]-co[1])*node->Fade;
- val[2] = co[2]+(avg[2]-co[2])*node->Fade;
+ neighbor_average(ss, avg, vd.vert_indices[vd.i]);
+ val[0] = vd.co[0]+(avg[0]-vd.co[0])*fade;
+ val[1] = vd.co[1]+(avg[1]-vd.co[1])*fade;
+ val[2] = vd.co[2]+(avg[2]-vd.co[2])*fade;
+
+ sculpt_clip(sd, ss, vd.co, val);
+ if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE;
+ }
+ }
+ BLI_pbvh_vertex_iter_end;
+}
+
+static void do_multires_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode *node)
+{
+ Brush *brush = paint_brush(&sd->paint);
+ SculptBrushTest test;
+ DMGridData **griddata, *data;
+ DMGridAdjacency *gridadj, *adj;
+ float bstrength= ss->cache->bstrength;
+ float co[3], (*tmpgrid)[3];
+ int v1, v2, v3, v4;
+ int *grid_indices, totgrid, gridsize, i, x, y;
- sculpt_clip(s, ss, co, val);
- if( buffer != 0 ) {
- IndexLink *cur = &ss->drawobject->indices[node->Index];
- while( cur != 0 && cur->element != -1 ) {
- sculpt_clip(s, ss, &buffer[cur->element*3], val);
- cur = cur->next;
+ sculpt_brush_test_init(ss, &test);
+
+ BLI_pbvh_node_get_grids(ss->tree, node, &grid_indices, &totgrid,
+ NULL, &gridsize, &griddata, &gridadj);
+
+ #pragma omp critical
+ tmpgrid= MEM_mallocN(sizeof(float)*3*gridsize*gridsize, "tmpgrid");
+
+ for(i = 0; i < totgrid; ++i) {
+ data = griddata[grid_indices[i]];
+ adj = &gridadj[grid_indices[i]];
+
+ memset(tmpgrid, 0, sizeof(float)*3*gridsize*gridsize);
+
+ /* average grid values */
+ for(y = 0; y < gridsize-1; ++y) {
+ for(x = 0; x < gridsize-1; ++x) {
+ v1 = x + y*gridsize;
+ v2 = (x + 1) + y*gridsize;
+ v3 = (x + 1) + (y + 1)*gridsize;
+ v4 = x + (y + 1)*gridsize;
+
+ cent_quad_v3(co, data[v1].co, data[v2].co, data[v3].co, data[v4].co);
+ mul_v3_fl(co, 0.25f);
+
+ add_v3_v3(tmpgrid[v1], co);
+ add_v3_v3(tmpgrid[v2], co);
+ add_v3_v3(tmpgrid[v3], co);
+ add_v3_v3(tmpgrid[v4], co);
+ }
+ }
+
+ /* blend with existing coordinates */
+ for(y = 0; y < gridsize; ++y) {
+ for(x = 0; x < gridsize; ++x) {
+ if(x == 0 && adj->index[0] == -1) continue;
+ if(x == gridsize - 1 && adj->index[2] == -1) continue;
+ if(y == 0 && adj->index[3] == -1) continue;
+ if(y == gridsize - 1 && adj->index[1] == -1) continue;
+
+ copy_v3_v3(co, data[x + y*gridsize].co);
+
+ if(sculpt_brush_test(&test, co)) {
+ float fade = tex_strength(ss, brush, co, test.dist)*bstrength;
+ float avg[3], val[3];
+
+ copy_v3_v3(avg, tmpgrid[x + y*gridsize]);
+ if(x == 0 || x == gridsize - 1)
+ mul_v3_fl(avg, 2.0f);
+ if(y == 0 || y == gridsize - 1)
+ mul_v3_fl(avg, 2.0f);
+
+ val[0] = co[0]+(avg[0]-co[0])*fade;
+ val[1] = co[1]+(avg[1]-co[1])*fade;
+ val[2] = co[2]+(avg[2]-co[2])*fade;
+
+ sculpt_clip(sd, ss, data[x + y*gridsize].co, val);
}
}
- node= node->next;
}
}
- if( buffer != 0 )
- GPU_buffer_unlock( ss->drawobject->vertices );
+
+ #pragma omp critical
+ MEM_freeN(tmpgrid);
}
-static void do_pinch_brush(Sculpt *s, SculptSession *ss, const ListBase* active_verts)
+static void do_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode)
{
- ActiveData *node= active_verts->first;
- float *buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0;
+ int iteration, n;
- while(node) {
- float *co= ss->mvert[node->Index].co;
- const float val[3]= {co[0]+(ss->cache->location[0]-co[0])*node->Fade,
- co[1]+(ss->cache->location[1]-co[1])*node->Fade,
- co[2]+(ss->cache->location[2]-co[2])*node->Fade};
+ for(iteration = 0; iteration < 2; ++iteration) {
+ #pragma omp parallel for private(n) schedule(static)
+ for(n=0; n<totnode; n++) {
+ sculpt_undo_push_node(ss, nodes[n]);
- if( buffer != 0 ) {
- IndexLink *cur = &ss->drawobject->indices[node->Index];
- while( cur != 0 && cur->element != -1 ) {
- sculpt_clip(s, ss, &buffer[cur->element*3], val);
- cur = cur->next;
+ if(ss->fmap)
+ do_mesh_smooth_brush(sd, ss, nodes[n]);
+ else
+ do_multires_smooth_brush(sd, ss, nodes[n]);
+
+ BLI_pbvh_node_mark_update(nodes[n]);
+ }
+
+ if(!ss->fmap)
+ multires_stitch_grids(ss->ob);
+ }
+}
+
+static void do_pinch_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode)
+{
+ Brush *brush = paint_brush(&sd->paint);
+ float bstrength= ss->cache->bstrength;
+ int n;
+
+ #pragma omp parallel for private(n) schedule(static)
+ for(n=0; n<totnode; n++) {
+ PBVHVertexIter vd;
+ SculptBrushTest test;
+
+ sculpt_undo_push_node(ss, nodes[n]);
+ sculpt_brush_test_init(ss, &test);
+
+ BLI_pbvh_vertex_iter_begin(ss->tree, nodes[n], vd, PBVH_ITER_UNIQUE) {
+ if(sculpt_brush_test(&test, vd.co)) {
+ float fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength;
+ float val[3]= {vd.co[0]+(test.location[0]-vd.co[0])*fade,
+ vd.co[1]+(test.location[1]-vd.co[1])*fade,
+ vd.co[2]+(test.location[2]-vd.co[2])*fade};
+
+ sculpt_clip(sd, ss, vd.co, val);
+ if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE;
}
}
+ BLI_pbvh_vertex_iter_end;
- sculpt_clip(s, ss, co, val);
- node= node->next;
+ BLI_pbvh_node_mark_update(nodes[n]);
}
- if( buffer != 0 )
- GPU_buffer_unlock( ss->drawobject->vertices );
}
-static void do_grab_brush(Sculpt *sd, SculptSession *ss)
+static void do_grab_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode)
{
- ActiveData *node= ss->cache->grab_active_verts[ss->cache->symmetry].first;
- float add[3];
+ Brush *brush = paint_brush(&sd->paint);
+ float bstrength= ss->cache->bstrength;
float grab_delta[3];
- float *buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0;
+ int n;
copy_v3_v3(grab_delta, ss->cache->grab_delta_symmetry);
-
- while(node) {
- float *co= ss->mvert[node->Index].co;
+
+ #pragma omp parallel for private(n) schedule(static)
+ for(n=0; n<totnode; n++) {
+ PBVHVertexIter vd;
+ SculptBrushTest test;
+ float (*origco)[3];
- copy_v3_v3(add, grab_delta);
- mul_v3_fl(add, node->Fade);
- add_v3_v3v3(add, add, co);
-
- if( buffer != 0 ) {
- IndexLink *cur = &ss->drawobject->indices[node->Index];
- while( cur != 0 && cur->element != -1 ) {
- sculpt_clip(sd, ss, &buffer[cur->element*3], add);
- cur = cur->next;
+ origco= sculpt_undo_push_node(ss, nodes[n])->co;
+ sculpt_brush_test_init(ss, &test);
+
+ BLI_pbvh_vertex_iter_begin(ss->tree, nodes[n], vd, PBVH_ITER_UNIQUE) {
+ if(sculpt_brush_test(&test, origco[vd.i])) {
+ float fade = tex_strength(ss, brush, origco[vd.i], test.dist)*bstrength;
+ float add[3]= {vd.co[0]+fade*grab_delta[0],
+ vd.co[1]+fade*grab_delta[1],
+ vd.co[2]+fade*grab_delta[2]};
+
+ sculpt_clip(sd, ss, vd.co, add);
+ if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE;
}
}
+ BLI_pbvh_vertex_iter_end;
- sculpt_clip(sd, ss, co, add);
-
- node= node->next;
+ BLI_pbvh_node_mark_update(nodes[n]);
}
- if( buffer != 0 )
- GPU_buffer_unlock( ss->drawobject->vertices );
-
}
-static void do_layer_brush(Sculpt *sd, SculptSession *ss, const ListBase *active_verts)
+static void do_layer_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode)
{
- float area_normal[3];
- ActiveData *node= active_verts->first;
- float *buffer;
+ Brush *brush = paint_brush(&sd->paint);
+ float bstrength= ss->cache->bstrength;
+ float area_normal[3], offset[3];
float lim= ss->cache->radius / 4;
+ int n;
+
+ /* XXX not working yet for multires */
+ if(ss->multires)
+ return;
if(ss->cache->flip)
lim = -lim;
- calc_area_normal(sd, ss, area_normal, active_verts);
+ calc_area_normal(sd, ss, area_normal, nodes, totnode);
- buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0;
- while(node){
- float *disp= &ss->layer_disps[node->Index];
- float *co= ss->mvert[node->Index].co;
- float val[3];
-
- *disp+= node->Fade;
-
- /* Don't let the displacement go past the limit */
- if((lim < 0 && *disp < lim) || (lim > 0 && *disp > lim))
- *disp = lim;
+ offset[0]= ss->cache->scale[0]*area_normal[0];
+ offset[1]= ss->cache->scale[1]*area_normal[1];
+ offset[2]= ss->cache->scale[2]*area_normal[2];
+
+ #pragma omp parallel for private(n) schedule(static)
+ for(n=0; n<totnode; n++) {
+ PBVHVertexIter vd;
+ SculptBrushTest test;
+ float (*origco)[3];
- val[0] = ss->mesh_co_orig[node->Index][0]+area_normal[0] * *disp*ss->cache->scale[0];
- val[1] = ss->mesh_co_orig[node->Index][1]+area_normal[1] * *disp*ss->cache->scale[1];
- val[2] = ss->mesh_co_orig[node->Index][2]+area_normal[2] * *disp*ss->cache->scale[2];
-
- if( buffer != 0 ) {
- IndexLink *cur = &ss->drawobject->indices[node->Index];
- while( cur != 0 && cur->element != -1 ) {
- sculpt_clip(sd, ss, &buffer[cur->element*3], val);
- cur = cur->next;
+ origco= sculpt_undo_push_node(ss, nodes[n])->co;
+ sculpt_brush_test_init(ss, &test);
+
+ BLI_pbvh_vertex_iter_begin(ss->tree, nodes[n], vd, PBVH_ITER_UNIQUE) {
+ if(sculpt_brush_test(&test, vd.co)) {
+ float fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength;
+ int index= vd.vert_indices[vd.i];
+ float *disp= &ss->layer_disps[index];
+ float val[3];
+
+ *disp+= fade;
+
+ /* Don't let the displacement go past the limit */
+ if((lim < 0 && *disp < lim) || (lim > 0 && *disp > lim))
+ *disp = lim;
+
+ if(ss->layer_co && (brush->flag & BRUSH_PERSISTENT)) {
+ /* persistent base */
+ val[0] = ss->layer_co[index][0] + (*disp)*offset[0];
+ val[1] = ss->layer_co[index][1] + (*disp)*offset[1];
+ val[2] = ss->layer_co[index][2] + (*disp)*offset[2];
+ }
+ else {
+ val[0] = origco[vd.i][0] + (*disp)*offset[0];
+ val[1] = origco[vd.i][1] + (*disp)*offset[1];
+ val[2] = origco[vd.i][2] + (*disp)*offset[2];
+ }
+
+ sculpt_clip(sd, ss, vd.co, val);
+ if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE;
}
}
+ BLI_pbvh_vertex_iter_end;
- sculpt_clip(sd, ss, co, val);
-
- node= node->next;
+ BLI_pbvh_node_mark_update(nodes[n]);
}
- if( buffer != 0 )
- GPU_buffer_unlock( ss->drawobject->vertices );
}
-static void do_inflate_brush(Sculpt *s, SculptSession *ss, const ListBase *active_verts)
+static void do_inflate_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode)
{
- ActiveData *node= active_verts->first;
- float add[3];
- float *buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0;
-
- while(node) {
- float *co= ss->mvert[node->Index].co;
- short *no= ss->mvert[node->Index].no;
+ Brush *brush = paint_brush(&sd->paint);
+ float bstrength= ss->cache->bstrength;
+ int n;
- add[0]= no[0]/ 32767.0f;
- add[1]= no[1]/ 32767.0f;
- add[2]= no[2]/ 32767.0f;
- mul_v3_fl(add, node->Fade * ss->cache->radius);
- add[0]*= ss->cache->scale[0];
- add[1]*= ss->cache->scale[1];
- add[2]*= ss->cache->scale[2];
- add_v3_v3v3(add, add, co);
+ #pragma omp parallel for private(n) schedule(static)
+ for(n=0; n<totnode; n++) {
+ PBVHVertexIter vd;
+ SculptBrushTest test;
- if( buffer != 0 ) {
- IndexLink *cur = &ss->drawobject->indices[node->Index];
- while( cur != 0 && cur->element != -1 ) {
- sculpt_clip(s, ss, &buffer[cur->element*3], add);
- cur = cur->next;
+ sculpt_undo_push_node(ss, nodes[n]);
+ sculpt_brush_test_init(ss, &test);
+
+ BLI_pbvh_vertex_iter_begin(ss->tree, nodes[n], vd, PBVH_ITER_UNIQUE) {
+ if(sculpt_brush_test(&test, vd.co)) {
+ float fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength;
+ float add[3];
+
+ if(vd.fno) copy_v3_v3(add, vd.fno);
+ else normal_short_to_float_v3(add, vd.no);
+
+ mul_v3_fl(add, fade * ss->cache->radius);
+ add[0]*= ss->cache->scale[0];
+ add[1]*= ss->cache->scale[1];
+ add[2]*= ss->cache->scale[2];
+ add_v3_v3v3(add, add, vd.co);
+
+ sculpt_clip(sd, ss, vd.co, add);
+ if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE;
}
}
+ BLI_pbvh_vertex_iter_end;
- sculpt_clip(s, ss, co, add);
-
- node= node->next;
+ BLI_pbvh_node_mark_update(nodes[n]);
}
- if( buffer != 0 )
- GPU_buffer_unlock( ss->drawobject->vertices );
}
-static void calc_flatten_center(SculptSession *ss, ActiveData *node, float co[3])
+static void calc_flatten_center(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, float co[3])
{
- ActiveData *outer[FLATTEN_SAMPLE_SIZE];
- int i;
+ float outer_dist[FLATTEN_SAMPLE_SIZE];
+ float outer_co[FLATTEN_SAMPLE_SIZE][3];
+ int i, n;
- for(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i)
- outer[i] = node;
+ for(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i) {
+ zero_v3(outer_co[i]);
+ outer_dist[i]= -1.0f;
+ }
+
+ #pragma omp parallel for private(n) schedule(static)
+ for(n=0; n<totnode; n++) {
+ PBVHVertexIter vd;
+ SculptBrushTest test;
+ int j;
- for(; node; node = node->next) {
- for(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i) {
- if(node->dist > outer[i]->dist) {
- outer[i] = node;
- break;
+ sculpt_undo_push_node(ss, nodes[n]);
+ sculpt_brush_test_init(ss, &test);
+
+ BLI_pbvh_vertex_iter_begin(ss->tree, nodes[n], vd, PBVH_ITER_UNIQUE) {
+ if(sculpt_brush_test(&test, vd.co)) {
+ for(j = 0; j < FLATTEN_SAMPLE_SIZE; ++j) {
+ if(test.dist > outer_dist[j]) {
+ copy_v3_v3(outer_co[j], vd.co);
+ outer_dist[j] = test.dist;
+ break;
+ }
+ }
}
}
+ BLI_pbvh_vertex_iter_end;
+
+ BLI_pbvh_node_mark_update(nodes[n]);
}
co[0] = co[1] = co[2] = 0.0f;
for(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i)
- add_v3_v3v3(co, co, ss->mvert[outer[i]->Index].co);
+ if(outer_dist[i] >= 0.0f)
+ add_v3_v3v3(co, co, outer_co[i]);
mul_v3_fl(co, 1.0f / FLATTEN_SAMPLE_SIZE);
}
@@ -602,16 +1293,17 @@ static int plane_point_side(float co[3], float plane_normal[3], float plane_cent
return d <= 0.0f;
}
-static void do_flatten_clay_brush(Sculpt *sd, SculptSession *ss, const ListBase *active_verts, int clay)
+static void do_flatten_clay_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, int clay)
{
- ActiveData *node= active_verts->first;
/* area_normal and cntr define the plane towards which vertices are squashed */
+ Brush *brush = paint_brush(&sd->paint);
+ float bstrength= ss->cache->bstrength;
float area_normal[3];
float cntr[3], cntr2[3], bstr = 0;
- int flip = 0;
- float *buffer;
- calc_area_normal(sd, ss, area_normal, active_verts);
- calc_flatten_center(ss, node, cntr);
+ int n, flip = 0;
+
+ calc_area_normal(sd, ss, area_normal, nodes, totnode);
+ calc_flatten_center(sd, ss, nodes, totnode, cntr);
if(clay) {
bstr= brush_strength(sd, ss->cache);
@@ -622,295 +1314,139 @@ static void do_flatten_clay_brush(Sculpt *sd, SculptSession *ss, const ListBase
flip = bstr < 0;
}
- buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0;
-
- while(node){
- float *co= ss->mvert[node->Index].co;
- float intr[3], val[3];
+ #pragma omp parallel for private(n) schedule(static)
+ for(n=0; n<totnode; n++) {
+ PBVHVertexIter vd;
+ SculptBrushTest test;
- if(!clay || plane_point_side(co, area_normal, cntr2, flip)) {
- /* Find the intersection between squash-plane and vertex (along the area normal) */
- point_plane_project(intr, co, area_normal, cntr);
-
- sub_v3_v3v3(val, intr, co);
-
- if(clay) {
- if(bstr > FLT_EPSILON)
- mul_v3_fl(val, node->Fade / bstr);
- else
- mul_v3_fl(val, node->Fade);
- /* Clay displacement */
- val[0]+=area_normal[0] * ss->cache->scale[0]*node->Fade;
- val[1]+=area_normal[1] * ss->cache->scale[1]*node->Fade;
- val[2]+=area_normal[2] * ss->cache->scale[2]*node->Fade;
- }
- else
- mul_v3_fl(val, fabs(node->Fade));
+ sculpt_undo_push_node(ss, nodes[n]);
+ sculpt_brush_test_init(ss, &test);
+
+ BLI_pbvh_vertex_iter_begin(ss->tree, nodes[n], vd, PBVH_ITER_UNIQUE) {
+ if(sculpt_brush_test(&test, vd.co)) {
+ float intr[3], val[3];
+
+ if(!clay || plane_point_side(vd.co, area_normal, cntr2, flip)) {
+ const float fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength;
+
+ /* Find the intersection between squash-plane and vertex (along the area normal) */
+ point_plane_project(intr, vd.co, area_normal, cntr);
+
+ sub_v3_v3v3(val, intr, vd.co);
+
+ if(clay) {
+ if(bstr > FLT_EPSILON)
+ mul_v3_fl(val, fade / bstr);
+ else
+ mul_v3_fl(val, fade);
+ /* Clay displacement */
+ val[0]+=area_normal[0] * ss->cache->scale[0]*fade;
+ val[1]+=area_normal[1] * ss->cache->scale[1]*fade;
+ val[2]+=area_normal[2] * ss->cache->scale[2]*fade;
+ }
+ else
+ mul_v3_fl(val, fabs(fade));
- add_v3_v3v3(val, val, co);
+ add_v3_v3v3(val, val, vd.co);
- if( buffer != 0 ) {
- IndexLink *cur = &ss->drawobject->indices[node->Index];
- while( cur != 0 && cur->element != -1 ) {
- sculpt_clip(sd, ss, &buffer[cur->element*3], val);
- cur = cur->next;
+ sculpt_clip(sd, ss, vd.co, val);
+ if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE;
}
- }
- sculpt_clip(sd, ss, co, val);
-
+ }
}
-
- node= node->next;
- }
- if( buffer != 0 )
- GPU_buffer_unlock( ss->drawobject->vertices );
-}
+ BLI_pbvh_vertex_iter_end;
-/* Uses symm to selectively flip any axis of a coordinate. */
-static void flip_coord(float out[3], float in[3], const char symm)
-{
- if(symm & SCULPT_SYMM_X)
- out[0]= -in[0];
- else
- out[0]= in[0];
- if(symm & SCULPT_SYMM_Y)
- out[1]= -in[1];
- else
- out[1]= in[1];
- if(symm & SCULPT_SYMM_Z)
- out[2]= -in[2];
- else
- out[2]= in[2];
-}
-
-/* Get a pixel from the texcache at (px, py) */
-static unsigned char get_texcache_pixel(const SculptSession *ss, int px, int py)
-{
- unsigned *p;
- p = ss->texcache + py * ss->texcache_side + px;
- return ((unsigned char*)(p))[0];
+ BLI_pbvh_node_mark_update(nodes[n]);
+ }
}
-static float get_texcache_pixel_bilinear(const SculptSession *ss, float u, float v)
+static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache)
{
- int x, y, x2, y2;
- const int tc_max = ss->texcache_side - 1;
- float urat, vrat, uopp;
-
- if(u < 0) u = 0;
- else if(u >= ss->texcache_side) u = tc_max;
- if(v < 0) v = 0;
- else if(v >= ss->texcache_side) v = tc_max;
-
- x = floor(u);
- y = floor(v);
- x2 = x + 1;
- y2 = y + 1;
-
- if(x2 > ss->texcache_side) x2 = tc_max;
- if(y2 > ss->texcache_side) y2 = tc_max;
+ SculptSearchSphereData data;
+ Brush *brush = paint_brush(&sd->paint);
+ PBVHNode **nodes= NULL;
+ rctf mr;
+ ARegion *ar = cache->vc->ar;
+ float xrad, yrad;
+ int totnode;
+
+ xrad = cache->pixel_radius+5.0f;
+ yrad = cache->pixel_radius+5.0f;
+
+ mr.xmin = cache->mouse[0] - xrad - cache->vc->ar->winrct.xmin;
+ mr.xmax = cache->mouse[0] + xrad - cache->vc->ar->winrct.xmin;
+ mr.ymin = cache->mouse[1] - yrad - cache->vc->ar->winrct.ymin;
+ mr.ymax = cache->mouse[1] + yrad - cache->vc->ar->winrct.ymin;
- urat = u - x;
- vrat = v - y;
- uopp = 1 - urat;
-
- return ((get_texcache_pixel(ss, x, y) * uopp +
- get_texcache_pixel(ss, x2, y) * urat) * (1 - vrat) +
- (get_texcache_pixel(ss, x, y2) * uopp +
- get_texcache_pixel(ss, x2, y2) * urat) * vrat) / 255.0;
-}
+ cache->prect.xmin = MIN2(cache->prect.xmin, mr.xmin);
+ cache->prect.xmax = MAX2(cache->prect.xmax, mr.xmax);
+ cache->prect.ymin = MIN2(cache->prect.ymin, mr.ymin);
+ cache->prect.ymax = MAX2(cache->prect.ymax, mr.ymax);
-/* Return a multiplier for brush strength on a particular vertex. */
-static float tex_strength(Sculpt *sd, SculptSession *ss, float *point, const float len)
-{
- Brush *br = paint_brush(&sd->paint);
- MTex *tex = NULL;
- float avg= 1;
+ data.ss = ss;
+ data.sd = sd;
+ data.radius_squared = ss->cache->radius * ss->cache->radius;
- if(br->texact >= 0)
- tex = br->mtex[br->texact];
-
- if(!tex) {
- avg= 1;
- }
- else if(tex->brush_map_mode == MTEX_MAP_MODE_3D) {
- float jnk;
-
- /* Get strength by feeding the vertex
- location directly into a texture */
- externtex(tex, point, &avg,
- &jnk, &jnk, &jnk, &jnk);
- }
- else if(ss->texcache) {
- const float bsize= ss->cache->pixel_radius * 2;
- const float rot= tex->rot + ss->cache->rotation;
- int px, py;
- float flip[3], point_2d[2];
-
- /* If the active area is being applied for symmetry, flip it
- across the symmetry axis in order to project it. This insures
- that the brush texture will be oriented correctly. */
- copy_v3_v3(flip, point);
- flip_coord(flip, flip, ss->cache->symmetry);
- projectf(ss->cache->mats, flip, point_2d);
-
- /* For Tile and Drag modes, get the 2D screen coordinates of the
- and scale them up or down to the texture size. */
- if(tex->brush_map_mode == MTEX_MAP_MODE_TILED) {
- const int sx= (const int)tex->size[0];
- const int sy= (const int)tex->size[1];
-
- float fx= point_2d[0];
- float fy= point_2d[1];
-
- float angle= atan2(fy, fx) - rot;
- float flen= sqrtf(fx*fx + fy*fy);
-
- if(rot<0.001 && rot>-0.001) {
- px= point_2d[0];
- py= point_2d[1];
- } else {
- px= flen * cos(angle) + 2000;
- py= flen * sin(angle) + 2000;
- }
- if(sx != 1)
- px %= sx-1;
- if(sy != 1)
- py %= sy-1;
- avg= get_texcache_pixel_bilinear(ss, ss->texcache_side*px/sx, ss->texcache_side*py/sy);
- }
- else if(tex->brush_map_mode == MTEX_MAP_MODE_FIXED) {
- float fx= (point_2d[0] - ss->cache->tex_mouse[0]) / bsize;
- float fy= (point_2d[1] - ss->cache->tex_mouse[1]) / bsize;
-
- float angle= atan2(fy, fx) - rot;
- float flen= sqrtf(fx*fx + fy*fy);
+ /* Build a list of all nodes that are potentially within the brush's
+ area of influence */
+ if(brush->sculpt_tool == SCULPT_TOOL_GRAB) {
+ if(cache->first_time) {
+ /* For the grab tool we store these nodes once in the beginning
+ and then reuse them. */
+ BLI_pbvh_search_gather(ss->tree, sculpt_search_sphere_cb, &data,
+ &nodes, &totnode);
- fx = flen * cos(angle) + 0.5;
- fy = flen * sin(angle) + 0.5;
-
- avg= get_texcache_pixel_bilinear(ss, fx * ss->texcache_side, fy * ss->texcache_side);
+ ss->cache->grab_active_nodes[ss->cache->symmetry]= nodes;
+ ss->cache->grab_active_totnode[ss->cache->symmetry]= totnode;
+ copy_v3_v3(ss->cache->grab_active_location[ss->cache->symmetry], ss->cache->location);
}
- }
-
- avg*= brush_curve_strength(br, len, ss->cache->radius); /* Falloff curve */
-
- return avg;
-}
-
-/* Mark area around the brush as damaged. projverts are marked if they are
- inside the area and the damaged rectangle in 2D screen coordinates is
- added to damaged_rects. */
-static void sculpt_add_damaged_rect(SculptSession *ss)
-{
- short p[2];
- RectNode *rn= MEM_mallocN(sizeof(RectNode),"RectNode");
- const float radius = MAX2(ss->cache->pixel_radius, ss->cache->previous_pixel_radius);
- unsigned i;
-
- /* Find center */
- project(ss->cache->mats, ss->cache->location, p);
- rn->r.xmin= p[0] - radius;
- rn->r.ymin= p[1] - radius;
- rn->r.xmax= p[0] + radius;
- rn->r.ymax= p[1] + radius;
-
- BLI_addtail(&ss->damaged_rects, rn);
-
- /* Update insides */
- for(i=0; i<ss->totvert; ++i) {
- if(!ss->projverts[i].inside) {
- if(ss->projverts[i].co[0] > rn->r.xmin && ss->projverts[i].co[1] > rn->r.ymin &&
- ss->projverts[i].co[0] < rn->r.xmax && ss->projverts[i].co[1] < rn->r.ymax) {
- ss->projverts[i].inside= 1;
- }
+ else {
+ nodes= ss->cache->grab_active_nodes[ss->cache->symmetry];
+ totnode= ss->cache->grab_active_totnode[ss->cache->symmetry];
+ copy_v3_v3(ss->cache->location, ss->cache->grab_active_location[ss->cache->symmetry]);
}
- // XXX: remember to fix this!
- // temporary pass
- ss->projverts[i].inside = 1;
}
-}
-
-static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache)
-{
- Brush *brush = paint_brush(&sd->paint);
- float av_dist;
- ListBase active_verts={0,0};
- ListBase *grab_active_verts = &ss->cache->grab_active_verts[ss->cache->symmetry];
- ActiveData *adata= 0;
- float *vert;
- const float bstrength= brush_strength(sd, cache);
- Brush *b = brush;
- int i;
-
- sculpt_add_damaged_rect(ss);
-
- /* Build a list of all vertices that are potentially within the brush's
- area of influence. Only do this once for the grab brush. */
- if((b->sculpt_tool != SCULPT_TOOL_GRAB) || cache->first_time) {
- for(i=0; i<ss->totvert; ++i) {
- /* Projverts.inside provides a rough bounding box */
- if(ss->multires || ss->projverts[i].inside) {
- //vert= ss->vertexcosnos ? &ss->vertexcosnos[i*6] : a->verts[i].co;
- vert= ss->mvert[i].co;
- av_dist= len_v3v3(ss->cache->location, vert);
- if(av_dist < cache->radius) {
- adata= (ActiveData*)MEM_mallocN(sizeof(ActiveData), "ActiveData");
-
- adata->Index = i;
- /* Fade is used to store the final strength at which the brush
- should modify a particular vertex. */
- adata->Fade= tex_strength(sd, ss, vert, av_dist) * bstrength;
- adata->dist = av_dist;
-
- if(b->sculpt_tool == SCULPT_TOOL_GRAB && cache->first_time)
- BLI_addtail(grab_active_verts, adata);
- else
- BLI_addtail(&active_verts, adata);
- }
- }
- }
+ else {
+ BLI_pbvh_search_gather(ss->tree, sculpt_search_sphere_cb, &data,
+ &nodes, &totnode);
}
/* Only act if some verts are inside the brush area */
- if(active_verts.first || (b->sculpt_tool == SCULPT_TOOL_GRAB && grab_active_verts->first)) {
+ if(totnode) {
/* Apply one type of brush action */
- switch(b->sculpt_tool){
+ switch(brush->sculpt_tool){
case SCULPT_TOOL_DRAW:
- do_draw_brush(sd, ss, &active_verts);
+ do_draw_brush(sd, ss, nodes, totnode);
break;
case SCULPT_TOOL_SMOOTH:
- do_smooth_brush(sd, ss, &active_verts);
+ do_smooth_brush(sd, ss, nodes, totnode);
break;
case SCULPT_TOOL_PINCH:
- do_pinch_brush(sd, ss, &active_verts);
+ do_pinch_brush(sd, ss, nodes, totnode);
break;
case SCULPT_TOOL_INFLATE:
- do_inflate_brush(sd, ss, &active_verts);
+ do_inflate_brush(sd, ss, nodes, totnode);
break;
case SCULPT_TOOL_GRAB:
- do_grab_brush(sd, ss);
+ do_grab_brush(sd, ss, nodes, totnode);
break;
case SCULPT_TOOL_LAYER:
- do_layer_brush(sd, ss, &active_verts);
+ do_layer_brush(sd, ss, nodes, totnode);
break;
case SCULPT_TOOL_FLATTEN:
- do_flatten_clay_brush(sd, ss, &active_verts, 0);
+ do_flatten_clay_brush(sd, ss, nodes, totnode, 0);
break;
case SCULPT_TOOL_CLAY:
- do_flatten_clay_brush(sd, ss, &active_verts, 1);
+ do_flatten_clay_brush(sd, ss, nodes, totnode, 1);
+ break;
}
- /* Copy the modified vertices from mesh to the active key */
+ /* copy the modified vertices from mesh to the active key */
if(ss->kb) mesh_to_key(ss->ob->data, ss->kb);
-
- if(ss->vertexcosnos && !ss->multires)
- BLI_freelistN(&active_verts);
- else {
- if(b->sculpt_tool != SCULPT_TOOL_GRAB)
- addlisttolist(&ss->damaged_verts, &active_verts);
- }
- }
+
+ if((brush->sculpt_tool != SCULPT_TOOL_GRAB) && nodes)
+ MEM_freeN(nodes);
+ }
}
/* Flip all the editdata across the axis/axes specified by symm. Used to
@@ -932,6 +1468,7 @@ static void do_symmetrical_brush_actions(Sculpt *sd, SculptSession *ss)
copy_v3_v3(cache->location, cache->true_location);
copy_v3_v3(cache->grab_delta_symmetry, cache->grab_delta);
cache->symmetry = 0;
+ cache->bstrength = brush_strength(sd, cache);
do_brush_action(sd, ss, cache);
for(i = 1; i <= symm; ++i) {
@@ -944,110 +1481,6 @@ static void do_symmetrical_brush_actions(Sculpt *sd, SculptSession *ss)
cache->first_time = 0;
}
-static void add_face_normal(vec3f *norm, MVert *mvert, const MFace* face, float *fn)
-{
- vec3f c= {mvert[face->v1].co[0],mvert[face->v1].co[1],mvert[face->v1].co[2]};
- vec3f b= {mvert[face->v2].co[0],mvert[face->v2].co[1],mvert[face->v2].co[2]};
- vec3f a= {mvert[face->v3].co[0],mvert[face->v3].co[1],mvert[face->v3].co[2]};
- vec3f s1, s2;
- float final[3];
-
- sub_v3_v3v3(&s1.x,&a.x,&b.x);
- sub_v3_v3v3(&s2.x,&c.x,&b.x);
-
- final[0] = s1.y * s2.z - s1.z * s2.y;
- final[1] = s1.z * s2.x - s1.x * s2.z;
- final[2] = s1.x * s2.y - s1.y * s2.x;
-
- if(fn)
- copy_v3_v3(fn, final);
-
- norm->x+= final[0];
- norm->y+= final[1];
- norm->z+= final[2];
-}
-
-static void update_damaged_vert(SculptSession *ss, ListBase *lb)
-{
- ActiveData *vert;
-
- float *buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->normals ):0;
- for(vert= lb->first; vert; vert= vert->next) {
- vec3f norm= {0,0,0};
- IndexNode *face= ss->fmap[vert->Index].first;
-
- while(face){
- float *fn = NULL;
- if(ss->face_normals)
- fn = &ss->face_normals[face->index*3];
- add_face_normal(&norm, ss->mvert, &ss->mface[face->index], fn);
- face= face->next;
- }
- normalize_v3(&norm.x);
-
- ss->mvert[vert->Index].no[0]=norm.x*32767;
- ss->mvert[vert->Index].no[1]=norm.y*32767;
- ss->mvert[vert->Index].no[2]=norm.z*32767;
-
- if( buffer != 0 ) {
- IndexLink *cur = &ss->drawobject->indices[vert->Index];
- while( cur != 0 && cur->element != -1 ) {
- int i = ss->drawobject->faceRemap[cur->element/3];
- if( ss->mface[i].flag & ME_SMOOTH ) {
- VECCOPY(&buffer[cur->element*3],ss->mvert[vert->Index].no);
- }
- else {
- float norm[3];
- if( ss->mface[i].v4 )
- normal_quad_v3( norm,ss->mvert[ss->mface[i].v1].co, ss->mvert[ss->mface[i].v2].co, ss->mvert[ss->mface[i].v3].co, ss->mvert[ss->mface[i].v4].co);
- else
- normal_tri_v3( norm,ss->mvert[ss->mface[i].v1].co, ss->mvert[ss->mface[i].v2].co, ss->mvert[ss->mface[i].v3].co);
- VECCOPY(&buffer[(cur->element-cur->element%3)*3],norm);
- VECCOPY(&buffer[(cur->element-cur->element%3+1)*3],norm);
- VECCOPY(&buffer[(cur->element-cur->element%3+2)*3],norm);
-
- /* maybe this was a quad - need to update the other triangle of the quad */
- if( ss->drawobject->faceRemap[cur->element/3-1] == i ) {
- VECCOPY(&buffer[(cur->element-cur->element%3-3)*3],norm);
- VECCOPY(&buffer[(cur->element-cur->element%3-2)*3],norm);
- VECCOPY(&buffer[(cur->element-cur->element%3-1)*3],norm);
- }
- if( ss->drawobject->faceRemap[cur->element/3+1] == i ) {
- VECCOPY(&buffer[(cur->element-cur->element%3+3)*3],norm);
- VECCOPY(&buffer[(cur->element-cur->element%3+4)*3],norm);
- VECCOPY(&buffer[(cur->element-cur->element%3+5)*3],norm);
- }
- }
-
- //VECCOPY(&buffer[cur->element*3],ss->mvert[vert->Index].no);
- cur = cur->next;
- }
- }
- }
- if( buffer != 0 )
- GPU_buffer_unlock( ss->drawobject->normals );
-}
-
-static void calc_damaged_verts(SculptSession *ss)
-{
- int i;
-
- for(i=0; i<8; ++i)
- update_damaged_vert(ss, &ss->cache->grab_active_verts[i]);
- update_damaged_vert(ss, &ss->damaged_verts);
- BLI_freelistN(&ss->damaged_verts);
- ss->damaged_verts.first = ss->damaged_verts.last = NULL;
-}
-
-#if 0
-static void projverts_clear_inside(SculptSession *ss)
-{
- int i;
- for(i = 0; i < ss->totvert; ++i)
- ss->projverts[i].inside = 0;
-}
-#endif
-
static void sculpt_update_tex(Sculpt *sd, SculptSession *ss)
{
Brush *brush = paint_brush(&sd->paint);
@@ -1065,28 +1498,15 @@ static void sculpt_update_tex(Sculpt *sd, SculptSession *ss)
}
}
-static void sculptmode_update_all_projverts(SculptSession *ss)
-{
- unsigned i;
-
- if(!ss->projverts)
- ss->projverts = MEM_mallocN(sizeof(ProjVert)*ss->totvert,"ProjVerts");
-
- for(i=0; i<ss->totvert; ++i) {
- project(ss->cache->mats, ss->vertexcosnos ? &ss->vertexcosnos[i * 6] : ss->mvert[i].co,
- ss->projverts[i].co);
- ss->projverts[i].inside= 0;
- }
-}
-
/* Checks whether full update mode (slower) needs to be used to work with modifiers */
char sculpt_modifiers_active(Object *ob)
{
ModifierData *md;
for(md= modifiers_getVirtualModifierList(ob); md; md= md->next) {
- if(modifier_isEnabled(md, eModifierMode_Realtime) && md->type != eModifierType_Multires)
- return 1;
+ if(modifier_isEnabled(md, eModifierMode_Realtime))
+ if(!ELEM(md->type, eModifierType_Multires, eModifierType_ShapeKey))
+ return 1;
}
return 0;
@@ -1094,7 +1514,7 @@ char sculpt_modifiers_active(Object *ob)
/* Sculpt mode handles multires differently from regular meshes, but only if
it's the last modifier on the stack and it is not on the first level */
-static struct MultiresModifierData *sculpt_multires_active(Object *ob)
+struct MultiresModifierData *sculpt_multires_active(Object *ob)
{
ModifierData *md, *nmd;
@@ -1108,7 +1528,7 @@ static struct MultiresModifierData *sculpt_multires_active(Object *ob)
if(nmd->mode & eModifierMode_Realtime)
break;
- if(!nmd && mmd->lvl != 1)
+ if(!nmd && mmd->sculptlvl > 0)
return mmd;
}
}
@@ -1116,22 +1536,46 @@ static struct MultiresModifierData *sculpt_multires_active(Object *ob)
return NULL;
}
-static void sculpt_update_mesh_elements(bContext *C)
+void sculpt_key_to_mesh(KeyBlock *kb, Object *ob)
{
- Object *ob = CTX_data_active_object(C);
- SculptSession *ss = ob->sculpt;
- int oldtotvert = ss->totvert;
- DerivedMesh *dm = mesh_get_derived_final(CTX_data_scene(C), ob, CD_MASK_BAREMESH);
+ Mesh *me= ob->data;
+
+ key_to_mesh(kb, me);
+ mesh_calc_normals(me->mvert, me->totvert, me->mface, me->totface, NULL);
+}
+
+void sculpt_mesh_to_key(Object *ob, KeyBlock *kb)
+{
+ Mesh *me= ob->data;
+
+ mesh_to_key(me, kb);
+}
+void sculpt_update_mesh_elements(Scene *scene, Object *ob, int need_fmap)
+{
+ DerivedMesh *dm = mesh_get_derived_final(scene, ob, 0);
+ SculptSession *ss = ob->sculpt;
+
ss->ob= ob;
+ if((ob->shapeflag & OB_SHAPE_LOCK) && !sculpt_multires_active(ob)) {
+ ss->kb= ob_get_keyblock(ob);
+ ss->refkb= ob_get_reference_keyblock(ob);
+ }
+ else {
+ ss->kb= NULL;
+ ss->refkb= NULL;
+ }
+
+ /* need to make PBVH with shape key coordinates */
+ if(ss->kb) sculpt_key_to_mesh(ss->kb, ss->ob);
+
if((ss->multires = sculpt_multires_active(ob))) {
- //DerivedMesh *dm = mesh_get_derived_final(CTX_data_scene(C), ob, CD_MASK_BAREMESH);
ss->totvert = dm->getNumVerts(dm);
ss->totface = dm->getNumTessFaces(dm);
- ss->mvert = dm->getVertDataArray(dm, CD_MVERT);
- ss->mface = dm->getTessFaceDataArray(dm, CD_MFACE);
- ss->face_normals = dm->getTessFaceDataArray(dm, CD_NORMAL);
+ ss->mvert= NULL;
+ ss->mface= NULL;
+ ss->face_normals= NULL;
}
else {
Mesh *me = get_mesh(ob);
@@ -1141,31 +1585,9 @@ static void sculpt_update_mesh_elements(bContext *C)
ss->mface = me->mface;
ss->face_normals = NULL;
}
- if( GPU_buffer_legacy( dm ) ) {
- ss->drawobject = 0;
- }
- else {
- ss->drawobject = dm->drawObject;
- }
-
- 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);
- ss->fmap_size = ss->totvert;
- }
-
- if((ob->shapeflag & OB_SHAPE_LOCK) && !sculpt_multires_active(ob)) {
- ss->kb= ob_get_keyblock(ob);
- ss->refkb= ob_get_reference_keyblock(ob);
- }
- else {
- ss->kb= NULL;
- ss->refkb= NULL;
- }
+ ss->tree = dm->getPBVH(ob, dm);
+ ss->fmap = (need_fmap && dm->getFaceMap)? dm->getFaceMap(dm): NULL;
}
static int sculpt_mode_poll(bContext *C)
@@ -1179,27 +1601,27 @@ int sculpt_poll(bContext *C)
return sculpt_mode_poll(C) && paint_poll(C);
}
-static void sculpt_undo_push(bContext *C, Sculpt *sd)
+static char *sculpt_tool_name(Sculpt *sd)
{
Brush *brush = paint_brush(&sd->paint);
switch(brush->sculpt_tool) {
case SCULPT_TOOL_DRAW:
- ED_undo_push(C, "Draw Brush"); break;
+ return "Draw Brush"; break;
case SCULPT_TOOL_SMOOTH:
- ED_undo_push(C, "Smooth Brush"); break;
+ return "Smooth Brush"; break;
case SCULPT_TOOL_PINCH:
- ED_undo_push(C, "Pinch Brush"); break;
+ return "Pinch Brush"; break;
case SCULPT_TOOL_INFLATE:
- ED_undo_push(C, "Inflate Brush"); break;
+ return "Inflate Brush"; break;
case SCULPT_TOOL_GRAB:
- ED_undo_push(C, "Grab Brush"); break;
+ return "Grab Brush"; break;
case SCULPT_TOOL_LAYER:
- ED_undo_push(C, "Layer Brush"); break;
+ return "Layer Brush"; break;
case SCULPT_TOOL_FLATTEN:
- ED_undo_push(C, "Flatten Brush"); break;
+ return "Flatten Brush"; break;
default:
- ED_undo_push(C, "Sculpting"); break;
+ return "Sculpting"; break;
}
}
@@ -1251,28 +1673,32 @@ static void SCULPT_OT_radial_control(wmOperatorType *ot)
/**** Operator for applying a stroke (various attributes including mouse path)
using the current brush. ****/
-static float unproject_brush_radius(SculptSession *ss, float offset)
+static float unproject_brush_radius(Object *ob, ViewContext *vc, float center[3], float offset)
{
- float brush_edge[3];
+ float delta[3], scale, loc[3];
- /* In anchored mode, brush size changes with mouse loc, otherwise it's fixed using the brush radius */
- view3d_unproject(ss->cache->mats, brush_edge, ss->cache->initial_mouse[0] + offset,
- ss->cache->initial_mouse[1], ss->cache->depth);
+ mul_v3_m4v3(loc, ob->obmat, center);
- return len_v3v3(ss->cache->true_location, brush_edge);
+ initgrabz(vc->rv3d, loc[0], loc[1], loc[2]);
+ window_to_3d_delta(vc->ar, delta, offset, 0);
+
+ scale= fabsf(mat4_to_scale(ob->obmat));
+ scale= (scale == 0.0f)? 1.0f: scale;
+
+ return len_v3(delta)/scale;
}
static void sculpt_cache_free(StrokeCache *cache)
{
int i;
- if(cache->orig_norms)
- MEM_freeN(cache->orig_norms);
if(cache->face_norms)
MEM_freeN(cache->face_norms);
if(cache->mats)
MEM_freeN(cache->mats);
- for(i = 0; i < 8; ++i)
- BLI_freelistN(&cache->grab_active_verts[i]);
+ for(i = 0; i < 8; ++i) {
+ if(cache->grab_active_nodes[i])
+ MEM_freeN(cache->grab_active_nodes[i]);
+ }
MEM_freeN(cache);
}
@@ -1285,75 +1711,73 @@ static void sculpt_update_cache_invariants(Sculpt *sd, SculptSession *ss, bConte
int i;
ss->cache = cache;
+
+ cache->prect.xmin = FLT_MAX;
+ cache->prect.xmax = -FLT_MAX;
+ cache->prect.ymin = FLT_MAX;
+ cache->prect.ymax = -FLT_MAX;
RNA_float_get_array(op->ptr, "scale", cache->scale);
cache->flag = RNA_int_get(op->ptr, "flag");
RNA_float_get_array(op->ptr, "clip_tolerance", cache->clip_tolerance);
RNA_float_get_array(op->ptr, "initial_mouse", cache->initial_mouse);
- cache->depth = RNA_float_get(op->ptr, "depth");
copy_v2_v2(cache->mouse, cache->initial_mouse);
copy_v2_v2(cache->tex_mouse, cache->initial_mouse);
/* Truly temporary data that isn't stored in properties */
- cache->mats = MEM_callocN(sizeof(bglMats), "sculpt bglMats");
- view3d_get_transformation(vc, vc->obact, cache->mats);
+ cache->vc = vc;
+ cache->brush = brush;
- sculpt_update_mesh_elements(C);
-
- /* Initialize layer brush displacements */
- if(brush->sculpt_tool == SCULPT_TOOL_LAYER &&
- (!ss->layer_disps || !(brush->flag & BRUSH_PERSISTENT))) {
- if(ss->layer_disps)
- MEM_freeN(ss->layer_disps);
- ss->layer_disps = MEM_callocN(sizeof(float) * ss->totvert, "layer brush displacements");
- }
-
- /* Make copies of the mesh vertex locations and normals for some tools */
- if(brush->sculpt_tool == SCULPT_TOOL_LAYER || (brush->flag & BRUSH_ANCHORED)) {
- if(brush->sculpt_tool != SCULPT_TOOL_LAYER ||
- !ss->mesh_co_orig || !(brush->flag & BRUSH_PERSISTENT)) {
- if(!ss->mesh_co_orig)
- ss->mesh_co_orig= MEM_mallocN(sizeof(float) * 3 * ss->totvert,
+ cache->mats = MEM_callocN(sizeof(bglMats), "sculpt bglMats");
+ view3d_get_transformation(vc->ar, vc->rv3d, vc->obact, cache->mats);
+
+ /* Initialize layer brush displacements and persistent coords */
+ if(brush->sculpt_tool == SCULPT_TOOL_LAYER && !ss->multires) {
+ if(!ss->layer_disps || !(brush->flag & BRUSH_PERSISTENT)) {
+ if(ss->layer_disps)
+ MEM_freeN(ss->layer_disps);
+ ss->layer_disps = MEM_callocN(sizeof(float) * ss->totvert, "layer brush displacements");
+ }
+ if(!ss->layer_co && (brush->flag & BRUSH_PERSISTENT)) {
+ if(!ss->layer_co)
+ ss->layer_co= MEM_mallocN(sizeof(float) * 3 * ss->totvert,
"sculpt mesh vertices copy");
for(i = 0; i < ss->totvert; ++i)
- copy_v3_v3(ss->mesh_co_orig[i], ss->mvert[i].co);
+ copy_v3_v3(ss->layer_co[i], ss->mvert[i].co);
}
+ }
- if(brush->flag & BRUSH_ANCHORED) {
- cache->orig_norms= MEM_mallocN(sizeof(short) * 3 * ss->totvert, "Sculpt orig norm");
- for(i = 0; i < ss->totvert; ++i) {
- cache->orig_norms[i][0] = ss->mvert[i].no[0];
- cache->orig_norms[i][1] = ss->mvert[i].no[1];
- cache->orig_norms[i][2] = ss->mvert[i].no[2];
- }
-
- if(ss->face_normals) {
- float *fn = ss->face_normals;
- cache->face_norms= MEM_mallocN(sizeof(float) * 3 * ss->totface, "Sculpt face norms");
- for(i = 0; i < ss->totface; ++i, fn += 3)
- copy_v3_v3(cache->face_norms[i], fn);
- }
+ /* Make copies of the mesh vertex locations and normals for some tools */
+ if(brush->flag & BRUSH_ANCHORED) {
+ if(ss->face_normals) {
+ float *fn = ss->face_normals;
+ cache->face_norms= MEM_mallocN(sizeof(float) * 3 * ss->totface, "Sculpt face norms");
+ for(i = 0; i < ss->totface; ++i, fn += 3)
+ copy_v3_v3(cache->face_norms[i], fn);
}
+
+ cache->original = 1;
}
- view3d_unproject(cache->mats, cache->true_location, cache->initial_mouse[0], cache->initial_mouse[1], cache->depth);
- cache->initial_radius = unproject_brush_radius(ss, brush->size);
+ if(ELEM3(brush->sculpt_tool, SCULPT_TOOL_DRAW, SCULPT_TOOL_LAYER, SCULPT_TOOL_INFLATE))
+ if(!(brush->flag & BRUSH_ACCUMULATE))
+ cache->original = 1;
+
cache->rotation = 0;
cache->first_time = 1;
}
/* Initialize the stroke cache variants from operator properties */
-static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, PointerRNA *ptr)
+static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, struct PaintStroke *stroke, PointerRNA *ptr)
{
StrokeCache *cache = ss->cache;
Brush *brush = paint_brush(&sd->paint);
- float grab_location[3];
int dx, dy;
- if(!(brush->flag & BRUSH_ANCHORED))
+ if(!(brush->flag & BRUSH_ANCHORED) || cache->first_time)
RNA_float_get_array(ptr, "location", cache->true_location);
cache->flip = RNA_boolean_get(ptr, "flip");
RNA_float_get_array(ptr, "mouse", cache->mouse);
@@ -1364,6 +1788,9 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, PointerR
cache->previous_pixel_radius = cache->pixel_radius;
cache->pixel_radius = brush->size;
+ if(cache->first_time)
+ cache->initial_radius = unproject_brush_radius(ss->ob, cache->vc, cache->true_location, brush->size);
+
if(brush->flag & BRUSH_SIZE_PRESSURE) {
cache->pixel_radius *= cache->pressure;
cache->radius = cache->initial_radius * cache->pressure;
@@ -1378,7 +1805,8 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, PointerR
dx = cache->mouse[0] - cache->initial_mouse[0];
dy = cache->mouse[1] - cache->initial_mouse[1];
cache->pixel_radius = sqrt(dx*dx + dy*dy);
- cache->radius = unproject_brush_radius(ss, cache->pixel_radius);
+ cache->radius = unproject_brush_radius(ss->ob, paint_stroke_view_context(stroke),
+ cache->true_location, cache->pixel_radius);
cache->rotation = atan2(dy, dx);
}
else if(brush->flag & BRUSH_RAKE) {
@@ -1401,17 +1829,92 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, PointerR
/* Find the grab delta */
if(brush->sculpt_tool == SCULPT_TOOL_GRAB) {
- view3d_unproject(cache->mats, grab_location, cache->mouse[0], cache->mouse[1], cache->depth);
+ float grab_location[3];
+
+ if(cache->first_time)
+ copy_v3_v3(cache->orig_grab_location, cache->true_location);
+
+ initgrabz(cache->vc->rv3d, cache->orig_grab_location[0], cache->orig_grab_location[1], cache->orig_grab_location[2]);
+ window_to_3d_delta(cache->vc->ar, grab_location, cache->mouse[0], cache->mouse[1]);
+
if(!cache->first_time)
sub_v3_v3v3(cache->grab_delta, grab_location, cache->old_grab_location);
copy_v3_v3(cache->old_grab_location, grab_location);
}
}
+static void sculpt_stroke_modifiers_check(bContext *C, SculptSession *ss)
+{
+ if(sculpt_modifiers_active(ss->ob))
+ sculpt_update_mesh_elements(CTX_data_scene(C), ss->ob, 0); // XXX brush->sculpt_tool == SCULPT_TOOL_SMOOTH);
+}
+
+typedef struct {
+ SculptSession *ss;
+ float *ray_start, *ray_normal;
+ int hit;
+ float dist;
+ int original;
+} SculptRaycastData;
+
+void sculpt_raycast_cb(PBVHNode *node, void *data_v)
+{
+ SculptRaycastData *srd = data_v;
+ float (*origco)[3]= NULL;
+
+ if(srd->original && srd->ss->cache) {
+ /* intersect with coordinates from before we started stroke */
+ SculptUndoNode *unode= sculpt_undo_get_node(srd->ss, node);
+ origco= (unode)? unode->co: NULL;
+ }
+
+ srd->hit |= BLI_pbvh_node_raycast(srd->ss->tree, node, origco,
+ srd->ray_start, srd->ray_normal, &srd->dist);
+}
+
+/* Do a raycast in the tree to find the 3d brush location
+ (This allows us to ignore the GL depth buffer)
+ Returns 0 if the ray doesn't hit the mesh, non-zero otherwise
+ */
+int sculpt_stroke_get_location(bContext *C, struct PaintStroke *stroke, float out[3], float mouse[2])
+{
+ ViewContext *vc = paint_stroke_view_context(stroke);
+ SculptSession *ss= vc->obact->sculpt;
+ StrokeCache *cache= ss->cache;
+ float ray_start[3], ray_normal[3];
+ float obimat[4][4];
+ float mval[2] = {mouse[0] - vc->ar->winrct.xmin,
+ mouse[1] - vc->ar->winrct.ymin};
+ SculptRaycastData srd;
+
+ sculpt_stroke_modifiers_check(C, ss);
+
+ viewray(vc->ar, vc->v3d, mval, ray_start, ray_normal);
+
+ invert_m4_m4(obimat, ss->ob->obmat);
+ mul_m4_v3(obimat, ray_start);
+ mul_mat3_m4_v3(obimat, ray_normal);
+ normalize_v3(ray_normal);
+
+ srd.ss = vc->obact->sculpt;
+ srd.ray_start = ray_start;
+ srd.ray_normal = ray_normal;
+ srd.dist = FLT_MAX;
+ srd.hit = 0;
+ srd.original = (cache)? cache->original: 0;
+ BLI_pbvh_raycast(ss->tree, sculpt_raycast_cb, &srd,
+ ray_start, ray_normal, srd.original);
+
+ copy_v3_v3(out, ray_normal);
+ mul_v3_fl(out, srd.dist);
+ add_v3_v3v3(out, out, ray_start);
+
+ return srd.hit;
+}
+
/* Initialize stroke operator properties */
static void sculpt_brush_stroke_init_properties(bContext *C, wmOperator *op, wmEvent *event, SculptSession *ss)
{
- Sculpt *sd = CTX_data_tool_settings(C)->sculpt;
Object *ob= CTX_data_active_object(C);
ModifierData *md;
float scale[3], clip_tolerance[3] = {0,0,0};
@@ -1444,18 +1947,15 @@ static void sculpt_brush_stroke_init_properties(bContext *C, wmOperator *op, wmE
mouse[0] = event->x;
mouse[1] = event->y;
RNA_float_set_array(op->ptr, "initial_mouse", mouse);
-
- /* Initial screen depth under the mouse */
- RNA_float_set(op->ptr, "depth", read_cached_depth(paint_stroke_view_context(op->customdata), event->x, event->y));
-
- sculpt_update_cache_invariants(sd, ss, C, op);
}
static int sculpt_brush_stroke_init(bContext *C, ReportList *reports)
{
+ Scene *scene= CTX_data_scene(C);
Object *ob= CTX_data_active_object(C);
Sculpt *sd = CTX_data_tool_settings(C)->sculpt;
SculptSession *ss = CTX_data_active_object(C)->sculpt;
+ Brush *brush = paint_brush(&sd->paint);
if(ob_get_key(ob) && !(ob->shapeflag & OB_SHAPE_LOCK)) {
BKE_report(reports, RPT_ERROR, "Shape key sculpting requires a locked shape.");
@@ -1469,9 +1969,7 @@ static int sculpt_brush_stroke_init(bContext *C, ReportList *reports)
changes are made to the texture. */
sculpt_update_tex(sd, ss);
- sculpt_update_mesh_elements(C);
-
- if(ss->kb) key_to_mesh(ss->kb, ss->ob->data);
+ sculpt_update_mesh_elements(scene, ob, brush->sculpt_tool == SCULPT_TOOL_SMOOTH);
return 1;
}
@@ -1480,30 +1978,31 @@ static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss)
{
StrokeCache *cache = ss->cache;
Brush *brush = paint_brush(&sd->paint);
- float *buffer= NULL;
int i;
/* Restore the mesh before continuing with anchored stroke */
- if((brush->flag & BRUSH_ANCHORED) && ss->mesh_co_orig) {
-
- if(ss->drawobject)
- buffer= (float *)GPU_buffer_lock(ss->drawobject->normals);
-
- for(i = 0; i < ss->totvert; ++i) {
- copy_v3_v3(ss->mvert[i].co, ss->mesh_co_orig[i]);
- ss->mvert[i].no[0] = cache->orig_norms[i][0];
- ss->mvert[i].no[1] = cache->orig_norms[i][1];
- ss->mvert[i].no[2] = cache->orig_norms[i][2];
- if( buffer != 0 ) {
- IndexLink *cur = &ss->drawobject->indices[i];
- while( cur != 0 && cur->element != -1 ) {
- VECCOPY(&buffer[cur->element*3],cache->orig_norms[i]);
- cur = cur->next;
+ if(brush->flag & BRUSH_ANCHORED) {
+ PBVHNode **nodes;
+ int n, totnode;
+
+ BLI_pbvh_search_gather(ss->tree, NULL, NULL, &nodes, &totnode);
+
+ #pragma omp parallel for private(n) schedule(static)
+ for(n=0; n<totnode; n++) {
+ SculptUndoNode *unode;
+
+ unode= sculpt_undo_get_node(ss, nodes[n]);
+ if(unode) {
+ PBVHVertexIter vd;
+
+ BLI_pbvh_vertex_iter_begin(ss->tree, nodes[n], vd, PBVH_ITER_UNIQUE) {
+ copy_v3_v3(vd.co, unode->co[vd.i]);
+ if(vd.no) VECCOPY(vd.no, unode->no[vd.i])
+ else normal_short_to_float_v3(vd.fno, unode->no[vd.i]);
}
+ BLI_pbvh_vertex_iter_end;
}
}
- if( buffer != 0 )
- GPU_buffer_unlock( ss->drawobject->normals );
if(ss->face_normals) {
float *fn = ss->face_normals;
@@ -1511,55 +2010,72 @@ static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss)
copy_v3_v3(fn, cache->face_norms[i]);
}
- if(brush->sculpt_tool == SCULPT_TOOL_LAYER)
+ if(brush->sculpt_tool == SCULPT_TOOL_LAYER && !ss->multires)
memset(ss->layer_disps, 0, sizeof(float) * ss->totvert);
}
}
-static void sculpt_post_stroke_free(SculptSession *ss)
-{
- BLI_freelistN(&ss->damaged_rects);
- BLI_freelistN(&ss->damaged_verts);
-}
-
static void sculpt_flush_update(bContext *C)
{
Object *ob = CTX_data_active_object(C);
SculptSession *ss = ob->sculpt;
ARegion *ar = CTX_wm_region(C);
MultiresModifierData *mmd = ss->multires;
+ int redraw = 0;
- calc_damaged_verts(ss);
-
- if(mmd) {
- if(mmd->undo_verts && mmd->undo_verts != ss->mvert)
- MEM_freeN(mmd->undo_verts);
-
- mmd->undo_verts = ss->mvert;
- mmd->undo_verts_tot = ss->totvert;
+ if(mmd)
multires_mark_as_modified(ob);
- }
- if(sculpt_modifiers_active(ob))
+ if(sculpt_modifiers_active(ob)) {
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
-
- ED_region_tag_redraw(ar);
+ ED_region_tag_redraw(ar);
+ }
+ else {
+ rcti r;
+ int off = 0;
+#if 0 /*debug code to expand the partial redraw rect by 400 every other frame*/
+ static int c = 0;
+
+ c++;
+ if (c % 2 == 0)
+ off = 400;
+ else off = 0;
+#endif
+ BLI_pbvh_update(ss->tree, PBVH_UpdateBB, NULL);
+ redraw = sculpt_get_redraw_rect(ar, CTX_wm_region_view3d(C), ob, &r);
+
+ if(redraw) {
+ r.xmin += ar->winrct.xmin + 1 + off;
+ r.xmax += ar->winrct.xmin - 1 - off;
+ r.ymin += ar->winrct.ymin + 1 + off;
+ r.ymax += ar->winrct.ymin - 1 - off;
+
+ ss->partial_redraw = 1;
+ ED_region_tag_redraw_partial(ar, &r);
+ }
+ }
}
static int sculpt_stroke_test_start(bContext *C, struct wmOperator *op, wmEvent *event)
{
- ViewContext vc;
- float cur_depth;
-
- view3d_set_viewcontext(C, &vc);
- cur_depth = read_cached_depth(&vc, event->x, event->y);
+ float mouse[2] = {event->x, event->y}, location[3];
+ int over_mesh;
- /* Don't start the stroke until a valid depth is found */
- if(cur_depth < 1.0 - FLT_EPSILON) {
- SculptSession *ss = CTX_data_active_object(C)->sculpt;
+ over_mesh = sculpt_stroke_get_location(C, op->customdata, location, mouse);
+
+ /* Don't start the stroke until mouse goes over the mesh */
+ if(over_mesh) {
+ Object *ob = CTX_data_active_object(C);
+ SculptSession *ss = ob->sculpt;
+ Sculpt *sd = CTX_data_tool_settings(C)->sculpt;
+
+ ED_view3d_init_mats_rv3d(ob, CTX_wm_region_view3d(C));
sculpt_brush_stroke_init_properties(C, op, event, ss);
- sculptmode_update_all_projverts(ss);
+
+ sculpt_update_cache_invariants(sd, ss, C, op);
+
+ sculpt_undo_push_begin(ss, sculpt_tool_name(sd));
return 1;
}
@@ -1572,13 +2088,13 @@ static void sculpt_stroke_update_step(bContext *C, struct PaintStroke *stroke, P
Sculpt *sd = CTX_data_tool_settings(C)->sculpt;
SculptSession *ss = CTX_data_active_object(C)->sculpt;
- sculpt_update_cache_variants(sd, ss, itemptr);
+ sculpt_stroke_modifiers_check(C, ss);
+ sculpt_update_cache_variants(sd, ss, stroke, itemptr);
sculpt_restore_mesh(sd, ss);
do_symmetrical_brush_actions(sd, ss);
/* Cleanup */
sculpt_flush_update(C);
- sculpt_post_stroke_free(ss);
}
static void sculpt_stroke_done(bContext *C, struct PaintStroke *stroke)
@@ -1588,14 +2104,19 @@ static void sculpt_stroke_done(bContext *C, struct PaintStroke *stroke)
/* Finished */
if(ss->cache) {
- Sculpt *sd = CTX_data_tool_settings(C)->sculpt;
-
- if(ss->refkb) key_to_mesh(ss->refkb, ob->data);
+ sculpt_stroke_modifiers_check(C, ss);
- request_depth_update(paint_stroke_view_context(stroke)->rv3d);
sculpt_cache_free(ss->cache);
ss->cache = NULL;
- sculpt_undo_push(C, sd);
+
+ sculpt_undo_push_end(ss);
+
+ BLI_pbvh_update(ss->tree, PBVH_UpdateOriginalBB, NULL);
+
+ if(ss->refkb) sculpt_key_to_mesh(ss->refkb, ob);
+
+ ss->partial_redraw = 0;
+ WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
}
}
@@ -1604,7 +2125,8 @@ static int sculpt_brush_stroke_invoke(bContext *C, wmOperator *op, wmEvent *even
if(!sculpt_brush_stroke_init(C, op->reports))
return OPERATOR_CANCELLED;
- op->customdata = paint_stroke_new(C, sculpt_stroke_test_start,
+ op->customdata = paint_stroke_new(C, sculpt_stroke_get_location,
+ sculpt_stroke_test_start,
sculpt_stroke_update_step,
sculpt_stroke_done);
@@ -1624,18 +2146,16 @@ static int sculpt_brush_stroke_exec(bContext *C, wmOperator *op)
if(!sculpt_brush_stroke_init(C, op->reports))
return OPERATOR_CANCELLED;
- op->customdata = paint_stroke_new(C, sculpt_stroke_test_start, sculpt_stroke_update_step, sculpt_stroke_done);
+ op->customdata = paint_stroke_new(C, sculpt_stroke_get_location, sculpt_stroke_test_start,
+ sculpt_stroke_update_step, sculpt_stroke_done);
sculpt_update_cache_invariants(sd, ss, C, op);
- sculptmode_update_all_projverts(ss);
paint_stroke_exec(C, op);
sculpt_flush_update(C);
sculpt_cache_free(ss->cache);
- sculpt_undo_push(C, sd);
-
return OPERATOR_FINISHED;
}
@@ -1670,9 +2190,6 @@ static void SCULPT_OT_brush_stroke(wmOperatorType *ot)
/* The initial 2D location of the mouse */
RNA_def_float_vector(ot->srna, "initial_mouse", 2, NULL, INT_MIN, INT_MAX, "initial_mouse", "", INT_MIN, INT_MAX);
-
- /* The initial screen depth of the mouse */
- RNA_def_float(ot->srna, "depth", 0.0f, 0.0f, FLT_MAX, "depth", "", 0.0f, FLT_MAX);
}
/**** Reset the copy of the mesh that is being sculpted on (currently just for the layer brush) ****/
@@ -1686,9 +2203,9 @@ static int sculpt_set_persistent_base(bContext *C, wmOperator *op)
MEM_freeN(ss->layer_disps);
ss->layer_disps = NULL;
- if(ss->mesh_co_orig)
- MEM_freeN(ss->mesh_co_orig);
- ss->mesh_co_orig = NULL;
+ if(ss->layer_co)
+ MEM_freeN(ss->layer_co);
+ ss->layer_co = NULL;
}
return OPERATOR_FINISHED;
@@ -1709,15 +2226,30 @@ static void SCULPT_OT_set_persistent_base(wmOperatorType *ot)
/**** Toggle operator for turning sculpt mode on or off ****/
+static void sculpt_init_session(Scene *scene, Object *ob)
+{
+ ob->sculpt = MEM_callocN(sizeof(SculptSession), "sculpt session");
+
+ sculpt_update_mesh_elements(scene, ob, 0);
+
+ if(ob->sculpt->refkb)
+ sculpt_key_to_mesh(ob->sculpt->refkb, ob);
+}
+
static int sculpt_toggle_mode(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
ToolSettings *ts = CTX_data_tool_settings(C);
Object *ob = CTX_data_active_object(C);
+ MultiresModifierData *mmd = sculpt_multires_active(ob);
if(ob->mode & OB_MODE_SCULPT) {
if(sculpt_multires_active(ob))
multires_force_update(ob);
+ if(mmd && mmd->sculptlvl != mmd->lvl)
+ DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
+
/* Leave sculptmode */
ob->mode &= ~OB_MODE_SCULPT;
@@ -1725,8 +2257,10 @@ static int sculpt_toggle_mode(bContext *C, wmOperator *op)
}
else {
/* Enter sculptmode */
-
ob->mode |= OB_MODE_SCULPT;
+
+ if(mmd && mmd->sculptlvl != mmd->lvl)
+ DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
/* Create persistent sculpt mode data */
if(!ts->sculpt)
@@ -1735,7 +2269,8 @@ static int sculpt_toggle_mode(bContext *C, wmOperator *op)
/* Create sculpt mode session data */
if(ob->sculpt)
free_sculptsession(&ob->sculpt);
- ob->sculpt = MEM_callocN(sizeof(SculptSession), "sculpt session");
+
+ sculpt_init_session(scene, ob);
paint_init(&ts->sculpt->paint, PAINT_CURSOR_SCULPT);
@@ -1767,3 +2302,4 @@ void ED_operatortypes_sculpt()
WM_operatortype_append(SCULPT_OT_sculptmode_toggle);
WM_operatortype_append(SCULPT_OT_set_persistent_base);
}
+
diff --git a/source/blender/editors/sculpt_paint/sculpt_intern.h b/source/blender/editors/sculpt_paint/sculpt_intern.h
index 15ccacc294a..0e1c0510902 100644
--- a/source/blender/editors/sculpt_paint/sculpt_intern.h
+++ b/source/blender/editors/sculpt_paint/sculpt_intern.h
@@ -35,7 +35,9 @@
struct bContext;
struct Brush;
+struct KeyBlock;
struct Mesh;
+struct MultiresModifierData;
struct Object;
struct Scene;
struct Sculpt;
@@ -47,6 +49,7 @@ void sculptmode_draw_mesh(int);
void sculpt_paint_brush(char clear);
void sculpt_stroke_draw(struct SculptStroke *);
void sculpt_radialcontrol_start(int mode);
+struct MultiresModifierData *sculpt_multires_active(struct Object *ob);
struct Brush *sculptmode_brush(void);
//void do_symmetrical_brush_actions(struct Sculpt *sd, struct wmOperator *wm, struct BrushAction *a, short *, short *);
@@ -55,6 +58,9 @@ char sculpt_modifiers_active(struct Object *ob);
void sculpt(Sculpt *sd);
int sculpt_poll(struct bContext *C);
+void sculpt_update_mesh_elements(struct Scene *scene, struct Object *ob, int need_fmap);
+void sculpt_key_to_mesh(struct KeyBlock *kb, struct Object *ob);
+void sculpt_mesh_to_key(struct Object *ob, struct KeyBlock *kb);
/* Stroke */
struct SculptStroke *sculpt_stroke_new(const int max);
diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c
index a7c012fc654..e7b1dcb677d 100644
--- a/source/blender/editors/space_action/action_edit.c
+++ b/source/blender/editors/space_action/action_edit.c
@@ -123,11 +123,11 @@ static int act_new_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_new (wmOperatorType *ot)
+void ACTION_OT_new (wmOperatorType *ot)
{
/* identifiers */
ot->name= "New";
- ot->idname= "ACT_OT_new";
+ ot->idname= "ACTION_OT_new";
ot->description= "Create new action.";
/* api callbacks */
@@ -224,11 +224,11 @@ static int actkeys_previewrange_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_previewrange_set (wmOperatorType *ot)
+void ACTION_OT_previewrange_set (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Auto-Set Preview Range";
- ot->idname= "ACT_OT_previewrange_set";
+ ot->idname= "ACTION_OT_previewrange_set";
ot->description= "Set Preview Range based on extents of selected Keyframes.";
/* api callbacks */
@@ -272,11 +272,11 @@ static int actkeys_viewall_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_view_all (wmOperatorType *ot)
+void ACTION_OT_view_all (wmOperatorType *ot)
{
/* identifiers */
ot->name= "View All";
- ot->idname= "ACT_OT_view_all";
+ ot->idname= "ACTION_OT_view_all";
ot->description= "Reset viewable area to show full keyframe range.";
/* api callbacks */
@@ -357,11 +357,11 @@ static int actkeys_copy_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_copy (wmOperatorType *ot)
+void ACTION_OT_copy (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Copy Keyframes";
- ot->idname= "ACT_OT_copy";
+ ot->idname= "ACTION_OT_copy";
ot->description= "Copy selected keyframes to the copy/paste buffer.";
/* api callbacks */
@@ -402,11 +402,11 @@ static int actkeys_paste_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_paste (wmOperatorType *ot)
+void ACTION_OT_paste (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Paste Keyframes";
- ot->idname= "ACT_OT_paste";
+ ot->idname= "ACTION_OT_paste";
ot->description= "Paste keyframes from copy/paste buffer for the selected channels, starting on the current frame.";
/* api callbacks */
@@ -446,9 +446,7 @@ static void insert_action_keys(bAnimContext *ac, short mode)
ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype);
/* init keyframing flag */
- if (IS_AUTOKEY_FLAG(AUTOMATKEY)) flag |= INSERTKEY_MATRIX;
- if (IS_AUTOKEY_FLAG(INSERTNEEDED)) flag |= INSERTKEY_NEEDED;
- if (IS_AUTOKEY_MODE(scene, EDITKEYS)) flag |= INSERTKEY_REPLACE;
+ flag = ANIM_get_keyframing_flags(scene, 1);
/* insert keyframes */
for (ale= anim_data.first; ale; ale= ale->next) {
@@ -499,11 +497,11 @@ static int actkeys_insertkey_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_insert_keyframe (wmOperatorType *ot)
+void ACT_OT_keyframe_insert (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Insert Keyframes";
- ot->idname= "ACT_OT_insert_keyframe";
+ ot->idname= "ACT_OT_keyframe_insert";
ot->description= "Insert keyframes for the specified channels.";
/* api callbacks */
@@ -572,16 +570,16 @@ static int actkeys_duplicate_invoke(bContext *C, wmOperator *op, wmEvent *event)
actkeys_duplicate_exec(C, op);
RNA_int_set(op->ptr, "mode", TFM_TIME_TRANSLATE);
- WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
+ WM_operator_name_call(C, "TRANSFORM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
return OPERATOR_FINISHED;
}
-void ACT_OT_duplicate (wmOperatorType *ot)
+void ACTION_OT_duplicate (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Duplicate Keyframes";
- ot->idname= "ACT_OT_duplicate";
+ ot->idname= "ACTION_OT_duplicate";
ot->description= "Make a copy of all selected keyframes.";
/* api callbacks */
@@ -613,10 +611,19 @@ static void delete_action_keys (bAnimContext *ac)
/* loop through filtered data and delete selected keys */
for (ale= anim_data.first; ale; ale= ale->next) {
- //if (ale->type == ANIMTYPE_GPLAYER)
- // delete_gplayer_frames((bGPDlayer *)ale->data);
+ if (ale->type != ANIMTYPE_GPLAYER) {
+ FCurve *fcu= (FCurve *)ale->key_data;
+ AnimData *adt= ale->adt;
+
+ /* delete selected keyframes only */
+ delete_fcurve_keys(fcu);
+
+ /* Only delete curve too if it won't be doing anything anymore */
+ if ((fcu->totvert == 0) && (list_has_suitable_fmodifier(&fcu->modifiers, 0, FMI_TYPE_GENERATE_CURVE) == 0))
+ ANIM_fcurve_delete_from_animdata(ac, adt, fcu);
+ }
//else
- delete_fcurve_keys((FCurve *)ale->key_data); // XXX... this doesn't delete empty curves anymore
+ // delete_gplayer_frames((bGPDlayer *)ale->data);
}
/* free filtered list */
@@ -645,11 +652,11 @@ static int actkeys_delete_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_delete (wmOperatorType *ot)
+void ACTION_OT_delete (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Delete Keyframes";
- ot->idname= "ACT_OT_delete";
+ ot->idname= "ACTION_OT_delete";
ot->description= "Remove all selected keyframes.";
/* api callbacks */
@@ -709,11 +716,11 @@ static int actkeys_clean_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_clean (wmOperatorType *ot)
+void ACTION_OT_clean (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Clean Keyframes";
- ot->idname= "ACT_OT_clean";
+ ot->idname= "ACTION_OT_clean";
ot->description= "Simplify F-Curves by removing closely spaced keyframes.";
/* api callbacks */
@@ -773,11 +780,11 @@ static int actkeys_sample_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_sample (wmOperatorType *ot)
+void ACTION_OT_sample (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Sample Keyframes";
- ot->idname= "ACT_OT_sample";
+ ot->idname= "ACTION_OT_sample";
ot->description= "Add keyframes on every frame between the selected keyframes.";
/* api callbacks */
@@ -849,11 +856,11 @@ static int actkeys_expo_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_extrapolation_type (wmOperatorType *ot)
+void ACTION_OT_extrapolation_type (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Set Keyframe Extrapolation";
- ot->idname= "ACT_OT_extrapolation_type";
+ ot->idname= "ACTION_OT_extrapolation_type";
ot->description= "Set extrapolation mode for selected F-Curves.";
/* api callbacks */
@@ -920,11 +927,11 @@ static int actkeys_ipo_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_interpolation_type (wmOperatorType *ot)
+void ACTION_OT_interpolation_type (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Set Keyframe Interpolation";
- ot->idname= "ACT_OT_interpolation_type";
+ ot->idname= "ACTION_OT_interpolation_type";
ot->description= "Set interpolation mode for the F-Curve segments starting from the selected keyframes.";
/* api callbacks */
@@ -1009,11 +1016,11 @@ static int actkeys_handletype_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_handle_type (wmOperatorType *ot)
+void ACTION_OT_handle_type (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Set Keyframe Handle Type";
- ot->idname= "ACT_OT_handle_type";
+ ot->idname= "ACTION_OT_handle_type";
ot->description= "Set type of handle for selected keyframes.";
/* api callbacks */
@@ -1080,11 +1087,11 @@ static int actkeys_keytype_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_keyframe_type (wmOperatorType *ot)
+void ACTION_OT_keyframe_type (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Set Keyframe Type";
- ot->idname= "ACT_OT_keyframe_type";
+ ot->idname= "ACTION_OT_keyframe_type";
ot->description= "Set type of keyframe for the seleced keyframes.";
/* api callbacks */
@@ -1150,11 +1157,11 @@ static int actkeys_framejump_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_frame_jump (wmOperatorType *ot)
+void ACTION_OT_frame_jump (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Jump to Frame";
- ot->idname= "ACT_OT_frame_jump";
+ ot->idname= "ACTION_OT_frame_jump";
ot->description= "Set the current frame to the average frame of the selected keyframes.";
/* api callbacks */
@@ -1246,11 +1253,11 @@ static int actkeys_snap_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_snap (wmOperatorType *ot)
+void ACTION_OT_snap (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Snap Keys";
- ot->idname= "ACT_OT_snap";
+ ot->idname= "ACTION_OT_snap";
ot->description= "Snap selected keyframes to the times specified.";
/* api callbacks */
@@ -1363,11 +1370,11 @@ static int actkeys_mirror_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_mirror (wmOperatorType *ot)
+void ACTION_OT_mirror (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Mirror Keys";
- ot->idname= "ACT_OT_mirror";
+ ot->idname= "ACTION_OT_mirror";
ot->description= "Flip selected keyframes over the selected mirror line.";
/* api callbacks */
diff --git a/source/blender/editors/space_action/action_header.c b/source/blender/editors/space_action/action_header.c
deleted file mode 100644
index 6ec106077f7..00000000000
--- a/source/blender/editors/space_action/action_header.c
+++ /dev/null
@@ -1,348 +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_anim_types.h"
-#include "DNA_action_types.h"
-#include "DNA_key_types.h"
-#include "DNA_object_types.h"
-#include "DNA_space_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_animsys.h"
-#include "BKE_action.h"
-#include "BKE_context.h"
-#include "BKE_screen.h"
-
-#include "ED_anim_api.h"
-#include "ED_screen.h"
-#include "ED_transform.h"
-#include "ED_types.h"
-#include "ED_util.h"
-
-#include "RNA_access.h"
-
-#include "WM_api.h"
-#include "WM_types.h"
-
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
-
-#include "UI_interface.h"
-#include "UI_resources.h"
-#include "UI_view2d.h"
-
-#include "action_intern.h"
-
-enum {
- B_REDR= 1,
- B_MODECHANGE,
-} eActHeader_Events;
-
-/* ********************************************************* */
-/* Menu Defines... */
-
-static void act_viewmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- bScreen *sc= CTX_wm_screen(C);
- ScrArea *sa= CTX_wm_area(C);
- SpaceAction *sact= CTX_wm_space_action(C);
- PointerRNA spaceptr;
-
- /* retrieve state */
- RNA_pointer_create(&sc->id, &RNA_SpaceDopeSheetEditor, sact, &spaceptr);
-
- /* create menu */
- //uiItemO(layout, NULL, ICON_MENU_PANEL, "ACT_OT_properties");
-
- //uiItemS(layout);
-
- uiItemR(layout, NULL, 0, &spaceptr, "show_cframe_indicator", 0);
- uiItemR(layout, NULL, 0, &spaceptr, "show_sliders", 0);
- uiItemR(layout, NULL, 0, &spaceptr, "automerge_keyframes", 0);
-
- if (sact->flag & SACTION_DRAWTIME)
- uiItemO(layout, "Show Frames", 0, "ANIM_OT_time_toggle");
- else
- uiItemO(layout, "Show Seconds", 0, "ANIM_OT_time_toggle");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "ANIM_OT_previewrange_set");
- uiItemO(layout, NULL, 0, "ANIM_OT_previewrange_clear");
-
- uiItemO(layout, NULL, 0, "ACT_OT_previewrange_set");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "ACT_OT_frame_jump");
-
- uiItemO(layout, NULL, 0, "ACT_OT_view_all");
-
- if (sa->full)
- uiItemO(layout, NULL, 0, "SCREEN_OT_screen_full_area"); // "Tile Window", Ctrl UpArrow
- else
- uiItemO(layout, NULL, 0, "SCREEN_OT_screen_full_area"); // "Maximize Window", Ctrl DownArrow
-}
-
-static void act_selectmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- uiItemO(layout, NULL, 0, "ACT_OT_select_all_toggle");
- uiItemBooleanO(layout, "Invert All", 0, "ACT_OT_select_all_toggle", "invert", 1);
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "ACT_OT_select_border");
- uiItemBooleanO(layout, "Border Axis Range", 0, "ACT_OT_select_border", "axis_range", 1);
-
- uiItemS(layout);
-
- uiItemEnumO(layout, "Columns on Selected Keys", 0, "ACT_OT_select_column", "mode", ACTKEYS_COLUMNSEL_KEYS);
- uiItemEnumO(layout, "Column on Current Frame", 0, "ACT_OT_select_column", "mode", ACTKEYS_COLUMNSEL_CFRA);
-
- uiItemEnumO(layout, "Columns on Selected Markers", 0, "ACT_OT_select_column", "mode", ACTKEYS_COLUMNSEL_MARKERS_COLUMN);
- uiItemEnumO(layout, "Between Selected Markers", 0, "ACT_OT_select_column", "mode", ACTKEYS_COLUMNSEL_MARKERS_BETWEEN);
-}
-
-static void act_channelmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- uiItemO(layout, NULL, 0, "ANIM_OT_channels_setting_toggle");
- uiItemO(layout, NULL, 0, "ANIM_OT_channels_setting_enable");
- uiItemO(layout, NULL, 0, "ANIM_OT_channels_setting_disable");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "ANIM_OT_channels_editable_toggle");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "ANIM_OT_channels_expand");
- uiItemO(layout, NULL, 0, "ANIM_OT_channels_collapse");
-}
-
-static void act_gplayermenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- //uiItemMenuF(layout, "Transform", 0, nla_edit_transformmenu, NULL, NULL);
- //uiItemS(layout);
- //uiItemO(layout, NULL, 0, "NLAEDIT_OT_duplicate");
-}
-
-static void act_edit_transformmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- uiItemEnumO(layout, "Grab/Move", 0, "TFM_OT_transform", "mode", TFM_TIME_TRANSLATE);
- uiItemEnumO(layout, "Extend", 0, "TFM_OT_transform", "mode", TFM_TIME_EXTEND);
- uiItemEnumO(layout, "Scale", 0, "TFM_OT_transform", "mode", TFM_TIME_SCALE);
-}
-
-static void act_editmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- uiItemMenuF(layout, "Transform", 0, act_edit_transformmenu, NULL);
- uiItemMenuEnumO(layout, "Snap", 0, "ACT_OT_snap", "type");
- uiItemMenuEnumO(layout, "Mirror", 0, "ACT_OT_mirror", "type");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "ACT_OT_insert_keyframe");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "ACT_OT_duplicate");
- uiItemO(layout, NULL, 0, "ACT_OT_delete");
-
- uiItemS(layout);
-
- uiItemMenuEnumO(layout, "Keyframe Type", 0, "ACT_OT_keyframe_type", "type");
- uiItemMenuEnumO(layout, "Handle Type", 0, "ACT_OT_handle_type", "type");
- uiItemMenuEnumO(layout, "Interpolation Type", 0, "ACT_OT_interpolation_type", "type");
- uiItemMenuEnumO(layout, "Extrapolation Type", 0, "ACT_OT_extrapolation_type", "type");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "ACT_OT_clean");
- uiItemO(layout, NULL, 0, "ACT_OT_sample");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "ACT_OT_copy");
- uiItemO(layout, NULL, 0, "ACT_OT_paste");
-}
-
-/* ************************ header area region *********************** */
-
-static void do_action_buttons(bContext *C, void *arg, int event)
-{
- /* special exception for mode changing - enable custom settings? */
- if (event == B_MODECHANGE) {
- SpaceAction *saction= CTX_wm_space_action(C);
-
- /* if the new mode is ShapeKeys editor, enable sliders */
- if (saction->mode == SACTCONT_SHAPEKEY)
- saction->flag |= SACTION_SLIDERS;
- }
-
- ED_area_tag_refresh(CTX_wm_area(C));
- ED_area_tag_redraw(CTX_wm_area(C));
-}
-
-void action_header_buttons(const bContext *C, ARegion *ar)
-{
- ScrArea *sa= CTX_wm_area(C);
- SpaceAction *saction= CTX_wm_space_action(C);
- bAnimContext ac;
- uiBlock *block;
- int xco, yco= 3, xmax;
-
- block= uiBeginBlock(C, ar, "header buttons", UI_EMBOSS);
- uiBlockSetHandleFunc(block, do_action_buttons, NULL);
-
- xco= ED_area_header_standardbuttons(C, block, yco);
-
- uiBlockSetEmboss(block, UI_EMBOSS);
-
- /* get context... (also syncs data) */
- ANIM_animdata_get_context(C, &ac);
-
- if ((sa->flag & HEADER_NO_PULLDOWN)==0) {
-
- xmax= GetButStringLength("View");
- uiDefMenuBut(block, act_viewmenu, NULL, "View", xco, yco, xmax-3, 20, "");
- xco+= xmax;
-
- xmax= GetButStringLength("Select");
- uiDefMenuBut(block, act_selectmenu, NULL, "Select", xco, yco, xmax-3, 20, "");
- xco+= xmax;
-
- if ( (saction->mode == SACTCONT_DOPESHEET) ||
- ((saction->action) && (saction->mode==SACTCONT_ACTION)) )
- {
- xmax= GetButStringLength("Channel");
- uiDefMenuBut(block, act_channelmenu, NULL, "Channel", xco, yco, xmax-3, 20, "");
- xco+= xmax;
- }
- else if (saction->mode==SACTCONT_GPENCIL) {
- xmax= GetButStringLength("Channel");
- uiDefMenuBut(block, act_gplayermenu, NULL, "Channel", xco, yco, xmax-3, 20, "");
- xco+= xmax;
- }
-
- //xmax= GetButStringLength("Marker");
- //uiDefMenuBut(block, act_markermenu, NULL, "Marker", xco, yco, xmax-3, 20, "");
- //xco+= xmax;
-
- if (saction->mode == SACTCONT_GPENCIL) {
- //xmax= GetButStringLength("Frame");
- //uiDefMenuBut(block, act_selectmenu, NULL, "Frame", xco, yco, xmax-3, 20, "");
- //xco+= xmax;
- }
- else {
- xmax= GetButStringLength("Key");
- uiDefMenuBut(block, act_editmenu, NULL, "Key", xco, yco, xmax-3, 20, "");
- xco+= xmax;
- }
- }
-
- uiBlockSetEmboss(block, UI_EMBOSS);
-
- /* MODE SELECTOR */
- uiDefButC(block, MENU, B_MODECHANGE,
- "Editor Mode %t|DopeSheet %x3|Action Editor %x0|ShapeKey Editor %x1|Grease Pencil %x2",
- xco,yco,90,YIC, &saction->mode, 0, 1, 0, 0,
- "Editing modes for this editor");
-
-
- xco += (90 + 8);
-
- /* SUMMARY CHANNEL */
- uiDefIconTextButBitI(block, TOG, ADS_FILTER_SUMMARY, B_REDR, ICON_BORDERMOVE, "Summary", xco,yco,XIC*4,YIC, &(saction->ads.filterflag), 0, 0, 0, 0, "Include DopeSheet summary row"); // TODO: needs a better icon
- xco += (XIC*4.5);
-
- /*if (ac.data)*/
- {
- /* MODE-DEPENDENT DRAWING */
- if (saction->mode == SACTCONT_DOPESHEET) {
- /* FILTERING OPTIONS */
- xco -= XIC; // XXX first button incurs this offset...
- xco= ANIM_headerUI_standard_buttons(C, &saction->ads, block, xco, yco);
- }
- else if (saction->mode == SACTCONT_ACTION) {
- uiLayout *layout;
- bScreen *sc= CTX_wm_screen(C);
- PointerRNA ptr;
-
- RNA_pointer_create(&sc->id, &RNA_SpaceDopeSheetEditor, saction, &ptr);
-
- layout= uiBlockLayout(block, UI_LAYOUT_HORIZONTAL, UI_LAYOUT_HEADER, xco, 20+3, 20, 1, U.uistyles.first);
- uiTemplateID(layout, (bContext*)C, &ptr, "action", "ACT_OT_new", NULL, NULL);
- uiBlockLayoutResolve(block, &xco, NULL);
-
- xco += 8;
- }
-
- /* draw AUTOSNAP */
- if (saction->mode != SACTCONT_GPENCIL) {
- if (saction->flag & SACTION_DRAWTIME) {
- uiDefButC(block, MENU, B_REDR,
- "Auto-Snap Keyframes %t|No Snap %x0|Second Step %x1|Nearest Second %x2|Nearest Marker %x3",
- xco,yco,90,YIC, &(saction->autosnap), 0, 1, 0, 0,
- "Auto-snapping mode for keyframes when transforming");
- }
- else {
- uiDefButC(block, MENU, B_REDR,
- "Auto-Snap Keyframes %t|No Snap %x0|Frame Step %x1|Nearest Frame %x2|Nearest Marker %x3",
- xco,yco,90,YIC, &(saction->autosnap), 0, 1, 0, 0,
- "Auto-snapping mode for keyframes when transforming");
- }
-
- xco += (90 + 8);
- }
-
- /* COPY PASTE */
- uiBlockBeginAlign(block);
- uiDefIconButO(block, BUT, "ACT_OT_copy", WM_OP_INVOKE_REGION_WIN, ICON_COPYDOWN, xco,yco,XIC,YIC, "Copies the selected keyframes to the buffer.");
- xco += XIC;
- uiDefIconButO(block, BUT, "ACT_OT_paste", WM_OP_INVOKE_REGION_WIN, ICON_PASTEDOWN, xco,yco,XIC,YIC, "Pastes the keyframes from the buffer into the selected channels.");
- uiBlockEndAlign(block);
- xco += (XIC + 8);
- }
-
- /* always as last */
- UI_view2d_totRect_set(&ar->v2d, xco+XIC+80, (int)(ar->v2d.tot.ymax-ar->v2d.tot.ymin));
-
- uiEndBlock(C, block);
- uiDrawBlock(C, block);
-}
-
-
diff --git a/source/blender/editors/space_action/action_intern.h b/source/blender/editors/space_action/action_intern.h
index c436475b537..e45b2d05fac 100644
--- a/source/blender/editors/space_action/action_intern.h
+++ b/source/blender/editors/space_action/action_intern.h
@@ -53,10 +53,10 @@ void action_header_buttons(const struct bContext *C, struct ARegion *ar);
/* ***************************************** */
/* action_select.c */
-void ACT_OT_select_all_toggle(struct wmOperatorType *ot);
-void ACT_OT_select_border(struct wmOperatorType *ot);
-void ACT_OT_select_column(struct wmOperatorType *ot);
-void ACT_OT_clickselect(struct wmOperatorType *ot);
+void ACTION_OT_select_all_toggle(struct wmOperatorType *ot);
+void ACTION_OT_select_border(struct wmOperatorType *ot);
+void ACTION_OT_select_column(struct wmOperatorType *ot);
+void ACTION_OT_clickselect(struct wmOperatorType *ot);
/* defines for left-right select tool */
enum {
@@ -77,29 +77,29 @@ enum {
/* ***************************************** */
/* action_edit.c */
-void ACT_OT_previewrange_set(struct wmOperatorType *ot);
-void ACT_OT_view_all(struct wmOperatorType *ot);
+void ACTION_OT_previewrange_set(struct wmOperatorType *ot);
+void ACTION_OT_view_all(struct wmOperatorType *ot);
-void ACT_OT_copy(struct wmOperatorType *ot);
-void ACT_OT_paste(struct wmOperatorType *ot);
+void ACTION_OT_copy(struct wmOperatorType *ot);
+void ACTION_OT_paste(struct wmOperatorType *ot);
-void ACT_OT_insert_keyframe(struct wmOperatorType *ot);
-void ACT_OT_duplicate(struct wmOperatorType *ot);
-void ACT_OT_delete(struct wmOperatorType *ot);
-void ACT_OT_clean(struct wmOperatorType *ot);
-void ACT_OT_sample(struct wmOperatorType *ot);
+void ACT_OT_keyframe_insert(struct wmOperatorType *ot);
+void ACTION_OT_duplicate(struct wmOperatorType *ot);
+void ACTION_OT_delete(struct wmOperatorType *ot);
+void ACTION_OT_clean(struct wmOperatorType *ot);
+void ACTION_OT_sample(struct wmOperatorType *ot);
-void ACT_OT_keyframe_type(struct wmOperatorType *ot);
-void ACT_OT_handle_type(struct wmOperatorType *ot);
-void ACT_OT_interpolation_type(struct wmOperatorType *ot);
-void ACT_OT_extrapolation_type(struct wmOperatorType *ot);
+void ACTION_OT_keyframe_type(struct wmOperatorType *ot);
+void ACTION_OT_handle_type(struct wmOperatorType *ot);
+void ACTION_OT_interpolation_type(struct wmOperatorType *ot);
+void ACTION_OT_extrapolation_type(struct wmOperatorType *ot);
-void ACT_OT_frame_jump(struct wmOperatorType *ot);
+void ACTION_OT_frame_jump(struct wmOperatorType *ot);
-void ACT_OT_snap(struct wmOperatorType *ot);
-void ACT_OT_mirror(struct wmOperatorType *ot);
+void ACTION_OT_snap(struct wmOperatorType *ot);
+void ACTION_OT_mirror(struct wmOperatorType *ot);
-void ACT_OT_new(struct wmOperatorType *ot);
+void ACTION_OT_new(struct wmOperatorType *ot);
/* defines for snap keyframes
* NOTE: keep in sync with eEditKeyframes_Snap (in ED_keyframes_edit.h)
diff --git a/source/blender/editors/space_action/action_ops.c b/source/blender/editors/space_action/action_ops.c
index ba504fa8a69..68c354b2b87 100644
--- a/source/blender/editors/space_action/action_ops.c
+++ b/source/blender/editors/space_action/action_ops.c
@@ -63,30 +63,30 @@ void action_operatortypes(void)
{
/* keyframes */
/* selection */
- WM_operatortype_append(ACT_OT_clickselect);
- WM_operatortype_append(ACT_OT_select_all_toggle);
- WM_operatortype_append(ACT_OT_select_border);
- WM_operatortype_append(ACT_OT_select_column);
+ WM_operatortype_append(ACTION_OT_clickselect);
+ WM_operatortype_append(ACTION_OT_select_all_toggle);
+ WM_operatortype_append(ACTION_OT_select_border);
+ WM_operatortype_append(ACTION_OT_select_column);
/* editing */
- WM_operatortype_append(ACT_OT_snap);
- WM_operatortype_append(ACT_OT_mirror);
- WM_operatortype_append(ACT_OT_frame_jump);
- WM_operatortype_append(ACT_OT_handle_type);
- WM_operatortype_append(ACT_OT_interpolation_type);
- WM_operatortype_append(ACT_OT_extrapolation_type);
- WM_operatortype_append(ACT_OT_keyframe_type);
- WM_operatortype_append(ACT_OT_sample);
- WM_operatortype_append(ACT_OT_clean);
- WM_operatortype_append(ACT_OT_delete);
- WM_operatortype_append(ACT_OT_duplicate);
- WM_operatortype_append(ACT_OT_insert_keyframe);
- WM_operatortype_append(ACT_OT_copy);
- WM_operatortype_append(ACT_OT_paste);
- WM_operatortype_append(ACT_OT_new);
-
- WM_operatortype_append(ACT_OT_previewrange_set);
- WM_operatortype_append(ACT_OT_view_all);
+ WM_operatortype_append(ACTION_OT_snap);
+ WM_operatortype_append(ACTION_OT_mirror);
+ WM_operatortype_append(ACTION_OT_frame_jump);
+ WM_operatortype_append(ACTION_OT_handle_type);
+ WM_operatortype_append(ACTION_OT_interpolation_type);
+ WM_operatortype_append(ACTION_OT_extrapolation_type);
+ WM_operatortype_append(ACTION_OT_keyframe_type);
+ WM_operatortype_append(ACTION_OT_sample);
+ WM_operatortype_append(ACTION_OT_clean);
+ WM_operatortype_append(ACTION_OT_delete);
+ WM_operatortype_append(ACTION_OT_duplicate);
+ WM_operatortype_append(ACT_OT_keyframe_insert);
+ WM_operatortype_append(ACTION_OT_copy);
+ WM_operatortype_append(ACTION_OT_paste);
+ WM_operatortype_append(ACTION_OT_new);
+
+ WM_operatortype_append(ACTION_OT_previewrange_set);
+ WM_operatortype_append(ACTION_OT_view_all);
}
/* ************************** registration - keymaps **********************************/
@@ -97,69 +97,69 @@ static void action_keymap_keyframes (wmKeyConfig *keyconf, wmKeyMap *keymap)
/* action_select.c - selection tools */
/* click-select */
- WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, 0, 0);
- kmi= WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, 0, 0);
+ kmi= WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT, 0);
RNA_boolean_set(kmi->ptr, "column", 1);
- kmi= WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0);
+ kmi= WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0);
RNA_boolean_set(kmi->ptr, "extend", 1);
- kmi= WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT|KM_SHIFT, 0);
+ kmi= WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT|KM_SHIFT, 0);
RNA_boolean_set(kmi->ptr, "extend", 1);
RNA_boolean_set(kmi->ptr, "column", 1);
- kmi= WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_CTRL, 0);
+ kmi= WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_CTRL, 0);
RNA_enum_set(kmi->ptr, "left_right", ACTKEYS_LRSEL_TEST);
/* deselect all */
- WM_keymap_add_item(keymap, "ACT_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
- RNA_boolean_set(WM_keymap_add_item(keymap, "ACT_OT_select_all_toggle", IKEY, KM_PRESS, KM_CTRL, 0)->ptr, "invert", 1);
+ WM_keymap_add_item(keymap, "ACTION_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
+ RNA_boolean_set(WM_keymap_add_item(keymap, "ACTION_OT_select_all_toggle", IKEY, KM_PRESS, KM_CTRL, 0)->ptr, "invert", 1);
/* borderselect */
- WM_keymap_add_item(keymap, "ACT_OT_select_border", BKEY, KM_PRESS, 0, 0);
- RNA_boolean_set(WM_keymap_add_item(keymap, "ACT_OT_select_border", BKEY, KM_PRESS, KM_ALT, 0)->ptr, "axis_range", 1);
+ WM_keymap_add_item(keymap, "ACTION_OT_select_border", BKEY, KM_PRESS, 0, 0);
+ RNA_boolean_set(WM_keymap_add_item(keymap, "ACTION_OT_select_border", BKEY, KM_PRESS, KM_ALT, 0)->ptr, "axis_range", 1);
/* column select */
- RNA_enum_set(WM_keymap_add_item(keymap, "ACT_OT_select_column", KKEY, KM_PRESS, 0, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_KEYS);
- RNA_enum_set(WM_keymap_add_item(keymap, "ACT_OT_select_column", KKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_CFRA);
- RNA_enum_set(WM_keymap_add_item(keymap, "ACT_OT_select_column", KKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_MARKERS_COLUMN);
- RNA_enum_set(WM_keymap_add_item(keymap, "ACT_OT_select_column", KKEY, KM_PRESS, KM_ALT, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_MARKERS_BETWEEN);
+ RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, 0, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_KEYS);
+ RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_CFRA);
+ RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_MARKERS_COLUMN);
+ RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, KM_ALT, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_MARKERS_BETWEEN);
/* action_edit.c */
/* snap - current frame to selected keys */
// TODO: maybe since this is called jump, we're better to have it on <something>-J?
- WM_keymap_add_item(keymap, "ACT_OT_frame_jump", SKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_frame_jump", SKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
/* menu + single-step transform */
- WM_keymap_add_item(keymap, "ACT_OT_snap", SKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "ACT_OT_mirror", MKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_snap", SKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_mirror", MKEY, KM_PRESS, KM_SHIFT, 0);
/* menu + set setting */
- WM_keymap_add_item(keymap, "ACT_OT_handle_type", HKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "ACT_OT_interpolation_type", TKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "ACT_OT_extrapolation_type", EKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "ACT_OT_keyframe_type", RKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_handle_type", HKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_interpolation_type", TKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_extrapolation_type", EKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_keyframe_type", RKEY, KM_PRESS, 0, 0);
/* destructive */
- WM_keymap_add_item(keymap, "ACT_OT_clean", OKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "ACT_OT_sample", OKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_clean", OKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_sample", OKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "ACT_OT_delete", XKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "ACT_OT_delete", DELKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_delete", XKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_delete", DELKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "ACT_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "ACT_OT_insert_keyframe", IKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "ACT_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0);
/* copy/paste */
- WM_keymap_add_item(keymap, "ACT_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0);
- WM_keymap_add_item(keymap, "ACT_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0);
/* auto-set range */
- WM_keymap_add_item(keymap, "ACT_OT_previewrange_set", PKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
- WM_keymap_add_item(keymap, "ACT_OT_view_all", HOMEKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_previewrange_set", PKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
+ WM_keymap_add_item(keymap, "ACTION_OT_view_all", HOMEKEY, KM_PRESS, 0, 0);
/* transform system */
transform_keymap_for_space(keyconf, keymap, SPACE_ACTION);
/* test */
- /* WM_keymap_add_item(keymap, "ACT_OT_test", QKEY, KM_PRESS, 0, 0); */
+ /* WM_keymap_add_item(keymap, "ACTION_OT_test", QKEY, KM_PRESS, 0, 0); */
}
/* --------------- */
@@ -175,7 +175,7 @@ void action_keymap(wmKeyConfig *keyconf)
*/
/* keyframes */
- keymap= WM_keymap_find(keyconf, "Action_Keys", SPACE_ACTION, 0);
+ keymap= WM_keymap_find(keyconf, "Dopesheet", SPACE_ACTION, 0);
action_keymap_keyframes(keyconf, keymap);
}
diff --git a/source/blender/editors/space_action/action_select.c b/source/blender/editors/space_action/action_select.c
index c4f2e40e958..8eeed6da100 100644
--- a/source/blender/editors/space_action/action_select.c
+++ b/source/blender/editors/space_action/action_select.c
@@ -181,11 +181,11 @@ static int actkeys_deselectall_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_select_all_toggle (wmOperatorType *ot)
+void ACTION_OT_select_all_toggle (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Select All";
- ot->idname= "ACT_OT_select_all_toggle";
+ ot->idname= "ACTION_OT_select_all_toggle";
ot->description= "Toggle selection of all keyframes.";
/* api callbacks */
@@ -342,11 +342,11 @@ static int actkeys_borderselect_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_select_border(wmOperatorType *ot)
+void ACTION_OT_select_border(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Border Select";
- ot->idname= "ACT_OT_select_border";
+ ot->idname= "ACTION_OT_select_border";
ot->description= "Select all keyframes within the specified region.";
/* api callbacks */
@@ -556,11 +556,11 @@ static int actkeys_columnselect_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ACT_OT_select_column (wmOperatorType *ot)
+void ACTION_OT_select_column (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Select All";
- ot->idname= "ACT_OT_select_column";
+ ot->idname= "ACTION_OT_select_column";
ot->description= "Select all keyframes on the specified frame(s).";
/* api callbacks */
@@ -979,11 +979,11 @@ static int actkeys_clickselect_invoke(bContext *C, wmOperator *op, wmEvent *even
return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH;
}
-void ACT_OT_clickselect (wmOperatorType *ot)
+void ACTION_OT_clickselect (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Mouse Select Keys";
- ot->idname= "ACT_OT_clickselect";
+ ot->idname= "ACTION_OT_clickselect";
ot->description= "Select keyframes by clicking on them.";
/* api callbacks - absolutely no exec() this yet... */
diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c
index 59b690002d2..57a39b3225e 100644
--- a/source/blender/editors/space_action/space_action.c
+++ b/source/blender/editors/space_action/space_action.c
@@ -45,6 +45,7 @@
#include "BKE_colortools.h"
#include "BKE_context.h"
#include "BKE_screen.h"
+#include "BKE_utildefines.h"
#include "ED_space_api.h"
#include "ED_screen.h"
@@ -158,7 +159,7 @@ static void action_main_area_init(wmWindowManager *wm, ARegion *ar)
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy);
/* own keymap */
- keymap= WM_keymap_find(wm->defaultconf, "Action_Keys", SPACE_ACTION, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "Dopesheet", SPACE_ACTION, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
}
@@ -221,7 +222,7 @@ static void action_channel_area_init(wmWindowManager *wm, ARegion *ar)
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_LIST, ar->winx, ar->winy);
/* own keymap */
- keymap= WM_keymap_find(wm->defaultconf, "Animation_Channels", 0, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "Animation Channels", 0, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
}
@@ -259,29 +260,12 @@ static void action_channel_area_draw(const bContext *C, ARegion *ar)
/* add handlers, stuff you only do once or on area/region changes */
static void action_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 action_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);
-
- action_header_buttons(C, ar);
-
- /* restore view matrix? */
- UI_view2d_view_restore(C);
+ ED_region_header(C, ar);
}
static void action_channel_area_listener(ARegion *ar, wmNotifier *wmn)
@@ -306,8 +290,16 @@ static void action_channel_area_listener(ARegion *ar, wmNotifier *wmn)
case ND_KEYS:
ED_region_tag_redraw(ar);
break;
+ case ND_MODIFIER:
+ if(wmn->action == NA_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
}
break;
+ case NC_ID:
+ if(wmn->action == NA_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
default:
if(wmn->data==ND_KEYS)
ED_region_tag_redraw(ar);
@@ -348,6 +340,11 @@ static void action_main_area_listener(ARegion *ar, wmNotifier *wmn)
break;
}
break;
+ case NC_ID:
+ if(wmn->action == NA_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
+
default:
if(wmn->data==ND_KEYS)
ED_region_tag_redraw(ar);
@@ -357,28 +354,42 @@ static void action_main_area_listener(ARegion *ar, wmNotifier *wmn)
/* editor level listener */
static void action_listener(ScrArea *sa, wmNotifier *wmn)
{
+ SpaceAction *saction= (SpaceAction *)sa->spacedata.first;
+
/* context changes */
switch (wmn->category) {
case NC_ANIMATION:
- ED_area_tag_refresh(sa);
+ /* for selection changes of animation data, we can just redraw... otherwise autocolor might need to be done again */
+ if (ELEM(wmn->data, ND_KEYFRAME_SELECT, ND_ANIMCHAN_SELECT))
+ ED_area_tag_redraw(sa);
+ else
+ ED_area_tag_refresh(sa);
break;
case NC_SCENE:
- /*switch (wmn->data) {
- case ND_OB_ACTIVE:
+ switch (wmn->data) {
+ case ND_OB_ACTIVE: /* selection changed, so force refresh to flush (needs flag set to do syncing) */
case ND_OB_SELECT:
+ saction->flag |= SACTION_TEMP_NEEDCHANSYNC;
ED_area_tag_refresh(sa);
break;
- }*/
- ED_area_tag_refresh(sa);
+
+ default: /* just redrawing the view will do */
+ ED_area_tag_redraw(sa);
+ break;
+ }
break;
case NC_OBJECT:
- /*switch (wmn->data) {
- case ND_BONE_SELECT:
+ switch (wmn->data) {
+ case ND_BONE_SELECT: /* selection changed, so force refresh to flush (needs flag set to do syncing) */
case ND_BONE_ACTIVE:
+ saction->flag |= SACTION_TEMP_NEEDCHANSYNC;
ED_area_tag_refresh(sa);
break;
- }*/
- ED_area_tag_refresh(sa);
+
+ default: /* just redrawing the view will do */
+ ED_area_tag_redraw(sa);
+ break;
+ }
break;
case NC_SPACE:
if(wmn->data == ND_SPACE_DOPESHEET)
@@ -389,24 +400,14 @@ static void action_listener(ScrArea *sa, wmNotifier *wmn)
static void action_refresh(const bContext *C, ScrArea *sa)
{
- SpaceAction *saction = (SpaceAction *)sa->spacedata.first;
-
- /* updates to data needed depends on Action Editor mode... */
- switch (saction->mode) {
- case SACTCONT_DOPESHEET: /* DopeSheet - for now, just all armatures... */
- {
-
- }
- break;
-
- case SACTCONT_ACTION: /* Action Editor - just active object will do */
- {
- Object *ob= CTX_data_active_object(C);
-
- /* sync changes to bones to the corresponding action channels */
- ANIM_pose_to_action_sync(ob, sa);
- }
- break;
+ SpaceAction *saction= CTX_wm_space_action(C);
+
+ /* update the state of the animchannels in response to changes from the data they represent
+ * NOTE: the temp flag is used to indicate when this needs to be done, and will be cleared once handled
+ */
+ if (saction->flag & SACTION_TEMP_NEEDCHANSYNC) {
+ ANIM_sync_animchannels_to_data(C);
+ saction->flag &= ~SACTION_TEMP_NEEDCHANSYNC;
}
/* region updates? */
@@ -420,6 +421,7 @@ void ED_spacetype_action(void)
ARegionType *art;
st->spaceid= SPACE_ACTION;
+ strncpy(st->name, "Action", BKE_ST_MAXNAME);
st->new= action_new;
st->free= action_free;
@@ -444,7 +446,7 @@ void ED_spacetype_action(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype action region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->init= action_header_area_init;
art->draw= action_header_area_draw;
diff --git a/source/blender/editors/space_api/spacetypes.c b/source/blender/editors/space_api/spacetypes.c
index 8cf56ae3eda..90457c05fa7 100644
--- a/source/blender/editors/space_api/spacetypes.c
+++ b/source/blender/editors/space_api/spacetypes.c
@@ -101,7 +101,8 @@ void ED_spacetypes_init(void)
ED_operatortypes_sound();
ED_operatortypes_render();
- ui_view2d_operatortypes();
+ UI_view2d_operatortypes();
+ UI_buttons_operatortypes();
spacetypes = BKE_spacetypes_list();
for(type=spacetypes->first; type; type=type->next)
diff --git a/source/blender/editors/space_buttons/buttons_context.c b/source/blender/editors/space_buttons/buttons_context.c
index 0e2769a3557..ade906ce678 100644
--- a/source/blender/editors/space_buttons/buttons_context.c
+++ b/source/blender/editors/space_buttons/buttons_context.c
@@ -767,7 +767,7 @@ void buttons_context_draw(const bContext *C, uiLayout *layout)
ptr= &path->ptr[a];
if(a != 0)
- uiItemL(row, "", VICON_SMALL_TRI_RIGHT);
+ uiItemL(row, "", VICO_SMALL_TRI_RIGHT_VEC);
if(ptr->data) {
icon= RNA_struct_ui_icon(ptr->type);
diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c
index 2c918bd9b30..7f9c1477ee7 100644
--- a/source/blender/editors/space_buttons/space_buttons.c
+++ b/source/blender/editors/space_buttons/space_buttons.c
@@ -142,7 +142,7 @@ static void buttons_main_area_init(wmWindowManager *wm, ARegion *ar)
ED_region_panels_init(wm, ar);
- keymap= WM_keymap_find(wm->defaultconf, "Buttons Generic", SPACE_BUTS, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "Property Editor", SPACE_BUTS, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
}
@@ -193,7 +193,7 @@ void buttons_operatortypes(void)
void buttons_keymap(struct wmKeyConfig *keyconf)
{
- wmKeyMap *keymap= WM_keymap_find(keyconf, "Buttons Generic", SPACE_BUTS, 0);
+ wmKeyMap *keymap= WM_keymap_find(keyconf, "Property Editor", SPACE_BUTS, 0);
WM_keymap_add_item(keymap, "BUTTONS_OT_toolbox", RIGHTMOUSE, KM_PRESS, 0, 0);
}
@@ -236,6 +236,17 @@ static void buttons_header_area_draw(const bContext *C, ARegion *ar)
UI_view2d_view_restore(C);
}
+/* draw a certain button set only if properties area is currently
+ * showing that button set, to reduce unnecessary drawing. */
+static void buttons_area_redraw(ScrArea *sa, short buttons)
+{
+ SpaceButs *sbuts= sa->spacedata.first;
+
+ /* if the area's current button set is equal to the one to redraw */
+ if(sbuts->mainb == buttons)
+ ED_area_tag_redraw(sa);
+}
+
/* reused! */
static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn)
{
@@ -244,46 +255,63 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn)
/* context changes */
switch(wmn->category) {
case NC_SCENE:
- /* lazy general redraw tag here, in case more than 1 propertie window is opened
- Not all RNA props have a ND_sub notifier(yet) */
- ED_area_tag_redraw(sa);
switch(wmn->data) {
case ND_FRAME:
- case ND_MODE:
case ND_RENDER_OPTIONS:
- case ND_KEYINGSET:
- case ND_LAYER:
- ED_area_tag_redraw(sa);
+ buttons_area_redraw(sa, BCONTEXT_RENDER);
break;
-
case ND_OB_ACTIVE:
ED_area_tag_redraw(sa);
sbuts->preview= 1;
break;
+ case ND_KEYINGSET:
+ buttons_area_redraw(sa, BCONTEXT_SCENE);
+ break;
+ case ND_MODE:
+ case ND_LAYER:
+ default:
+ ED_area_tag_redraw(sa);
+ break;
}
break;
case NC_OBJECT:
- ED_area_tag_redraw(sa);
- /* lazy general redraw tag here, in case more than 1 propertie window is opened
- Not all RNA props have a ND_ notifier(yet) */
switch(wmn->data) {
case ND_TRANSFORM:
+ buttons_area_redraw(sa, BCONTEXT_OBJECT);
+ break;
case ND_BONE_ACTIVE:
case ND_BONE_SELECT:
+ buttons_area_redraw(sa, BCONTEXT_BONE);
+ buttons_area_redraw(sa, BCONTEXT_BONE_CONSTRAINT);
+ break;
case ND_MODIFIER:
+ if(wmn->action == NA_RENAME)
+ ED_area_tag_redraw(sa);
+ else
+ buttons_area_redraw(sa, BCONTEXT_MODIFIER);
+ break;
case ND_CONSTRAINT:
- ED_area_tag_redraw(sa);
+ buttons_area_redraw(sa, BCONTEXT_CONSTRAINT);
break;
+ case ND_PARTICLE_DATA:
+ buttons_area_redraw(sa, BCONTEXT_PARTICLE);
+ break;
+ case ND_DRAW:
case ND_SHADING:
case ND_SHADING_DRAW:
/* currently works by redraws... if preview is set, it (re)starts job */
sbuts->preview= 1;
break;
+ default:
+ /* Not all object RNA props have a ND_ notifier (yet) */
+ ED_area_tag_redraw(sa);
+ break;
}
break;
case NC_GEOM:
switch(wmn->data) {
case ND_SELECT:
+ case ND_DATA:
ED_area_tag_redraw(sa);
break;
}
@@ -299,7 +327,13 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn)
}
break;
case NC_WORLD:
+ buttons_area_redraw(sa, BCONTEXT_WORLD);
+ sbuts->preview= 1;
+ break;
case NC_LAMP:
+ buttons_area_redraw(sa, BCONTEXT_DATA);
+ sbuts->preview= 1;
+ break;
case NC_TEXTURE:
ED_area_tag_redraw(sa);
sbuts->preview= 1;
@@ -308,6 +342,10 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn)
if(wmn->data == ND_SPACE_PROPERTIES)
ED_area_tag_redraw(sa);
break;
+ case NC_ID:
+ if(wmn->action == NA_RENAME)
+ ED_area_tag_redraw(sa);
+ break;
}
if(wmn->data == ND_KEYS)
@@ -321,6 +359,7 @@ void ED_spacetype_buttons(void)
ARegionType *art;
st->spaceid= SPACE_BUTS;
+ strncpy(st->name, "Buttons", BKE_ST_MAXNAME);
st->new= buttons_new;
st->free= buttons_free;
@@ -345,7 +384,7 @@ void ED_spacetype_buttons(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype buttons region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= BUTS_HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->init= buttons_header_area_init;
art->draw= buttons_header_area_draw;
diff --git a/source/blender/editors/space_console/console_intern.h b/source/blender/editors/space_console/console_intern.h
index 6d002efcc8e..889ed2dae81 100644
--- a/source/blender/editors/space_console/console_intern.h
+++ b/source/blender/editors/space_console/console_intern.h
@@ -51,28 +51,28 @@ ConsoleLine *console_history_verify(const struct bContext *C);
int console_report_mask(SpaceConsole *sc);
-void CONSOLE_OT_move(wmOperatorType *ot);
-void CONSOLE_OT_delete(wmOperatorType *ot);
-void CONSOLE_OT_insert(wmOperatorType *ot);
+void CONSOLE_OT_move(struct wmOperatorType *ot);
+void CONSOLE_OT_delete(struct wmOperatorType *ot);
+void CONSOLE_OT_insert(struct wmOperatorType *ot);
-void CONSOLE_OT_history_append(wmOperatorType *ot);
-void CONSOLE_OT_scrollback_append(wmOperatorType *ot);
+void CONSOLE_OT_history_append(struct wmOperatorType *ot);
+void CONSOLE_OT_scrollback_append(struct wmOperatorType *ot);
-void CONSOLE_OT_clear(wmOperatorType *ot);
-void CONSOLE_OT_history_cycle(wmOperatorType *ot);
-void CONSOLE_OT_copy(wmOperatorType *ot);
-void CONSOLE_OT_paste(wmOperatorType *ot);
-void CONSOLE_OT_zoom(wmOperatorType *ot);
+void CONSOLE_OT_clear(struct wmOperatorType *ot);
+void CONSOLE_OT_history_cycle(struct wmOperatorType *ot);
+void CONSOLE_OT_copy(struct wmOperatorType *ot);
+void CONSOLE_OT_paste(struct wmOperatorType *ot);
+void CONSOLE_OT_zoom(struct wmOperatorType *ot);
/* console_report.c */
-void CONSOLE_OT_select_pick(wmOperatorType *ot); /* report selection */
-void CONSOLE_OT_select_all_toggle(wmOperatorType *ot);
-void CONSOLE_OT_select_border(wmOperatorType *ot);
+void CONSOLE_OT_select_pick(struct wmOperatorType *ot); /* report selection */
+void CONSOLE_OT_select_all_toggle(struct wmOperatorType *ot);
+void CONSOLE_OT_select_border(struct wmOperatorType *ot);
-void CONSOLE_OT_report_replay(wmOperatorType *ot);
-void CONSOLE_OT_report_delete(wmOperatorType *ot);
-void CONSOLE_OT_report_copy(wmOperatorType *ot);
+void CONSOLE_OT_report_replay(struct wmOperatorType *ot);
+void CONSOLE_OT_report_delete(struct wmOperatorType *ot);
+void CONSOLE_OT_report_copy(struct wmOperatorType *ot);
diff --git a/source/blender/editors/space_console/console_ops.c b/source/blender/editors/space_console/console_ops.c
index a2e11dc6bd5..89c058ad7f3 100644
--- a/source/blender/editors/space_console/console_ops.c
+++ b/source/blender/editors/space_console/console_ops.c
@@ -369,9 +369,6 @@ void CONSOLE_OT_move(wmOperatorType *ot)
ot->exec= move_exec;
ot->poll= console_edit_poll;
- /* flags */
- ot->flag= OPTYPE_REGISTER;
-
/* properties */
RNA_def_enum(ot->srna, "type", move_type_items, LINE_BEGIN, "Type", "Where to move cursor to.");
}
@@ -415,9 +412,6 @@ void CONSOLE_OT_insert(wmOperatorType *ot)
ot->invoke= insert_invoke;
ot->poll= console_edit_poll;
- /* flags */
- ot->flag= OPTYPE_REGISTER;
-
/* properties */
RNA_def_string(ot->srna, "text", "", 0, "Text", "Text to insert at the cursor position.");
}
@@ -482,9 +476,6 @@ void CONSOLE_OT_delete(wmOperatorType *ot)
ot->exec= delete_exec;
ot->poll= console_edit_poll;
- /* flags */
- ot->flag= OPTYPE_REGISTER;
-
/* properties */
RNA_def_enum(ot->srna, "type", delete_type_items, DEL_NEXT_CHAR, "Type", "Which part of the text to delete.");
}
@@ -525,9 +516,6 @@ void CONSOLE_OT_clear(wmOperatorType *ot)
/* api callbacks */
ot->exec= clear_exec;
ot->poll= console_edit_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER;
/* properties */
RNA_def_boolean(ot->srna, "scrollback", 1, "Scrollback", "Clear the scrollback history");
@@ -587,9 +575,6 @@ void CONSOLE_OT_history_cycle(wmOperatorType *ot)
/* api callbacks */
ot->exec= history_cycle_exec;
ot->poll= console_edit_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER;
/* properties */
RNA_def_boolean(ot->srna, "reverse", 0, "Reverse", "reverse cycle history");
@@ -635,9 +620,6 @@ void CONSOLE_OT_history_append(wmOperatorType *ot)
/* api callbacks */
ot->exec= history_append_exec;
ot->poll= console_edit_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER;
/* properties */
RNA_def_string(ot->srna, "text", "", 0, "Text", "Text to insert at the cursor position.");
@@ -683,9 +665,6 @@ void CONSOLE_OT_scrollback_append(wmOperatorType *ot)
/* api callbacks */
ot->exec= scrollback_append_exec;
ot->poll= console_edit_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER;
/* properties */
RNA_def_string(ot->srna, "text", "", 0, "Text", "Text to insert at the cursor position.");
@@ -727,9 +706,6 @@ void CONSOLE_OT_copy(wmOperatorType *ot)
ot->poll= console_edit_poll;
ot->exec= copy_exec;
- /* flags */
- ot->flag= OPTYPE_REGISTER;
-
/* properties */
}
@@ -762,9 +738,6 @@ void CONSOLE_OT_paste(wmOperatorType *ot)
ot->poll= console_edit_poll;
ot->exec= paste_exec;
- /* flags */
- ot->flag= OPTYPE_REGISTER;
-
/* properties */
}
@@ -795,9 +768,6 @@ void CONSOLE_OT_zoom(wmOperatorType *ot)
/* api callbacks */
ot->exec= zoom_exec;
ot->poll= console_poll;
-
- /* flags */
- /* ot->flag= OPTYPE_REGISTER; */ /* super annoying */
/* properties */
RNA_def_int(ot->srna, "delta", 0, 0, INT_MAX, "Delta", "Scale the view font.", 0, 1000);
diff --git a/source/blender/editors/space_console/space_console.c b/source/blender/editors/space_console/space_console.c
index 3dca5a4db4b..7d23421c5cf 100644
--- a/source/blender/editors/space_console/space_console.c
+++ b/source/blender/editors/space_console/space_console.c
@@ -326,18 +326,19 @@ static void console_main_area_listener(ScrArea *sa, wmNotifier *wmn)
/* only called once, from space/spacetypes.c */
void ED_spacetype_console(void)
{
- SpaceType *sc= MEM_callocN(sizeof(SpaceType), "spacetype console");
+ SpaceType *st= MEM_callocN(sizeof(SpaceType), "spacetype console");
ARegionType *art;
- sc->spaceid= SPACE_CONSOLE;
+ st->spaceid= SPACE_CONSOLE;
+ strncpy(st->name, "Console", BKE_ST_MAXNAME);
- sc->new= console_new;
- sc->free= console_free;
- sc->init= console_init;
- sc->duplicate= console_duplicate;
- sc->operatortypes= console_operatortypes;
- sc->keymap= console_keymap;
- sc->listener= console_main_area_listener;
+ st->new= console_new;
+ st->free= console_free;
+ st->init= console_init;
+ st->duplicate= console_duplicate;
+ st->operatortypes= console_operatortypes;
+ st->keymap= console_keymap;
+ st->listener= console_main_area_listener;
/* regions: main window */
art= MEM_callocN(sizeof(ARegionType), "spacetype console region");
@@ -350,19 +351,19 @@ void ED_spacetype_console(void)
- BLI_addhead(&sc->regiontypes, art);
+ BLI_addhead(&st->regiontypes, art);
/* regions: header */
art= MEM_callocN(sizeof(ARegionType), "spacetype console region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER;
art->init= console_header_area_init;
art->draw= console_header_area_draw;
- BLI_addhead(&sc->regiontypes, art);
+ BLI_addhead(&st->regiontypes, art);
- BKE_spacetype_register(sc);
+ 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 a1f9a9fd250..93bedd0b866 100644
--- a/source/blender/editors/space_file/file_draw.c
+++ b/source/blender/editors/space_file/file_draw.c
@@ -310,6 +310,8 @@ static int get_file_icon(struct direntry *file)
return ICON_FILE_SOUND;
else if (file->flags & FTFONTFILE)
return ICON_FILE_FONT;
+ else if (file->flags & BTXFILE)
+ return ICON_FILE_BLANK;
else
return ICON_FILE_BLANK;
}
diff --git a/source/blender/editors/space_file/file_intern.h b/source/blender/editors/space_file/file_intern.h
index d07ffd4b964..fa99dc6e1ee 100644
--- a/source/blender/editors/space_file/file_intern.h
+++ b/source/blender/editors/space_file/file_intern.h
@@ -55,7 +55,7 @@ void FILE_OT_select(struct wmOperatorType *ot);
void FILE_OT_select_all_toggle(struct wmOperatorType *ot);
void FILE_OT_select_border(struct wmOperatorType *ot);
void FILE_OT_select_bookmark(struct wmOperatorType *ot);
-void FILE_OT_add_bookmark(struct wmOperatorType *ot);
+void FILE_OT_bookmark_add(struct wmOperatorType *ot);
void FILE_OT_delete_bookmark(struct wmOperatorType *ot);
void FILE_OT_hidedot(struct wmOperatorType *ot);
void FILE_OT_loadimages(struct wmOperatorType *ot);
diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c
index 7aa56158304..8fe1ddd636d 100644
--- a/source/blender/editors/space_file/file_ops.c
+++ b/source/blender/editors/space_file/file_ops.c
@@ -29,6 +29,7 @@
#include "BKE_context.h"
#include "BKE_screen.h"
#include "BKE_global.h"
+#include "BKE_report.h"
#include "BLI_blenlib.h"
#include "BLI_storage_types.h"
@@ -386,12 +387,12 @@ static int bookmark_add_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void FILE_OT_add_bookmark(wmOperatorType *ot)
+void FILE_OT_bookmark_add(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Add Bookmark";
ot->description= "Add a bookmark for the selected/active directory.";
- ot->idname= "FILE_OT_add_bookmark";
+ ot->idname= "FILE_OT_bookmark_add";
/* api callbacks */
ot->exec= bookmark_add_exec;
@@ -745,32 +746,55 @@ int file_next_exec(bContext *C, wmOperator *unused)
return OPERATOR_FINISHED;
}
-int file_directory_new_exec(bContext *C, wmOperator *unused)
+/* create a new, non-existing folder name, returns 1 if successful, 0 if name couldn't be created.
+ The actual name is returned in 'name', 'folder' contains the complete path, including the new folder name.
+*/
+static int new_folder_path(const char* parent, char *folder, char *name)
{
- char tmpstr[FILE_MAX];
- char tmpdir[FILE_MAXFILE];
int i = 1;
+ int len = 0;
+
+ BLI_strncpy(name, "New Folder", FILE_MAXFILE);
+ BLI_join_dirfile(folder, parent, name);
+ /* check whether folder with the name already exists, in this case
+ add number to the name. Check length of generated name to avoid
+ crazy case of huge number of folders each named 'New Folder (x)' */
+ while (BLI_exists(folder) && (len<FILE_MAXFILE)) {
+ len = BLI_snprintf(name, FILE_MAXFILE, "New Folder(%d)", i);
+ BLI_join_dirfile(folder, parent, name);
+ i++;
+ }
+ return (len<FILE_MAXFILE);
+}
+
+int file_directory_new_exec(bContext *C, wmOperator *op)
+{
+ char name[FILE_MAXFILE];
+ char path[FILE_MAX];
SpaceFile *sfile= CTX_wm_space_file(C);
- if(sfile->params) {
-
- BLI_strncpy(tmpstr, sfile->params->dir, FILE_MAX);
- BLI_join_dirfile(tmpstr, tmpstr, "New Folder");
- while (BLI_exists(tmpstr)) {
- BLI_snprintf(tmpdir, FILE_MAXFILE, "New Folder(%d)", i++);
- BLI_strncpy(tmpstr, sfile->params->dir, FILE_MAX);
- BLI_join_dirfile(tmpstr, tmpstr, tmpdir);
- }
- BLI_recurdir_fileops(tmpstr);
- if (BLI_exists(tmpstr)) {
- BLI_strncpy(sfile->params->renamefile, tmpdir, FILE_MAXFILE);
- } else {
- filelist_free(sfile->files);
- filelist_parent(sfile->files);
- BLI_strncpy(sfile->params->dir, filelist_dir(sfile->files), FILE_MAX);
- }
- }
+ if(!sfile->params) {
+ BKE_report(op->reports,RPT_WARNING, "No parent directory given.");
+ return OPERATOR_CANCELLED;
+ }
+
+ /* create a new, non-existing folder name */
+ if (!new_folder_path(sfile->params->dir, path, name)) {
+ BKE_report(op->reports,RPT_ERROR, "Couldn't create new folder name.");
+ return OPERATOR_CANCELLED;
+ }
+
+ /* rename the file */
+ BLI_recurdir_fileops(path);
+
+ if (!BLI_exists(path)) {
+ BKE_report(op->reports,RPT_ERROR, "Couldn't create new folder.");
+ return OPERATOR_CANCELLED;
+ }
+
+ /* now remember file to jump into editing */
+ BLI_strncpy(sfile->params->renamefile, name, FILE_MAXFILE);
WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL);
return OPERATOR_FINISHED;
diff --git a/source/blender/editors/space_file/file_panels.c b/source/blender/editors/space_file/file_panels.c
index afdb0d24917..4e731cda5f3 100644
--- a/source/blender/editors/space_file/file_panels.c
+++ b/source/blender/editors/space_file/file_panels.c
@@ -138,7 +138,7 @@ static void file_panel_bookmarks(const bContext *C, Panel *pa)
if(sfile) {
row= uiLayoutRow(pa->layout, 0);
- uiItemO(row, "Add", ICON_ZOOMIN, "file.add_bookmark");
+ uiItemO(row, "Add", ICON_ZOOMIN, "file.bookmark_add");
uiItemL(row, NULL, 0);
file_panel_category(C, pa, FS_CATEGORY_BOOKMARKS, &sfile->bookmarknr, ICON_BOOKMARKS, 1, 0);
@@ -175,7 +175,9 @@ static void file_panel_operator(const bContext *C, Panel *pa)
int empty= 1, flag;
if(op->type->ui) {
- op->type->ui((bContext*)C, op->ptr, pa->layout);
+ op->layout= pa->layout;
+ op->type->ui((bContext*)C, op);
+ op->layout= NULL;
}
else {
RNA_STRUCT_BEGIN(op->ptr, prop) {
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index 640f365b073..81aa63dcad9 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -871,6 +871,8 @@ void filelist_setfiletypes(struct FileList* filelist, short has_quicktime)
|| BLI_testextensie(file->relname, ".otf")
|| BLI_testextensie(file->relname, ".otc")) {
file->flags |= FTFONTFILE;
+ } else if(BLI_testextensie(file->relname, ".btx")) {
+ file->flags |= BTXFILE;
} else if (has_quicktime){
if( BLI_testextensie(file->relname, ".int")
|| BLI_testextensie(file->relname, ".inta")
diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c
index d681a58b276..bf580545455 100644
--- a/source/blender/editors/space_file/filesel.c
+++ b/source/blender/editors/space_file/filesel.c
@@ -161,6 +161,8 @@ short ED_fileselect_set_params(SpaceFile *sfile)
params->filter |= RNA_boolean_get(op->ptr, "filter_text") ? TEXTFILE : 0;
if(RNA_struct_find_property(op->ptr, "filter_folder"))
params->filter |= RNA_boolean_get(op->ptr, "filter_folder") ? FOLDERFILE : 0;
+ if(RNA_struct_find_property(op->ptr, "filter_btx"))
+ params->filter |= RNA_boolean_get(op->ptr, "filter_btx") ? BTXFILE : 0;
if (params->filter != 0)
params->flag |= FILE_FILTER;
diff --git a/source/blender/editors/space_file/fsmenu.c b/source/blender/editors/space_file/fsmenu.c
index b45b57c6be9..214c5ff685b 100644
--- a/source/blender/editors/space_file/fsmenu.c
+++ b/source/blender/editors/space_file/fsmenu.c
@@ -284,8 +284,10 @@ void fsmenu_read_file(struct FSMenu* fsmenu, const char *filename)
#else
#ifdef __APPLE__
{
+#if (MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4)
OSErr err=noErr;
int i;
+ char *home;
/* loop through all the OS X Volumes, and add them to the SYSTEM section */
for (i=1; err!=nsvErr; i++)
@@ -298,8 +300,131 @@ void fsmenu_read_file(struct FSMenu* fsmenu, const char *filename)
continue;
FSRefMakePath(&dir, path, FILE_MAXDIR+FILE_MAXFILE);
+ if (strcmp((char*)path, "/home") && strcmp((char*)path, "/net"))
+ { /* /net and /home are meaningless on OSX, home folders are stored in /Users */
+ fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, (char *)path, 1, 0);
+ }
+ }
+
+ /* As 10.4 doesn't provide proper API to retrieve the favorite places,
+ assume they are the standard ones
+ TODO : replace hardcoded paths with proper BLI_get_folder calls */
+ home = BLI_gethome();
+ if(home) {
+ BLI_snprintf(line, 256, "%s/", home);
+ fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0);
+ BLI_snprintf(line, 256, "%s/Desktop/", home);
+ if (BLI_exists(line)) {
+ fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0);
+ }
+ BLI_snprintf(line, 256, "%s/Documents/", home);
+ if (BLI_exists(line)) {
+ fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0);
+ }
+ BLI_snprintf(line, 256, "%s/Pictures/", home);
+ if (BLI_exists(line)) {
+ fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0);
+ }
+ BLI_snprintf(line, 256, "%s/Music/", home);
+ if (BLI_exists(line)) {
+ fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0);
+ }
+ BLI_snprintf(line, 256, "%s/Movies/", home);
+ if (BLI_exists(line)) {
+ fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0);
+ }
+ }
+#else
+ /* 10.5 provides ability to retrieve Finder favorite places */
+ UInt32 seed;
+ OSErr err = noErr;
+ CFArrayRef pathesArray;
+ LSSharedFileListRef list;
+ LSSharedFileListItemRef itemRef;
+ CFIndex i, pathesCount;
+ CFURLRef cfURL = NULL;
+ CFStringRef pathString = NULL;
+
+ /* First get local mounted volumes */
+ list = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteVolumes, NULL);
+ pathesArray = LSSharedFileListCopySnapshot(list, &seed);
+ pathesCount = CFArrayGetCount(pathesArray);
+
+ for (i=0; i<pathesCount; i++)
+ {
+ itemRef = (LSSharedFileListItemRef)CFArrayGetValueAtIndex(pathesArray, i);
+
+ err = LSSharedFileListItemResolve(itemRef,
+ kLSSharedFileListNoUserInteraction
+ | kLSSharedFileListDoNotMountVolumes,
+ &cfURL, NULL);
+ if (err != noErr)
+ continue;
+
+ pathString = CFURLCopyFileSystemPath(cfURL, kCFURLPOSIXPathStyle);
+
+ if (!CFStringGetCString(pathString,line,256,kCFStringEncodingASCII))
+ continue;
+ fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, line, 1, 0);
+
+ CFRelease(pathString);
+ CFRelease(cfURL);
+ }
+
+ CFRelease(pathesArray);
+ CFRelease(list);
+
+ /* Then get network volumes */
+ err = noErr;
+ for (i=1; err!=nsvErr; i++)
+ {
+ FSRef dir;
+ FSVolumeRefNum volRefNum;
+ struct GetVolParmsInfoBuffer volParmsBuffer;
+ unsigned char path[FILE_MAXDIR+FILE_MAXFILE];
+
+ err = FSGetVolumeInfo(kFSInvalidVolumeRefNum, i, &volRefNum, kFSVolInfoNone, NULL, NULL, &dir);
+ if (err != noErr)
+ continue;
+
+ err = FSGetVolumeParms(volRefNum, &volParmsBuffer, sizeof(volParmsBuffer));
+ if ((err != noErr) || (volParmsBuffer.vMServerAdr == 0)) /* Exclude local devices */
+ continue;
+
+
+ FSRefMakePath(&dir, path, FILE_MAXDIR+FILE_MAXFILE);
fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, (char *)path, 1, 0);
}
+
+ /* Finally get user favorite places */
+ list = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteItems, NULL);
+ pathesArray = LSSharedFileListCopySnapshot(list, &seed);
+ pathesCount = CFArrayGetCount(pathesArray);
+
+ for (i=0; i<pathesCount; i++)
+ {
+ itemRef = (LSSharedFileListItemRef)CFArrayGetValueAtIndex(pathesArray, i);
+
+ err = LSSharedFileListItemResolve(itemRef,
+ kLSSharedFileListNoUserInteraction
+ | kLSSharedFileListDoNotMountVolumes,
+ &cfURL, NULL);
+ if (err != noErr)
+ continue;
+
+ pathString = CFURLCopyFileSystemPath(cfURL, kCFURLPOSIXPathStyle);
+
+ if (!CFStringGetCString(pathString,line,256,kCFStringEncodingASCII))
+ continue;
+ fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0);
+
+ CFRelease(pathString);
+ CFRelease(cfURL);
+ }
+
+ CFRelease(pathesArray);
+ CFRelease(list);
+#endif /* OSX 10.5+ */
}
#else
/* unix */
diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c
index 08ac9194fcb..e0915010e16 100644
--- a/source/blender/editors/space_file/space_file.c
+++ b/source/blender/editors/space_file/space_file.c
@@ -253,10 +253,10 @@ static void file_main_area_init(wmWindowManager *wm, ARegion *ar)
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_LIST, ar->winx, ar->winy);
/* own keymaps */
- keymap= WM_keymap_find(wm->defaultconf, "File", SPACE_FILE, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "File Browser", SPACE_FILE, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
- keymap= WM_keymap_find(wm->defaultconf, "FileMain", SPACE_FILE, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "File Browser Main", SPACE_FILE, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
@@ -354,7 +354,7 @@ void file_operatortypes(void)
WM_operatortype_append(FILE_OT_next);
WM_operatortype_append(FILE_OT_refresh);
WM_operatortype_append(FILE_OT_bookmark_toggle);
- WM_operatortype_append(FILE_OT_add_bookmark);
+ WM_operatortype_append(FILE_OT_bookmark_add);
WM_operatortype_append(FILE_OT_delete_bookmark);
WM_operatortype_append(FILE_OT_hidedot);
WM_operatortype_append(FILE_OT_filenum);
@@ -368,10 +368,10 @@ void file_keymap(struct wmKeyConfig *keyconf)
{
wmKeyMapItem *kmi;
/* keys for all areas */
- wmKeyMap *keymap= WM_keymap_find(keyconf, "File", SPACE_FILE, 0);
+ wmKeyMap *keymap= WM_keymap_find(keyconf, "File Browser", SPACE_FILE, 0);
WM_keymap_add_item(keymap, "FILE_OT_bookmark_toggle", NKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "FILE_OT_parent", PKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "FILE_OT_add_bookmark", BKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "FILE_OT_bookmark_add", BKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "FILE_OT_hidedot", HKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "FILE_OT_previous", BACKSPACEKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "FILE_OT_next", BACKSPACEKEY, KM_PRESS, KM_SHIFT, 0);
@@ -380,7 +380,7 @@ void file_keymap(struct wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "FILE_OT_delete", DELKEY, KM_PRESS, 0, 0);
/* keys for main area */
- keymap= WM_keymap_find(keyconf, "FileMain", SPACE_FILE, 0);
+ keymap= WM_keymap_find(keyconf, "File Browser Main", SPACE_FILE, 0);
WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_PRESS, 0, 0);
kmi = WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0);
RNA_boolean_set(kmi->ptr, "extend", 1);
@@ -404,8 +404,7 @@ void file_keymap(struct wmKeyConfig *keyconf)
RNA_int_set(kmi->ptr, "increment",-100);
/* keys for button area (top) */
- keymap= WM_keymap_find(keyconf, "FileButtons", SPACE_FILE, 0);
- WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, 0, 0);
+ keymap= WM_keymap_find(keyconf, "File Browser Buttons", SPACE_FILE, 0);
kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, 0, 0);
RNA_int_set(kmi->ptr, "increment", 1);
kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, KM_SHIFT, 0);
@@ -428,7 +427,7 @@ static void file_channel_area_init(wmWindowManager *wm, ARegion *ar)
ED_region_panels_init(wm, ar);
/* own keymaps */
- keymap= WM_keymap_find(wm->defaultconf, "File", SPACE_FILE, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "File Browser", SPACE_FILE, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
}
@@ -464,10 +463,10 @@ static void file_ui_area_init(wmWindowManager *wm, ARegion *ar)
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_HEADER, ar->winx, ar->winy);
/* own keymap */
- keymap= WM_keymap_find(wm->defaultconf, "File", SPACE_FILE, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "File Browser", SPACE_FILE, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
- keymap= WM_keymap_find(wm->defaultconf, "FileButtons", SPACE_FILE, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "File Browser Buttons", SPACE_FILE, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
}
@@ -508,6 +507,7 @@ void ED_spacetype_file(void)
ARegionType *art;
st->spaceid= SPACE_FILE;
+ strncpy(st->name, "File", BKE_ST_MAXNAME);
st->new= file_new;
st->free= file_free;
@@ -531,7 +531,7 @@ void ED_spacetype_file(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype file region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER;
art->init= file_header_area_init;
art->draw= file_header_area_draw;
// art->listener= file_header_area_listener;
diff --git a/source/blender/editors/space_graph/graph_buttons.c b/source/blender/editors/space_graph/graph_buttons.c
index 3e25a6e7c29..3faba9bbba7 100644
--- a/source/blender/editors/space_graph/graph_buttons.c
+++ b/source/blender/editors/space_graph/graph_buttons.c
@@ -198,7 +198,7 @@ static void graph_panel_properties(const bContext *C, Panel *pa)
/* RNA-Path Editing - only really should be enabled when things aren't working */
col= uiLayoutColumn(layout, 1);
uiLayoutSetEnabled(col, (fcu->flag & FCURVE_DISABLED));
- uiItemR(col, "", ICON_RNA, &fcu_ptr, "rna_path", 0);
+ uiItemR(col, "", ICON_RNA, &fcu_ptr, "data_path", 0);
uiItemR(col, NULL, 0, &fcu_ptr, "array_index", 0);
/* color settings */
@@ -235,13 +235,13 @@ static void do_graph_region_driver_buttons(bContext *C, void *arg, int event)
DAG_scene_sort(scene);
/* force an update of depsgraph */
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
}
break;
}
/* default for now */
- WM_event_add_notifier(C, NC_SCENE, scene); // XXX does this always work?
+ WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); // XXX could use better notifier
}
/* callback to remove the active driver */
@@ -342,7 +342,7 @@ static void graph_panel_drivers(const bContext *C, Panel *pa)
/* show expression box if doing scripted drivers, and/or error messages when invalid drivers exist */
if (driver->type == DRIVER_TYPE_PYTHON) {
/* expression */
- uiItemR(col, "Expr:", 0, &driver_ptr, "expression", 0);
+ uiItemR(col, "Expr", 0, &driver_ptr, "expression", 0);
/* errors? */
if (driver->flag & DRIVER_FLAG_INVALID)
@@ -377,13 +377,13 @@ static void graph_panel_drivers(const bContext *C, Panel *pa)
uiItemR(row, "", 0, &dtar_ptr, "name", 0);
/* remove button */
- but= uiDefIconBut(block, BUT, B_REDR, ICON_X, 290, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Delete target variable.");
+ but= uiDefIconBut(block, BUT, B_IPO_DEPCHANGE, ICON_X, 290, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Delete target variable.");
uiButSetFunc(but, driver_delete_var_cb, driver, dtar);
/* Target ID */
row= uiLayoutRow(box, 0);
- uiTemplateAnyID(row, (bContext *)C, &dtar_ptr, "id", "id_type", "Value: ");
+ uiTemplateAnyID(row, (bContext *)C, &dtar_ptr, "id", "id_type", "Value:");
/* Target Property */
// TODO: make this less technical...
@@ -396,11 +396,13 @@ static void graph_panel_drivers(const bContext *C, Panel *pa)
col= uiLayoutColumn(box, 1);
block= uiLayoutGetBlock(col);
/* rna path */
- uiTemplatePathBuilder(col, (bContext *)C, &dtar_ptr, "rna_path", &root_ptr, "Path");
+ uiTemplatePathBuilder(col, (bContext *)C, &dtar_ptr, "data_path", &root_ptr, "Path");
/* array index */
// TODO: this needs selector which limits it to ok values
- uiItemR(col, "Index", 0, &dtar_ptr, "array_index", 0);
+ // NOTE: for for now, the array index box still gets shown when non-zero (i.e. for tweaking rigs as necessary)
+ if (dtar->array_index)
+ uiItemR(col, "Index", 0, &dtar_ptr, "array_index", 0);
}
}
@@ -450,7 +452,7 @@ static void graph_panel_modifiers(const bContext *C, Panel *pa)
for (fcm= fcu->modifiers.first; fcm; fcm= fcm->next) {
col= uiLayoutColumn(pa->layout, 1);
- ANIM_uiTemplate_fmodifier_draw(C, col, ale->id, &fcu->modifiers, fcm);
+ ANIM_uiTemplate_fmodifier_draw(col, ale->id, &fcu->modifiers, fcm);
}
MEM_freeN(ale);
diff --git a/source/blender/editors/space_graph/graph_draw.c b/source/blender/editors/space_graph/graph_draw.c
index 6e0878972f8..9681d20c13b 100644
--- a/source/blender/editors/space_graph/graph_draw.c
+++ b/source/blender/editors/space_graph/graph_draw.c
@@ -235,7 +235,7 @@ static void draw_fcurve_handle_control (float x, float y, float xscale, float ys
}
/* helper func - draw handle vertices only for an F-Curve (if it is not protected) */
-static void draw_fcurve_vertices_handles (FCurve *fcu, View2D *v2d, short sel)
+static void draw_fcurve_vertices_handles (SpaceIpo *sipo, FCurve *fcu, View2D *v2d, short sel)
{
BezTriple *bezt= fcu->bezt;
BezTriple *prevbezt = NULL;
@@ -255,19 +255,24 @@ static void draw_fcurve_vertices_handles (FCurve *fcu, View2D *v2d, short sel)
glEnable(GL_BLEND);
for (i=0; i < fcu->totvert; i++, prevbezt=bezt, bezt++) {
- /* Draw the editmode handels for a bezier curve (others don't have handles)
+ /* Draw the editmode handles for a bezier curve (others don't have handles)
* if their selection status matches the selection status we're drawing for
* - first handle only if previous beztriple was bezier-mode
* - second handle only if current beztriple is bezier-mode
+ *
+ * Also, need to take into account whether the keyframe was selected
+ * if a Graph Editor option to only show handles of selected keys is on.
*/
- if ( (!prevbezt && (bezt->ipo==BEZT_IPO_BEZ)) || (prevbezt && (prevbezt->ipo==BEZT_IPO_BEZ)) ) {
- if ((bezt->f1 & SELECT) == sel)/* && v2d->cur.xmin < bezt->vec[0][0] < v2d->cur.xmax)*/
- draw_fcurve_handle_control(bezt->vec[0][0], bezt->vec[0][1], xscale, yscale, hsize);
- }
-
- if (bezt->ipo==BEZT_IPO_BEZ) {
- if ((bezt->f3 & SELECT) == sel)/* && v2d->cur.xmin < bezt->vec[2][0] < v2d->cur.xmax)*/
- draw_fcurve_handle_control(bezt->vec[2][0], bezt->vec[2][1], xscale, yscale, hsize);
+ if ( !(sipo->flag & SIPO_SELVHANDLESONLY) || BEZSELECTED(bezt) ) {
+ if ( (!prevbezt && (bezt->ipo==BEZT_IPO_BEZ)) || (prevbezt && (prevbezt->ipo==BEZT_IPO_BEZ)) ) {
+ if ((bezt->f1 & SELECT) == sel)/* && v2d->cur.xmin < bezt->vec[0][0] < v2d->cur.xmax)*/
+ draw_fcurve_handle_control(bezt->vec[0][0], bezt->vec[0][1], xscale, yscale, hsize);
+ }
+
+ if (bezt->ipo==BEZT_IPO_BEZ) {
+ if ((bezt->f3 & SELECT) == sel)/* && v2d->cur.xmin < bezt->vec[2][0] < v2d->cur.xmax)*/
+ draw_fcurve_handle_control(bezt->vec[2][0], bezt->vec[2][1], xscale, yscale, hsize);
+ }
}
}
@@ -313,10 +318,10 @@ void draw_fcurve_vertices (SpaceIpo *sipo, ARegion *ar, FCurve *fcu)
(sipo->flag & SIPO_NOHANDLES)==0 && (fcu->totvert > 1))
{
set_fcurve_vertex_color(sipo, fcu, 0);
- draw_fcurve_vertices_handles(fcu, v2d, 0);
+ draw_fcurve_vertices_handles(sipo, fcu, v2d, 0);
set_fcurve_vertex_color(sipo, fcu, 1);
- draw_fcurve_vertices_handles(fcu, v2d, 1);
+ draw_fcurve_vertices_handles(sipo, fcu, v2d, 1);
}
/* draw keyframes over the handles */
@@ -347,13 +352,28 @@ static void draw_fcurve_handles (SpaceIpo *sipo, ARegion *ar, FCurve *fcu)
*/
glBegin(GL_LINES);
- /* slightly hacky, but we want to draw unselected points before selected ones */
+ /* slightly hacky, but we want to draw unselected points before selected ones
+ * so that selected points are clearly visible
+ */
for (sel= 0; sel < 2; sel++) {
BezTriple *bezt=fcu->bezt, *prevbezt=NULL;
unsigned int *col= (sel)? (nurbcol+4) : (nurbcol);
float *fp;
+ /* if only selected keyframes have handles shown, skip the first round */
+ if ((sel == 0) && (sipo->flag & SIPO_SELVHANDLESONLY))
+ continue;
+
for (b= 0; b < fcu->totvert; b++, prevbezt=bezt, bezt++) {
+ /* if only selected keyframes can get their handles shown,
+ * check that keyframe is selected
+ */
+ if (sipo->flag & SIPO_SELVHANDLESONLY) {
+ if (BEZSELECTED(bezt) == 0)
+ continue;
+ }
+
+ /* draw handle with appropriate set of colors if selection is ok */
if ((bezt->f2 & SELECT)==sel) {
fp= bezt->vec[0];
@@ -818,7 +838,7 @@ void graph_draw_curves (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar, View2DGri
/* protected curves (non editable) are drawn with dotted lines */
setlinestyle(2);
}
- if (fcu->flag & FCURVE_MUTED) {
+ if ( ((fcu->grp) && (fcu->grp->flag & AGRP_MUTED)) || (fcu->flag & FCURVE_MUTED) ) {
/* muted curves are drawn in a greyish hue */
// XXX should we have some variations?
UI_ThemeColorShade(TH_HEADER, 50);
diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c
index 2088ee4030c..8ac3f2efefb 100644
--- a/source/blender/editors/space_graph/graph_edit.c
+++ b/source/blender/editors/space_graph/graph_edit.c
@@ -386,7 +386,7 @@ static int graphkeys_clear_ghostcurves_exec(bContext *C, wmOperator *op)
void GRAPH_OT_ghost_curves_clear (wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Create Ghost Curves";
+ ot->name= "Clear Ghost Curves";
ot->idname= "GRAPH_OT_ghost_curves_clear";
ot->description= "Clear F-Curve snapshots (Ghosts) for active Graph Editor.";
@@ -428,9 +428,7 @@ static void insert_graph_keys(bAnimContext *ac, short mode)
ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype);
/* init keyframing flag */
- if (IS_AUTOKEY_FLAG(AUTOMATKEY)) flag |= INSERTKEY_MATRIX;
- if (IS_AUTOKEY_FLAG(INSERTNEEDED)) flag |= INSERTKEY_NEEDED;
- if (IS_AUTOKEY_MODE(scene, EDITKEYS)) flag |= INSERTKEY_REPLACE;
+ flag = ANIM_get_keyframing_flags(scene, 1);
/* insert keyframes */
for (ale= anim_data.first; ale; ale= ale->next) {
@@ -481,11 +479,11 @@ static int graphkeys_insertkey_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void GRAPH_OT_insert_keyframe (wmOperatorType *ot)
+void GRAPH_OT_keyframe_insert (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Insert Keyframes";
- ot->idname= "GRAPH_OT_insert_keyframe";
+ ot->idname= "GRAPH_OT_keyframe_insert";
ot->description= "Insert keyframes for the specified channels.";
/* api callbacks */
@@ -754,7 +752,7 @@ static int graphkeys_duplicate_invoke(bContext *C, wmOperator *op, wmEvent *even
graphkeys_duplicate_exec(C, op);
RNA_int_set(op->ptr, "mode", TFM_TRANSLATION);
- WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
+ WM_operator_name_call(C, "TRANSFORM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
return OPERATOR_FINISHED;
}
@@ -792,7 +790,15 @@ static void delete_graph_keys (bAnimContext *ac)
/* loop through filtered data and delete selected keys */
for (ale= anim_data.first; ale; ale= ale->next) {
- delete_fcurve_keys((FCurve *)ale->key_data); // XXX... this doesn't delete empty curves anymore
+ FCurve *fcu= (FCurve *)ale->key_data;
+ AnimData *adt= ale->adt;
+
+ /* delete selected keyframes only */
+ delete_fcurve_keys(fcu);
+
+ /* Only delete curve too if it won't be doing anything anymore */
+ if ((fcu->totvert == 0) && (list_has_suitable_fmodifier(&fcu->modifiers, 0, FMI_TYPE_GENERATE_CURVE) == 0))
+ ANIM_fcurve_delete_from_animdata(ac, adt, fcu);
}
/* free filtered list */
diff --git a/source/blender/editors/space_graph/graph_header.c b/source/blender/editors/space_graph/graph_header.c
deleted file mode 100644
index 63c95b18e2d..00000000000
--- a/source/blender/editors/space_graph/graph_header.c
+++ /dev/null
@@ -1,309 +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_anim_types.h"
-#include "DNA_space_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_context.h"
-#include "BKE_screen.h"
-
-#include "ED_anim_api.h"
-#include "ED_transform.h"
-#include "ED_screen.h"
-#include "ED_types.h"
-#include "ED_util.h"
-
-#include "RNA_access.h"
-
-#include "WM_api.h"
-#include "WM_types.h"
-
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
-
-#include "UI_interface.h"
-#include "UI_resources.h"
-#include "UI_view2d.h"
-
-#include "graph_intern.h"
-
-/* ********************************************************* */
-/* Menu Defines... */
-
-static void graph_viewmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- bScreen *sc= CTX_wm_screen(C);
- ScrArea *sa= CTX_wm_area(C);
- SpaceIpo *sipo= CTX_wm_space_graph(C);
- PointerRNA spaceptr;
-
- /* retrieve state */
- RNA_pointer_create(&sc->id, &RNA_SpaceGraphEditor, sipo, &spaceptr);
-
- /* create menu */
- uiItemO(layout, NULL, ICON_MENU_PANEL, "GRAPH_OT_properties");
-
- uiItemS(layout);
-
- uiItemR(layout, NULL, 0, &spaceptr, "show_cframe_indicator", 0);
- uiItemR(layout, NULL, 0, &spaceptr, "show_cursor", 0);
- uiItemR(layout, NULL, 0, &spaceptr, "show_sliders", 0);
- uiItemR(layout, NULL, 0, &spaceptr, "automerge_keyframes", 0);
-
- if (sipo->flag & SIPO_NOHANDLES)
- uiItemO(layout, "Show Handles", ICON_CHECKBOX_DEHLT, "GRAPH_OT_handles_view_toggle");
- else
- uiItemO(layout, "Show Handles", ICON_CHECKBOX_HLT, "GRAPH_OT_handles_view_toggle");
-
- uiItemR(layout, NULL, 0, &spaceptr, "only_selected_curves_handles", 0);
-
-
- if (sipo->flag & SIPO_DRAWTIME)
- uiItemO(layout, "Show Frames", 0, "ANIM_OT_time_toggle");
- else
- uiItemO(layout, "Show Seconds", 0, "ANIM_OT_time_toggle");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "ANIM_OT_previewrange_set");
- uiItemO(layout, NULL, 0, "ANIM_OT_previewrange_clear");
-
- uiItemO(layout, NULL, 0, "GRAPH_OT_previewrange_set");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "GRAPH_OT_frame_jump");
-
- uiItemO(layout, NULL, 0, "GRAPH_OT_view_all");
-
- if (sa->full)
- uiItemO(layout, NULL, 0, "SCREEN_OT_screen_full_area"); // "Tile Window", Ctrl UpArrow
- else
- uiItemO(layout, NULL, 0, "SCREEN_OT_screen_full_area"); // "Maximize Window", Ctrl DownArrow
-}
-
-static void graph_selectmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- uiItemO(layout, NULL, 0, "GRAPH_OT_select_all_toggle");
- uiItemBooleanO(layout, "Invert All", 0, "GRAPH_OT_select_all_toggle", "invert", 1);
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "GRAPH_OT_select_border");
- uiItemBooleanO(layout, "Border Axis Range", 0, "GRAPH_OT_select_border", "axis_range", 1);
-
- uiItemS(layout);
-
- uiItemEnumO(layout, "Columns on Selected Keys", 0, "GRAPH_OT_select_column", "mode", GRAPHKEYS_COLUMNSEL_KEYS);
- uiItemEnumO(layout, "Column on Current Frame", 0, "GRAPH_OT_select_column", "mode", GRAPHKEYS_COLUMNSEL_CFRA);
-
- uiItemEnumO(layout, "Columns on Selected Markers", 0, "GRAPH_OT_select_column", "mode", GRAPHKEYS_COLUMNSEL_MARKERS_COLUMN);
- uiItemEnumO(layout, "Between Selected Markers", 0, "GRAPH_OT_select_column", "mode", GRAPHKEYS_COLUMNSEL_MARKERS_BETWEEN);
-}
-
-static void graph_channelmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- uiItemO(layout, NULL, 0, "ANIM_OT_channels_setting_toggle");
- uiItemO(layout, NULL, 0, "ANIM_OT_channels_setting_enable");
- uiItemO(layout, NULL, 0, "ANIM_OT_channels_setting_disable");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "ANIM_OT_channels_editable_toggle");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "ANIM_OT_channels_expand");
- uiItemO(layout, NULL, 0, "ANIM_OT_channels_collapse");
-}
-
-static void graph_edit_transformmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- uiItemEnumO(layout, "Grab/Move", 0, "TFM_OT_transform", "mode", TFM_TIME_TRANSLATE);
- uiItemEnumO(layout, "Extend", 0, "TFM_OT_transform", "mode", TFM_TIME_EXTEND);
- uiItemEnumO(layout, "Scale", 0, "TFM_OT_transform", "mode", TFM_TIME_SCALE);
-}
-
-static void graph_editmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- uiItemMenuF(layout, "Transform", 0, graph_edit_transformmenu, NULL);
- uiItemMenuEnumO(layout, "Snap", 0, "GRAPH_OT_snap", "type");
- uiItemMenuEnumO(layout, "Mirror", 0, "GRAPH_OT_mirror", "type");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "GRAPH_OT_insert_keyframe");
- uiItemO(layout, NULL, 0, "GRAPH_OT_fmodifier_add");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "GRAPH_OT_duplicate");
- uiItemO(layout, NULL, 0, "GRAPH_OT_delete");
-
- uiItemS(layout);
-
- uiItemMenuEnumO(layout, "Handle Type", 0, "GRAPH_OT_handle_type", "type");
- uiItemMenuEnumO(layout, "Interpolation Mode", 0, "GRAPH_OT_interpolation_type", "type");
- uiItemMenuEnumO(layout, "Extrapolation Mode", 0, "GRAPH_OT_extrapolation_type", "type");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "GRAPH_OT_clean");
- uiItemO(layout, NULL, 0, "GRAPH_OT_sample");
- uiItemO(layout, NULL, 0, "GRAPH_OT_bake");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "GRAPH_OT_copy");
- uiItemO(layout, NULL, 0, "GRAPH_OT_paste");
-}
-
-/* ********************************************************* */
-
-enum {
- B_REDR = 0,
- B_MODECHANGE,
-} eGraphEdit_Events;
-
-static void do_graph_buttons(bContext *C, void *arg, int event)
-{
- ED_area_tag_refresh(CTX_wm_area(C));
- ED_area_tag_redraw(CTX_wm_area(C));
-}
-
-static char *garound_pup(const bContext *C)
-{
- static char string[512];
- char *str = string;
-
- str += sprintf(str, "%s", "Pivot: %t");
- str += sprintf(str, "%s", "|Bounding Box Center %x0");
- //str += sprintf(str, "%s", "|Median Point %x3");
- str += sprintf(str, "%s", "|2D Cursor %x1");
- str += sprintf(str, "%s", "|Individual Centers %x2");
- return string;
-}
-
-void graph_header_buttons(const bContext *C, ARegion *ar)
-{
- SpaceIpo *sipo= CTX_wm_space_graph(C);
- ScrArea *sa= CTX_wm_area(C);
- uiBlock *block;
- int xco, yco= 3;
-
- block= uiBeginBlock(C, ar, "header buttons", UI_EMBOSS);
- uiBlockSetHandleFunc(block, do_graph_buttons, NULL);
-
- /* standard buttosn in header - viewtype selector and menus */
- xco= ED_area_header_standardbuttons(C, block, yco);
-
- if ((sa->flag & HEADER_NO_PULLDOWN)==0) {
- int xmax;
-
- xmax= GetButStringLength("View");
- uiDefMenuBut(block, graph_viewmenu, NULL, "View", xco, yco, xmax-3, 20, "");
- xco+= xmax;
-
- xmax= GetButStringLength("Select");
- uiDefMenuBut(block, graph_selectmenu, NULL, "Select", xco, yco, xmax-3, 20, "");
- xco+= xmax;
-
- xmax= GetButStringLength("Channel");
- uiDefMenuBut(block, graph_channelmenu, NULL, "Channel", xco, yco, xmax-3, 20, "");
- xco+= xmax;
-
- xmax= GetButStringLength("Key");
- uiDefMenuBut(block, graph_editmenu, NULL, "Key", xco, yco, xmax-3, 20, "");
- xco+= xmax;
- }
-
- uiBlockSetEmboss(block, UI_EMBOSS);
-
- /* mode selector */
- uiDefButS(block, MENU, B_MODECHANGE,
- "Editor Mode %t|F-Curve Editor %x0|Drivers %x1",
- xco,yco,110,YIC, &sipo->mode, 0, 1, 0, 0,
- "Editing modes for this editor");
- xco+= 120;
-
- /* filtering buttons */
- xco= ANIM_headerUI_standard_buttons(C, sipo->ads, block, xco, yco);
-
- /* auto-snap selector */
- if (sipo->flag & SIPO_DRAWTIME) {
- uiDefButS(block, MENU, B_REDR,
- "Auto-Snap Keyframes %t|No Time-Snap %x0|Nearest Second %x2|Nearest Marker %x3",
- xco,yco,90,YIC, &sipo->autosnap, 0, 1, 0, 0,
- "Auto-snapping mode for keyframe times when transforming");
- }
- else {
- uiDefButS(block, MENU, B_REDR,
- "Auto-Snap Keyframes %t|No Time-Snap %x0|Nearest Frame %x2|Nearest Marker %x3",
- xco,yco,90,YIC, &sipo->autosnap, 0, 1, 0, 0,
- "Auto-snapping mode for keyframe times when transforming");
- }
- xco += 98;
-
- /* pivot mode setting */
- uiDefIconTextButI(block, ICONTEXTROW,B_REDR, ICON_ROTATE, garound_pup(C), xco,yco,XIC+10,YIC, &(sipo->around), 0, 3.0, 0, 0, "Rotation/Scaling Pivot");
- xco+= XIC+10;
-
- /* copy + paste */
- uiBlockBeginAlign(block);
- uiDefIconButO(block, BUT, "GRAPH_OT_copy", WM_OP_INVOKE_REGION_WIN, ICON_COPYDOWN, xco+=XIC,yco,XIC,YIC, "Copies the selected keyframes from the selected channel(s) to the buffer");
- uiDefIconButO(block, BUT, "GRAPH_OT_paste", WM_OP_INVOKE_REGION_WIN, ICON_PASTEDOWN, xco+=XIC,yco,XIC,YIC, "Pastes the keyframes from the buffer");
- uiBlockEndAlign(block);
- xco += (XIC + 8);
-
- /* ghost curves */
- // XXX these icons need to be changed
- if (sipo->ghostCurves.first)
- uiDefIconButO(block, BUT, "GRAPH_OT_ghost_curves_clear", WM_OP_INVOKE_REGION_WIN, ICON_GHOST_DISABLED, xco,yco,XIC,YIC, "Clear F-Curve snapshots (Ghosts) for this Graph Editor instance");
- else
- uiDefIconButO(block, BUT, "GRAPH_OT_ghost_curves_create", WM_OP_INVOKE_REGION_WIN, ICON_GHOST_ENABLED, xco,yco,XIC,YIC, "Create snapshot (Ghosts) of selected F-Curves as background aid for this Graph Editor instance");
- xco+= XIC;
-
-
- /* always as last */
- UI_view2d_totRect_set(&ar->v2d, xco+XIC+80, (int)(ar->v2d.tot.ymax - ar->v2d.tot.ymin));
-
- uiEndBlock(C, block);
- uiDrawBlock(C, block);
-}
-
-
diff --git a/source/blender/editors/space_graph/graph_intern.h b/source/blender/editors/space_graph/graph_intern.h
index 1e0f66751f0..87e03247353 100644
--- a/source/blender/editors/space_graph/graph_intern.h
+++ b/source/blender/editors/space_graph/graph_intern.h
@@ -90,7 +90,7 @@ void GRAPH_OT_previewrange_set(struct wmOperatorType *ot);
void GRAPH_OT_view_all(struct wmOperatorType *ot);
void GRAPH_OT_click_insert(struct wmOperatorType *ot);
-void GRAPH_OT_insert_keyframe(struct wmOperatorType *ot);
+void GRAPH_OT_keyframe_insert(struct wmOperatorType *ot);
void GRAPH_OT_copy(struct wmOperatorType *ot);
void GRAPH_OT_paste(struct wmOperatorType *ot);
diff --git a/source/blender/editors/space_graph/graph_ops.c b/source/blender/editors/space_graph/graph_ops.c
index 1780942a123..5b62761ae74 100644
--- a/source/blender/editors/space_graph/graph_ops.c
+++ b/source/blender/editors/space_graph/graph_ops.c
@@ -255,7 +255,7 @@ void graphedit_operatortypes(void)
WM_operatortype_append(GRAPH_OT_copy);
WM_operatortype_append(GRAPH_OT_paste);
- WM_operatortype_append(GRAPH_OT_insert_keyframe);
+ WM_operatortype_append(GRAPH_OT_keyframe_insert);
WM_operatortype_append(GRAPH_OT_click_insert);
/* F-Curve Modifiers */
@@ -337,7 +337,7 @@ static void graphedit_keymap_keyframes (wmKeyConfig *keyconf, wmKeyMap *keymap)
WM_keymap_add_item(keymap, "GRAPH_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
/* insertkey */
- WM_keymap_add_item(keymap, "GRAPH_OT_insert_keyframe", IKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "GRAPH_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "GRAPH_OT_click_insert", LEFTMOUSE, KM_PRESS, KM_CTRL, 0);
/* copy/paste */
@@ -363,7 +363,7 @@ void graphedit_keymap(wmKeyConfig *keyconf)
wmKeyMap *keymap;
/* keymap for all regions */
- keymap= WM_keymap_find(keyconf, "GraphEdit Generic", SPACE_IPO, 0);
+ keymap= WM_keymap_find(keyconf, "Graph Editor Generic", SPACE_IPO, 0);
WM_keymap_add_item(keymap, "GRAPH_OT_properties", NKEY, KM_PRESS, 0, 0);
/* channels */
@@ -373,7 +373,7 @@ void graphedit_keymap(wmKeyConfig *keyconf)
*/
/* keyframes */
- keymap= WM_keymap_find(keyconf, "GraphEdit Keys", SPACE_IPO, 0);
+ keymap= WM_keymap_find(keyconf, "Graph Editor", SPACE_IPO, 0);
graphedit_keymap_keyframes(keyconf, keymap);
}
diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c
index 157202190bb..cf99e3602dd 100644
--- a/source/blender/editors/space_graph/space_graph.c
+++ b/source/blender/editors/space_graph/space_graph.c
@@ -213,9 +213,9 @@ static void graph_main_area_init(wmWindowManager *wm, ARegion *ar)
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy);
/* own keymap */
- keymap= WM_keymap_find(wm->defaultconf, "GraphEdit Keys", SPACE_IPO, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "Graph Editor", SPACE_IPO, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
- keymap= WM_keymap_find(wm->defaultconf, "GraphEdit Generic", SPACE_IPO, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "Graph Editor Generic", SPACE_IPO, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
}
@@ -312,9 +312,9 @@ static void graph_channel_area_init(wmWindowManager *wm, ARegion *ar)
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_LIST, ar->winx, ar->winy);
/* own keymap */
- keymap= WM_keymap_find(wm->defaultconf, "Animation_Channels", 0, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "Animation Channels", 0, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
- keymap= WM_keymap_find(wm->defaultconf, "GraphEdit Generic", SPACE_IPO, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "Graph Editor Generic", SPACE_IPO, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
}
@@ -350,29 +350,12 @@ static void graph_channel_area_draw(const bContext *C, ARegion *ar)
/* add handlers, stuff you only do once or on area/region changes */
static void graph_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 graph_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);
-
- graph_header_buttons(C, ar);
-
- /* restore view matrix? */
- UI_view2d_view_restore(C);
+ ED_region_header(C, ar);
}
/* add handlers, stuff you only do once or on area/region changes */
@@ -382,7 +365,7 @@ static void graph_buttons_area_init(wmWindowManager *wm, ARegion *ar)
ED_region_panels_init(wm, ar);
- keymap= WM_keymap_find(wm->defaultconf, "GraphEdit Generic", SPACE_IPO, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "Graph Editor Generic", SPACE_IPO, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
}
@@ -404,6 +387,7 @@ static void graph_region_listener(ARegion *ar, wmNotifier *wmn)
case ND_OB_ACTIVE:
case ND_FRAME:
case ND_MARKERS:
+ case ND_SEQUENCER_SELECT:
ED_region_tag_redraw(ar);
break;
}
@@ -415,15 +399,28 @@ static void graph_region_listener(ARegion *ar, wmNotifier *wmn)
case ND_KEYS:
ED_region_tag_redraw(ar);
break;
+ case ND_MODIFIER:
+ if(wmn->action == NA_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
}
break;
case NC_NODE:
+ switch(wmn->data) {
+ case ND_NODE_SELECT:
+ ED_region_tag_redraw(ar);
+ break;
+ }
switch(wmn->action) {
case NA_EDITED:
ED_region_tag_redraw(ar);
break;
}
break;
+ case NC_ID:
+ if(wmn->action == NA_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
default:
if(wmn->data==ND_KEYS)
ED_region_tag_redraw(ar);
@@ -434,36 +431,52 @@ static void graph_region_listener(ARegion *ar, wmNotifier *wmn)
/* editor level listener */
static void graph_listener(ScrArea *sa, wmNotifier *wmn)
{
+ SpaceIpo *sipo= (SpaceIpo *)sa->spacedata.first;
+
/* context changes */
switch (wmn->category) {
case NC_ANIMATION:
- ED_area_tag_refresh(sa);
+ /* for selection changes of animation data, we can just redraw... otherwise autocolor might need to be done again */
+ if (ELEM(wmn->data, ND_KEYFRAME_SELECT, ND_ANIMCHAN_SELECT))
+ ED_area_tag_redraw(sa);
+ else
+ ED_area_tag_refresh(sa);
break;
case NC_SCENE:
- /*switch (wmn->data) {
- case ND_OB_ACTIVE:
+ switch (wmn->data) {
+ case ND_OB_ACTIVE: /* selection changed, so force refresh to flush (needs flag set to do syncing) */
case ND_OB_SELECT:
+ sipo->flag |= SIPO_TEMP_NEEDCHANSYNC;
ED_area_tag_refresh(sa);
break;
- }*/
- ED_area_tag_refresh(sa);
+
+ default: /* just redrawing the view will do */
+ ED_area_tag_redraw(sa);
+ break;
+ }
break;
case NC_OBJECT:
- /*switch (wmn->data) {
- case ND_BONE_SELECT:
+ switch (wmn->data) {
+ case ND_BONE_SELECT: /* selection changed, so force refresh to flush (needs flag set to do syncing) */
case ND_BONE_ACTIVE:
+ sipo->flag |= SIPO_TEMP_NEEDCHANSYNC;
ED_area_tag_refresh(sa);
break;
- }*/
- ED_area_tag_refresh(sa);
+
+ default: /* just redrawing the view will do */
+ ED_area_tag_redraw(sa);
+ break;
+ }
break;
case NC_SPACE:
if(wmn->data == ND_SPACE_GRAPH)
ED_area_tag_redraw(sa);
break;
- default:
- if(wmn->data==ND_KEYS)
- ED_area_tag_refresh(sa);
+
+ // XXX: restore the case below if not enough updates occur...
+ //default:
+ // if(wmn->data==ND_KEYS)
+ // ED_area_tag_redraw(sa);
}
}
@@ -492,6 +505,14 @@ static void graph_refresh(const bContext *C, ScrArea *sa)
/* region updates? */
// XXX resizing y-extents of tot should go here?
+ /* update the state of the animchannels in response to changes from the data they represent
+ * NOTE: the temp flag is used to indicate when this needs to be done, and will be cleared once handled
+ */
+ if (sipo->flag & SIPO_TEMP_NEEDCHANSYNC) {
+ ANIM_sync_animchannels_to_data(C);
+ sipo->flag &= ~SIPO_TEMP_NEEDCHANSYNC;
+ }
+
/* init/adjust F-Curve colors */
if (ANIM_animdata_get_context(C, &ac)) {
ListBase anim_data = {NULL, NULL};
@@ -551,7 +572,7 @@ static void graph_refresh(const bContext *C, ScrArea *sa)
/* determine color 'automatically' using 'magic function' which uses the given args
* of current item index + total items to determine some RGB color
*/
- ipo_rainbow(i, items, fcu->color);
+ getcolor_fcurve_rainbow(i, items, fcu->color);
}
break;
}
@@ -569,6 +590,7 @@ void ED_spacetype_ipo(void)
ARegionType *art;
st->spaceid= SPACE_IPO;
+ strncpy(st->name, "Graph", BKE_ST_MAXNAME);
st->new= graph_new;
st->free= graph_free;
@@ -593,7 +615,7 @@ void ED_spacetype_ipo(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype graphedit region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->listener= graph_region_listener;
art->init= graph_header_area_init;
art->draw= graph_header_area_draw;
diff --git a/source/blender/editors/space_image/image_buttons.c b/source/blender/editors/space_image/image_buttons.c
index a184ea2b2c4..4811eb411ec 100644
--- a/source/blender/editors/space_image/image_buttons.c
+++ b/source/blender/editors/space_image/image_buttons.c
@@ -363,133 +363,6 @@ static void image_editcursor_buts(const bContext *C, View2D *v2d, uiBlock *block
}
}
-#if 0
-static void image_panel_view_properties(const bContext *C, Panel *pa)
-{
-}
-#endif
-
-void brush_buttons(const bContext *C, uiBlock *block, short fromsima,
- int evt_nop, int evt_change,
- int evt_browse, int evt_local,
- int evt_del, int evt_keepdata,
- int evt_texbrowse, int evt_texdel)
-{
-// SpaceImage *sima= CTX_wm_space_image(C);
- ToolSettings *settings= CTX_data_tool_settings(C);
- Brush *brush= paint_brush(&settings->imapaint.paint);
- ID *id;
- int yco, xco, butw, but_idx;
-// short *menupoin = &(sima->menunr); // XXX : &(G.buts->menunr);
- short do_project = settings->imapaint.flag & IMAGEPAINT_PROJECT_DISABLE ? 0:1;
-
- yco= 160;
-
- butw = fromsima ? 80 : 106;
-
- uiBlockBeginAlign(block);
- but_idx = 0;
- uiDefButS(block, ROW, evt_change, "Draw", butw*(but_idx++),yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_DRAW, 0, 0, "Draw brush");
- if (fromsima || do_project==0)
- uiDefButS(block, ROW, evt_change, "Soften", butw*(but_idx++), yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_SOFTEN, 0, 0, "Soften brush");
- uiDefButS(block, ROW, evt_change, "Smear", butw*(but_idx++), yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_SMEAR, 0, 0, "Smear brush");
- if (fromsima || do_project)
- uiDefButS(block, ROW, evt_change, "Clone", butw*(but_idx++), yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_CLONE, 0, 0, "Clone brush, use RMB to drag source image");
-
- uiBlockEndAlign(block);
- yco -= 30;
-
- id= (ID*)brush;
- xco= 200; // std_libbuttons(block, 0, yco, 0, NULL, evt_browse, ID_BR, 0, id, NULL, menupoin, 0, evt_local, evt_del, 0, evt_keepdata);
-
- if(brush && !brush->id.lib) {
-
- butw= 320-(xco+10);
-
- uiDefButS(block, MENU, evt_nop, "Mix %x0|Add %x1|Subtract %x2|Multiply %x3|Lighten %x4|Darken %x5|Erase Alpha %x6|Add Alpha %x7", xco+10,yco,butw,19, &brush->blend, 0, 0, 0, 0, "Blending method for applying brushes");
-
- uiBlockBeginAlign(block);
- uiDefButBitS(block, TOG|BIT, BRUSH_AIRBRUSH, evt_change, "Airbrush", xco+10,yco-25,butw/2,19, &brush->flag, 0, 0, 0, 0, "Keep applying paint effect while holding mouse (spray)");
- uiDefButF(block, NUM, evt_nop, "", xco+10 + butw/2,yco-25,butw/2,19, &brush->rate, 0.01, 1.0, 0, 0, "Number of paints per second for Airbrush");
- uiBlockEndAlign(block);
-
- if (fromsima) {
- uiDefButBitS(block, TOG|BIT, BRUSH_TORUS, evt_change, "Wrap", xco+10,yco-45,butw,19, &brush->flag, 0, 0, 0, 0, "Enables torus wrapping");
- yco -= 25;
- }
- else {
- yco -= 25;
- uiBlockBeginAlign(block);
- uiDefButBitS(block, TOGN|BIT, IMAGEPAINT_PROJECT_DISABLE, B_REDR, "Project Paint", xco+10,yco-25,butw,19, &settings->imapaint.flag, 0, 0, 0, 0, "Use projection painting for improved consistency in the brush strokes");
-
- if ((settings->imapaint.flag & IMAGEPAINT_PROJECT_DISABLE)==0) {
- /* Projection Painting */
-
- uiDefButBitS(block, TOGN|BIT, IMAGEPAINT_PROJECT_XRAY, B_NOP, "Occlude", xco+10,yco-45,butw/2,19, &settings->imapaint.flag, 0, 0, 0, 0, "Only paint onto the faces directly under the brush (slower)");
- uiDefButBitS(block, TOGN|BIT, IMAGEPAINT_PROJECT_BACKFACE, B_NOP, "Cull", xco+10+butw/2,yco-45,butw/2,19, &settings->imapaint.flag, 0, 0, 0, 0, "Ignore faces pointing away from the view (faster)");
-
- uiDefButBitS(block, TOGN|BIT, IMAGEPAINT_PROJECT_FLAT, B_NOP, "Normal", xco+10,yco-65,butw/2,19, &settings->imapaint.flag, 0, 0, 0, 0, "Paint most on faces pointing towards the view");
- uiDefButS(block, NUM, B_NOP, "", xco+10 +(butw/2),yco-65,butw/2,19, &settings->imapaint.normal_angle, 10.0, 90.0, 0, 0, "Paint most on faces pointing towards the view acording to this angle");
-
- uiDefButS(block, NUM, B_NOP, "Bleed: ", xco+10,yco-85,butw,19, &settings->imapaint.seam_bleed, 0.0, 8.0, 0, 0, "Extend paint beyond the faces UVs to reduce seams (in pixels, slower)");
- uiBlockEndAlign(block);
-
- uiBlockBeginAlign(block);
- uiDefButBitS(block, TOG|BIT, IMAGEPAINT_PROJECT_LAYER_MASK, B_NOP, "Stencil Layer", xco+10,yco-110,butw-30,19, &settings->imapaint.flag, 0, 0, 0, 0, "Set the mask layer from the UV layer buttons");
- uiDefButBitS(block, TOG|BIT, IMAGEPAINT_PROJECT_LAYER_MASK_INV, B_NOP, "Inv", xco+10 + butw-30,yco-110,30,19, &settings->imapaint.flag, 0, 0, 0, 0, "Invert the mask");
- uiBlockEndAlign(block);
-
- }
- uiBlockEndAlign(block);
- }
-
- uiBlockBeginAlign(block);
- uiDefButF(block, COL, B_VPCOLSLI, "", 0,yco,200,19, brush->rgb, 0, 0, 0, 0, "");
- uiDefButF(block, NUMSLI, evt_nop, "Opacity ", 0,yco-20,180,19, &brush->alpha, 0.0, 1.0, 0, 0, "The amount of pressure on the brush");
- uiDefIconButBitS(block, TOG|BIT, BRUSH_ALPHA_PRESSURE, evt_nop, ICON_STYLUS_PRESSURE, 180,yco-20,20,19, &brush->flag, 0, 0, 0, 0, "Enables pressure sensitivity for tablets");
- uiDefButI(block, NUMSLI, evt_nop, "Size ", 0,yco-40,180,19, &brush->size, 1, 200, 0, 0, "The size of the brush");
- uiDefIconButBitS(block, TOG|BIT, BRUSH_SIZE_PRESSURE, evt_nop, ICON_STYLUS_PRESSURE, 180,yco-40,20,19, &brush->flag, 0, 0, 0, 0, "Enables pressure sensitivity for tablets");
-// uiDefButF(block, NUMSLI, evt_nop, "Falloff ", 0,yco-60,180,19, &brush->innerradius, 0.0, 1.0, 0, 0, "The fall off radius of the brush");
-// uiDefIconButBitS(block, TOG|BIT, BRUSH_RAD_PRESSURE, evt_nop, ICON_STYLUS_PRESSURE, 180,yco-60,20,19, &brush->flag, 0, 0, 0, 0, "Enables pressure sensitivity for tablets");
- uiDefButF(block, NUMSLI, evt_nop, "Spacing ",0,yco-80,180,19, &brush->spacing, 1.0, 100.0, 0, 0, "Repeating paint on %% of brush diameter");
- uiDefIconButBitS(block, TOG|BIT, BRUSH_SPACING_PRESSURE, evt_nop, ICON_STYLUS_PRESSURE, 180,yco-80,20,19, &brush->flag, 0, 0, 0, 0, "Enables pressure sensitivity for tablets");
- uiBlockEndAlign(block);
-
- yco -= 110;
-
- if(fromsima && settings->imapaint.tool == PAINT_TOOL_CLONE) {
- id= (ID*)brush->clone.image;
- xco= 200; // std_libbuttons(block, 0, yco, 0, NULL, B_SIMACLONEBROWSE, ID_IM, 0, id, 0, menupoin, 0, 0, B_SIMACLONEDELETE, 0, 0);
- if(id) {
- butw= 320-(xco+5);
- uiDefButF(block, NUMSLI, evt_change, "B ",xco+5,yco,butw,19, &brush->clone.alpha , 0.0, 1.0, 0, 0, "Opacity of clone image display");
- }
- }
- else {
- if (
- (fromsima==0) && /* 3D View */
- (settings->imapaint.flag & IMAGEPAINT_PROJECT_DISABLE)==0 && /* Projection Painting */
- (settings->imapaint.tool == PAINT_TOOL_CLONE)
- ) {
- butw = 130;
- uiDefButBitS(block, TOG|BIT, IMAGEPAINT_PROJECT_LAYER_CLONE, B_REDR, "Clone Layer", 0,yco,butw,20, &settings->imapaint.flag, 0, 0, 0, 0, "Use another UV layer as clone source, otherwise use 3D the cursor as the source");
- }
- else {
- MTex *mtex= brush->mtex[brush->texact];
-
- id= (mtex)? (ID*)mtex->tex: NULL;
- xco= 200; // std_libbuttons(block, 0, yco, 0, NULL, evt_texbrowse, ID_TE, 0, id, NULL, menupoin, 0, 0, evt_texdel, 0, 0);
- /*uiDefButBitS(block, TOG|BIT, BRUSH_FIXED_TEX, evt_change, "Fixed", xco+5,yco,butw,19, &brush->flag, 0, 0, 0, 0, "Keep texture origin in fixed position");*/
- }
- }
- }
-
-#if 0
- uiDefButBitS(block, TOG|BIT, IMAGEPAINT_DRAW_TOOL_DRAWING, B_SIMABRUSHCHANGE, "TD", 0,1,50,19, &settings->imapaint.flag.flag, 0, 0, 0, 0, "Enables brush shape while drawing");
- uiDefButBitS(block, TOG|BIT, IMAGEPAINT_DRAW_TOOL, B_SIMABRUSHCHANGE, "TP", 50,1,50,19, &settings->imapaint.flag.flag, 0, 0, 0, 0, "Enables brush shape while not drawing");
-#endif
-}
-
static int image_panel_poll(const bContext *C, PanelType *pt)
{
SpaceImage *sima= CTX_wm_space_image(C);
@@ -1024,7 +897,7 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn
if(ima->source != IMA_SRC_GENERATED) {
uiItemS(layout);
- split= uiLayoutSplit(layout, 0);
+ split= uiLayoutSplit(layout, 0, 0);
col= uiLayoutColumn(split, 0);
uiItemR(col, NULL, 0, &imaptr, "fields", 0);
@@ -1040,7 +913,7 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn
if(ELEM(ima->source, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE)) {
uiItemS(layout);
- split= uiLayoutSplit(layout, 0);
+ split= uiLayoutSplit(layout, 0, 0);
col= uiLayoutColumn(split, 0);
@@ -1062,7 +935,7 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn
uiItemR(col, NULL, 0, userptr, "cyclic", 0);
}
else if(ima->source==IMA_SRC_GENERATED) {
- split= uiLayoutSplit(layout, 0);
+ split= uiLayoutSplit(layout, 0, 0);
col= uiLayoutColumn(split, 1);
uiItemR(col, "X", 0, &imaptr, "generated_width", 0);
diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c
index 193a10ffa3c..1434be0e95d 100644
--- a/source/blender/editors/space_image/space_image.c
+++ b/source/blender/editors/space_image/space_image.c
@@ -115,11 +115,12 @@ static SpaceLink *image_new(const bContext *C)
simage= MEM_callocN(sizeof(SpaceImage), "initimage");
simage->spacetype= SPACE_IMAGE;
simage->zoom= 1;
+ simage->lock= 1;
simage->iuser.ok= 1;
simage->iuser.fie_ima= 2;
simage->iuser.frames= 100;
-
+
/* header */
ar= MEM_callocN(sizeof(ARegion), "header for image");
@@ -234,11 +235,7 @@ void image_keymap(struct wmKeyConfig *keyconf)
RNA_float_set(WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_ratio", PAD4, KM_PRESS, 0, 0)->ptr, "ratio", 0.25f);
RNA_float_set(WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_ratio", PAD8, KM_PRESS, 0, 0)->ptr, "ratio", 0.125f);
- WM_keymap_add_item(keymap, "PAINT_OT_image_paint", LEFTMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "PAINT_OT_grab_clone", RIGHTMOUSE, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "PAINT_OT_sample_color", RIGHTMOUSE, KM_PRESS, 0, 0);
- RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_image_paint_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE);
- RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_image_paint_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH);
WM_keymap_add_item(keymap, "IMAGE_OT_sample", ACTIONMOUSE, KM_PRESS, 0, 0);
RNA_enum_set(WM_keymap_add_item(keymap, "IMAGE_OT_curves_point_set", ACTIONMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "point", 0);
@@ -303,6 +300,7 @@ static void image_listener(ScrArea *sa, wmNotifier *wmn)
switch(wmn->data) {
case ND_DATA:
case ND_SELECT:
+ ED_area_tag_refresh(sa);
ED_area_tag_redraw(sa);
break;
}
@@ -389,10 +387,10 @@ static void image_main_area_init(wmWindowManager *wm, ARegion *ar)
// UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_STANDARD, ar->winx, ar->winy);
/* image paint polls for mode */
- keymap= WM_keymap_find(wm->defaultconf, "Image Paint", SPACE_IMAGE, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "Image Paint", 0, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
- keymap= WM_keymap_find(wm->defaultconf, "UVEdit", 0, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "UV Editor", 0, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
/* own keymaps */
@@ -531,6 +529,7 @@ void ED_spacetype_image(void)
ARegionType *art;
st->spaceid= SPACE_IMAGE;
+ strncpy(st->name, "Image", BKE_ST_MAXNAME);
st->new= image_new;
st->free= image_free;
@@ -568,7 +567,7 @@ void ED_spacetype_image(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype image region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->init= image_header_area_init;
art->draw= image_header_area_draw;
diff --git a/source/blender/editors/space_info/space_info.c b/source/blender/editors/space_info/space_info.c
index c28e86a6fa6..d9662339bb2 100644
--- a/source/blender/editors/space_info/space_info.c
+++ b/source/blender/editors/space_info/space_info.c
@@ -182,6 +182,7 @@ void ED_spacetype_info(void)
ARegionType *art;
st->spaceid= SPACE_INFO;
+ strncpy(st->name, "Info", BKE_ST_MAXNAME);
st->new= info_new;
st->free= info_free;
@@ -204,7 +205,7 @@ void ED_spacetype_info(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype info region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->listener= info_header_listener;
art->init= info_header_area_init;
art->draw= info_header_area_draw;
diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c
index dc8b111821d..8ba0577e3c7 100644
--- a/source/blender/editors/space_logic/logic_window.c
+++ b/source/blender/editors/space_logic/logic_window.c
@@ -637,7 +637,7 @@ static char *sensor_name(int type)
static char *sensor_pup(void)
{
- /* the number needs to match defines in game.h */
+ /* the number needs to match defines in DNA_sensor_types.h */
return "Sensors %t|Always %x0|Delay %x13|Keyboard %x3|Mouse %x5|"
"Touch %x1|Collision %x6|Near %x2|Radar %x7|"
"Property %x4|Random %x8|Ray %x9|Message %x10|Joystick %x11|Actuator %x12|Armature %x14";
@@ -3396,9 +3396,9 @@ void logic_buttons(bContext *C, ARegion *ar)
//uiButSetFunc(but, sca_move_controller, cont, NULL);
uiBlockBeginAlign(block);
- but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_UP, (short)(xco+width-(110+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up");
+ but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_UP, (short)(xco+width-(110+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up");
uiButSetFunc(but, sca_move_controller, cont, (void *)TRUE);
- but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_DOWN, (short)(xco+width-(88+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down");
+ but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_DOWN, (short)(xco+width-(88+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down");
uiButSetFunc(but, sca_move_controller, cont, (void *)FALSE);
uiBlockEndAlign(block);
@@ -3488,9 +3488,9 @@ void logic_buttons(bContext *C, ARegion *ar)
//uiButSetFunc(but, sca_move_sensor, sens, NULL);
uiBlockBeginAlign(block);
- but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_UP, (short)(xco+width-(66+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up");
+ but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_UP, (short)(xco+width-(66+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up");
uiButSetFunc(but, sca_move_sensor, sens, (void *)TRUE);
- but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_DOWN, (short)(xco+width-(44+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down");
+ but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_DOWN, (short)(xco+width-(44+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down");
uiButSetFunc(but, sca_move_sensor, sens, (void *)FALSE);
uiBlockEndAlign(block);
}
@@ -3568,9 +3568,9 @@ void logic_buttons(bContext *C, ARegion *ar)
// uiButSetFunc(but, sca_move_actuator, act, NULL);
uiBlockBeginAlign(block);
- but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_UP, (short)(xco+width-(66+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up");
+ but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_UP, (short)(xco+width-(66+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up");
uiButSetFunc(but, sca_move_actuator, act, (void *)TRUE);
- but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_DOWN, (short)(xco+width-(44+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down");
+ but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_DOWN, (short)(xco+width-(44+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down");
uiButSetFunc(but, sca_move_actuator, act, (void *)FALSE);
uiBlockEndAlign(block);
diff --git a/source/blender/editors/space_logic/space_logic.c b/source/blender/editors/space_logic/space_logic.c
index 62ed6a0a769..06e92ee5fce 100644
--- a/source/blender/editors/space_logic/space_logic.c
+++ b/source/blender/editors/space_logic/space_logic.c
@@ -188,7 +188,7 @@ void logic_operatortypes(void)
void logic_keymap(struct wmKeyConfig *keyconf)
{
- wmKeyMap *keymap= WM_keymap_find(keyconf, "Logic Generic", SPACE_LOGIC, 0);
+ wmKeyMap *keymap= WM_keymap_find(keyconf, "Logic Editor", SPACE_LOGIC, 0);
WM_keymap_add_item(keymap, "LOGIC_OT_properties", NKEY, KM_PRESS, 0, 0);
}
@@ -217,6 +217,10 @@ static void logic_listener(ARegion *ar, wmNotifier *wmn)
break;
case NC_OBJECT:
break;
+ case NC_ID:
+ if(wmn->action == NA_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
}
}
@@ -239,7 +243,7 @@ static void logic_main_area_init(wmWindowManager *wm, ARegion *ar)
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy);
/* own keymaps */
- keymap= WM_keymap_find(wm->defaultconf, "Logic Generic", SPACE_LOGIC, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "Logic Editor", SPACE_LOGIC, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
}
@@ -280,7 +284,7 @@ static void logic_buttons_area_init(wmWindowManager *wm, ARegion *ar)
ED_region_panels_init(wm, ar);
- keymap= WM_keymap_find(wm->defaultconf, "Logic Generic", SPACE_LOGIC, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "Logic Editor", SPACE_LOGIC, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
}
@@ -328,6 +332,7 @@ void ED_spacetype_logic(void)
ARegionType *art;
st->spaceid= SPACE_LOGIC;
+ strncpy(st->name, "Logic", BKE_ST_MAXNAME);
st->new= logic_new;
st->free= logic_free;
@@ -364,7 +369,7 @@ void ED_spacetype_logic(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype logic region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->init= logic_header_area_init;
art->draw= logic_header_area_draw;
diff --git a/source/blender/editors/space_nla/nla_buttons.c b/source/blender/editors/space_nla/nla_buttons.c
index 205aff27be7..df791297967 100644
--- a/source/blender/editors/space_nla/nla_buttons.c
+++ b/source/blender/editors/space_nla/nla_buttons.c
@@ -247,7 +247,7 @@ static void nla_panel_animdata (const bContext *C, Panel *pa)
/* Active Action Properties ------------------------------------- */
/* action */
row= uiLayoutRow(layout, 1);
- uiTemplateID(row, (bContext *)C, &adt_ptr, "action", "ACT_OT_new", NULL, NULL /*"ACT_OT_unlink"*/); // XXX: need to make these operators
+ uiTemplateID(row, (bContext *)C, &adt_ptr, "action", "ACTION_OT_new", NULL, NULL /*"ACTION_OT_unlink"*/); // XXX: need to make these operators
/* extrapolation */
row= uiLayoutRow(layout, 1);
@@ -434,7 +434,7 @@ static void nla_panel_modifiers(const bContext *C, Panel *pa)
for (fcm= strip->modifiers.first; fcm; fcm= fcm->next) {
col= uiLayoutColumn(pa->layout, 1);
- ANIM_uiTemplate_fmodifier_draw(C, col, strip_ptr.id.data, &strip->modifiers, fcm);
+ ANIM_uiTemplate_fmodifier_draw(col, strip_ptr.id.data, &strip->modifiers, fcm);
}
}
diff --git a/source/blender/editors/space_nla/nla_channels.c b/source/blender/editors/space_nla/nla_channels.c
index ab447dd974a..5f9d6b03efc 100644
--- a/source/blender/editors/space_nla/nla_channels.c
+++ b/source/blender/editors/space_nla/nla_channels.c
@@ -429,11 +429,11 @@ static int nlaedit_add_tracks_exec (bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void NLA_OT_add_tracks (wmOperatorType *ot)
+void NLA_OT_tracks_add (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Add Track(s)";
- ot->idname= "NLA_OT_add_tracks";
+ ot->idname= "NLA_OT_tracks_add";
ot->description= "Add NLA-Tracks above/after the selected tracks.";
/* api callbacks */
diff --git a/source/blender/editors/space_nla/nla_edit.c b/source/blender/editors/space_nla/nla_edit.c
index 12e43465a29..4422bc2d158 100644
--- a/source/blender/editors/space_nla/nla_edit.c
+++ b/source/blender/editors/space_nla/nla_edit.c
@@ -259,7 +259,7 @@ static int nlaedit_add_actionclip_invoke (bContext *C, wmOperator *op, wmEvent *
/* loop through Actions in Main database, adding as items in the menu */
for (act= m->action.first; act; act= act->id.next)
- uiItemStringO(layout, act->id.name+2, 0, "NLA_OT_add_actionclip", "action", act->id.name);
+ uiItemStringO(layout, act->id.name+2, 0, "NLA_OT_actionclip_add", "action", act->id.name);
uiItemS(layout);
uiPupMenuEnd(C, pup);
@@ -347,11 +347,11 @@ static int nlaedit_add_actionclip_exec (bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void NLA_OT_add_actionclip (wmOperatorType *ot)
+void NLA_OT_actionclip_add (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Add Action Strip";
- ot->idname= "NLA_OT_add_actionclip";
+ ot->idname= "NLA_OT_actionclip_add";
ot->description= "Add an Action-Clip strip (i.e. an NLA Strip referencing an Action) to the active track.";
/* api callbacks */
@@ -467,11 +467,11 @@ static int nlaedit_add_transition_exec (bContext *C, wmOperator *op)
}
}
-void NLA_OT_add_transition (wmOperatorType *ot)
+void NLA_OT_transition_add (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Add Transition";
- ot->idname= "NLA_OT_add_transition";
+ ot->idname= "NLA_OT_transition_add";
ot->description= "Add a transition strip between two adjacent selected strips.";
/* api callbacks */
@@ -529,11 +529,11 @@ static int nlaedit_add_meta_exec (bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void NLA_OT_add_meta (wmOperatorType *ot)
+void NLA_OT_meta_add (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Add Meta-Strips";
- ot->idname= "NLA_OT_add_meta";
+ ot->idname= "NLA_OT_meta_add";
ot->description= "Add new meta-strips incorporating the selected strips.";
/* api callbacks */
@@ -581,11 +581,11 @@ static int nlaedit_remove_meta_exec (bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void NLA_OT_remove_meta (wmOperatorType *ot)
+void NLA_OT_meta_remove (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Remove Meta-Strips";
- ot->idname= "NLA_OT_remove_meta";
+ ot->idname= "NLA_OT_meta_remove";
ot->description= "Separate out the strips held by the selected meta-strips.";
/* api callbacks */
@@ -679,7 +679,7 @@ static int nlaedit_duplicate_invoke(bContext *C, wmOperator *op, wmEvent *event)
nlaedit_duplicate_exec(C, op);
RNA_int_set(op->ptr, "mode", TFM_TIME_TRANSLATE); // XXX
- WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
+ WM_operator_name_call(C, "TRANSFORM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
return OPERATOR_FINISHED;
}
diff --git a/source/blender/editors/space_nla/nla_header.c b/source/blender/editors/space_nla/nla_header.c
deleted file mode 100644
index 0c0deaf75ef..00000000000
--- a/source/blender/editors/space_nla/nla_header.c
+++ /dev/null
@@ -1,262 +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, Joshua Leung
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-#include <string.h>
-#include <stdio.h>
-
-#include "DNA_anim_types.h"
-#include "DNA_action_types.h"
-#include "DNA_nla_types.h"
-#include "DNA_object_types.h"
-#include "DNA_space_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 "BLI_math.h"
-#include "BLI_rand.h"
-
-#include "BKE_animsys.h"
-#include "BKE_nla.h"
-#include "BKE_context.h"
-#include "BKE_report.h"
-#include "BKE_screen.h"
-#include "ED_types.h"
-#include "ED_util.h"
-
-#include "ED_anim_api.h"
-#include "ED_markers.h"
-#include "ED_space_api.h"
-#include "ED_screen.h"
-#include "ED_transform.h"
-
-#include "BIF_gl.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 "nla_intern.h"
-
-/* button events */
-enum {
- B_REDR = 1,
-} eNLAHeader_ButEvents;
-
-/* ************************ header area region *********************** */
-
-
-static void nla_viewmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- bScreen *sc= CTX_wm_screen(C);
- ScrArea *sa= CTX_wm_area(C);
- SpaceNla *snla= CTX_wm_space_nla(C);
- PointerRNA spaceptr;
-
- /* retrieve state */
- RNA_pointer_create(&sc->id, &RNA_SpaceNLA, snla, &spaceptr);
-
- /* create menu */
- uiItemO(layout, NULL, ICON_MENU_PANEL, "NLA_OT_properties");
-
- uiItemS(layout);
-
- uiItemR(layout, NULL, 0, &spaceptr, "show_cframe_indicator", 0);
-
- if (snla->flag & SNLA_DRAWTIME)
- uiItemO(layout, "Show Frames", 0, "ANIM_OT_time_toggle");
- else
- uiItemO(layout, "Show Seconds", 0, "ANIM_OT_time_toggle");
-
- uiItemR(layout, NULL, 0, &spaceptr, "show_strip_curves", 0);
-
- uiItemS(layout);
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "ANIM_OT_previewrange_set");
- uiItemO(layout, NULL, 0, "ANIM_OT_previewrange_clear");
-
- uiItemS(layout);
-
- //uiItemO(layout, NULL, 0, "NLA_OT_view_all");
-
- if (sa->full)
- uiItemO(layout, NULL, 0, "SCREEN_OT_screen_full_area"); // "Tile Window", Ctrl UpArrow
- else
- uiItemO(layout, NULL, 0, "SCREEN_OT_screen_full_area"); // "Maximize Window", Ctr DownArrow
-}
-
-static void nla_selectmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- uiItemO(layout, NULL, 0, "NLA_OT_select_all_toggle");
- uiItemBooleanO(layout, "Invert All", 0, "NLA_OT_select_all_toggle", "invert", 1);
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "NLA_OT_select_border");
- uiItemBooleanO(layout, "Border Axis Range", 0, "NLA_OT_select_border", "axis_range", 1);
-}
-
-static void nla_edit_transformmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- // XXX these operators may change for NLA...
- uiItemEnumO(layout, "Grab/Move", 0, "TFM_OT_transform", "mode", TFM_TRANSLATION);
- uiItemEnumO(layout, "Extend", 0, "TFM_OT_transform", "mode", TFM_TIME_EXTEND);
- uiItemEnumO(layout, "Scale", 0, "TFM_OT_transform", "mode", TFM_TIME_SCALE);
-}
-
-static void nla_editmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- Scene *scene= CTX_data_scene(C);
-
- uiItemMenuF(layout, "Transform", 0, nla_edit_transformmenu, NULL);
- uiItemMenuEnumO(layout, "Snap", 0, "NLA_OT_snap", "type");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "NLA_OT_duplicate");
- uiItemO(layout, NULL, 0, "NLA_OT_split");
- uiItemO(layout, NULL, 0, "NLA_OT_delete");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "NLA_OT_mute_toggle");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "NLA_OT_apply_scale");
- uiItemO(layout, NULL, 0, "NLA_OT_clear_scale");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "NLA_OT_move_up");
- uiItemO(layout, NULL, 0, "NLA_OT_move_down");
-
- uiItemS(layout);
-
- // TODO: names of these tools for 'tweakmode' need changing?
- if (scene->flag & SCE_NLA_EDIT_ON)
- uiItemO(layout, "Stop Tweaking Strip Actions", 0, "NLA_OT_tweakmode_exit");
- else
- uiItemO(layout, "Start Tweaking Strip Actions", 0, "NLA_OT_tweakmode_enter");
-}
-
-static void nla_addmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- uiItemO(layout, NULL, 0, "NLA_OT_add_actionclip");
- uiItemO(layout, NULL, 0, "NLA_OT_add_transition");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "NLA_OT_add_meta");
- uiItemO(layout, NULL, 0, "NLA_OT_remove_meta");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "NLA_OT_add_tracks");
- uiItemBooleanO(layout, "Add Tracks Above Selected", 0, "NLA_OT_add_tracks", "above_selected", 1);
-}
-
-/* ------------------ */
-
-static void do_nla_buttons(bContext *C, void *arg, int event)
-{
- ED_area_tag_refresh(CTX_wm_area(C));
- ED_area_tag_redraw(CTX_wm_area(C));
-}
-
-
-void nla_header_buttons(const bContext *C, ARegion *ar)
-{
- SpaceNla *snla= CTX_wm_space_nla(C);
- ScrArea *sa= CTX_wm_area(C);
- uiBlock *block;
- int xco, yco= 3;
-
- block= uiBeginBlock(C, ar, "header buttons", UI_EMBOSS);
- uiBlockSetHandleFunc(block, do_nla_buttons, NULL);
-
- xco= ED_area_header_standardbuttons(C, block, yco);
-
- if ((sa->flag & HEADER_NO_PULLDOWN)==0) {
- int xmax;
-
- xmax= GetButStringLength("View");
- uiDefMenuBut(block, nla_viewmenu, NULL, "View", xco, yco, xmax-3, 20, "");
- xco+= xmax;
-
- xmax= GetButStringLength("Select");
- uiDefMenuBut(block, nla_selectmenu, NULL, "Select", xco, yco, xmax-3, 20, "");
- xco+= xmax;
-
- xmax= GetButStringLength("Edit");
- uiDefMenuBut(block, nla_editmenu, NULL, "Edit", xco, yco, xmax-3, 20, "");
- xco+= xmax;
-
- xmax= GetButStringLength("Add");
- uiDefMenuBut(block, nla_addmenu, NULL, "Add", xco, yco, xmax-3, 20, "");
- xco+= xmax;
- }
-
- uiBlockSetEmboss(block, UI_EMBOSS);
-
- /* filtering buttons */
- xco= ANIM_headerUI_standard_buttons(C, snla->ads, block, xco, yco);
-
- /* auto-snap selector */
- if (snla->flag & SNLA_DRAWTIME) {
- uiDefButS(block, MENU, B_REDR,
- "Auto-Snap %t|No Time-Snap %x0|Nearest Second %x2|Nearest Marker %x3",
- xco,yco,90,YIC, &snla->autosnap, 0, 1, 0, 0,
- "Auto-snapping mode for times when transforming");
- }
- else {
- uiDefButS(block, MENU, B_REDR,
- "Auto-Snap %t|No Time-Snap %x0|Nearest Frame %x2|Nearest Marker %x3",
- xco,yco,90,YIC, &snla->autosnap, 0, 1, 0, 0,
- "Auto-snapping mode for times when transforming");
- }
- xco += 98;
-
- /* 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_nla/nla_intern.h b/source/blender/editors/space_nla/nla_intern.h
index 91c1decc576..ca50452b442 100644
--- a/source/blender/editors/space_nla/nla_intern.h
+++ b/source/blender/editors/space_nla/nla_intern.h
@@ -88,11 +88,11 @@ void NLA_OT_tweakmode_exit(wmOperatorType *ot);
/* --- */
-void NLA_OT_add_actionclip(wmOperatorType *ot);
-void NLA_OT_add_transition(wmOperatorType *ot);
+void NLA_OT_actionclip_add(wmOperatorType *ot);
+void NLA_OT_transition_add(wmOperatorType *ot);
-void NLA_OT_add_meta(wmOperatorType *ot);
-void NLA_OT_remove_meta(wmOperatorType *ot);
+void NLA_OT_meta_add(wmOperatorType *ot);
+void NLA_OT_meta_remove(wmOperatorType *ot);
void NLA_OT_duplicate(wmOperatorType *ot);
void NLA_OT_delete(wmOperatorType *ot);
@@ -116,7 +116,7 @@ void NLA_OT_fmodifier_add(wmOperatorType *ot);
void NLA_OT_channels_click(wmOperatorType *ot);
-void NLA_OT_add_tracks(wmOperatorType *ot);
+void NLA_OT_tracks_add(wmOperatorType *ot);
void NLA_OT_delete_tracks(wmOperatorType *ot);
/* **************************************** */
diff --git a/source/blender/editors/space_nla/nla_ops.c b/source/blender/editors/space_nla/nla_ops.c
index d210016d201..bec3a003b1e 100644
--- a/source/blender/editors/space_nla/nla_ops.c
+++ b/source/blender/editors/space_nla/nla_ops.c
@@ -130,7 +130,7 @@ void nla_operatortypes(void)
/* channels */
WM_operatortype_append(NLA_OT_channels_click);
- WM_operatortype_append(NLA_OT_add_tracks);
+ WM_operatortype_append(NLA_OT_tracks_add);
WM_operatortype_append(NLA_OT_delete_tracks);
/* select */
@@ -142,11 +142,11 @@ void nla_operatortypes(void)
WM_operatortype_append(NLA_OT_tweakmode_enter);
WM_operatortype_append(NLA_OT_tweakmode_exit);
- WM_operatortype_append(NLA_OT_add_actionclip);
- WM_operatortype_append(NLA_OT_add_transition);
+ WM_operatortype_append(NLA_OT_actionclip_add);
+ WM_operatortype_append(NLA_OT_transition_add);
- WM_operatortype_append(NLA_OT_add_meta);
- WM_operatortype_append(NLA_OT_remove_meta);
+ WM_operatortype_append(NLA_OT_meta_add);
+ WM_operatortype_append(NLA_OT_meta_remove);
WM_operatortype_append(NLA_OT_duplicate);
WM_operatortype_append(NLA_OT_delete);
@@ -178,8 +178,8 @@ static void nla_keymap_channels (wmKeyConfig *keyconf, wmKeyMap *keymap)
/* channel operations */
/* add tracks */
- WM_keymap_add_item(keymap, "NLA_OT_add_tracks", AKEY, KM_PRESS, KM_SHIFT, 0);
- RNA_boolean_set(WM_keymap_add_item(keymap, "NLA_OT_add_tracks", AKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0)->ptr, "above_selected", 1);
+ WM_keymap_add_item(keymap, "NLA_OT_tracks_add", AKEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_boolean_set(WM_keymap_add_item(keymap, "NLA_OT_tracks_add", AKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0)->ptr, "above_selected", 1);
/* delete tracks */
WM_keymap_add_item(keymap, "NLA_OT_delete_tracks", XKEY, KM_PRESS, 0, 0);
@@ -240,12 +240,12 @@ static void nla_keymap_main (wmKeyConfig *keyconf, wmKeyMap *keymap)
WM_keymap_add_item(keymap, "NLA_OT_tweakmode_exit", TABKEY, KM_PRESS, 0, 0);
/* add strips */
- WM_keymap_add_item(keymap, "NLA_OT_add_actionclip", AKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "NLA_OT_add_transition", TKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "NLA_OT_actionclip_add", AKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "NLA_OT_transition_add", TKEY, KM_PRESS, KM_SHIFT, 0);
/* meta-strips */
- WM_keymap_add_item(keymap, "NLA_OT_add_meta", GKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "NLA_OT_remove_meta", GKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "NLA_OT_meta_add", GKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "NLA_OT_meta_remove", GKEY, KM_PRESS, KM_ALT, 0);
/* duplicate */
WM_keymap_add_item(keymap, "NLA_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
@@ -301,7 +301,7 @@ void nla_keymap(wmKeyConfig *keyconf)
nla_keymap_channels(keyconf, keymap);
/* data */
- keymap= WM_keymap_find(keyconf, "NLA Data", SPACE_NLA, 0);
+ keymap= WM_keymap_find(keyconf, "NLA Editor", SPACE_NLA, 0);
nla_keymap_main(keyconf, keymap);
}
diff --git a/source/blender/editors/space_nla/space_nla.c b/source/blender/editors/space_nla/space_nla.c
index 1e35e9122e6..b384a30de56 100644
--- a/source/blender/editors/space_nla/space_nla.c
+++ b/source/blender/editors/space_nla/space_nla.c
@@ -264,7 +264,7 @@ static void nla_main_area_init(wmWindowManager *wm, ARegion *ar)
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy);
/* own keymap */
- keymap= WM_keymap_find(wm->defaultconf, "NLA Data", SPACE_NLA, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "NLA Editor", SPACE_NLA, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
keymap= WM_keymap_find(wm->defaultconf, "NLA Generic", SPACE_NLA, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
@@ -331,29 +331,12 @@ static void nla_main_area_draw(const bContext *C, ARegion *ar)
/* add handlers, stuff you only do once or on area/region changes */
static void nla_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 nla_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);
-
- nla_header_buttons(C, ar);
-
- /* restore view matrix? */
- UI_view2d_view_restore(C);
+ ED_region_header(C, ar);
}
/* add handlers, stuff you only do once or on area/region changes */
@@ -439,6 +422,10 @@ static void nla_main_area_listener(ARegion *ar, wmNotifier *wmn)
break;
}
break;
+ case NC_ID:
+ if(wmn->action == NA_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
default:
if(wmn->data==ND_KEYS)
ED_region_tag_redraw(ar);
@@ -468,6 +455,11 @@ static void nla_channel_area_listener(ARegion *ar, wmNotifier *wmn)
break;
}
break;
+ case NC_ID:
+ if(wmn->action == NA_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
+
default:
if(wmn->data==ND_KEYS)
ED_region_tag_redraw(ar);
@@ -515,6 +507,7 @@ void ED_spacetype_nla(void)
ARegionType *art;
st->spaceid= SPACE_NLA;
+ strncpy(st->name, "NLA", BKE_ST_MAXNAME);
st->new= nla_new;
st->free= nla_free;
@@ -538,7 +531,7 @@ void ED_spacetype_nla(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype nla region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->init= nla_header_area_init;
art->draw= nla_header_area_draw;
diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c
index 924b4b2563e..caff0968e54 100644
--- a/source/blender/editors/space_node/drawnode.c
+++ b/source/blender/editors/space_node/drawnode.c
@@ -628,7 +628,7 @@ static void node_composit_buts_defocus(uiLayout *layout, bContext *C, PointerRNA
uiItemR(layout, NULL, 0, ptr, "gamma_correction", 0);
col = uiLayoutColumn(layout, 0);
- uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_zbuffer")==0);
+ uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_zbuffer")==1);
uiItemR(col, NULL, 0, ptr, "f_stop", 0);
uiItemR(layout, NULL, 0, ptr, "max_blur", 0);
@@ -643,7 +643,7 @@ static void node_composit_buts_defocus(uiLayout *layout, bContext *C, PointerRNA
col = uiLayoutColumn(layout, 0);
uiItemR(col, NULL, 0, ptr, "use_zbuffer", 0);
sub = uiLayoutColumn(col, 0);
- uiLayoutSetActive(sub, RNA_boolean_get(ptr, "use_zbuffer"));
+ uiLayoutSetActive(sub, RNA_boolean_get(ptr, "use_zbuffer")==0);
uiItemR(sub, NULL, 0, ptr, "z_scale", 0);
}
@@ -1088,89 +1088,56 @@ static void node_texture_buts_bricks(uiLayout *layout, bContext *C, PointerRNA *
uiItemR(col, "Frequency", 0, ptr, "squash_frequency", 0);
}
-/* Copied from buttons_shading.c -- needs unifying */
-static char* noisebasis_menu()
-{
- static char nbmenu[256];
- sprintf(nbmenu, "Noise Basis %%t|Blender Original %%x%d|Original Perlin %%x%d|Improved Perlin %%x%d|Voronoi F1 %%x%d|Voronoi F2 %%x%d|Voronoi F3 %%x%d|Voronoi F4 %%x%d|Voronoi F2-F1 %%x%d|Voronoi Crackle %%x%d|CellNoise %%x%d", TEX_BLENDER, TEX_STDPERLIN, TEX_NEWPERLIN, TEX_VORONOI_F1, TEX_VORONOI_F2, TEX_VORONOI_F3, TEX_VORONOI_F4, TEX_VORONOI_F2F1, TEX_VORONOI_CRACKLE, TEX_CELLNOISE);
- return nbmenu;
-}
-
static void node_texture_buts_proc(uiLayout *layout, bContext *C, PointerRNA *ptr)
{
- uiBlock *block= uiLayoutAbsoluteBlock(layout);
+ PointerRNA tex_ptr;
bNode *node= ptr->data;
- rctf *butr= &node->butr;
+ ID *id= ptr->id.data;
Tex *tex = (Tex *)node->storage;
- short x,y,w,h;
-
- x = butr->xmin;
- y = butr->ymin;
- w = butr->xmax - x;
- h = butr->ymax - y;
+ uiLayout *col, *row;
+ RNA_pointer_create(id, &RNA_Texture, tex, &tex_ptr);
+
+ col= uiLayoutColumn(layout, 0);
+
switch( tex->type ) {
case TEX_BLEND:
- uiBlockBeginAlign( block );
- uiDefButS( block, MENU, B_NODE_EXEC,
- "Linear %x0|Quad %x1|Ease %x2|Diag %x3|Sphere %x4|Halo %x5|Radial %x6",
- x, y+20, w, 20, &tex->stype, 0, 1, 0, 0, "Blend Type" );
- uiDefButBitS(block, TOG, TEX_FLIPBLEND, B_NODE_EXEC, "Flip XY", x, y, w, 20,
- &tex->flag, 0, 0, 0, 0, "Flips the direction of the progression 90 degrees");
- uiBlockEndAlign( block );
+ uiItemR(col, "", 0, &tex_ptr, "progression", 0);
+ row= uiLayoutRow(col, 0);
+ uiItemR(row, NULL, 0, &tex_ptr, "flip_axis", UI_ITEM_R_EXPAND);
break;
-
+
case TEX_MARBLE:
- uiBlockBeginAlign(block);
-
- uiDefButS(block, ROW, B_NODE_EXEC, "Soft", 0*w/3+x, 40+y, w/3, 18, &tex->stype, 2.0, (float)TEX_SOFT, 0, 0, "Uses soft marble");
- uiDefButS(block, ROW, B_NODE_EXEC, "Sharp", 1*w/3+x, 40+y, w/3, 18, &tex->stype, 2.0, (float)TEX_SHARP, 0, 0, "Uses more clearly defined marble");
- uiDefButS(block, ROW, B_NODE_EXEC, "Sharper", 2*w/3+x, 40+y, w/3, 18, &tex->stype, 2.0, (float)TEX_SHARPER, 0, 0, "Uses very clearly defined marble");
-
- uiDefButS(block, ROW, B_NODE_EXEC, "Soft noise", 0*w/2+x, 20+y, w/2, 19, &tex->noisetype, 12.0, (float)TEX_NOISESOFT, 0, 0, "Generates soft noise");
- uiDefButS(block, ROW, B_NODE_EXEC, "Hard noise", 1*w/2+x, 20+y, w/2, 19, &tex->noisetype, 12.0, (float)TEX_NOISEPERL, 0, 0, "Generates hard noise");
-
- uiDefButS(block, ROW, B_NODE_EXEC, "Sin", 0*w/3+x, 0+y, w/3, 18, &tex->noisebasis2, 8.0, 0.0, 0, 0, "Uses a sine wave to produce bands.");
- uiDefButS(block, ROW, B_NODE_EXEC, "Saw", 1*w/3+x, 0+y, w/3, 18, &tex->noisebasis2, 8.0, 1.0, 0, 0, "Uses a saw wave to produce bands");
- uiDefButS(block, ROW, B_NODE_EXEC, "Tri", 2*w/3+x, 0+y, w/3, 18, &tex->noisebasis2, 8.0, 2.0, 0, 0, "Uses a triangle wave to produce bands");
-
- uiBlockEndAlign(block);
+ row= uiLayoutRow(col, 0);
+ uiItemR(row, NULL, 0, &tex_ptr, "stype", UI_ITEM_R_EXPAND);
+ row= uiLayoutRow(col, 0);
+ uiItemR(row, NULL, 0, &tex_ptr, "noise_type", UI_ITEM_R_EXPAND);
+ row= uiLayoutRow(col, 0);
+ uiItemR(row, NULL, 0, &tex_ptr, "noisebasis2", UI_ITEM_R_EXPAND);
break;
-
+
case TEX_WOOD:
- uiDefButS(block, MENU, B_TEXPRV, noisebasis_menu(), x, y+64, w, 18, &tex->noisebasis, 0,0,0,0, "Sets the noise basis used for turbulence");
-
- uiBlockBeginAlign(block);
- uiDefButS(block, ROW, B_TEXPRV, "Bands", x, 40+y, w/2, 18, &tex->stype, 2.0, (float)TEX_BANDNOISE, 0, 0, "Uses standard noise");
- uiDefButS(block, ROW, B_TEXPRV, "Rings", w/2+x, 40+y, w/2, 18, &tex->stype, 2.0, (float)TEX_RINGNOISE, 0, 0, "Lets Noise return RGB value");
-
- uiDefButS(block, ROW, B_NODE_EXEC, "Sin", 0*w/3+x, 20+y, w/3, 18, &tex->noisebasis2, 8.0, (float)TEX_SIN, 0, 0, "Uses a sine wave to produce bands.");
- uiDefButS(block, ROW, B_NODE_EXEC, "Saw", 1*w/3+x, 20+y, w/3, 18, &tex->noisebasis2, 8.0, (float)TEX_SAW, 0, 0, "Uses a saw wave to produce bands");
- uiDefButS(block, ROW, B_NODE_EXEC, "Tri", 2*w/3+x, 20+y, w/3, 18, &tex->noisebasis2, 8.0, (float)TEX_TRI, 0, 0, "Uses a triangle wave to produce bands");
-
- uiDefButS(block, ROW, B_NODE_EXEC, "Soft noise", 0*w/2+x, 0+y, w/2, 19, &tex->noisetype, 12.0, (float)TEX_NOISESOFT, 0, 0, "Generates soft noise");
- uiDefButS(block, ROW, B_NODE_EXEC, "Hard noise", 1*w/2+x, 0+y, w/2, 19, &tex->noisetype, 12.0, (float)TEX_NOISEPERL, 0, 0, "Generates hard noise");
- uiBlockEndAlign(block);
+ uiItemR(col, "", 0, &tex_ptr, "noise_basis", 0);
+ uiItemR(col, "", 0, &tex_ptr, "stype", 0);
+ row= uiLayoutRow(col, 0);
+ uiItemR(row, NULL, 0, &tex_ptr, "noisebasis2", UI_ITEM_R_EXPAND);
+ row= uiLayoutRow(col, 0);
+ uiLayoutSetActive(row, !(RNA_enum_get(&tex_ptr, "stype")==TEX_BAND || RNA_enum_get(&tex_ptr, "stype")==TEX_RING));
+ uiItemR(row, NULL, 0, &tex_ptr, "noise_type", UI_ITEM_R_EXPAND);
break;
case TEX_CLOUDS:
- uiDefButS(block, MENU, B_TEXPRV, noisebasis_menu(), x, y+60, w, 18, &tex->noisebasis, 0,0,0,0, "Sets the noise basis used for turbulence");
-
- uiBlockBeginAlign(block);
- uiDefButS(block, ROW, B_TEXPRV, "B/W", x, y+38, w/2, 18, &tex->stype, 2.0, (float)TEX_DEFAULT, 0, 0, "Uses standard noise");
- uiDefButS(block, ROW, B_TEXPRV, "Color", w/2+x, y+38, w/2, 18, &tex->stype, 2.0, (float)TEX_COLOR, 0, 0, "Lets Noise return RGB value");
- uiDefButS(block, ROW, B_TEXPRV, "Soft", x, y+20, w/2, 18, &tex->noisetype, 12.0, (float)TEX_NOISESOFT, 0, 0, "Generates soft noise");
- uiDefButS(block, ROW, B_TEXPRV, "Hard", w/2+x, y+20, w/2, 18, &tex->noisetype, 12.0, (float)TEX_NOISEPERL, 0, 0, "Generates hard noise");
- uiBlockEndAlign(block);
-
- uiDefButS(block, NUM, B_TEXPRV, "Depth:", x, y, w, 18, &tex->noisedepth, 0.0, 6.0, 0, 0, "Sets the depth of the cloud calculation");
+ uiItemR(col, "", 0, &tex_ptr, "noise_basis", 0);
+ row= uiLayoutRow(col, 0);
+ uiItemR(row, NULL, 0, &tex_ptr, "stype", UI_ITEM_R_EXPAND);
+ row= uiLayoutRow(col, 0);
+ uiItemR(row, NULL, 0, &tex_ptr, "noise_type", UI_ITEM_R_EXPAND);
+ uiItemR(col, "Depth", 0, &tex_ptr, "noise_depth", UI_ITEM_R_EXPAND);
break;
case TEX_DISTNOISE:
- uiBlockBeginAlign(block);
- uiDefButS(block, MENU, B_TEXPRV, noisebasis_menu(), x, y+18, w, 18, &tex->noisebasis2, 0,0,0,0, "Sets the noise basis to distort");
- uiDefButS(block, MENU, B_TEXPRV, noisebasis_menu(), x, y, w, 18, &tex->noisebasis, 0,0,0,0, "Sets the noise basis which does the distortion");
- uiBlockEndAlign(block);
+ uiItemR(col, "", 0, &tex_ptr, "noise_basis", 0);
+ uiItemR(col, "", 0, &tex_ptr, "noise_distortion", 0);
break;
}
}
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c
index b42e9e1fac5..ce32c536389 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -1471,7 +1471,7 @@ bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float
node_set_active(snode, node);
if(snode->nodetree->type==NTREE_COMPOSIT) {
- if(ELEM(node->type, CMP_NODE_R_LAYERS, CMP_NODE_COMPOSITE))
+ if(ELEM3(node->type, CMP_NODE_R_LAYERS, CMP_NODE_COMPOSITE, CMP_NODE_DEFOCUS))
node->id = &scene->id;
ntreeCompositForceHidden(snode->edittree, scene);
diff --git a/source/blender/editors/space_node/node_ops.c b/source/blender/editors/space_node/node_ops.c
index fae9afacbcd..534ca0aa99c 100644
--- a/source/blender/editors/space_node/node_ops.c
+++ b/source/blender/editors/space_node/node_ops.c
@@ -83,7 +83,7 @@ void ED_operatormacros_node(void)
ot= WM_operatortype_append_macro("NODE_OT_duplicate_move", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER);
WM_operatortype_macro_define(ot, "NODE_OT_duplicate");
- otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate");
+ otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
RNA_enum_set(otmacro->ptr, "proportional", 0);
}
@@ -98,7 +98,7 @@ void node_keymap(struct wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "NODE_OT_properties", NKEY, KM_PRESS, 0, 0);
/* Main Area only ----------------- */
- keymap= WM_keymap_find(keyconf, "Node", SPACE_NODE, 0);
+ keymap= WM_keymap_find(keyconf, "Node Editor", SPACE_NODE, 0);
/* mouse select in nodes used to be both keys, but perhaps this should be reduced?
* NOTE: mouse-clicks on left-mouse will fall through to allow transform-tweak, but also link/resize
diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c
index e5fb0b8dfcf..dcd07690f0e 100644
--- a/source/blender/editors/space_node/space_node.c
+++ b/source/blender/editors/space_node/space_node.c
@@ -182,6 +182,8 @@ static void node_area_listener(ScrArea *sa, wmNotifier *wmn)
case NC_MATERIAL:
if(wmn->data==ND_SHADING)
ED_area_tag_refresh(sa);
+ else if(wmn->data==ND_SHADING_DRAW)
+ ED_area_tag_refresh(sa);
break;
case NC_TEXTURE:
if(wmn->data==ND_NODES)
@@ -269,7 +271,7 @@ static void node_main_area_init(wmWindowManager *wm, ARegion *ar)
keymap= WM_keymap_find(wm->defaultconf, "Node Generic", SPACE_NODE, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
- keymap= WM_keymap_find(wm->defaultconf, "Node", SPACE_NODE, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "Node Editor", SPACE_NODE, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
}
@@ -312,6 +314,10 @@ static void node_region_listener(ARegion *ar, wmNotifier *wmn)
case NC_NODE:
ED_region_tag_redraw(ar);
break;
+ case NC_ID:
+ if(wmn->action == NA_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
}
}
@@ -345,6 +351,7 @@ void ED_spacetype_node(void)
ARegionType *art;
st->spaceid= SPACE_NODE;
+ strncpy(st->name, "Node", BKE_ST_MAXNAME);
st->new= node_new;
st->free= node_free;
@@ -370,7 +377,7 @@ void ED_spacetype_node(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype node region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->listener= node_region_listener;
art->init= node_header_area_init;
art->draw= node_header_area_draw;
diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c
index 39eecd7d2de..f3485328c52 100644
--- a/source/blender/editors/space_outliner/outliner.c
+++ b/source/blender/editors/space_outliner/outliner.c
@@ -79,7 +79,7 @@
#include "BKE_report.h"
#include "BKE_screen.h"
#include "BKE_scene.h"
-#include "BKE_sequence.h"
+#include "BKE_sequencer.h"
#include "BKE_utildefines.h"
#include "ED_armature.h"
@@ -4747,7 +4747,7 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname)
case ID_SCE:
WM_event_add_notifier(C, NC_SCENE, NULL); break;
default:
- WM_event_add_notifier(C, NC_MATERIAL, NULL); break;
+ WM_event_add_notifier(C, NC_ID|NA_RENAME, NULL); break;
}
/* Check the library target exists */
if (te->idcode == ID_LI) {
diff --git a/source/blender/editors/space_outliner/outliner_ops.c b/source/blender/editors/space_outliner/outliner_ops.c
index 431801d50f2..434c7942714 100644
--- a/source/blender/editors/space_outliner/outliner_ops.c
+++ b/source/blender/editors/space_outliner/outliner_ops.c
@@ -107,8 +107,8 @@ void outliner_keymap(wmKeyConfig *keyconf)
WM_keymap_verify_item(keymap, "OUTLINER_OT_keyingset_add_selected", KKEY, KM_PRESS, 0, 0);
WM_keymap_verify_item(keymap, "OUTLINER_OT_keyingset_remove_selected", KKEY, KM_PRESS, KM_ALT, 0);
- WM_keymap_verify_item(keymap, "ANIM_OT_insert_keyframe", IKEY, KM_PRESS, 0, 0);
- WM_keymap_verify_item(keymap, "ANIM_OT_delete_keyframe", IKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_delete", IKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_verify_item(keymap, "OUTLINER_OT_drivers_add_selected", DKEY, KM_PRESS, 0, 0);
WM_keymap_verify_item(keymap, "OUTLINER_OT_drivers_delete_selected", DKEY, KM_PRESS, KM_ALT, 0);
diff --git a/source/blender/editors/space_outliner/space_outliner.c b/source/blender/editors/space_outliner/space_outliner.c
index 5c6a8701f18..469fe148b97 100644
--- a/source/blender/editors/space_outliner/space_outliner.c
+++ b/source/blender/editors/space_outliner/space_outliner.c
@@ -133,6 +133,10 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn)
case ND_TRANSFORM:
ED_region_tag_redraw(ar);
break;
+ case ND_MODIFIER:
+ if(wmn->action == NA_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
}
case NC_GROUP:
/* all actions now, todo: check outliner view mode? */
@@ -147,6 +151,10 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn)
if(wmn->data == ND_SPACE_OUTLINER)
ED_region_tag_redraw(ar);
break;
+ case NC_ID:
+ if(wmn->action == NA_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
}
}
@@ -277,7 +285,7 @@ void ED_spacetype_outliner(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype time region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->init= outliner_header_area_init;
art->draw= outliner_header_area_draw;
diff --git a/source/blender/editors/space_script/space_script.c b/source/blender/editors/space_script/space_script.c
index fc2f10670df..b882a3313cd 100644
--- a/source/blender/editors/space_script/space_script.c
+++ b/source/blender/editors/space_script/space_script.c
@@ -197,6 +197,7 @@ void ED_spacetype_script(void)
ARegionType *art;
st->spaceid= SPACE_SCRIPT;
+ strncpy(st->name, "Script", BKE_ST_MAXNAME);
st->new= script_new;
st->free= script_free;
@@ -219,7 +220,7 @@ void ED_spacetype_script(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype script region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER;
art->init= script_header_area_init;
art->draw= script_header_area_draw;
diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c
index cfce8aeb8ed..354b4712ce4 100644
--- a/source/blender/editors/space_sequencer/sequencer_add.c
+++ b/source/blender/editors/space_sequencer/sequencer_add.c
@@ -60,7 +60,7 @@
#include "BKE_library.h"
#include "BKE_main.h"
#include "BKE_plugin_types.h"
-#include "BKE_sequence.h"
+#include "BKE_sequencer.h"
#include "BKE_scene.h"
#include "BKE_utildefines.h"
#include "BKE_report.h"
@@ -73,6 +73,7 @@
#include "RNA_access.h"
#include "RNA_define.h"
+#include "RNA_enum_types.h"
/* for menu/popup icons etc etc*/
#include "UI_interface.h"
@@ -150,7 +151,7 @@ static void seq_load_operator_info(SeqLoadInfo *seq_load, wmOperator *op)
seq_load->channel= RNA_int_get(op->ptr, "channel");
seq_load->len= 1; // images only!
- RNA_string_get(op->ptr, "name", seq_load->name);
+ RNA_string_get(op->ptr, "name", seq_load->name+2);
RNA_string_get(op->ptr, "path", seq_load->path); /* full path, file is set by the caller */
@@ -174,8 +175,7 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op)
Editing *ed= seq_give_editing(scene, TRUE);
Scene *sce_seq;
- char sce_name[MAX_ID_NAME-2];
-
+
Sequence *seq; /* generic strip vars */
Strip *strip;
StripElem *se;
@@ -185,12 +185,10 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op)
start_frame= RNA_int_get(op->ptr, "start_frame");
channel= RNA_int_get(op->ptr, "channel");
- RNA_string_get(op->ptr, "scene", sce_name);
-
- sce_seq= (Scene *)find_id("SC", sce_name);
+ sce_seq= BLI_findlink(&CTX_data_main(C)->scene, RNA_enum_get(op->ptr, "type"));
if (sce_seq==NULL) {
- BKE_reportf(op->reports, RPT_ERROR, "Scene \"%s\" not found", sce_name);
+ BKE_report(op->reports, RPT_ERROR, "Scene not found");
return OPERATOR_CANCELLED;
}
@@ -206,8 +204,10 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op)
strip->stripdata= se= MEM_callocN(seq->len*sizeof(StripElem), "stripelem");
-
- RNA_string_get(op->ptr, "name", seq->name);
+ if(RNA_property_is_set(op->ptr, "name"))
+ RNA_string_get(op->ptr, "name", seq->name+2);
+ else
+ strcpy(seq->name+2, sce_seq->id.name+2);
calc_sequence_disp(seq);
sort_seq(scene);
@@ -218,7 +218,7 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op)
seq->flag |= SELECT;
}
- ED_area_tag_redraw(CTX_wm_area(C));
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
return OPERATOR_FINISHED;
}
@@ -227,16 +227,15 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op)
static int sequencer_add_scene_strip_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
sequencer_generic_invoke_xy__internal(C, op, event, 0);
-
- /* scene can be left default */
- RNA_string_set(op->ptr, "scene", "Scene"); // XXX should popup a menu but ton says 2.5 will have some better feature for this
-
return sequencer_add_scene_strip_exec(C, op);
+ // needs a menu
+ // return WM_menu_invoke(C, op, event);
}
void SEQUENCER_OT_scene_strip_add(struct wmOperatorType *ot)
{
+ PropertyRNA *prop;
/* identifiers */
ot->name= "Add Scene Strip";
@@ -253,7 +252,8 @@ void SEQUENCER_OT_scene_strip_add(struct wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME);
- RNA_def_string(ot->srna, "scene", "", MAX_ID_NAME-2, "Scene Name", "Scene name to add as a strip");
+ prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, 0, "Type", "");
+ RNA_def_enum_funcs(prop, RNA_scene_itemf);
}
static int sequencer_add_generic_strip_exec(bContext *C, wmOperator *op, SeqLoadFunc seq_load_func)
@@ -297,8 +297,9 @@ static int sequencer_add_generic_strip_exec(bContext *C, wmOperator *op, SeqLoad
}
sort_seq(scene);
+ seq_update_muting(ed);
- ED_area_tag_redraw(CTX_wm_area(C));
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
return OPERATOR_FINISHED;
}
@@ -425,7 +426,7 @@ static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op)
/* last active name */
strncpy(ed->act_imagedir, strip->dir, FILE_MAXDIR-1);
- ED_area_tag_redraw(CTX_wm_area(C));
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
return OPERATOR_FINISHED;
}
@@ -498,6 +499,11 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op)
seq = alloc_sequence(ed->seqbasep, start_frame, channel);
seq->type= type;
+ if(RNA_property_is_set(op->ptr, "name"))
+ RNA_string_get(op->ptr, "name", seq->name+2);
+ else
+ strcpy(seq->name+2, give_seqname(seq));
+
seqUniqueName(ed->seqbasep, seq);
sh = get_sequence_effect(seq);
@@ -513,6 +519,8 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op)
seq_tx_set_final_right(seq, end_frame);
}
+ seq->flag |= SEQ_USE_EFFECT_DEFAULT_FADE;
+
calc_sequence(seq);
/* basic defaults */
@@ -540,7 +548,7 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op)
RNA_float_get_array(op->ptr, "color", colvars->col);
}
- if(seq_test_overlap(ed->seqbasep, seq)) shuffle_seq(ed->seqbasep, seq);
+ if(seq_test_overlap(ed->seqbasep, seq)) shuffle_seq(ed->seqbasep, seq, scene);
update_changed_seq_and_deps(scene, seq, 1, 1); /* runs calc_sequence */
@@ -555,7 +563,8 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op)
seq->flag |= SELECT;
}
- ED_area_tag_redraw(CTX_wm_area(C));
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
+
return OPERATOR_FINISHED;
}
diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c
index c16e328d8dd..a2525430a10 100644
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@ -46,7 +46,7 @@
#include "BKE_context.h"
#include "BKE_global.h"
#include "BKE_plugin_types.h"
-#include "BKE_sequence.h"
+#include "BKE_sequencer.h"
#include "BKE_scene.h"
#include "BKE_utildefines.h"
@@ -57,6 +57,7 @@
#include "BIF_glutil.h"
#include "ED_anim_api.h"
+#include "ED_markers.h"
#include "ED_space_api.h"
#include "ED_sequencer.h"
#include "ED_types.h"
@@ -524,7 +525,7 @@ static void draw_seq_strip(Scene *scene, ARegion *ar, SpaceSeq *sseq, Sequence *
char col[3], background_col[3], is_single_image;
/* we need to know if this is a single image/color or not for drawing */
- is_single_image = (char)check_single_seq(seq);
+ is_single_image = (char)seq_single_check(seq);
/* body */
if(seq->startstill) x1= seq->start;
@@ -610,8 +611,8 @@ void set_special_seq_update(int val)
else special_seq_update= 0;
}
-
-static void draw_image_seq(Scene *scene, ARegion *ar, SpaceSeq *sseq)
+// XXX todo: remove special offset code for image-buf calculations...
+void draw_image_seq(Scene *scene, ARegion *ar, SpaceSeq *sseq)
{
extern void gl_round_box(int mode, float minx, float miny, float maxx, float maxy, float rad);
struct ImBuf *ibuf;
@@ -767,6 +768,7 @@ static void draw_image_seq(Scene *scene, ARegion *ar, SpaceSeq *sseq)
}
+// XXX part of wacko image-drawing system...
void seq_reset_imageofs(SpaceSeq *sseq)
{
sseq->xof = sseq->yof = sseq->zoom = 0;
@@ -862,114 +864,139 @@ void drawprefetchseqspace(Scene *scene, ARegion *ar, SpaceSeq *sseq)
}
}
-void drawseqspace(const bContext *C, ARegion *ar)
+/* draw backdrop of the sequencer strips view */
+static void draw_seq_backdrop(View2D *v2d)
{
- ScrArea *sa= CTX_wm_area(C);
- SpaceSeq *sseq= sa->spacedata.first;
- Scene *scene= CTX_data_scene(C);
- View2D *v2d= &ar->v2d;
- View2DScrollers *scrollers;
- Editing *ed= seq_give_editing(scene, FALSE);
- Sequence *seq;
- float col[3];
- int i, flag=0;
-
- if(sseq->mainb != SEQ_DRAW_SEQUENCE) {
- draw_image_seq(scene, ar, sseq);
- return;
- }
-
- UI_GetThemeColor3fv(TH_BACK, col);
- if(ed && ed->metastack.first) glClearColor(col[0], col[1], col[2]-0.1, 0.0);
- else glClearColor(col[0], col[1], col[2], 0.0);
-
- glClear(GL_COLOR_BUFFER_BIT);
-
- UI_view2d_view_ortho(C, v2d);
+ int i;
+ /* darker grey overlay over the view backdrop */
UI_ThemeColorShade(TH_BACK, -20);
- glRectf(v2d->cur.xmin, 0.0, v2d->cur.xmax, 1.0);
+ glRectf(v2d->cur.xmin, -1.0, v2d->cur.xmax, 1.0);
- boundbox_seq(scene, &v2d->tot);
-
/* Alternating horizontal stripes */
i= MAX2(1, ((int)v2d->cur.ymin)-1);
glBegin(GL_QUADS);
- while (i<v2d->cur.ymax) {
- if (((int)i) & 1)
- UI_ThemeColorShade(TH_BACK, -15);
- else
- UI_ThemeColorShade(TH_BACK, -25);
-
- glVertex2f(v2d->cur.xmax, i);
- glVertex2f(v2d->cur.xmin, i);
- glVertex2f(v2d->cur.xmin, i+1);
- glVertex2f(v2d->cur.xmax, i+1);
- i+=1.0;
- }
+ while (i<v2d->cur.ymax) {
+ if (((int)i) & 1)
+ UI_ThemeColorShade(TH_BACK, -15);
+ else
+ UI_ThemeColorShade(TH_BACK, -25);
+
+ glVertex2f(v2d->cur.xmax, i);
+ glVertex2f(v2d->cur.xmin, i);
+ glVertex2f(v2d->cur.xmin, i+1);
+ glVertex2f(v2d->cur.xmax, i+1);
+
+ i+=1.0;
+ }
glEnd();
- /* Force grid lines */
+ /* Darker lines separating the horizontal bands */
i= MAX2(1, ((int)v2d->cur.ymin)-1);
+ UI_ThemeColor(TH_GRID);
+
glBegin(GL_LINES);
-
- while (i<v2d->cur.ymax) {
- UI_ThemeColor(TH_GRID);
- glVertex2f(v2d->cur.xmax, i);
- glVertex2f(v2d->cur.xmin, i);
- i+=1.0;
- }
+ while (i < v2d->cur.ymax) {
+ glVertex2f(v2d->cur.xmax, i);
+ glVertex2f(v2d->cur.xmin, i);
+
+ i+=1.0;
+ }
glEnd();
-
- UI_view2d_constant_grid_draw(C, v2d);
+}
- /* sequences: first deselect */
- if(ed) {
- Sequence *last_seq = active_seq_get(scene);
- int sel = 0, j;
- int outline_tint;
- float pixelx = (v2d->cur.xmax - v2d->cur.xmin)/(v2d->mask.xmax - v2d->mask.xmin);
- /* loop through twice, first unselected, then selected */
- for (j=0; j<2; j++) {
- seq= ed->seqbasep->first;
- if (j==0) outline_tint = -150;
- else outline_tint = -60;
+/* draw the contents of the sequencer strips view */
+static void draw_seq_strips(const bContext *C, Editing *ed, ARegion *ar)
+{
+ Scene *scene= CTX_data_scene(C);
+ SpaceSeq *sseq= CTX_wm_space_seq(C);
+ View2D *v2d= &ar->v2d;
+ Sequence *last_seq = active_seq_get(scene);
+ int sel = 0, j;
+ float pixelx = (v2d->cur.xmax - v2d->cur.xmin)/(v2d->mask.xmax - v2d->mask.xmin);
+
+ /* loop through twice, first unselected, then selected */
+ for (j=0; j<2; j++) {
+ Sequence *seq;
+ int outline_tint= (j) ? -60 : -150; /* highlighting around strip edges indicating selection */
+
+ /* loop through strips, checking for those that are visible */
+ for (seq= ed->seqbasep->first; seq; seq= seq->next) {
+ /* boundbox and selection tests for NOT drawing the strip... */
+ if ((seq->flag & SELECT) == sel) continue;
+ else if (seq == last_seq) continue;
+ else if (MIN2(seq->startdisp, seq->start) > v2d->cur.xmax) continue;
+ else if (MAX2(seq->enddisp, seq->start+seq->len) < v2d->cur.xmin) continue;
+ else if (seq->machine+1.0 < v2d->cur.ymin) continue;
+ else if (seq->machine > v2d->cur.ymax) continue;
- while(seq) { /* bound box test, dont draw outside the view */
- if ( ((seq->flag & SELECT) == sel) ||
- seq == last_seq ||
- MIN2(seq->startdisp, seq->start) > v2d->cur.xmax ||
- MAX2(seq->enddisp, seq->start+seq->len) < v2d->cur.xmin ||
- seq->machine+1.0 < v2d->cur.ymin ||
- seq->machine > v2d->cur.ymax)
- {
- /* dont draw */
- } else {
- draw_seq_strip(scene, ar, sseq, seq, outline_tint, pixelx);
- }
- seq= seq->next;
- }
- sel= SELECT; /* draw selected next time round */
- }
- /* draw the last selected last, removes some overlapping error */
- if (last_seq) {
- draw_seq_strip(scene, ar, sseq, last_seq, 120, pixelx);
+ /* strip passed all tests unscathed... so draw it now */
+ draw_seq_strip(scene, ar, sseq, seq, outline_tint, pixelx);
}
+
+ /* draw selected next time round */
+ sel= SELECT;
}
+
+ /* draw the last selected last (i.e. 'active' in other parts of Blender), removes some overlapping error */
+ if (last_seq)
+ draw_seq_strip(scene, ar, sseq, last_seq, 120, pixelx);
+}
- /* text draw cached, in pixelspace now */
- UI_view2d_text_cache_draw(ar);
+/* Draw Timeline/Strip Editor Mode for Sequencer */
+void draw_timeline_seq(const bContext *C, ARegion *ar)
+{
+ Scene *scene= CTX_data_scene(C);
+ Editing *ed= seq_give_editing(scene, FALSE);
+ SpaceSeq *sseq= CTX_wm_space_seq(C);
+ View2D *v2d= &ar->v2d;
+ View2DScrollers *scrollers;
+ float col[3];
+ int flag=0;
- /* current frame */
+ /* clear and setup matrix */
+ UI_GetThemeColor3fv(TH_BACK, col);
+ if (ed && ed->metastack.first)
+ glClearColor(col[0], col[1], col[2]-0.1, 0.0);
+ else
+ glClearColor(col[0], col[1], col[2], 0.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+
UI_view2d_view_ortho(C, v2d);
+
+ /* calculate extents of sequencer strips/data
+ * NOTE: needed for the scrollers later
+ */
+ boundbox_seq(scene, &v2d->tot);
+
+
+ /* draw backdrop */
+ draw_seq_backdrop(v2d);
+
+ /* regular grid-pattern over the rest of the view (i.e. frame grid lines) */
+ UI_view2d_constant_grid_draw(C, v2d);
+
+
+ /* sequence strips (if there is data available to be drawn) */
+ if (ed) {
+ /* draw the data */
+ draw_seq_strips(C, ed, ar);
+
+ /* text draw cached (for sequence names), in pixelspace now */
+ UI_view2d_text_cache_draw(ar);
+ }
+
+ /* current frame */
+ UI_view2d_view_ortho(C, v2d);
if ((sseq->flag & SEQ_DRAWFRAMES)==0) flag |= DRAWCFRA_UNIT_SECONDS;
if ((sseq->flag & SEQ_NO_DRAW_CFRANUM)==0) flag |= DRAWCFRA_SHOW_NUMBOX;
ANIM_draw_cfra(C, v2d, flag);
- /* Draw markers */
-// draw_markers_timespace(SCE_MARKERS, DRAW_MARKERS_LINES);
+ /* markers */
+ UI_view2d_view_orthoSpecial(C, v2d, 1);
+ draw_markers_time(C, DRAW_MARKERS_LINES);
/* preview range */
UI_view2d_view_ortho(C, v2d);
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index 5dd453b9e30..f174e96120c 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -61,7 +61,7 @@
#include "BKE_library.h"
#include "BKE_main.h"
#include "BKE_plugin_types.h"
-#include "BKE_sequence.h"
+#include "BKE_sequencer.h"
#include "BKE_scene.h"
#include "BKE_utildefines.h"
#include "BKE_report.h"
@@ -83,6 +83,7 @@
#include "ED_screen.h"
#include "ED_transform.h"
#include "ED_util.h"
+#include "ED_sequencer.h"
#include "UI_interface.h"
#include "UI_resources.h"
@@ -124,13 +125,19 @@ EnumPropertyItem sequencer_prop_effect_types[] = {
/* mute operator */
- EnumPropertyItem prop_side_types[] = {
+EnumPropertyItem prop_side_types[] = {
{SEQ_SIDE_LEFT, "LEFT", 0, "Left", ""},
{SEQ_SIDE_RIGHT, "RIGHT", 0, "Right", ""},
{SEQ_SIDE_BOTH, "BOTH", 0, "Both", ""},
{0, NULL, 0, NULL, NULL}
};
+EnumPropertyItem prop_side_lr_types[] = {
+ {SEQ_SIDE_LEFT, "LEFT", 0, "Left", ""},
+ {SEQ_SIDE_RIGHT, "RIGHT", 0, "Right", ""},
+ {0, NULL, 0, NULL, NULL}
+};
+
typedef struct TransSeq {
int start, machine;
int startstill, endstill;
@@ -188,7 +195,7 @@ static void change_plugin_seq(Scene *scene, char *str) /* called from fileselect
last_seq->seq2->machine,
last_seq->seq3->machine);
- if( seq_test_overlap(ed->seqbasep, last_seq) ) shuffle_seq(ed->seqbasep, last_seq);
+ if( seq_test_overlap(ed->seqbasep, last_seq) ) shuffle_seq(ed->seqbasep, last_seq, scene);
}
@@ -925,7 +932,9 @@ static Sequence *dupli_seq(struct Scene *scene, Sequence *seq)
"handled in duplicate!\nExpect a crash"
" now...\n");
}
-
+
+ seqUniqueName(scene->ed->seqbasep, seqn);
+
return seqn;
}
@@ -945,7 +954,7 @@ static Sequence * deep_dupli_seq(struct Scene *scene, Sequence * seq)
}
-static void recurs_dupli_seq(Scene *scene, ListBase *old, ListBase *new)
+static void recurs_dupli_seq(Scene *scene, ListBase *old, ListBase *new, int do_context)
{
Sequence *seq;
Sequence *seqn = 0;
@@ -956,15 +965,19 @@ static void recurs_dupli_seq(Scene *scene, ListBase *old, ListBase *new)
if(seq->flag & SELECT) {
seqn = dupli_seq(scene, seq);
if (seqn) { /*should never fail */
- seq->flag &= SEQ_DESEL;
- seqn->flag &= ~(SEQ_LEFTSEL+SEQ_RIGHTSEL+SEQ_LOCK);
+ if(do_context) {
+ seq->flag &= SEQ_DESEL;
+ seqn->flag &= ~(SEQ_LEFTSEL+SEQ_RIGHTSEL+SEQ_LOCK);
+ }
BLI_addtail(new, seqn);
if(seq->type==SEQ_META)
- recurs_dupli_seq(scene, &seq->seqbase,&seqn->seqbase);
+ recurs_dupli_seq(scene, &seq->seqbase,&seqn->seqbase, do_context);
- if (seq == last_seq) {
- active_seq_set(scene, seqn);
+ if(do_context) {
+ if (seq == last_seq) {
+ active_seq_set(scene, seqn);
+ }
}
}
}
@@ -1382,7 +1395,7 @@ static int sequencer_snap_exec(bContext *C, wmOperator *op)
if(seq->flag & SELECT && !(seq->depth==0 && seq->flag & SEQ_LOCK)) {
seq->flag &= ~SEQ_OVERLAP;
if( seq_test_overlap(ed->seqbasep, seq) ) {
- shuffle_seq(ed->seqbasep, seq);
+ shuffle_seq(ed->seqbasep, seq, scene);
}
}
else if(seq->type & SEQ_EFFECT) {
@@ -1399,7 +1412,7 @@ static int sequencer_snap_exec(bContext *C, wmOperator *op)
/* as last: */
sort_seq(scene);
- ED_area_tag_redraw(CTX_wm_area(C));
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
return OPERATOR_FINISHED;
}
@@ -1451,21 +1464,18 @@ static int sequencer_mute_exec(bContext *C, wmOperator *op)
for(seq= ed->seqbasep->first; seq; seq= seq->next) {
if ((seq->flag & SEQ_LOCK)==0) {
if(selected){ /* mute unselected */
- if (seq->flag & SELECT) {
+ if(seq->flag & SELECT)
seq->flag |= SEQ_MUTE;
- seq_update_sound(seq);
- }
}
else {
- if ((seq->flag & SELECT)==0) {
+ if((seq->flag & SELECT)==0)
seq->flag |= SEQ_MUTE;
- seq_update_sound(seq);
- }
}
}
}
- ED_area_tag_redraw(CTX_wm_area(C));
+ seq_update_muting(ed);
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
return OPERATOR_FINISHED;
}
@@ -1505,21 +1515,18 @@ static int sequencer_unmute_exec(bContext *C, wmOperator *op)
for(seq= ed->seqbasep->first; seq; seq= seq->next) {
if ((seq->flag & SEQ_LOCK)==0) {
if(selected){ /* unmute unselected */
- if (seq->flag & SELECT) {
+ if(seq->flag & SELECT)
seq->flag &= ~SEQ_MUTE;
- seq_update_sound(seq);
- }
}
else {
- if ((seq->flag & SELECT)==0) {
+ if((seq->flag & SELECT)==0)
seq->flag &= ~SEQ_MUTE;
- seq_update_sound(seq);
- }
}
}
}
- ED_area_tag_redraw(CTX_wm_area(C));
+ seq_update_muting(ed);
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
return OPERATOR_FINISHED;
}
@@ -1559,7 +1566,7 @@ static int sequencer_lock_exec(bContext *C, wmOperator *op)
}
}
- ED_area_tag_redraw(CTX_wm_area(C));
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
return OPERATOR_FINISHED;
}
@@ -1596,7 +1603,7 @@ static int sequencer_unlock_exec(bContext *C, wmOperator *op)
}
}
- ED_area_tag_redraw(CTX_wm_area(C));
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
return OPERATOR_FINISHED;
}
@@ -1633,7 +1640,7 @@ static int sequencer_reload_exec(bContext *C, wmOperator *op)
}
}
- ED_area_tag_redraw(CTX_wm_area(C));
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
return OPERATOR_FINISHED;
}
@@ -1665,7 +1672,9 @@ static int sequencer_refresh_all_exec(bContext *C, wmOperator *op)
free_imbuf_seq(scene, &ed->seqbase, FALSE);
- ED_area_tag_redraw(CTX_wm_area(C));
+ seqbase_sound_reload(scene, &ed->seqbase);
+
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
return OPERATOR_FINISHED;
}
@@ -1741,9 +1750,7 @@ static int sequencer_cut_exec(bContext *C, wmOperator *op)
sort_seq(scene);
}
- if (changed) {
- ED_area_tag_redraw(CTX_wm_area(C));
- }
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
return OPERATOR_FINISHED;
}
@@ -1800,10 +1807,10 @@ static int sequencer_add_duplicate_exec(bContext *C, wmOperator *op)
if(ed==NULL)
return OPERATOR_CANCELLED;
- recurs_dupli_seq(scene, ed->seqbasep, &new);
+ recurs_dupli_seq(scene, ed->seqbasep, &new, TRUE);
addlisttolist(ed->seqbasep, &new);
- ED_area_tag_redraw(CTX_wm_area(C));
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
return OPERATOR_FINISHED;
}
@@ -1813,7 +1820,7 @@ static int sequencer_add_duplicate_invoke(bContext *C, wmOperator *op, wmEvent *
sequencer_add_duplicate_exec(C, op);
RNA_int_set(op->ptr, "mode", TFM_TRANSLATION);
- WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
+ WM_operator_name_call(C, "TRANSFORM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
return OPERATOR_FINISHED;
}
@@ -1894,8 +1901,7 @@ static int sequencer_delete_exec(bContext *C, wmOperator *op)
ms= ms->prev;
}
- //ED_area_tag_redraw(CTX_wm_area(C));
- WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, NULL); /* redraw other sequencer views */
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
return OPERATOR_FINISHED;
}
@@ -1969,9 +1975,11 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op)
calc_sequence(seq_new);
seq_new->flag &= ~SEQ_OVERLAP;
if (seq_test_overlap(ed->seqbasep, seq_new)) {
- shuffle_seq(ed->seqbasep, seq_new);
+ shuffle_seq(ed->seqbasep, seq_new, scene);
}
+ seqUniqueName(scene->ed->seqbasep, seq_new);
+
cfra++;
start_ofs += step;
}
@@ -1986,7 +1994,7 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op)
/* as last: */
sort_seq(scene);
- ED_area_tag_redraw(CTX_wm_area(C));
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
return OPERATOR_FINISHED;
}
@@ -2063,7 +2071,9 @@ static int sequencer_meta_toggle_exec(bContext *C, wmOperator *op)
}
- ED_area_tag_redraw(CTX_wm_area(C));
+ seq_update_muting(ed);
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
+
return OPERATOR_FINISHED;
}
@@ -2092,56 +2102,20 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op)
Sequence *seq, *seqm, *next;
- int tot;
+ int channel_max= 1;
if(ed==NULL)
return OPERATOR_CANCELLED;
- /* is there more than 1 select */
- tot= 0;
- seq= ed->seqbasep->first;
- while(seq) {
- if(seq->flag & SELECT) {
- tot++;
- }
- seq= seq->next;
- }
- if(tot < 1) return OPERATOR_CANCELLED;;
-
-
- /* test relationships */
- seq= ed->seqbasep->first;
- while(seq) {
- if(seq->flag & SELECT) {
- if(seq->type & SEQ_EFFECT) {
- if(seq->seq1 &&
- (seq->seq1->flag & SELECT)==0) tot= 0;
- if(seq->seq2 &&
- (seq->seq2->flag & SELECT)==0) tot= 0;
- if(seq->seq3 &&
- (seq->seq3->flag & SELECT)==0) tot= 0;
- }
- }
- else if(seq->type & SEQ_EFFECT) {
- if(seq->seq1 &&
- (seq->seq1->flag & SELECT)) tot= 0;
- if(seq->seq2 &&
- (seq->seq2->flag & SELECT)) tot= 0;
- if(seq->seq3 &&
- (seq->seq3->flag & SELECT)) tot= 0;
- }
- if(tot==0) break;
- seq= seq->next;
- }
-
- if(tot==0) {
+ if(seqbase_isolated_sel_check(ed->seqbasep)==FALSE) {
BKE_report(op->reports, RPT_ERROR, "Please select all related strips");
return OPERATOR_CANCELLED;
}
/* remove all selected from main list, and put in meta */
- seqm= alloc_sequence(ed->seqbasep, 1, 1);
+ seqm= alloc_sequence(ed->seqbasep, 1, 1); /* channel number set later */
+ strcpy(seqm->name+2, "MetaStrip");
seqm->type= SEQ_META;
seqm->flag= SELECT;
@@ -2149,11 +2123,13 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op)
while(seq) {
next= seq->next;
if(seq!=seqm && (seq->flag & SELECT)) {
+ channel_max= MAX2(seq->machine, channel_max);
BLI_remlink(ed->seqbasep, seq);
BLI_addtail(&seqm->seqbase, seq);
}
seq= next;
}
+ seqm->machine= channel_max;
calc_sequence(seqm);
seqm->strip= MEM_callocN(sizeof(Strip), "metastrip");
@@ -2162,9 +2138,14 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op)
active_seq_set(scene, seqm);
- if( seq_test_overlap(ed->seqbasep, seqm) ) shuffle_seq(ed->seqbasep, seqm);
+ if( seq_test_overlap(ed->seqbasep, seqm) ) shuffle_seq(ed->seqbasep, seqm, scene);
+
+ seq_update_muting(ed);
+
+ seqUniqueName(scene->ed->seqbasep, seqm);
+
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
- ED_area_tag_redraw(CTX_wm_area(C));
return OPERATOR_FINISHED;
}
@@ -2226,15 +2207,17 @@ static int sequencer_meta_separate_exec(bContext *C, wmOperator *op)
if(seq->flag & SELECT) {
seq->flag &= ~SEQ_OVERLAP;
if( seq_test_overlap(ed->seqbasep, seq) ) {
- shuffle_seq(ed->seqbasep, seq);
+ shuffle_seq(ed->seqbasep, seq, scene);
}
}
}
SEQ_END;
sort_seq(scene);
+ seq_update_muting(ed);
+
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
- ED_area_tag_redraw(CTX_wm_area(C));
return OPERATOR_FINISHED;
}
@@ -2258,62 +2241,89 @@ void SEQUENCER_OT_meta_separate(wmOperatorType *ot)
/* view_all operator */
static int sequencer_view_all_exec(bContext *C, wmOperator *op)
{
- Scene *scene= CTX_data_scene(C);
+ //Scene *scene= CTX_data_scene(C);
bScreen *sc= CTX_wm_screen(C);
ScrArea *area= CTX_wm_area(C);
+ //ARegion *ar= CTX_wm_region(C);
+ View2D *v2d= UI_view2d_fromcontext(C);
+
+ v2d->cur= v2d->tot;
+ UI_view2d_curRect_validate(v2d);
+ UI_view2d_sync(sc, area, v2d, V2D_LOCK_COPY);
+
+ ED_area_tag_redraw(CTX_wm_area(C));
+ return OPERATOR_FINISHED;
+}
+
+void SEQUENCER_OT_view_all(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "View All";
+ ot->idname= "SEQUENCER_OT_view_all";
+ ot->description="View all the strips in the sequencer.";
+
+ /* api callbacks */
+ ot->exec= sequencer_view_all_exec;
+
+ ot->poll= ED_operator_sequencer_active;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+}
+
+/* view_all operator */
+static int sequencer_view_all_preview_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ //bScreen *sc= CTX_wm_screen(C);
+ ScrArea *area= CTX_wm_area(C);
ARegion *ar= CTX_wm_region(C);
SpaceSeq *sseq= area->spacedata.first;
- View2D *v2d= UI_view2d_fromcontext(C);
+ //View2D *v2d= UI_view2d_fromcontext(C);
- if (sseq->mainb==SEQ_DRAW_SEQUENCE) {
- v2d->cur= v2d->tot;
- UI_view2d_curRect_validate(v2d);
- UI_view2d_sync(sc, area, v2d, V2D_LOCK_COPY);
- } else {
- /* Like zooming on an image view */
- float zoomX, zoomY;
- int width, height, imgwidth, imgheight;
- width = ar->winx;
- height = ar->winy;
+ /* Like zooming on an image view */
+ float zoomX, zoomY;
+ int width, height, imgwidth, imgheight;
- seq_reset_imageofs(sseq);
+ width = ar->winx;
+ height = ar->winy;
- imgwidth= (scene->r.size*scene->r.xsch)/100;
- imgheight= (scene->r.size*scene->r.ysch)/100;
+ seq_reset_imageofs(sseq);
- /* Apply aspect, dosnt need to be that accurate */
- imgwidth= (int)(imgwidth * ((float)scene->r.xasp / (float)scene->r.yasp));
+ imgwidth= (scene->r.size*scene->r.xsch)/100;
+ imgheight= (scene->r.size*scene->r.ysch)/100;
- if (((imgwidth >= width) || (imgheight >= height)) &&
- ((width > 0) && (height > 0))) {
+ /* Apply aspect, dosnt need to be that accurate */
+ imgwidth= (int)(imgwidth * ((float)scene->r.xasp / (float)scene->r.yasp));
- /* Find the zoom value that will fit the image in the image space */
- zoomX = ((float)width) / ((float)imgwidth);
- zoomY = ((float)height) / ((float)imgheight);
- sseq->zoom= (zoomX < zoomY) ? zoomX : zoomY;
+ if (((imgwidth >= width) || (imgheight >= height)) &&
+ ((width > 0) && (height > 0))) {
- sseq->zoom = 1.0f / power_of_2(1/ MIN2(zoomX, zoomY) );
- }
- else {
- sseq->zoom= 1.0f;
- }
- }
+ /* Find the zoom value that will fit the image in the image space */
+ zoomX = ((float)width) / ((float)imgwidth);
+ zoomY = ((float)height) / ((float)imgheight);
+ sseq->zoom= (zoomX < zoomY) ? zoomX : zoomY;
+ sseq->zoom = 1.0f / power_of_2(1/ MIN2(zoomX, zoomY) );
+ }
+ else {
+ sseq->zoom= 1.0f;
+ }
ED_area_tag_redraw(CTX_wm_area(C));
return OPERATOR_FINISHED;
}
-void SEQUENCER_OT_view_all(wmOperatorType *ot)
+void SEQUENCER_OT_view_all_preview(wmOperatorType *ot)
{
/* identifiers */
ot->name= "View All";
- ot->idname= "SEQUENCER_OT_view_all";
- ot->description="View all the strips in the sequencer.";
+ ot->idname= "SEQUENCER_OT_view_all_preview";
+ ot->description="Zoom preview to fit in the area.";
/* api callbacks */
- ot->exec= sequencer_view_all_exec;
+ ot->exec= sequencer_view_all_preview_exec;
ot->poll= ED_operator_sequencer_active;
@@ -2321,8 +2331,42 @@ void SEQUENCER_OT_view_all(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER;
}
+static EnumPropertyItem view_type_items[] = {
+ {SEQ_VIEW_SEQUENCE, "SEQUENCER", ICON_SEQ_SEQUENCER, "Sequencer", ""},
+ {SEQ_VIEW_PREVIEW, "PREVIEW", ICON_SEQ_PREVIEW, "Image Preview", ""},
+ {SEQ_VIEW_SEQUENCE_PREVIEW, "SEQUENCER_PREVIEW", ICON_SEQ_SEQUENCER, "Sequencer and Image Preview", ""},
+ {0, NULL, 0, NULL, NULL}};
/* view_all operator */
+static int sequencer_view_toggle_exec(bContext *C, wmOperator *op)
+{
+ SpaceSeq *sseq= (SpaceSeq *)CTX_wm_space_data(C);
+
+ sseq->view++;
+ if (sseq->view > SEQ_VIEW_SEQUENCE_PREVIEW) sseq->view = SEQ_VIEW_SEQUENCE;
+
+ ED_sequencer_update_view(C, sseq->view);
+
+ return OPERATOR_FINISHED;
+}
+
+void SEQUENCER_OT_view_toggle(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "View Toggle";
+ ot->idname= "SEQUENCER_OT_view_toggle";
+ ot->description="Toggle between sequencer views (sequence, preview, both).";
+
+ /* api callbacks */
+ ot->exec= sequencer_view_toggle_exec;
+ ot->poll= ED_operator_sequencer_active;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+}
+
+
+/* view_selected operator */
static int sequencer_view_selected_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
@@ -2459,16 +2503,16 @@ static int next_prev_edit_internal(Scene *scene, int side)
return change;
}
-/* select less operator */
+/* move frame to next edit point operator */
static int sequencer_next_edit_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
- if (next_prev_edit_internal(scene, SEQ_SIDE_RIGHT)) {
- ED_area_tag_redraw(CTX_wm_area(C));
- WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
- }
-
+ if(!next_prev_edit_internal(scene, SEQ_SIDE_RIGHT))
+ return OPERATOR_CANCELLED;
+
+ WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
+
return OPERATOR_FINISHED;
}
@@ -2494,9 +2538,10 @@ static int sequencer_previous_edit_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
- if (next_prev_edit_internal(scene, SEQ_SIDE_LEFT)) {
- ED_area_tag_redraw(CTX_wm_area(C));
- }
+ if(!next_prev_edit_internal(scene, SEQ_SIDE_LEFT))
+ return OPERATOR_CANCELLED;
+
+ WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
return OPERATOR_FINISHED;
}
@@ -2545,12 +2590,13 @@ static Sequence* sequence_find_parent(Scene* scene, Sequence* child)
}
-static int sequencer_swap_internal_exec(bContext *C, int side)
+static int sequencer_swap_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
Editing *ed= seq_give_editing(scene, FALSE);
Sequence *active_seq = active_seq_get(scene);
- Sequence *seq;
+ Sequence *seq, *iseq;
+ int side= RNA_enum_get(op->ptr, "side");
if(ed==NULL) return OPERATOR_CANCELLED;
if(active_seq==NULL) return OPERATOR_CANCELLED;
@@ -2565,11 +2611,6 @@ static int sequencer_swap_internal_exec(bContext *C, int side)
if ((active_seq->type!=SEQ_COLOR) && (active_seq->effectdata || active_seq->seq1 || active_seq->seq2 || active_seq->seq3))
return OPERATOR_CANCELLED;
- /* disallow if parent strip (effect strip) is attached */
- if ( sequence_find_parent(scene, active_seq)) {
- return OPERATOR_CANCELLED;
- }
-
switch (side) {
case SEQ_SIDE_LEFT:
swap_sequence(seq, active_seq);
@@ -2578,54 +2619,52 @@ static int sequencer_swap_internal_exec(bContext *C, int side)
swap_sequence(active_seq, seq);
break;
}
- ED_area_tag_redraw(CTX_wm_area(C));
- }
- return OPERATOR_FINISHED;
-}
+ // XXX - should be a generic function
+ for(iseq= scene->ed->seqbasep->first; iseq; iseq= iseq->next) {
+ if((iseq->type & SEQ_EFFECT) && (seq_is_parent(iseq, active_seq) || seq_is_parent(iseq, seq))) {
+ calc_sequence(iseq);
+ }
+ }
-static int sequencer_swap_right_exec(bContext *C, wmOperator *op)
-{
- return sequencer_swap_internal_exec(C, SEQ_SIDE_RIGHT);
-}
+ /* do this in a new loop since both effects need to be calculated first */
+ for(iseq= scene->ed->seqbasep->first; iseq; iseq= iseq->next) {
+ if((iseq->type & SEQ_EFFECT) && (seq_is_parent(iseq, active_seq) || seq_is_parent(iseq, seq))) {
+ /* this may now overlap */
+ if( seq_test_overlap(ed->seqbasep, iseq) ) {
+ shuffle_seq(ed->seqbasep, iseq, scene);
+ }
+ }
+ }
-void SEQUENCER_OT_swap_right(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Swap Strip Right";
- ot->idname= "SEQUENCER_OT_swap_right";
- ot->description="Swap active strip with strip to the right.";
-
- /* api callbacks */
- ot->exec= sequencer_swap_right_exec;
- ot->poll= ED_operator_sequencer_active;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-
- /* properties */
-}
-static int sequencer_swap_left_exec(bContext *C, wmOperator *op)
-{
- return sequencer_swap_internal_exec(C, SEQ_SIDE_LEFT);
+
+ sort_seq(scene);
+
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
+
+ return OPERATOR_FINISHED;
+ }
+
+ return OPERATOR_CANCELLED;
}
-void SEQUENCER_OT_swap_left(wmOperatorType *ot)
+void SEQUENCER_OT_swap(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Swap Strip Left";
- ot->idname= "SEQUENCER_OT_swap_left";
+ ot->name= "Swap Strip";
+ ot->idname= "SEQUENCER_OT_swap";
ot->description="Swap active strip with strip to the left.";
/* api callbacks */
- ot->exec= sequencer_swap_left_exec;
+ ot->exec= sequencer_swap_exec;
ot->poll= ED_operator_sequencer_active;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
+ RNA_def_enum(ot->srna, "side", prop_side_lr_types, SEQ_SIDE_RIGHT, "Side", "Side of the strip to swap");
}
static int sequencer_rendersize_exec(bContext *C, wmOperator *op)
@@ -2634,9 +2673,9 @@ static int sequencer_rendersize_exec(bContext *C, wmOperator *op)
Scene *scene= CTX_data_scene(C);
Sequence *active_seq = active_seq_get(scene);
- if(active_seq==NULL) return OPERATOR_CANCELLED;
+ if(active_seq==NULL)
+ return OPERATOR_CANCELLED;
- printf("got active sequence\n");
switch (active_seq->type) {
case SEQ_IMAGE:
case SEQ_MOVIE:
@@ -2677,3 +2716,120 @@ void SEQUENCER_OT_rendersize(wmOperatorType *ot)
/* properties */
}
+static void seq_del_sound(Scene *scene, Sequence *seq)
+{
+ if(seq->type == SEQ_META) {
+ Sequence *iseq;
+ for(iseq= seq->seqbase.first; iseq; iseq= iseq->next) {
+ seq_del_sound(scene, iseq);
+ }
+ }
+ else if(seq->sound_handle) {
+ sound_delete_handle(scene, seq->sound_handle);
+ seq->sound_handle= NULL;
+ }
+}
+
+/* TODO, validate scenes */
+static int sequencer_copy_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ Editing *ed= seq_give_editing(scene, FALSE);
+ Sequence *seq;
+
+ if(ed==NULL)
+ return OPERATOR_CANCELLED;
+
+ seq_free_clipboard();
+
+ if(seqbase_isolated_sel_check(ed->seqbasep)==FALSE) {
+ BKE_report(op->reports, RPT_ERROR, "Please select all related strips");
+ return OPERATOR_CANCELLED;
+ }
+
+ recurs_dupli_seq(scene, ed->seqbasep, &seqbase_clipboard, FALSE);
+ seqbase_clipboard_frame= scene->r.cfra;
+
+ /* Need to remove anything that references the current scene */
+ for(seq= seqbase_clipboard.first; seq; seq= seq->next) {
+ seq_del_sound(scene, seq);
+ }
+
+ return OPERATOR_FINISHED;
+}
+
+void SEQUENCER_OT_copy(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Copy";
+ ot->idname= "SEQUENCER_OT_copy";
+ ot->description="";
+
+ /* api callbacks */
+ ot->exec= sequencer_copy_exec;
+ ot->poll= ED_operator_sequencer_active;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* properties */
+}
+
+static void seq_offset(Sequence *seq, int ofs)
+{
+ if(seq->type == SEQ_META) {
+ Sequence *iseq;
+ for(iseq= seq->seqbase.first; iseq; iseq= iseq->next) {
+ seq_offset(iseq, ofs);
+ }
+ }
+ else {
+ seq->start += ofs;
+ }
+
+ calc_sequence_disp(seq);
+}
+
+static int sequencer_paste_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ Editing *ed= seq_give_editing(scene, TRUE); /* create if needed */
+ ListBase new = {NULL, NULL};
+ int ofs;
+ Sequence *iseq;
+
+ deselect_all_seq(scene);
+ ofs = scene->r.cfra - seqbase_clipboard_frame;
+
+ recurs_dupli_seq(scene, &seqbase_clipboard, &new, FALSE);
+
+ /* transform pasted strips before adding */
+ if(ofs) {
+ for(iseq= new.first; iseq; iseq= iseq->next) {
+ seq_offset(iseq, ofs);
+ }
+ }
+
+ addlisttolist(ed->seqbasep, &new);
+
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
+
+ return OPERATOR_FINISHED;
+}
+
+void SEQUENCER_OT_paste(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Paste";
+ ot->idname= "SEQUENCER_OT_paste";
+ ot->description="";
+
+ /* api callbacks */
+ ot->exec= sequencer_paste_exec;
+ ot->poll= ED_operator_sequencer_active;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* properties */
+}
diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h
index a87f7f64ee9..cf598bfb613 100644
--- a/source/blender/editors/space_sequencer/sequencer_intern.h
+++ b/source/blender/editors/space_sequencer/sequencer_intern.h
@@ -45,16 +45,16 @@ 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);
/* sequencer_draw.c */
-void drawseqspace(const struct bContext *C, struct ARegion *ar);
+void draw_timeline_seq(const struct bContext *C, struct ARegion *ar);
+void draw_image_seq(struct Scene *scene, struct ARegion *ar, struct SpaceSeq *sseq);
+
void seq_reset_imageofs(struct SpaceSeq *sseq);
/* sequencer_edit.c */
struct View2D;
-int check_single_seq(struct Sequence *seq);
+int seq_single_check(struct Sequence *seq);
int seq_tx_get_final_left(struct Sequence *seq, int metaclip);
int seq_tx_get_final_right(struct Sequence *seq, int metaclip);
void seq_rectf(struct Sequence *seq, struct rctf *rectf);
@@ -91,13 +91,19 @@ void SEQUENCER_OT_meta_separate(struct wmOperatorType *ot);
void SEQUENCER_OT_snap(struct wmOperatorType *ot);
void SEQUENCER_OT_previous_edit(struct wmOperatorType *ot);
void SEQUENCER_OT_next_edit(struct wmOperatorType *ot);
-void SEQUENCER_OT_swap_right(struct wmOperatorType *ot);
-void SEQUENCER_OT_swap_left(struct wmOperatorType *ot);
+void SEQUENCER_OT_swap(struct wmOperatorType *ot);
void SEQUENCER_OT_rendersize(struct wmOperatorType *ot);
+void SEQUENCER_OT_view_toggle(struct wmOperatorType *ot);
void SEQUENCER_OT_view_all(struct wmOperatorType *ot);
void SEQUENCER_OT_view_selected(struct wmOperatorType *ot);
+void SEQUENCER_OT_copy(struct wmOperatorType *ot);
+void SEQUENCER_OT_paste(struct wmOperatorType *ot);
+
+/* preview specific operators */
+void SEQUENCER_OT_view_all_preview(struct wmOperatorType *ot);
+
/* sequencer_select.c */
void SEQUENCER_OT_select_all_toggle(struct wmOperatorType *ot);
void SEQUENCER_OT_select(struct wmOperatorType *ot);
diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c
index 73a2070ca54..7e7b45e623f 100644
--- a/source/blender/editors/space_sequencer/sequencer_ops.c
+++ b/source/blender/editors/space_sequencer/sequencer_ops.c
@@ -79,13 +79,14 @@ void sequencer_operatortypes(void)
WM_operatortype_append(SEQUENCER_OT_snap);
WM_operatortype_append(SEQUENCER_OT_next_edit);
WM_operatortype_append(SEQUENCER_OT_previous_edit);
- WM_operatortype_append(SEQUENCER_OT_swap_right);
- WM_operatortype_append(SEQUENCER_OT_swap_left);
+ WM_operatortype_append(SEQUENCER_OT_swap);
WM_operatortype_append(SEQUENCER_OT_rendersize);
WM_operatortype_append(SEQUENCER_OT_view_all);
WM_operatortype_append(SEQUENCER_OT_view_selected);
-
+ WM_operatortype_append(SEQUENCER_OT_view_all_preview);
+ WM_operatortype_append(SEQUENCER_OT_view_toggle);
+
/* sequencer_select.c */
WM_operatortype_append(SEQUENCER_OT_select_all_toggle);
WM_operatortype_append(SEQUENCER_OT_select_inverse);
@@ -105,14 +106,22 @@ void sequencer_operatortypes(void)
WM_operatortype_append(SEQUENCER_OT_image_strip_add);
WM_operatortype_append(SEQUENCER_OT_effect_strip_add);
WM_operatortype_append(SEQUENCER_OT_properties);
+
+ WM_operatortype_append(SEQUENCER_OT_copy);
+ WM_operatortype_append(SEQUENCER_OT_paste);
}
void sequencer_keymap(wmKeyConfig *keyconf)
{
- wmKeyMap *keymap= WM_keymap_find(keyconf, "Sequencer", SPACE_SEQ, 0);
+ wmKeyMap *keymap= WM_keymap_find(keyconf, "SequencerCommon", SPACE_SEQ, 0);
wmKeyMapItem *kmi;
-
+
+ /* operators common to sequence and preview view */
+ WM_keymap_add_item(keymap, "SEQUENCER_OT_view_toggle", TABKEY, KM_PRESS, KM_CTRL, 0);
+
+ /* operators for sequence */
+ keymap= WM_keymap_find(keyconf, "Sequencer", SPACE_SEQ, 0);
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);
@@ -137,6 +146,9 @@ void sequencer_keymap(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "SEQUENCER_OT_delete", XKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "SEQUENCER_OT_delete", DELKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "SEQUENCER_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "SEQUENCER_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0);
+
WM_keymap_add_item(keymap, "SEQUENCER_OT_images_separate", YKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "SEQUENCER_OT_meta_toggle", TABKEY, KM_PRESS, 0, 0);
@@ -150,8 +162,8 @@ void sequencer_keymap(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "SEQUENCER_OT_next_edit", PAGEUPKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "SEQUENCER_OT_previous_edit", PAGEDOWNKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "SEQUENCER_OT_swap_left", LEFTARROWKEY, KM_PRESS, KM_ALT, 0);
- WM_keymap_add_item(keymap, "SEQUENCER_OT_swap_right", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0);
+ RNA_enum_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_swap", LEFTARROWKEY, KM_PRESS, KM_ALT, 0)->ptr, "side", SEQ_SIDE_LEFT);
+ RNA_enum_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_swap", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0)->ptr, "side", SEQ_SIDE_RIGHT);
WM_keymap_add_item(keymap, "SEQUENCER_OT_snap", SKEY, KM_PRESS, KM_SHIFT, 0);
@@ -214,5 +226,8 @@ void sequencer_keymap(wmKeyConfig *keyconf)
WM_keymap_add_menu(keymap, "SEQUENCER_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0);
transform_keymap_for_space(keyconf, keymap, SPACE_SEQ);
+
+ keymap= WM_keymap_find(keyconf, "SequencerPreview", SPACE_SEQ, 0);
+ WM_keymap_add_item(keymap, "SEQUENCER_OT_view_all_preview", HOMEKEY, KM_PRESS, 0, 0);
}
diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c
index b197077c68d..69ce2c7c681 100644
--- a/source/blender/editors/space_sequencer/sequencer_select.c
+++ b/source/blender/editors/space_sequencer/sequencer_select.c
@@ -52,7 +52,7 @@
#include "BKE_global.h"
#include "BKE_library.h"
#include "BKE_main.h"
-#include "BKE_sequence.h"
+#include "BKE_sequencer.h"
#include "BKE_scene.h"
#include "BKE_utildefines.h"
@@ -256,7 +256,8 @@ static int sequencer_deselect_exec(bContext *C, wmOperator *op)
seq->flag |= SELECT;
}
}
- ED_area_tag_redraw(CTX_wm_area(C));
+
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene);
return OPERATOR_FINISHED;
}
@@ -297,7 +298,8 @@ static int sequencer_select_inverse_exec(bContext *C, wmOperator *op)
seq->flag |= SELECT;
}
}
- ED_area_tag_redraw(CTX_wm_area(C));
+
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene);
return OPERATOR_FINISHED;
}
@@ -508,7 +510,8 @@ static int sequencer_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
}
#endif
- ED_area_tag_redraw(CTX_wm_area(C));
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene);
+
/* allowing tweaks */
return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH;
}
@@ -594,9 +597,10 @@ static int sequencer_select_more_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
- if (select_more_less_seq__internal(scene, 0, 0)) {
- ED_area_tag_redraw(CTX_wm_area(C));
- }
+ if(!select_more_less_seq__internal(scene, 0, 0))
+ return OPERATOR_CANCELLED;
+
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene);
return OPERATOR_FINISHED;
}
@@ -624,9 +628,10 @@ static int sequencer_select_less_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
- if (select_more_less_seq__internal(scene, 1, 0)) {
- ED_area_tag_redraw(CTX_wm_area(C));
- }
+ if(!select_more_less_seq__internal(scene, 1, 0))
+ return OPERATOR_CANCELLED;
+
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene);
return OPERATOR_FINISHED;
}
@@ -681,7 +686,7 @@ static int sequencer_select_linked_pick_invoke(bContext *C, wmOperator *op, wmEv
selected = select_more_less_seq__internal(scene, 1, 1);
}
- ED_area_tag_redraw(CTX_wm_area(C));
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene);
return OPERATOR_FINISHED;
}
@@ -716,7 +721,7 @@ static int sequencer_select_linked_exec(bContext *C, wmOperator *op)
selected = select_more_less_seq__internal(scene, 1, 1);
}
- ED_area_tag_redraw(CTX_wm_area(C));
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene);
return OPERATOR_FINISHED;
}
@@ -768,7 +773,7 @@ static int sequencer_select_handles_exec(bContext *C, wmOperator *op)
}
}
- ED_area_tag_redraw(CTX_wm_area(C));
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene);
return OPERATOR_FINISHED;
}
@@ -805,7 +810,7 @@ static int sequencer_select_active_side_exec(bContext *C, wmOperator *op)
select_active_side(ed->seqbasep, RNA_enum_get(op->ptr, "side"), seq_act->machine, seq_act->startdisp);
- ED_area_tag_redraw(CTX_wm_area(C));
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene);
return OPERATOR_FINISHED;
}
@@ -867,6 +872,8 @@ static int sequencer_borderselect_exec(bContext *C, wmOperator *op)
}
}
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene);
+
return OPERATOR_FINISHED;
}
diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c
index 7e1fdc80bb3..25364aed5ca 100644
--- a/source/blender/editors/space_sequencer/space_sequencer.c
+++ b/source/blender/editors/space_sequencer/space_sequencer.c
@@ -43,7 +43,7 @@
#include "BKE_colortools.h"
#include "BKE_context.h"
#include "BKE_screen.h"
-#include "BKE_sequence.h"
+#include "BKE_sequencer.h"
#include "ED_space_api.h"
#include "ED_screen.h"
@@ -90,6 +90,69 @@ ARegion *sequencer_has_buttons_region(ScrArea *sa)
return arnew;
}
+ARegion *sequencer_find_region(ScrArea *sa, short type)
+{
+ ARegion *ar=NULL;
+
+ for(ar= sa->regionbase.first; ar; ar= ar->next)
+ if(ar->regiontype==type)
+ return ar;
+
+ return ar;
+}
+
+void ED_sequencer_update_view(bContext *C, int view)
+{
+ ScrArea *sa= CTX_wm_area(C);
+
+ ARegion *ar_main= sequencer_find_region(sa, RGN_TYPE_WINDOW);
+ ARegion *ar_preview= sequencer_find_region(sa, RGN_TYPE_PREVIEW);
+
+ switch (view) {
+ case SEQ_VIEW_SEQUENCE:
+ if (ar_main->flag & RGN_FLAG_HIDDEN) {
+ ar_main->flag &= ~RGN_FLAG_HIDDEN;
+ ar_main->v2d.flag &= ~V2D_IS_INITIALISED;
+ }
+ if (!(ar_preview->flag & RGN_FLAG_HIDDEN)) {
+ ar_preview->flag |= RGN_FLAG_HIDDEN;
+ ar_preview->v2d.flag &= ~V2D_IS_INITIALISED;
+ WM_event_remove_handlers(C, &ar_preview->handlers);
+ }
+ ar_main->alignment= RGN_ALIGN_NONE;
+ ar_preview->alignment= RGN_ALIGN_NONE;
+ break;
+ case SEQ_VIEW_PREVIEW:
+ if (!(ar_main->flag & RGN_FLAG_HIDDEN)) {
+ ar_main->flag |= RGN_FLAG_HIDDEN;
+ ar_main->v2d.flag &= ~V2D_IS_INITIALISED;
+ WM_event_remove_handlers(C, &ar_main->handlers);
+ }
+ if (ar_preview->flag & RGN_FLAG_HIDDEN) {
+ ar_preview->flag &= ~RGN_FLAG_HIDDEN;
+ ar_preview->v2d.flag &= ~V2D_IS_INITIALISED;
+ }
+ ar_main->alignment= RGN_ALIGN_NONE;
+ ar_preview->alignment= RGN_ALIGN_NONE;
+ break;
+ case SEQ_VIEW_SEQUENCE_PREVIEW:
+ if (ar_main->flag & RGN_FLAG_HIDDEN) {
+ ar_main->flag &= ~RGN_FLAG_HIDDEN;
+ ar_main->v2d.flag &= ~V2D_IS_INITIALISED;
+ }
+ if (ar_preview->flag & RGN_FLAG_HIDDEN) {
+ ar_preview->flag &= ~RGN_FLAG_HIDDEN;
+ ar_preview->v2d.flag &= ~V2D_IS_INITIALISED;
+ }
+ ar_main->alignment= RGN_ALIGN_NONE;
+ ar_preview->alignment= RGN_ALIGN_TOP;
+ break;
+ }
+
+ ED_area_initialize(CTX_wm_manager(C), CTX_wm_window(C), sa);
+ ED_area_tag_redraw(sa);
+}
+
/* ******************** default callbacks for sequencer space ***************** */
@@ -103,8 +166,8 @@ static SpaceLink *sequencer_new(const bContext *C)
sseq->spacetype= SPACE_SEQ;
sseq->zoom= 4;
sseq->chanshown = 0;
-
-
+ sseq->view = SEQ_VIEW_SEQUENCE;
+ sseq->mainb = SEQ_DRAW_IMG_IMBUF;
/* header */
ar= MEM_callocN(sizeof(ARegion), "header for sequencer");
@@ -120,6 +183,13 @@ static SpaceLink *sequencer_new(const bContext *C)
ar->alignment= RGN_ALIGN_RIGHT;
ar->flag = RGN_FLAG_HIDDEN;
+ /* preview area */
+ ar= MEM_callocN(sizeof(ARegion), "preview area for sequencer");
+ BLI_addtail(&sseq->regionbase, ar);
+ ar->regiontype= RGN_TYPE_PREVIEW;
+ ar->alignment= RGN_ALIGN_TOP;
+ ar->flag |= RGN_FLAG_HIDDEN;
+
/* main area */
ar= MEM_callocN(sizeof(ARegion), "main area for sequencer");
@@ -150,7 +220,7 @@ static SpaceLink *sequencer_new(const bContext *C)
ar->v2d.keepzoom= 0;
ar->v2d.keeptot= 0;
ar->v2d.align= V2D_ALIGN_NO_NEG_Y;
-
+
return (SpaceLink *)sseq;
}
@@ -181,7 +251,7 @@ static SpaceLink *sequencer_duplicate(SpaceLink *sl)
}
-
+/* *********************** sequencer (main) region ************************ */
/* add handlers, stuff you only do once or on area/region changes */
static void sequencer_main_area_init(wmWindowManager *wm, ARegion *ar)
{
@@ -189,11 +259,22 @@ static void sequencer_main_area_init(wmWindowManager *wm, ARegion *ar)
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy);
+ keymap= WM_keymap_find(wm->defaultconf, "SequencerCommon", SPACE_SEQ, 0);
+ WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
+
/* own keymap */
keymap= WM_keymap_find(wm->defaultconf, "Sequencer", SPACE_SEQ, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
}
+static void sequencer_main_area_draw(const bContext *C, ARegion *ar)
+{
+// ScrArea *sa= CTX_wm_area(C);
+
+ /* NLE - strip editing timeline interface */
+ draw_timeline_seq(C, ar);
+}
+
/* add handlers, stuff you only do once or on area/region changes */
static void sequencer_header_area_init(wmWindowManager *wm, ARegion *ar)
@@ -215,6 +296,7 @@ static void sequencer_main_area_listener(ARegion *ar, wmNotifier *wmn)
case ND_FRAME:
case ND_MARKERS:
case ND_SEQUENCER:
+ case ND_SEQUENCER_SELECT:
ED_region_tag_redraw(ar);
break;
}
@@ -223,6 +305,64 @@ static void sequencer_main_area_listener(ARegion *ar, wmNotifier *wmn)
if(wmn->data == ND_SPACE_SEQUENCER)
ED_region_tag_redraw(ar);
break;
+ case NC_ID:
+ if(wmn->action == NA_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
+ }
+}
+
+/* *********************** preview region ************************ */
+static void sequencer_preview_area_init(wmWindowManager *wm, ARegion *ar)
+{
+ wmKeyMap *keymap;
+
+ UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_STANDARD, ar->winx, ar->winy);
+
+ keymap= WM_keymap_find(wm->defaultconf, "SequencerCommon", SPACE_SEQ, 0);
+ WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
+
+ /* own keymap */
+ keymap= WM_keymap_find(wm->defaultconf, "SequencerPreview", SPACE_SEQ, 0);
+ WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
+}
+
+static void sequencer_preview_area_draw(const bContext *C, ARegion *ar)
+{
+ ScrArea *sa= CTX_wm_area(C);
+ SpaceSeq *sseq= sa->spacedata.first;
+ Scene *scene= CTX_data_scene(C);
+
+ /* XXX temp fix for wrong setting in sseq->mainb */
+ if (sseq->mainb == SEQ_DRAW_SEQUENCE) sseq->mainb = SEQ_DRAW_IMG_IMBUF;
+ draw_image_seq(scene, ar, sseq);
+}
+
+static void sequencer_preview_area_listener(ARegion *ar, wmNotifier *wmn)
+{
+ /* context changes */
+ switch(wmn->category) {
+ case NC_SCENE:
+ switch(wmn->data) {
+ case ND_FRAME:
+ case ND_MARKERS:
+ case ND_SEQUENCER:
+ case ND_SEQUENCER_SELECT:
+ ED_region_tag_redraw(ar);
+ break;
+ }
+ break;
+ case NC_SPACE:
+ if(wmn->data == ND_SPACE_SEQUENCER)
+ ED_region_tag_redraw(ar);
+ break;
+ case NC_ID:
+ switch(wmn->data) {
+ case NA_RENAME:
+ ED_region_tag_redraw(ar);
+ break;
+ }
+ break;
}
}
@@ -249,6 +389,7 @@ static void sequencer_buttons_area_listener(ARegion *ar, wmNotifier *wmn)
switch(wmn->data) {
case ND_FRAME:
case ND_SEQUENCER:
+ case ND_SEQUENCER_SELECT:
ED_region_tag_redraw(ar);
break;
}
@@ -257,7 +398,10 @@ static void sequencer_buttons_area_listener(ARegion *ar, wmNotifier *wmn)
if(wmn->data == ND_SPACE_SEQUENCER)
ED_region_tag_redraw(ar);
break;
-
+ case NC_ID:
+ if(wmn->action == NA_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
}
}
/* ************************************* */
@@ -269,6 +413,7 @@ void ED_spacetype_sequencer(void)
ARegionType *art;
st->spaceid= SPACE_SEQ;
+ strncpy(st->name, "Sequencer", BKE_ST_MAXNAME);
st->new= sequencer_new;
st->free= sequencer_free;
@@ -281,11 +426,21 @@ void ED_spacetype_sequencer(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region");
art->regionid = RGN_TYPE_WINDOW;
art->init= sequencer_main_area_init;
- art->draw= drawseqspace;
+ art->draw= sequencer_main_area_draw;
art->listener= sequencer_main_area_listener;
art->keymapflag= ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_ANIMATION;
BLI_addhead(&st->regiontypes, art);
+
+ /* preview */
+ art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region");
+ art->regionid = RGN_TYPE_PREVIEW;
+ art->minsizey = 240; // XXX
+ art->init= sequencer_preview_area_init;
+ art->draw= sequencer_preview_area_draw;
+ art->listener= sequencer_preview_area_listener;
+ art->keymapflag= ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_ANIMATION;
+ BLI_addhead(&st->regiontypes, art);
/* regions: listview/buttons */
art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region");
@@ -305,7 +460,7 @@ void ED_spacetype_sequencer(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->init= sequencer_header_area_init;
art->draw= sequencer_header_area_draw;
diff --git a/source/blender/editors/space_sound/space_sound.c b/source/blender/editors/space_sound/space_sound.c
index 314e711234a..1cd5ab65c0f 100644
--- a/source/blender/editors/space_sound/space_sound.c
+++ b/source/blender/editors/space_sound/space_sound.c
@@ -224,6 +224,7 @@ void ED_spacetype_sound(void)
ARegionType *art;
st->spaceid= SPACE_SOUND;
+ strncpy(st->name, "Sound", BKE_ST_MAXNAME);
st->new= sound_new;
st->free= sound_free;
@@ -246,7 +247,7 @@ void ED_spacetype_sound(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype sound region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER;
art->init= sound_header_area_init;
art->draw= sound_header_area_draw;
diff --git a/source/blender/editors/space_text/space_text.c b/source/blender/editors/space_text/space_text.c
index 0b30587c521..2f0e631e927 100644
--- a/source/blender/editors/space_text/space_text.c
+++ b/source/blender/editors/space_text/space_text.c
@@ -222,7 +222,9 @@ static void text_keymap(struct wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "TEXT_OT_cut", XKEY, KM_PRESS, KM_OSKEY, 0);
WM_keymap_add_item(keymap, "TEXT_OT_copy", CKEY, KM_PRESS, KM_OSKEY, 0);
WM_keymap_add_item(keymap, "TEXT_OT_paste", VKEY, KM_PRESS, KM_OSKEY, 0);
- WM_keymap_add_item(keymap, "TEXT_OT_find", FKEY, KM_PRESS, KM_OSKEY, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_properties", FKEY, KM_PRESS, KM_OSKEY, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_find_set_selected", EKEY, KM_PRESS, KM_OSKEY, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_find", GKEY, KM_PRESS, KM_OSKEY, 0);
WM_keymap_add_item(keymap, "TEXT_OT_select_all", AKEY, KM_PRESS, KM_OSKEY, 0);
WM_keymap_add_item(keymap, "TEXT_OT_select_line", AKEY, KM_PRESS, KM_SHIFT|KM_OSKEY, 0);
#endif
@@ -242,13 +244,11 @@ static void text_keymap(struct wmKeyConfig *keyconf)
if(U.uiflag & USER_MMB_PASTE) // XXX not dynamic
RNA_boolean_set(WM_keymap_add_item(keymap, "TEXT_OT_paste", MIDDLEMOUSE, KM_PRESS, 0, 0)->ptr, "selection", 1);
- WM_keymap_add_item(keymap, "TEXT_OT_jump", GKEY, KM_PRESS, KM_CTRL, 0);
- WM_keymap_add_item(keymap, "TEXT_OT_find", FKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_jump", JKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_find", GKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "TEXT_OT_properties", FKEY, KM_PRESS, KM_CTRL, 0);
- WM_keymap_add_item(keymap, "TEXT_OT_properties", FKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_add_item(keymap, "TEXT_OT_replace", HKEY, KM_PRESS, KM_CTRL, 0);
- WM_keymap_add_item(keymap, "TEXT_OT_replace", HKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_add_item(keymap, "TEXT_OT_to_3d_object", MKEY, KM_PRESS, KM_ALT, 0);
@@ -261,13 +261,12 @@ static void text_keymap(struct wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "TEXT_OT_uncomment", DKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", HOMEKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_BEGIN);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", ENDKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_END);
RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", LEFTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", LINE_BEGIN);
- RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", ENDKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_END);
- RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", RIGHTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", LINE_BEGIN);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", RIGHTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", LINE_END);
RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", EKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", LINE_END);
RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", EKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0)->ptr, "type", LINE_END);
- RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", ENDKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_END);
RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", LEFTARROWKEY, KM_PRESS, 0, 0)->ptr, "type", PREV_CHAR);
RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", RIGHTARROWKEY, KM_PRESS, 0, 0)->ptr, "type", NEXT_CHAR);
RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", LEFTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", PREV_WORD);
@@ -303,8 +302,6 @@ static void text_keymap(struct wmKeyConfig *keyconf)
RNA_int_set(WM_keymap_add_item(keymap, "TEXT_OT_scroll", WHEELUPMOUSE, KM_PRESS, 0, 0)->ptr, "lines", -1);
RNA_int_set(WM_keymap_add_item(keymap, "TEXT_OT_scroll", WHEELDOWNMOUSE, KM_PRESS, 0, 0)->ptr, "lines", 1);
- WM_keymap_add_item(keymap, "TEXT_OT_to_3d_object", MKEY, KM_PRESS, KM_ALT, 0);
-
WM_keymap_add_item(keymap, "TEXT_OT_line_break", RETKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "TEXT_OT_line_number", KM_TEXTINPUT, KM_ANY, KM_ANY, 0);
@@ -405,6 +402,7 @@ void ED_spacetype_text(void)
ARegionType *art;
st->spaceid= SPACE_TEXT;
+ strncpy(st->name, "Text", BKE_ST_MAXNAME);
st->new= text_new;
st->free= text_free;
@@ -438,7 +436,7 @@ void ED_spacetype_text(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype text region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER;
art->init= text_header_area_init;
art->draw= text_header_area_draw;
diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c
index 09c74666b69..1a23b9ecc42 100644
--- a/source/blender/editors/space_text/text_ops.c
+++ b/source/blender/editors/space_text/text_ops.c
@@ -555,7 +555,7 @@ void TEXT_OT_run_script(wmOperatorType *ot)
/* api callbacks */
ot->exec= run_script_exec;
- ot->poll= text_edit_poll;
+// ot->poll= text_edit_poll; // dont do this since linked texts cant run
}
@@ -735,9 +735,6 @@ void TEXT_OT_paste(wmOperatorType *ot)
ot->exec= paste_exec;
ot->poll= text_edit_poll;
- /* flags */
- ot->flag= OPTYPE_REGISTER;
-
/* properties */
RNA_def_boolean(ot->srna, "selection", 0, "Selection", "Paste text selected elsewhere rather than copied, X11 only.");
}
@@ -806,9 +803,6 @@ void TEXT_OT_cut(wmOperatorType *ot)
/* api callbacks */
ot->exec= cut_exec;
ot->poll= text_edit_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER;
}
/******************* indent operator *********************/
@@ -842,9 +836,6 @@ void TEXT_OT_indent(wmOperatorType *ot)
/* api callbacks */
ot->exec= indent_exec;
ot->poll= text_edit_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER;
}
/******************* unindent operator *********************/
@@ -878,9 +869,6 @@ void TEXT_OT_unindent(wmOperatorType *ot)
/* api callbacks */
ot->exec= unindent_exec;
ot->poll= text_edit_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER;
}
/******************* line break operator *********************/
@@ -919,9 +907,6 @@ void TEXT_OT_line_break(wmOperatorType *ot)
/* api callbacks */
ot->exec= line_break_exec;
ot->poll= text_edit_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER;
}
/******************* comment operator *********************/
@@ -952,9 +937,6 @@ void TEXT_OT_comment(wmOperatorType *ot)
/* api callbacks */
ot->exec= comment_exec;
ot->poll= text_edit_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER;
}
/******************* uncomment operator *********************/
@@ -986,9 +968,6 @@ void TEXT_OT_uncomment(wmOperatorType *ot)
/* api callbacks */
ot->exec= uncomment_exec;
ot->poll= text_edit_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER;
}
/******************* convert whitespace operator *********************/
@@ -1129,9 +1108,6 @@ void TEXT_OT_convert_whitespace(wmOperatorType *ot)
ot->exec= convert_whitespace_exec;
ot->poll= text_edit_poll;
- /* flags */
- ot->flag= OPTYPE_REGISTER;
-
/* properties */
RNA_def_enum(ot->srna, "type", whitespace_type_items, TO_SPACES, "type", "Type of whitespace to convert to.");
}
@@ -1159,9 +1135,6 @@ void TEXT_OT_select_all(wmOperatorType *ot)
/* api callbacks */
ot->exec= select_all_exec;
ot->poll= text_edit_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER;
}
/******************* select line operator *********************/
@@ -1187,9 +1160,6 @@ void TEXT_OT_select_line(wmOperatorType *ot)
/* api clinebacks */
ot->exec= select_line_exec;
ot->poll= text_edit_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER;
}
/******************* previous marker operator *********************/
@@ -1225,9 +1195,6 @@ void TEXT_OT_previous_marker(wmOperatorType *ot)
/* api callbacks */
ot->exec= previous_marker_exec;
ot->poll= text_edit_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER;
}
/******************* next marker operator *********************/
@@ -1263,9 +1230,6 @@ void TEXT_OT_next_marker(wmOperatorType *ot)
/* api callbacks */
ot->exec= next_marker_exec;
ot->poll= text_edit_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER;
}
/******************* clear all markers operator *********************/
@@ -1291,9 +1255,6 @@ void TEXT_OT_markers_clear(wmOperatorType *ot)
/* api callbacks */
ot->exec= clear_all_markers_exec;
ot->poll= text_edit_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER;
}
/************************ move operator ************************/
@@ -1576,9 +1537,6 @@ void TEXT_OT_move(wmOperatorType *ot)
ot->exec= move_exec;
ot->poll= text_edit_poll;
- /* flags */
- ot->flag= OPTYPE_REGISTER;
-
/* properties */
RNA_def_enum(ot->srna, "type", move_type_items, LINE_BEGIN, "Type", "Where to move cursor to.");
}
@@ -1603,9 +1561,6 @@ void TEXT_OT_move_select(wmOperatorType *ot)
ot->exec= move_select_exec;
ot->poll= text_space_edit_poll;
- /* flags */
- ot->flag= OPTYPE_REGISTER;
-
/* properties */
RNA_def_enum(ot->srna, "type", move_type_items, LINE_BEGIN, "Type", "Where to move cursor to, to make a selection.");
}
@@ -1640,9 +1595,6 @@ void TEXT_OT_jump(wmOperatorType *ot)
ot->exec= jump_exec;
ot->poll= text_edit_poll;
- /* flags */
- ot->flag= OPTYPE_REGISTER;
-
/* properties */
RNA_def_int(ot->srna, "line", 1, 1, INT_MAX, "Line", "Line number to jump to.", 1, 10000);
}
@@ -1693,9 +1645,6 @@ void TEXT_OT_delete(wmOperatorType *ot)
ot->exec= delete_exec;
ot->poll= text_edit_poll;
- /* flags */
- ot->flag= OPTYPE_REGISTER;
-
/* properties */
RNA_def_enum(ot->srna, "type", delete_type_items, DEL_NEXT_CHAR, "Type", "Which part of the text to delete.");
}
@@ -1721,9 +1670,6 @@ void TEXT_OT_overwrite_toggle(wmOperatorType *ot)
/* api callbacks */
ot->exec= toggle_overwrite_exec;
ot->poll= text_space_edit_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER;
}
/******************* scroll operator **********************/
@@ -2208,9 +2154,6 @@ void TEXT_OT_cursor_set(wmOperatorType *ot)
ot->cancel= set_cursor_cancel;
ot->poll= text_region_edit_poll;
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_BLOCKING;
-
/* properties */
RNA_def_boolean(ot->srna, "select", 0, "Select", "Set selection end rather than cursor.");
}
@@ -2332,9 +2275,6 @@ void TEXT_OT_insert(wmOperatorType *ot)
ot->invoke= insert_invoke;
ot->poll= text_edit_poll;
- /* flags */
- ot->flag= OPTYPE_REGISTER;
-
/* properties */
RNA_def_string(ot->srna, "text", "", 0, "Text", "Text to insert at the cursor position.");
}
@@ -2412,7 +2352,7 @@ static int find_and_replace(bContext *C, wmOperator *op, short mode)
first= 1;
}
else {
- BKE_reportf(op->reports, RPT_INFO, "Text not found: %s", st->findstr);
+ BKE_reportf(op->reports, RPT_ERROR, "Text not found: %s", st->findstr);
break;
}
} while(mode==TEXT_MARK_ALL);
diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c
index 501ac1c0cba..eb578e093df 100644
--- a/source/blender/editors/space_time/space_time.c
+++ b/source/blender/editors/space_time/space_time.c
@@ -45,6 +45,7 @@
#include "BKE_screen.h"
#include "BKE_utildefines.h"
+#include "ED_anim_api.h"
#include "ED_keyframes_draw.h"
#include "ED_space_api.h"
#include "ED_screen.h"
@@ -66,27 +67,6 @@
/* ************************ main time area region *********************** */
-/* draws a current frame indicator for the TimeLine */
-static void time_draw_cfra_time(const bContext *C, SpaceTime *stime, ARegion *ar)
-{
- Scene *scene= CTX_data_scene(C);
- float vec[2];
-
- vec[0]= scene->r.cfra*scene->r.framelen;
-
- UI_ThemeColor(TH_CFRAME); // no theme, should be global color once...
- glLineWidth(3.0);
-
- glBegin(GL_LINES);
- vec[1]= ar->v2d.cur.ymin;
- glVertex2fv(vec);
- vec[1]= ar->v2d.cur.ymax;
- glVertex2fv(vec);
- glEnd();
-
- glLineWidth(1.0);
-}
-
static void time_draw_sfra_efra(const bContext *C, SpaceTime *stime, ARegion *ar)
{
View2D *v2d= UI_view2d_fromcontext(C);
@@ -207,7 +187,7 @@ static void time_main_area_init(wmWindowManager *wm, ARegion *ar)
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy);
/* own keymap */
- keymap= WM_keymap_find(wm->defaultconf, "TimeLine", SPACE_TIME, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "Timeline", SPACE_TIME, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
}
@@ -218,8 +198,8 @@ static void time_main_area_draw(const bContext *C, ARegion *ar)
View2D *v2d= &ar->v2d;
View2DGrid *grid;
View2DScrollers *scrollers;
+ int unit, flag=0;
float col[3];
- int unit;
/* clear and setup matrix */
UI_GetThemeColor3fv(TH_BACK, col);
@@ -241,7 +221,9 @@ static void time_main_area_draw(const bContext *C, ARegion *ar)
time_draw_keyframes(C, stime, ar);
/* current frame */
- time_draw_cfra_time(C, stime, ar);
+ if ((stime->flag & TIME_DRAWFRAMES)==0) flag |= DRAWCFRA_UNIT_SECONDS;
+ if (stime->flag & TIME_CFRA_NUM) flag |= DRAWCFRA_SHOW_NUMBOX;
+ ANIM_draw_cfra(C, v2d, flag);
/* markers */
UI_view2d_view_orthoSpecial(C, v2d, 1);
@@ -418,7 +400,7 @@ void ED_spacetype_time(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype time region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->init= time_header_area_init;
art->draw= time_header_area_draw;
diff --git a/source/blender/editors/space_time/time_ops.c b/source/blender/editors/space_time/time_ops.c
index 7d91c6d0fc7..c80f13336cb 100644
--- a/source/blender/editors/space_time/time_ops.c
+++ b/source/blender/editors/space_time/time_ops.c
@@ -90,7 +90,8 @@ void TIME_OT_start_frame_set (wmOperatorType *ot)
ot->exec= time_set_sfra_exec;
ot->poll= ED_operator_timeline_active;
- // XXX properties???
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
@@ -129,7 +130,50 @@ void TIME_OT_end_frame_set (wmOperatorType *ot)
ot->exec= time_set_efra_exec;
ot->poll= ED_operator_timeline_active;
- // XXX properties???
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+/* ************************ View All Operator *******************************/
+
+static int time_view_all_exec (bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ ARegion *ar= CTX_wm_region(C);
+ View2D *v2d= (ar) ? &ar->v2d : NULL;
+ float extra;
+
+ if ELEM(NULL, scene, ar)
+ return OPERATOR_CANCELLED;
+
+ /* set extents of view to start/end frames (Preview Range too) */
+ v2d->cur.xmin= (float)PSFRA;
+ v2d->cur.xmax= (float)PEFRA;
+
+ /* we need an extra "buffer" factor on either side so that the endpoints are visible */
+ extra= 0.01f * (v2d->cur.xmax - v2d->cur.xmin);
+ v2d->cur.xmin -= extra;
+ v2d->cur.xmax += extra;
+
+ /* this only affects this TimeLine instance, so just force redraw of this region */
+ ED_region_tag_redraw(ar);
+
+ return OPERATOR_FINISHED;
+}
+
+void TIME_OT_view_all (wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "View All";
+ ot->idname= "TIME_OT_view_all";
+ ot->description= "Show the entire playable frame range";
+
+ /* api callbacks */
+ ot->exec= time_view_all_exec;
+ ot->poll= ED_operator_timeline_active;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
/* ************************** registration **********************************/
@@ -138,13 +182,15 @@ void time_operatortypes(void)
{
WM_operatortype_append(TIME_OT_start_frame_set);
WM_operatortype_append(TIME_OT_end_frame_set);
+ WM_operatortype_append(TIME_OT_view_all);
}
void time_keymap(wmKeyConfig *keyconf)
{
- wmKeyMap *keymap= WM_keymap_find(keyconf, "TimeLine", SPACE_TIME, 0);
+ wmKeyMap *keymap= WM_keymap_find(keyconf, "Timeline", SPACE_TIME, 0);
WM_keymap_add_item(keymap, "TIME_OT_start_frame_set", SKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "TIME_OT_end_frame_set", EKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "TIME_OT_view_all", HOMEKEY, KM_PRESS, 0, 0);
}
diff --git a/source/blender/editors/space_userpref/space_userpref.c b/source/blender/editors/space_userpref/space_userpref.c
index 39fc2fd2bd1..f45e08be697 100644
--- a/source/blender/editors/space_userpref/space_userpref.c
+++ b/source/blender/editors/space_userpref/space_userpref.c
@@ -153,6 +153,7 @@ void ED_spacetype_userpref(void)
ARegionType *art;
st->spaceid= SPACE_USERPREF;
+ strncpy(st->name, "Userpref", BKE_ST_MAXNAME);
st->new= userpref_new;
st->free= userpref_free;
@@ -175,7 +176,7 @@ void ED_spacetype_userpref(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype userpref region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER;
art->listener= userpref_header_listener;
art->init= userpref_header_area_init;
art->draw= userpref_header_area_draw;
diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c
index d5bf4ac19bb..82f80dfed88 100644
--- a/source/blender/editors/space_view3d/drawmesh.c
+++ b/source/blender/editors/space_view3d/drawmesh.c
@@ -342,8 +342,9 @@ static int set_draw_settings_cached(int clearcache, int textured, MTFace *texfac
struct TextureDrawState {
Object *ob;
int islit, istex;
+ int color_profile;
unsigned char obcol[4];
-} Gtexdraw = {NULL, 0, 0, {0, 0, 0, 0}};
+} Gtexdraw = {NULL, 0, 0, 0, {0, 0, 0, 0}};
static void draw_textured_begin(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob)
{
@@ -372,6 +373,7 @@ static void draw_textured_begin(Scene *scene, View3D *v3d, RegionView3D *rv3d, O
Gtexdraw.ob = ob;
Gtexdraw.istex = istex;
+ Gtexdraw.color_profile = scene->r.color_mgt_flag & R_COLOR_MANAGEMENT;
memcpy(Gtexdraw.obcol, obcol, sizeof(obcol));
set_draw_settings_cached(1, 0, 0, Gtexdraw.islit, 0, 0, 0);
glShadeModel(GL_SMOOTH);
@@ -414,7 +416,13 @@ static int draw_tface__set_draw_legacy(MTFace *tface, int has_vcol, int matnr)
if (tface) glColor3f(1.0, 1.0, 1.0);
else {
Material *ma= give_current_material(Gtexdraw.ob, matnr+1);
- if(ma) glColor3f(ma->r, ma->g, ma->b);
+ if(ma) {
+ float col[3];
+ if(Gtexdraw.color_profile) linearrgb_to_srgb_v3_v3(col, &ma->r);
+ else copy_v3_v3(col, &ma->r);
+
+ glColor3fv(col);
+ }
else glColor3f(1.0, 1.0, 1.0);
}
return 2; /* Don't set color */
@@ -479,13 +487,19 @@ static void add_tface_color_layer(DerivedMesh *dm)
}
}
else {
+ float col[3];
Material *ma= give_current_material(Gtexdraw.ob, mface[i].mat_nr+1);
- if(ma)
+
+ if(ma) {
+ if(Gtexdraw.color_profile) linearrgb_to_srgb_v3_v3(col, &ma->r);
+ else copy_v3_v3(col, &ma->r);
+
for(j=0;j<4;j++) {
- finalCol[i*4+j].b = ma->b;
- finalCol[i*4+j].g = ma->g;
- finalCol[i*4+j].r = ma->r;
+ finalCol[i*4+j].b = col[2];
+ finalCol[i*4+j].g = col[1];
+ finalCol[i*4+j].r = col[0];
}
+ }
else
for(j=0;j<4;j++) {
finalCol[i*4+j].b = 255;
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index 750e91032c5..31785f68273 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -110,6 +110,7 @@
#include "ED_mesh.h"
#include "ED_particle.h"
#include "ED_screen.h"
+#include "ED_sculpt.h"
#include "ED_types.h"
#include "ED_util.h"
@@ -2876,7 +2877,7 @@ static void draw_mesh_object_outline(View3D *v3d, Object *ob, DerivedMesh *dm)
drawFacesSolid() doesn't draw the transparent faces */
if(ob->dtx & OB_DRAWTRANSP) {
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- dm->drawFacesSolid(dm, GPU_enable_material);
+ dm->drawFacesSolid(dm, NULL, 0, GPU_enable_material);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
GPU_disable_material();
}
@@ -2895,7 +2896,7 @@ static int wpaint__setSolidDrawOptions(void *userData, int index, int *drawSmoot
return 1;
}
-static void draw_mesh_fancy(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, int dt, int flag)
+static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D *rv3d, Base *base, int dt, int flag)
{
Object *ob= base->object;
Mesh *me = ob->data;
@@ -2968,7 +2969,9 @@ static void draw_mesh_fancy(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base
}
}
else if(dt==OB_SOLID) {
- if((v3d->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !draw_wire)
+ Paint *p;
+
+ if((v3d->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !draw_wire && !ob->sculpt)
draw_mesh_object_outline(v3d, ob, dm);
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, me->flag & ME_TWOSIDED );
@@ -2976,7 +2979,22 @@ static void draw_mesh_fancy(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base
glEnable(GL_LIGHTING);
glFrontFace((ob->transflag&OB_NEG_SCALE)?GL_CW:GL_CCW);
- dm->drawFacesSolid(dm, GPU_enable_material);
+ if(ob->sculpt && (p=paint_get_active(scene))) {
+ float planes[4][4];
+ float (*fpl)[4] = NULL;
+ int fast= (p->flags & PAINT_FAST_NAVIGATE) && (rv3d->rflag & RV3D_NAVIGATING);
+
+ if(ob->sculpt->partial_redraw) {
+ sculpt_get_redraw_planes(planes, ar, rv3d, ob);
+ fpl = planes;
+ ob->sculpt->partial_redraw = 0;
+ }
+
+ dm->drawFacesSolid(dm, fpl, fast, GPU_enable_material);
+ }
+ else
+ dm->drawFacesSolid(dm, NULL, 0, GPU_enable_material);
+
GPU_disable_material();
glFrontFace(GL_CCW);
@@ -2987,7 +3005,8 @@ static void draw_mesh_fancy(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base
} else {
UI_ThemeColor(TH_WIRE);
}
- dm->drawLooseEdges(dm);
+ if(!ob->sculpt)
+ dm->drawLooseEdges(dm);
}
else if(dt==OB_SHADED) {
int do_draw= 1; /* to resolve all G.f settings below... */
@@ -3105,7 +3124,7 @@ static void draw_mesh_fancy(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base
}
/* returns 1 if nothing was drawn, for detecting to draw an object center */
-static int draw_mesh_object(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, int dt, int flag)
+static int draw_mesh_object(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D *rv3d, Base *base, int dt, int flag)
{
Object *ob= base->object;
Object *obedit= scene->obedit;
@@ -3140,10 +3159,6 @@ static int draw_mesh_object(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base
if (obedit!=ob && finalDM)
finalDM->release(finalDM);
}
-// else if(!em && (G.f & G_SCULPTMODE) &&(scene->sculptdata.flags & SCULPT_DRAW_FAST) &&
-// OBACT==ob && !sculpt_modifiers_active(ob)) {
-// XXX sculptmode_draw_mesh(0);
-// }
else {
/* don't create boundbox here with mesh_get_bb(), the derived system will make it, puts deformed bb's OK */
if(me->totface<=4 || boundbox_clip(rv3d, ob->obmat, (ob->bb)? ob->bb: me->bb)) {
@@ -3155,7 +3170,7 @@ static int draw_mesh_object(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base
(check_alpha)? &do_alpha_pass: NULL);
}
- draw_mesh_fancy(scene, v3d, rv3d, base, dt, flag);
+ draw_mesh_fancy(scene, ar, v3d, rv3d, base, dt, flag);
GPU_end_object_materials();
@@ -3183,7 +3198,7 @@ static int drawDispListwire(ListBase *dlbase)
if(dlbase==NULL) return 1;
- glDisableClientState(GL_NORMAL_ARRAY);
+ glEnableClientState(GL_VERTEX_ARRAY);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
for(dl= dlbase->first; dl; dl= dl->next) {
@@ -3260,7 +3275,7 @@ static int drawDispListwire(ListBase *dlbase)
}
}
- glEnableClientState(GL_NORMAL_ARRAY);
+ glDisableClientState(GL_VERTEX_ARRAY);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
return 0;
@@ -3279,6 +3294,7 @@ static void drawDispListsolid(ListBase *lb, Object *ob, int glsl)
glGetFloatv(GL_CURRENT_COLOR, curcol);
glEnable(GL_LIGHTING);
+ glEnableClientState(GL_VERTEX_ARRAY);
if(ob->transflag & OB_NEG_SCALE) glFrontFace(GL_CW);
else glFrontFace(GL_CCW);
@@ -3337,10 +3353,12 @@ static void drawDispListsolid(ListBase *lb, Object *ob, int glsl)
if(dl->rt & CU_SMOOTH) glShadeModel(GL_SMOOTH);
else glShadeModel(GL_FLAT);
-
+
+ glEnableClientState(GL_NORMAL_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, dl->verts);
glNormalPointer(GL_FLOAT, 0, dl->nors);
glDrawElements(GL_QUADS, 4*dl->totindex, GL_UNSIGNED_INT, dl->index);
+ glDisableClientState(GL_NORMAL_ARRAY);
}
break;
@@ -3350,32 +3368,35 @@ static void drawDispListsolid(ListBase *lb, Object *ob, int glsl)
glVertexPointer(3, GL_FLOAT, 0, dl->verts);
/* voor polys only one normal needed */
- if(index3_nors_incr==0) {
- glDisableClientState(GL_NORMAL_ARRAY);
- glNormal3fv(ndata);
+ if(index3_nors_incr) {
+ glEnableClientState(GL_NORMAL_ARRAY);
+ glNormalPointer(GL_FLOAT, 0, dl->nors);
}
else
- glNormalPointer(GL_FLOAT, 0, dl->nors);
+ glNormal3fv(ndata);
glDrawElements(GL_TRIANGLES, 3*dl->parts, GL_UNSIGNED_INT, dl->index);
- if(index3_nors_incr==0)
- glEnableClientState(GL_NORMAL_ARRAY);
+ if(index3_nors_incr)
+ glDisableClientState(GL_NORMAL_ARRAY);
break;
case DL_INDEX4:
GPU_enable_material(dl->col+1, (glsl)? &gattribs: NULL);
+ glEnableClientState(GL_NORMAL_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, dl->verts);
glNormalPointer(GL_FLOAT, 0, dl->nors);
glDrawElements(GL_QUADS, 4*dl->parts, GL_UNSIGNED_INT, dl->index);
+ glDisableClientState(GL_NORMAL_ARRAY);
break;
}
dl= dl->next;
}
+ glDisableClientState(GL_VERTEX_ARRAY);
glShadeModel(GL_FLAT);
glDisable(GL_LIGHTING);
glFrontFace(GL_CCW);
@@ -3389,7 +3410,7 @@ static void drawDispListshaded(ListBase *lb, Object *ob)
if(lb==NULL) return;
glShadeModel(GL_SMOOTH);
- glDisableClientState(GL_NORMAL_ARRAY);
+ glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
dl= lb->first;
@@ -3428,7 +3449,7 @@ static void drawDispListshaded(ListBase *lb, Object *ob)
}
glShadeModel(GL_FLAT);
- glEnableClientState(GL_NORMAL_ARRAY);
+ glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
}
@@ -3968,6 +3989,10 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
pdd->vedata = MEM_callocN(2 * (totpart + totchild) * 3 * sizeof(float), "particle_vedata");
need_v = 1;
+ } else if (pdd->vedata) {
+ /* velocity data not needed, so free it */
+ MEM_freeN(pdd->vedata);
+ pdd->vedata= NULL;
}
pdd->vd= pdd->vdata;
@@ -4127,7 +4152,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
if(drawn) {
/* additional things to draw for each particle */
/* (velocity, size and number) */
- if(pdd->vedata){
+ if((part->draw & PART_DRAW_VEL) && pdd->vedata){
VECCOPY(pdd->ved,state.co);
pdd->ved+=3;
VECCOPY(vel,state.vel);
@@ -4165,14 +4190,12 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
/* 6. */
glGetIntegerv(GL_POLYGON_MODE, polygonmode);
- glDisableClientState(GL_NORMAL_ARRAY);
+ glEnableClientState(GL_VERTEX_ARRAY);
if(draw_as==PART_DRAW_PATH){
ParticleCacheKey **cache, *path;
float *cd2=0,*cdata2=0;
- glEnableClientState(GL_VERTEX_ARRAY);
-
/* setup gl flags */
if(ob_dt > OB_WIRE) {
glEnableClientState(GL_NORMAL_ARRAY);
@@ -4300,7 +4323,6 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
glDisableClientState(GL_COLOR_ARRAY);
cpack(0xC0C0C0);
- glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, pdd->vedata);
glDrawArrays(GL_LINES, 0, 2*totve);
@@ -4313,7 +4335,8 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
glDisable(GL_LIGHTING);
glDisableClientState(GL_COLOR_ARRAY);
- glEnableClientState(GL_NORMAL_ARRAY);
+ glDisableClientState(GL_VERTEX_ARRAY);
+ glDisableClientState(GL_NORMAL_ARRAY);
if(states)
MEM_freeN(states);
@@ -4335,6 +4358,16 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
wmLoadMatrix(rv3d->viewmat);
}
+static void draw_update_ptcache_edit(Scene *scene, Object *ob, PTCacheEdit *edit)
+{
+ if(edit->psys && edit->psys->flag & PSYS_HAIR_UPDATED)
+ PE_update_object(scene, ob, 0);
+
+ /* create path and child path cache if it doesn't exist already */
+ if(edit->pathcache==0)
+ psys_cache_edit_paths(scene, ob, edit, CFRA);
+}
+
static void draw_ptcache_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob, PTCacheEdit *edit, int dt)
{
ParticleCacheKey **cache, *path, *pkey;
@@ -4343,19 +4376,10 @@ static void draw_ptcache_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Obj
ParticleEditSettings *pset = PE_settings(scene);
int i, k, totpoint = edit->totpoint, timed = pset->flag & PE_FADE_TIME ? pset->fade_frames : 0;
int steps=1;
- char nosel[4], sel[4];
float sel_col[3];
float nosel_col[3];
float *pathcol = NULL, *pcol;
-
- if(edit->psys && edit->psys->flag & PSYS_HAIR_UPDATED)
- PE_update_object(scene, ob, 0);
-
- /* create path and child path cache if it doesn't exist already */
- if(edit->pathcache==0)
- psys_cache_edit_paths(scene, ob, edit, CFRA);
-
if(edit->pathcache==0)
return;
@@ -4366,14 +4390,8 @@ static void draw_ptcache_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Obj
glDisable(GL_DEPTH_TEST);
/* get selection theme colors */
- UI_GetThemeColor3ubv(TH_VERTEX_SELECT, sel);
- UI_GetThemeColor3ubv(TH_VERTEX, nosel);
- sel_col[0]=(float)sel[0]/255.0f;
- sel_col[1]=(float)sel[1]/255.0f;
- sel_col[2]=(float)sel[2]/255.0f;
- nosel_col[0]=(float)nosel[0]/255.0f;
- nosel_col[1]=(float)nosel[1]/255.0f;
- nosel_col[2]=(float)nosel[2]/255.0f;
+ UI_GetThemeColor3fv(TH_VERTEX_SELECT, sel_col);
+ UI_GetThemeColor3fv(TH_VERTEX, nosel_col);
/* draw paths */
if(timed) {
@@ -4383,7 +4401,6 @@ static void draw_ptcache_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Obj
}
glEnableClientState(GL_VERTEX_ARRAY);
- glDisableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glEnable(GL_COLOR_MATERIAL);
@@ -4493,69 +4510,175 @@ static void draw_ptcache_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Obj
glDisable(GL_LIGHTING);
glDisable(GL_COLOR_MATERIAL);
glDisableClientState(GL_COLOR_ARRAY);
- glEnableClientState(GL_NORMAL_ARRAY);
+ glDisableClientState(GL_NORMAL_ARRAY);
+ glDisableClientState(GL_VERTEX_ARRAY);
glEnable(GL_DEPTH_TEST);
glLineWidth(1.0f);
glPointSize(1.0);
}
-static void draw_sb_motion(Scene *scene, Object *ob)
+//static void ob_draw_RE_motion(float com[3],float rotscale[3][3],float tw,float th)
+static void ob_draw_RE_motion(float com[3],float rotscale[3][3],float itw,float ith,float drw_size)
{
- SoftBody *sb = 0;
- if (sb= ob->soft){
- if(sb->solverflags & SBSO_MONITOR ||sb->solverflags & SBSO_ESTIMATEIPO){
- /* draw com */
- float rt[3][3],sc[3][3],tr[3][3];
- /* looks like to swap a b in reverse */
- copy_m3_m3(sc,sb->lscale);
- copy_m3_m3(rt,sb->lrot);
- mul_m3_m3m3(tr,rt,sc);
- if(1){
- float root[3],tip[3];
+ float tr[3][3];
+ float root[3],tip[3];
+ float tw,th;
+ /* take a copy for not spoiling original */
+ copy_m3_m3(tr,rotscale);
+ tw = itw * drw_size;
+ th = ith * drw_size;
+
+ glColor4ub(0x7F, 0x00, 0x00, 155);
+ glBegin(GL_LINES);
+ root[1] = root[2] = 0.0f;
+ root[0] = -drw_size;
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ tip[1] = tip[2] = 0.0f;
+ tip[0] = drw_size;
+ mul_m3_v3(tr,tip);
+ VECADD(tip,tip,com);
+ glVertex3fv(tip);
+ glEnd();
- glBegin(GL_LINES);
- root[1] = root[2] = 0.0f;
- root[0] = -1.0f;
- mul_m3_v3(tr,root);
- VECADD(root,root,sb->lcom);
- glVertex3fv(root);
- tip[1] = tip[2] = 0.0f;
- tip[0] = 1.0f;
- mul_m3_v3(tr,tip);
- VECADD(tip,tip,sb->lcom);
- glVertex3fv(tip);
- glEnd();
+ root[1] =0.0f; root[2] = tw;
+ root[0] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
- glBegin(GL_LINES);
- root[0] = root[2] = 0.0f;
- root[1] = -1.0f;
- mul_m3_v3(tr,root);
- VECADD(root,root,sb->lcom);
- glVertex3fv(root);
- tip[0] = tip[2] = 0.0f;
- tip[1] = 1.0f;
- mul_m3_v3(tr,tip);
- VECADD(tip,tip,sb->lcom);
- glVertex3fv(tip);
- glEnd();
+ root[1] =0.0f; root[2] = -tw;
+ root[0] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
- glBegin(GL_LINES);
- root[0] = root[1] = 0.0f;
- root[2] = -1.0f;
- mul_m3_v3(tr,root);
- VECADD(root,root,sb->lcom);
- glVertex3fv(root);
- tip[0] = tip[1] = 0.0f;
- tip[2] = 1.0f;
- mul_m3_v3(tr,tip);
- VECADD(tip,tip,sb->lcom);
- glVertex3fv(tip);
- glEnd();
- }
+ root[1] =tw; root[2] = 0.0f;
+ root[0] =th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
- }
- }
-};
+ root[1] =-tw; root[2] = 0.0f;
+ root[0] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+
+ glColor4ub(0x00, 0x7F, 0x00, 155);
+
+ glBegin(GL_LINES);
+ root[0] = root[2] = 0.0f;
+ root[1] = -drw_size;
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ tip[0] = tip[2] = 0.0f;
+ tip[1] = drw_size;
+ mul_m3_v3(tr,tip);
+ VECADD(tip,tip,com);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[0] =0.0f; root[2] = tw;
+ root[1] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[0] =0.0f; root[2] = -tw;
+ root[1] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[0] =tw; root[2] = 0.0f;
+ root[1] =th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[0] =-tw; root[2] = 0.0f;
+ root[1] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+
+ glColor4ub(0x00, 0x00, 0x7F, 155);
+ glBegin(GL_LINES);
+ root[0] = root[1] = 0.0f;
+ root[2] = -drw_size;
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ tip[0] = tip[1] = 0.0f;
+ tip[2] = drw_size;
+ mul_m3_v3(tr,tip);
+ VECADD(tip,tip,com);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[0] =0.0f; root[1] = tw;
+ root[2] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[0] =0.0f; root[1] = -tw;
+ root[2] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[0] = tw; root[1] = 0.0f;
+ root[2] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+
+ root[0] = -tw; root[1] = 0.0f;
+ root[2] = th;
+ glBegin(GL_LINES);
+ mul_m3_v3(tr,root);
+ VECADD(root,root,com);
+ glVertex3fv(root);
+ glVertex3fv(tip);
+ glEnd();
+}
/*place to add drawers */
unsigned int nurbcol[8]= {
@@ -5710,7 +5833,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
if((flag & DRAW_CONSTCOLOR) == 0) {
project_short(ar, ob->obmat[3], &base->sx);
- if((G.moving & G_TRANSFORM_OBJ) && (base->flag & (SELECT+BA_WAS_SEL))) UI_ThemeColor(TH_TRANSFORM);
+ if( (!scene->obedit) && (G.moving & G_TRANSFORM_OBJ) && (base->flag & (SELECT+BA_WAS_SEL))) UI_ThemeColor(TH_TRANSFORM);
else {
if(ob->type==OB_LAMP) UI_ThemeColor(TH_LAMP);
@@ -5809,7 +5932,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
switch( ob->type) {
case OB_MESH:
- empty_object= draw_mesh_object(scene, v3d, rv3d, base, dt, flag);
+ empty_object= draw_mesh_object(scene, ar, v3d, rv3d, base, dt, flag);
if(flag!=DRAW_CONSTCOLOR) dtx &= ~OB_DRAWWIRE; // mesh draws wire itself
break;
@@ -5952,26 +6075,25 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
default:
drawaxes(1.0, flag, OB_ARROWS);
}
- if(ob->soft /*&& flag & OB_SBMOTION*/) draw_sb_motion(scene, ob);
+ if(ob->soft /*&& flag & OB_SBMOTION*/){
+ float mrt[3][3],msc[3][3],mtr[3][3];
+ SoftBody *sb = 0;
+ float tipw = 0.5f, tiph = 0.5f,drawsize = 4.0f;
+ if ((sb= ob->soft)){
+ if(sb->solverflags & SBSO_MONITOR ||sb->solverflags & SBSO_ESTIMATEIPO){
- if(ob->pd && ob->pd->forcefield) draw_forcefield(scene, ob);
-
- /* particle mode has to be drawn first so that possible child particles get cached in edit mode */
- if( (warning_recursive==0) &&
- (flag & DRAW_PICKING)==0 &&
- (!scene->obedit)
- ) {
-
- if(ob->mode & OB_MODE_PARTICLE_EDIT && ob==OBACT) {
- PTCacheEdit *edit = PE_get_current(scene, ob);
- if(edit) {
wmLoadMatrix(rv3d->viewmat);
- draw_ptcache_edit(scene, v3d, rv3d, ob, edit, dt);
+ copy_m3_m3(msc,sb->lscale);
+ copy_m3_m3(mrt,sb->lrot);
+ mul_m3_m3m3(mtr,mrt,msc);
+ ob_draw_RE_motion(sb->lcom,mtr,tipw,tiph,drawsize);
wmMultMatrix(ob->obmat);
}
}
}
+ if(ob->pd && ob->pd->forcefield) draw_forcefield(scene, ob);
+
/* code for new particle system */
if( (warning_recursive==0) &&
(ob->particlesystem.first) &&
@@ -5979,6 +6101,8 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
(ob!=scene->obedit)
) {
ParticleSystem *psys;
+ PTCacheEdit *edit = PE_get_current(scene, ob);
+
if(col || (ob->flag & SELECT)) cpack(0xFFFFFF); /* for visibility, also while wpaint */
//glDepthMask(GL_FALSE);
@@ -5986,8 +6110,14 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
view3d_cached_text_draw_begin();
- for(psys=ob->particlesystem.first; psys; psys=psys->next)
+ for(psys=ob->particlesystem.first; psys; psys=psys->next) {
+ /* run this so that possible child particles get cached */
+ if(ob->mode & OB_MODE_PARTICLE_EDIT && ob==OBACT)
+ if(edit && edit->psys == psys)
+ draw_update_ptcache_edit(scene, ob, edit);
+
draw_new_particle_system(scene, v3d, rv3d, base, psys, dt);
+ }
view3d_cached_text_draw_end(v3d, ar, 0, NULL);
@@ -5997,6 +6127,22 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
if(col) cpack(col);
}
+ /* draw edit particles last so that they can draw over child particles */
+ if( (warning_recursive==0) &&
+ (flag & DRAW_PICKING)==0 &&
+ (!scene->obedit)
+ ) {
+
+ if(ob->mode & OB_MODE_PARTICLE_EDIT && ob==OBACT) {
+ PTCacheEdit *edit = PE_get_current(scene, ob);
+ if(edit) {
+ wmLoadMatrix(rv3d->viewmat);
+ draw_ptcache_edit(scene, v3d, rv3d, ob, edit, dt);
+ wmMultMatrix(ob->obmat);
+ }
+ }
+ }
+
/* draw code for smoke */
if((md = modifiers_findByType(ob, eModifierType_Smoke)))
{
@@ -6387,10 +6533,8 @@ static void bbs_mesh_solid(Scene *scene, View3D *v3d, Object *ob)
int ind;
colors = MEM_mallocN(dm->getNumTessFaces(dm)*sizeof(MCol)*4,"bbs_mesh_solid");
for(i=0;i<dm->getNumFaces(dm);i++) {
- if( index != 0 )
- ind = index[i];
- else
- ind = i;
+ ind= ( index )? index[i]: i;
+
if (face_sel_mode==0 || !(me->mface[ind].flag&ME_HIDE)) {
unsigned int fbindex = index_to_framebuffer(ind+1);
for(j=0;j<4;j++) {
@@ -6517,7 +6661,7 @@ static void draw_object_mesh_instance(Scene *scene, View3D *v3d, RegionView3D *r
glEnable(GL_LIGHTING);
if(dm) {
- dm->drawFacesSolid(dm, GPU_enable_material);
+ dm->drawFacesSolid(dm, NULL, 0, GPU_enable_material);
GPU_end_object_materials();
}
else if(edm)
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index d11eee466ed..f1db3ca53fc 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -340,7 +340,7 @@ static void view3d_main_area_init(wmWindowManager *wm, ARegion *ar)
keymap= WM_keymap_find(wm->defaultconf, "Sculpt", 0, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
- keymap= WM_keymap_find(wm->defaultconf, "EditMesh", 0, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "Mesh", 0, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
keymap= WM_keymap_find(wm->defaultconf, "Curve", 0, 0);
@@ -359,7 +359,7 @@ static void view3d_main_area_init(wmWindowManager *wm, ARegion *ar)
WM_event_add_keymap_handler(&ar->handlers, keymap);
/* armature sketching needs to take over mouse */
- keymap= WM_keymap_find(wm->defaultconf, "Armature_Sketch", 0, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "Armature Sketch", 0, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
keymap= WM_keymap_find(wm->defaultconf, "Particle", 0, 0);
@@ -376,10 +376,10 @@ static void view3d_main_area_init(wmWindowManager *wm, ARegion *ar)
WM_event_add_keymap_handler(&ar->handlers, keymap);
/* own keymap, last so modes can override it */
- keymap= WM_keymap_find(wm->defaultconf, "View3D Generic", SPACE_VIEW3D, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "3D View Generic", SPACE_VIEW3D, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
- keymap= WM_keymap_find(wm->defaultconf, "View3D", SPACE_VIEW3D, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "3D View", SPACE_VIEW3D, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
}
@@ -452,12 +452,13 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn)
case ND_OB_ACTIVE:
case ND_OB_SELECT:
case ND_LAYER:
- ED_region_tag_redraw(ar);
- break;
+ case ND_RENDER_OPTIONS:
case ND_MODE:
ED_region_tag_redraw(ar);
break;
}
+ if (wmn->action == NA_EDITED)
+ ED_region_tag_redraw(ar);
break;
case NC_OBJECT:
switch(wmn->data) {
@@ -517,6 +518,10 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn)
if(wmn->data == ND_SPACE_VIEW3D)
ED_region_tag_redraw(ar);
break;
+ case NC_ID:
+ if(wmn->action == NA_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
}
}
@@ -536,7 +541,7 @@ static void view3d_main_area_cursor(wmWindow *win, ScrArea *sa, ARegion *ar)
/* add handlers, stuff you only do once or on area/region changes */
static void view3d_header_area_init(wmWindowManager *wm, ARegion *ar)
{
- wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "View3D Generic", SPACE_VIEW3D, 0);
+ wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "3D View Generic", SPACE_VIEW3D, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
@@ -577,7 +582,7 @@ static void view3d_buttons_area_init(wmWindowManager *wm, ARegion *ar)
ED_region_panels_init(wm, ar);
- keymap= WM_keymap_find(wm->defaultconf, "View3D Generic", SPACE_VIEW3D, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "3D View Generic", SPACE_VIEW3D, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
}
@@ -639,6 +644,10 @@ static void view3d_buttons_area_listener(ARegion *ar, wmNotifier *wmn)
if(wmn->data == ND_SPACE_VIEW3D)
ED_region_tag_redraw(ar);
break;
+ case NC_ID:
+ if(wmn->action == NA_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
}
}
@@ -649,7 +658,7 @@ static void view3d_tools_area_init(wmWindowManager *wm, ARegion *ar)
ED_region_panels_init(wm, ar);
- keymap= WM_keymap_find(wm->defaultconf, "View3D Generic", SPACE_VIEW3D, 0);
+ keymap= WM_keymap_find(wm->defaultconf, "3D View Generic", SPACE_VIEW3D, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
}
@@ -767,6 +776,7 @@ void ED_spacetype_view3d(void)
ARegionType *art;
st->spaceid= SPACE_VIEW3D;
+ strncpy(st->name, "View3D", BKE_ST_MAXNAME);
st->new= view3d_new;
st->free= view3d_free;
@@ -831,7 +841,7 @@ void ED_spacetype_view3d(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype view3d region");
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER;
art->listener= view3d_header_area_listener;
art->init= view3d_header_area_init;
art->draw= view3d_header_area_draw;
diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c
index 9568a3d667e..00addc10cbb 100644
--- a/source/blender/editors/space_view3d/view3d_buttons.c
+++ b/source/blender/editors/space_view3d/view3d_buttons.c
@@ -500,7 +500,7 @@ static void v3d_transform_butsR(uiLayout *layout, PointerRNA *ptr)
{
uiLayout *split, *colsub;
- split = uiLayoutSplit(layout, 0.8);
+ split = uiLayoutSplit(layout, 0.8, 0);
if (ptr->type == &RNA_PoseBone) {
PointerRNA boneptr;
@@ -516,47 +516,42 @@ static void v3d_transform_butsR(uiLayout *layout, PointerRNA *ptr)
uiItemL(colsub, "", 0);
uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_location", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY);
- split = uiLayoutSplit(layout, 0.8);
+ split = uiLayoutSplit(layout, 0.8, 0);
switch(RNA_enum_get(ptr, "rotation_mode")) {
- case ROT_MODE_XYZ:
- case ROT_MODE_XZY:
- case ROT_MODE_YXZ:
- case ROT_MODE_YZX:
- case ROT_MODE_ZXY:
- case ROT_MODE_ZYX:
- colsub = uiLayoutColumn(split, 1);
- uiItemR(colsub, "Rotation", 0, ptr, "rotation_euler", 0);
- colsub = uiLayoutColumn(split, 1);
- uiItemL(colsub, "", 0);
- uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY);
- break;
- case ROT_MODE_QUAT:
+ case ROT_MODE_QUAT: /* quaternion */
colsub = uiLayoutColumn(split, 1);
uiItemR(colsub, "Rotation", 0, ptr, "rotation_quaternion", 0);
colsub = uiLayoutColumn(split, 1);
- uiItemR(colsub, "W", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE);
+ uiItemR(colsub, "4L", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE);
if (RNA_boolean_get(ptr, "lock_rotations_4d"))
uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation_w", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY);
else
uiItemL(colsub, "", 0);
uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY);
break;
- case ROT_MODE_AXISANGLE:
+ case ROT_MODE_AXISANGLE: /* axis angle */
colsub = uiLayoutColumn(split, 1);
uiItemR(colsub, "Rotation", 0, ptr, "rotation_axis_angle", 0);
colsub = uiLayoutColumn(split, 1);
- uiItemR(colsub, "W", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE);
+ uiItemR(colsub, "4L", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE);
if (RNA_boolean_get(ptr, "lock_rotations_4d"))
uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation_w", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY);
else
uiItemL(colsub, "", 0);
uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY);
break;
+ default: /* euler rotations */
+ colsub = uiLayoutColumn(split, 1);
+ uiItemR(colsub, "Rotation", 0, ptr, "rotation_euler", 0);
+ colsub = uiLayoutColumn(split, 1);
+ uiItemL(colsub, "", 0);
+ uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY);
+ break;
}
uiItemR(layout, "", 0, ptr, "rotation_mode", 0);
- split = uiLayoutSplit(layout, 0.8);
+ split = uiLayoutSplit(layout, 0.8, 0);
colsub = uiLayoutColumn(split, 1);
uiItemR(colsub, "Scale", 0, ptr, "scale", 0);
colsub = uiLayoutColumn(split, 1);
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index b077dd1a0f5..9ea8ccb667a 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -343,7 +343,7 @@ static void drawgrid(UnitSettings *unit, ARegion *ar, View3D *v3d, char **grid_u
}
}
else { // start blending out
- UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*10));
+ UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*6));
drawgrid_draw(ar, wx, wy, x, y, dx);
UI_ThemeColor(TH_GRID);
@@ -351,7 +351,7 @@ static void drawgrid(UnitSettings *unit, ARegion *ar, View3D *v3d, char **grid_u
}
}
else { // start blending out (GRID_MIN_PX < dx < (GRID_MIN_PX*10))
- UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*10));
+ UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*6));
drawgrid_draw(ar, wx, wy, x, y, dx);
UI_ThemeColor(TH_GRID);
@@ -370,21 +370,21 @@ static void drawgrid(UnitSettings *unit, ARegion *ar, View3D *v3d, char **grid_u
drawgrid_draw(ar, wx, wy, x, y, dx);
}
else {
- UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*10));
+ UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*6));
drawgrid_draw(ar, wx, wy, x, y, dx);
UI_ThemeColor(TH_GRID);
drawgrid_draw(ar, wx, wy, x, y, dx*sublines);
}
}
else {
- UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*10));
+ UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*6));
drawgrid_draw(ar, wx, wy, x, y, dx);
UI_ThemeColor(TH_GRID);
drawgrid_draw(ar, wx, wy, x, y, dx*sublines);
}
}
else {
- UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*10));
+ UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*6));
drawgrid_draw(ar, wx, wy, x, y, dx);
UI_ThemeColor(TH_GRID);
drawgrid_draw(ar, wx, wy, x, y, dx*sublines);
@@ -1113,11 +1113,11 @@ void backdrawview3d(Scene *scene, ARegion *ar, View3D *v3d)
else if((base && (base->object->mode & OB_MODE_PARTICLE_EDIT)) && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT));
else if(scene->obedit && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT));
else {
- v3d->flag &= ~V3D_NEEDBACKBUFDRAW;
+ v3d->flag &= ~V3D_INVALID_BACKBUF;
return;
}
- if( !(v3d->flag & V3D_NEEDBACKBUFDRAW) ) return;
+ if( !(v3d->flag & V3D_INVALID_BACKBUF) ) return;
// if(test) {
// if(qtest()) {
@@ -1162,7 +1162,7 @@ void backdrawview3d(Scene *scene, ARegion *ar, View3D *v3d)
draw_object_backbufsel(scene, v3d, rv3d, base->object);
}
- v3d->flag &= ~V3D_NEEDBACKBUFDRAW;
+ v3d->flag &= ~V3D_INVALID_BACKBUF;
G.f &= ~G_BACKBUFSEL;
v3d->zbuf= FALSE;
@@ -1183,7 +1183,7 @@ void backdrawview3d(Scene *scene, ARegion *ar, View3D *v3d)
void view3d_validate_backbuf(ViewContext *vc)
{
- if(vc->v3d->flag & V3D_NEEDBACKBUFDRAW)
+ if(vc->v3d->flag & V3D_INVALID_BACKBUF)
backdrawview3d(vc->scene, vc->ar, vc->v3d);
}
@@ -1643,37 +1643,6 @@ void view3d_update_depths(ARegion *ar, View3D *v3d)
}
}
-/* Enable sculpting in wireframe mode by drawing sculpt object only to the depth buffer */
-static void draw_sculpt_depths(Scene *scene, ARegion *ar, View3D *v3d)
-{
- Object *ob = OBACT;
-
- int dt= MIN2(v3d->drawtype, ob->dt);
- if(v3d->zbuf==0 && dt>OB_WIRE)
- dt= OB_WIRE;
- if(dt == OB_WIRE) {
- GLboolean depth_on;
- int orig_vdt = v3d->drawtype;
- int orig_zbuf = v3d->zbuf;
- int orig_odt = ob->dt;
-
- glGetBooleanv(GL_DEPTH_TEST, &depth_on);
- v3d->drawtype = ob->dt = OB_SOLID;
- v3d->zbuf = 1;
-
- glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
- glEnable(GL_DEPTH_TEST);
- draw_object(scene, ar, v3d, BASACT, 0);
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
- if(!depth_on)
- glDisable(GL_DEPTH_TEST);
-
- v3d->drawtype = orig_vdt;
- v3d->zbuf = orig_zbuf;
- ob->dt = orig_odt;
- }
-}
-
void draw_depth(Scene *scene, ARegion *ar, View3D *v3d, int (* func)(void *))
{
RegionView3D *rv3d= ar->regiondata;
@@ -1891,8 +1860,6 @@ static CustomDataMask get_viewedit_datamask(bScreen *screen, Scene *scene, Objec
mask |= CD_MASK_MCOL;
if(ob->mode & OB_MODE_WEIGHT_PAINT)
mask |= CD_MASK_WEIGHT_MCOL;
- if(ob->mode & OB_MODE_SCULPT)
- mask |= CD_MASK_MDISPS;
}
return mask;
@@ -1949,7 +1916,7 @@ void ED_view3d_draw_offscreen(Scene *scene, View3D *v3d, ARegion *ar, int winx,
Base *base;
int bwinx, bwiny;
- wmPushMatrix();
+ glPushMatrix();
/* set temporary new size */
bwinx= ar->winx;
@@ -2024,7 +1991,7 @@ void ED_view3d_draw_offscreen(Scene *scene, View3D *v3d, ARegion *ar, int winx,
ar->winx= bwinx;
ar->winy= bwiny;
- wmPopMatrix();
+ glPopMatrix();
}
void view3d_main_area_draw(const bContext *C, ARegion *ar)
@@ -2137,7 +2104,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar)
}
// retopo= retopo_mesh_check() || retopo_curve_check();
- sculptparticle= (obact && obact->mode & (OB_MODE_SCULPT|OB_MODE_PARTICLE_EDIT)) && !scene->obedit;
+ sculptparticle= (obact && obact->mode & (OB_MODE_PARTICLE_EDIT)) && !scene->obedit;
if(retopo)
view3d_update_depths(ar, v3d);
@@ -2150,8 +2117,6 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar)
}
if(!retopo && sculptparticle && !(obact && (obact->dtx & OB_DRAWXRAY))) {
- if(obact && obact->mode & OB_MODE_SCULPT)
- draw_sculpt_depths(scene, ar, v3d);
view3d_update_depths(ar, v3d);
}
@@ -2166,8 +2131,6 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar)
view3d_draw_xray(scene, ar, v3d, 1); // clears zbuffer if it is used!
if(!retopo && sculptparticle && (obact && (OBACT->dtx & OB_DRAWXRAY))) {
- if(obact && obact->mode & OB_MODE_SCULPT)
- draw_sculpt_depths(scene, ar, v3d);
view3d_update_depths(ar, v3d);
}
@@ -2189,8 +2152,6 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar)
ED_region_pixelspace(ar);
- /* Draw Sculpt Mode brush XXX (removed) */
-
// retopo_paint_view_update(v3d);
// retopo_draw_paint_lines();
@@ -2227,24 +2188,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar)
/* XXX here was the blockhandlers for floating panels */
- if(ob && ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT)) {
- v3d->flag |= V3D_NEEDBACKBUFDRAW;
- // XXX addafterqueue(ar->win, BACKBUFDRAW, 1);
- }
-
- if((ob && ob->mode & OB_MODE_PARTICLE_EDIT) && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT)) {
- v3d->flag |= V3D_NEEDBACKBUFDRAW;
- // XXX addafterqueue(ar->win, BACKBUFDRAW, 1);
- }
-
- // test for backbuf select
- if(scene->obedit && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT)) {
-
- v3d->flag |= V3D_NEEDBACKBUFDRAW;
- // XXX if(afterqtest(ar->win, BACKBUFDRAW)==0) {
- // addafterqueue(ar->win, BACKBUFDRAW, 1);
- //}
- }
+ v3d->flag |= V3D_INVALID_BACKBUF;
}
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c
index 29b0c6cef5c..dc19863b71b 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -234,13 +234,20 @@ typedef struct ViewOpsData {
ARegion *ar;
RegionView3D *rv3d;
+ /* needed for continuous zoom */
+ wmTimer *timer;
+ double timer_lastdraw;
+
float oldquat[4];
float trackvec[3];
- float ofs[3], obofs[3];
float reverse, dist0;
float grid, far;
short axis_snap; /* view rotate only */
+ /* use for orbit selection and auto-dist */
+ float ofs[3], dyn_ofs[3];
+ short use_dyn_ofs;
+
int origx, origy, oldx, oldy;
int origkey; /* the key that triggered the operator */
@@ -275,7 +282,7 @@ static void calctrackballvec(rcti *rect, int mx, int my, float *vec)
}
-static void viewops_data(bContext *C, wmOperator *op, wmEvent *event)
+static void viewops_data_create(bContext *C, wmOperator *op, wmEvent *event)
{
static float lastofs[3] = {0,0,0};
View3D *v3d = CTX_wm_view3d(C);
@@ -292,14 +299,56 @@ static void viewops_data(bContext *C, wmOperator *op, wmEvent *event)
vod->origx= vod->oldx= event->x;
vod->origy= vod->oldy= event->y;
vod->origkey= event->type; /* the key that triggered the operator. */
-
- if (U.uiflag & USER_ORBIT_SELECTION)
- {
+ vod->use_dyn_ofs= (U.uiflag & USER_ORBIT_SELECTION) ? 1:0;
+
+ if (vod->use_dyn_ofs) {
VECCOPY(vod->ofs, rv3d->ofs);
/* If there's no selection, lastofs is unmodified and last value since static */
- calculateTransformCenter(C, event, V3D_CENTROID, lastofs);
- VECCOPY(vod->obofs, lastofs);
- mul_v3_fl(vod->obofs, -1.0f);
+ calculateTransformCenter(C, V3D_CENTROID, lastofs);
+ VECCOPY(vod->dyn_ofs, lastofs);
+ mul_v3_fl(vod->dyn_ofs, -1.0f);
+ }
+ else if (U.uiflag & USER_ORBIT_ZBUF) {
+
+ view3d_operator_needs_opengl(C); /* needed for zbuf drawing */
+
+ if((vod->use_dyn_ofs=view_autodist(CTX_data_scene(C), vod->ar, v3d, event->mval, vod->dyn_ofs))) {
+ if (rv3d->persp==RV3D_PERSP) {
+ float my_origin[3]; /* original G.vd->ofs */
+ float my_pivot[3]; /* view */
+ float dvec[3];
+
+ // locals for dist correction
+ float mat[3][3];
+ float upvec[3];
+
+ VECCOPY(my_origin, rv3d->ofs);
+ negate_v3(my_origin); /* ofs is flipped */
+
+ /* Set the dist value to be the distance from this 3d point */
+ /* this means youll always be able to zoom into it and panning wont go bad when dist was zero */
+
+ /* remove dist value */
+ upvec[0] = upvec[1] = 0;
+ upvec[2] = rv3d->dist;
+ copy_m3_m4(mat, rv3d->viewinv);
+
+ mul_m3_v3(mat, upvec);
+ sub_v3_v3v3(my_pivot, rv3d->ofs, upvec);
+ negate_v3(my_pivot); /* ofs is flipped */
+
+ /* find a new ofs value that is allong the view axis (rather then the mouse location) */
+ closest_to_line_v3(dvec, vod->dyn_ofs, my_pivot, my_origin);
+ vod->dist0 = rv3d->dist = len_v3v3(my_pivot, dvec);
+
+ negate_v3(dvec);
+ VECCOPY(rv3d->ofs, dvec);
+ }
+ negate_v3(vod->dyn_ofs);
+ VECCOPY(vod->ofs, rv3d->ofs);
+ } else {
+ vod->ofs[0] = vod->ofs[1] = vod->ofs[2] = 0.0f;
+ }
}
/* lookup, we dont pass on v3d to prevent confusement */
@@ -314,6 +363,24 @@ static void viewops_data(bContext *C, wmOperator *op, wmEvent *event)
if (rv3d->persmat[2][1] < 0.0f)
vod->reverse= -1.0f;
+ rv3d->rflag |= RV3D_NAVIGATING;
+}
+
+static void viewops_data_free(bContext *C, wmOperator *op)
+{
+ Paint *p = paint_get_active(CTX_data_scene(C));
+ ViewOpsData *vod= op->customdata;
+
+ vod->rv3d->rflag &= ~RV3D_NAVIGATING;
+
+ if(p && (p->flags & PAINT_FAST_NAVIGATE))
+ ED_region_tag_redraw(vod->ar);
+
+ if(vod->timer)
+ WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), vod->timer);
+
+ MEM_freeN(vod);
+ op->customdata= NULL;
}
/* ************************** viewrotate **********************************/
@@ -413,7 +480,6 @@ void viewrotate_modal_keymap(wmKeyConfig *keyconf)
static void viewrotate_apply(ViewOpsData *vod, int x, int y)
{
RegionView3D *rv3d= vod->rv3d;
- int use_sel= U.uiflag & USER_ORBIT_SELECTION;
rv3d->view= 0; /* need to reset everytime because of view snapping */
@@ -449,7 +515,7 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y)
q1[3]*= si;
mul_qt_qtqt(rv3d->viewquat, q1, vod->oldquat);
- if (use_sel) {
+ if (vod->use_dyn_ofs) {
/* compute the post multiplication quat, to rotate the offset correctly */
QUATCOPY(q1, vod->oldquat);
conjugate_qt(q1);
@@ -457,9 +523,9 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y)
conjugate_qt(q1); /* conj == inv for unit quat */
VECCOPY(rv3d->ofs, vod->ofs);
- sub_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->obofs);
+ sub_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->dyn_ofs);
mul_qt_v3(q1, rv3d->ofs);
- add_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->obofs);
+ add_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->dyn_ofs);
}
}
else {
@@ -491,11 +557,11 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y)
q1[3] = si * xvec[2];
mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, q1);
- if (use_sel) {
+ if (vod->use_dyn_ofs) {
conjugate_qt(q1); /* conj == inv for unit quat */
- sub_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->obofs);
+ sub_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->dyn_ofs);
mul_qt_v3(q1, rv3d->ofs);
- add_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->obofs);
+ add_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->dyn_ofs);
}
/* Perform the orbital rotation */
@@ -505,11 +571,11 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y)
q1[3] = sin(phi);
mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, q1);
- if (use_sel) {
+ if (vod->use_dyn_ofs) {
conjugate_qt(q1);
- sub_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->obofs);
+ sub_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->dyn_ofs);
mul_qt_v3(q1, rv3d->ofs);
- add_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->obofs);
+ add_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->dyn_ofs);
}
}
@@ -578,9 +644,7 @@ static int viewrotate_modal(bContext *C, wmOperator *op, wmEvent *event)
}
else if (event_code==VIEW_CONFIRM) {
request_depth_update(CTX_wm_region_view3d(C));
-
- MEM_freeN(vod);
- op->customdata= NULL;
+ viewops_data_free(C, op);
return OPERATOR_FINISHED;
}
@@ -597,7 +661,7 @@ static int viewrotate_invoke(bContext *C, wmOperator *op, wmEvent *event)
return OPERATOR_CANCELLED;
/* makes op->customdata */
- viewops_data(C, op, event);
+ viewops_data_create(C, op, event);
vod= op->customdata;
/* switch from camera view when: */
@@ -718,8 +782,7 @@ static int viewmove_modal(bContext *C, wmOperator *op, wmEvent *event)
else if (event_code==VIEW_CONFIRM) {
request_depth_update(CTX_wm_region_view3d(C));
- MEM_freeN(vod);
- op->customdata= NULL;
+ viewops_data_free(C, op);
return OPERATOR_FINISHED;
}
@@ -730,7 +793,7 @@ static int viewmove_modal(bContext *C, wmOperator *op, wmEvent *event)
static int viewmove_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
/* makes op->customdata */
- viewops_data(C, op, event);
+ viewops_data_create(C, op, event);
/* add temp handler */
WM_event_add_modal_handler(C, op);
@@ -835,8 +898,12 @@ static void viewzoom_apply(ViewOpsData *vod, int x, int y)
float zfac=1.0;
if(U.viewzoom==USER_ZOOM_CONT) {
+ double time= PIL_check_seconds_timer();
+ float time_step= (float)(time - vod->timer_lastdraw);
+
// oldstyle zoom
- zfac = 1.0+(float)(vod->origx - x + vod->origy - y)/1000.0;
+ zfac = 1.0f + (((float)(vod->origx - x + vod->origy - y)/20.0) * time_step);
+ vod->timer_lastdraw= time;
}
else if(U.viewzoom==USER_ZOOM_SCALE) {
int ctr[2], len1, len2;
@@ -851,8 +918,19 @@ static void viewzoom_apply(ViewOpsData *vod, int x, int y)
zfac = vod->dist0 * ((float)len2/len1) / vod->rv3d->dist;
}
else { /* USER_ZOOM_DOLLY */
- float len1 = (vod->ar->winrct.ymax - y) + 5;
- float len2 = (vod->ar->winrct.ymax - vod->origy) + 5;
+ float len1, len2;
+
+ if (U.uiflag & USER_ZOOM_DOLLY_HORIZ) {
+ len1 = (vod->ar->winrct.xmax - x) + 5;
+ len2 = (vod->ar->winrct.xmax - vod->origx) + 5;
+ }
+ else {
+ len1 = (vod->ar->winrct.ymax - y) + 5;
+ len2 = (vod->ar->winrct.ymax - vod->origy) + 5;
+ }
+ if (U.uiflag & USER_ZOOM_INVERT)
+ SWAP(float, len1, len2);
+
zfac = vod->dist0 * (2.0*((len2/len1)-1.0) + 1.0) / vod->rv3d->dist;
}
@@ -892,7 +970,10 @@ static int viewzoom_modal(bContext *C, wmOperator *op, wmEvent *event)
short event_code= VIEW_PASS;
/* execute the events */
- if(event->type==MOUSEMOVE) {
+ if (event->type == TIMER && event->customdata == vod->timer) {
+ event_code= VIEW_APPLY;
+ }
+ else if(event->type==MOUSEMOVE) {
event_code= VIEW_APPLY;
}
else if(event->type==EVT_MODAL_MAP) {
@@ -911,9 +992,7 @@ static int viewzoom_modal(bContext *C, wmOperator *op, wmEvent *event)
}
else if (event_code==VIEW_CONFIRM) {
request_depth_update(CTX_wm_region_view3d(C));
-
- MEM_freeN(vod);
- op->customdata= NULL;
+ viewops_data_free(C, op);
return OPERATOR_FINISHED;
}
@@ -973,8 +1052,15 @@ static int viewzoom_invoke(bContext *C, wmOperator *op, wmEvent *event)
viewzoom_exec(C, op);
}
else {
+ ViewOpsData *vod;
+
/* makes op->customdata */
- viewops_data(C, op, event);
+ viewops_data_create(C, op, event);
+
+ vod= op->customdata;
+
+ vod->timer= WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER, 0.01f);
+ vod->timer_lastdraw= PIL_check_seconds_timer();
/* add temp handler */
WM_event_add_modal_handler(C, op);
@@ -1001,7 +1087,7 @@ void VIEW3D_OT_zoom(wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_BLOCKING|OPTYPE_GRAB_POINTER;
- RNA_def_int(ot->srna, "delta", 0, 0, INT_MAX, "Delta", "", 0, INT_MAX);
+ RNA_def_int(ot->srna, "delta", 0, INT_MIN, INT_MAX, "Delta", "", INT_MIN, INT_MAX);
RNA_def_int(ot->srna, "mx", 0, 0, INT_MAX, "Zoom Position X", "", 0, INT_MAX);
RNA_def_int(ot->srna, "my", 0, 0, INT_MAX, "Zoom Position Y", "", 0, INT_MAX);
}
@@ -1197,10 +1283,6 @@ static int viewcenter_exec(bContext *C, wmOperator *op) /* like a localview with
new_dist*= size;
}
- v3d->cursor[0]= -new_ofs[0];
- v3d->cursor[1]= -new_ofs[1];
- v3d->cursor[2]= -new_ofs[2];
-
if (rv3d->persp==RV3D_CAMOB) {
rv3d->persp= RV3D_PERSP;
smooth_view(C, v3d->camera, NULL, new_ofs, NULL, &new_dist, NULL);
@@ -1319,6 +1401,8 @@ static int render_border_exec(bContext *C, wmOperator *op)
} else {
scene->r.mode |= R_BORDER;
}
+
+ WM_event_add_notifier(C, NC_SCENE|ND_RENDER_OPTIONS, NULL);
return OPERATOR_FINISHED;
@@ -1621,36 +1705,43 @@ static int viewnumpad_exec(bContext *C, wmOperator *op)
RegionView3D *rv3d= CTX_wm_region_view3d(C);
Scene *scene= CTX_data_scene(C);
static int perspo=RV3D_PERSP;
- int viewnum, align_active;
+ int viewnum, align_active, nextperspo;
viewnum = RNA_enum_get(op->ptr, "type");
align_active = RNA_boolean_get(op->ptr, "align_active");
+
/* Use this to test if we started out with a camera */
+ if (rv3d->persp == RV3D_CAMOB) {
+ nextperspo= rv3d->lpersp;
+ } else {
+ nextperspo= perspo;
+ }
+
switch (viewnum) {
case RV3D_VIEW_BOTTOM :
- axis_set_view(C, 0.0, -1.0, 0.0, 0.0, viewnum, perspo, align_active);
+ axis_set_view(C, 0.0, -1.0, 0.0, 0.0, viewnum, nextperspo, align_active);
break;
case RV3D_VIEW_BACK:
- axis_set_view(C, 0.0, 0.0, (float)-cos(M_PI/4.0), (float)-cos(M_PI/4.0), viewnum, perspo, align_active);
+ axis_set_view(C, 0.0, 0.0, (float)-cos(M_PI/4.0), (float)-cos(M_PI/4.0), viewnum, nextperspo, align_active);
break;
case RV3D_VIEW_LEFT:
- axis_set_view(C, 0.5, -0.5, 0.5, 0.5, viewnum, perspo, align_active);
+ axis_set_view(C, 0.5, -0.5, 0.5, 0.5, viewnum, nextperspo, align_active);
break;
case RV3D_VIEW_TOP:
- axis_set_view(C, 1.0, 0.0, 0.0, 0.0, viewnum, perspo, align_active);
+ axis_set_view(C, 1.0, 0.0, 0.0, 0.0, viewnum, nextperspo, align_active);
break;
case RV3D_VIEW_FRONT:
- axis_set_view(C, (float)cos(M_PI/4.0), (float)-sin(M_PI/4.0), 0.0, 0.0, viewnum, perspo, align_active);
+ axis_set_view(C, (float)cos(M_PI/4.0), (float)-sin(M_PI/4.0), 0.0, 0.0, viewnum, nextperspo, align_active);
break;
case RV3D_VIEW_RIGHT:
- axis_set_view(C, 0.5, -0.5, -0.5, -0.5, viewnum, perspo, align_active);
+ axis_set_view(C, 0.5, -0.5, -0.5, -0.5, viewnum, nextperspo, align_active);
break;
case RV3D_VIEW_CAMERA:
@@ -1913,12 +2004,9 @@ void ED_view3d_local_clipping(RegionView3D *rv3d, float mat[][4])
static int view3d_clipping_exec(bContext *C, wmOperator *op)
{
RegionView3D *rv3d= CTX_wm_region_view3d(C);
+ ViewContext vc;
+ bglMats mats;
rcti rect;
- double mvmatrix[16];
- double projmatrix[16];
- double xs, ys, p[3];
- GLint viewport[4];
- short val;
rect.xmin= RNA_int_get(op->ptr, "xmin");
rect.ymin= RNA_int_get(op->ptr, "ymin");
@@ -1931,36 +2019,9 @@ static int view3d_clipping_exec(bContext *C, wmOperator *op)
/* note; otherwise opengl won't work */
view3d_operator_needs_opengl(C);
- /* Get the matrices needed for gluUnProject */
- glGetIntegerv(GL_VIEWPORT, viewport);
- glGetDoublev(GL_MODELVIEW_MATRIX, mvmatrix);
- glGetDoublev(GL_PROJECTION_MATRIX, projmatrix);
-
- /* near zero floating point values can give issues with gluUnProject
- in side view on some implementations */
- if(fabs(mvmatrix[0]) < 1e-6) mvmatrix[0]= 0.0;
- if(fabs(mvmatrix[5]) < 1e-6) mvmatrix[5]= 0.0;
-
- /* Set up viewport so that gluUnProject will give correct values */
- viewport[0] = 0;
- viewport[1] = 0;
-
- /* four clipping planes and bounding volume */
- /* first do the bounding volume */
- for(val=0; val<4; val++) {
-
- xs= (val==0||val==3)?rect.xmin:rect.xmax;
- ys= (val==0||val==1)?rect.ymin:rect.ymax;
-
- gluUnProject(xs, ys, 0.0, mvmatrix, projmatrix, viewport, &p[0], &p[1], &p[2]);
- VECCOPY(rv3d->clipbb->vec[val], p);
-
- gluUnProject(xs, ys, 1.0, mvmatrix, projmatrix, viewport, &p[0], &p[1], &p[2]);
- VECCOPY(rv3d->clipbb->vec[4+val], p);
- }
-
- /* then plane equations */
- calc_clipping_plane(rv3d->clip, rv3d->clipbb);
+ view3d_set_viewcontext(C, &vc);
+ view3d_get_transformation(vc.ar, vc.rv3d, vc.obact, &mats);
+ view3d_calculate_clipping(rv3d->clipbb, rv3d->clip, &mats, &rect);
return OPERATOR_FINISHED;
}
@@ -2050,14 +2111,10 @@ static int set_3dcursor_invoke(bContext *C, wmOperator *op, wmEvent *event)
fp[2]= (rv3d->persinv[0][2]*dx + rv3d->persinv[1][2]*dy+ rv3d->persinv[2][2]*fz)-rv3d->ofs[2];
}
-// if(lr_click) {
- // XXX if(obedit->type==OB_MESH) add_click_mesh();
- // else if ELEM(obedit->type, OB_CURVE, OB_SURF) addvert_Nurb(0);
- // else if (obedit->type==OB_ARMATURE) addvert_armature();
-// VECCOPY(fp, oldcurs);
-// }
- // XXX notifier for scene */
- ED_area_tag_redraw(CTX_wm_area(C));
+ if(v3d && v3d->localvd)
+ WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, v3d);
+ else
+ WM_event_add_notifier(C, NC_SCENE|NA_EDITED, scene);
return OPERATOR_FINISHED;
}
@@ -2194,7 +2251,53 @@ int view_autodist(Scene *scene, ARegion *ar, View3D *v3d, short *mval, float mou
return 1;
}
+int view_autodist_init(Scene *scene, ARegion *ar, View3D *v3d) //, float *autodist )
+{
+ RegionView3D *rv3d= ar->regiondata;
+
+ /* Get Z Depths, needed for perspective, nice for ortho */
+ draw_depth(scene, ar, v3d, NULL);
+
+ /* force updating */
+ if (rv3d->depths) {
+ rv3d->depths->damaged = 1;
+ }
+
+ view3d_update_depths(ar, v3d);
+ return 1;
+}
+
+// no 4x4 sampling, run view_autodist_init first
+int view_autodist_simple(ARegion *ar, short *mval, float mouse_worldloc[3] ) //, float *autodist )
+{
+ RegionView3D *rv3d= ar->regiondata;
+ bglMats mats; /* ZBuffer depth vars, could cache? */
+ float depth;
+ double cent[2], p[3];
+
+ if (mval[0] < 0) return 0;
+ if (mval[1] < 0) return 0;
+ if (mval[0] >= rv3d->depths->w) return 0;
+ if (mval[1] >= rv3d->depths->h) return 0;
+
+ /* Get Z Depths, needed for perspective, nice for ortho */
+ bgl_get_mats(&mats);
+ depth= rv3d->depths->depths[mval[1]*rv3d->depths->w+mval[0]];
+ if (depth==MAXFLOAT)
+ return 0;
+
+ cent[0] = (double)mval[0];
+ cent[1] = (double)mval[1];
+
+ if (!gluUnProject(cent[0], cent[1], depth, mats.modelview, mats.projection, (GLint *)mats.viewport, &p[0], &p[1], &p[2]))
+ return 0;
+
+ mouse_worldloc[0] = (float)p[0];
+ mouse_worldloc[1] = (float)p[1];
+ mouse_worldloc[2] = (float)p[2];
+ return 1;
+}
/* ********************* NDOF ************************ */
/* note: this code is confusing and unclear... (ton) */
diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c
index 0099a7ec1ea..931dbcd9c75 100644
--- a/source/blender/editors/space_view3d/view3d_header.c
+++ b/source/blender/editors/space_view3d/view3d_header.c
@@ -111,9 +111,7 @@
if( (v3d->lay & obedit->lay)==0 ) return;
/* XXX port over */
-static void countall(void) {}
extern void borderselect();
-static int retopo_mesh_paint_check() {return 0;}
/* view3d handler codes */
#define VIEW3D_HANDLER_BACKGROUND 1
@@ -134,89 +132,17 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event);
#define B_HOME 103
#define B_VIEWBUT 104
#define B_PERSP 105
-#define B_VIEWRENDER 106
#define B_MODESELECT 108
-#define B_AROUND 109
#define B_SEL_VERT 110
#define B_SEL_EDGE 111
#define B_SEL_FACE 112
-#define B_SEL_PATH 113
-#define B_SEL_POINT 114
-#define B_SEL_END 115
#define B_MAN_TRANS 116
#define B_MAN_ROT 117
#define B_MAN_SCALE 118
#define B_NDOF 119
#define B_MAN_MODE 120
-#define B_VIEW_BUTSEDIT 121
#define B_REDR 122
#define B_NOP 123
-#define B_ACTCOPY 124
-#define B_ACTPASTE 125
-#define B_ACTPASTEFLIP 126
-
-#define B_LAY 201
-
-
-static RegionView3D *wm_region_view3d(const bContext *C)
-{
- ScrArea *sa= CTX_wm_area(C);
- ARegion *ar;
- /* XXX handle foursplit? */
- for(ar= sa->regionbase.first; ar; ar= ar->next)
- if(ar->regiontype==RGN_TYPE_WINDOW)
- return ar->regiondata;
- return NULL;
-}
-
-static void copy_view3d_lock_space(View3D *v3d, Scene *scene)
-{
- int bit;
-
- if(v3d->scenelock && v3d->localvd==NULL) {
- v3d->lay= scene->lay;
- v3d->camera= scene->camera;
-
- if(v3d->camera==NULL) {
- ARegion *ar;
-
- for(ar=v3d->regionbase.first; ar; ar= ar->next) {
- if(ar->regiontype == RGN_TYPE_WINDOW) {
- RegionView3D *rv3d= ar->regiondata;
- if(rv3d->persp==RV3D_CAMOB)
- rv3d->persp= RV3D_PERSP;
- }
- }
- }
-
- if((v3d->lay & v3d->layact) == 0) {
- for(bit= 0; bit<32; bit++) {
- if(v3d->lay & (1<<bit)) {
- v3d->layact= 1<<bit;
- break;
- }
- }
- }
- }
-}
-
-void ED_view3d_scene_layers_update(Main *bmain, Scene *scene)
-{
- bScreen *sc;
- ScrArea *sa;
- SpaceLink *sl;
-
- /* from scene copy to the other views */
- for(sc=bmain->screen.first; sc; sc=sc->id.next) {
- if(sc->scene!=scene)
- continue;
-
- for(sa=sc->areabase.first; sa; sa=sa->next)
- for(sl=sa->spacedata.first; sl; sl=sl->next)
- if(sl->spacetype==SPACE_VIEW3D)
- copy_view3d_lock_space((View3D*)sl, scene);
- }
-}
// XXX quickly ported across
static void handle_view3d_lock(bContext *C)
@@ -332,1269 +258,6 @@ void VIEW3D_OT_layers(wmOperatorType *ot)
RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Add this layer to the current view layers");
}
-#if 0
-void do_view3d_select_object_typemenu(bContext *C, void *arg, int event)
-{
-
- extern void selectall_type(short obtype);
-
- switch(event) {
- case 1: /* Mesh */
- selectall_type(OB_MESH);
- break;
- case 2: /* Curve */
- selectall_type(OB_CURVE);
- break;
- case 3: /* Surface */
- selectall_type(OB_SURF);
- break;
- case 4: /* Meta */
- selectall_type(OB_MBALL);
- break;
- case 5: /* Armature */
- selectall_type(OB_ARMATURE);
- break;
- case 6: /* Lattice */
- selectall_type(OB_LATTICE);
- break;
- case 7: /* Text */
- selectall_type(OB_FONT);
- break;
- case 8: /* Empty */
- selectall_type(OB_EMPTY);
- break;
- case 9: /* Camera */
- selectall_type(OB_CAMERA);
- break;
- case 10: /* Lamp */
- selectall_type(OB_LAMP);
- break;
- case 20:
- do_layer_buttons(C, -2);
- break;
- }
-}
-
-static uiBlock *view3d_select_object_typemenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
- short yco = 20, menuwidth = 120;
-
- block= uiBeginBlock(C, ar, "view3d_select_object_typemenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_select_object_typemenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Mesh", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Curve", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Surface", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Meta", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Armature", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Lattice", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Text", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Empty", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Camera", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Lamp", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
-}
-
-
-void do_view3d_select_object_layermenu(bContext *C, void *arg, int event)
-{
-// XXX extern void selectall_layer(unsigned int layernum);
-
- switch(event) {
- case 0:
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- case 9:
- case 10:
- case 11:
- case 12:
- case 13:
- case 14:
- case 15:
- case 16:
- case 17:
- case 18:
- case 19:
- case 20:
-// XXX selectall_layer(event);
- break;
- }
-}
-
-static uiBlock *view3d_select_object_layermenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
- short xco= 0, yco = 20, menuwidth = 22;
-
- block= uiBeginBlock(C, ar, "view3d_select_object_layermenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_select_object_layermenu, NULL);
-
- uiDefBut(block, BUTM, 1, "1", xco, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefBut(block, BUTM, 1, "2", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefBut(block, BUTM, 1, "3", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- uiDefBut(block, BUTM, 1, "4", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
- uiDefBut(block, BUTM, 1, "5", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
- xco += 6;
- uiDefBut(block, BUTM, 1, "6", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
- uiDefBut(block, BUTM, 1, "7", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
- uiDefBut(block, BUTM, 1, "8", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, "");
- uiDefBut(block, BUTM, 1, "9", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, "");
- uiDefBut(block, BUTM, 1, "10", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");
- xco = 0;
- uiDefBut(block, BUTM, 1, "11", xco, yco-=24, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, "");
- uiDefBut(block, BUTM, 1, "12", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 12, "");
- uiDefBut(block, BUTM, 1, "13", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 13, "");
- uiDefBut(block, BUTM, 1, "14", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 14, "");
- uiDefBut(block, BUTM, 1, "15", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 15, "");
- xco += 6;
- uiDefBut(block, BUTM, 1, "16", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 16, "");
- uiDefBut(block, BUTM, 1, "17", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, "");
- uiDefBut(block, BUTM, 1, "18", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, "");
- uiDefBut(block, BUTM, 1, "19", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, "");
- uiDefBut(block, BUTM, 1, "20", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 20, "");
-
- uiBlockSetDirection(block, UI_RIGHT);
- /*uiTextBoundsBlock(block, 100);*/
- return block;
-}
-
-void do_view3d_select_object_linkedmenu(bContext *C, void *arg, int event)
-{
- switch(event) {
- case 1: /* Object Ipo */
- case 2: /* ObData */
- case 3: /* Current Material */
- case 4: /* Current Texture */
- selectlinks(event);
- break;
- }
- countall();
-}
-
-static uiBlock *view3d_select_object_linkedmenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
- short yco = 20, menuwidth = 120;
-
- block= uiBeginBlock(C, ar, "view3d_select_object_linkedmenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_select_object_linkedmenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object Ipo|Shift L, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "ObData|Shift L, 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Material|Shift L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Texture|Shift L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
-}
-
-void do_view3d_select_object_groupedmenu(bContext *C, void *arg, int event)
-{
-
- switch(event) {
- case 1: /* Children */
- case 2: /* Immediate Children */
- case 3: /* Parent */
- case 4: /* Siblings */
- case 5: /* Type */
- case 6: /* Objects on Shared Layers */
- case 7: /* Objects in Same Group */
- case 8: /* Object Hooks*/
- case 9: /* Object PassIndex*/
- case 10: /* Object Color*/
- case 11: /* Game Properties*/
- select_object_grouped((short)event);
- break;
- }
-}
-
-static uiBlock *view3d_select_object_groupedmenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
- short yco = 20, menuwidth = 120;
-
- block= uiBeginBlock(C, ar, "view3d_select_object_groupedmenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_select_object_groupedmenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Children|Shift G, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Immediate Children|Shift G, 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Parent|Shift G, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Siblings (Shared Parent)|Shift G, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Objects of Same Type|Shift G, 5", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Objects on Shared Layers|Shift G, 6", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Objects in Same Group|Shift G, 7", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object Hooks|Shift G, 8", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object PassIndex|Shift G, 9", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object Color|Shift G, 0", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Game Properties|Shift G, Alt+1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, "");
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
-}
-
-#endif
-
-// TODO - port to python
-#if 0
-void do_view3d_select_faceselmenu(bContext *C, void *arg, int event)
-{
- /* events >= 6 are registered bpython scripts */
-#ifndef DISABLE_PYTHON
- if (event >= 6) BPY_menu_do_python(PYMENU_FACESELECT, event - 6);
-#endif
-
- switch(event) {
- case 0: /* border select */
- borderselect();
- break;
- case 2: /* Select/Deselect all */
- deselectall_tface();
- break;
- case 3: /* Select Inverse */
- selectswap_tface();
- break;
- case 4: /* Select Linked */
- select_linked_tfaces(2);
- break;
- }
-}
-
-static uiBlock *view3d_select_faceselmenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
- short yco= 0, menuwidth=120;
-#ifndef DISABLE_PYTHON
-// XXX BPyMenu *pym;
-// int i = 0;
-#endif
-
- block= uiBeginBlock(C, ar, "view3d_select_faceselmenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_select_faceselmenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Border Select|B", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Select/Deselect All|A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Inverse", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Linked Faces|Ctrl L", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
-
-#ifndef DISABLE_PYTHON
-// uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- /* note that we account for the 6 previous entries with i+6: */
-// for (pym = BPyMenuTable[PYMENU_FACESELECT]; pym; pym = pym->next, i++) {
-// uiDefIconTextBut(block, BUTM, 1, ICON_PYTHON, pym->name, 0, yco-=20,
-// menuwidth, 19, NULL, 0.0, 0.0, 1, i+6,
-// pym->tooltip?pym->tooltip:pym->filename);
-// }
-#endif
-
- if(ar->alignment==RGN_ALIGN_TOP) {
- uiBlockSetDirection(block, UI_DOWN);
- }
- else {
- uiBlockSetDirection(block, UI_TOP);
- uiBlockFlipOrder(block);
- }
-
- uiTextBoundsBlock(block, 50);
- return block;
-}
-#endif
-
-#if 0
-void do_view3d_transform_moveaxismenu(bContext *C, void *arg, int event)
-{
-#if 0
- float mat[3][3];
-
- unit_m3(mat);
-
- switch(event)
- {
- case 0: /* X Global */
- initTransform(TFM_TRANSLATION, CTX_NONE);
- BIF_setSingleAxisConstraint(mat[0], " X");
- Transform();
- break;
- case 1: /* Y Global */
- initTransform(TFM_TRANSLATION, CTX_NONE);
- BIF_setSingleAxisConstraint(mat[1], " Y");
- Transform();
- break;
- case 2: /* Z Global */
- initTransform(TFM_TRANSLATION, CTX_NONE);
- BIF_setSingleAxisConstraint(mat[2], " Z");
- Transform();
- break;
- case 3: /* X Local */
- initTransform(TFM_TRANSLATION, CTX_NONE);
- BIF_setLocalAxisConstraint('X', " X");
- Transform();
- break;
- case 4: /* Y Local */
- initTransform(TFM_TRANSLATION, CTX_NONE);
- BIF_setLocalAxisConstraint('Y', " Y");
- Transform();
- break;
- case 5: /* Z Local */
- initTransform(TFM_TRANSLATION, CTX_NONE);
- BIF_setLocalAxisConstraint('Z', " Z");
- Transform();
- break;
- }
-#endif
-}
-
-static uiBlock *view3d_transform_moveaxismenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
- short yco = 20, menuwidth = 120;
-
- block= uiBeginBlock(C, ar, "view3d_transform_moveaxismenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_transform_moveaxismenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "X Global|G, X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Y Global|G, Y", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Z Global|G, Z", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "X Local|G, X, X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Y Local|G, Y, Y", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Z Local|G, Z, Z", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
-
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
-}
-
-void do_view3d_transform_rotateaxismenu(bContext *C, void *arg, int event)
-{
-#if 0
- float mat[3][3];
-
- unit_m3(mat);
-
- switch(event)
- {
- case 0: /* X Global */
- initTransform(TFM_ROTATION, CTX_NONE);
- BIF_setSingleAxisConstraint(mat[0], " X");
- Transform();
- break;
- case 1: /* Y Global */
- initTransform(TFM_ROTATION, CTX_NONE);
- BIF_setSingleAxisConstraint(mat[1], " Y");
- Transform();
- break;
- case 2: /* Z Global */
- initTransform(TFM_ROTATION, CTX_NONE);
- BIF_setSingleAxisConstraint(mat[2], " Z");
- Transform();
- break;
- case 3: /* X Local */
- initTransform(TFM_ROTATION, CTX_NONE);
- BIF_setLocalAxisConstraint('X', " X");
- Transform();
- break;
- case 4: /* Y Local */
- initTransform(TFM_ROTATION, CTX_NONE);
- BIF_setLocalAxisConstraint('Y', " Y");
- Transform();
- break;
- case 5: /* Z Local */
- initTransform(TFM_ROTATION, CTX_NONE);
- BIF_setLocalAxisConstraint('Z', " Z");
- Transform();
- break;
- }
-#endif
-}
-
-static uiBlock *view3d_transform_rotateaxismenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
- short yco = 20, menuwidth = 120;
-
- block= uiBeginBlock(C, ar, "view3d_transform_rotateaxismenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_transform_rotateaxismenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "X Global|R, X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Y Global|R, Y", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Z Global|R, Z", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "X Local|R, X, X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Y Local|R, Y, Y", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Z Local|R, Z, Z", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
-
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
-}
-
-void do_view3d_transform_scaleaxismenu(bContext *C, void *arg, int event)
-{
-#if 0
- float mat[3][3];
-
- unit_m3(mat);
-
- switch(event)
- {
- case 0: /* X Global */
- initTransform(TFM_RESIZE, CTX_NONE);
- BIF_setSingleAxisConstraint(mat[0], " X");
- Transform();
- break;
- case 1: /* Y Global */
- initTransform(TFM_RESIZE, CTX_NONE);
- BIF_setSingleAxisConstraint(mat[1], " Y");
- Transform();
- break;
- case 2: /* Z Global */
- initTransform(TFM_RESIZE, CTX_NONE);
- BIF_setSingleAxisConstraint(mat[2], " Z");
- Transform();
- break;
- case 3: /* X Local */
- initTransform(TFM_RESIZE, CTX_NONE);
- BIF_setLocalAxisConstraint('X', " X");
- Transform();
- break;
- case 4: /* Y Local */
- initTransform(TFM_RESIZE, CTX_NONE);
- BIF_setLocalAxisConstraint('X', " X");
- Transform();
- break;
- case 5: /* Z Local */
- initTransform(TFM_RESIZE, CTX_NONE);
- BIF_setLocalAxisConstraint('X', " X");
- Transform();
- break;
- }
-#endif
-}
-
-static uiBlock *view3d_transform_scaleaxismenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
- short yco = 20, menuwidth = 120;
-
- block= uiBeginBlock(C, ar, "view3d_transform_scaleaxismenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_transform_scaleaxismenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "X Global|S, X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Y Global|S, Y", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Z Global|S, Z", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "X Local|S, X, X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Y Local|S, Y, Y", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Z Local|S, Z, Z", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
-
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
-}
-#endif
-
-#if 0
-static void do_view3d_transformmenu(bContext *C, void *arg, int event)
-{
-#if 0
- Scene *scene= CTX_data_scene(C);
- ToolSettings *ts= CTX_data_tool_settings(C);
-
- switch(event) {
- case 1:
- initTransform(TFM_TRANSLATION, CTX_NONE);
- Transform();
- break;
- case 2:
- initTransform(TFM_ROTATION, CTX_NONE);
- Transform();
- break;
- case 3:
- initTransform(TFM_RESIZE, CTX_NONE);
- Transform();
- break;
- case 4:
- image_aspect();
- break;
- case 5:
- initTransform(TFM_TOSPHERE, CTX_NONE);
- Transform();
- break;
- case 6:
- initTransform(TFM_SHEAR, CTX_NONE);
- Transform();
- break;
- case 7:
- initTransform(TFM_WARP, CTX_NONE);
- Transform();
- break;
- case 8:
- initTransform(TFM_PUSHPULL, CTX_NONE);
- Transform();
- break;
- case 9:
- if (obedit) {
- if (obedit->type == OB_MESH)
- initTransform(TFM_SHRINKFATTEN, CTX_NONE);
- Transform();
- } else error("Only meshes can be shrinked/fattened");
- break;
- case 10:
- docenter(0);
- break;
- case 11:
- docenter_new();
- break;
- case 12:
- docenter_cursor();
- break;
- case 13:
- initTransform(TFM_TILT, CTX_NONE);
- Transform();
- break;
- case 14:
- initTransform(TFM_CURVE_SHRINKFATTEN, CTX_NONE);
- Transform();
- break;
- case 15:
- ts->snap_flag &= ~SCE_SNAP;
- break;
- case 16:
- ts->snap_flag |= SCE_SNAP;
- break;
- case 17:
- ts->snap_target = SCE_SNAP_TARGET_CLOSEST;
- break;
- case 18:
- ts->snap_target = SCE_SNAP_TARGET_CENTER;
- break;
- case 19:
- ts->snap_target = SCE_SNAP_TARGET_MEDIAN;
- break;
- case 20:
- ts->snap_target = SCE_SNAP_TARGET_ACTIVE;
- break;
- case 21:
- alignmenu();
- break;
- }
-#endif
-}
-
-static uiBlock *view3d_transformmenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- ToolSettings *ts= CTX_data_tool_settings(C);
- Object *obedit = CTX_data_edit_object(C);
- uiBlock *block;
- short yco = 20, menuwidth = 120;
-
- block= uiBeginBlock(C, ar, "view3d_transformmenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_transformmenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Grab/Move|G", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefIconTextBlockBut(block, view3d_transform_moveaxismenu, NULL, ICON_RIGHTARROW_THIN, "Grab/Move on Axis", 0, yco-=20, 120, 19, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Rotate|R", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBlockBut(block, view3d_transform_rotateaxismenu, NULL, ICON_RIGHTARROW_THIN, "Rotate on Axis", 0, yco-=20, 120, 19, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Scale|S", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- uiDefIconTextBlockBut(block, view3d_transform_scaleaxismenu, NULL, ICON_RIGHTARROW_THIN, "Scale on Axis", 0, yco-=20, 120, 19, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- if (obedit) {
- if (obedit->type == OB_MESH)
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Shrink/Fatten Along Normals|Alt S", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, "");
- else if (obedit->type == OB_CURVE) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Tilt|T", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 13, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Shrink/Fatten Radius|Alt S", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 14, "");
- }
- }
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "To Sphere|Ctrl Shift S", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
- if (obedit) uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Shear|Ctrl S", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
- else uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Shear|Ctrl Shift Alt S", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Warp|Shift W", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Push/Pull|Shift P", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, "");
-
- if (!obedit) {
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Scale to Image Aspect Ratio|Alt V", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
- }
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "ObData to Center", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");
- if (!obedit) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Center New", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Center Cursor", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 12, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Align to Transform Orientation|Ctrl Alt A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 21, "");
- }
-
- if (BIF_snappingSupported(obedit))
- {
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- if (ts->snap_flag & SCE_SNAP)
- {
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Grid", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 15, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 16, "");
- }
- else
- {
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Grid", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 15, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 16, "");
- }
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- switch(ts->snap_target)
- {
- case SCE_SNAP_TARGET_CLOSEST:
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap Closest", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Center", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Median", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Active", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 20, "");
- break;
- case SCE_SNAP_TARGET_CENTER:
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Closest", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap Center", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Median", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Active", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 20, "");
- break;
- case SCE_SNAP_TARGET_MEDIAN:
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Closest", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Center", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap Median", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Active", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 20, "");
- break;
- case SCE_SNAP_TARGET_ACTIVE:
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Closest", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Center", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Median", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap Active", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 20, "");
- break;
- }
- }
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
-}
-
-#if 0
-void do_view3d_object_mirrormenu(bContext *C, void *arg, int event)
-{
-#if 0
- switch(event) {
- case 0:
- initTransform(TFM_MIRROR, CTX_NO_PET);
- Transform();
- break;
- case 1:
- initTransform(TFM_MIRROR, CTX_NO_PET|CTX_AUTOCONFIRM);
- BIF_setLocalAxisConstraint('X', " on X axis");
- Transform();
- break;
- case 2:
- initTransform(TFM_MIRROR, CTX_NO_PET|CTX_AUTOCONFIRM);
- BIF_setLocalAxisConstraint('Y', " on Y axis");
- Transform();
- break;
- case 3:
- initTransform(TFM_MIRROR, CTX_NO_PET|CTX_AUTOCONFIRM);
- BIF_setLocalAxisConstraint('Z', " on Z axis");
- Transform();
- break;
- }
-#endif
-}
-
-static uiBlock *view3d_object_mirrormenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
- short yco = 20, menuwidth = 120;
-
- block= uiBeginBlock(C, ar, "view3d_object_mirrormenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_object_mirrormenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Interactive Mirror|Ctrl M", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "X Local|Ctrl M, X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Y Local|Ctrl M, Y", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Z Local|Ctrl M, Z", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
-}
-#endif
-#endif
-
-#if 0
-static void view3d_edit_object_transformmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
-#if 0 // XXX not used anymore
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Apply Scale/Rotation to ObData|Ctrl A, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
- apply_objects_locrot();
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Apply Visual Transform|Ctrl A, 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
- apply_objects_visual_tx();
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Apply Deformation|Ctrl Shift A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
- if(OBACT) object_apply_deform(OBACT);
-#endif
- uiItemO(layout, NULL, 0, "OBJECT_OT_duplicates_make_real");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "OBJECT_OT_location_clear");
- uiItemO(layout, NULL, 0, "OBJECT_OT_rotation_clear");
- uiItemO(layout, NULL, 0, "OBJECT_OT_scale_clear");
- uiItemO(layout, NULL, 0, "OBJECT_OT_origin_clear");
-}
-#endif
-
-#if 0
-static void do_view3d_edit_object_makelocalmenu(bContext *C, void *arg, int event)
-{
-#if 0
- switch(event) {
- case 1:
- case 2:
- case 3:
- make_local(event);
- break;
- }
-#endif
-}
-
-static uiBlock *view3d_edit_object_makelocalmenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
- short yco = 20, menuwidth = 120;
-
- block= uiBeginBlock(C, ar, "view3d_edit_object_makelocalmenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_edit_object_makelocalmenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Selected Objects|L, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Selected Objects and Data|L, 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "All|L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
-}
-
-static void do_view3d_edit_object_makelinksmenu(bContext *C, void *arg, int event)
-{
-#if 0
- switch(event) {
- case 1:
- case 2:
- case 3:
- case 4:
- make_links((short)event);
- break;
- }
-#endif
-}
-
-static uiBlock *view3d_edit_object_makelinksmenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- Scene *scene= CTX_data_scene(C);
- Object *ob=NULL;
-
- uiBlock *block;
- short yco = 20, menuwidth = 120;
-
- block= uiBeginBlock(C, ar, "view3d_edit_object_makelinksmenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_edit_object_makelinksmenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "To Scene...|Ctrl L, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object Ipo|Ctrl L, 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
-
- if ((ob=OBACT)) {
-
- if(ob->type==OB_MESH) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Mesh Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- } else if(ob->type==OB_CURVE) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Curve Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- } else if(ob->type==OB_FONT) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Text Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- } else if(ob->type==OB_SURF) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Surface Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- } else if(ob->type==OB_MBALL) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- } else if(ob->type==OB_CAMERA) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Camera Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- } else if(ob->type==OB_LAMP) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Lamp Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- } else if(ob->type==OB_LATTICE) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Lattice Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- } else if(ob->type==OB_ARMATURE) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Armature Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- }
- }
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
-}
-
-static void do_view3d_edit_object_singleusermenu(bContext *C, void *arg, int event)
-{
-#if 0
- switch(event) {
- case 1: /* Object */
- single_object_users(1);
- break;
- case 2: /* Object & ObData */
- single_object_users(1);
- single_obdata_users(1);
- break;
- case 3: /* Object & ObData & Materials+Tex */
- single_object_users(1);
- single_obdata_users(1);
- single_mat_users(1); /* also tex */
- break;
- case 4: /* Materials+Tex */
- single_mat_users(1);
- break;
- case 5: /* Ipo */
- single_ipo_users(1);
- break;
- }
-
- clear_id_newpoins();
- countall();
-
-#endif
-}
-
-static uiBlock *view3d_edit_object_singleusermenu(bContext *C, ARegion *ar, void *arg_unused)
-{
-
- uiBlock *block;
- short yco = 20, menuwidth = 120;
-
- block= uiBeginBlock(C, ar, "view3d_edit_object_singleusermenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_edit_object_singleusermenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object|U, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object & ObData|U, 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object & ObData & Materials+Tex|U, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials+Tex|U, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Ipos|U, 5", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
-}
-
-static void do_view3d_edit_object_copyattrmenu(bContext *C, void *arg, int event)
-{
- switch(event) {
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- case 9:
- case 10:
- case 11:
- case 17:
- case 18:
- case 19:
- case 20:
- case 21:
- case 22:
- case 23:
- case 24:
- case 25:
- case 26:
- case 29:
- case 30:
-// XXX copy_attr((short)event);
- break;
- }
-}
-
-static uiBlock *view3d_edit_object_copyattrmenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- Scene *scene= CTX_data_scene(C);
- Object *ob=NULL;
-
- uiBlock *block;
- short yco = 20, menuwidth = 120;
-
- block= uiBeginBlock(C, ar, "view3d_edit_object_copyattrmenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_edit_object_copyattrmenu, NULL);
-
- ob= OBACT;
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Location|Ctrl C, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Rotation|Ctrl C, 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Size|Ctrl C, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Drawtype|Ctrl C, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Time Offset|Ctrl C, 5", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Dupli|Ctrl C, 6", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Mass|Ctrl C, 7", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Damping|Ctrl C, 8", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "All Physical Attributes|Ctrl C, 11", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Properties|Ctrl C, 9", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Logic Bricks|Ctrl C, 10", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Protected Transform |Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 29, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object Constraints|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 22, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "NLA Strips|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 26, "");
-
- if (ob) {
-
- if ((ob->type == OB_MESH) || (ob->type == OB_CURVE) || (ob->type == OB_SURF) ||
- (ob->type == OB_FONT) || (ob->type == OB_MBALL)) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Texture Space|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, "");
- }
-
- if(ob->type == OB_FONT) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Font Settings|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Bevel Settings|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Curve Resolution|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 25, "");
- }
- if(ob->type == OB_CURVE) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Bevel Settings|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Curve Resolution|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 25, "");
- }
-
- if(ob->type==OB_MESH) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Subsurf Settings|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 21, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Modifiers ...|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 24, "");
- }
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object Pass Index|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 30, "");
- }
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
-}
-#endif
-
-#if 0
-#ifndef DISABLE_PYTHON
-static void do_view3d_edit_object_scriptsmenu(bContext *C, void *arg, int event)
-{
-#if 0
- BPY_menu_do_python(PYMENU_OBJECT, event);
-
-#endif
-}
-
-static uiBlock *view3d_edit_object_scriptsmenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
-// short yco = 20, menuwidth = 120;
-// XXX BPyMenu *pym;
-// int i = 0;
-
- block= uiBeginBlock(C, ar, "v3d_eobject_pymenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_edit_object_scriptsmenu, NULL);
-
-// for (pym = BPyMenuTable[PYMENU_OBJECT]; pym; pym = pym->next, i++) {
-// uiDefIconTextBut(block, BUTM, 1, ICON_PYTHON, pym->name, 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, i, pym->tooltip?pym->tooltip:pym->filename);
-// }
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
-
- return block;
-}
-#endif /* DISABLE_PYTHON */
-#endif
-
-
-#if 0
-static void do_view3d_edit_objectmenu(bContext *C, void *arg, int event)
-{
- Scene *scene= CTX_data_scene(C);
- ScrArea *sa= CTX_wm_area(C);
- View3D *v3d= sa->spacedata.first;
-
- switch(event) {
-
- case 0: /* transform properties*/
-// XXX mainqenter(NKEY, 1);
- break;
- case 5: /* make single user */
- single_user();
- break;
- case 7: /* boolean operation */
- special_editmenu();
- break;
- case 8: /* join objects */
- join_menu();
- break;
- case 9: /* convert object type */
- convertmenu();
- break;
- case 10: /* move to layer */
- movetolayer();
- break;
- case 11: /* insert keyframe */
- common_insertkey();
- break;
- case 16: /* make proxy object*/
- make_proxy();
- break;
- case 18: /* delete keyframe */
- common_deletekey();
- break;
- }
-}
-#endif
-
-
-/* texture paint menu (placeholder, no items yet??) */
-static void do_view3d_tpaintmenu(bContext *C, void *arg, int event)
-{
-#if 0
- switch(event) {
- case 0: /* undo image painting */
- undo_imagepaint_step(1);
- break;
- }
-
-#endif
-}
-
-static uiBlock *view3d_tpaintmenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
- short yco= 0, menuwidth=120;
-
- block= uiBeginBlock(C, ar, "view3d_paintmenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_tpaintmenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Undo Texture Painting|U", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- if(ar->alignment==RGN_ALIGN_TOP) {
- uiBlockSetDirection(block, UI_DOWN);
- }
- else {
- uiBlockSetDirection(block, UI_TOP);
- uiBlockFlipOrder(block);
- }
-
- uiTextBoundsBlock(block, 50);
- return block;
-}
-
-
-static void do_view3d_wpaintmenu(bContext *C, void *arg, int event)
-{
-#if 0
- Object *ob= OBACT;
-
- /* events >= 3 are registered bpython scripts */
-#ifndef DISABLE_PYTHON
- if (event >= 4) BPY_menu_do_python(PYMENU_WEIGHTPAINT, event - 4);
-#endif
- switch(event) {
- case 0: /* undo weight painting */
- BIF_undo();
- break;
- case 1: /* set vertex colors/weight */
- clear_wpaint_selectedfaces();
- break;
- case 2: /* vgroups from envelopes */
- pose_adds_vgroups(ob, 0);
- break;
- case 3: /* vgroups from bone heat */
- pose_adds_vgroups(ob, 1);
- break;
- }
-#endif
-}
-
-static uiBlock *view3d_wpaintmenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
- short yco= 0, menuwidth=120, menunr=1;
-#ifndef DISABLE_PYTHON
-// XXX BPyMenu *pym;
-// int i=0;
-#endif
-
- block= uiBeginBlock(C, ar, "view3d_paintmenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_wpaintmenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Undo Weight Painting|U", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Apply Bone Heat Weights to Vertex Groups|W, 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Apply Bone Envelopes to Vertex Groups|W, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- if (paint_facesel_test(CTX_data_active_object(C))) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Set Weight|Shift K", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
- menunr++;
- }
-
-#ifndef DISABLE_PYTHON
- /* note that we account for the 4 previous entries with i+4:
- even if the last item isnt displayed, it dosent matter */
-// for (pym = BPyMenuTable[PYMENU_WEIGHTPAINT]; pym; pym = pym->next, i++) {
-// uiDefIconTextBut(block, BUTM, 1, ICON_PYTHON, pym->name, 0, yco-=20,
-// menuwidth, 19, NULL, 0.0, 0.0, 1, i+4,
-// pym->tooltip?pym->tooltip:pym->filename);
-// }
-#endif
-
- if(ar->alignment==RGN_ALIGN_TOP) {
- uiBlockSetDirection(block, UI_DOWN);
- }
- else {
- uiBlockSetDirection(block, UI_TOP);
- uiBlockFlipOrder(block);
- }
-
- uiTextBoundsBlock(block, 50);
- return block;
-}
-
-static void do_view3d_facesel_showhidemenu(bContext *C, void *arg, int event)
-{
-#if 0
- switch(event) {
- case 4: /* show hidden faces */
- reveal_tface();
- break;
- case 5: /* hide selected faces */
- hide_tface();
- break;
- case 6: /* XXX hide deselected faces */
-// G.qual |= LR_SHIFTKEY;
- hide_tface();
-// G.qual &= ~LR_SHIFTKEY;
- break;
- }
-#endif
-}
-
-static uiBlock *view3d_facesel_showhidemenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
- short yco = 20, menuwidth = 120;
-
- block= uiBeginBlock(C, ar, "view3d_facesel_showhidemenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_facesel_showhidemenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Show Hidden Faces|Alt H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Hide Selected Faces|H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Hide Unselected Faces|Shift H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
-}
-
-static void do_view3d_faceselmenu(bContext *C, void *arg, int event)
-{
-#if 0
- switch(event) {
- case 0: /* set vertex colors */
- clear_vpaint_selectedfaces();
- break;
- case 1: /* mark border seam */
- seam_mark_clear_tface(1);
- break;
- case 2: /* clear seam */
- seam_mark_clear_tface(2);
- break;
- }
-#endif
-}
-
-static uiBlock *view3d_faceselmenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
- short yco= 0, menuwidth=120;
-
- block= uiBeginBlock(C, ar, "view3d_faceselmenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_faceselmenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Set Vertex Colors|Shift K", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Clear Seam|Ctrl E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Mark Border Seam|Ctrl E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBlockBut(block, view3d_facesel_showhidemenu, NULL, ICON_RIGHTARROW_THIN, "Show/Hide Faces", 0, yco-=20, 120, 19, "");
-
- if(ar->alignment==RGN_ALIGN_TOP) {
- uiBlockSetDirection(block, UI_DOWN);
- }
- else {
- uiBlockSetDirection(block, UI_TOP);
- uiBlockFlipOrder(block);
- }
-
- uiTextBoundsBlock(block, 50);
- return block;
-}
-
static char *view3d_modeselect_pup(Scene *scene)
{
Object *ob= OBACT;
@@ -1644,91 +307,15 @@ static char *view3d_modeselect_pup(Scene *scene)
}
-static char *drawtype_pup(void)
-{
- static char string[512];
- char *str = string;
-
- str += sprintf(str, "%s", "Draw type: %t");
- str += sprintf(str, "%s", "|Bounding Box %x1");
- str += sprintf(str, "%s", "|Wireframe %x2");
- str += sprintf(str, "%s", "|Solid %x3");
-//XXX not working in 2.5! str += sprintf(str, "%s", "|Shaded %x4");
- str += sprintf(str, "%s", "|Textured %x5");
- return string;
-}
-static char *around_pup(const bContext *C)
-{
- Object *obedit = CTX_data_edit_object(C);
- static char string[512];
- char *str = string;
-
- str += sprintf(str, "%s", "Pivot: %t");
- str += sprintf(str, "%s", "|Bounding Box Center %x0");
- str += sprintf(str, "%s", "|Median Point %x3");
- str += sprintf(str, "%s", "|3D Cursor %x1");
- str += sprintf(str, "%s", "|Individual Centers %x2");
- if ((obedit) && (obedit->type == OB_MESH))
- str += sprintf(str, "%s", "|Active Vert/Edge/Face %x4");
- else
- str += sprintf(str, "%s", "|Active Object %x4");
- return string;
-}
-
-static char *ndof_pup(void)
-{
- static char string[512];
- char *str = string;
-
- str += sprintf(str, "%s", "ndof mode: %t");
- str += sprintf(str, "%s", "|turntable %x0");
- str += sprintf(str, "%s", "|fly %x1");
- str += sprintf(str, "%s", "|transform %x2");
- return string;
-}
-
-
-static char *snapmode_pup(void)
-{
- static char string[512];
- char *str = string;
-
- str += sprintf(str, "%s", "Snap Element: %t");
- str += sprintf(str, "%s", "|Vertex%x0");
- str += sprintf(str, "%s", "|Edge%x1");
- str += sprintf(str, "%s", "|Face%x2");
- str += sprintf(str, "%s", "|Volume%x3");
- return string;
-}
-
-static char *propfalloff_pup(void)
-{
- static char string[512];
- char *str = string;
-
- str += sprintf(str, "%s", "Falloff: %t");
- str += sprintf(str, "%s", "|Smooth Falloff%x0");
- str += sprintf(str, "%s", "|Sphere Falloff%x1");
- str += sprintf(str, "%s", "|Root Falloff%x2");
- str += sprintf(str, "%s", "|Sharp Falloff%x3");
- str += sprintf(str, "%s", "|Linear Falloff%x4");
- str += sprintf(str, "%s", "|Random Falloff%x6");
- str += sprintf(str, "%s", "|Constant, No Falloff%x5");
- return string;
-}
-
-
static void do_view3d_header_buttons(bContext *C, void *arg, int event)
{
wmWindow *win= CTX_wm_window(C);
- Scene *scene= CTX_data_scene(C);
ToolSettings *ts= CTX_data_tool_settings(C);
ScrArea *sa= CTX_wm_area(C);
View3D *v3d= sa->spacedata.first;
Object *obedit = CTX_data_edit_object(C);
- Object *ob = CTX_data_active_object(C);
BMEditMesh *em= NULL;
- int bit, ctrl= win->eventstate->ctrl, shift= win->eventstate->shift;
+ int ctrl= win->eventstate->ctrl, shift= win->eventstate->shift;
PointerRNA props_ptr;
if(obedit && obedit->type==OB_MESH) {
@@ -1737,44 +324,16 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event)
/* watch it: if sa->win does not exist, check that when calling direct drawing routines */
switch(event) {
- case B_HOME:
- WM_operator_name_call(C, "VIEW3D_OT_view_all", WM_OP_EXEC_REGION_WIN, NULL);
- break;
case B_REDR:
ED_area_tag_redraw(sa);
break;
- case B_SCENELOCK:
- if(v3d->scenelock) {
- v3d->lay= scene->lay;
- /* seek for layact */
- bit= 0;
- while(bit<32) {
- if(v3d->lay & (1<<bit)) {
- v3d->layact= 1<<bit;
- break;
- }
- bit++;
- }
- v3d->camera= scene->camera;
- ED_area_tag_redraw(sa);
- }
- break;
- case B_VIEWRENDER:
- if (sa->spacetype==SPACE_VIEW3D) {
-// XXX BIF_do_ogl_render(v3d, shift);
- }
- break;
case B_MODESELECT:
WM_operator_properties_create(&props_ptr, "OBJECT_OT_mode_set");
RNA_enum_set(&props_ptr, "mode", v3d->modeselect);
WM_operator_name_call(C, "OBJECT_OT_mode_set", WM_OP_EXEC_REGION_WIN, &props_ptr);
WM_operator_properties_free(&props_ptr);
break;
- case B_AROUND:
- WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, 0);
-// XXX handle_view3d_around(); /* copies to other 3d windows */
- break;
case B_SEL_VERT:
if(em) {
@@ -1815,22 +374,6 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event)
}
break;
- case B_SEL_PATH:
- ts->particle.selectmode= SCE_SELECT_PATH;
- WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
- ED_undo_push(C, "Selectmode Set: Path");
- break;
- case B_SEL_POINT:
- ts->particle.selectmode = SCE_SELECT_POINT;
- WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
- ED_undo_push(C, "Selectmode Set: Point");
- break;
- case B_SEL_END:
- ts->particle.selectmode = SCE_SELECT_END;
- WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
- ED_undo_push(C, "Selectmode Set: End point");
- break;
-
case B_MAN_TRANS:
if( shift==0 || v3d->twtype==0) {
v3d->twtype= V3D_MANIP_TRANSLATE;
@@ -1854,126 +397,12 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event)
break;
case B_MAN_MODE:
ED_area_tag_redraw(sa);
- break;
- case B_VIEW_BUTSEDIT:
- ED_area_tag_redraw(sa);
break;
-
default:
-
- if(event>=B_LAY && event<B_LAY+31) {
- if(v3d->lay!=0 && shift) {
-
- /* but do find active layer */
-
- bit= event-B_LAY;
- if( v3d->lay & (1<<bit)) v3d->layact= 1<<bit;
- else {
- if( (v3d->lay & v3d->layact) == 0) {
- bit= 0;
- while(bit<32) {
- if(v3d->lay & (1<<bit)) {
- v3d->layact= 1<<bit;
- break;
- }
- bit++;
- }
- }
- }
- }
- else {
- bit= event-B_LAY;
- v3d->lay= 1<<bit;
- v3d->layact= v3d->lay;
- }
-
- if(v3d->scenelock) handle_view3d_lock(C);
-
- ED_area_tag_redraw(sa);
- countall();
-
- /* new layers might need unflushed events events */
- DAG_scene_update_flags(scene, v3d->lay); /* tags all that moves and flushes */
-
- }
break;
}
}
-static void view3d_header_pulldowns(const bContext *C, uiBlock *block, Object *ob, int *xcoord, int yco)
-{
- Object *obedit = CTX_data_edit_object(C);
- RegionView3D *rv3d= wm_region_view3d(C);
- short xmax, xco= *xcoord;
-
- /* compensate for local mode when setting up the viewing menu/iconrow values */
- if(rv3d->view==7) rv3d->viewbut= 1;
- else if(rv3d->view==1) rv3d->viewbut= 2;
- else if(rv3d->view==3) rv3d->viewbut= 3;
- else rv3d->viewbut= 0;
-
- /* the 'xmax - 3' rather than xmax is to prevent some weird flickering where the highlighted
- * menu is drawn wider than it should be. The ypos of -2 is to make it properly fill the
- * height of the header */
-
- xmax= GetButStringLength("Select");
-
- xco+= xmax;
-
- if (obedit) {
- }
- else if (ob && ob->mode & OB_MODE_WEIGHT_PAINT) {
- xmax= GetButStringLength("Paint");
- uiDefPulldownBut(block, view3d_wpaintmenu, NULL, "Paint", xco,yco, xmax-3, 20, "");
- xco+= xmax;
- }
- else if (ob && ob->mode & OB_MODE_TEXTURE_PAINT) {
- xmax= GetButStringLength("Paint");
- uiDefPulldownBut(block, view3d_tpaintmenu, NULL, "Paint", xco,yco, xmax-3, 20, "");
- xco+= xmax;
- }
- else if (paint_facesel_test(ob)) {
- if (ob && ob->type == OB_MESH) {
- xmax= GetButStringLength("Face");
- uiDefPulldownBut(block, view3d_faceselmenu, NULL, "Face", xco,yco, xmax-3, 20, "");
- xco+= xmax;
- }
- }
- else if(ob && ob->mode & OB_MODE_PARTICLE_EDIT) {
- /* ported to python */
- }
- else {
- if (ob && (ob->mode & OB_MODE_POSE)) {
- /* ported to python */
- }
- }
-
- *xcoord= xco;
-}
-
-static int view3d_layer_icon(int but_lay, int ob_lay, int used_lay)
-{
- if (but_lay & ob_lay)
- return ICON_LAYER_ACTIVE;
- else if (but_lay & used_lay)
- return ICON_LAYER_USED;
- else
- 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;
- }
- }
-}
-
/* Returns the icon associated with an object mode */
static int object_mode_icon(int mode)
{
@@ -1990,22 +419,23 @@ static int object_mode_icon(int mode)
void uiTemplateHeader3D(uiLayout *layout, struct bContext *C)
{
- ARegion *ar= CTX_wm_region(C);
+ bScreen *screen= CTX_wm_screen(C);
ScrArea *sa= CTX_wm_area(C);
View3D *v3d= sa->spacedata.first;
Scene *scene= CTX_data_scene(C);
ToolSettings *ts= CTX_data_tool_settings(C);
+ PointerRNA v3dptr, toolsptr, sceneptr;
Object *ob= OBACT;
Object *obedit = CTX_data_edit_object(C);
uiBlock *block;
uiLayout *row;
- int a, xco=0, maxco=0, yco= 0;
- block= uiLayoutAbsoluteBlock(layout);
+ RNA_pointer_create(&screen->id, &RNA_Space3DView, v3d, &v3dptr);
+ RNA_pointer_create(&scene->id, &RNA_ToolSettings, ts, &toolsptr);
+ RNA_pointer_create(&scene->id, &RNA_Scene, scene, &sceneptr);
+
+ block= uiLayoutGetBlock(layout);
uiBlockSetHandleFunc(block, do_view3d_header_buttons, NULL);
-
- if((sa->flag & HEADER_NO_PULLDOWN)==0)
- view3d_header_pulldowns(C, block, ob, &xco, yco);
/* other buttons: */
uiBlockSetEmboss(block, UI_EMBOSS);
@@ -2026,245 +456,80 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C)
if(ob && (ob->mode & OB_MODE_TEXTURE_PAINT)) v3d->flag |= V3D_TEXTUREPAINT;
if(paint_facesel_test(ob)) v3d->flag |= V3D_FACESELECT;
+ uiBlockBeginAlign(block);
uiDefIconTextButS(block, MENU, B_MODESELECT, object_mode_icon(v3d->modeselect), view3d_modeselect_pup(scene) ,
- xco,yco,126,20, &(v3d->modeselect), 0, 0, 0, 0, "Mode (Hotkeys: Tab, V, Ctrl Tab)");
- header_xco_step(ar, &xco, &yco, &maxco, 126+8);
+ 0,0,126,20, &(v3d->modeselect), 0, 0, 0, 0, "Mode");
+ uiBlockEndAlign(block);
- /* 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)");
+ /* Draw type */
+ uiItemR(layout, "", 0, &v3dptr, "viewport_shading", UI_ITEM_R_ICON_ONLY);
- header_xco_step(ar, &xco, &yco, &maxco, XIC+18);
+ if (obedit==NULL && ((ob && ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT)))) {
+ /* Manipulators aren't used in weight paint mode */
+
+ PointerRNA meshptr;
- uiBlockBeginAlign(block);
+ RNA_pointer_create(&ob->id, &RNA_Mesh, ob->data, &meshptr);
+ uiItemR(layout, "", 0, &meshptr, "use_paint_mask", UI_ITEM_R_ICON_ONLY);
+ } else {
+ char *str_menu;
- if(retopo_mesh_paint_check()) {
- void *rpd= NULL; // XXX RetopoPaintData *rpd= get_retopo_paint_data();
- if(rpd) {
- 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;
- uiDefButC(block,ROW,B_REDR,"Line",xco,yco,40,20,&ts->retopo_paint_tool,6.0,RETOPO_LINE,0,0,"");
- xco+= 40;
- uiDefButC(block,ROW,B_REDR,"Ellipse",xco,yco,60,20,&ts->retopo_paint_tool,6.0,RETOPO_ELLIPSE,0,0,"");
- 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;
- }
- 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;
- }
- 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;
- }
- header_xco_step(ar, &xco, &yco, &maxco, 5);
-
- uiBlockEndAlign(block);
- }
- } else {
- if (obedit==NULL && ((ob && ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT)))) {
- Mesh *me= ob->data;
- uiDefIconButBitS(block, TOG, ME_EDIT_PAINT_MASK, B_VIEW_BUTSEDIT, ICON_FACESEL_HLT,xco,yco,XIC,YIC, &me->editflag, 0, 0, 0, 0, "Painting Mask (FKey)");
- header_xco_step(ar, &xco, &yco, &maxco, XIC+10);
- } else {
- /* 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,
- xco,yco,XIC,YIC,
- &v3d->flag, 0, 0, 0, 0, "Move object centers only");
- uiBlockEndAlign(block);
-
- header_xco_step(ar, &xco, &yco, &maxco, XIC+8);
-
- uiBlockBeginAlign(block);
+ row= uiLayoutRow(layout, 1);
+ uiItemR(row, "", 0, &v3dptr, "pivot_point", UI_ITEM_R_ICON_ONLY);
+ uiItemR(row, "", 0, &v3dptr, "pivot_point_align", UI_ITEM_R_ICON_ONLY);
- /* 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;
+ /* NDOF */
+ /* Not implemented yet
+ if (G.ndofdevice ==0 ) {
+ uiDefIconTextButC(block, ICONTEXTROW,B_NDOF, ICON_NDOF_TURN, ndof_pup(), 0,0,XIC+10,YIC, &(v3d->ndofmode), 0, 3.0, 0, 0, "Ndof mode");
- uiDefIconButC(block, TOG, B_NDOF, ICON_NDOF_DOM,
- xco,yco,XIC,YIC,
- &v3d->ndoffilter, 0, 1, 0, 0, "dominant axis");
- uiBlockEndAlign(block);
-
- header_xco_step(ar, &xco, &yco, &maxco, XIC+8);
- }
- uiBlockEndAlign(block);
+ uiDefIconButC(block, TOG, B_NDOF, ICON_NDOF_DOM,
+ 0,0,XIC,YIC,
+ &v3d->ndoffilter, 0, 1, 0, 0, "dominant axis");
+ }
+ */
- /* Transform widget / manipulators */
- 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;
+ /* Transform widget / manipulators */
+ row= uiLayoutRow(layout, 1);
+ uiItemR(row, "", 0, &v3dptr, "manipulator", UI_ITEM_R_ICON_ONLY);
+ block= uiLayoutGetBlock(row);
- 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)");
- xco+= XIC;
- uiDefIconButBitS(block, TOG, V3D_MANIP_ROTATE, B_MAN_ROT, ICON_MAN_ROT, xco,yco,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Rotate manipulator mode (Ctrl Alt R)");
- xco+= XIC;
- uiDefIconButBitS(block, TOG, V3D_MANIP_SCALE, B_MAN_SCALE, ICON_MAN_SCALE, xco,yco,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Scale manipulator mode (Ctrl Alt S)");
- xco+= XIC;
- }
-
- if (v3d->twmode > (BIF_countTransformOrientation(C) - 1) + V3D_MANIP_CUSTOM) {
- v3d->twmode = 0;
- }
+ if(v3d->twflag & V3D_USE_MANIPULATOR) {
+ uiDefIconButBitS(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Translate manipulator mode");
+ uiDefIconButBitS(block, TOG, V3D_MANIP_ROTATE, B_MAN_ROT, ICON_MAN_ROT, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Rotate manipulator mode");
+ uiDefIconButBitS(block, TOG, V3D_MANIP_SCALE, B_MAN_SCALE, ICON_MAN_SCALE, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Scale manipulator mode");
+ }
- str_menu = BIF_menustringTransformOrientation(C, "Orientation");
- 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);
+ if (v3d->twmode > (BIF_countTransformOrientation(C) - 1) + V3D_MANIP_CUSTOM) {
+ v3d->twmode = 0;
+ }
- header_xco_step(ar, &xco, &yco, &maxco, 78);
- uiBlockEndAlign(block);
- }
+ str_menu = BIF_menustringTransformOrientation(C, "Orientation");
+ uiDefButS(block, MENU, B_MAN_MODE, str_menu,0,0,70,YIC, &v3d->twmode, 0, 0, 0, 0, "Transform Orientation");
+ MEM_freeN(str_menu);
+ }
- /* LAYERS */
- if(obedit==NULL && v3d->localvd==NULL) {
- int ob_lay = ob ? ob->lay : 0;
- uiBlockBeginAlign(block);
- for(a=0; a<5; a++) {
- uiDefIconButBitI(block, TOG, 1<<a, B_LAY+a, view3d_layer_icon(1<<a, ob_lay, v3d->lay_used), (short)(xco+a*(XIC/2)), yco+(short)(YIC/2),(short)(XIC/2),(short)(YIC/2), &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)");
- }
- for(a=0; a<5; a++) {
- uiDefIconButBitI(block, TOG, 1<<(a+10), B_LAY+10+a, view3d_layer_icon(1<<(a+10), ob_lay, v3d->lay_used), (short)(xco+a*(XIC/2)), yco, XIC/2, (YIC)/2, &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)");
- }
- xco+= 5;
- uiBlockBeginAlign(block);
- for(a=5; a<10; a++) {
- uiDefIconButBitI(block, TOG, 1<<a, B_LAY+a, view3d_layer_icon(1<<a, ob_lay, v3d->lay_used), (short)(xco+a*(XIC/2)), yco+(short)(YIC/2),(short)(XIC/2),(short)(YIC/2), &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)");
- }
- for(a=5; a<10; a++) {
- uiDefIconButBitI(block, TOG, 1<<(a+10), B_LAY+10+a, view3d_layer_icon(1<<(a+10), ob_lay, v3d->lay_used), (short)(xco+a*(XIC/2)), yco, XIC/2, (YIC)/2, &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)");
- }
- uiBlockEndAlign(block);
-
- xco+= (a-2)*(XIC/2)+3;
-
- /* 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 `)");
- header_xco_step(ar, &xco, &yco, &maxco, XIC+10);
-
- }
-
- /* proportional falloff */
- if((obedit == NULL || (obedit->type == OB_MESH || obedit->type == OB_CURVE || obedit->type == OB_SURF || obedit->type == OB_LATTICE)) || (ob && ob->mode & OB_MODE_PARTICLE_EDIT)) {
-
- uiBlockBeginAlign(block);
- uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_PROP_OFF, "Proportional %t|Off %x0|On %x1|Connected %x2", xco,yco,XIC+10,YIC, &(ts->proportional), 0, 1.0, 0, 0, "Proportional Edit Falloff (Hotkeys: O, Alt O) ");
- xco+= XIC+10;
+ if(obedit==NULL && v3d->localvd==NULL) {
+ int ob_lay = ob ? ob->lay : 0;
- if(ts->proportional) {
- uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_SMOOTHCURVE, propfalloff_pup(), xco,yco,XIC+10,YIC, &(ts->prop_mode), 0.0, 0.0, 0, 0, "Proportional Edit Falloff (Hotkey: Shift O) ");
- xco+= XIC+10;
- }
- uiBlockEndAlign(block);
- header_xco_step(ar, &xco, &yco, &maxco, 10);
- }
-
- /* Snap */
- if (BIF_snappingSupported(obedit)) {
- uiBlockBeginAlign(block);
-
- if (ts->snap_flag & SCE_SNAP) {
- uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEO,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Snap with Ctrl during transform (Shift Tab)");
- xco+= XIC;
- if(v3d->modeselect == OB_MODE_OBJECT) {
- uiDefIconButBitS(block, TOG, SCE_SNAP_ROTATE, B_REDR, ICON_SNAP_NORMAL,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Align rotation with the snapping target");
- xco+= XIC;
- }
- if (ts->snap_mode == SCE_SNAP_MODE_VOLUME) {
- uiDefIconButBitS(block, TOG, SCE_SNAP_PEEL_OBJECT, B_REDR, ICON_SNAP_PEEL_OBJECT,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Consider objects as whole when finding volume center");
- xco+= XIC;
- }
- if (ts->snap_mode == SCE_SNAP_MODE_FACE) {
- uiDefIconButBitS(block, TOG, SCE_SNAP_PROJECT, B_REDR, ICON_RETOPO,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Project elements instead of snapping them");
- xco+= XIC;
- }
- uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_SNAP_VERTEX, snapmode_pup(), xco,yco,XIC+10,YIC, &(ts->snap_mode), 0.0, 0.0, 0, 0, "Snapping mode");
- xco+= XIC + 10;
- uiDefButS(block, MENU, B_NOP, "Snap Mode%t|Closest%x0|Center%x1|Median%x2|Active%x3",xco,yco,70,YIC, &ts->snap_target, 0, 0, 0, 0, "Snap Target Mode");
- xco+= 70;
- } else {
- uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEAR,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Snap while Ctrl is held during transform (Shift Tab)");
- xco+= XIC;
- }
-
- uiBlockEndAlign(block);
- header_xco_step(ar, &xco, &yco, &maxco, 10);
- }
+ /* Layers */
+ if (v3d->scenelock)
+ uiTemplateLayers(layout, &sceneptr, "visible_layers", &v3dptr, "used_layers", ob_lay);
+ else
+ uiTemplateLayers(layout, &v3dptr, "visible_layers", &v3dptr, "used_layers", ob_lay);
- /* selection modus */
- if(obedit && (obedit->type == OB_MESH)) {
- BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh;
+ /* Scene lock */
+ uiItemR(layout, "", 0, &v3dptr, "lock_camera_and_layers", UI_ITEM_R_ICON_ONLY);
+ }
- uiBlockBeginAlign(block);
- uiDefIconButBitS(block, TOG, SCE_SELECT_VERTEX, B_SEL_VERT, ICON_VERTEXSEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode (Ctrl Tab 1)");
- xco+= XIC;
- uiDefIconButBitS(block, TOG, SCE_SELECT_EDGE, B_SEL_EDGE, ICON_EDGESEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Edge select mode (Ctrl Tab 2)");
- xco+= XIC;
- uiDefIconButBitS(block, TOG, SCE_SELECT_FACE, B_SEL_FACE, ICON_FACESEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Face select mode (Ctrl Tab 3)");
- xco+= XIC;
- uiBlockEndAlign(block);
- header_xco_step(ar, &xco, &yco, &maxco, 10);
- 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, "Occlude background geometry");
- }
- xco+= XIC;
- uiBlockEndAlign(block);
- header_xco_step(ar, &xco, &yco, &maxco, XIC);
- }
- else if(ob && ob->mode & OB_MODE_PARTICLE_EDIT) {
- uiBlockBeginAlign(block);
- uiDefIconButBitI(block, TOG, SCE_SELECT_PATH, B_SEL_PATH, ICON_EDGESEL, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Path edit mode");
- xco+= XIC;
- uiDefIconButBitI(block, TOG, SCE_SELECT_POINT, B_SEL_POINT, ICON_VERTEXSEL, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Point select mode");
- xco+= XIC;
- uiDefIconButBitI(block, TOG, SCE_SELECT_END, B_SEL_END, ICON_FACESEL, xco,yco,XIC,YIC, &ts->particle.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);
- header_xco_step(ar, &xco, &yco, &maxco, XIC);
- }
+ /* selection modus */
+ if(obedit && (obedit->type == OB_MESH)) {
+ BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh;
- /* OpenGL Render */
row= uiLayoutRow(layout, 1);
- uiItemO(row, "", ICON_RENDER_STILL, "SCREEN_OT_opengl_render");
- uiItemBooleanO(row, "", ICON_RENDER_ANIMATION, "SCREEN_OT_opengl_render", "animation", 1);
-
-
- if (ob && (ob->mode & OB_MODE_POSE)) {
- PointerRNA *but_ptr;
- uiBut *but;
-
- xco+= XIC*2;
- uiBlockBeginAlign(block);
-
- uiDefIconButO(block, BUT, "POSE_OT_copy", WM_OP_INVOKE_REGION_WIN, ICON_COPYDOWN, xco,yco,XIC,YIC, NULL);
- uiBlockSetButLock(block, object_data_is_libdata(ob), "Can't edit external libdata");
- xco+= XIC;
-
- uiDefIconButO(block, BUT, "POSE_OT_paste", WM_OP_INVOKE_REGION_WIN, ICON_PASTEDOWN, xco,yco,XIC,YIC, NULL);
- xco+= XIC;
- but=uiDefIconButO(block, BUT, "POSE_OT_paste", WM_OP_INVOKE_REGION_WIN, ICON_PASTEFLIPDOWN, xco,yco,XIC,YIC, NULL);
- but_ptr= uiButGetOperatorPtrRNA(but);
- RNA_boolean_set(but_ptr, "flipped", 1);
- uiBlockEndAlign(block);
- header_xco_step(ar, &xco, &yco, &maxco, XIC);
-
- }
+ block= uiLayoutGetBlock(row);
+ uiDefIconButBitS(block, TOG, SCE_SELECT_VERTEX, B_SEL_VERT, ICON_VERTEXSEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode");
+ uiDefIconButBitS(block, TOG, SCE_SELECT_EDGE, B_SEL_EDGE, ICON_EDGESEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Edge select mode");
+ uiDefIconButBitS(block, TOG, SCE_SELECT_FACE, B_SEL_FACE, ICON_FACESEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Face select mode");
}
}
-
diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h
index b32a067206e..bf5d516c03a 100644
--- a/source/blender/editors/space_view3d/view3d_intern.h
+++ b/source/blender/editors/space_view3d/view3d_intern.h
@@ -161,7 +161,6 @@ void VIEW3D_OT_snap_selected_to_center(struct wmOperatorType *ot);
void VIEW3D_OT_snap_cursor_to_grid(struct wmOperatorType *ot);
void VIEW3D_OT_snap_cursor_to_selected(struct wmOperatorType *ot);
void VIEW3D_OT_snap_cursor_to_active(struct wmOperatorType *ot);
-void VIEW3D_OT_snap_menu(struct wmOperatorType *ot);
/* space_view3d.c */
ARegion *view3d_has_buttons_region(ScrArea *sa);
diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c
index db5fbc70669..c211e55d7a0 100644
--- a/source/blender/editors/space_view3d/view3d_ops.c
+++ b/source/blender/editors/space_view3d/view3d_ops.c
@@ -98,7 +98,6 @@ void view3d_operatortypes(void)
WM_operatortype_append(VIEW3D_OT_snap_cursor_to_grid);
WM_operatortype_append(VIEW3D_OT_snap_cursor_to_selected);
WM_operatortype_append(VIEW3D_OT_snap_cursor_to_active);
- WM_operatortype_append(VIEW3D_OT_snap_menu);
transform_operatortypes();
}
@@ -108,13 +107,13 @@ void view3d_keymap(wmKeyConfig *keyconf)
wmKeyMap *keymap;
wmKeyMapItem *kmi;
- keymap= WM_keymap_find(keyconf, "View3D Generic", SPACE_VIEW3D, 0);
+ keymap= WM_keymap_find(keyconf, "3D View Generic", SPACE_VIEW3D, 0);
WM_keymap_add_item(keymap, "VIEW3D_OT_properties", NKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "VIEW3D_OT_toolbar", TKEY, KM_PRESS, 0, 0);
/* only for region 3D window */
- keymap= WM_keymap_find(keyconf, "View3D", SPACE_VIEW3D, 0);
+ keymap= WM_keymap_find(keyconf, "3D View", SPACE_VIEW3D, 0);
WM_keymap_verify_item(keymap, "VIEW3D_OT_manipulator", LEFTMOUSE, KM_PRESS, KM_ANY, 0);
/*
@@ -180,24 +179,9 @@ void view3d_keymap(wmKeyConfig *keyconf)
kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_BOTTOM);
RNA_boolean_set(kmi->ptr, "align_active", TRUE);
-
-
- RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD2, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPDOWN);
- RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_RIGHT);
- RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD4, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPLEFT);
- WM_keymap_add_item(keymap, "VIEW3D_OT_view_persportho", PAD5, KM_PRESS, 0, 0);
-
- RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD6, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPRIGHT);
- RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_TOP);
- RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD8, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPUP);
- RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, KM_CTRL, 0)->ptr, "type", RV3D_VIEW_BACK);
- RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, KM_CTRL, 0)->ptr, "type", RV3D_VIEW_LEFT);
- RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_CTRL, 0)->ptr, "type", RV3D_VIEW_BOTTOM);
WM_keymap_add_item(keymap, "VIEW3D_OT_localview", PADSLASHKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "VIEW3D_OT_game_start", PKEY, KM_PRESS, 0, 0);
-
/* layers, shift + alt are properties set in invoke() */
RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_layers", ACCENTGRAVEKEY, KM_PRESS, 0, 0)->ptr, "nr", 0);
RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_layers", ONEKEY, KM_PRESS, KM_ANY, 0)->ptr, "nr", 1);
@@ -223,11 +207,6 @@ void view3d_keymap(wmKeyConfig *keyconf)
RNA_string_set(kmi->ptr, "value_1", "TEXTURED");
RNA_string_set(kmi->ptr, "value_2", "SOLID");
- kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(kmi->ptr, "path", "space_data.viewport_shading");
- RNA_string_set(kmi->ptr, "value_1", "SHADED");
- RNA_string_set(kmi->ptr, "value_2", "WIREFRAME");
-
/* selection*/
WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, 0, 0);
RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "extend", TRUE);
@@ -261,7 +240,7 @@ void view3d_keymap(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "VIEW3D_OT_camera_to_view", PAD0, KM_PRESS, KM_ALT|KM_CTRL, 0);
WM_keymap_add_item(keymap, "VIEW3D_OT_object_as_camera", PAD0, KM_PRESS, KM_CTRL, 0);
- WM_keymap_add_item(keymap, "VIEW3D_OT_snap_menu", SKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_snap", SKEY, KM_PRESS, KM_SHIFT, 0);
/* context ops */
kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", COMMAKEY, KM_PRESS, 0, 0);
@@ -275,19 +254,21 @@ void view3d_keymap(wmKeyConfig *keyconf)
kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", COMMAKEY, KM_PRESS, KM_ALT, 0); /* new in 2.5 */
RNA_string_set(kmi->ptr, "path", "space_data.pivot_point_align");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SPACEKEY, KM_PRESS, KM_CTRL, 0); /* new in 2.5 */
+ RNA_string_set(kmi->ptr, "path", "space_data.manipulator");
+
kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, 0, 0);
RNA_string_set(kmi->ptr, "path", "space_data.pivot_point");
RNA_string_set(kmi->ptr, "value", "CURSOR");
kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, KM_CTRL, 0);
RNA_string_set(kmi->ptr, "path", "space_data.pivot_point");
- RNA_string_set(kmi->ptr, "value", "INDIVIDUAL_CENTERS");
+ RNA_string_set(kmi->ptr, "value", "INDIVIDUAL_ORIGINS");
kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, KM_ALT, 0);
RNA_string_set(kmi->ptr, "path", "space_data.pivot_point");
RNA_string_set(kmi->ptr, "value", "ACTIVE_ELEMENT");
-
transform_keymap_for_space(keyconf, keymap, SPACE_VIEW3D);
fly_modal_keymap(keyconf);
diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c
index 2037eeab235..68d4e98b1fa 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -125,31 +125,31 @@ void view3d_get_view_aligned_coordinate(ViewContext *vc, float *fp, short mval[2
}
}
-void view3d_get_transformation(ViewContext *vc, Object *ob, bglMats *mats)
+void view3d_get_transformation(ARegion *ar, RegionView3D *rv3d, Object *ob, bglMats *mats)
{
float cpy[4][4];
int i, j;
- mul_m4_m4m4(cpy, ob->obmat, vc->rv3d->viewmat);
+ mul_m4_m4m4(cpy, ob->obmat, rv3d->viewmat);
for(i = 0; i < 4; ++i) {
for(j = 0; j < 4; ++j) {
- mats->projection[i*4+j] = vc->rv3d->winmat[i][j];
+ mats->projection[i*4+j] = rv3d->winmat[i][j];
mats->modelview[i*4+j] = cpy[i][j];
}
}
- mats->viewport[0] = vc->ar->winrct.xmin;
- mats->viewport[1] = vc->ar->winrct.ymin;
- mats->viewport[2] = vc->ar->winx;
- mats->viewport[3] = vc->ar->winy;
+ mats->viewport[0] = ar->winrct.xmin;
+ mats->viewport[1] = ar->winrct.ymin;
+ mats->viewport[2] = ar->winx;
+ mats->viewport[3] = ar->winy;
}
/* ********************** view3d_select: selection manipulations ********************* */
/* local prototypes */
-void EM_backbuf_checkAndSelectVerts(BMEditMesh *em, int select)
+void EDBM_backbuf_checkAndSelectVerts(BMEditMesh *em, int select)
{
BMVert *eve;
BMIter iter;
@@ -467,12 +467,14 @@ static void do_lasso_select_mesh(ViewContext *vc, short mcords[][2], short moves
data.done = 0;
data.pass = 0;
- bbsel= EM_mask_init_backbuf_border(vc, mcords, moves, rect.xmin, rect.ymin, rect.xmax, rect.ymax);
+ /* workaround: init mats first, EM_mask_init_backbuf_border can change
+ view matrix to pixel space, breaking edge select with backbuf .. */
ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */
+ bbsel= EM_mask_init_backbuf_border(vc, mcords, moves, rect.xmin, rect.ymin, rect.xmax, rect.ymax);
if(vc->scene->toolsettings->selectmode & SCE_SELECT_VERTEX) {
if (bbsel) {
- EM_backbuf_checkAndSelectVerts(vc->em, select);
+ EDBM_backbuf_checkAndSelectVerts(vc->em, select);
} else {
mesh_foreachScreenVert(vc, do_lasso_select_mesh__doSelectVert, &data, 1);
}
@@ -654,7 +656,7 @@ static void do_lasso_select_armature(ViewContext *vc, short mcords[][2], short m
else ebone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL);
}
}
-
+ ED_armature_sync_selection(arm->edbo);
ED_armature_validate_active(arm);
}
@@ -920,7 +922,7 @@ static Base *mouse_select_menu(bContext *C, ViewContext *vc, unsigned int *buffe
/* UI */
uiPopupMenu *pup= uiPupMenuBegin(C, "Select Object", 0);
uiLayout *layout= uiPupMenuLayout(pup);
- uiLayout *split= uiLayoutSplit(layout, 0);
+ uiLayout *split= uiLayoutSplit(layout, 0, 0);
uiLayout *column= uiLayoutColumn(split, 0);
LinkNode *node;
@@ -1011,7 +1013,7 @@ static short mixed_bones_object_selectbuffer(ViewContext *vc, unsigned int *buff
/* mval is region coords */
-static void mouse_select(bContext *C, short *mval, short extend, short obcenter, short enumerate)
+static int mouse_select(bContext *C, short *mval, short extend, short obcenter, short enumerate)
{
ViewContext vc;
ARegion *ar= CTX_wm_region(C);
@@ -1019,6 +1021,7 @@ static void mouse_select(bContext *C, short *mval, short extend, short obcenter,
Scene *scene= CTX_data_scene(C);
Base *base, *startbase=NULL, *basact=NULL, *oldbasact=NULL;
int temp, a, dist=100;
+ int retval = 0;
short hits;
/* setup view context for argument to callbacks */
@@ -1165,6 +1168,7 @@ static void mouse_select(bContext *C, short *mval, short extend, short obcenter,
basact->flag|= SELECT;
basact->object->flag= basact->flag;
+ retval = 1;
WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, basact->object);
WM_event_add_notifier(C, NC_OBJECT|ND_BONE_ACTIVE, basact->object);
@@ -1184,6 +1188,7 @@ static void mouse_select(bContext *C, short *mval, short extend, short obcenter,
/* so, do we have something selected? */
if(basact) {
+ retval = 1;
if(vc.obedit) {
/* only do select */
@@ -1217,6 +1222,8 @@ static void mouse_select(bContext *C, short *mval, short extend, short obcenter,
WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene);
}
}
+
+ return retval;
}
/* ******************** border and circle ************************************** */
@@ -1269,7 +1276,7 @@ static void do_nurbs_box_select__doSelect(void *userData, Nurb *nu, BPoint *bp,
}
}
}
-static void do_nurbs_box_select(ViewContext *vc, rcti *rect, int select)
+static void do_nurbs_box_select(ViewContext *vc, rcti *rect, int select, int extend)
{
struct { ViewContext vc; rcti *rect; int select; } data;
@@ -1277,6 +1284,10 @@ static void do_nurbs_box_select(ViewContext *vc, rcti *rect, int select)
data.rect = rect;
data.select = select;
+ if (extend == 0 && select) {
+ CU_deselect_all(vc->obedit);
+ }
+
ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */
nurbs_foreachScreenVert(vc, do_nurbs_box_select__doSelect, &data);
}
@@ -1289,7 +1300,7 @@ static void do_lattice_box_select__doSelect(void *userData, BPoint *bp, int x, i
bp->f1 = data->select?(bp->f1|SELECT):(bp->f1&~SELECT);
}
}
-static void do_lattice_box_select(ViewContext *vc, rcti *rect, int select)
+static void do_lattice_box_select(ViewContext *vc, rcti *rect, int select, int extend)
{
struct { ViewContext vc; rcti *rect; int select, pass, done; } data;
@@ -1297,6 +1308,10 @@ static void do_lattice_box_select(ViewContext *vc, rcti *rect, int select)
data.rect = rect;
data.select = select;
+ if (extend == 0 && select) {
+ ED_setflagsLatt(vc->obedit, 0);
+ }
+
ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */
lattice_foreachScreenVert(vc, do_lattice_box_select__doSelect, &data);
}
@@ -1339,7 +1354,7 @@ do_mesh_box_select__doSelectFace(void *userData, BMFace
BM_Select_Face(data->vc.em->bm, efa, data->select);
}
}
-static void do_mesh_box_select(ViewContext *vc, rcti *rect, int select)
+static void do_mesh_box_select(ViewContext *vc, rcti *rect, int select, int extend)
{
struct { ViewContext vc; rcti *rect; short select, pass, done; } data;
int bbsel;
@@ -1350,12 +1365,17 @@ static void do_mesh_box_select(ViewContext *vc, rcti *rect, int select)
data.pass = 0;
data.done = 0;
- bbsel= EDBM_init_backbuf_border(vc, rect->xmin, rect->ymin, rect->xmax, rect->ymax);
+ if (extend == 0 && select)
+ {
+ EDBM_clear_flag_all(vc->em, BM_SELECT);
+ }
+
ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */
+ bbsel= EDBM_init_backbuf_border(vc, rect->xmin, rect->ymin, rect->xmax, rect->ymax);
if(vc->scene->toolsettings->selectmode & SCE_SELECT_VERTEX) {
if (bbsel) {
- EM_backbuf_checkAndSelectVerts(vc->em, select);
+ EDBM_backbuf_checkAndSelectVerts(vc->em, select);
} else {
mesh_foreachScreenVert(vc, do_mesh_box_select__doSelectVert, &data, 1);
}
@@ -1398,6 +1418,7 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op)
MetaElem *ml;
unsigned int buffer[4*MAXPICKBUF];
int a, index;
+ int extend;
short hits, selecting;
view3d_operator_needs_opengl(C);
@@ -1410,31 +1431,41 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op)
rect.ymin= RNA_int_get(op->ptr, "ymin");
rect.xmax= RNA_int_get(op->ptr, "xmax");
rect.ymax= RNA_int_get(op->ptr, "ymax");
+ extend = RNA_boolean_get(op->ptr, "extend");
if(obedit==NULL && (paint_facesel_test(OBACT))) {
- face_borderselect(C, obact, &rect, selecting);
+ face_borderselect(C, obact, &rect, selecting, extend);
return OPERATOR_FINISHED;
}
else if(obedit==NULL && (obact && obact->mode & OB_MODE_PARTICLE_EDIT)) {
- return PE_border_select(C, &rect, selecting);
+ return PE_border_select(C, &rect, selecting, extend);
}
if(obedit) {
if(obedit->type==OB_MESH) {
Mesh *me= obedit->data;
vc.em= me->edit_btmesh;
- do_mesh_box_select(&vc, &rect, selecting);
+ do_mesh_box_select(&vc, &rect, selecting, extend);
// if (EM_texFaceCheck())
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data);
}
else if(ELEM(obedit->type, OB_CURVE, OB_SURF)) {
- do_nurbs_box_select(&vc, &rect, selecting);
+ do_nurbs_box_select(&vc, &rect, selecting, extend);
}
else if(obedit->type==OB_MBALL) {
MetaBall *mb = (MetaBall*)obedit->data;
hits= view3d_opengl_select(&vc, buffer, MAXPICKBUF, &rect);
+ if (extend == 0 && selecting) {
+ ml= mb->editelems->first;
+
+ while(ml) {
+ ml->flag &= ~SELECT;
+ ml= ml->next;
+ }
+ }
+
ml= mb->editelems->first;
while(ml) {
@@ -1463,6 +1494,17 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op)
for(ebone= arm->edbo->first; ebone; ebone= ebone->next)
ebone->flag &= ~BONE_DONE;
+ if (extend==0 && selecting) {
+ /* Set the flags */
+ CTX_DATA_BEGIN(C, EditBone *, ebone, visible_bones) {
+ /* ignore bone if selection can't change */
+ if ((ebone->flag & BONE_UNSELECTABLE) == 0) {
+ ebone->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL);
+ }
+ }
+ CTX_DATA_END;
+ }
+
hits= view3d_opengl_select(&vc, buffer, MAXPICKBUF, &rect);
/* first we only check points inside the border */
@@ -1510,7 +1552,7 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op)
}
else if(obedit->type==OB_LATTICE) {
- do_lattice_box_select(&vc, &rect, selecting);
+ do_lattice_box_select(&vc, &rect, selecting, extend);
}
}
else { /* no editmode, unified for bones and objects */
@@ -1526,6 +1568,25 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op)
else
bone_only= 0;
+ if (extend == 0 && selecting) {
+ base= FIRSTBASE;
+
+ if (bone_only) {
+ CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) {
+ pchan->bone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL);
+ }
+ CTX_DATA_END;
+ } else {
+ while(base) {
+ Base *next = base->next;
+ if(base->lay & v3d->lay) {
+ ED_base_object_select(base, BA_DESELECT);
+ }
+ base= next;
+ }
+ }
+ }
+
/* selection buffer now has bones potentially too, so we add MAXPICKBUF */
vbuffer = MEM_mallocN(4 * (totobj+MAXPICKBUF) * sizeof(unsigned int), "selection buffer");
hits= view3d_opengl_select(&vc, vbuffer, 4*(totobj+MAXPICKBUF), &rect);
@@ -1631,31 +1692,37 @@ static int view3d_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
Object *obact= CTX_data_active_object(C);
short center= RNA_boolean_get(op->ptr, "center");
short enumerate= RNA_boolean_get(op->ptr, "enumerate");
+ int retval = 0;
view3d_operator_needs_opengl(C);
if(obedit) {
if(obedit->type==OB_MESH)
- mouse_mesh(C, event->mval, extend);
+ retval = mouse_mesh(C, event->mval, extend);
else if(obedit->type==OB_ARMATURE)
- mouse_armature(C, event->mval, extend);
+ retval = mouse_armature(C, event->mval, extend);
else if(obedit->type==OB_LATTICE)
- mouse_lattice(C, event->mval, extend);
+ retval = mouse_lattice(C, event->mval, extend);
else if(ELEM(obedit->type, OB_CURVE, OB_SURF))
- mouse_nurb(C, event->mval, extend);
+ retval = mouse_nurb(C, event->mval, extend);
else if(obedit->type==OB_MBALL)
- mouse_mball(C, event->mval, extend);
+ retval = mouse_mball(C, event->mval, extend);
}
else if(obact && obact->mode & OB_MODE_PARTICLE_EDIT)
- PE_mouse_particles(C, event->mval, extend);
+ return PE_mouse_particles(C, event->mval, extend);
else if(obact && paint_facesel_test(obact))
- face_select(C, obact, event->mval, extend);
+ retval = face_select(C, obact, event->mval, extend);
else
- mouse_select(C, event->mval, extend, center, enumerate);
+ retval = mouse_select(C, event->mval, extend, center, enumerate);
- /* allowing tweaks */
- return OPERATOR_PASS_THROUGH|OPERATOR_FINISHED;
+ /* passthrough allows tweaks
+ * FINISHED to signal one operator worked
+ * */
+ if (retval)
+ return OPERATOR_PASS_THROUGH|OPERATOR_FINISHED;
+ else
+ return OPERATOR_PASS_THROUGH; /* nothing selected, just passthrough */
}
void VIEW3D_OT_select(wmOperatorType *ot)
@@ -1744,7 +1811,7 @@ static void mesh_circle_select(ViewContext *vc, int selecting, short *mval, floa
if(vc->scene->toolsettings->selectmode & SCE_SELECT_VERTEX) {
if(bbsel) {
- EM_backbuf_checkAndSelectVerts(vc->em, selecting==LEFTMOUSE);
+ EDBM_backbuf_checkAndSelectVerts(vc->em, selecting==LEFTMOUSE);
} else {
mesh_foreachScreenVert(vc, mesh_circle_doSelectVert, &data, 1);
}
diff --git a/source/blender/editors/space_view3d/view3d_snap.c b/source/blender/editors/space_view3d/view3d_snap.c
index d5ed9867b1b..8a218bfbe4b 100644
--- a/source/blender/editors/space_view3d/view3d_snap.c
+++ b/source/blender/editors/space_view3d/view3d_snap.c
@@ -571,7 +571,8 @@ static int snap_sel_to_grid(bContext *C, wmOperator *op)
}
CTX_DATA_END;
}
- ED_anim_dag_flush_update(C);
+
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
return OPERATOR_FINISHED;
@@ -694,7 +695,8 @@ static int snap_sel_to_curs(bContext *C, wmOperator *op)
}
CTX_DATA_END;
}
- ED_anim_dag_flush_update(C);
+
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
return OPERATOR_FINISHED;
@@ -1081,7 +1083,7 @@ static int snap_selected_to_center(bContext *C, wmOperator *op)
CTX_DATA_END;
}
- ED_anim_dag_flush_update(C);
+ DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
return OPERATOR_FINISHED;
@@ -1131,42 +1133,3 @@ int minmax_verts(Object *obedit, float *min, float *max)
return 1;
}
-
-/* ************************************************* */
-
-static int snap_menu_invoke(bContext *C, wmOperator *unused, wmEvent *event)
-{
- uiPopupMenu *pup= uiPupMenuBegin(C, "Snap", 0);
- uiLayout *layout= uiPupMenuLayout(pup);
-
- uiItemO(layout, "Selected to Grid", 0, "VIEW3D_OT_snap_selected_to_grid");
- uiItemO(layout, "Selected to Cursor", 0, "VIEW3D_OT_snap_selected_to_cursor");
- uiItemO(layout, "Selected to Center", 0, "VIEW3D_OT_snap_selected_to_center");
- uiItemS(layout);
- uiItemO(layout, "Cursor to Selected", 0, "VIEW3D_OT_snap_cursor_to_selected");
- uiItemO(layout, "Cursor to Grid", 0, "VIEW3D_OT_snap_cursor_to_grid");
- uiItemO(layout, "Cursor to Active", 0, "VIEW3D_OT_snap_cursor_to_active");
-
- uiPupMenuEnd(C, pup);
-
- /* this operator is only for a menu, not used further */
- return OPERATOR_CANCELLED;
-}
-
-/* only used as menu */
-void VIEW3D_OT_snap_menu(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Snap Menu";
- ot->idname= "VIEW3D_OT_snap_menu";
-
- /* api callbacks */
- ot->invoke= snap_menu_invoke;
-
- ot->poll= ED_operator_view3d_active;
-
- /* flags */
- ot->flag= 0;
-}
-
-
diff --git a/source/blender/editors/space_view3d/view3d_toolbar.c b/source/blender/editors/space_view3d/view3d_toolbar.c
index 3249f26aff6..0384a23579e 100644
--- a/source/blender/editors/space_view3d/view3d_toolbar.c
+++ b/source/blender/editors/space_view3d/view3d_toolbar.c
@@ -142,8 +142,11 @@ static void view3d_panel_operator_redo_buts(const bContext *C, Panel *pa, wmOper
}
RNA_pointer_create(&wm->id, op->type->srna, op->properties, &ptr);
- if(op->type->ui)
- op->type->ui((bContext*)C, &ptr, pa->layout);
+ if(op->type->ui) {
+ op->layout= pa->layout;
+ op->type->ui((bContext*)C, op);
+ op->layout= NULL;
+ }
else
uiDefAutoButsRNA(C, pa->layout, &ptr, 1);
}
diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c
index d5b21b25481..23a9d28f1a4 100644
--- a/source/blender/editors/space_view3d/view3d_view.c
+++ b/source/blender/editors/space_view3d/view3d_view.c
@@ -287,6 +287,8 @@ void smooth_view(bContext *C, Object *oldcamera, Object *camera, float *ofs, flo
/* ensure it shows correct */
if(sms.to_camera) rv3d->persp= RV3D_PERSP;
+
+ rv3d->rflag |= RV3D_NAVIGATING;
/* keep track of running timer! */
if(rv3d->sms==NULL)
@@ -295,7 +297,7 @@ void smooth_view(bContext *C, Object *oldcamera, Object *camera, float *ofs, flo
if(rv3d->smooth_timer)
WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), rv3d->smooth_timer);
/* TIMER1 is hardcoded in keymap */
- rv3d->smooth_timer= WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER1, 1.0/30.0); /* max 30 frs/sec */
+ rv3d->smooth_timer= WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER1, 1.0/100.0); /* max 30 frs/sec */
return;
}
@@ -349,6 +351,7 @@ static int view3d_smoothview_invoke(bContext *C, wmOperator *op, wmEvent *event)
WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), rv3d->smooth_timer);
rv3d->smooth_timer= NULL;
+ rv3d->rflag &= ~RV3D_NAVIGATING;
}
else {
int i;
@@ -392,6 +395,7 @@ void VIEW3D_OT_smoothview(wmOperatorType *ot)
static void setcameratoview3d(View3D *v3d, RegionView3D *rv3d, Object *ob)
{
float dvec[3];
+ float mat3[3][3];
dvec[0]= rv3d->dist*rv3d->viewinv[2][0];
dvec[1]= rv3d->dist*rv3d->viewinv[2][1];
@@ -401,7 +405,10 @@ static void setcameratoview3d(View3D *v3d, RegionView3D *rv3d, Object *ob)
sub_v3_v3v3(ob->loc, ob->loc, rv3d->ofs);
rv3d->viewquat[0]= -rv3d->viewquat[0];
- quat_to_eul( ob->rot,rv3d->viewquat);
+ // quat_to_eul( ob->rot,rv3d->viewquat); // in 2.4x for xyz eulers only
+ quat_to_mat3(mat3, rv3d->viewquat);
+ object_mat3_to_rot(ob, mat3, 0);
+
rv3d->viewquat[0]= -rv3d->viewquat[0];
ob->recalc= OB_RECALC_OB;
@@ -486,6 +493,44 @@ void VIEW3D_OT_setobjectascamera(wmOperatorType *ot)
/* ********************************** */
+void view3d_calculate_clipping(BoundBox *bb, float planes[4][4], bglMats *mats, rcti *rect)
+{
+ double xs, ys, p[3];
+ short val;
+
+ /* near zero floating point values can give issues with gluUnProject
+ in side view on some implementations */
+ if(fabs(mats->modelview[0]) < 1e-6) mats->modelview[0]= 0.0;
+ if(fabs(mats->modelview[5]) < 1e-6) mats->modelview[5]= 0.0;
+
+ /* Set up viewport so that gluUnProject will give correct values */
+ mats->viewport[0] = 0;
+ mats->viewport[1] = 0;
+
+ /* four clipping planes and bounding volume */
+ /* first do the bounding volume */
+ for(val=0; val<4; val++) {
+ xs= (val==0||val==3)?rect->xmin:rect->xmax;
+ ys= (val==0||val==1)?rect->ymin:rect->ymax;
+
+ gluUnProject(xs, ys, 0.0, mats->modelview, mats->projection, mats->viewport, &p[0], &p[1], &p[2]);
+ VECCOPY(bb->vec[val], p);
+
+ gluUnProject(xs, ys, 1.0, mats->modelview, mats->projection, mats->viewport, &p[0], &p[1], &p[2]);
+ VECCOPY(bb->vec[4+val], p);
+ }
+
+ /* then plane equations */
+ for(val=0; val<4; val++) {
+
+ normal_tri_v3(planes[val], bb->vec[val], bb->vec[val==3?0:val+1], bb->vec[val+4]);
+
+ planes[val][3]= - planes[val][0]*bb->vec[val][0]
+ - planes[val][1]*bb->vec[val][1]
+ - planes[val][2]*bb->vec[val][2];
+ }
+}
+
/* create intersection coordinates in view Z direction at mouse coordinates */
void viewline(ARegion *ar, View3D *v3d, float mval[2], float ray_start[3], float ray_end[3])
{
@@ -501,8 +546,8 @@ void viewline(ARegion *ar, View3D *v3d, float mval[2], float ray_start[3], float
mul_m4_v4(rv3d->persinv, vec);
mul_v3_fl(vec, 1.0f / vec[3]);
- VECCOPY(ray_start, rv3d->viewinv[3]);
- VECSUB(vec, vec, ray_start);
+ copy_v3_v3(ray_start, rv3d->viewinv[3]);
+ sub_v3_v3v3(vec, vec, ray_start);
normalize_v3(vec);
VECADDFAC(ray_start, rv3d->viewinv[3], vec, v3d->near);
@@ -1263,6 +1308,74 @@ static unsigned int free_localbit(void)
return 0;
}
+static void copy_view3d_lock_space(View3D *v3d, Scene *scene)
+{
+ int bit;
+
+ if(v3d->scenelock && v3d->localvd==NULL) {
+ v3d->lay= scene->lay;
+ v3d->camera= scene->camera;
+
+ if(v3d->camera==NULL) {
+ ARegion *ar;
+
+ for(ar=v3d->regionbase.first; ar; ar= ar->next) {
+ if(ar->regiontype == RGN_TYPE_WINDOW) {
+ RegionView3D *rv3d= ar->regiondata;
+ if(rv3d->persp==RV3D_CAMOB)
+ rv3d->persp= RV3D_PERSP;
+ }
+ }
+ }
+
+ if((v3d->lay & v3d->layact) == 0) {
+ for(bit= 0; bit<32; bit++) {
+ if(v3d->lay & (1<<bit)) {
+ v3d->layact= 1<<bit;
+ break;
+ }
+ }
+ }
+ }
+}
+
+void ED_view3d_scene_layers_update(Main *bmain, Scene *scene)
+{
+ bScreen *sc;
+ ScrArea *sa;
+ SpaceLink *sl;
+
+ /* from scene copy to the other views */
+ for(sc=bmain->screen.first; sc; sc=sc->id.next) {
+ if(sc->scene!=scene)
+ continue;
+
+ for(sa=sc->areabase.first; sa; sa=sa->next)
+ for(sl=sa->spacedata.first; sl; sl=sl->next)
+ if(sl->spacetype==SPACE_VIEW3D)
+ copy_view3d_lock_space((View3D*)sl, scene);
+ }
+}
+
+int ED_view3d_scene_layer_set(int lay, const int *values)
+{
+ int i, tot= 0;
+
+ /* ensure we always have some layer selected */
+ for(i=0; i<20; i++)
+ if(values[i])
+ tot++;
+
+ if(tot==0)
+ return lay;
+
+ for(i=0; i<20; i++) {
+ if(values[i]) lay |= (1<<i);
+ else lay &= ~(1<<i);
+ }
+
+ return lay;
+}
static void initlocalview(Scene *scene, ScrArea *sa)
{
@@ -1600,6 +1713,7 @@ static int game_engine_exec(bContext *C, wmOperator *unused)
Scene *startscene = CTX_data_scene(C);
ScrArea *sa, *prevsa= CTX_wm_area(C);
ARegion *ar, *prevar= CTX_wm_region(C);
+ wmWindow *prevwin= CTX_wm_window(C);
RegionView3D *rv3d;
rcti cam_frame;
@@ -1633,11 +1747,15 @@ static int game_engine_exec(bContext *C, wmOperator *unused)
SaveState(C);
+
StartKetsjiShell(C, ar, &cam_frame, 1);
- RestoreState(C);
+ /* restore context, in case it changed in the meantime, for
+ example by working in another window or closing it */
CTX_wm_region_set(C, prevar);
+ CTX_wm_window_set(C, prevwin);
CTX_wm_area_set(C, prevsa);
+ RestoreState(C);
//XXX restore_all_scene_cfra(scene_cfra_store);
set_scene_bg(startscene);
@@ -1800,7 +1918,7 @@ typedef struct FlyInfo {
#define FLY_CANCEL 1
#define FLY_CONFIRM 2
-int initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, wmEvent *event)
+static int initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, wmEvent *event)
{
float upvec[3]; // tmp
float mat[3][3];
@@ -1852,7 +1970,7 @@ int initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, wmEvent *event)
fly->time_lastdraw= fly->time_lastwheel= PIL_check_seconds_timer();
- fly->rv3d->rflag |= RV3D_FLYMODE; /* so we draw the corner margins */
+ fly->rv3d->rflag |= RV3D_FLYMODE|RV3D_NAVIGATING; /* so we draw the corner margins */
/* detect weather to start with Z locking */
upvec[0]=1.0f; upvec[1]=0.0f; upvec[2]=0.0f;
@@ -1874,7 +1992,6 @@ int initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, wmEvent *event)
mul_v3_fl(fly->rv3d->ofs, -1.0f); /*flip the vector*/
fly->rv3d->dist=0.0;
- fly->rv3d->viewbut=0;
/* used for recording */
//XXX2.5 if(v3d->camera->ipoflag & OB_ACTION_OB)
@@ -1914,7 +2031,7 @@ static int flyEnd(bContext *C, FlyInfo *fly)
if (fly->state == FLY_CANCEL) {
/* Revert to original view? */
if (fly->persp_backup==RV3D_CAMOB) { /* a camera view */
- rv3d->viewbut=1;
+
VECCOPY(v3d->camera->loc, fly->ofs_backup);
VECCOPY(v3d->camera->rot, fly->rot_backup);
DAG_id_flush_update(&v3d->camera->id, OB_RECALC_OB);
@@ -1928,7 +2045,7 @@ static int flyEnd(bContext *C, FlyInfo *fly)
else if (fly->persp_backup==RV3D_CAMOB) { /* camera */
float mat3[3][3];
copy_m3_m4(mat3, v3d->camera->obmat);
- mat3_to_compatible_eul( v3d->camera->rot, fly->rot_backup,mat3);
+ object_mat3_to_rot(v3d->camera, mat3, TRUE);
DAG_id_flush_update(&v3d->camera->id, OB_RECALC_OB);
#if 0 //XXX2.5
@@ -1952,7 +2069,7 @@ static int flyEnd(bContext *C, FlyInfo *fly)
/*Done with correcting for the dist */
}
- rv3d->rflag &= ~RV3D_FLYMODE;
+ rv3d->rflag &= ~(RV3D_FLYMODE|RV3D_NAVIGATING);
//XXX2.5 BIF_view3d_previewrender_signal(fly->sa, PR_DBASE|PR_DISPRECT); /* not working at the moment not sure why */
@@ -1965,9 +2082,9 @@ static int flyEnd(bContext *C, FlyInfo *fly)
return OPERATOR_CANCELLED;
}
-void flyEvent(FlyInfo *fly, wmEvent *event)
+static void flyEvent(FlyInfo *fly, wmEvent *event)
{
- if (event->type == TIMER) {
+ if (event->type == TIMER && event->customdata == fly->timer) {
fly->redraw = 1;
}
else if (event->type == MOUSEMOVE) {
@@ -2088,7 +2205,7 @@ void flyEvent(FlyInfo *fly, wmEvent *event)
}
//int fly_exec(bContext *C, wmOperator *op)
-int flyApply(FlyInfo *fly)
+static int flyApply(FlyInfo *fly)
{
/*
fly mode - Shift+F
@@ -2426,7 +2543,7 @@ static int fly_modal(bContext *C, wmOperator *op, wmEvent *event)
flyEvent(fly, event);
- if(event->type==TIMER)
+ if(event->type==TIMER && event->customdata == fly->timer)
flyApply(fly);
if(fly->redraw) {;
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 2e711a27948..7f70eeab517 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -126,7 +126,7 @@
void setTransformViewMatrices(TransInfo *t)
{
- if(t->spacetype==SPACE_VIEW3D && t->ar->regiontype == RGN_TYPE_WINDOW) {
+ if(t->spacetype==SPACE_VIEW3D && t->ar && t->ar->regiontype == RGN_TYPE_WINDOW) {
RegionView3D *rv3d = t->ar->regiondata;
copy_m4_m4(t->viewmat, rv3d->viewmat);
@@ -450,69 +450,29 @@ static void view_editmove(unsigned short event)
#endif
}
-#if 0
-static char *transform_to_undostr(TransInfo *t)
-{
- switch (t->mode) {
- case TFM_TRANSLATION:
- return "Translate";
- case TFM_ROTATION:
- return "Rotate";
- case TFM_RESIZE:
- return "Scale";
- case TFM_TOSPHERE:
- return "To Sphere";
- case TFM_SHEAR:
- return "Shear";
- case TFM_WARP:
- return "Warp";
- case TFM_SHRINKFATTEN:
- return "Shrink/Fatten";
- case TFM_TILT:
- return "Tilt";
- case TFM_TRACKBALL:
- return "Trackball";
- case TFM_PUSHPULL:
- return "Push/Pull";
- case TFM_BEVEL:
- return "Bevel";
- case TFM_BWEIGHT:
- return "Bevel Weight";
- case TFM_CREASE:
- return "Crease";
- case TFM_BONESIZE:
- return "Bone Width";
- case TFM_BONE_ENVELOPE:
- return "Bone Envelope";
- case TFM_TIME_TRANSLATE:
- return "Translate Anim. Data";
- case TFM_TIME_SCALE:
- return "Scale Anim. Data";
- case TFM_TIME_SLIDE:
- return "Time Slide";
- case TFM_BAKE_TIME:
- return "Key Time";
- case TFM_MIRROR:
- return "Mirror";
- }
- return "Transform";
-}
-#endif
-
/* ************************************************* */
/* NOTE: these defines are saved in keymap files, do not change values but just add new ones */
-#define TFM_MODAL_CANCEL 1
-#define TFM_MODAL_CONFIRM 2
-#define TFM_MODAL_TRANSLATE 3
-#define TFM_MODAL_ROTATE 4
-#define TFM_MODAL_RESIZE 5
-#define TFM_MODAL_SNAP_GEARS 6
-#define TFM_MODAL_SNAP_GEARS_OFF 7
-#define TFM_MODAL_SNAP_GEARS_TOGGLE 8
+#define TFM_MODAL_CANCEL 1
+#define TFM_MODAL_CONFIRM 2
+#define TFM_MODAL_TRANSLATE 3
+#define TFM_MODAL_ROTATE 4
+#define TFM_MODAL_RESIZE 5
+#define TFM_MODAL_SNAP_INV_ON 6
+#define TFM_MODAL_SNAP_INV_OFF 7
+#define TFM_MODAL_SNAP_TOGGLE 8
+#define TFM_MODAL_AXIS_X 9
+#define TFM_MODAL_AXIS_Y 10
+#define TFM_MODAL_AXIS_Z 11
+#define TFM_MODAL_PLANE_X 12
+#define TFM_MODAL_PLANE_Y 13
+#define TFM_MODAL_PLANE_Z 14
+#define TFM_MODAL_CONS_OFF 15
+#define TFM_MODAL_ADD_SNAP 16
+#define TFM_MODAL_REMOVE_SNAP 17
/* called in transform_ops.c, on each regeneration of keymaps */
-void transform_modal_keymap(wmKeyConfig *keyconf)
+wmKeyMap* transform_modal_keymap(wmKeyConfig *keyconf)
{
static EnumPropertyItem modal_items[] = {
{TFM_MODAL_CANCEL, "CANCEL", 0, "Cancel", ""},
@@ -520,15 +480,24 @@ void transform_modal_keymap(wmKeyConfig *keyconf)
{TFM_MODAL_TRANSLATE, "TRANSLATE", 0, "Translate", ""},
{TFM_MODAL_ROTATE, "ROTATE", 0, "Rotate", ""},
{TFM_MODAL_RESIZE, "RESIZE", 0, "Resize", ""},
- {TFM_MODAL_SNAP_GEARS, "SNAP_GEARS", 0, "Snap On", ""},
- {TFM_MODAL_SNAP_GEARS_OFF, "SNAP_GEARS_OFF", 0, "Snap Off", ""},
- {TFM_MODAL_SNAP_GEARS_TOGGLE, "SNAP_GEARS_TOGGLE", 0, "Snap Toggle", ""},
+ {TFM_MODAL_SNAP_INV_ON, "SNAP_INV_ON", 0, "Invert Snap On", ""},
+ {TFM_MODAL_SNAP_INV_OFF, "SNAP_INV_OFF", 0, "Invert Snap Off", ""},
+ {TFM_MODAL_SNAP_TOGGLE, "SNAP_TOGGLE", 0, "Snap Toggle", ""},
+ {TFM_MODAL_AXIS_X, "AXIS_X", 0, "Orientation X axis", ""},
+ {TFM_MODAL_AXIS_Y, "AXIS_Y", 0, "Orientation Y axis", ""},
+ {TFM_MODAL_AXIS_Z, "AXIS_Z", 0, "Orientation Z axis", ""},
+ {TFM_MODAL_PLANE_X, "PLANE_X", 0, "Orientation X plane", ""},
+ {TFM_MODAL_PLANE_Y, "PLANE_Y", 0, "Orientation Y plane", ""},
+ {TFM_MODAL_PLANE_Z, "PLANE_Z", 0, "Orientation Z plane", ""},
+ {TFM_MODAL_CONS_OFF, "CONS_OFF", 0, "Remove Constraints", ""},
+ {TFM_MODAL_ADD_SNAP, "ADD_SNAP", 0, "Add Snap Point", ""},
+ {TFM_MODAL_REMOVE_SNAP, "REMOVE_SNAP", 0, "Remove Last Snap Point", ""},
{0, NULL, 0, NULL, NULL}};
wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Transform Modal Map");
/* this function is called for each spacetype, only needs to add map once */
- if(keymap) return;
+ if(keymap) return NULL;
keymap= WM_modalkeymap_add(keyconf, "Transform Modal Map", modal_items);
@@ -542,28 +511,23 @@ void transform_modal_keymap(wmKeyConfig *keyconf)
WM_modalkeymap_add_item(keymap, RKEY, KM_PRESS, 0, 0, TFM_MODAL_ROTATE);
WM_modalkeymap_add_item(keymap, SKEY, KM_PRESS, 0, 0, TFM_MODAL_RESIZE);
- WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_SNAP_GEARS_TOGGLE);
-
- /* assign map to operators */
- WM_modalkeymap_assign(keymap, "TFM_OT_transform");
- WM_modalkeymap_assign(keymap, "TFM_OT_translate");
- WM_modalkeymap_assign(keymap, "TFM_OT_rotate");
- WM_modalkeymap_assign(keymap, "TFM_OT_tosphere");
- WM_modalkeymap_assign(keymap, "TFM_OT_resize");
- WM_modalkeymap_assign(keymap, "TFM_OT_shear");
- WM_modalkeymap_assign(keymap, "TFM_OT_warp");
- WM_modalkeymap_assign(keymap, "TFM_OT_shrink_fatten");
- WM_modalkeymap_assign(keymap, "TFM_OT_tilt");
- WM_modalkeymap_assign(keymap, "TFM_OT_trackball");
- WM_modalkeymap_assign(keymap, "TFM_OT_mirror");
- WM_modalkeymap_assign(keymap, "TFM_OT_edge_slide");
+ WM_modalkeymap_add_item(keymap, TABKEY, KM_PRESS, KM_SHIFT, 0, TFM_MODAL_SNAP_TOGGLE);
+
+ WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_SNAP_INV_ON);
+ WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_RELEASE, KM_ANY, 0, TFM_MODAL_SNAP_INV_OFF);
+
+ WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, 0, 0, TFM_MODAL_ADD_SNAP);
+ WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, KM_ALT, 0, TFM_MODAL_REMOVE_SNAP);
+
+ return keymap;
}
-void transformEvent(TransInfo *t, wmEvent *event)
+int transformEvent(TransInfo *t, wmEvent *event)
{
float mati[3][3] = {{1.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 0.0f, 1.0f}};
char cmode = constraintModeToChar(t);
+ int handled = 1;
t->redraw |= handleMouseInput(t, &t->mouse, event);
@@ -629,18 +593,111 @@ void transformEvent(TransInfo *t, wmEvent *event)
}
break;
- case TFM_MODAL_SNAP_GEARS:
- t->modifiers |= MOD_SNAP_GEARS;
+ case TFM_MODAL_SNAP_INV_ON:
+ t->modifiers |= MOD_SNAP_INVERT;
+ t->redraw = 1;
+ break;
+ case TFM_MODAL_SNAP_INV_OFF:
+ t->modifiers &= ~MOD_SNAP_INVERT;
+ t->redraw = 1;
+ break;
+ case TFM_MODAL_SNAP_TOGGLE:
+ t->modifiers ^= MOD_SNAP;
t->redraw = 1;
break;
- case TFM_MODAL_SNAP_GEARS_OFF:
- t->modifiers &= ~MOD_SNAP_GEARS;
+ case TFM_MODAL_AXIS_X:
+ if ((t->flag & T_NO_CONSTRAINT)==0) {
+ if (cmode == 'X') {
+ stopConstraint(t);
+ }
+ else {
+ if (t->flag & T_2D_EDIT) {
+ setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS0), "along X");
+ }
+ else {
+ setUserConstraint(t, t->current_orientation, (CON_AXIS0), "along %s X");
+ }
+ }
+ t->redraw = 1;
+ }
+ break;
+ case TFM_MODAL_AXIS_Y:
+ if ((t->flag & T_NO_CONSTRAINT)==0) {
+ if (cmode == 'Y') {
+ stopConstraint(t);
+ }
+ else {
+ if (t->flag & T_2D_EDIT) {
+ setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS1), "along Y");
+ }
+ else {
+ setUserConstraint(t, t->current_orientation, (CON_AXIS1), "along %s Y");
+ }
+ }
+ t->redraw = 1;
+ }
+ break;
+ case TFM_MODAL_AXIS_Z:
+ if ((t->flag & (T_NO_CONSTRAINT|T_2D_EDIT))== 0) {
+ if (cmode == 'Z') {
+ stopConstraint(t);
+ }
+ else {
+ setUserConstraint(t, t->current_orientation, (CON_AXIS2), "along %s Z");
+ }
+ t->redraw = 1;
+ }
+ break;
+ case TFM_MODAL_PLANE_X:
+ if ((t->flag & (T_NO_CONSTRAINT|T_2D_EDIT))== 0) {
+ if (cmode == 'X') {
+ stopConstraint(t);
+ }
+ else {
+ setUserConstraint(t, t->current_orientation, (CON_AXIS1|CON_AXIS2), "locking %s X");
+ }
+ t->redraw = 1;
+ }
+ break;
+ case TFM_MODAL_PLANE_Y:
+ if ((t->flag & (T_NO_CONSTRAINT|T_2D_EDIT))== 0) {
+ if (cmode == 'Y') {
+ stopConstraint(t);
+ }
+ else {
+ setUserConstraint(t, t->current_orientation, (CON_AXIS0|CON_AXIS2), "locking %s Y");
+ }
+ t->redraw = 1;
+ }
+ break;
+ case TFM_MODAL_PLANE_Z:
+ if ((t->flag & (T_NO_CONSTRAINT|T_2D_EDIT))== 0) {
+ if (cmode == 'Z') {
+ stopConstraint(t);
+ }
+ else {
+ setUserConstraint(t, t->current_orientation, (CON_AXIS0|CON_AXIS1), "locking %s Z");
+ }
+ t->redraw = 1;
+ }
+ break;
+ case TFM_MODAL_CONS_OFF:
+ if ((t->flag & T_NO_CONSTRAINT)==0) {
+ stopConstraint(t);
+ t->redraw = 1;
+ }
+ break;
+ case TFM_MODAL_ADD_SNAP:
+ addSnapPoint(t);
t->redraw = 1;
break;
- case TFM_MODAL_SNAP_GEARS_TOGGLE:
- t->modifiers ^= MOD_SNAP_GEARS;
+ case TFM_MODAL_REMOVE_SNAP:
+ removeSnapPoint(t);
t->redraw = 1;
break;
+ default:
+ handled = 0;
+ break;
}
}
/* else do non-mapped events */
@@ -763,32 +820,28 @@ void transformEvent(TransInfo *t, wmEvent *event)
break;
case XKEY:
if ((t->flag & T_NO_CONSTRAINT)==0) {
- if (cmode == 'X') {
- if (t->flag & T_2D_EDIT) {
+ if (t->flag & T_2D_EDIT) {
+ if (cmode == 'X') {
stopConstraint(t);
+ } else {
+ setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS0), "along X");
}
- else {
- if (t->con.mode & CON_USER) {
+ } else {
+ if (cmode == 'X') {
+ if (t->con.orientation != V3D_MANIP_GLOBAL) {
stopConstraint(t);
- }
- else {
+ } else {
short orientation = t->current_orientation != V3D_MANIP_GLOBAL ? t->current_orientation : V3D_MANIP_LOCAL;
if ((t->modifiers & MOD_CONSTRAINT_PLANE) == 0)
setUserConstraint(t, orientation, (CON_AXIS0), "along %s X");
else if (t->modifiers & MOD_CONSTRAINT_PLANE)
setUserConstraint(t, orientation, (CON_AXIS1|CON_AXIS2), "locking %s X");
}
- }
- }
- else {
- if (t->flag & T_2D_EDIT) {
- setConstraint(t, mati, (CON_AXIS0), "along X axis");
- }
- else {
+ } else {
if ((t->modifiers & MOD_CONSTRAINT_PLANE) == 0)
- setConstraint(t, mati, (CON_AXIS0), "along global X");
+ setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS0), "along %s X");
else if (t->modifiers & MOD_CONSTRAINT_PLANE)
- setConstraint(t, mati, (CON_AXIS1|CON_AXIS2), "locking global X");
+ setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS1|CON_AXIS2), "locking %s X");
}
}
t->redraw = 1;
@@ -796,56 +849,50 @@ void transformEvent(TransInfo *t, wmEvent *event)
break;
case YKEY:
if ((t->flag & T_NO_CONSTRAINT)==0) {
- if (cmode == 'Y') {
- if (t->flag & T_2D_EDIT) {
+ if (t->flag & T_2D_EDIT) {
+ if (cmode == 'Y') {
stopConstraint(t);
+ } else {
+ setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS1), "along Y");
}
- else {
- if (t->con.mode & CON_USER) {
+ } else {
+ if (cmode == 'Y') {
+ if (t->con.orientation != V3D_MANIP_GLOBAL) {
stopConstraint(t);
- }
- else {
+ } else {
short orientation = t->current_orientation != V3D_MANIP_GLOBAL ? t->current_orientation : V3D_MANIP_LOCAL;
if ((t->modifiers & MOD_CONSTRAINT_PLANE) == 0)
setUserConstraint(t, orientation, (CON_AXIS1), "along %s Y");
else if (t->modifiers & MOD_CONSTRAINT_PLANE)
setUserConstraint(t, orientation, (CON_AXIS0|CON_AXIS2), "locking %s Y");
}
- }
- }
- else {
- if (t->flag & T_2D_EDIT) {
- setConstraint(t, mati, (CON_AXIS1), "along Y axis");
- }
- else {
+ } else {
if ((t->modifiers & MOD_CONSTRAINT_PLANE) == 0)
- setConstraint(t, mati, (CON_AXIS1), "along global Y");
+ setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS1), "along %s Y");
else if (t->modifiers & MOD_CONSTRAINT_PLANE)
- setConstraint(t, mati, (CON_AXIS0|CON_AXIS2), "locking global Y");
+ setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS0|CON_AXIS2), "locking %s Y");
}
}
t->redraw = 1;
}
break;
case ZKEY:
- if ((t->flag & T_NO_CONSTRAINT)==0) {
+ if ((t->flag & (T_NO_CONSTRAINT|T_2D_EDIT))==0) {
if (cmode == 'Z') {
- if (t->con.mode & CON_USER) {
+ if (t->con.orientation != V3D_MANIP_GLOBAL) {
stopConstraint(t);
- }
- else {
+ } else {
short orientation = t->current_orientation != V3D_MANIP_GLOBAL ? t->current_orientation : V3D_MANIP_LOCAL;
if ((t->modifiers & MOD_CONSTRAINT_PLANE) == 0)
setUserConstraint(t, orientation, (CON_AXIS2), "along %s Z");
- else if ((t->modifiers & MOD_CONSTRAINT_PLANE) && ((t->flag & T_2D_EDIT)==0))
+ else if (t->modifiers & MOD_CONSTRAINT_PLANE)
setUserConstraint(t, orientation, (CON_AXIS0|CON_AXIS1), "locking %s Z");
}
- }
- else if ((t->flag & T_2D_EDIT)==0) {
+ } else {
if ((t->modifiers & MOD_CONSTRAINT_PLANE) == 0)
- setConstraint(t, mati, (CON_AXIS2), "along global Z");
+ setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS2), "along %s Z");
else if (t->modifiers & MOD_CONSTRAINT_PLANE)
- setConstraint(t, mati, (CON_AXIS0|CON_AXIS1), "locking global Z");
+ setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS0|CON_AXIS1), "locking %s Z");
}
t->redraw = 1;
}
@@ -898,6 +945,9 @@ void transformEvent(TransInfo *t, wmEvent *event)
// case NDOFMOTION:
// viewmoveNDOF(1);
// break;
+ default:
+ handled = 0;
+ break;
}
// Numerical input events
@@ -935,7 +985,9 @@ void transformEvent(TransInfo *t, wmEvent *event)
case NDOF_REFRESH:
t->redraw = 1;
break;
-
+ default:
+ handled = 0;
+ break;
}
// Snapping events
@@ -964,6 +1016,9 @@ void transformEvent(TransInfo *t, wmEvent *event)
//// if (t->options & CTX_TWEAK)
// t->state = TRANS_CONFIRM;
// break;
+ default:
+ handled = 0;
+ break;
}
/* confirm transform if launch key is released after mouse move */
@@ -977,9 +1032,14 @@ void transformEvent(TransInfo *t, wmEvent *event)
// Per transform event, if present
if (t->handleEvent)
t->redraw |= t->handleEvent(t, event);
+
+ if (handled || t->redraw)
+ return 0;
+ else
+ return OPERATOR_PASS_THROUGH;
}
-int calculateTransformCenter(bContext *C, wmEvent *event, int centerMode, float *vec)
+int calculateTransformCenter(bContext *C, int centerMode, float *vec)
{
TransInfo *t = MEM_callocN(sizeof(TransInfo), "TransInfo data");
int success = 1;
@@ -990,9 +1050,9 @@ int calculateTransformCenter(bContext *C, wmEvent *event, int centerMode, float
t->mode = TFM_DUMMY;
- initTransInfo(C, t, NULL, event); // internal data, mouse, vectors
+ initTransInfo(C, t, NULL, NULL); // internal data, mouse, vectors
- createTransData(C, t); // make TransData structs from selection
+ createTransData(C, t); // make TransData structs from selection
t->around = centerMode; // override userdefined mode
@@ -1010,9 +1070,9 @@ int calculateTransformCenter(bContext *C, wmEvent *event, int centerMode, float
/* aftertrans does insert ipos and action channels, and clears base flags, doesnt read transdata */
- special_aftertrans_update(t);
+ special_aftertrans_update(C, t);
- postTrans(t);
+ postTrans(C, t);
MEM_freeN(t);
@@ -1103,11 +1163,14 @@ static void drawArc(float size, float angle_start, float angle_end, int segments
glEnd();
}
-void drawHelpline(const struct bContext *C, TransInfo *t)
+static void drawHelpline(bContext *C, int x, int y, void *customdata)
{
+ TransInfo *t = (TransInfo*)customdata;
+
if (t->helpline != HLP_NONE && !(t->flag & T_USES_MANIPULATOR))
{
float vecrot[3], cent[2];
+ int mval[2] = {x, y};
VECCOPY(vecrot, t->center);
if(t->flag & T_EDIT) {
@@ -1134,7 +1197,7 @@ void drawHelpline(const struct bContext *C, TransInfo *t)
glVertex2fv(cent);
glEnd();
- glTranslatef(t->mval[0], t->mval[1], 0);
+ glTranslatef(mval[0], mval[1], 0);
glRotatef(-180 / M_PI * atan2f(cent[0] - t->mval[0], cent[1] - t->mval[1]), 0, 0, 1);
setlinestyle(0);
@@ -1146,7 +1209,7 @@ void drawHelpline(const struct bContext *C, TransInfo *t)
case HLP_HARROW:
UI_ThemeColor(TH_WIRE);
- glTranslatef(t->mval[0], t->mval[1], 0);
+ glTranslatef(mval[0], mval[1], 0);
glLineWidth(3.0);
drawArrow(RIGHT, 5, 10, 5);
@@ -1156,7 +1219,7 @@ void drawHelpline(const struct bContext *C, TransInfo *t)
case HLP_VARROW:
UI_ThemeColor(TH_WIRE);
- glTranslatef(t->mval[0], t->mval[1], 0);
+ glTranslatef(mval[0], mval[1], 0);
glLineWidth(3.0);
glBegin(GL_LINES);
@@ -1179,7 +1242,7 @@ void drawHelpline(const struct bContext *C, TransInfo *t)
glVertex2fv(cent);
glEnd();
- glTranslatef(cent[0], cent[1], 0);
+ glTranslatef(cent[0] - t->mval[0] + mval[0], cent[1] - t->mval[1] + mval[1], 0);
setlinestyle(0);
glLineWidth(3.0);
@@ -1208,7 +1271,7 @@ void drawHelpline(const struct bContext *C, TransInfo *t)
char col[3], col2[3];
UI_GetThemeColor3ubv(TH_GRID, col);
- glTranslatef(t->mval[0], t->mval[1], 0);
+ glTranslatef(mval[0], mval[1], 0);
glLineWidth(3.0);
@@ -1243,9 +1306,9 @@ void drawTransformView(const struct bContext *C, struct ARegion *ar, void *arg)
void drawTransformPixel(const struct bContext *C, struct ARegion *ar, void *arg)
{
- TransInfo *t = arg;
-
- drawHelpline(C, t);
+// TransInfo *t = arg;
+//
+// drawHelpline(C, t->mval[0], t->mval[1], t);
}
void saveTransform(bContext *C, TransInfo *t, wmOperator *op)
@@ -1280,28 +1343,30 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op)
}
// If modal, save settings back in scene if not set as operator argument
- if (t->flag & T_MODAL)
- {
+ if (t->flag & T_MODAL) {
+
/* save settings if not set in operator */
- if (RNA_struct_find_property(op->ptr, "proportional") && !RNA_property_is_set(op->ptr, "proportional"))
- {
+ if (RNA_struct_find_property(op->ptr, "proportional") && !RNA_property_is_set(op->ptr, "proportional")) {
ts->proportional = proportional;
}
- if (RNA_struct_find_property(op->ptr, "proportional_size") && !RNA_property_is_set(op->ptr, "proportional_size"))
- {
+ if (RNA_struct_find_property(op->ptr, "proportional_size") && !RNA_property_is_set(op->ptr, "proportional_size")) {
ts->proportional_size = t->prop_size;
}
- if (RNA_struct_find_property(op->ptr, "proportional_editing_falloff") && !RNA_property_is_set(op->ptr, "proportional_editing_falloff"))
- {
+ if (RNA_struct_find_property(op->ptr, "proportional_editing_falloff") && !RNA_property_is_set(op->ptr, "proportional_editing_falloff")) {
ts->prop_mode = t->prop_mode;
}
- if(t->spacetype == SPACE_VIEW3D)
- {
- if (RNA_struct_find_property(op->ptr, "constraint_orientation") && !RNA_property_is_set(op->ptr, "constraint_orientation"))
- {
+ /* do we check for parameter? */
+ if (t->modifiers & MOD_SNAP) {
+ ts->snap_flag |= SCE_SNAP;
+ } else {
+ ts->snap_flag &= ~SCE_SNAP;
+ }
+
+ if(t->spacetype == SPACE_VIEW3D) {
+ if (RNA_struct_find_property(op->ptr, "constraint_orientation") && !RNA_property_is_set(op->ptr, "constraint_orientation")) {
View3D *v3d = t->view;
v3d->twmode = t->current_orientation;
@@ -1323,7 +1388,14 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op)
if (RNA_struct_find_property(op->ptr, "constraint_axis"))
{
- RNA_enum_set(op->ptr, "constraint_orientation", t->current_orientation);
+ /* constraint orientation can be global, event if user selects something else
+ * so use the orientation in the constraint if set
+ * */
+ if (t->con.mode & CON_APPLY) {
+ RNA_enum_set(op->ptr, "constraint_orientation", t->con.orientation);
+ } else {
+ RNA_enum_set(op->ptr, "constraint_orientation", t->current_orientation);
+ }
if (t->con.mode & CON_APPLY)
{
@@ -1367,12 +1439,13 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int
initTransformOrientation(C, t);
t->draw_handle_view = ED_region_draw_cb_activate(t->ar->type, drawTransformView, t, REGION_DRAW_POST_VIEW);
- t->draw_handle_pixel = ED_region_draw_cb_activate(t->ar->type, drawTransformPixel, t, REGION_DRAW_POST_PIXEL);
+ //t->draw_handle_pixel = ED_region_draw_cb_activate(t->ar->type, drawTransformPixel, t, REGION_DRAW_POST_PIXEL);
+ t->draw_handle_cursor = WM_paint_cursor_activate(CTX_wm_manager(C), NULL, drawHelpline, t);
}
else if(t->spacetype == SPACE_IMAGE) {
unit_m3(t->spacemtx);
t->draw_handle_view = ED_region_draw_cb_activate(t->ar->type, drawTransformView, t, REGION_DRAW_POST_VIEW);
- t->draw_handle_pixel = ED_region_draw_cb_activate(t->ar->type, drawTransformPixel, t, REGION_DRAW_POST_PIXEL);
+ //t->draw_handle_pixel = ED_region_draw_cb_activate(t->ar->type, drawTransformPixel, t, REGION_DRAW_POST_PIXEL);
}
else
unit_m3(t->spacemtx);
@@ -1380,7 +1453,7 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int
createTransData(C, t); // make TransData structs from selection
if (t->total == 0) {
- postTrans(t);
+ postTrans(C, t);
return 0;
}
@@ -1486,6 +1559,9 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int
case TFM_ALIGN:
initAlign(t);
break;
+ case TFM_SEQ_SLIDE:
+ initSeqSlide(t);
+ break;
}
/* overwrite initial values if operator supplied a non-null vector */
@@ -1573,10 +1649,10 @@ int transformEnd(bContext *C, TransInfo *t)
}
/* aftertrans does insert keyframes, and clears base flags, doesnt read transdata */
- special_aftertrans_update(t);
+ special_aftertrans_update(C, t);
/* free data */
- postTrans(t);
+ postTrans(C, t);
/* send events out for redraws */
viewRedrawPost(t);
@@ -3156,11 +3232,11 @@ static void applyTranslation(TransInfo *t, float vec[3]) {
/* uses t->vec to store actual translation in */
int Translation(TransInfo *t, short mval[2])
{
- float tvec[3];
char str[250];
if (t->con.mode & CON_APPLY) {
float pvec[3] = {0.0f, 0.0f, 0.0f};
+ float tvec[3];
applySnapping(t, t->values);
t->con.applyVec(t, NULL, t->values, tvec, pvec);
VECCOPY(t->values, tvec);
@@ -5171,6 +5247,90 @@ int Align(TransInfo *t, short mval[2])
return 1;
}
+/* ************************** SEQ SLIDE *************************** */
+
+void initSeqSlide(TransInfo *t)
+{
+ t->transform = SeqSlide;
+
+ initMouseInputMode(t, &t->mouse, INPUT_VECTOR);
+
+ t->idx_max = 1;
+ t->num.flag = 0;
+ t->num.idx_max = t->idx_max;
+
+ t->ndof.axis = 1|2;
+
+ t->snap[0] = 0.0f;
+ t->snap[1] = floor(t->scene->r.frs_sec / t->scene->r.frs_sec_base);
+ t->snap[2] = 10.0f;
+}
+
+static void headerSeqSlide(TransInfo *t, float val[2], char *str)
+{
+ char tvec[60];
+
+ if (hasNumInput(&t->num)) {
+ outputNumInput(&(t->num), tvec);
+ }
+ else {
+ sprintf(&tvec[0], "%.0f, %.0f", val[0], val[1]);
+ }
+
+ sprintf(str, "Sequence Slide: %s%s", &tvec[0], t->con.text);
+}
+
+static void applySeqSlide(TransInfo *t, float val[2]) {
+ TransData *td = t->data;
+ int i;
+
+ for(i = 0 ; i < t->total; i++, td++) {
+ float tvec[2];
+
+ if (td->flag & TD_NOACTION)
+ break;
+
+ if (td->flag & TD_SKIP)
+ continue;
+
+ copy_v2_v2(tvec, val);
+
+ mul_v2_fl(tvec, td->factor);
+
+ td->loc[0] = td->iloc[0] + tvec[0];
+ td->loc[1] = td->iloc[1] + tvec[1];
+ }
+}
+
+int SeqSlide(TransInfo *t, short mval[2])
+{
+ char str[200];
+
+ if (t->con.mode & CON_APPLY) {
+ float pvec[3] = {0.0f, 0.0f, 0.0f};
+ float tvec[3];
+ t->con.applyVec(t, NULL, t->values, tvec, pvec);
+ VECCOPY(t->values, tvec);
+ }
+ else {
+ applyNDofInput(&t->ndof, t->values);
+ snapGrid(t, t->values);
+ applyNumInput(&t->num, t->values);
+ }
+
+ t->values[0] = floor(t->values[0] + 0.5);
+ t->values[1] = floor(t->values[1] + 0.5);
+
+ headerSeqSlide(t, t->values, str);
+ applySeqSlide(t, t->values);
+
+ recalcData(t);
+
+ ED_area_headerprint(t->sa, str);
+
+ return 1;
+}
+
/* ************************** ANIM EDITORS - TRANSFORM TOOLS *************************** */
/* ---------------- Special Helpers for Various Settings ------------- */
@@ -5372,7 +5532,7 @@ static void applyTimeTranslate(TransInfo *t, float sval)
AnimData *adt= (t->spacetype != SPACE_NLA) ? td->extra : NULL;
/* check if any need to apply nla-mapping */
- if (adt) {
+ if (adt && t->spacetype != SPACE_SEQ) {
deltax = t->values[0];
if (autosnap == SACTSNAP_STEP) {
diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h
index c4461cc0cac..0ca88a395e0 100644
--- a/source/blender/editors/transform/transform.h
+++ b/source/blender/editors/transform/transform.h
@@ -32,6 +32,8 @@
#include "ED_transform.h"
+#include "DNA_listBase.h"
+
#include "BLI_editVert.h"
#include "BKE_tessmesh.h"
@@ -52,6 +54,8 @@ struct BezTriple;
struct wmOperatorType;
struct wmOperator;
struct wmWindowManager;
+struct wmKeyMap;
+struct wmKeyConfig;
struct bContext;
struct wmEvent;
struct wmTimer;
@@ -83,17 +87,25 @@ typedef struct NumInput {
Negative : number is negative
*/
+typedef struct TransSnapPoint {
+ struct TransSnapPoint *next,*prev;
+ float co[3];
+} TransSnapPoint;
+
typedef struct TransSnap {
- short modePoint;
- short modeTarget;
short mode;
+ short target;
+ short modePoint;
+ short modeSelect;
short align;
short project;
+ short peel;
short status;
float snapPoint[3]; /* snapping from this point */
float snapTarget[3]; /* to this point */
float snapNormal[3];
float snapTangent[3];
+ ListBase points;
float dist; // Distance from snapPoint to snapTarget
double last;
void (*applySnap)(struct TransInfo *, float *);
@@ -103,6 +115,7 @@ typedef struct TransSnap {
} TransSnap;
typedef struct TransCon {
+ short orientation; /**/
char text[50]; /* Description of the Constraint for header_print */
float mtx[3][3]; /* Matrix of the Constraint space */
float imtx[3][3]; /* Inverse Matrix of the Constraint space */
@@ -302,9 +315,10 @@ typedef struct TransInfo {
void (*customFree)(struct TransInfo *); /* if a special free function is needed */
/*************** NEW STUFF *********************/
- short launch_event; /* event type used to launch transform */
+ short launch_event; /* event type used to launch transform */
short current_orientation;
+ short twtype; /* backup from view3d, to restore on end */
short prop_mode;
@@ -322,6 +336,7 @@ typedef struct TransInfo {
struct Object *obedit;
void *draw_handle_view;
void *draw_handle_pixel;
+ void *draw_handle_cursor;
} TransInfo;
@@ -382,8 +397,9 @@ typedef struct TransInfo {
/* TransInfo->modifiers */
#define MOD_CONSTRAINT_SELECT 0x01
#define MOD_PRECISION 0x02
-#define MOD_SNAP_GEARS 0x04
-#define MOD_CONSTRAINT_PLANE 0x08
+#define MOD_SNAP 0x04
+#define MOD_SNAP_INVERT 0x08
+#define MOD_CONSTRAINT_PLANE 0x10
/* ******************************************************************************** */
@@ -423,27 +439,16 @@ typedef struct TransInfo {
#define TD_MIRROR_EDGE (1 << 16) /* For editmode mirror, clamp to x = 0 */
/* transsnap->status */
-#define SNAP_ON 1
-#define SNAP_FORCED 2
-#define TARGET_INIT 4
-#define POINT_INIT 8
-
-/* transsnap->modePoint */
-#define SNAP_GRID 0
-#define SNAP_GEO 1
+#define SNAP_FORCED 1
+#define TARGET_INIT 2
+#define POINT_INIT 4
+#define MULTI_POINTS 8
-/* transsnap->modeTarget */
-#define SNAP_CLOSEST 0
-#define SNAP_CENTER 1
-#define SNAP_MEDIAN 2
-#define SNAP_ACTIVE 3
-
-
-void TFM_OT_transform(struct wmOperatorType *ot);
+void TRANSFORM_OT_transform(struct wmOperatorType *ot);
int initTransform(struct bContext *C, struct TransInfo *t, struct wmOperator *op, struct wmEvent *event, int mode);
void saveTransform(struct bContext *C, struct TransInfo *t, struct wmOperator *op);
-void transformEvent(TransInfo *t, struct wmEvent *event);
+int transformEvent(TransInfo *t, struct wmEvent *event);
void transformApply(struct bContext *C, TransInfo *t);
int transformEnd(struct bContext *C, TransInfo *t);
@@ -530,9 +535,12 @@ int Mirror(TransInfo *t, short mval[2]);
void initAlign(TransInfo *t);
int Align(TransInfo *t, short mval[2]);
+void initSeqSlide(TransInfo *t);
+int SeqSlide(TransInfo *t, short mval[2]);
+
void drawPropCircle(const struct bContext *C, TransInfo *t);
-void transform_modal_keymap(struct wmKeyConfig *keyconf);
+struct wmKeyMap *transform_modal_keymap(struct wmKeyConfig *keyconf);
/*********************** transform_conversions.c ********** */
@@ -548,7 +556,7 @@ void flushTransNodes(TransInfo *t);
void flushTransSeq(TransInfo *t);
/*********************** exported from transform_manipulator.c ********** */
-void gimbal_axis(struct Object *ob, float gmat[][3]);
+int gimbal_axis(struct Object *ob, float gmat[][3]); /* return 0 when no gimbal for selection */
int calc_manipulator_stats(const struct bContext *C);
float get_drawsize(struct ARegion *ar, float *co);
@@ -556,15 +564,15 @@ float get_drawsize(struct ARegion *ar, float *co);
void createTransData(struct bContext *C, TransInfo *t);
void sort_trans_data_dist(TransInfo *t);
void add_tdi_poin(float *poin, float *old, float delta);
-void special_aftertrans_update(TransInfo *t);
+void special_aftertrans_update(struct bContext *C, TransInfo *t);
void transform_autoik_update(TransInfo *t, short mode);
int count_set_pose_transflags(int *out_mode, short around, struct Object *ob);
/* auto-keying stuff used by special_aftertrans_update */
-void autokeyframe_ob_cb_func(struct Scene *scene, struct View3D *v3d, struct Object *ob, int tmode);
-void autokeyframe_pose_cb_func(struct Scene *scene, struct View3D *v3d, struct Object *ob, int tmode, short targetless_ik);
+void autokeyframe_ob_cb_func(struct bContext *C, struct Scene *scene, struct View3D *v3d, struct Object *ob, int tmode);
+void autokeyframe_pose_cb_func(struct bContext *C, struct Scene *scene, struct View3D *v3d, struct Object *ob, int tmode, short targetless_ik);
/*********************** Constraints *****************************/
@@ -602,6 +610,9 @@ typedef enum {
void snapGrid(TransInfo *t, float *val);
void snapGridAction(TransInfo *t, float *val, GearsType action);
+int activeSnap(TransInfo *t);
+int validSnap(TransInfo *t);
+
void initSnapping(struct TransInfo *t, struct wmOperator *op);
void applyProject(TransInfo *t);
void applySnapping(TransInfo *t, float *vec);
@@ -611,6 +622,10 @@ void drawSnapping(const struct bContext *C, TransInfo *t);
int usingSnappingNormal(TransInfo *t);
int validSnappingNormal(TransInfo *t);
+void getSnapPoint(TransInfo *t, float vec[3]);
+void addSnapPoint(TransInfo *t);
+void removeSnapPoint(TransInfo *t);
+
/********************** Mouse Input ******************************/
typedef enum {
@@ -637,7 +652,7 @@ void setCustomPoints(TransInfo *t, MouseInput *mi, short start[2], short end[2])
/*********************** Generics ********************************/
int initTransInfo(struct bContext *C, TransInfo *t, struct wmOperator *op, struct wmEvent *event);
-void postTrans (TransInfo *t);
+void postTrans (struct bContext *C, TransInfo *t);
void resetTransRestrictions(TransInfo *t);
void drawLine(TransInfo *t, float *center, float *dir, char axis, short options);
diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c
index 1f6694730c1..0d09c119c17 100644
--- a/source/blender/editors/transform/transform_constraints.c
+++ b/source/blender/editors/transform/transform_constraints.c
@@ -290,7 +290,7 @@ static void applyAxisConstraintVec(TransInfo *t, TransData *td, float in[3], flo
mul_m3_v3(t->con.pmtx, out);
// With snap, a projection is alright, no need to correct for view alignment
- if ((t->tsnap.status & SNAP_ON) == 0) {
+ if (!(t->tsnap.mode != SCE_SNAP_MODE_INCREMENT && activeSnap(t))) {
if (getConstraintSpaceDimension(t) == 2) {
if (out[0] != 0.0f || out[1] != 0.0f || out[2] != 0.0f) {
planeProjection(t, in, out);
@@ -316,7 +316,7 @@ static void applyAxisConstraintVec(TransInfo *t, TransData *td, float in[3], flo
}
/*
- * Generic callback for object based spacial constraints applied to linear motion
+ * Generic callback for object based spatial constraints applied to linear motion
*
* At first, the following is applied to the first data in the array
* The IN vector in projected into the constrained space and then further
@@ -599,6 +599,8 @@ void setUserConstraint(TransInfo *t, short orientation, int mode, const char fte
break;
}
+ t->con.orientation = orientation;
+
t->con.mode |= CON_USER;
}
@@ -668,6 +670,7 @@ void drawPropCircle(const struct bContext *C, TransInfo *t)
if (t->flag & T_PROP_EDIT) {
RegionView3D *rv3d = CTX_wm_region_view3d(C);
float tmat[4][4], imat[4][4];
+ float center[3];
UI_ThemeColor(TH_GRID);
@@ -684,9 +687,11 @@ void drawPropCircle(const struct bContext *C, TransInfo *t)
glPushMatrix();
+ VECCOPY(center, t->center);
+
if((t->spacetype == SPACE_VIEW3D) && t->obedit)
{
- glMultMatrixf(t->obedit->obmat); /* because t->center is in local space */
+ mul_m4_v3(t->obedit->obmat, center); /* because t->center is in local space */
}
else if(t->spacetype == SPACE_IMAGE)
{
@@ -697,7 +702,7 @@ void drawPropCircle(const struct bContext *C, TransInfo *t)
}
set_inverted_drawing(1);
- drawcircball(GL_LINE_LOOP, t->center, t->prop_size, imat);
+ drawcircball(GL_LINE_LOOP, center, t->prop_size, imat);
set_inverted_drawing(0);
glPopMatrix();
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index 89968fb0943..01f304d5dd5 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -93,7 +93,7 @@
#include "BKE_nla.h"
#include "BKE_object.h"
#include "BKE_particle.h"
-#include "BKE_sequence.h"
+#include "BKE_sequencer.h"
#include "BKE_pointcache.h"
#include "BKE_softbody.h"
#include "BKE_utildefines.h"
@@ -548,7 +548,7 @@ static short apply_targetless_ik(Object *ob)
static void add_pose_transdata(TransInfo *t, bPoseChannel *pchan, Object *ob, TransData *td)
{
Bone *bone= pchan->bone;
- float pmat[3][3], omat[3][3];
+ float pmat[3][3], omat[3][3], bmat[3][3];
float cmat[3][3], tmat[3][3];
float vec[3];
@@ -607,6 +607,11 @@ static void add_pose_transdata(TransInfo *t, bPoseChannel *pchan, Object *ob, Tr
/* proper way to get parent transform + own transform + constraints transform */
copy_m3_m4(omat, ob->obmat);
+ if (t->mode==TFM_TRANSLATION && (pchan->bone->flag & BONE_NO_LOCAL_LOCATION))
+ unit_m3(bmat);
+ else
+ copy_m3_m3(bmat, pchan->bone->bone_mat);
+
if (pchan->parent) {
if(pchan->bone->flag & BONE_HINGE)
copy_m3_m4(pmat, pchan->parent->bone->arm_mat);
@@ -616,19 +621,19 @@ static void add_pose_transdata(TransInfo *t, bPoseChannel *pchan, Object *ob, Tr
if (constraints_list_needinv(t, &pchan->constraints)) {
copy_m3_m4(tmat, pchan->constinv);
invert_m3_m3(cmat, tmat);
- mul_serie_m3(td->mtx, pchan->bone->bone_mat, pmat, omat, cmat, 0,0,0,0); // dang mulserie swaps args
+ mul_serie_m3(td->mtx, bmat, pmat, omat, cmat, 0,0,0,0); // dang mulserie swaps args
}
else
- mul_serie_m3(td->mtx, pchan->bone->bone_mat, pmat, omat, 0,0,0,0,0); // dang mulserie swaps args
+ mul_serie_m3(td->mtx, bmat, pmat, omat, 0,0,0,0,0); // dang mulserie swaps args
}
else {
if (constraints_list_needinv(t, &pchan->constraints)) {
copy_m3_m4(tmat, pchan->constinv);
invert_m3_m3(cmat, tmat);
- mul_serie_m3(td->mtx, pchan->bone->bone_mat, omat, cmat, 0,0,0,0,0); // dang mulserie swaps args
+ mul_serie_m3(td->mtx, bmat, omat, cmat, 0,0,0,0,0); // dang mulserie swaps args
}
else
- mul_m3_m3m3(td->mtx, omat, pchan->bone->bone_mat); // Mat3MulMat3 has swapped args!
+ mul_m3_m3m3(td->mtx, omat, bmat); // Mat3MulMat3 has swapped args!
}
invert_m3_m3(td->smtx, td->mtx);
@@ -1054,7 +1059,15 @@ static void createTransArmatureVerts(bContext *C, TransInfo *t)
ListBase *edbo = arm->edbo;
TransData *td;
float mtx[3][3], smtx[3][3], delta[3], bonemat[3][3];
-
+
+ /* special hack for envelope drawmode and scaling:
+ * to allow scaling the size of the envelope around single points,
+ * mode should become TFM_BONE_ENVELOPE in this case
+ */
+ // TODO: maybe we need a separate hotkey for it, but this is consistent with 2.4x for now
+ if ((t->mode == TFM_RESIZE) && (arm->drawtype==ARM_ENVELOPE))
+ t->mode= TFM_BONE_ENVELOPE;
+
t->total = 0;
for (ebo = edbo->first; ebo; ebo = ebo->next)
{
@@ -2259,7 +2272,7 @@ static void createTransEditVerts(bContext *C, TransInfo *t)
/* detect CrazySpace [tm] */
if(propmode==0) {
if(modifiers_getCageIndex(t->obedit, NULL, 1)>=0) {
- if(modifiers_isDeformed(t->scene, t->obedit)) {
+ if(modifiers_isCorrectableDeformed(t->scene, t->obedit)) {
/* check if we can use deform matrices for modifier from the
start up to stack, they are more accurate than quats */
totleft= editbmesh_get_first_deform_matrices(t->obedit, em, &defmats, &defcos);
@@ -2407,6 +2420,7 @@ void flushTransNodes(TransInfo *t)
}
/* *** SEQUENCE EDITOR *** */
+#define XXX_DURIAN_ANIM_TX_HACK
void flushTransSeq(TransInfo *t)
{
ListBase *seqbasep= seq_give_editing(t->scene, FALSE)->seqbasep; /* Editing null check alredy done */
@@ -2425,14 +2439,19 @@ void flushTransSeq(TransInfo *t)
/* flush to 2d vector from internally used 3d vector */
for(a=0, td= t->data, td2d= t->data2d; a<t->total; a++, td++, td2d++) {
-
tdsq= (TransDataSeq *)td->extra;
seq= tdsq->seq;
new_frame= (int)floor(td2d->loc[0] + 0.5f);
switch (tdsq->sel_flag) {
case SELECT:
- if (seq->type != SEQ_META && seq_tx_test(seq)) /* for meta's, their children move */
+#ifdef XXX_DURIAN_ANIM_TX_HACK
+ if (seq != seq_prev) {
+ int ofs = (new_frame - tdsq->start_offset) - seq->start; // breaks for single strips - color/image
+ seq_offset_animdata(t->scene, seq, ofs);
+ }
+#endif
+ if (seq->type != SEQ_META && (seq->depth != 0 || seq_tx_test(seq))) /* for meta's, their children move */
seq->start= new_frame - tdsq->start_offset;
if (seq->depth==0) {
@@ -2443,12 +2462,12 @@ void flushTransSeq(TransInfo *t)
case SEQ_LEFTSEL: /* no vertical transform */
seq_tx_set_final_left(seq, new_frame);
seq_tx_handle_xlimits(seq, tdsq->flag&SEQ_LEFTSEL, tdsq->flag&SEQ_RIGHTSEL);
- fix_single_seq(seq); /* todo - move this into aftertrans update? - old seq tx needed it anyway */
+ seq_single_fix(seq); /* todo - move this into aftertrans update? - old seq tx needed it anyway */
break;
case SEQ_RIGHTSEL: /* no vertical transform */
seq_tx_set_final_right(seq, new_frame);
seq_tx_handle_xlimits(seq, tdsq->flag&SEQ_LEFTSEL, tdsq->flag&SEQ_RIGHTSEL);
- fix_single_seq(seq); /* todo - move this into aftertrans update? - old seq tx needed it anyway */
+ seq_single_fix(seq); /* todo - move this into aftertrans update? - old seq tx needed it anyway */
break;
}
@@ -2987,11 +3006,11 @@ static void posttrans_gpd_clean (bGPdata *gpd)
*/
static void posttrans_fcurve_clean (FCurve *fcu)
{
- float *selcache; /* cache for frame numbers of selected frames (icu->totvert*sizeof(float)) */
+ float *selcache; /* cache for frame numbers of selected frames (fcu->totvert*sizeof(float)) */
int len, index, i; /* number of frames in cache, item index */
/* allocate memory for the cache */
- // TODO: investigate using GHash for this instead?
+ // TODO: investigate using BezTriple columns instead?
if (fcu->totvert == 0)
return;
selcache= MEM_callocN(sizeof(float)*fcu->totvert, "FCurveSelFrameNums");
@@ -3057,7 +3076,7 @@ static void posttrans_action_clean (bAnimContext *ac, bAction *act)
filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY);
ANIM_animdata_filter(ac, &anim_data, filter, act, ANIMCONT_ACTION);
- /* loop through relevant data, removing keyframes from the ipo-blocks that were attached
+ /* loop through relevant data, removing keyframes as appropriate
* - all keyframes are converted in/out of global time
*/
for (ale= anim_data.first; ale; ale= ale->next) {
@@ -3889,6 +3908,19 @@ static short constraints_list_needinv(TransInfo *t, ListBase *list)
*/
static void SeqTransInfo(TransInfo *t, Sequence *seq, int *recursive, int *count, int *flag)
{
+
+#ifdef XXX_DURIAN_ANIM_TX_HACK
+ /* hack */
+ if((seq->flag & SELECT)==0 && seq->type & SEQ_EFFECT) {
+ Sequence *seq_t[3] = {seq->seq1, seq->seq2, seq->seq3};
+ int i;
+ for(i=0; i<3; i++) {
+ if (seq_t[i] && ((seq_t[i])->flag & SELECT) && !(seq_t[i]->flag & SEQ_LOCK) && !(seq_t[i]->flag & (SEQ_LEFTSEL|SEQ_RIGHTSEL)))
+ seq->flag |= SELECT;
+ }
+ }
+#endif
+
/* for extend we need to do some tricks */
if (t->mode == TFM_TIME_EXTEND) {
@@ -4170,7 +4202,7 @@ static void freeSeqData(TransInfo *t)
}
}
- shuffle_seq_time(seqbasep);
+ shuffle_seq_time(seqbasep, t->scene);
}
}
#endif
@@ -4547,7 +4579,8 @@ static void clear_trans_object_base_flags(TransInfo *t)
/* auto-keyframing feature - for objects
* tmode: should be a transform mode
*/
-void autokeyframe_ob_cb_func(Scene *scene, View3D *v3d, Object *ob, int tmode)
+// NOTE: context may not always be available, so must check before using it as it's a luxury for a few cases
+void autokeyframe_ob_cb_func(bContext *C, Scene *scene, View3D *v3d, Object *ob, int tmode)
{
ID *id= &ob->id;
FCurve *fcu;
@@ -4564,13 +4597,7 @@ void autokeyframe_ob_cb_func(Scene *scene, View3D *v3d, Object *ob, int tmode)
memset(&cks, 0, sizeof(bCommonKeySrc));
cks.id= &ob->id;
- if (IS_AUTOKEY_FLAG(INSERTNEEDED))
- flag |= INSERTKEY_NEEDED;
- if (IS_AUTOKEY_FLAG(AUTOMATKEY))
- flag |= INSERTKEY_MATRIX;
- if (IS_AUTOKEY_MODE(scene, EDITKEYS))
- flag |= INSERTKEY_REPLACE;
-
+ flag = ANIM_get_keyframing_flags(scene, 1);
if (IS_AUTOKEY_FLAG(ONLYKEYINGSET) && (active_ks)) {
/* only insert into active keyingset */
@@ -4643,11 +4670,12 @@ void autokeyframe_ob_cb_func(Scene *scene, View3D *v3d, Object *ob, int tmode)
* tmode: should be a transform mode
* targetless_ik: has targetless ik been done on any channels?
*/
-void autokeyframe_pose_cb_func(Scene *scene, View3D *v3d, Object *ob, int tmode, short targetless_ik)
+// NOTE: context may not always be available, so must check before using it as it's a luxury for a few cases
+void autokeyframe_pose_cb_func(bContext *C, Scene *scene, View3D *v3d, Object *ob, int tmode, short targetless_ik)
{
ID *id= &ob->id;
AnimData *adt= ob->adt;
- //bArmature *arm= ob->data;
+ bArmature *arm= ob->data;
bAction *act= (adt) ? adt->action : NULL;
bPose *pose= ob->pose;
bPoseChannel *pchan;
@@ -4670,12 +4698,10 @@ void autokeyframe_pose_cb_func(Scene *scene, View3D *v3d, Object *ob, int tmode,
* visual keyframes even if flag not set, as it's not that useful otherwise
* (for quick animation recording)
*/
- if (IS_AUTOKEY_FLAG(AUTOMATKEY) || (targetless_ik))
+ flag = ANIM_get_keyframing_flags(scene, 1);
+
+ if (targetless_ik)
flag |= INSERTKEY_MATRIX;
- if (IS_AUTOKEY_FLAG(INSERTNEEDED))
- flag |= INSERTKEY_NEEDED;
- if (IS_AUTOKEY_MODE(scene, EDITKEYS))
- flag |= INSERTKEY_REPLACE;
for (pchan=pose->chanbase.first; pchan; pchan=pchan->next) {
if (pchan->bone->flag & BONE_TRANSFORM) {
@@ -4754,15 +4780,13 @@ void autokeyframe_pose_cb_func(Scene *scene, View3D *v3d, Object *ob, int tmode,
}
}
- // XXX todo... figure out way to get appropriate notifiers sent
-
- /* do the bone paths */
-#if 0 // XXX TRANSFORM FIX ME
- if (arm->pathflag & ARM_PATH_ACFRA) {
+ /* do the bone paths
+ * NOTE: only do this when there is context info
+ */
+ if (C && (arm->pathflag & ARM_PATH_ACFRA)) {
//pose_clear_paths(ob); // XXX for now, don't need to clear
ED_pose_recalculate_paths(C, scene, ob);
}
-#endif
}
else {
/* tag channels that should have unkeyed data */
@@ -4776,12 +4800,12 @@ void autokeyframe_pose_cb_func(Scene *scene, View3D *v3d, Object *ob, int tmode,
}
-/* inserting keys, refresh ipo-keys, pointcache, redraw events... */
+/* inserting keys, pointcache, redraw events... */
/*
* note: sequencer freeing has its own function now because of a conflict with transform's order of freeing (campbell)
* Order changed, the sequencer stuff should go back in here
* */
-void special_aftertrans_update(TransInfo *t)
+void special_aftertrans_update(bContext *C, TransInfo *t)
{
Object *ob;
// short redrawipo=0, resetslowpar=1;
@@ -4809,24 +4833,15 @@ void special_aftertrans_update(TransInfo *t)
}
else if (t->spacetype == SPACE_ACTION) {
SpaceAction *saction= (SpaceAction *)t->sa->spacedata.first;
- Scene *scene;
bAnimContext ac;
- /* initialise relevant anim-context 'context' data from TransInfo data */
- /* NOTE: sync this with the code in ANIM_animdata_get_context() */
- memset(&ac, 0, sizeof(bAnimContext));
-
- scene= ac.scene= t->scene;
- ob= ac.obact= OBACT;
- ac.sa= t->sa;
- ac.ar= t->ar;
- ac.spacetype= (t->sa)? t->sa->spacetype : 0;
- ac.regiontype= (t->ar)? t->ar->regiontype : 0;
-
- if (ANIM_animdata_context_getdata(&ac) == 0)
+ /* initialise relevant anim-context 'context' data */
+ if (ANIM_animdata_get_context(C, &ac) == 0)
return;
+
+ ob = ac.obact;
- if (ac.datatype == ANIMCONT_DOPESHEET) {
+ if (ELEM(ac.datatype, ANIMCONT_DOPESHEET, ANIMCONT_SHAPEKEY)) {
ListBase anim_data = {NULL, NULL};
bAnimListElem *ale;
short filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY);
@@ -4834,7 +4849,7 @@ void special_aftertrans_update(TransInfo *t)
/* get channels to work on */
ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype);
- /* these should all be ipo-blocks */
+ /* these should all be F-Curves */
for (ale= anim_data.first; ale; ale= ale->next) {
AnimData *adt= ANIM_nla_mapping_get(&ac, ale);
FCurve *fcu= (FCurve *)ale->key_data;
@@ -4855,12 +4870,10 @@ void special_aftertrans_update(TransInfo *t)
/* free temp memory */
BLI_freelistN(&anim_data);
}
- else if (ac.datatype == ANIMCONT_ACTION) {
+ else if (ac.datatype == ANIMCONT_ACTION) { // TODO: just integrate into the above...
/* Depending on the lock status, draw necessary views */
// fixme... some of this stuff is not good
if (ob) {
- ob->ctime= -1234567.0f;
-
if (ob->pose || ob_get_key(ob))
DAG_id_flush_update(&ob->id, OB_RECALC);
else
@@ -4874,22 +4887,6 @@ void special_aftertrans_update(TransInfo *t)
posttrans_action_clean(&ac, (bAction *)ac.data);
}
}
- else if (ac.datatype == ANIMCONT_SHAPEKEY) {
-#if 0 // XXX old animation system
- /* fix up the Ipocurves and redraw stuff */
- Key *key= (Key *)ac.data;
-
- if (key->ipo) {
- if ( (saction->flag & SACTION_NOTRANSKEYCULL)==0 &&
- ((cancelled == 0) || (duplicate)) )
- {
- posttrans_ipo_clean(key->ipo);
- }
- }
-#endif // XXX old animation system
-
- DAG_id_flush_update(&OBACT->id, OB_RECALC_DATA);
- }
#if 0 // XXX future of this is still not clear
else if (ac.datatype == ANIMCONT_GPENCIL) {
/* remove duplicate frames and also make sure points are in order! */
@@ -4919,21 +4916,10 @@ void special_aftertrans_update(TransInfo *t)
}
else if (t->spacetype == SPACE_IPO) {
SpaceIpo *sipo= (SpaceIpo *)t->sa->spacedata.first;
- Scene *scene;
bAnimContext ac;
- /* initialise relevant anim-context 'context' data from TransInfo data */
- /* NOTE: sync this with the code in ANIM_animdata_get_context() */
- memset(&ac, 0, sizeof(bAnimContext));
-
- scene= ac.scene= t->scene;
- ob= ac.obact= OBACT;
- ac.sa= t->sa;
- ac.ar= t->ar;
- ac.spacetype= (t->sa)? t->sa->spacetype : 0;
- ac.regiontype= (t->ar)? t->ar->regiontype : 0;
-
- if (ANIM_animdata_context_getdata(&ac) == 0)
+ /* initialise relevant anim-context 'context' data */
+ if (ANIM_animdata_get_context(C, &ac) == 0)
return;
if (ac.datatype)
@@ -4970,21 +4956,10 @@ void special_aftertrans_update(TransInfo *t)
ANIM_editkeyframes_refresh(&ac);
}
else if (t->spacetype == SPACE_NLA) {
- Scene *scene;
bAnimContext ac;
- /* initialise relevant anim-context 'context' data from TransInfo data */
- /* NOTE: sync this with the code in ANIM_animdata_get_context() */
- memset(&ac, 0, sizeof(bAnimContext));
-
- scene= ac.scene= t->scene;
- ob= ac.obact= OBACT;
- ac.sa= t->sa;
- ac.ar= t->ar;
- ac.spacetype= (t->sa)? t->sa->spacetype : 0;
- ac.regiontype= (t->ar)? t->ar->regiontype : 0;
-
- if (ANIM_animdata_context_getdata(&ac) == 0)
+ /* initialise relevant anim-context 'context' data */
+ if (ANIM_animdata_get_context(C, &ac) == 0)
return;
if (ac.datatype)
@@ -5014,10 +4989,6 @@ void special_aftertrans_update(TransInfo *t)
}
}
else if (t->obedit) {
- // TRANSFORM_FIX_ME
-// if (t->mode==TFM_BONESIZE || t->mode==TFM_BONE_ENVELOPE)
-// allqueue(REDRAWBUTSEDIT, 0);
-
if (t->obedit->type == OB_MESH)
{
BMEditMesh *em = ((Mesh *)t->obedit->data)->edit_btmesh;
@@ -5051,7 +5022,7 @@ void special_aftertrans_update(TransInfo *t)
/* automatic inserting of keys and unkeyed tagging - only if transform wasn't cancelled (or TFM_DUMMY) */
if (!cancelled && (t->mode != TFM_DUMMY)) {
- autokeyframe_pose_cb_func(t->scene, (View3D *)t->view, ob, t->mode, targetless_ik);
+ autokeyframe_pose_cb_func(C, t->scene, (View3D *)t->view, ob, t->mode, targetless_ik);
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
}
else if (arm->flag & ARM_DELAYDEFORM) {
@@ -5062,9 +5033,6 @@ void special_aftertrans_update(TransInfo *t)
else
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
- //if (t->mode==TFM_BONESIZE || t->mode==TFM_BONE_ENVELOPE)
- // allqueue(REDRAWBUTSEDIT, 0);
-
}
else if(t->scene->basact && (ob = t->scene->basact->object) && (ob->mode & OB_MODE_PARTICLE_EDIT) && PE_get_current(t->scene, ob)) {
;
@@ -5102,21 +5070,26 @@ void special_aftertrans_update(TransInfo *t)
/* Please remove if some other solution is found. -jahka */
DAG_id_flush_update(&ob->id, OB_RECALC_OB);
- /* Set autokey if necessary */
- if (!cancelled)
- autokeyframe_ob_cb_func(t->scene, (View3D *)t->view, ob, t->mode);
- }
+ /* Set autokey if necessary */
+ if (!cancelled)
+ autokeyframe_ob_cb_func(C, t->scene, (View3D *)t->view, ob, t->mode);
}
+ }
clear_trans_object_base_flags(t);
-#if 0 // TRANSFORM_FIX_ME
- if (redrawipo) {
- allqueue(REDRAWNLA, 0);
- allqueue(REDRAWACTION, 0);
- allqueue(REDRAWIPO, 0);
+ if(t->spacetype == SPACE_VIEW3D)
+ {
+ View3D *v3d = t->view;
+
+ /* restore manipulator */
+ if (t->flag & T_MODAL) {
+ v3d->twtype = t->twtype;
+ }
}
+
+#if 0 // TRANSFORM_FIX_ME
if(resetslowpar)
reset_slowparents();
@@ -5126,7 +5099,7 @@ void special_aftertrans_update(TransInfo *t)
#endif
}
-static void createTransObject(bContext *C, TransInfo *t)
+static void createTransObject(struct bContext *C, TransInfo *t)
{
TransData *td = NULL;
TransDataExtension *tx;
@@ -5385,9 +5358,6 @@ void createTransData(bContext *C, TransInfo *t)
}
}
else {
- // t->flag &= ~T_PROP_EDIT; /* no proportional edit in object mode */
- t->options |= CTX_NO_PET;
-
createTransObject(C, t);
t->flag |= T_OBJECT;
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 03fd48cd598..94cbbe2c309 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -109,6 +109,7 @@
#include "RNA_access.h"
#include "WM_types.h"
+#include "WM_api.h"
#include "UI_resources.h"
@@ -274,23 +275,6 @@ static void editbmesh_apply_to_mirror(TransInfo *t)
}
}
-/* tags the given ID block for refreshes (if applicable) due to
- * Animation Editor editing
- */
-static void animedit_refresh_id_tags (Scene *scene, ID *id)
-{
- if (id) {
- AnimData *adt= BKE_animdata_from_id(id);
-
- /* tag AnimData for refresh so that other views will update in realtime with these changes */
- if (adt)
- adt->recalc |= ADT_RECALC_ANIM;
-
- /* set recalc flags */
- DAG_id_flush_update(id, OB_RECALC); // XXX or do we want something more restrictive?
- }
-}
-
/* for the realtime animation recording feature, handle overlapping data */
static void animrecord_check_state (Scene *scene, ID *id, wmTimer *animtimer)
{
@@ -379,7 +363,7 @@ void recalcData(TransInfo *t)
/* just tag these animdata-blocks to recalc, assuming that some data there changed */
for (ale= anim_data.first; ale; ale= ale->next) {
/* set refresh tags for objects using this animation */
- animedit_refresh_id_tags(t->scene, ale->id);
+ ANIM_list_elem_update(t->scene, ale);
}
/* now free temp channels */
@@ -427,7 +411,7 @@ void recalcData(TransInfo *t)
calchandles_fcurve(fcu);
/* set refresh tags for objects using this animation */
- animedit_refresh_id_tags(t->scene, ale->id);
+ ANIM_list_elem_update(t->scene, ale);
}
/* do resort and other updates? */
@@ -458,7 +442,7 @@ void recalcData(TransInfo *t)
continue;
/* set refresh tags for objects using this animation */
- animedit_refresh_id_tags(t->scene, tdn->id);
+ ANIM_id_update(t->scene, tdn->id);
/* if cancelling transform, just write the values without validating, then move on */
if (t->state == TRANS_CANCEL) {
@@ -765,7 +749,7 @@ void recalcData(TransInfo *t)
int targetless_ik= (t->flag & T_AUTOIK); // XXX this currently doesn't work, since flags aren't set yet!
animrecord_check_state(t->scene, &ob->id, t->animtimer);
- autokeyframe_pose_cb_func(t->scene, (View3D *)t->view, ob, t->mode, targetless_ik);
+ autokeyframe_pose_cb_func(NULL, t->scene, (View3D *)t->view, ob, t->mode, targetless_ik);
}
/* old optimize trick... this enforces to bypass the depgraph */
@@ -801,15 +785,15 @@ void recalcData(TransInfo *t)
if (td->flag & TD_SKIP)
continue;
- /* if animtimer is running, and the object already has animation data,
- * check if the auto-record feature means that we should record 'samples'
- * (i.e. uneditable animation values)
- */
- // TODO: autokeyframe calls need some setting to specify to add samples (FPoints) instead of keyframes?
- if ((t->animtimer) && IS_AUTOKEY_ON(t->scene)) {
- animrecord_check_state(t->scene, &ob->id, t->animtimer);
- autokeyframe_ob_cb_func(t->scene, (View3D *)t->view, ob, t->mode);
- }
+ /* if animtimer is running, and the object already has animation data,
+ * check if the auto-record feature means that we should record 'samples'
+ * (i.e. uneditable animation values)
+ */
+ // TODO: autokeyframe calls need some setting to specify to add samples (FPoints) instead of keyframes?
+ if ((t->animtimer) && IS_AUTOKEY_ON(t->scene)) {
+ animrecord_check_state(t->scene, &ob->id, t->animtimer);
+ autokeyframe_ob_cb_func(NULL, t->scene, (View3D *)t->view, ob, t->mode);
+ }
/* proxy exception */
if(ob->proxy)
@@ -933,6 +917,11 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event)
unit_m3(t->mat);
+ /* if there's an event, we're modal */
+ if (event) {
+ t->flag |= T_MODAL;
+ }
+
t->spacetype = sa->spacetype;
if(t->spacetype == SPACE_VIEW3D)
{
@@ -941,6 +930,12 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event)
t->view = v3d;
t->animtimer= CTX_wm_screen(C)->animtimer;
+ /* turn manipulator off during transform */
+ if (t->flag & T_MODAL) {
+ t->twtype = v3d->twtype;
+ v3d->twtype = 0;
+ }
+
if(v3d->flag & V3D_ALIGN) t->flag |= T_V3D_ALIGN;
t->around = v3d->around;
@@ -1014,11 +1009,15 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event)
}
else
{
- if ((t->options & CTX_NO_PET) == 0 && (ts->proportional != PROP_EDIT_OFF)) {
- t->flag |= T_PROP_EDIT;
+ /* use settings from scene only if modal */
+ if (t->flag & T_MODAL)
+ {
+ if ((t->options & CTX_NO_PET) == 0 && (ts->proportional != PROP_EDIT_OFF)) {
+ t->flag |= T_PROP_EDIT;
- if(ts->proportional == PROP_EDIT_CONNECTED)
- t->flag |= T_PROP_CONNECTED;
+ if(ts->proportional == PROP_EDIT_CONNECTED)
+ t->flag |= T_PROP_CONNECTED;
+ }
}
}
@@ -1061,7 +1060,7 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event)
}
/* Here I would suggest only TransInfo related issues, like free data & reset vars. Not redraws */
-void postTrans (TransInfo *t)
+void postTrans (bContext *C, TransInfo *t)
{
TransData *td;
@@ -1069,7 +1068,8 @@ void postTrans (TransInfo *t)
ED_region_draw_cb_exit(t->ar->type, t->draw_handle_view);
if (t->draw_handle_pixel)
ED_region_draw_cb_exit(t->ar->type, t->draw_handle_pixel);
-
+ if (t->draw_handle_cursor)
+ WM_paint_cursor_end(CTX_wm_manager(C), t->draw_handle_cursor);
if (t->customFree) {
/* Can take over freeing t->data and data2d etc... */
@@ -1091,6 +1091,8 @@ void postTrans (TransInfo *t)
MEM_freeN(t->data);
}
+ BLI_freelistN(&t->tsnap.points);
+
if (t->ext) MEM_freeN(t->ext);
if (t->data2d) {
MEM_freeN(t->data2d);
@@ -1358,7 +1360,7 @@ void calculateCenter(TransInfo *t)
/* for panning from cameraview */
if(t->flag & T_OBJECT)
{
- if(t->spacetype==SPACE_VIEW3D && t->ar->regiontype == RGN_TYPE_WINDOW)
+ if(t->spacetype==SPACE_VIEW3D && t->ar && t->ar->regiontype == RGN_TYPE_WINDOW)
{
View3D *v3d = t->view;
Scene *scene = t->scene;
diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c
index 153a853f21d..0493aabd800 100644
--- a/source/blender/editors/transform/transform_manipulator.c
+++ b/source/blender/editors/transform/transform_manipulator.c
@@ -183,60 +183,67 @@ static int test_rotmode_euler(short rotmode)
return (ELEM(rotmode, ROT_MODE_AXISANGLE, ROT_MODE_QUAT)) ? 0:1;
}
-void gimbal_axis(Object *ob, float gmat[][3])
+int gimbal_axis(Object *ob, float gmat[][3])
{
- if(ob->mode & OB_MODE_POSE)
- {
- bPoseChannel *pchan= get_active_posechannel(ob);
+ if (ob) {
+ if(ob->mode & OB_MODE_POSE)
+ {
+ bPoseChannel *pchan= get_active_posechannel(ob);
- if(pchan && test_rotmode_euler(pchan->rotmode)) {
- float mat[3][3], tmat[3][3], obmat[3][3];
+ if(pchan && test_rotmode_euler(pchan->rotmode)) {
+ float mat[3][3], tmat[3][3], obmat[3][3];
- eulO_to_gimbal_axis(mat, pchan->eul, pchan->rotmode);
+ eulO_to_gimbal_axis(mat, pchan->eul, pchan->rotmode);
- /* apply bone transformation */
- mul_m3_m3m3(tmat, pchan->bone->bone_mat, mat);
-
- if (pchan->parent)
- {
- float parent_mat[3][3];
+ /* apply bone transformation */
+ mul_m3_m3m3(tmat, pchan->bone->bone_mat, mat);
- copy_m3_m4(parent_mat, pchan->parent->pose_mat);
- mul_m3_m3m3(mat, parent_mat, tmat);
+ if (pchan->parent)
+ {
+ float parent_mat[3][3];
- /* needed if object transformation isn't identity */
- copy_m3_m4(obmat, ob->obmat);
- mul_m3_m3m3(gmat, obmat, mat);
- }
- else
- {
- /* needed if object transformation isn't identity */
- copy_m3_m4(obmat, ob->obmat);
- mul_m3_m3m3(gmat, obmat, tmat);
- }
+ copy_m3_m4(parent_mat, pchan->parent->pose_mat);
+ mul_m3_m3m3(mat, parent_mat, tmat);
- normalize_m3(gmat);
+ /* needed if object transformation isn't identity */
+ copy_m3_m4(obmat, ob->obmat);
+ mul_m3_m3m3(gmat, obmat, mat);
+ }
+ else
+ {
+ /* needed if object transformation isn't identity */
+ copy_m3_m4(obmat, ob->obmat);
+ mul_m3_m3m3(gmat, obmat, tmat);
+ }
+
+ normalize_m3(gmat);
+ return 1;
+ }
}
- }
- else {
- if(test_rotmode_euler(ob->rotmode)) {
-
-
- if (ob->parent)
- {
- float parent_mat[3][3], amat[3][3];
+ else {
+ if(test_rotmode_euler(ob->rotmode)) {
+
- eulO_to_gimbal_axis(amat, ob->rot, ob->rotmode);
- copy_m3_m4(parent_mat, ob->parent->obmat);
- normalize_m3(parent_mat);
- mul_m3_m3m3(gmat, parent_mat, amat);
- }
- else
- {
- eulO_to_gimbal_axis(gmat, ob->rot, ob->rotmode);
+ if (ob->parent)
+ {
+ float parent_mat[3][3], amat[3][3];
+
+ eulO_to_gimbal_axis(amat, ob->rot, ob->rotmode);
+ copy_m3_m4(parent_mat, ob->parent->obmat);
+ normalize_m3(parent_mat);
+ mul_m3_m3m3(gmat, parent_mat, amat);
+ return 1;
+ }
+ else
+ {
+ eulO_to_gimbal_axis(gmat, ob->rot, ob->rotmode);
+ return 1;
+ }
}
}
}
+
+ return 0;
}
@@ -484,11 +491,12 @@ int calc_manipulator_stats(const bContext *C)
case V3D_MANIP_GIMBAL:
{
float mat[3][3];
- unit_m3(mat);
- gimbal_axis(ob, mat);
- copy_m4_m3(rv3d->twmat, mat);
- break;
- }
+ if (gimbal_axis(ob, mat)) {
+ copy_m4_m3(rv3d->twmat, mat);
+ break;
+ }
+ /* if not gimbal, fall through to normal */
+ }
case V3D_MANIP_NORMAL:
if(obedit || ob->mode & OB_MODE_POSE) {
float mat[3][3];
@@ -1738,7 +1746,7 @@ int BIF_do_manipulator(bContext *C, struct wmEvent *event, wmOperator *op)
break;
}
RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis);
- WM_operator_name_call(C, "TFM_OT_translate", WM_OP_INVOKE_DEFAULT, op->ptr);
+ WM_operator_name_call(C, "TRANSFORM_OT_translate", WM_OP_INVOKE_DEFAULT, op->ptr);
}
else if (drawflags & MAN_SCALE_C) {
switch(drawflags) {
@@ -1768,10 +1776,10 @@ int BIF_do_manipulator(bContext *C, struct wmEvent *event, wmOperator *op)
break;
}
RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis);
- WM_operator_name_call(C, "TFM_OT_resize", WM_OP_INVOKE_DEFAULT, op->ptr);
+ WM_operator_name_call(C, "TRANSFORM_OT_resize", WM_OP_INVOKE_DEFAULT, op->ptr);
}
else if (drawflags == MAN_ROT_T) { /* trackball need special case, init is different */
- WM_operator_name_call(C, "TFM_OT_trackball", WM_OP_INVOKE_DEFAULT, op->ptr);
+ WM_operator_name_call(C, "TRANSFORM_OT_trackball", WM_OP_INVOKE_DEFAULT, op->ptr);
}
else if (drawflags & MAN_ROT_C) {
switch(drawflags) {
@@ -1786,7 +1794,7 @@ int BIF_do_manipulator(bContext *C, struct wmEvent *event, wmOperator *op)
break;
}
RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis);
- WM_operator_name_call(C, "TFM_OT_rotate", WM_OP_INVOKE_DEFAULT, op->ptr);
+ WM_operator_name_call(C, "TRANSFORM_OT_rotate", WM_OP_INVOKE_DEFAULT, op->ptr);
}
}
/* after transform, restore drawflags */
diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c
index cd689416043..424b9480881 100644
--- a/source/blender/editors/transform/transform_ops.c
+++ b/source/blender/editors/transform/transform_ops.c
@@ -51,39 +51,86 @@ typedef struct TransformModeItem
{
char *idname;
int mode;
+ void (*opfunc)(wmOperatorType*);
} TransformModeItem;
static float VecOne[3] = {1, 1, 1};
-char OP_TRANSLATION[] = "TFM_OT_translate";
-char OP_ROTATION[] = "TFM_OT_rotate";
-char OP_TOSPHERE[] = "TFM_OT_tosphere";
-char OP_RESIZE[] = "TFM_OT_resize";
-char OP_SHEAR[] = "TFM_OT_shear";
-char OP_WARP[] = "TFM_OT_warp";
-char OP_SHRINK_FATTEN[] = "TFM_OT_shrink_fatten";
-char OP_TILT[] = "TFM_OT_tilt";
-char OP_TRACKBALL[] = "TFM_OT_trackball";
-char OP_MIRROR[] = "TFM_OT_mirror";
-char OP_EDGE_SLIDE[] = "TFM_OT_edge_slide";
-
+char OP_TRANSLATION[] = "TRANSFORM_OT_translate";
+char OP_ROTATION[] = "TRANSFORM_OT_rotate";
+char OP_TOSPHERE[] = "TRANSFORM_OT_tosphere";
+char OP_RESIZE[] = "TRANSFORM_OT_resize";
+char OP_SHEAR[] = "TRANSFORM_OT_shear";
+char OP_WARP[] = "TRANSFORM_OT_warp";
+char OP_SHRINK_FATTEN[] = "TRANSFORM_OT_shrink_fatten";
+char OP_TILT[] = "TRANSFORM_OT_tilt";
+char OP_TRACKBALL[] = "TRANSFORM_OT_trackball";
+char OP_MIRROR[] = "TRANSFORM_OT_mirror";
+char OP_EDGE_SLIDE[] = "TRANSFORM_OT_edge_slide";
+char OP_SEQ_SLIDE[] = "TRANSFORM_OT_seq_slide";
+
+void TRANSFORM_OT_translate(struct wmOperatorType *ot);
+void TRANSFORM_OT_rotate(struct wmOperatorType *ot);
+void TRANSFORM_OT_tosphere(struct wmOperatorType *ot);
+void TRANSFORM_OT_resize(struct wmOperatorType *ot);
+void TRANSFORM_OT_shear(struct wmOperatorType *ot);
+void TRANSFORM_OT_warp(struct wmOperatorType *ot);
+void TRANSFORM_OT_shrink_fatten(struct wmOperatorType *ot);
+void TRANSFORM_OT_tilt(struct wmOperatorType *ot);
+void TRANSFORM_OT_trackball(struct wmOperatorType *ot);
+void TRANSFORM_OT_mirror(struct wmOperatorType *ot);
+void TRANSFORM_OT_edge_slide(struct wmOperatorType *ot);
+void TRANSFORM_OT_seq_slide(struct wmOperatorType *ot);
TransformModeItem transform_modes[] =
{
- {OP_TRANSLATION, TFM_TRANSLATION},
- {OP_ROTATION, TFM_ROTATION},
- {OP_TOSPHERE, TFM_TOSPHERE},
- {OP_RESIZE, TFM_RESIZE},
- {OP_SHEAR, TFM_SHEAR},
- {OP_WARP, TFM_WARP},
- {OP_SHRINK_FATTEN, TFM_SHRINKFATTEN},
- {OP_TILT, TFM_TILT},
- {OP_TRACKBALL, TFM_TRACKBALL},
- {OP_MIRROR, TFM_MIRROR},
- {OP_EDGE_SLIDE, TFM_EDGE_SLIDE},
+ {OP_TRANSLATION, TFM_TRANSLATION, TRANSFORM_OT_translate},
+ {OP_ROTATION, TFM_ROTATION, TRANSFORM_OT_rotate},
+ {OP_TOSPHERE, TFM_TOSPHERE, TRANSFORM_OT_tosphere},
+ {OP_RESIZE, TFM_RESIZE, TRANSFORM_OT_resize},
+ {OP_SHEAR, TFM_SHEAR, TRANSFORM_OT_shear},
+ {OP_WARP, TFM_WARP, TRANSFORM_OT_warp},
+ {OP_SHRINK_FATTEN, TFM_SHRINKFATTEN, TRANSFORM_OT_shrink_fatten},
+ {OP_TILT, TFM_TILT, TRANSFORM_OT_tilt},
+ {OP_TRACKBALL, TFM_TRACKBALL, TRANSFORM_OT_trackball},
+ {OP_MIRROR, TFM_MIRROR, TRANSFORM_OT_mirror},
+ {OP_EDGE_SLIDE, TFM_EDGE_SLIDE, TRANSFORM_OT_edge_slide},
+ {OP_SEQ_SLIDE, TFM_SEQ_SLIDE, TRANSFORM_OT_seq_slide},
{NULL, 0}
};
+static int snap_type_exec(bContext *C, wmOperator *op)
+{
+ ToolSettings *ts= CTX_data_tool_settings(C);
+
+ ts->snap_mode = RNA_enum_get(op->ptr,"type");
+
+ WM_event_add_notifier(C, NC_SCENE|ND_MODE, NULL); /* header redraw */
+
+ return OPERATOR_FINISHED;
+}
+
+void TRANSFORM_OT_snap_type(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Snap Type";
+ ot->description= "Set the snap element type.";
+ ot->idname= "TRANSFORM_OT_snap_type";
+
+ /* api callbacks */
+ ot->invoke= WM_menu_invoke;
+ ot->exec= snap_type_exec;
+
+ ot->poll= ED_operator_areaactive;
+
+ /* flags */
+ ot->flag= OPTYPE_UNDO;
+
+ /* props */
+ RNA_def_enum(ot->srna, "type", snap_element_items, 0, "Type", "Set the snap element type");
+
+}
+
static int select_orientation_exec(bContext *C, wmOperator *op)
{
int orientation = RNA_enum_get(op->ptr, "orientation");
@@ -102,20 +149,20 @@ static int select_orientation_invoke(bContext *C, wmOperator *op, wmEvent *event
pup= uiPupMenuBegin(C, "Orientation", 0);
layout= uiPupMenuLayout(pup);
- uiItemsEnumO(layout, "TFM_OT_select_orientation", "orientation");
+ uiItemsEnumO(layout, "TRANSFORM_OT_select_orientation", "orientation");
uiPupMenuEnd(C, pup);
return OPERATOR_CANCELLED;
}
-void TFM_OT_select_orientation(struct wmOperatorType *ot)
+void TRANSFORM_OT_select_orientation(struct wmOperatorType *ot)
{
PropertyRNA *prop;
/* identifiers */
ot->name = "Select Orientation";
ot->description= "Select transformation orientation.";
- ot->idname = "TFM_OT_select_orientation";
+ ot->idname = "TRANSFORM_OT_select_orientation";
ot->flag = OPTYPE_UNDO;
/* api callbacks */
@@ -162,12 +209,12 @@ static int delete_orientation_poll(bContext *C)
return selected_index >= 0;
}
-void TFM_OT_delete_orientation(struct wmOperatorType *ot)
+void TRANSFORM_OT_delete_orientation(struct wmOperatorType *ot)
{
/* identifiers */
ot->name = "Delete Orientation";
ot->description= "Delete transformation orientation.";
- ot->idname = "TFM_OT_delete_orientation";
+ ot->idname = "TRANSFORM_OT_delete_orientation";
ot->flag = OPTYPE_UNDO;
/* api callbacks */
@@ -196,12 +243,12 @@ static int create_orientation_invoke(bContext *C, wmOperator *op, wmEvent *event
return create_orientation_exec(C, op);
}
-void TFM_OT_create_orientation(struct wmOperatorType *ot)
+void TRANSFORM_OT_create_orientation(struct wmOperatorType *ot)
{
/* identifiers */
ot->name = "Create Orientation";
ot->description= "Create transformation orientation from selection.";
- ot->idname = "TFM_OT_create_orientation";
+ ot->idname = "TRANSFORM_OT_create_orientation";
ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO;
/* api callbacks */
@@ -237,6 +284,7 @@ static int transformops_data(bContext *C, wmOperator *op, wmEvent *event)
if (op->type->idname == tmode->idname)
{
mode = tmode->mode;
+ break;
}
}
@@ -261,16 +309,16 @@ static int transform_modal(bContext *C, wmOperator *op, wmEvent *event)
TransInfo *t = op->customdata;
- transformEvent(t, event);
+ exit_code = transformEvent(t, event);
transformApply(C, t);
+ exit_code |= transformEnd(C, t);
- exit_code = transformEnd(C, t);
-
- if (exit_code != OPERATOR_RUNNING_MODAL)
+ if ((exit_code & OPERATOR_RUNNING_MODAL) == 0)
{
transformops_exit(C, op);
+ exit_code &= ~OPERATOR_PASS_THROUGH; /* preventively remove passthrough */
}
return exit_code;
@@ -322,13 +370,9 @@ static int transform_invoke(bContext *C, wmOperator *op, wmEvent *event)
return transform_exec(C, op);
}
else {
- TransInfo *t = op->customdata;
-
/* add temp handler */
WM_event_add_modal_handler(C, op);
- t->flag |= T_MODAL; // XXX meh maybe somewhere else
-
op->flag |= OP_GRAB_POINTER; // XXX maybe we want this with the manipulator only?
return OPERATOR_RUNNING_MODAL;
}
@@ -341,16 +385,18 @@ void Properties_Proportional(struct wmOperatorType *ot)
RNA_def_float(ot->srna, "proportional_size", 1, 0, FLT_MAX, "Proportional Size", "", 0, 100);
}
-void Properties_Snapping(struct wmOperatorType *ot, short align)
+void Properties_Snapping(struct wmOperatorType *ot, short fullsnap, short align)
{
- RNA_def_boolean(ot->srna, "snap", 0, "Snap to Point", "");
- RNA_def_enum(ot->srna, "snap_mode", snap_mode_items, 0, "Mode", "");
- RNA_def_float_vector(ot->srna, "snap_point", 3, NULL, -FLT_MAX, FLT_MAX, "Point", "", -FLT_MAX, FLT_MAX);
+ RNA_def_boolean(ot->srna, "snap", 0, "Use Snapping Options", "");
- if (align)
- {
- RNA_def_boolean(ot->srna, "snap_align", 0, "Align with Point Normal", "");
- RNA_def_float_vector(ot->srna, "snap_normal", 3, NULL, -FLT_MAX, FLT_MAX, "Normal", "", -FLT_MAX, FLT_MAX);
+ if (fullsnap) {
+ RNA_def_enum(ot->srna, "snap_target", snap_target_items, 0, "Target", "");
+ RNA_def_float_vector(ot->srna, "snap_point", 3, NULL, -FLT_MAX, FLT_MAX, "Point", "", -FLT_MAX, FLT_MAX);
+
+ if (align) {
+ RNA_def_boolean(ot->srna, "snap_align", 0, "Align with Point Normal", "");
+ RNA_def_float_vector(ot->srna, "snap_normal", 3, NULL, -FLT_MAX, FLT_MAX, "Normal", "", -FLT_MAX, FLT_MAX);
+ }
}
}
@@ -364,7 +410,7 @@ void Properties_Constraints(struct wmOperatorType *ot)
RNA_def_enum_funcs(prop, rna_TransformOrientation_itemf);
}
-void TFM_OT_translate(struct wmOperatorType *ot)
+void TRANSFORM_OT_translate(struct wmOperatorType *ot)
{
/* identifiers */
ot->name = "Translate";
@@ -387,10 +433,10 @@ void TFM_OT_translate(struct wmOperatorType *ot)
Properties_Constraints(ot);
- Properties_Snapping(ot, 1);
+ Properties_Snapping(ot, 1, 1);
}
-void TFM_OT_resize(struct wmOperatorType *ot)
+void TRANSFORM_OT_resize(struct wmOperatorType *ot)
{
/* identifiers */
ot->name = "Resize";
@@ -413,11 +459,11 @@ void TFM_OT_resize(struct wmOperatorType *ot)
Properties_Constraints(ot);
- Properties_Snapping(ot, 0);
+ Properties_Snapping(ot, 1, 0);
}
-void TFM_OT_trackball(struct wmOperatorType *ot)
+void TRANSFORM_OT_trackball(struct wmOperatorType *ot)
{
/* identifiers */
ot->name = "Trackball";
@@ -437,9 +483,11 @@ void TFM_OT_trackball(struct wmOperatorType *ot)
Properties_Proportional(ot);
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
+
+ Properties_Snapping(ot, 0, 0);
}
-void TFM_OT_rotate(struct wmOperatorType *ot)
+void TRANSFORM_OT_rotate(struct wmOperatorType *ot)
{
/* identifiers */
ot->name = "Rotate";
@@ -462,10 +510,10 @@ void TFM_OT_rotate(struct wmOperatorType *ot)
Properties_Constraints(ot);
- Properties_Snapping(ot, 0);
+ Properties_Snapping(ot, 1, 0);
}
-void TFM_OT_tilt(struct wmOperatorType *ot)
+void TRANSFORM_OT_tilt(struct wmOperatorType *ot)
{
/* identifiers */
ot->name = "Tilt";
@@ -490,9 +538,11 @@ void TFM_OT_tilt(struct wmOperatorType *ot)
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
Properties_Constraints(ot);
+
+ Properties_Snapping(ot, 0, 0);
}
-void TFM_OT_warp(struct wmOperatorType *ot)
+void TRANSFORM_OT_warp(struct wmOperatorType *ot)
{
/* identifiers */
ot->name = "Warp";
@@ -513,11 +563,13 @@ void TFM_OT_warp(struct wmOperatorType *ot)
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
- // XXX Shear axis?
+ Properties_Snapping(ot, 0, 0);
+
+ // XXX Warp axis?
// Properties_Constraints(ot);
}
-void TFM_OT_shear(struct wmOperatorType *ot)
+void TRANSFORM_OT_shear(struct wmOperatorType *ot)
{
/* identifiers */
ot->name = "Shear";
@@ -538,11 +590,13 @@ void TFM_OT_shear(struct wmOperatorType *ot)
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
+ Properties_Snapping(ot, 0, 0);
+
// XXX Shear axis?
// Properties_Constraints(ot);
}
-void TFM_OT_shrink_fatten(struct wmOperatorType *ot)
+void TRANSFORM_OT_shrink_fatten(struct wmOperatorType *ot)
{
/* identifiers */
ot->name = "Shrink/Fatten";
@@ -562,9 +616,11 @@ void TFM_OT_shrink_fatten(struct wmOperatorType *ot)
Properties_Proportional(ot);
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
+
+ Properties_Snapping(ot, 0, 0);
}
-void TFM_OT_tosphere(struct wmOperatorType *ot)
+void TRANSFORM_OT_tosphere(struct wmOperatorType *ot)
{
/* identifiers */
ot->name = "To Sphere";
@@ -585,9 +641,11 @@ void TFM_OT_tosphere(struct wmOperatorType *ot)
Properties_Proportional(ot);
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
+
+ Properties_Snapping(ot, 0, 0);
}
-void TFM_OT_mirror(struct wmOperatorType *ot)
+void TRANSFORM_OT_mirror(struct wmOperatorType *ot)
{
/* identifiers */
ot->name = "Mirror";
@@ -606,7 +664,7 @@ void TFM_OT_mirror(struct wmOperatorType *ot)
Properties_Constraints(ot);
}
-void TFM_OT_edge_slide(struct wmOperatorType *ot)
+void TRANSFORM_OT_edge_slide(struct wmOperatorType *ot)
{
/* identifiers */
ot->name = "Edge Slide";
@@ -624,9 +682,31 @@ void TFM_OT_edge_slide(struct wmOperatorType *ot)
RNA_def_float_factor(ot->srna, "value", 0, -1.0f, 1.0f, "Factor", "", -1.0f, 1.0f);
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
+
+ Properties_Snapping(ot, 0, 0);
+}
+
+void TRANSFORM_OT_seq_slide(struct wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name = "Sequence Slide";
+ ot->description= "Slide a sequence strip in time.";
+ ot->idname = OP_SEQ_SLIDE;
+ ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
+
+ /* api callbacks */
+ ot->invoke = transform_invoke;
+ ot->exec = transform_exec;
+ ot->modal = transform_modal;
+ ot->cancel = transform_cancel;
+ ot->poll = ED_operator_sequencer_active;
+
+ RNA_def_float_vector(ot->srna, "value", 2, VecOne, -FLT_MAX, FLT_MAX, "angle", "", -FLT_MAX, FLT_MAX);
+
+ Properties_Snapping(ot, 0, 0);
}
-void TFM_OT_transform(struct wmOperatorType *ot)
+void TRANSFORM_OT_transform(struct wmOperatorType *ot)
{
static EnumPropertyItem transform_mode_types[] = {
{TFM_INIT, "INIT", 0, "Init", ""},
@@ -656,13 +736,14 @@ void TFM_OT_transform(struct wmOperatorType *ot)
{TFM_BWEIGHT, "BWEIGHT", 0, "Bweight", ""},
{TFM_ALIGN, "ALIGN", 0, "Align", ""},
{TFM_EDGE_SLIDE, "EDGESLIDE", 0, "Edge Slide", ""},
+ {TFM_SEQ_SLIDE, "SEQSLIDE", 0, "Sequence Slide", ""},
{0, NULL, 0, NULL, NULL}
};
/* identifiers */
ot->name = "Transform";
ot->description= "Transform selected items by mode type.";
- ot->idname = "TFM_OT_transform";
+ ot->idname = "TRANSFORM_OT_transform";
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
/* api callbacks */
@@ -684,130 +765,144 @@ void TFM_OT_transform(struct wmOperatorType *ot)
void transform_operatortypes(void)
{
- WM_operatortype_append(TFM_OT_transform);
- WM_operatortype_append(TFM_OT_translate);
- WM_operatortype_append(TFM_OT_rotate);
- WM_operatortype_append(TFM_OT_tosphere);
- WM_operatortype_append(TFM_OT_resize);
- WM_operatortype_append(TFM_OT_shear);
- WM_operatortype_append(TFM_OT_warp);
- WM_operatortype_append(TFM_OT_shrink_fatten);
- WM_operatortype_append(TFM_OT_tilt);
- WM_operatortype_append(TFM_OT_trackball);
- WM_operatortype_append(TFM_OT_mirror);
- WM_operatortype_append(TFM_OT_edge_slide);
+ TransformModeItem *tmode;
- WM_operatortype_append(TFM_OT_select_orientation);
- WM_operatortype_append(TFM_OT_create_orientation);
- WM_operatortype_append(TFM_OT_delete_orientation);
+ for (tmode = transform_modes; tmode->idname; tmode++)
+ {
+ WM_operatortype_append(tmode->opfunc);
+ }
+
+ WM_operatortype_append(TRANSFORM_OT_transform);
+
+ WM_operatortype_append(TRANSFORM_OT_select_orientation);
+ WM_operatortype_append(TRANSFORM_OT_create_orientation);
+ WM_operatortype_append(TRANSFORM_OT_delete_orientation);
+
+ WM_operatortype_append(TRANSFORM_OT_snap_type);
}
-void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *keymap, int spaceid)
+void transform_keymap_for_space(wmKeyConfig *keyconf, wmKeyMap *keymap, int spaceid)
{
wmKeyMapItem *km;
+ wmKeyMap *modalmap;
/* transform.c, only adds modal map once, checks if it's there */
- transform_modal_keymap(keyconf);
+ modalmap = transform_modal_keymap(keyconf);
+
+ /* assign map to operators only the first time */
+ if (modalmap) {
+ TransformModeItem *tmode;
+
+ for (tmode = transform_modes; tmode->idname; tmode++)
+ {
+ WM_modalkeymap_assign(modalmap, tmode->idname);
+ }
+ WM_modalkeymap_assign(modalmap, "TRANSFORM_OT_transform");
+ }
switch(spaceid)
{
case SPACE_VIEW3D:
- km = WM_keymap_add_item(keymap, "TFM_OT_translate", GKEY, KM_PRESS, 0, 0);
+ km = WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0);
- km= WM_keymap_add_item(keymap, "TFM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0);
+ km= WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_S, KM_ANY, 0, 0);
- km = WM_keymap_add_item(keymap, "TFM_OT_rotate", RKEY, KM_PRESS, 0, 0);
+ km = WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0);
- km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0);
+ km = WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0);
- km = WM_keymap_add_item(keymap, "TFM_OT_warp", WKEY, KM_PRESS, KM_SHIFT, 0);
+ km = WM_keymap_add_item(keymap, OP_WARP, WKEY, KM_PRESS, KM_SHIFT, 0);
- km = WM_keymap_add_item(keymap, "TFM_OT_tosphere", SKEY, KM_PRESS, KM_ALT|KM_SHIFT, 0);
+ km = WM_keymap_add_item(keymap, OP_TOSPHERE, SKEY, KM_PRESS, KM_ALT|KM_SHIFT, 0);
- km = WM_keymap_add_item(keymap, "TFM_OT_shear", SKEY, KM_PRESS, KM_ALT|KM_CTRL|KM_SHIFT, 0);
+ km = WM_keymap_add_item(keymap, OP_SHEAR, SKEY, KM_PRESS, KM_ALT|KM_CTRL|KM_SHIFT, 0);
- km = WM_keymap_add_item(keymap, "TFM_OT_shrink_fatten", SKEY, KM_PRESS, KM_ALT, 0);
+ km = WM_keymap_add_item(keymap, "TRANSFORM_OT_select_orientation", SPACEKEY, KM_PRESS, KM_ALT, 0);
- km = WM_keymap_add_item(keymap, "TFM_OT_tilt", TKEY, KM_PRESS, 0, 0);
+ km = WM_keymap_add_item(keymap, "TRANSFORM_OT_create_orientation", SPACEKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
+ RNA_boolean_set(km->ptr, "use", 1);
- km = WM_keymap_add_item(keymap, "TFM_OT_select_orientation", SPACEKEY, KM_PRESS, KM_ALT, 0);
+ km = WM_keymap_add_item(keymap, OP_MIRROR, MKEY, KM_PRESS, KM_CTRL, 0);
- km = WM_keymap_add_item(keymap, "TFM_OT_create_orientation", SPACEKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
- RNA_boolean_set(km->ptr, "use", 1);
+ km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_string_set(km->ptr, "path", "tool_settings.snap");
- km = WM_keymap_add_item(keymap, "TFM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0);
+ km = WM_keymap_add_item(keymap, "TRANSFORM_OT_snap_type", TABKEY, KM_PRESS, KM_SHIFT|KM_CLICK, 0);
break;
case SPACE_ACTION:
- km= WM_keymap_add_item(keymap, "TFM_OT_transform", GKEY, KM_PRESS, 0, 0);
+ km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", GKEY, KM_PRESS, 0, 0);
RNA_int_set(km->ptr, "mode", TFM_TIME_TRANSLATE);
- km= WM_keymap_add_item(keymap, "TFM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0);
+ km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0);
RNA_int_set(km->ptr, "mode", TFM_TIME_TRANSLATE);
- km= WM_keymap_add_item(keymap, "TFM_OT_transform", EKEY, KM_PRESS, 0, 0);
+ km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EKEY, KM_PRESS, 0, 0);
RNA_int_set(km->ptr, "mode", TFM_TIME_EXTEND);
- km= WM_keymap_add_item(keymap, "TFM_OT_transform", SKEY, KM_PRESS, 0, 0);
+ km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, 0, 0);
RNA_int_set(km->ptr, "mode", TFM_TIME_SCALE);
- km= WM_keymap_add_item(keymap, "TFM_OT_transform", TKEY, KM_PRESS, 0, 0);
+ km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", TKEY, KM_PRESS, 0, 0);
RNA_int_set(km->ptr, "mode", TFM_TIME_SLIDE);
break;
case SPACE_IPO:
- km= WM_keymap_add_item(keymap, "TFM_OT_translate", GKEY, KM_PRESS, 0, 0);
+ km= WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0);
- km= WM_keymap_add_item(keymap, "TFM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0);
+ km= WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_S, KM_ANY, 0, 0);
// XXX the 'mode' identifier here is not quite right
- km= WM_keymap_add_item(keymap, "TFM_OT_transform", EKEY, KM_PRESS, 0, 0);
+ km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EKEY, KM_PRESS, 0, 0);
RNA_int_set(km->ptr, "mode", TFM_TIME_EXTEND);
- km = WM_keymap_add_item(keymap, "TFM_OT_rotate", RKEY, KM_PRESS, 0, 0);
+ km = WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0);
- km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0);
+ km = WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0);
break;
case SPACE_NLA:
- km= WM_keymap_add_item(keymap, "TFM_OT_transform", GKEY, KM_PRESS, 0, 0);
+ km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", GKEY, KM_PRESS, 0, 0);
RNA_int_set(km->ptr, "mode", TFM_TRANSLATION);
- km= WM_keymap_add_item(keymap, "TFM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0);
+ km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0);
RNA_int_set(km->ptr, "mode", TFM_TRANSLATION);
- km= WM_keymap_add_item(keymap, "TFM_OT_transform", EKEY, KM_PRESS, 0, 0);
+ km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EKEY, KM_PRESS, 0, 0);
RNA_int_set(km->ptr, "mode", TFM_TIME_EXTEND);
- km= WM_keymap_add_item(keymap, "TFM_OT_transform", SKEY, KM_PRESS, 0, 0);
+ km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, 0, 0);
RNA_int_set(km->ptr, "mode", TFM_TIME_SCALE);
break;
case SPACE_NODE:
- km= WM_keymap_add_item(keymap, "TFM_OT_translate", GKEY, KM_PRESS, 0, 0);
+ km= WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0);
- km= WM_keymap_add_item(keymap, "TFM_OT_translate", EVT_TWEAK_A, KM_ANY, 0, 0);
- km= WM_keymap_add_item(keymap, "TFM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0);
+ km= WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_A, KM_ANY, 0, 0);
+ km= WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_S, KM_ANY, 0, 0);
- km = WM_keymap_add_item(keymap, "TFM_OT_rotate", RKEY, KM_PRESS, 0, 0);
+ km = WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0);
- km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0);
+ km = WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0);
break;
case SPACE_SEQ:
- km= WM_keymap_add_item(keymap, "TFM_OT_translate", GKEY, KM_PRESS, 0, 0);
+ km= WM_keymap_add_item(keymap, OP_SEQ_SLIDE, GKEY, KM_PRESS, 0, 0);
- km= WM_keymap_add_item(keymap, "TFM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0);
+ km= WM_keymap_add_item(keymap, OP_SEQ_SLIDE, EVT_TWEAK_S, KM_ANY, 0, 0);
- km= WM_keymap_add_item(keymap, "TFM_OT_transform", EKEY, KM_PRESS, 0, 0);
+ km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EKEY, KM_PRESS, 0, 0);
RNA_int_set(km->ptr, "mode", TFM_TIME_EXTEND);
break;
case SPACE_IMAGE:
- km = WM_keymap_add_item(keymap, "TFM_OT_translate", GKEY, KM_PRESS, 0, 0);
+ km = WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0);
+
+ km= WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_S, KM_ANY, 0, 0);
- km= WM_keymap_add_item(keymap, "TFM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0);
+ km = WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0);
- km = WM_keymap_add_item(keymap, "TFM_OT_rotate", RKEY, KM_PRESS, 0, 0);
+ km = WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0);
- km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0);
+ km = WM_keymap_add_item(keymap, "TRANSFORM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0);
- km = WM_keymap_add_item(keymap, "TFM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0);
+ km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_string_set(km->ptr, "path", "tool_settings.snap");
break;
default:
break;
diff --git a/source/blender/editors/transform/transform_orientations.c b/source/blender/editors/transform/transform_orientations.c
index ccc969008b0..6467107e6db 100644
--- a/source/blender/editors/transform/transform_orientations.c
+++ b/source/blender/editors/transform/transform_orientations.c
@@ -524,9 +524,10 @@ void initTransformOrientation(bContext *C, TransInfo *t)
case V3D_MANIP_GIMBAL:
unit_m3(t->spacemtx);
- if(ob)
- gimbal_axis(ob, t->spacemtx);
- break;
+ if (gimbal_axis(ob, t->spacemtx)) {
+ break;
+ }
+ /* no gimbal fallthrough to normal */
case V3D_MANIP_NORMAL:
if(obedit || (ob && ob->mode & OB_MODE_POSE)) {
strcpy(t->spacename, "normal");
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c
index 354b6920b7a..50c4bc1a416 100644
--- a/source/blender/editors/transform/transform_snap.c
+++ b/source/blender/editors/transform/transform_snap.c
@@ -92,7 +92,7 @@
/********************* PROTOTYPES ***********************/
-void setSnappingCallback(TransInfo *t, short snap_target);
+void setSnappingCallback(TransInfo *t);
void ApplySnapTranslation(TransInfo *t, float vec[3]);
void ApplySnapRotation(TransInfo *t, float *vec);
@@ -125,10 +125,20 @@ int BIF_snappingSupported(Object *obedit)
return status;
}
+int validSnap(TransInfo *t)
+{
+ return (t->tsnap.status & (POINT_INIT|TARGET_INIT)) == (POINT_INIT|TARGET_INIT) ||
+ (t->tsnap.status & (MULTI_POINTS|TARGET_INIT)) == (MULTI_POINTS|TARGET_INIT);
+}
+
+int activeSnap(TransInfo *t)
+{
+ return (t->modifiers & (MOD_SNAP|MOD_SNAP_INVERT)) == MOD_SNAP || (t->modifiers & (MOD_SNAP|MOD_SNAP_INVERT)) == MOD_SNAP_INVERT;
+}
+
void drawSnapping(const struct bContext *C, TransInfo *t)
{
- if ((t->tsnap.status & (SNAP_ON|POINT_INIT|TARGET_INIT)) == (SNAP_ON|POINT_INIT|TARGET_INIT) &&
- (t->modifiers & MOD_SNAP_GEARS))
+ if (validSnap(t) && activeSnap(t))
{
char col[4] = {1, 0, 1};
@@ -136,6 +146,7 @@ void drawSnapping(const struct bContext *C, TransInfo *t)
glColor4ub(col[0], col[1], col[2], 128);
if (t->spacetype == SPACE_VIEW3D) {
+ TransSnapPoint *p;
View3D *v3d = CTX_wm_view3d(C);
RegionView3D *rv3d = CTX_wm_region_view3d(C);
float tmat[4][4], imat[4][4];
@@ -143,14 +154,18 @@ void drawSnapping(const struct bContext *C, TransInfo *t)
glDisable(GL_DEPTH_TEST);
- size = get_drawsize(t->ar, t->tsnap.snapPoint);
-
- size *= 0.5f * UI_GetThemeValuef(TH_VERTEX_SIZE);
+ size = 0.5f * UI_GetThemeValuef(TH_VERTEX_SIZE);
copy_m4_m4(tmat, rv3d->viewmat);
invert_m4_m4(imat, tmat);
- drawcircball(GL_LINE_LOOP, t->tsnap.snapPoint, size, imat);
+ for (p = t->tsnap.points.first; p; p = p->next) {
+ drawcircball(GL_LINE_LOOP, p->co, size * get_drawsize(t->ar, p->co), imat);
+ }
+
+ if (t->tsnap.status & POINT_INIT) {
+ drawcircball(GL_LINE_LOOP, t->tsnap.snapPoint, size * get_drawsize(t->ar, t->tsnap.snapPoint), imat);
+ }
/* draw normal if needed */
if (usingSnappingNormal(t) && validSnappingNormal(t))
@@ -207,7 +222,8 @@ void drawSnapping(const struct bContext *C, TransInfo *t)
int handleSnapping(TransInfo *t, wmEvent *event)
{
int status = 0;
-
+
+#if 0 // XXX need a proper selector for all snap mode
if (BIF_snappingSupported(t->obedit) && event->type == TABKEY && event->shift)
{
/* toggle snap and reinit */
@@ -215,6 +231,7 @@ int handleSnapping(TransInfo *t, wmEvent *event)
initSnapping(t, NULL);
status = 1;
}
+#endif
return status;
}
@@ -222,7 +239,7 @@ int handleSnapping(TransInfo *t, wmEvent *event)
void applyProject(TransInfo *t)
{
/* XXX FLICKER IN OBJECT MODE */
- if ((t->tsnap.project) && (t->tsnap.status & SNAP_ON) && (t->modifiers & MOD_SNAP_GEARS))
+ if ((t->tsnap.project) && activeSnap(t))
{
TransData *td = t->data;
float tvec[3];
@@ -258,7 +275,7 @@ void applyProject(TransInfo *t)
project_float(t->ar, iloc, mval);
- if (snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.mode))
+ if (snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.target))
{
// if(t->flag & (T_EDIT|T_POSE)) {
// mul_m4_v3(imat, loc);
@@ -288,21 +305,20 @@ void applySnapping(TransInfo *t, float *vec)
t->tsnap.applySnap(t, vec);
}
- else if ((t->tsnap.status & SNAP_ON) &&
- (t->modifiers & MOD_SNAP_GEARS))
+ else if ((t->tsnap.mode != SCE_SNAP_MODE_INCREMENT) && activeSnap(t))
{
double current = PIL_check_seconds_timer();
// Time base quirky code to go around findnearest slowness
/* !TODO! add exception for object mode, no need to slow it down then */
- if (current - t->tsnap.last >= 0.1)
+ if (current - t->tsnap.last >= 0.01)
{
t->tsnap.calcSnap(t, vec);
t->tsnap.targetSnap(t);
t->tsnap.last = current;
}
- if ((t->tsnap.status & (POINT_INIT|TARGET_INIT)) == (POINT_INIT|TARGET_INIT))
+ if (validSnap(t))
{
t->tsnap.applySnap(t, vec);
}
@@ -312,10 +328,11 @@ void applySnapping(TransInfo *t, float *vec)
void resetSnapping(TransInfo *t)
{
t->tsnap.status = 0;
- t->tsnap.mode = 0;
t->tsnap.align = 0;
- t->tsnap.modePoint = 0;
- t->tsnap.modeTarget = 0;
+ t->tsnap.project = 0;
+ t->tsnap.mode = 0;
+ t->tsnap.modeSelect = 0;
+ t->tsnap.target = 0;
t->tsnap.last = 0;
t->tsnap.applySnap = NULL;
@@ -331,7 +348,7 @@ int usingSnappingNormal(TransInfo *t)
int validSnappingNormal(TransInfo *t)
{
- if ((t->tsnap.status & (POINT_INIT|TARGET_INIT)) == (POINT_INIT|TARGET_INIT))
+ if (validSnap(t))
{
if (dot_v3v3(t->tsnap.snapNormal, t->tsnap.snapNormal) > 0)
{
@@ -342,125 +359,134 @@ int validSnappingNormal(TransInfo *t)
return 0;
}
-void initSnapping(TransInfo *t, wmOperator *op)
+void initSnappingMode(TransInfo *t)
{
ToolSettings *ts = t->settings;
Object *obedit = t->obedit;
Scene *scene = t->scene;
- int snapping = 0;
- short snap_mode = t->settings->snap_target;
-
- resetSnapping(t);
-
- if (op && RNA_struct_find_property(op->ptr, "snap") && RNA_property_is_set(op->ptr, "snap"))
- {
- if (RNA_boolean_get(op->ptr, "snap"))
- {
- snapping = 1;
- snap_mode = RNA_enum_get(op->ptr, "snap_mode");
-
- t->tsnap.status |= SNAP_FORCED|POINT_INIT;
- RNA_float_get_array(op->ptr, "snap_point", t->tsnap.snapPoint);
-
- /* snap align only defined in specific cases */
- if (RNA_struct_find_property(op->ptr, "snap_align"))
- {
- t->tsnap.align = RNA_boolean_get(op->ptr, "snap_align");
- RNA_float_get_array(op->ptr, "snap_normal", t->tsnap.snapNormal);
- normalize_v3(t->tsnap.snapNormal);
- }
- if (RNA_struct_find_property(op->ptr, "snap_project"))
- {
- t->tsnap.project = RNA_boolean_get(op->ptr, "snap_project");
- }
- }
- }
- else
- {
- snapping = ((ts->snap_flag & SCE_SNAP) == SCE_SNAP);
- t->tsnap.align = ((t->settings->snap_flag & SCE_SNAP_ROTATE) == SCE_SNAP_ROTATE);
- t->tsnap.project = ((t->settings->snap_flag & SCE_SNAP_PROJECT) == SCE_SNAP_PROJECT);
- }
-
/* force project off when not supported */
if (ts->snap_mode != SCE_SNAP_MODE_FACE)
{
t->tsnap.project = 0;
}
-
+
+ t->tsnap.mode = ts->snap_mode;
+
if ((t->spacetype == SPACE_VIEW3D || t->spacetype == SPACE_IMAGE) && // Only 3D view or UV
- (t->flag & T_CAMERA) == 0) { // Not with camera selected
- setSnappingCallback(t, snap_mode);
+ (t->flag & T_CAMERA) == 0) { // Not with camera selected in camera view
+ setSnappingCallback(t);
/* Edit mode */
if (t->tsnap.applySnap != NULL && // A snapping function actually exist
- (snapping) && // Only if the snap flag is on
(obedit != NULL && ELEM3(obedit->type, OB_MESH, OB_ARMATURE, OB_CURVE)) ) // Temporary limited to edit mode meshes, armature, curves
{
- t->tsnap.status |= SNAP_ON;
- t->tsnap.modePoint = SNAP_GEO;
-
if (t->flag & T_PROP_EDIT)
{
- t->tsnap.mode = SNAP_NOT_OBEDIT;
+ t->tsnap.modeSelect = SNAP_NOT_OBEDIT;
}
else
{
- t->tsnap.mode = SNAP_ALL;
+ t->tsnap.modeSelect = SNAP_ALL;
}
}
/* Particles edit mode*/
else if (t->tsnap.applySnap != NULL && // A snapping function actually exist
- (snapping) && // Only if the snap flag is on
- (obedit == NULL && BASACT->object && BASACT->object->mode & OB_MODE_PARTICLE_EDIT ))
+ (obedit == NULL && BASACT && BASACT->object && BASACT->object->mode & OB_MODE_PARTICLE_EDIT ))
{
- t->tsnap.status |= SNAP_ON;
- t->tsnap.modePoint = SNAP_GEO;
- t->tsnap.mode = SNAP_ALL;
+ t->tsnap.modeSelect = SNAP_ALL;
}
/* Object mode */
else if (t->tsnap.applySnap != NULL && // A snapping function actually exist
- (snapping) && // Only if the snap flag is on
(obedit == NULL) ) // Object Mode
{
- t->tsnap.status |= SNAP_ON;
- t->tsnap.modePoint = SNAP_GEO;
- t->tsnap.mode = SNAP_NOT_SELECTED;
+ t->tsnap.modeSelect = SNAP_NOT_SELECTED;
}
else
- {
+ {
/* Grid if snap is not possible */
- t->tsnap.modePoint = SNAP_GRID;
+ t->tsnap.mode = SCE_SNAP_MODE_INCREMENT;
}
}
else
{
/* Always grid outside of 3D view */
- t->tsnap.modePoint = SNAP_GRID;
+ t->tsnap.mode = SCE_SNAP_MODE_INCREMENT;
+ }
+}
+
+void initSnapping(TransInfo *t, wmOperator *op)
+{
+ ToolSettings *ts = t->settings;
+ short snap_target = t->settings->snap_target;
+
+ resetSnapping(t);
+
+ /* if snap property exists */
+ if (op && RNA_struct_find_property(op->ptr, "snap") && RNA_property_is_set(op->ptr, "snap"))
+ {
+ if (RNA_boolean_get(op->ptr, "snap"))
+ {
+ t->modifiers |= MOD_SNAP;
+
+ if (RNA_property_is_set(op->ptr, "snap_target"))
+ {
+ snap_target = RNA_enum_get(op->ptr, "snap_target");
+ }
+
+ if (RNA_property_is_set(op->ptr, "snap_point"))
+ {
+ RNA_float_get_array(op->ptr, "snap_point", t->tsnap.snapPoint);
+ t->tsnap.status |= SNAP_FORCED|POINT_INIT;
+ }
+
+ /* snap align only defined in specific cases */
+ if (RNA_struct_find_property(op->ptr, "snap_align"))
+ {
+ t->tsnap.align = RNA_boolean_get(op->ptr, "snap_align");
+ RNA_float_get_array(op->ptr, "snap_normal", t->tsnap.snapNormal);
+ normalize_v3(t->tsnap.snapNormal);
+ }
+
+ if (RNA_struct_find_property(op->ptr, "snap_project"))
+ {
+ t->tsnap.project = RNA_boolean_get(op->ptr, "snap_project");
+ }
+ }
}
+ /* use scene defaults only when transform is modal */
+ else if (t->flag & T_MODAL)
+ {
+ if (ts->snap_flag & SCE_SNAP) {
+ t->modifiers |= MOD_SNAP;
+ }
+
+ t->tsnap.align = ((t->settings->snap_flag & SCE_SNAP_ROTATE) == SCE_SNAP_ROTATE);
+ t->tsnap.project = ((t->settings->snap_flag & SCE_SNAP_PROJECT) == SCE_SNAP_PROJECT);
+ t->tsnap.peel = ((t->settings->snap_flag & SCE_SNAP_PROJECT) == SCE_SNAP_PROJECT);
+ }
+
+ t->tsnap.target = snap_target;
+
+ initSnappingMode(t);
}
-void setSnappingCallback(TransInfo *t, short snap_target)
+void setSnappingCallback(TransInfo *t)
{
t->tsnap.calcSnap = CalcSnapGeometry;
- switch(snap_target)
+ switch(t->tsnap.target)
{
case SCE_SNAP_TARGET_CLOSEST:
- t->tsnap.modeTarget = SNAP_CLOSEST;
t->tsnap.targetSnap = TargetSnapClosest;
break;
case SCE_SNAP_TARGET_CENTER:
- t->tsnap.modeTarget = SNAP_CENTER;
t->tsnap.targetSnap = TargetSnapCenter;
break;
case SCE_SNAP_TARGET_MEDIAN:
- t->tsnap.modeTarget = SNAP_MEDIAN;
t->tsnap.targetSnap = TargetSnapMedian;
break;
case SCE_SNAP_TARGET_ACTIVE:
- t->tsnap.modeTarget = SNAP_ACTIVE;
t->tsnap.targetSnap = TargetSnapActive;
break;
@@ -477,8 +503,8 @@ void setSnappingCallback(TransInfo *t, short snap_target)
t->tsnap.distance = RotationBetween;
// Can't do TARGET_CENTER with rotation, use TARGET_MEDIAN instead
- if (snap_target == SCE_SNAP_TARGET_CENTER) {
- t->tsnap.modeTarget = SNAP_MEDIAN;
+ if (t->tsnap.target == SCE_SNAP_TARGET_CENTER) {
+ t->tsnap.target = SCE_SNAP_TARGET_MEDIAN;
t->tsnap.targetSnap = TargetSnapMedian;
}
break;
@@ -487,8 +513,8 @@ void setSnappingCallback(TransInfo *t, short snap_target)
t->tsnap.distance = ResizeBetween;
// Can't do TARGET_CENTER with resize, use TARGET_MEDIAN instead
- if (snap_target == SCE_SNAP_TARGET_CENTER) {
- t->tsnap.modeTarget = SNAP_MEDIAN;
+ if (t->tsnap.target == SCE_SNAP_TARGET_CENTER) {
+ t->tsnap.target = SCE_SNAP_TARGET_MEDIAN;
t->tsnap.targetSnap = TargetSnapMedian;
}
break;
@@ -498,30 +524,82 @@ void setSnappingCallback(TransInfo *t, short snap_target)
}
}
+void addSnapPoint(TransInfo *t)
+{
+ if (t->tsnap.status & POINT_INIT) {
+ TransSnapPoint *p = MEM_callocN(sizeof(TransSnapPoint), "SnapPoint");
+
+ VECCOPY(p->co, t->tsnap.snapPoint);
+
+ BLI_addtail(&t->tsnap.points, p);
+
+ t->tsnap.status |= MULTI_POINTS;
+ }
+}
+
+void removeSnapPoint(TransInfo *t)
+{
+ if (t->tsnap.status & MULTI_POINTS) {
+ BLI_freelinkN(&t->tsnap.points, t->tsnap.points.last);
+
+ if (t->tsnap.points.first == NULL)
+ t->tsnap.status &= ~MULTI_POINTS;
+ }
+}
+
+void getSnapPoint(TransInfo *t, float vec[3])
+{
+ if (t->tsnap.points.first) {
+ TransSnapPoint *p;
+ int total = 0;
+
+ vec[0] = vec[1] = vec[2] = 0;
+
+ for (p = t->tsnap.points.first; p; p = p->next, total++) {
+ add_v3_v3(vec, p->co);
+ }
+
+ if (t->tsnap.status & POINT_INIT) {
+ add_v3_v3(vec, t->tsnap.snapPoint);
+ total++;
+ }
+
+ mul_v3_fl(vec, 1.0f / total);
+ } else {
+ VECCOPY(vec, t->tsnap.snapPoint)
+ }
+}
+
/********************** APPLY **************************/
void ApplySnapTranslation(TransInfo *t, float vec[3])
{
- sub_v3_v3v3(vec, t->tsnap.snapPoint, t->tsnap.snapTarget);
+ float point[3];
+ getSnapPoint(t, point);
+ sub_v3_v3v3(vec, point, t->tsnap.snapTarget);
}
void ApplySnapRotation(TransInfo *t, float *vec)
{
- if (t->tsnap.modeTarget == SNAP_CLOSEST) {
+ if (t->tsnap.target == SCE_SNAP_TARGET_CLOSEST) {
*vec = t->tsnap.dist;
}
else {
- *vec = RotationBetween(t, t->tsnap.snapTarget, t->tsnap.snapPoint);
+ float point[3];
+ getSnapPoint(t, point);
+ *vec = RotationBetween(t, t->tsnap.snapTarget, point);
}
}
void ApplySnapResize(TransInfo *t, float vec[3])
{
- if (t->tsnap.modeTarget == SNAP_CLOSEST) {
+ if (t->tsnap.target == SCE_SNAP_TARGET_CLOSEST) {
vec[0] = vec[1] = vec[2] = t->tsnap.dist;
}
else {
- vec[0] = vec[1] = vec[2] = ResizeBetween(t, t->tsnap.snapTarget, t->tsnap.snapPoint);
+ float point[3];
+ getSnapPoint(t, point);
+ vec[0] = vec[1] = vec[2] = ResizeBetween(t, t->tsnap.snapTarget, point);
}
}
@@ -629,7 +707,7 @@ void CalcSnapGeometry(TransInfo *t, float *vec)
mval[0] = t->mval[0];
mval[1] = t->mval[1];
- if (t->settings->snap_mode == SCE_SNAP_MODE_VOLUME)
+ if (t->tsnap.mode == SCE_SNAP_MODE_VOLUME)
{
ListBase depth_peels;
DepthPeel *p1, *p2;
@@ -722,7 +800,7 @@ void CalcSnapGeometry(TransInfo *t, float *vec)
}
else
{
- found = snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.mode);
+ found = snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.modeSelect);
}
if (found == 1)
@@ -761,8 +839,6 @@ void CalcSnapGeometry(TransInfo *t, float *vec)
t->tsnap.snapPoint[0] *= aspx;
t->tsnap.snapPoint[1] *= aspy;
- mul_m4_v3(t->obedit->obmat, t->tsnap.snapPoint);
-
t->tsnap.status |= POINT_INIT;
}
else
@@ -821,7 +897,7 @@ void TargetSnapActive(TransInfo *t)
/* No active, default to median */
else
{
- t->tsnap.modeTarget = SNAP_MEDIAN;
+ t->tsnap.target = SCE_SNAP_TARGET_MEDIAN;
t->tsnap.targetSnap = TargetSnapMedian;
TargetSnapMedian(t);
}
@@ -1845,7 +1921,7 @@ void snapGrid(TransInfo *t, float *val) {
GearsType action;
// Only do something if using Snap to Grid
- if (t->tsnap.modePoint != SNAP_GRID)
+ if (t->tsnap.mode != SCE_SNAP_MODE_INCREMENT)
return;
if(t->mode==TFM_ROTATION || t->mode==TFM_WARP || t->mode==TFM_TILT || t->mode==TFM_TRACKBALL || t->mode==TFM_BONE_ROLL)
@@ -1856,10 +1932,10 @@ void snapGrid(TransInfo *t, float *val) {
invert = U.flag & USER_AUTOGRABGRID;
if(invert) {
- action = (t->modifiers & MOD_SNAP_GEARS) ? NO_GEARS: BIG_GEARS;
+ action = activeSnap(t) ? NO_GEARS: BIG_GEARS;
}
else {
- action = (t->modifiers & MOD_SNAP_GEARS) ? BIG_GEARS : NO_GEARS;
+ action = activeSnap(t) ? BIG_GEARS : NO_GEARS;
}
if (action == BIG_GEARS && (t->modifiers & MOD_PRECISION)) {
diff --git a/source/blender/editors/util/ed_util.c b/source/blender/editors/util/ed_util.c
index 93760ab77e3..70b405214cd 100644
--- a/source/blender/editors/util/ed_util.c
+++ b/source/blender/editors/util/ed_util.c
@@ -60,7 +60,7 @@ void ED_editors_exit(bContext *C)
/* frees all editmode undos */
undo_editmode_clear();
- undo_imagepaint_clear();
+ ED_undo_paint_free();
for(sce=G.main->scene.first; sce; sce= sce->id.next) {
if(sce->obedit) {
@@ -87,9 +87,16 @@ void ED_editors_exit(bContext *C)
// else if(ob->type==OB_MBALL)
// BLI_freelistN(&editelems);
// free_editLatt();
- // free_posebuf();
+ // free_posebuf(); // XXX this is still a global...
}
}
+ else if(sce->basact && sce->basact->object) {
+ Object *ob= sce->basact->object;
+
+ /* if weight-painting is on, free mesh octree data */
+ if(ob->mode & OB_MODE_WEIGHT_PAINT)
+ mesh_octree_table(ob, NULL, NULL, 'e');
+ }
}
}
diff --git a/source/blender/editors/util/undo.c b/source/blender/editors/util/undo.c
index d26f7a7a484..e20c88ba41f 100644
--- a/source/blender/editors/util/undo.c
+++ b/source/blender/editors/util/undo.c
@@ -124,7 +124,7 @@ static int ed_undo_step(bContext *C, int step, const char *undoname)
SpaceImage *sima= (SpaceImage *)sa->spacedata.first;
if((obact && obact->mode & OB_MODE_TEXTURE_PAINT) || sima->flag & SI_DRAWTOOL) {
- undo_imagepaint_step(step);
+ ED_undo_paint_step(C, UNDO_PAINT_IMAGE, step);
WM_event_add_notifier(C, NC_WINDOW, NULL);
return OPERATOR_FINISHED;
@@ -146,7 +146,9 @@ static int ed_undo_step(bContext *C, int step, const char *undoname)
int do_glob_undo= 0;
if(obact && obact->mode & OB_MODE_TEXTURE_PAINT)
- undo_imagepaint_step(step);
+ ED_undo_paint_step(C, UNDO_PAINT_IMAGE, step);
+ else if(obact && obact->mode & OB_MODE_SCULPT)
+ ED_undo_paint_step(C, UNDO_PAINT_MESH, step);
else if(obact && obact->mode & OB_MODE_PARTICLE_EDIT) {
if(step==1)
PE_undo(CTX_data_scene(C));
diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c
index 9ac57e24529..dd658f02d35 100644
--- a/source/blender/editors/uvedit/uvedit_ops.c
+++ b/source/blender/editors/uvedit/uvedit_ops.c
@@ -1023,10 +1023,12 @@ static void select_linked(Scene *scene, Image *ima, BMEditMesh *em, float limit[
MLoopUV *luv;
UvVertMap *vmap;
UvMapVert *vlist, *iterv, *startv;
- int a, i, nverts, j, stacksize= 0, *stack;
+ int a, i, nverts, stacksize= 0, *stack;
char *flag;
+ EDBM_init_index_arrays(em, 0, 0, 1); /* we can use this too */
vmap= EDBM_make_uv_vert_map(em, 1, 1, limit);
+
if(vmap == NULL)
return;
@@ -1069,6 +1071,8 @@ static void select_linked(Scene *scene, Image *ima, BMEditMesh *em, float limit[
}
while(stacksize > 0) {
+ int j;
+
stacksize--;
a= stack[stacksize];
@@ -1124,7 +1128,7 @@ static void select_linked(Scene *scene, Image *ima, BMEditMesh *em, float limit[
}
}
}
- else if(extend && hit) {
+ else {
a = 0;
BM_ITER(efa, &iter, em->bm, BM_FACES_OF_MESH, NULL) {
BM_ITER(l, &liter, em->bm, BM_LOOPS_OF_FACE, efa) {
@@ -1170,6 +1174,7 @@ static void select_linked(Scene *scene, Image *ima, BMEditMesh *em, float limit[
MEM_freeN(stack);
MEM_freeN(flag);
EDBM_free_uv_vert_map(vmap);
+ EM_free_index_arrays();
}
/* ******************** align operator **************** */
@@ -1531,7 +1536,7 @@ void UV_OT_select_inverse(wmOperatorType *ot)
/* ******************** (de)select all operator **************** */
-static int de_select_all_exec(bContext *C, wmOperator *op)
+static int select_all_exec(bContext *C, wmOperator *op)
{
Scene *scene;
ToolSettings *ts;
@@ -1543,6 +1548,7 @@ static int de_select_all_exec(bContext *C, wmOperator *op)
Image *ima;
MTexPoly *tf;
MLoopUV *luv;
+ int action = RNA_enum_get(op->ptr, "action");
int sel = 1;
scene= CTX_data_scene(C);
@@ -1552,21 +1558,38 @@ static int de_select_all_exec(bContext *C, wmOperator *op)
ima= CTX_data_edit_image(C);
if(ts->uv_flag & UV_SYNC_SELECTION) {
- EDBM_toggle_select_all(((Mesh*)obedit->data)->edit_btmesh);
+
+ switch (action) {
+ case SEL_TOGGLE:
+ EDBM_toggle_select_all(((Mesh*)obedit->data)->edit_btmesh);
+ break;
+ case SEL_SELECT:
+ EDBM_set_flag_all(em, BM_SELECT);
+ break;
+ case SEL_DESELECT:
+ EDBM_clear_flag_all(em, BM_SELECT);
+ break;
+ case SEL_INVERT:
+ EDBM_select_swap(em);
+ break;
+ }
}
else {
- BM_ITER(efa, &iter, em->bm, BM_FACES_OF_MESH, NULL) {
- tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
-
- if(!uvedit_face_visible(scene, ima, efa, tf))
- continue;
+ if (action == SEL_TOGGLE) {
+ action = SEL_SELECT;
+ BM_ITER(efa, &iter, em->bm, BM_FACES_OF_MESH, NULL) {
+ tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
+
+ if(!uvedit_face_visible(scene, ima, efa, tf))
+ continue;
- BM_ITER(l, &liter, em->bm, BM_LOOPS_OF_FACE, efa) {
- luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
+ BM_ITER(l, &liter, em->bm, BM_LOOPS_OF_FACE, efa) {
+ luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
- if (luv->flag & MLOOPUV_VERTSEL) {
- sel= 0;
- break;
+ if (luv->flag & MLOOPUV_VERTSEL) {
+ action = SEL_DESELECT;
+ break;
+ }
}
}
}
@@ -1579,10 +1602,23 @@ static int de_select_all_exec(bContext *C, wmOperator *op)
continue;
BM_ITER(l, &liter, em->bm, BM_LOOPS_OF_FACE, efa) {
+ char select_flag;
+
luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
- if (sel) luv->flag |= MLOOPUV_VERTSEL;
- else luv->flag &= ~MLOOPUV_VERTSEL;
+ select_flag = luv->flag & MLOOPUV_VERTSEL;
+
+ switch (action) {
+ case SEL_SELECT:
+ luv->flag |= MLOOPUV_VERTSEL;
+ break;
+ case SEL_DESELECT:
+ luv->flag &= MLOOPUV_VERTSEL;
+ break;
+ case SEL_INVERT:
+ luv->flag ^= MLOOPUV_VERTSEL;
+ break;
+ }
}
}
}
@@ -1592,17 +1628,19 @@ static int de_select_all_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void UV_OT_select_all_toggle(wmOperatorType *ot)
+void UV_OT_select_all(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Select or Deselect All";
- ot->description= "(de)select all UV vertices.";
- ot->idname= "UV_OT_select_all_toggle";
+ ot->description= "Change selection of all UV vertices.";
+ ot->idname= "UV_OT_select_all";
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* api callbacks */
- ot->exec= de_select_all_exec;
+ ot->exec= select_all_exec;
ot->poll= ED_operator_uvedit;
+
+ WM_operator_properties_select_all(ot);
}
/* ******************** mouse select operator **************** */
@@ -2005,7 +2043,7 @@ void UV_OT_select_loop(wmOperatorType *ot)
/* ******************** linked select operator **************** */
-static int select_linked_exec(bContext *C, wmOperator *op)
+static int select_linked_internal(bContext *C, wmOperator *op, wmEvent *event, int pick)
{
SpaceImage *sima= CTX_wm_space_image(C);
Scene *scene= CTX_data_scene(C);
@@ -2016,6 +2054,8 @@ static int select_linked_exec(bContext *C, wmOperator *op)
float limit[2];
int extend;
+ NearestHit hit, *hit_p= NULL;
+
if(ts->uv_flag & UV_SYNC_SELECTION) {
BKE_report(op->reports, RPT_ERROR, "Can't select linked when sync selection is enabled.");
return OPERATOR_CANCELLED;
@@ -2023,7 +2063,31 @@ static int select_linked_exec(bContext *C, wmOperator *op)
extend= RNA_boolean_get(op->ptr, "extend");
uvedit_pixel_to_float(sima, limit, 0.05f);
- select_linked(scene, ima, em, limit, NULL, extend);
+
+ if(pick) {
+ float co[2];
+
+ if(event) {
+ /* invoke */
+ ARegion *ar= CTX_wm_region(C);
+ int x, y;
+
+ x= event->x - ar->winrct.xmin;
+ y= event->y - ar->winrct.ymin;
+
+ UI_view2d_region_to_view(&ar->v2d, x, y, &co[0], &co[1]);
+ RNA_float_set_array(op->ptr, "location", co);
+ }
+ else {
+ /* exec */
+ RNA_float_get_array(op->ptr, "location", co);
+ }
+
+ find_nearest_uv_vert(scene, ima, em, co, NULL, &hit);
+ hit_p= &hit;
+ }
+
+ select_linked(scene, ima, em, limit, hit_p, extend);
DAG_id_flush_update(obedit->data, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data);
@@ -2031,6 +2095,11 @@ static int select_linked_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
+static int select_linked_exec(bContext *C, wmOperator *op)
+{
+ return select_linked_internal(C, op, NULL, 0);
+}
+
void UV_OT_select_linked(wmOperatorType *ot)
{
/* identifiers */
@@ -2048,6 +2117,37 @@ void UV_OT_select_linked(wmOperatorType *ot)
"Extend", "Extend selection rather than clearing the existing selection.");
}
+static int select_linked_pick_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ return select_linked_internal(C, op, event, 1);
+}
+
+static int select_linked_pick_exec(bContext *C, wmOperator *op)
+{
+ return select_linked_internal(C, op, NULL, 1);
+}
+
+void UV_OT_select_linked_pick(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Select Linked Pick";
+ ot->description= "Select all UV vertices linked under the mouse.";
+ ot->idname= "UV_OT_select_linked_pick";
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* api callbacks */
+ ot->invoke= select_linked_pick_invoke;
+ ot->exec= select_linked_pick_exec;
+ ot->poll= ED_operator_uvedit;
+
+ /* properties */
+ RNA_def_boolean(ot->srna, "extend", 0,
+ "Extend", "Extend selection rather than clearing the existing selection.");
+
+ RNA_def_float_vector(ot->srna, "location", 2, NULL, -FLT_MAX, FLT_MAX,
+ "Location", "Mouse location in normalized coordinates, 0.0 to 1.0 is within the image bounds.", -100.0f, 100.0f);
+}
+
/* ******************** unlink selection operator **************** */
static int unlink_selection_exec(bContext *C, wmOperator *op)
@@ -3100,11 +3200,12 @@ void UV_OT_tile_set(wmOperatorType *ot)
void ED_operatortypes_uvedit(void)
{
- WM_operatortype_append(UV_OT_select_all_toggle);
+ WM_operatortype_append(UV_OT_select_all);
WM_operatortype_append(UV_OT_select_inverse);
WM_operatortype_append(UV_OT_select);
WM_operatortype_append(UV_OT_select_loop);
WM_operatortype_append(UV_OT_select_linked);
+ WM_operatortype_append(UV_OT_select_linked_pick);
WM_operatortype_append(UV_OT_unlink_selection);
WM_operatortype_append(UV_OT_select_pinned);
WM_operatortype_append(UV_OT_select_border);
@@ -3139,7 +3240,7 @@ void ED_keymap_uvedit(wmKeyConfig *keyconf)
{
wmKeyMap *keymap;
- keymap= WM_keymap_find(keyconf, "UVEdit", 0, 0);
+ keymap= WM_keymap_find(keyconf, "UV Editor", 0, 0);
keymap->poll= ED_operator_uvedit;
/* pick selection */
@@ -3155,8 +3256,12 @@ void ED_keymap_uvedit(wmKeyConfig *keyconf)
/* selection manipulation */
WM_keymap_add_item(keymap, "UV_OT_select_linked", LKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "UV_OT_select_linked_pick", LKEY, KM_PRESS, 0, 0);
+ RNA_boolean_set(WM_keymap_add_item(keymap, "UV_OT_select_linked", LKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0)->ptr, "extend", TRUE);
+ RNA_boolean_set(WM_keymap_add_item(keymap, "UV_OT_select_linked_pick", LKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "extend", TRUE);
+
WM_keymap_add_item(keymap, "UV_OT_unlink_selection", LKEY, KM_PRESS, KM_ALT, 0);
- WM_keymap_add_item(keymap, "UV_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "UV_OT_select_all", AKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "UV_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "UV_OT_select_pinned", PKEY, KM_PRESS, KM_SHIFT, 0);
@@ -3179,6 +3284,9 @@ void ED_keymap_uvedit(wmKeyConfig *keyconf)
/* cursor */
WM_keymap_add_item(keymap, "UV_OT_cursor_set", ACTIONMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "UV_OT_tile_set", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0);
+
+ /* menus */
+ WM_keymap_add_menu(keymap, "IMAGE_MT_uvs_snap", SKEY, KM_PRESS, KM_SHIFT, 0);
ED_object_generic_keymap(keyconf, keymap, TRUE);
diff --git a/source/blender/editors/uvedit/uvedit_unwrap_ops.c b/source/blender/editors/uvedit/uvedit_unwrap_ops.c
index 1bbed296855..5f472a26eff 100644
--- a/source/blender/editors/uvedit/uvedit_unwrap_ops.c
+++ b/source/blender/editors/uvedit/uvedit_unwrap_ops.c
@@ -33,6 +33,7 @@
#include "MEM_guardedalloc.h"
+#include "DNA_camera_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
@@ -856,7 +857,7 @@ static int unwrap_exec(bContext *C, wmOperator *op)
return OPERATOR_CANCELLED;
}
- handle= construct_param_handle(scene, em, 0, fill_holes, 0, correct_aspect);
+ handle= construct_param_handle(scene, em, 0, fill_holes, 1, correct_aspect);
param_lscm_begin(handle, PARAM_FALSE, method == 0);
param_lscm_solve(handle);
@@ -909,9 +910,35 @@ static void uv_from_view_bounds(float target[2], float source[3], float rotmat[4
target[1] = pv[2];
}
+static void uv_from_camera(float camsize, float xasp, float yasp, float target[2], float source[3], float rotmat[4][4], float cammat[4][4], int persp)
+{
+
+ float pv4[4];
+
+ copy_v3_v3(pv4, source);
+ pv4[3]= 1.0;
+
+ /* rotmat is the object matrix in this case */
+ mul_m4_v4(rotmat, pv4);
+
+ /* cammat is the inverse camera matrix */
+ mul_m4_v4(cammat, pv4);
+
+ if (pv4[2]==0.0f) pv4[2]=0.00001f; /* don't allow div by 0 */
+
+ if (persp&&CAM_ORTHO) {
+ target[0]=((pv4[0]/camsize)*xasp)+0.5f;
+ target[1]=((pv4[1]/camsize)*yasp)+0.5f;
+ }
+ else {
+ target[0]=((-pv4[0]*(camsize/pv4[2])*xasp)/2)+0.5;
+ target[1]=((-pv4[1]*(camsize/pv4[2])*yasp)/2)+0.5;
+ }
+}
+
static void uv_from_view(ARegion *ar, float target[2], float source[3], float rotmat[4][4])
{
- RegionView3D *rv3d= ar->regiondata;
+ RegionView3D *rv3d = ar->regiondata;
float pv[3], pv4[4], dx, dy, x= 0.0, y= 0.0;
mul_m4_v3(rotmat, pv);
@@ -955,21 +982,29 @@ static int from_view_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
+ Camera *camera= NULL;
BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
- ARegion *ar= CTX_wm_region(C);
+ ARegion *ar = CTX_wm_region(C);
+ RegionView3D *rv3d= CTX_wm_region_view3d(C);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
MLoopUV *luv;
- float rotmat[4][4];
+ float invmat[4][4],rotmat[4][4];
+ float xasp, yasp, camsize;
/* add uvs if they don't exist yet */
if(!ED_uvedit_ensure_uvs(C, scene, obedit)) {
return OPERATOR_CANCELLED;
}
+ /* establish the camera object, so we can default to view mapping if anything is wrong with it */
+ if ((rv3d->persp==RV3D_CAMOB) && (scene->camera) && (scene->camera->type==OB_CAMERA)) {
+ camera=scene->camera->data;
+ }
+
if(RNA_boolean_get(op->ptr, "orthographic")) {
- uv_map_rotation_matrix(rotmat, ar->regiondata, obedit, 90.0f, 0.0f, 1.0f);
+ uv_map_rotation_matrix(rotmat, rv3d, obedit, 90.0f, 0.0f, 1.0f);
BM_ITER(efa, &iter, em->bm, BM_FACES_OF_MESH, NULL) {
if (!BM_TestHFlag(efa, BM_SELECT))
@@ -981,6 +1016,39 @@ static int from_view_exec(bContext *C, wmOperator *op)
}
}
}
+ else if (camera) {
+
+ if (camera->type==CAM_PERSP) {
+ camsize=1/tan(DEG2RAD(camera->angle)/2.0f); /* calcs ez as distance from camera plane to viewer */
+ }
+ else {
+ camsize=camera->ortho_scale;
+ }
+
+ if (invert_m4_m4(invmat,scene->camera->obmat)) {
+ copy_m4_m4(rotmat, obedit->obmat);
+
+ /* also make aspect ratio adjustment factors */
+ if (scene->r.xsch > scene->r.ysch) {
+ xasp=1;
+ yasp=(float)(scene->r.xsch)/(float)(scene->r.ysch);
+ }
+ else {
+ xasp=(float)(scene->r.ysch)/(float)(scene->r.xsch);
+ yasp=1;
+ }
+
+ BM_ITER(efa, &iter, em->bm, BM_FACES_OF_MESH, NULL) {
+ if (!BM_TestHFlag(efa, BM_SELECT))
+ continue;
+
+ BM_ITER(l, &liter, em->bm, BM_LOOPS_OF_FACE, efa) {
+ luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
+ uv_from_camera(camsize, xasp, yasp, luv->uv, l->v->co, rotmat, invmat, camera->type);
+ }
+ }
+ }
+ }
else {
copy_m4_m4(rotmat, obedit->obmat);
diff --git a/source/blender/gpu/gpu_buffers.h b/source/blender/gpu/gpu_buffers.h
index 7377046ee63..effff35c000 100644
--- a/source/blender/gpu/gpu_buffers.h
+++ b/source/blender/gpu/gpu_buffers.h
@@ -43,6 +43,7 @@
#endif
struct DerivedMesh;
+struct GHash;
/* V - vertex, N - normal, T - uv, C - color
F - float, UB - unsigned byte */
@@ -124,6 +125,20 @@ void GPU_buffer_free( GPUBuffer *buffer, GPUBufferPool *pool );
GPUDrawObject *GPU_drawobject_new( struct DerivedMesh *dm );
void GPU_drawobject_free( struct DerivedMesh *dm );
+/* Buffers for non-DerivedMesh drawing */
+void *GPU_build_mesh_buffers(struct GHash *map, struct MVert *mvert,
+ struct MFace *mface, int *face_indices,
+ int totface, int *vert_indices, int uniq_verts,
+ int totvert);
+void GPU_update_mesh_buffers(void *buffers, struct MVert *mvert,
+ int *vert_indices, int totvert);
+void *GPU_build_grid_buffers(struct DMGridData **grids,
+ int *grid_indices, int totgrid, int gridsize);
+void GPU_update_grid_buffers(void *buffers_v, struct DMGridData **grids,
+ int *grid_indices, int totgrid, int gridsize);
+void GPU_draw_buffers(void *buffers);
+void GPU_free_buffers(void *buffers);
+
/* called before drawing */
void GPU_vertex_setup( struct DerivedMesh *dm );
void GPU_normal_setup( struct DerivedMesh *dm );
diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c
index a4ca579531c..34726919484 100644
--- a/source/blender/gpu/intern/gpu_buffers.c
+++ b/source/blender/gpu/intern/gpu_buffers.c
@@ -30,6 +30,8 @@
* ***** END GPL LICENSE BLOCK *****
*/
+#include <limits.h>
+#include <stddef.h>
#include <string.h>
#include "GL/glew.h"
@@ -37,6 +39,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_math.h"
+#include "BLI_ghash.h"
#include "DNA_meshdata_types.h"
@@ -377,6 +380,360 @@ void GPU_drawobject_free( DerivedMesh *dm )
dm->drawObject = 0;
}
+/* Convenience struct for building the VBO. */
+typedef struct {
+ float co[3];
+ short no[3];
+} VertexBufferFormat;
+
+typedef struct {
+ /* opengl buffer handles */
+ GLuint vert_buf, index_buf;
+ GLenum index_type;
+
+ /* mesh pointers in case buffer allocation fails */
+ MFace *mface;
+ MVert *mvert;
+ int *face_indices;
+ int totface;
+
+ /* grid pointers */
+ DMGridData **grids;
+ int *grid_indices;
+ int totgrid;
+ int gridsize;
+
+ unsigned int tot_tri, tot_quad;
+} GPU_Buffers;
+
+void GPU_update_mesh_buffers(void *buffers_v, MVert *mvert,
+ int *vert_indices, int totvert)
+{
+ GPU_Buffers *buffers = buffers_v;
+ VertexBufferFormat *vert_data;
+ int i;
+
+ if(buffers->vert_buf) {
+ /* Build VBO */
+ glBindBufferARB(GL_ARRAY_BUFFER_ARB, buffers->vert_buf);
+ glBufferDataARB(GL_ARRAY_BUFFER_ARB,
+ sizeof(VertexBufferFormat) * totvert,
+ NULL, GL_STATIC_DRAW_ARB);
+ vert_data = glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
+
+ if(vert_data) {
+ for(i = 0; i < totvert; ++i) {
+ MVert *v = mvert + vert_indices[i];
+ VertexBufferFormat *out = vert_data + i;
+
+ copy_v3_v3(out->co, v->co);
+ memcpy(out->no, v->no, sizeof(short) * 3);
+ }
+
+ glUnmapBufferARB(GL_ARRAY_BUFFER_ARB);
+ }
+ else {
+ glDeleteBuffersARB(1, &buffers->vert_buf);
+ buffers->vert_buf = 0;
+ }
+
+ glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
+ }
+
+ buffers->mvert = mvert;
+}
+
+void *GPU_build_mesh_buffers(GHash *map, MVert *mvert, MFace *mface,
+ int *face_indices, int totface,
+ int *vert_indices, int tot_uniq_verts,
+ int totvert)
+{
+ GPU_Buffers *buffers;
+ unsigned short *tri_data;
+ int i, j, k, tottri;
+
+ buffers = MEM_callocN(sizeof(GPU_Buffers), "GPU_Buffers");
+ buffers->index_type = GL_UNSIGNED_SHORT;
+
+ /* Count the number of triangles */
+ for(i = 0, tottri = 0; i < totface; ++i)
+ tottri += mface[face_indices[i]].v4 ? 2 : 1;
+
+ if(GL_ARB_vertex_buffer_object)
+ glGenBuffersARB(1, &buffers->index_buf);
+
+ if(buffers->index_buf) {
+ /* Generate index buffer object */
+ glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->index_buf);
+ glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB,
+ sizeof(unsigned short) * tottri * 3, NULL, GL_STATIC_DRAW_ARB);
+
+ /* Fill the triangle buffer */
+ tri_data = glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
+ if(tri_data) {
+ for(i = 0; i < totface; ++i) {
+ MFace *f = mface + face_indices[i];
+ int v[3] = {f->v1, f->v2, f->v3};
+
+ for(j = 0; j < (f->v4 ? 2 : 1); ++j) {
+ for(k = 0; k < 3; ++k) {
+ void *value, *key = SET_INT_IN_POINTER(v[k]);
+ int vbo_index;
+
+ value = BLI_ghash_lookup(map, key);
+ vbo_index = GET_INT_FROM_POINTER(value);
+
+ if(vbo_index < 0) {
+ vbo_index = -vbo_index +
+ tot_uniq_verts - 1;
+ }
+
+ *tri_data = vbo_index;
+ ++tri_data;
+ }
+ v[0] = f->v4;
+ v[1] = f->v1;
+ v[2] = f->v3;
+ }
+ }
+ glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB);
+ }
+ else {
+ glDeleteBuffersARB(1, &buffers->index_buf);
+ buffers->index_buf = 0;
+ }
+
+ glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
+ }
+
+ if(buffers->index_buf)
+ glGenBuffersARB(1, &buffers->vert_buf);
+ GPU_update_mesh_buffers(buffers, mvert, vert_indices, totvert);
+
+ buffers->tot_tri = tottri;
+
+ buffers->mface = mface;
+ buffers->face_indices = face_indices;
+ buffers->totface = totface;
+
+ return buffers;
+}
+
+void GPU_update_grid_buffers(void *buffers_v, DMGridData **grids,
+ int *grid_indices, int totgrid, int gridsize)
+{
+ GPU_Buffers *buffers = buffers_v;
+ DMGridData *vert_data;
+ int i, totvert;
+
+ totvert= gridsize*gridsize*totgrid;
+
+ /* Build VBO */
+ if(buffers->vert_buf) {
+ glBindBufferARB(GL_ARRAY_BUFFER_ARB, buffers->vert_buf);
+ glBufferDataARB(GL_ARRAY_BUFFER_ARB,
+ sizeof(DMGridData) * totvert,
+ NULL, GL_STATIC_DRAW_ARB);
+ vert_data = glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
+ if(vert_data) {
+ for(i = 0; i < totgrid; ++i) {
+ DMGridData *grid= grids[grid_indices[i]];
+ memcpy(vert_data, grid, sizeof(DMGridData)*gridsize*gridsize);
+ vert_data += gridsize*gridsize;
+ }
+ glUnmapBufferARB(GL_ARRAY_BUFFER_ARB);
+ }
+ else {
+ glDeleteBuffersARB(1, &buffers->vert_buf);
+ buffers->vert_buf = 0;
+ }
+ glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
+ }
+
+ buffers->grids = grids;
+ buffers->grid_indices = grid_indices;
+ buffers->totgrid = totgrid;
+ buffers->gridsize = gridsize;
+
+ //printf("node updated %p\n", buffers_v);
+}
+
+void *GPU_build_grid_buffers(DMGridData **grids,
+ int *grid_indices, int totgrid, int gridsize)
+{
+ GPU_Buffers *buffers;
+ int i, j, k, totquad, offset= 0;
+
+ buffers = MEM_callocN(sizeof(GPU_Buffers), "GPU_Buffers");
+
+ /* Count the number of quads */
+ totquad= (gridsize-1)*(gridsize-1)*totgrid;
+
+ /* Generate index buffer object */
+ if(GL_ARB_vertex_buffer_object)
+ glGenBuffersARB(1, &buffers->index_buf);
+
+ if(buffers->index_buf) {
+ glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->index_buf);
+
+ if(totquad < USHRT_MAX) {
+ unsigned short *quad_data;
+
+ buffers->index_type = GL_UNSIGNED_SHORT;
+ glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB,
+ sizeof(unsigned short) * totquad * 4, NULL, GL_STATIC_DRAW_ARB);
+
+ /* Fill the quad buffer */
+ quad_data = glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
+ if(quad_data) {
+ for(i = 0; i < totgrid; ++i) {
+ for(j = 0; j < gridsize-1; ++j) {
+ for(k = 0; k < gridsize-1; ++k) {
+ *(quad_data++)= offset + j*gridsize + k;
+ *(quad_data++)= offset + (j+1)*gridsize + k;
+ *(quad_data++)= offset + (j+1)*gridsize + k+1;
+ *(quad_data++)= offset + j*gridsize + k+1;
+ }
+ }
+
+ offset += gridsize*gridsize;
+ }
+ glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB);
+ }
+ else {
+ glDeleteBuffersARB(1, &buffers->index_buf);
+ buffers->index_buf = 0;
+ }
+ }
+ else {
+ unsigned int *quad_data;
+
+ buffers->index_type = GL_UNSIGNED_INT;
+ glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB,
+ sizeof(unsigned int) * totquad * 4, NULL, GL_STATIC_DRAW_ARB);
+
+ /* Fill the quad buffer */
+ quad_data = glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
+
+ if(quad_data) {
+ for(i = 0; i < totgrid; ++i) {
+ for(j = 0; j < gridsize-1; ++j) {
+ for(k = 0; k < gridsize-1; ++k) {
+ *(quad_data++)= offset + j*gridsize + k;
+ *(quad_data++)= offset + (j+1)*gridsize + k;
+ *(quad_data++)= offset + (j+1)*gridsize + k+1;
+ *(quad_data++)= offset + j*gridsize + k+1;
+ }
+ }
+
+ offset += gridsize*gridsize;
+ }
+ glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB);
+ }
+ else {
+ glDeleteBuffersARB(1, &buffers->index_buf);
+ buffers->index_buf = 0;
+ }
+ }
+
+ glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
+ }
+
+ /* Build VBO */
+ if(buffers->index_buf)
+ glGenBuffersARB(1, &buffers->vert_buf);
+ GPU_update_grid_buffers(buffers, grids, grid_indices, totgrid, gridsize);
+
+ buffers->tot_quad = totquad;
+
+ return buffers;
+}
+
+void GPU_draw_buffers(void *buffers_v)
+{
+ GPU_Buffers *buffers = buffers_v;
+
+ if(buffers->vert_buf && buffers->index_buf) {
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glEnableClientState(GL_NORMAL_ARRAY);
+
+ glBindBufferARB(GL_ARRAY_BUFFER_ARB, buffers->vert_buf);
+ glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->index_buf);
+
+ if(buffers->tot_quad) {
+ glVertexPointer(3, GL_FLOAT, sizeof(DMGridData), (void*)offsetof(DMGridData, co));
+ glNormalPointer(GL_FLOAT, sizeof(DMGridData), (void*)offsetof(DMGridData, no));
+
+ glDrawElements(GL_QUADS, buffers->tot_quad * 4, buffers->index_type, 0);
+ }
+ else {
+ glVertexPointer(3, GL_FLOAT, sizeof(VertexBufferFormat), (void*)offsetof(VertexBufferFormat, co));
+ glNormalPointer(GL_SHORT, sizeof(VertexBufferFormat), (void*)offsetof(VertexBufferFormat, no));
+
+ glDrawElements(GL_TRIANGLES, buffers->tot_tri * 3, buffers->index_type, 0);
+ }
+
+ glDisableClientState(GL_VERTEX_ARRAY);
+ glDisableClientState(GL_NORMAL_ARRAY);
+ }
+ else if(buffers->totface) {
+ /* fallback if we are out of memory */
+ int i;
+
+ for(i = 0; i < buffers->totface; ++i) {
+ MFace *f = buffers->mface + buffers->face_indices[i];
+
+ glBegin((f->v4)? GL_QUADS: GL_TRIANGLES);
+ glNormal3sv(buffers->mvert[f->v1].no);
+ glVertex3fv(buffers->mvert[f->v1].co);
+ glNormal3sv(buffers->mvert[f->v2].no);
+ glVertex3fv(buffers->mvert[f->v2].co);
+ glNormal3sv(buffers->mvert[f->v3].no);
+ glVertex3fv(buffers->mvert[f->v3].co);
+ if(f->v4) {
+ glNormal3sv(buffers->mvert[f->v4].no);
+ glVertex3fv(buffers->mvert[f->v4].co);
+ }
+ glEnd();
+ }
+ }
+ else if(buffers->totgrid) {
+ int i, x, y, gridsize = buffers->gridsize;
+
+ for(i = 0; i < buffers->totgrid; ++i) {
+ DMGridData *grid = buffers->grids[buffers->grid_indices[i]];
+
+ for(y = 0; y < gridsize-1; y++) {
+ glBegin(GL_QUAD_STRIP);
+ for(x = 0; x < gridsize; x++) {
+ DMGridData *a = &grid[y*gridsize + x];
+ DMGridData *b = &grid[(y+1)*gridsize + x];
+
+ glNormal3fv(a->no);
+ glVertex3fv(a->co);
+ glNormal3fv(b->no);
+ glVertex3fv(b->co);
+ }
+ glEnd();
+ }
+ }
+ }
+}
+
+void GPU_free_buffers(void *buffers_v)
+{
+ if(buffers_v) {
+ GPU_Buffers *buffers = buffers_v;
+
+ if(buffers->vert_buf)
+ glDeleteBuffersARB(1, &buffers->vert_buf);
+ if(buffers->index_buf)
+ glDeleteBuffersARB(1, &buffers->index_buf);
+
+ MEM_freeN(buffers);
+ }
+}
+
GPUBuffer *GPU_buffer_setup( DerivedMesh *dm, GPUDrawObject *object, int size, GLenum target, void *user, void (*copy_f)(DerivedMesh *, float *, int *, int *, void *) )
{
GPUBuffer *buffer;
@@ -389,15 +746,9 @@ GPUBuffer *GPU_buffer_setup( DerivedMesh *dm, GPUDrawObject *object, int size, G
DEBUG_VBO("GPU_buffer_setup\n");
- if( globalPool == 0 ) {
+ if( globalPool == 0 )
globalPool = GPU_buffer_pool_new();
- /* somehow GL_NORMAL_ARRAY is enabled on startup and causes edge drawing code to crash */
- glDisableClientState( GL_VERTEX_ARRAY );
- glDisableClientState( GL_NORMAL_ARRAY );
- glDisableClientState( GL_TEXTURE_COORD_ARRAY );
- glDisableClientState( GL_COLOR_ARRAY );
- }
buffer = GPU_buffer_alloc(size,globalPool);
if( buffer == 0 ) {
dm->drawObject->legacy = 1;
diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c
index 75e8073aafd..db6c7fa5ce0 100644
--- a/source/blender/gpu/intern/gpu_draw.c
+++ b/source/blender/gpu/intern/gpu_draw.c
@@ -34,6 +34,8 @@
#include "GL/glew.h"
+#include "BLI_math.h"
+
#include "DNA_image_types.h"
#include "DNA_lamp_types.h"
#include "DNA_material_types.h"
@@ -856,6 +858,7 @@ void GPU_begin_object_materials(View3D *v3d, RegionView3D *rv3d, Scene *scene, O
GPUMaterial *gpumat;
GPUBlendMode blendmode;
int a;
+ int gamma = scene->r.color_mgt_flag & R_COLOR_MANAGEMENT;
/* initialize state */
memset(&GMS, 0, sizeof(GMS));
@@ -930,6 +933,7 @@ void GPU_begin_object_materials(View3D *v3d, RegionView3D *rv3d, Scene *scene, O
GMS.matbuf[a][0][0]= ma->r;
GMS.matbuf[a][0][1]= ma->g;
GMS.matbuf[a][0][2]= ma->b;
+ if(gamma) linearrgb_to_srgb_v3_v3(&GMS.matbuf[a][0][0], &GMS.matbuf[a][0][0]);
} else {
GMS.matbuf[a][0][0]= (ma->ref+ma->emit)*ma->r;
GMS.matbuf[a][0][1]= (ma->ref+ma->emit)*ma->g;
@@ -939,6 +943,11 @@ void GPU_begin_object_materials(View3D *v3d, RegionView3D *rv3d, Scene *scene, O
GMS.matbuf[a][1][1]= ma->spec*ma->specg;
GMS.matbuf[a][1][2]= ma->spec*ma->specb;
GMS.matbuf[a][1][3]= 1.0;
+
+ if(gamma) {
+ linearrgb_to_srgb_v3_v3(&GMS.matbuf[a][0][0], &GMS.matbuf[a][0][0]);
+ linearrgb_to_srgb_v3_v3(&GMS.matbuf[a][1][0], &GMS.matbuf[a][1][0]);
+ }
}
blendmode = (ma->alpha == 1.0f)? GPU_BLEND_SOLID: GPU_BLEND_ALPHA;
@@ -1267,9 +1276,11 @@ void GPU_state_init(void)
glDisable(GL_TEXTURE_1D);
glDisable(GL_TEXTURE_2D);
- /* default on, disable/enable should be local per function */
- glEnableClientState(GL_VERTEX_ARRAY);
- glEnableClientState(GL_NORMAL_ARRAY);
+ /* default disabled, enable should be local per function */
+ glDisableClientState(GL_VERTEX_ARRAY);
+ glDisableClientState(GL_NORMAL_ARRAY);
+ glDisableClientState(GL_COLOR_ARRAY);
+ glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glPixelTransferi(GL_MAP_COLOR, GL_FALSE);
glPixelTransferi(GL_RED_SCALE, 1);
diff --git a/source/blender/imbuf/intern/divers.c b/source/blender/imbuf/intern/divers.c
index e84a9302bbf..35be1f716e6 100644
--- a/source/blender/imbuf/intern/divers.c
+++ b/source/blender/imbuf/intern/divers.c
@@ -31,6 +31,7 @@
#include "BLI_blenlib.h"
#include "BLI_rand.h"
+#include "BLI_math.h"
#include "imbuf.h"
#include "imbuf_patch.h"
diff --git a/source/blender/imbuf/intern/jpeg.c b/source/blender/imbuf/intern/jpeg.c
index 2f721e1d805..2df522ff4a2 100644
--- a/source/blender/imbuf/intern/jpeg.c
+++ b/source/blender/imbuf/intern/jpeg.c
@@ -32,6 +32,8 @@
/* This little block needed for linking to Blender... */
#include <stdio.h>
+#include <setjmp.h>
+
#include "BLI_blenlib.h"
#include "imbuf.h"
@@ -41,6 +43,7 @@
#include "IMB_imginfo.h"
#include "IMB_jpeg.h"
#include "jpeglib.h"
+#include "jerror.h"
/* the types are from the jpeg lib */
static void jpeg_error (j_common_ptr cinfo);
@@ -66,7 +69,6 @@ type 3 is unsupported as of jul 05 2000 Frank.
* 4. jmax - no scaling in the components
*/
-static int jpeg_failed = FALSE;
static int jpeg_default_quality;
static int ibuf_ftype;
@@ -76,15 +78,30 @@ int imb_is_a_jpeg(unsigned char *mem) {
return 0;
}
+//----------------------------------------------------------
+// JPG ERROR HANDLING
+//----------------------------------------------------------
+
+typedef struct my_error_mgr {
+ struct jpeg_error_mgr pub; /* "public" fields */
+
+ jmp_buf setjmp_buffer; /* for return to caller */
+} my_error_mgr;
+
+typedef my_error_mgr * my_error_ptr;
+
static void jpeg_error (j_common_ptr cinfo)
{
+ my_error_ptr err = (my_error_ptr)cinfo->err;
+
/* Always display the message */
(*cinfo->err->output_message) (cinfo);
/* Let the memory manager delete any temp files before we die */
jpeg_destroy(cinfo);
- jpeg_failed = TRUE;
+ /* return control to the setjmp point */
+ longjmp(err->setjmp_buffer, 1);
}
//----------------------------------------------------------
@@ -255,7 +272,7 @@ static ImBuf * ibJpegImageFromCinfo(struct jpeg_decompress_struct * cinfo, int f
x = cinfo->image_width;
y = cinfo->image_height;
depth = cinfo->num_components;
-
+
if (cinfo->jpeg_color_space == JCS_YCCK) cinfo->out_color_space = JCS_CMYK;
jpeg_start_decompress(cinfo);
@@ -407,14 +424,24 @@ next_stamp_marker:
ImBuf * imb_ibJpegImageFromFilename (const char * filename, int flags)
{
struct jpeg_decompress_struct _cinfo, *cinfo = &_cinfo;
- struct jpeg_error_mgr jerr;
+ struct my_error_mgr jerr;
FILE * infile;
ImBuf * ibuf;
if ((infile = fopen(filename, "rb")) == NULL) return 0;
- cinfo->err = jpeg_std_error(&jerr);
- jerr.error_exit = jpeg_error;
+ cinfo->err = jpeg_std_error(&jerr.pub);
+ jerr.pub.error_exit = jpeg_error;
+
+ /* Establish the setjmp return context for my_error_exit to use. */
+ if (setjmp(jerr.setjmp_buffer)) {
+ /* If we get here, the JPEG code has signaled an error.
+ * We need to clean up the JPEG object, close the input file, and return.
+ */
+ jpeg_destroy_decompress(cinfo);
+ fclose(infile);
+ return NULL;
+ }
jpeg_create_decompress(cinfo);
jpeg_stdio_src(cinfo, infile);
@@ -428,11 +455,20 @@ ImBuf * imb_ibJpegImageFromFilename (const char * filename, int flags)
ImBuf * imb_ibJpegImageFromMemory (unsigned char * buffer, int size, int flags)
{
struct jpeg_decompress_struct _cinfo, *cinfo = &_cinfo;
- struct jpeg_error_mgr jerr;
+ struct my_error_mgr jerr;
ImBuf * ibuf;
- cinfo->err = jpeg_std_error(&jerr);
- jerr.error_exit = jpeg_error;
+ cinfo->err = jpeg_std_error(&jerr.pub);
+ jerr.pub.error_exit = jpeg_error;
+
+ /* Establish the setjmp return context for my_error_exit to use. */
+ if (setjmp(jerr.setjmp_buffer)) {
+ /* If we get here, the JPEG code has signaled an error.
+ * We need to clean up the JPEG object, close the input file, and return.
+ */
+ jpeg_destroy_decompress(cinfo);
+ return NULL;
+ }
jpeg_create_decompress(cinfo);
memory_source(cinfo, buffer, size);
@@ -521,11 +557,9 @@ next_stamp_info:
}
jpeg_write_scanlines(cinfo, row_pointer, 1);
-
- if (jpeg_failed) break;
}
- if (jpeg_failed == FALSE) jpeg_finish_compress(cinfo);
+ jpeg_finish_compress(cinfo);
free(row_pointer[0]);
}
@@ -577,13 +611,24 @@ static int save_stdjpeg(char * name, struct ImBuf * ibuf)
{
FILE * outfile;
struct jpeg_compress_struct _cinfo, *cinfo = &_cinfo;
- struct jpeg_error_mgr jerr;
+ struct my_error_mgr jerr;
if ((outfile = fopen(name, "wb")) == NULL) return 0;
jpeg_default_quality = 75;
- cinfo->err = jpeg_std_error(&jerr);
- jerr.error_exit = jpeg_error;
+ cinfo->err = jpeg_std_error(&jerr.pub);
+ jerr.pub.error_exit = jpeg_error;
+
+ /* Establish the setjmp return context for jpeg_error to use. */
+ if (setjmp(jerr.setjmp_buffer)) {
+ /* If we get here, the JPEG code has signaled an error.
+ * We need to clean up the JPEG object, close the input file, and return.
+ */
+ jpeg_destroy_compress(cinfo);
+ fclose(outfile);
+ remove(name);
+ return 0;
+ }
init_jpeg(outfile, cinfo, ibuf);
@@ -592,10 +637,6 @@ static int save_stdjpeg(char * name, struct ImBuf * ibuf)
fclose(outfile);
jpeg_destroy_compress(cinfo);
- if (jpeg_failed) {
- remove(name);
- return 0;
- }
return 1;
}
@@ -604,13 +645,24 @@ static int save_vidjpeg(char * name, struct ImBuf * ibuf)
{
FILE * outfile;
struct jpeg_compress_struct _cinfo, *cinfo = &_cinfo;
- struct jpeg_error_mgr jerr;
+ struct my_error_mgr jerr;
if ((outfile = fopen(name, "wb")) == NULL) return 0;
jpeg_default_quality = 90;
- cinfo->err = jpeg_std_error(&jerr);
- jerr.error_exit = jpeg_error;
+ cinfo->err = jpeg_std_error(&jerr.pub);
+ jerr.pub.error_exit = jpeg_error;
+
+ /* Establish the setjmp return context for jpeg_error to use. */
+ if (setjmp(jerr.setjmp_buffer)) {
+ /* If we get here, the JPEG code has signaled an error.
+ * We need to clean up the JPEG object, close the input file, and return.
+ */
+ jpeg_destroy_compress(cinfo);
+ fclose(outfile);
+ remove(name);
+ return 0;
+ }
init_jpeg(outfile, cinfo, ibuf);
@@ -625,10 +677,6 @@ static int save_vidjpeg(char * name, struct ImBuf * ibuf)
fclose(outfile);
jpeg_destroy_compress(cinfo);
- if (jpeg_failed) {
- remove(name);
- return 0;
- }
return 1;
}
@@ -667,13 +715,24 @@ static int save_maxjpeg(char * name, struct ImBuf * ibuf)
{
FILE * outfile;
struct jpeg_compress_struct _cinfo, *cinfo = &_cinfo;
- struct jpeg_error_mgr jerr;
+ struct my_error_mgr jerr;
if ((outfile = fopen(name, "wb")) == NULL) return 0;
jpeg_default_quality = 100;
- cinfo->err = jpeg_std_error(&jerr);
- jerr.error_exit = jpeg_error;
+ cinfo->err = jpeg_std_error(&jerr.pub);
+ jerr.pub.error_exit = jpeg_error;
+
+ /* Establish the setjmp return context for jpeg_error to use. */
+ if (setjmp(jerr.setjmp_buffer)) {
+ /* If we get here, the JPEG code has signaled an error.
+ * We need to clean up the JPEG object, close the input file, and return.
+ */
+ jpeg_destroy_compress(cinfo);
+ fclose(outfile);
+ remove(name);
+ return 0;
+ }
init_jpeg(outfile, cinfo, ibuf);
@@ -688,10 +747,6 @@ static int save_maxjpeg(char * name, struct ImBuf * ibuf)
fclose(outfile);
jpeg_destroy_compress(cinfo);
- if (jpeg_failed) {
- remove(name);
- return 0;
- }
return 1;
}
diff --git a/source/blender/imbuf/intern/rectop.c b/source/blender/imbuf/intern/rectop.c
index 56714c3b481..080340750e4 100644
--- a/source/blender/imbuf/intern/rectop.c
+++ b/source/blender/imbuf/intern/rectop.c
@@ -277,7 +277,7 @@ void IMB_rectclip(struct ImBuf *dbuf, struct ImBuf *sbuf, int *destx,
}
if (*srcx < 0) {
*destx -= *srcx;
- *width += *destx;
+ *width += *srcx;
*srcx = 0;
}
if (*desty < 0) {
@@ -287,7 +287,7 @@ void IMB_rectclip(struct ImBuf *dbuf, struct ImBuf *sbuf, int *destx,
}
if (*srcy < 0) {
*desty -= *srcy;
- *height += *desty;
+ *height += *srcy;
*srcy = 0;
}
diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h
index 5f6d8ef375a..ee6af076f59 100644
--- a/source/blender/makesdna/DNA_action_types.h
+++ b/source/blender/makesdna/DNA_action_types.h
@@ -244,7 +244,7 @@ typedef enum eRotationModes {
* though there is a define for it (hack for the outliner).
*/
typedef struct bPose {
- ListBase chanbase; /* list of pose channels */
+ ListBase chanbase; /* list of pose channels, PoseBones in RNA */
short flag, proxy_layer; /* proxy layer: copy from armature, gets synced */
@@ -503,6 +503,8 @@ typedef enum eSAction_Flag {
SACTION_NODRAWGCOLORS = (1<<7),
/* don't draw current frame number beside frame indicator */
SACTION_NODRAWCFRANUM = (1<<8),
+ /* temporary flag to force channel selections to be synced with main */
+ SACTION_TEMP_NEEDCHANSYNC = (1<<9),
} eSAction_Flag;
/* SpaceAction Mode Settings */
diff --git a/source/blender/makesdna/DNA_anim_types.h b/source/blender/makesdna/DNA_anim_types.h
index c6330861fd2..dcb10d0f2cf 100644
--- a/source/blender/makesdna/DNA_anim_types.h
+++ b/source/blender/makesdna/DNA_anim_types.h
@@ -36,7 +36,6 @@ extern "C" {
#include "DNA_listBase.h"
#include "DNA_action_types.h"
#include "DNA_curve_types.h"
-#include "DNA_sound_types.h"
/* ************************************************ */
/* F-Curve DataTypes */
@@ -74,7 +73,6 @@ typedef enum eFModifier_Types {
FMODIFIER_TYPE_FILTER, /* unimplemented - for applying: fft, high/low pass filters, etc. */
FMODIFIER_TYPE_PYTHON,
FMODIFIER_TYPE_LIMITS,
- FMODIFIER_TYPE_SOUND,
/* NOTE: all new modifiers must be added above this line */
FMODIFIER_NUM_TYPES
@@ -232,25 +230,6 @@ typedef enum eFMod_Noise_Modifications {
FCM_NOISE_MODIF_MULTIPLY, /* Multiply the curve by noise */
} eFMod_Noise_Modifications;
-/* sound modifier data */
-typedef struct FMod_Sound {
- float strength;
- float delay;
-
- short modification;
- short pad[3];
-
- bSound *sound;
-} FMod_Sound;
-
-/* modification modes */
-typedef enum eFMod_Sound_Modifications {
- FCM_SOUND_MODIF_REPLACE = 0, /* Modify existing curve, matching it's shape */
- FCM_SOUND_MODIF_ADD, /* Add amplitude to the curve */
- FCM_SOUND_MODIF_SUBTRACT, /* Subtract amplitude from the curve */
- FCM_SOUND_MODIF_MULTIPLY, /* Multiply the curve by amplitude */
-} eFMod_Sound_Modifications;
-
/* Drivers -------------------------------------- */
/* Driver Target
@@ -291,7 +270,8 @@ typedef struct ChannelDriver {
/* python expression to execute (may call functions defined in an accessory file)
* which relates the target 'variables' in some way to yield a single usable value
*/
- char expression[256];
+ char expression[256]; /* expression to compile for evaluation */
+ void *expr_comp; /* PyObject - compiled expression, dont save this */
float curval; /* result of previous evaluation, for subtraction from result under certain circumstances */
float influence; /* influence of driver on result */ // XXX to be implemented... this is like the constraint influence setting
@@ -309,6 +289,8 @@ typedef enum eDriver_Types {
DRIVER_TYPE_PYTHON,
/* rotational difference (must use rotation channels only) */
DRIVER_TYPE_ROTDIFF,
+ /* sum of all values */
+ DRIVER_TYPE_SUM,
} eDriver_Types;
/* driver flags */
@@ -320,6 +302,8 @@ typedef enum eDriver_Flags {
/* driver does replace value, but overrides (for layering of animation over driver) */
// TODO: this needs to be implemented at some stage or left out...
DRIVER_FLAG_LAYERING = (1<<2),
+ /* use when the expression needs to be recompiled */
+ DRIVER_FLAG_RECOMPILE = (1<<3),
} eDriver_Flags;
/* F-Curves -------------------------------------- */
@@ -362,7 +346,7 @@ typedef struct FCurve {
char *rna_path; /* RNA-path to resolve data-access */
/* curve coloring (for editor) */
- int color_mode; /* coloring method to use */
+ int color_mode; /* coloring method to use (eFCurve_Coloring) */
float color[3]; /* the last-color this curve took */
} FCurve;
@@ -654,6 +638,7 @@ typedef enum eKSP_TemplateTypes {
KSP_TEMPLATE_PCHAN = (1<<1), /* #pch - selected posechannel */
KSP_TEMPLATE_CONSTRAINT = (1<<2), /* #con - active only */
KSP_TEMPLATE_NODE = (1<<3), /* #nod - selected node */
+ KSP_TEMPLATE_MODIFIER = (1<<4), /* #mod - active only */
KSP_TEMPLATE_ROT = (1<<16), /* modify rotation paths based on rotation mode of Object or Pose Channel */
} eKSP_TemplateTypes;
@@ -698,6 +683,7 @@ typedef enum eInsertKeyFlags {
INSERTKEY_FAST = (1<<2), /* don't recalculate handles,etc. after adding key */
INSERTKEY_FASTR = (1<<3), /* don't realloc mem (or increase count, as array has already been set out) */
INSERTKEY_REPLACE = (1<<4), /* only replace an existing keyframe (this overrides INSERTKEY_NEEDED) */
+ INSERTKEY_XYZ2RGB = (1<<5), /* transform F-Curves should have XYZ->RGB color mode */
} eInsertKeyFlags;
/* ************************************************ */
diff --git a/source/blender/makesdna/DNA_armature_types.h b/source/blender/makesdna/DNA_armature_types.h
index 7dd90a3cf13..ea549f9aeba 100644
--- a/source/blender/makesdna/DNA_armature_types.h
+++ b/source/blender/makesdna/DNA_armature_types.h
@@ -66,8 +66,9 @@ typedef struct Bone {
float rad_head, rad_tail; /* radius for head/tail sphere, defining deform as well, parent->rad_tip overrides rad_head*/
float size[3]; /* patch for upward compat, UNUSED! */
- short layer;
+ int layer; /* layers that bone appears on */
short segments; /* for B-bones */
+ short pad[3];
} Bone;
typedef struct bArmature {
@@ -78,8 +79,8 @@ typedef struct bArmature {
ListBase chainbase;
ListBase *edbo; /* editbone listbase, we use pointer so we can check state */
- Bone *act_bone;
- void *act_edbone;
+ Bone *act_bone; /* active bone (when not in editmode) */
+ void *act_edbone; /* active editbone (in editmode) */
void *sketch; /* sketch struct for etch-a-ton */
@@ -87,7 +88,10 @@ typedef struct bArmature {
int drawtype;
short deformflag;
short pathflag;
- short layer, layer_protected; /* for buttons to work, both variables in this order together */
+
+ int pad;
+
+ int layer, layer_protected; /* for buttons to work, both variables in this order together */
short ghostep, ghostsize; /* number of frames to ghosts to show, and step between them */
short ghosttype, pathsize; /* ghost drawing options and number of frames between points of path */
int ghostsf, ghostef; /* start and end frames of ghost-drawing range */
@@ -171,6 +175,7 @@ typedef enum eBone_Flag {
BONE_EDITMODE_LOCKED = (1<<19), /* bone transforms are locked in EditMode */
BONE_TRANSFORM_CHILD = (1<<20), /* Indicates that a parent is also being transformed */
BONE_UNSELECTABLE = (1<<21), /* bone cannot be selected */
+ BONE_NO_LOCAL_LOCATION = (1<<22), /* bone location is in armature space */
} eBone_Flag;
#endif
diff --git a/source/blender/makesdna/DNA_brush_types.h b/source/blender/makesdna/DNA_brush_types.h
index 1bbccd20486..c8fc14ca0f0 100644
--- a/source/blender/makesdna/DNA_brush_types.h
+++ b/source/blender/makesdna/DNA_brush_types.h
@@ -79,12 +79,13 @@ typedef struct Brush {
#define BRUSH_JITTER_PRESSURE 16 /* was BRUSH_RAD_PRESSURE */
#define BRUSH_SPACING_PRESSURE 32
#define BRUSH_FIXED_TEX 64
-#define BRUSH_RAKE 128
-#define BRUSH_ANCHORED 256
-#define BRUSH_DIR_IN 512
-#define BRUSH_SPACE 1024
-#define BRUSH_SMOOTH_STROKE 2048
-#define BRUSH_PERSISTENT 4096
+#define BRUSH_RAKE 128
+#define BRUSH_ANCHORED 256
+#define BRUSH_DIR_IN 512
+#define BRUSH_SPACE 1024
+#define BRUSH_SMOOTH_STROKE 2048
+#define BRUSH_PERSISTENT 4096
+#define BRUSH_ACCUMULATE 8192
/* Brush.sculpt_tool */
#define SCULPT_TOOL_DRAW 1
diff --git a/source/blender/makesdna/DNA_customdata_types.h b/source/blender/makesdna/DNA_customdata_types.h
index b4feb3c4d16..f227e82fb44 100644
--- a/source/blender/makesdna/DNA_customdata_types.h
+++ b/source/blender/makesdna/DNA_customdata_types.h
@@ -44,15 +44,20 @@ typedef struct CustomDataLayer {
void *data; /* layer data */
} CustomDataLayer;
+typedef struct CustomDataExternal {
+ char filename[240]; /* FILE_MAX */
+} CustomDataExternal;
+
/* structure which stores custom element data associated with mesh elements
* (vertices, edges or faces). The custom data is organised into a series of
* layers, each with a data type (e.g. MTFace, MDeformVert, etc.). */
typedef struct CustomData {
- CustomDataLayer *layers; /* CustomDataLayers, ordered by type */
- int typemap[100]; /* maps types to indices of first layer of that type */
- int totlayer, maxlayer; /* number of layers, size of layers array */
- int totsize, pad; /* in editmode, total size of all data layers */
- void *pool; /* for Bmesh: Memory pool for allocation of blocks*/
+ CustomDataLayer *layers; /* CustomDataLayers, ordered by type */
+ int typemap[100]; /* maps types to indices of first layer of that type */
+ int totlayer, maxlayer; /* number of layers, size of layers array */
+ int totsize, pad; /* in editmode, total size of all data layers */
+ void *pool; /* Bmesh: Memory pool for allocation of blocks */
+ CustomDataExternal *external; /* external file storing customdata layers */
} CustomData;
/* CustomData.type */
@@ -126,6 +131,10 @@ typedef struct CustomData {
#define CD_FLAG_NOFREE (1<<1)
/* indicates the layer is only temporary, also implies no copy */
#define CD_FLAG_TEMPORARY ((1<<2)|CD_FLAG_NOCOPY)
+/* indicates the layer is stored in an external file */
+#define CD_FLAG_EXTERNAL (1<<3)
+/* indicates external data is read into memory */
+#define CD_FLAG_IN_MEMORY (1<<4)
/* Limits */
#define MAX_MTFACE 8
diff --git a/source/blender/makesdna/DNA_ipo_types.h b/source/blender/makesdna/DNA_ipo_types.h
index 58c26f06e4c..cf3d713c690 100644
--- a/source/blender/makesdna/DNA_ipo_types.h
+++ b/source/blender/makesdna/DNA_ipo_types.h
@@ -275,6 +275,8 @@ typedef struct Ipo {
#define SEQ_TOTNAM 1
#define SEQ_FAC1 1
+#define SEQ_FAC_SPEED 2
+#define SEQ_FAC_OPACITY 3
/* ********* Curve (ID_CU) *********** */
diff --git a/source/blender/makesdna/DNA_meshdata_types.h b/source/blender/makesdna/DNA_meshdata_types.h
index 9bd495b1e39..dd1d6c66036 100644
--- a/source/blender/makesdna/DNA_meshdata_types.h
+++ b/source/blender/makesdna/DNA_meshdata_types.h
@@ -207,11 +207,12 @@ typedef struct PartialVisibility {
} PartialVisibility;
/* mvert->flag (1=SELECT) */
-#define ME_SPHERETEST 2
-#define ME_SPHERETEMP 4
-#define ME_HIDE 16
+#define ME_SPHERETEST 2
+#define ME_VERT_TMP_TAG 4
+#define ME_HIDE 16
#define ME_PIN 64
#define ME_VERT_MERGED (1<<6)
+#define ME_VERT_PBVH_UPDATE (1<<7)
/* medge->flag (1=SELECT)*/
#define ME_EDGEDRAW (1<<1)
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h
index fe6a5b050e3..2491e58f176 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -64,6 +64,7 @@ typedef enum ModifierType {
eModifierType_Surface,
eModifierType_Smoke,
eModifierType_ShapeKey,
+ eModifierType_Solidify,
NUM_MODIFIER_TYPES
} ModifierType;
@@ -492,6 +493,9 @@ typedef struct BooleanModifierData {
#define MOD_MDEF_INVERT_VGROUP (1<<0)
#define MOD_MDEF_DYNAMIC_BIND (1<<1)
+#define MOD_MDEF_VOLUME 0
+#define MOD_MDEF_SURFACE 1
+
typedef struct MDefInfluence {
int vertex;
float weight;
@@ -508,7 +512,7 @@ typedef struct MeshDeformModifierData {
struct Object *object; /* mesh object */
char defgrp_name[32]; /* optional vertexgroup name */
- short gridsize, flag, pad[2];
+ short gridsize, flag, mode, pad;
/* variables filled in when bound */
float *bindweights, *bindcos; /* computed binding weights */
@@ -523,7 +527,8 @@ typedef struct MeshDeformModifierData {
float bindmat[4][4]; /* matrix of cage at binding time */
/* runtime */
- void (*bindfunc)(struct Scene *scene, struct MeshDeformModifierData *mmd,
+ void (*bindfunc)(struct Scene *scene, struct DerivedMesh *dm,
+ struct MeshDeformModifierData *mmd,
float *vertexcos, int totvert, float cagemat[][4]);
} MeshDeformModifierData;
@@ -581,14 +586,14 @@ typedef struct ExplodeModifierData {
typedef struct MultiresModifierData {
ModifierData modifier;
- struct MVert *undo_verts; /* Store DerivedMesh vertices for multires undo */
- int undo_verts_tot; /* Length of undo_verts array */
- char undo_signal; /* If true, signals to replace verts with undo verts */
-
- char lvl, totlvl;
- char simple;
+ char lvl, sculptlvl, renderlvl, totlvl;
+ char simple, flags, pad[2];
} MultiresModifierData;
+typedef enum {
+ eMultiresModifierFlag_ControlEdges = (1<<0),
+} MultiresModifierFlag;
+
typedef struct FluidsimModifierData {
ModifierData modifier;
@@ -671,4 +676,20 @@ typedef struct ShapeKeyModifierData {
ModifierData modifier;
} ShapeKeyModifierData;
+typedef struct SolidifyModifierData {
+ ModifierData modifier;
+
+ char vgroup[32]; /* name of vertex group to use */
+ float offset; /* new surface offset level*/
+ float crease_inner;
+ float crease_outer;
+ float crease_rim;
+ int flag;
+ char pad[4];
+} SolidifyModifierData;
+
+#define MOD_SOLIDIFY_RIM (1<<0)
+#define MOD_SOLIDIFY_EVEN (1<<1)
+#define MOD_SOLIDIFY_NORMAL_CALC (1<<2)
+
#endif
diff --git a/source/blender/makesdna/DNA_object_force.h b/source/blender/makesdna/DNA_object_force.h
index adccf8893d4..99b8f400a5e 100644
--- a/source/blender/makesdna/DNA_object_force.h
+++ b/source/blender/makesdna/DNA_object_force.h
@@ -71,7 +71,7 @@ typedef struct PartDeflect {
float f_flow; /* How much force is converted into "air flow", i.e. */
/* force used as the velocity of surrounding medium. */
- float f_size;
+ float f_size; /* Noise size for noise effector, restlength for harmonic effector */
/* fall-off */
float f_power; /* The power law - real gravitation is 2 (square) */
@@ -320,6 +320,7 @@ typedef struct SoftBody {
#define PFIELD_TEX_OBJECT 64
#define PFIELD_GLOBAL_CO 64 /* used for turbulence */
#define PFIELD_TEX_2D 128
+#define PFIELD_MULTIPLE_SPRINGS 128 /* used for harmonic force */
#define PFIELD_USEMIN 256
#define PFIELD_USEMAXR 512
#define PFIELD_USEMINR 1024
diff --git a/source/blender/makesdna/DNA_particle_types.h b/source/blender/makesdna/DNA_particle_types.h
index 0de48c54fe2..abcdbcefc0f 100644
--- a/source/blender/makesdna/DNA_particle_types.h
+++ b/source/blender/makesdna/DNA_particle_types.h
@@ -109,10 +109,9 @@ typedef struct ParticleData {
float size; /* size and multiplier so that we can update size when ever */
+ int hair_index;
short flag;
short alive; /* the life state of a particle */
- short loop; /* how many times particle life has looped */
- short hair_index;
} ParticleData;
typedef struct ParticleSettings {
@@ -261,7 +260,7 @@ typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in
#define PART_REACT_STA_END 1
#define PART_REACT_MULTIPLE 2
-#define PART_LOOP 4
+//#define PART_LOOP 4 /* not used anymore */
/* for dopesheet */
#define PART_DS_EXPAND 8
@@ -391,6 +390,7 @@ typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in
#define PART_INT_EULER 0
#define PART_INT_MIDPOINT 1
#define PART_INT_RK4 2
+#define PART_INT_VERLET 3
/* part->rotmode */
#define PART_ROT_NOR 1
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index e998b943a2e..536d9ba2bc3 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -29,6 +29,9 @@
#ifndef DNA_SCENE_TYPES_H
#define DNA_SCENE_TYPES_H
+// XXX, temp feature
+#define DURIAN_CAMERA_SWITCH
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -488,6 +491,7 @@ typedef struct TimeMarker {
int frame;
char name[64];
unsigned int flag;
+ struct Object *camera;
} TimeMarker;
typedef struct Paint {
@@ -499,7 +503,7 @@ typedef struct Paint {
void *paint_cursor;
unsigned char paint_cursor_col[4];
- int pad;
+ int flags;
} Paint;
typedef struct ImagePaintSettings {
@@ -1007,10 +1011,11 @@ typedef struct Scene {
#define SCE_SNAP_TARGET_MEDIAN 2
#define SCE_SNAP_TARGET_ACTIVE 3
/* toolsettings->snap_mode */
-#define SCE_SNAP_MODE_VERTEX 0
-#define SCE_SNAP_MODE_EDGE 1
-#define SCE_SNAP_MODE_FACE 2
-#define SCE_SNAP_MODE_VOLUME 3
+#define SCE_SNAP_MODE_INCREMENT 0
+#define SCE_SNAP_MODE_VERTEX 1
+#define SCE_SNAP_MODE_EDGE 2
+#define SCE_SNAP_MODE_FACE 3
+#define SCE_SNAP_MODE_VOLUME 4
/* toolsettings->selectmode */
#define SCE_SELECT_VERTEX 1 /* for mesh */
@@ -1060,14 +1065,18 @@ typedef struct Scene {
#define FFMPEG_MULTIPLEX_AUDIO 1
#define FFMPEG_AUTOSPLIT_OUTPUT 2
+/* Paint.flags */
+typedef enum {
+ PAINT_SHOW_BRUSH = 1,
+ PAINT_FAST_NAVIGATE = 2
+} PaintFlags;
+
/* Sculpt.flags */
+/* These can eventually be moved to paint flags? */
typedef enum SculptFlags {
SCULPT_SYMM_X = 1,
SCULPT_SYMM_Y = 2,
SCULPT_SYMM_Z = 4,
- SCULPT_INPUT_SMOOTH = 8,
- SCULPT_DRAW_FAST = 16,
- SCULPT_DRAW_BRUSH = 32,
SCULPT_LOCK_X = 64,
SCULPT_LOCK_Y = 128,
SCULPT_LOCK_Z = 256
@@ -1083,8 +1092,8 @@ typedef enum SculptFlags {
#define IMAGEPAINT_PROJECT_BACKFACE 32
#define IMAGEPAINT_PROJECT_FLAT 64
#define IMAGEPAINT_PROJECT_LAYER_CLONE 128
-#define IMAGEPAINT_PROJECT_LAYER_MASK 256
-#define IMAGEPAINT_PROJECT_LAYER_MASK_INV 512
+#define IMAGEPAINT_PROJECT_LAYER_STENCIL 256
+#define IMAGEPAINT_PROJECT_LAYER_STENCIL_INV 512
/* toolsettings->uvcalc_flag */
#define UVCALC_FILLHOLES 1
diff --git a/source/blender/makesdna/DNA_screen_types.h b/source/blender/makesdna/DNA_screen_types.h
index b091a0529e7..2bc7b1e8431 100644
--- a/source/blender/makesdna/DNA_screen_types.h
+++ b/source/blender/makesdna/DNA_screen_types.h
@@ -170,9 +170,10 @@ typedef struct ARegion {
#define WIN_EQUAL 3
/* area->flag */
-#define HEADER_NO_PULLDOWN 1
-#define AREA_FLAG_DRAWJOINTO 2
-#define AREA_FLAG_DRAWJOINFROM 4
+#define HEADER_NO_PULLDOWN 1
+#define AREA_FLAG_DRAWJOINTO 2
+#define AREA_FLAG_DRAWJOINFROM 4
+#define AREA_TEMP_INFO 8
/* If you change EDGEWIDTH, also do the global arrat edcol[] */
#define EDGEWIDTH 1
@@ -218,6 +219,7 @@ typedef struct ARegion {
#define RGN_TYPE_UI 4
#define RGN_TYPE_TOOLS 5
#define RGN_TYPE_TOOL_PROPS 6
+#define RGN_TYPE_PREVIEW 7
/* region alignment */
#define RGN_ALIGN_NONE 0
diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h
index 9b38ad6b8cf..0b45d62e347 100644
--- a/source/blender/makesdna/DNA_sequence_types.h
+++ b/source/blender/makesdna/DNA_sequence_types.h
@@ -183,8 +183,8 @@ typedef struct MetaStack {
} MetaStack;
typedef struct Editing {
- ListBase *seqbasep;
- ListBase seqbase;
+ ListBase *seqbasep; /* pointer to the current list of seq's being edited (can be within a meta strip) */
+ ListBase seqbase; /* pointer to the top-most seq's */
ListBase metastack;
/* Context vars, used to be static */
@@ -211,16 +211,17 @@ typedef struct GlowVars {
typedef struct TransformVars {
float ScalexIni;
float ScaleyIni;
- float ScalexFin;
- float ScaleyFin;
+ float ScalexFin; /* deprecated - old transform strip */
+ float ScaleyFin; /* deprecated - old transform strip */
float xIni;
- float xFin;
+ float xFin; /* deprecated - old transform strip */
float yIni;
- float yFin;
+ float yFin; /* deprecated - old transform strip */
float rotIni;
- float rotFin;
+ float rotFin; /* deprecated - old transform strip */
int percent;
int interpolation;
+ int uniform_scale; /* preserve aspect/ratio when scaling */
} TransformVars;
typedef struct SolidColorVars {
@@ -268,6 +269,7 @@ typedef struct SpeedControlVars {
#define SEQ_USE_COLOR_BALANCE 262144
#define SEQ_USE_PROXY_CUSTOM_DIR 524288
#define SEQ_USE_PROXY_CUSTOM_FILE 2097152
+#define SEQ_USE_EFFECT_DEFAULT_FADE 4194304
/* 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 fd2e03e173e..72d57df555c 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -146,7 +146,9 @@ typedef struct SpaceSeq {
short zebra;
int flag;
float zoom;
-
+ int view; /* see SEQ_VIEW_* below */
+ int pad;
+
struct bGPdata *gpd; /* grease-pencil data */
} SpaceSeq;
@@ -667,6 +669,7 @@ enum FileSortTypeE {
#define TEXTFILE 512
#define MOVIEFILE_ICON 1024 /* movie file that preview can't load */
#define FOLDERFILE 2048 /* represents folders for filtering */
+#define BTXFILE 4096
/* SpaceImage->dt_uv */
#define SI_UVDT_OUTLINE 0
@@ -717,15 +720,29 @@ enum FileSortTypeE {
#define SI_COLOR_CORRECTION 1<<24
/* SpaceIpo->flag (Graph Editor Settings) */
+ /* OLD DEPRECEATED SETTING */
#define SIPO_LOCK_VIEW (1<<0)
+ /* don't merge keyframes on the same frame after a transform */
#define SIPO_NOTRANSKEYCULL (1<<1)
+ /* don't show any keyframe handles at all */
#define SIPO_NOHANDLES (1<<2)
+ /* don't show current frame number beside indicator line */
#define SIPO_NODRAWCFRANUM (1<<3)
+ /* show timing in seconds instead of frames */
#define SIPO_DRAWTIME (1<<4)
+ /* only show keyframes for selected F-Curves */
#define SIPO_SELCUVERTSONLY (1<<5)
+ /* draw names of F-Curves beside the respective curves */
+ /* NOTE: currently not used */
#define SIPO_DRAWNAMES (1<<6)
+ /* show sliders in channels list */
#define SIPO_SLIDERS (1<<7)
+ /* don't show the horizontal component of the cursor */
#define SIPO_NODRAWCURSOR (1<<8)
+ /* only show handles of selected keyframes */
+#define SIPO_SELVHANDLESONLY (1<<9)
+ /* temporary flag to force channel selections to be synced with main */
+#define SIPO_TEMP_NEEDCHANSYNC (1<<10)
/* SpaceIpo->mode (Graph Editor Mode) */
enum {
@@ -824,7 +841,7 @@ enum {
/* time->flag */
/* show timing in frames instead of in seconds */
#define TIME_DRAWFRAMES 1
- /* temporary flag set when scrubbing time */
+ /* show time indicator box beside the frame number */
#define TIME_CFRA_NUM 2
/* only keyframes from active/selected channels get shown */
#define TIME_ONLYACTSEL 4
@@ -855,6 +872,12 @@ enum {
#define SEQ_DRAW_GPENCIL 16
#define SEQ_NO_DRAW_CFRANUM 32
+/* sseq->view */
+#define SEQ_VIEW_SEQUENCE 1
+#define SEQ_VIEW_PREVIEW 2
+#define SEQ_VIEW_SEQUENCE_PREVIEW 3
+
+
/* space types, moved from DNA_screen_types.h */
enum {
SPACE_EMPTY,
diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h
index 85e0be4872a..558ab6b18c9 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -289,9 +289,12 @@ typedef struct UserDef {
char plugseqdir[160];
char pythondir[160];
char sounddir[160];
- /* yafray: temporary xml export directory */
- char yfexportdir[160];
- short versions, pad;
+ char anim_player[240]; // FILE_MAX length
+ int anim_player_preset;
+ int pad;
+
+ short versions;
+ short dbl_click_time;
int gameflags;
int wheellinescroll;
@@ -417,7 +420,9 @@ extern UserDef U; /* from blenkernel blender.c */
#define USER_SHOW_FPS (1 << 21)
#define USER_MMB_PASTE (1 << 22)
#define USER_MENUFIXEDORDER (1 << 23)
-#define USER_CONTINUOUS_MOUSE (1 << 24)
+#define USER_CONTINUOUS_MOUSE (1 << 24)
+#define USER_ZOOM_INVERT (1 << 25)
+#define USER_ZOOM_DOLLY_HORIZ (1 << 26)
/* Auto-Keying mode */
/* AUTOKEY_ON is a bitflag */
@@ -431,6 +436,7 @@ extern UserDef U; /* from blenkernel blender.c */
#define AUTOKEY_FLAG_INSERTAVAIL (1<<0)
#define AUTOKEY_FLAG_INSERTNEEDED (1<<1)
#define AUTOKEY_FLAG_AUTOMATKEY (1<<2)
+#define AUTOKEY_FLAG_XYZ2RGB (1<<3)
/* U.autokey_flag (strictly autokeying only) */
#define AUTOKEY_FLAG_ONLYKEYINGSET (1<<6)
/* toolsettings->autokey_flag */
diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h
index 74d9fa59e50..5326c17688d 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -190,7 +190,7 @@ typedef struct View3D {
#define V3D_DISPIMAGE 1
#define V3D_DISPBGPIC 2
#define V3D_HIDE_HELPLINES 4
-#define V3D_NEEDBACKBUFDRAW 8
+#define V3D_INVALID_BACKBUF 8
#define V3D_EDITMODE 16
#define V3D_VERTEXPAINT 32
#define V3D_FACESELECT 64
@@ -211,6 +211,7 @@ typedef struct View3D {
/* RegionView3d->rflag */
#define RV3D_FLYMODE 2
#define RV3D_CLIPPING 4
+#define RV3D_NAVIGATING 8
/* RegionView3d->viewlock */
#define RV3D_LOCKED 1
diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h
index 5cdd74c8262..48d67714f15 100644
--- a/source/blender/makesdna/DNA_windowmanager_types.h
+++ b/source/blender/makesdna/DNA_windowmanager_types.h
@@ -60,7 +60,7 @@ struct uiLayout;
#define OP_MAX_TYPENAME 64
#define KMAP_MAX_NAME 64
-
+/* keep in sync with 'wm_report_items' in wm_rna.c */
typedef enum ReportType {
RPT_DEBUG = 1<<0,
RPT_INFO = 1<<1,
@@ -123,7 +123,6 @@ typedef struct wmWindowManager {
ListBase keyconfigs; /* known key configurations */
struct wmKeyConfig *defaultconf; /* default configuration, not saved */
- int defaultactmap, pad2; /* active keymap from default for editing */
ListBase timers; /* active timers */
struct wmTimer *autosavetimer; /* timer for auto save */
@@ -139,7 +138,10 @@ typedef struct wmWindow {
void *ghostwin; /* dont want to include ghost.h stuff */
- int winid, pad; /* winid also in screens, is for retrieving this window after read */
+ int winid; /* winid also in screens, is for retrieving this window after read */
+
+ short grabcursor; /* cursor grab mode */
+ short pad;
struct bScreen *screen; /* active screen */
struct bScreen *newscreen; /* temporary when switching */
@@ -152,8 +154,8 @@ typedef struct wmWindow {
short cursor; /* current mouse cursor type */
short lastcursor; /* for temp waitcursor */
short addmousemove; /* internal: tag this for extra mousemove event, makes cursors/buttons active on UI switching */
- int pad3;
-
+ short pad2[2];
+
struct wmEvent *eventstate; /* storage for event system */
struct wmSubWindow *curswin; /* internal for wm_subwindow.c only */
@@ -178,64 +180,15 @@ typedef struct wmWindow {
#
typedef struct wmOperatorTypeMacro {
struct wmOperatorTypeMacro *next, *prev;
-
+
/* operator id */
char idname[MAX_ID_NAME];
/* rna pointer to access properties, like keymap */
struct IDProperty *properties; /* operator properties, assigned to ptr->data and can be written to a file */
- struct PointerRNA *ptr;
+ struct PointerRNA *ptr;
} wmOperatorTypeMacro;
-#
-#
-typedef struct wmOperatorType {
- struct wmOperatorType *next, *prev;
-
- char *name; /* text for ui, undo */
- char *idname; /* unique identifier */
- char *description; /* tooltips and python docs */
-
- /* this callback executes the operator without any interactive input,
- * parameters may be provided through operator properties. cannot use
- * any interface code or input device state.
- * - see defines below for return values */
- int (*exec)(struct bContext *, struct wmOperator *);
-
- /* for modal temporary operators, initially invoke is called. then
- * any further events are handled in modal. if the operation is
- * cancelled due to some external reason, cancel is called
- * - see defines below for return values */
- int (*invoke)(struct bContext *, struct wmOperator *, struct wmEvent *);
- int (*cancel)(struct bContext *, struct wmOperator *);
- int (*modal)(struct bContext *, struct wmOperator *, struct wmEvent *);
-
- /* verify if the operator can be executed in the current context, note
- * that the operator might still fail to execute even if this return true */
- int (*poll)(struct bContext *);
-
- /* optional panel for redo and repeat, autogenerated if not set */
- void (*ui)(struct bContext *, struct PointerRNA *, struct uiLayout *);
-
- /* rna for properties */
- struct StructRNA *srna;
-
- /* struct wmOperatorTypeMacro */
- ListBase macro;
-
- short flag;
-
- /* pointer to modal keymap, do not free! */
- struct wmKeyMap *modalkeymap;
-
- /* only used for operators defined with python
- * use to store pointers to python functions */
- void *pyop_data;
- int (*pyop_poll)(struct bContext *, struct wmOperatorType *ot);
-
-} wmOperatorType;
-
-
/* partial copy of the event, for matching by eventhandler */
typedef struct wmKeyMapItem {
struct wmKeyMapItem *next, *prev;
@@ -257,7 +210,9 @@ typedef struct wmKeyMapItem {
short flag;
/* runtime */
- short maptype, pad[2]; /* keymap editor */
+ short maptype; /* keymap editor */
+ short id; /* unique identifier */
+ short pad;
struct PointerRNA *ptr; /* rna pointer to access properties */
} wmKeyMapItem;
@@ -276,7 +231,7 @@ typedef struct wmKeyMap {
short regionid; /* see above */
short flag; /* general flags */
- short pad;
+ short kmi_id; /* last kmi id */
/* runtime */
int (*poll)(struct bContext *); /* verify if enabled in the current context */
@@ -284,8 +239,10 @@ typedef struct wmKeyMap {
} wmKeyMap;
/* wmKeyMap.flag */
-#define KEYMAP_MODAL 1 /* modal map, not using operatornames */
-#define KEYMAP_USER 2 /* user created keymap */
+#define KEYMAP_MODAL 1 /* modal map, not using operatornames */
+#define KEYMAP_USER 2 /* user created keymap */
+#define KEYMAP_EXPANDED 4
+#define KEYMAP_CHILDREN_EXPANDED 8
typedef struct wmKeyConfig {
struct wmKeyConfig *next, *prev;
@@ -293,6 +250,8 @@ typedef struct wmKeyConfig {
char idname[64]; /* unique name */
char basename[64]; /* idname of configuration this is derives from, "" if none */
+ char filter[64]; /* search term for filtering in the UI */
+
ListBase keymaps;
int actkeymap, flag;
} wmKeyConfig;
@@ -310,18 +269,19 @@ typedef struct wmOperator {
/* saved */
char idname[64]; /* used to retrieve type pointer */
IDProperty *properties; /* saved, user-settable properties */
-
+
/* runtime */
- wmOperatorType *type; /* operator type definition from idname */
+ struct wmOperatorType *type; /* operator type definition from idname */
void *customdata; /* custom storage, only while operator runs */
-
+
struct PointerRNA *ptr; /* rna pointer to access properties */
struct ReportList *reports; /* errors and warnings storage */
-
+
ListBase macro; /* list of operators, can be a tree */
struct wmOperator *opm; /* current running macro, not saved */
+ struct uiLayout *layout; /* runtime for drawing */
short flag, pad[3];
-
+
} wmOperator;
/* operator type exec(), invoke() modal(), return values */
@@ -334,40 +294,6 @@ typedef struct wmOperator {
/* wmOperator flag */
#define OP_GRAB_POINTER 1
-/* ************** wmEvent ************************ */
-/* for read-only rna access, dont save this */
-
-/* each event should have full modifier state */
-/* event comes from eventmanager and from keymap */
-typedef struct wmEvent {
- struct wmEvent *next, *prev;
-
- short type; /* event code itself (short, is also in keymap) */
- short val; /* press, release, scrollvalue */
- short x, y; /* mouse pointer position, screen coord */
- short mval[2]; /* region mouse position, name convention pre 2.5 :) */
- short prevx, prevy; /* previous mouse pointer position */
- short unicode; /* future, ghost? */
- char ascii; /* from ghost */
- char pad;
-
- /* modifier states */
- short shift, ctrl, alt, oskey; /* oskey is apple or windowskey, value denotes order of pressed */
- short keymodifier; /* rawkey modifier */
-
- short pad1;
-
- /* keymap item, set by handler (weak?) */
- const char *keymap_idname;
-
- /* custom data */
- short custom; /* custom data type, stylus, 6dof, see wm_event_types.h */
- short customdatafree;
- int pad2;
- void *customdata; /* ascii, unicode, mouse coords, angles, vectors, dragdrop info */
-
-} wmEvent;
-
typedef enum wmRadialControlMode {
WM_RADIALCONTROL_SIZE,
WM_RADIALCONTROL_STRENGTH,
diff --git a/source/blender/makesdna/DNA_world_types.h b/source/blender/makesdna/DNA_world_types.h
index 64ff23dd1a8..9b3f78caee0 100644
--- a/source/blender/makesdna/DNA_world_types.h
+++ b/source/blender/makesdna/DNA_world_types.h
@@ -107,6 +107,8 @@ typedef struct World {
short aomode, aosamp, aomix, aocolor;
float ao_adapt_thresh, ao_adapt_speed_fac;
float ao_approx_error, ao_approx_correction;
+ float ao_indirect_energy;
+ short ao_indirect_bounces, ao_pad;
short ao_samp_method, ao_gather_method, ao_approx_passes;
/* assorted settings (in the middle of ambient occlusion settings for padding reasons) */
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h
index f8d9b4d333b..fc374ff093a 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -38,6 +38,7 @@ struct bContext;
struct ID;
struct Main;
struct ReportList;
+struct Scene;
/* Types */
@@ -60,9 +61,9 @@ extern StructRNA RNA_ArmatureSensor;
extern StructRNA RNA_ArrayModifier;
extern StructRNA RNA_BackgroundImage;
extern StructRNA RNA_BevelModifier;
-extern StructRNA RNA_BezierCurvePoint;
-extern StructRNA RNA_BlendTexture;
+extern StructRNA RNA_BezierSplinePoint;
extern StructRNA RNA_BlenderRNA;
+extern StructRNA RNA_BlendTexture;
extern StructRNA RNA_BoidRule;
extern StructRNA RNA_BoidRuleAverageSpeed;
extern StructRNA RNA_BoidRuleAvoid;
@@ -168,8 +169,8 @@ extern StructRNA RNA_CopyRotationConstraint;
extern StructRNA RNA_CopyScaleConstraint;
extern StructRNA RNA_Curve;
extern StructRNA RNA_CurveMap;
-extern StructRNA RNA_CurveMapPoint;
extern StructRNA RNA_CurveMapping;
+extern StructRNA RNA_CurveMapPoint;
extern StructRNA RNA_CurveModifier;
extern StructRNA RNA_CurvePoint;
extern StructRNA RNA_DampedTrackConstraint;
@@ -183,8 +184,8 @@ extern StructRNA RNA_DriverTarget;
extern StructRNA RNA_DupliObject;
extern StructRNA RNA_EdgeSplitModifier;
extern StructRNA RNA_EditBone;
-extern StructRNA RNA_EffectSequence;
extern StructRNA RNA_EffectorWeights;
+extern StructRNA RNA_EffectSequence;
extern StructRNA RNA_EnumProperty;
extern StructRNA RNA_EnumPropertyItem;
extern StructRNA RNA_EnvironmentMap;
@@ -194,6 +195,13 @@ extern StructRNA RNA_ExplodeModifier;
extern StructRNA RNA_ExpressionController;
extern StructRNA RNA_FCurve;
extern StructRNA RNA_FCurveSample;
+extern StructRNA RNA_FieldSettings;
+extern StructRNA RNA_FileSelectParams;
+extern StructRNA RNA_FloatProperty;
+extern StructRNA RNA_FloorConstraint;
+extern StructRNA RNA_FluidFluidSettings;
+extern StructRNA RNA_FluidSettings;
+extern StructRNA RNA_FluidSimulationModifier;
extern StructRNA RNA_FModifier;
extern StructRNA RNA_FModifierCycles;
extern StructRNA RNA_FModifierEnvelope;
@@ -203,20 +211,8 @@ extern StructRNA RNA_FModifierGenerator;
extern StructRNA RNA_FModifierLimits;
extern StructRNA RNA_FModifierNoise;
extern StructRNA RNA_FModifierPython;
-extern StructRNA RNA_FModifierSound;
-extern StructRNA RNA_FieldSettings;
-extern StructRNA RNA_FileSelectParams;
-extern StructRNA RNA_FloatProperty;
-extern StructRNA RNA_FloorConstraint;
-extern StructRNA RNA_FluidFluidSettings;
-extern StructRNA RNA_FluidSettings;
-extern StructRNA RNA_FluidSimulationModifier;
extern StructRNA RNA_FollowPathConstraint;
extern StructRNA RNA_Function;
-extern StructRNA RNA_GPencilFrame;
-extern StructRNA RNA_GPencilLayer;
-extern StructRNA RNA_GPencilStroke;
-extern StructRNA RNA_GPencilStrokePoint;
extern StructRNA RNA_GameBooleanProperty;
extern StructRNA RNA_GameFloatProperty;
extern StructRNA RNA_GameIntProperty;
@@ -226,6 +222,10 @@ extern StructRNA RNA_GameSoftBodySettings;
extern StructRNA RNA_GameStringProperty;
extern StructRNA RNA_GameTimerProperty;
extern StructRNA RNA_GlowSequence;
+extern StructRNA RNA_GPencilFrame;
+extern StructRNA RNA_GPencilLayer;
+extern StructRNA RNA_GPencilStroke;
+extern StructRNA RNA_GPencilStrokePoint;
extern StructRNA RNA_GreasePencil;
extern StructRNA RNA_Group;
extern StructRNA RNA_Header;
@@ -245,12 +245,12 @@ extern StructRNA RNA_IntProperty;
extern StructRNA RNA_Itasc;
extern StructRNA RNA_JoystickSensor;
extern StructRNA RNA_Key;
-extern StructRNA RNA_KeyConfig;
-extern StructRNA RNA_KeyMap;
-extern StructRNA RNA_KeyMapItem;
extern StructRNA RNA_KeyboardSensor;
+extern StructRNA RNA_KeyConfig;
extern StructRNA RNA_KeyingSet;
extern StructRNA RNA_KeyingSetPath;
+extern StructRNA RNA_KeyMap;
+extern StructRNA RNA_KeyMapItem;
extern StructRNA RNA_KinematicConstraint;
extern StructRNA RNA_Lamp;
extern StructRNA RNA_LampSkySettings;
@@ -310,8 +310,8 @@ extern StructRNA RNA_NearSensor;
extern StructRNA RNA_NlaStrip;
extern StructRNA RNA_NlaTrack;
extern StructRNA RNA_Node;
-extern StructRNA RNA_NodeTree;
extern StructRNA RNA_NodeSocket;
+extern StructRNA RNA_NodeTree;
extern StructRNA RNA_NoiseTexture;
extern StructRNA RNA_NorController;
extern StructRNA RNA_Nurb;
@@ -323,6 +323,7 @@ extern StructRNA RNA_OperatorFileListElement;
extern StructRNA RNA_OperatorMousePath;
extern StructRNA RNA_OperatorProperties;
extern StructRNA RNA_OperatorStrokeElement;
+extern StructRNA RNA_OperatorTypeMacro;
extern StructRNA RNA_OrController;
extern StructRNA RNA_OutflowFluidSettings;
extern StructRNA RNA_PackedFile;
@@ -345,8 +346,8 @@ extern StructRNA RNA_PluginTexture;
extern StructRNA RNA_PointCache;
extern StructRNA RNA_PointDensity;
extern StructRNA RNA_PointDensityTexture;
-extern StructRNA RNA_PointLamp;
extern StructRNA RNA_PointerProperty;
+extern StructRNA RNA_PointLamp;
extern StructRNA RNA_Pose;
extern StructRNA RNA_PoseBone;
extern StructRNA RNA_Property;
@@ -415,9 +416,9 @@ extern StructRNA RNA_SmokeModifier;
extern StructRNA RNA_SmoothModifier;
extern StructRNA RNA_SoftBodyModifier;
extern StructRNA RNA_SoftBodySettings;
+extern StructRNA RNA_SolidifyModifier;
extern StructRNA RNA_Sound;
extern StructRNA RNA_SoundSequence;
-extern StructRNA RNA_SplineIKConstraint;
extern StructRNA RNA_Space;
extern StructRNA RNA_Space3DView;
extern StructRNA RNA_SpaceConsole;
@@ -434,9 +435,10 @@ extern StructRNA RNA_SpaceProperties;
extern StructRNA RNA_SpaceSequenceEditor;
extern StructRNA RNA_SpaceTextEditor;
extern StructRNA RNA_SpaceTimeline;
-extern StructRNA RNA_SpaceUVEditor;
extern StructRNA RNA_SpaceUserPreferences;
+extern StructRNA RNA_SpaceUVEditor;
extern StructRNA RNA_SpeedControlSequence;
+extern StructRNA RNA_SplineIKConstraint;
extern StructRNA RNA_SpotLamp;
extern StructRNA RNA_StretchToConstraint;
extern StructRNA RNA_StringProperty;
@@ -509,8 +511,6 @@ extern StructRNA RNA_TransformConstraint;
extern StructRNA RNA_TransformSequence;
extern StructRNA RNA_UILayout;
extern StructRNA RNA_UIListItem;
-extern StructRNA RNA_UVProjectModifier;
-extern StructRNA RNA_UVProjector;
extern StructRNA RNA_UnitSettings;
extern StructRNA RNA_UnknownType;
extern StructRNA RNA_UserPreferences;
@@ -519,6 +519,8 @@ extern StructRNA RNA_UserPreferencesFilePaths;
extern StructRNA RNA_UserPreferencesSystem;
extern StructRNA RNA_UserPreferencesView;
extern StructRNA RNA_UserSolidLight;
+extern StructRNA RNA_UVProjectModifier;
+extern StructRNA RNA_UVProjector;
extern StructRNA RNA_ValueNodeSocket;
extern StructRNA RNA_VectorFont;
extern StructRNA RNA_VectorNodeSocket;
@@ -584,7 +586,7 @@ void *RNA_struct_blender_type_get(StructRNA *srna);
void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type);
struct IDProperty *RNA_struct_idproperties(PointerRNA *ptr, int create);
-int RNA_struct_idproperties_check(PointerRNA *ptr);
+int RNA_struct_idproperties_check(StructRNA *srna);
PropertyRNA *RNA_struct_find_property(PointerRNA *ptr, const char *identifier);
@@ -615,6 +617,7 @@ int RNA_property_array_check(PointerRNA *ptr, PropertyRNA *prop);
int RNA_property_multi_array_length(PointerRNA *ptr, PropertyRNA *prop, int dimension);
int RNA_property_array_dimension(PointerRNA *ptr, PropertyRNA *prop, int length[]);
char RNA_property_array_item_char(PropertyRNA *prop, int index);
+int RNA_property_array_item_index(PropertyRNA *prop, char name);
int RNA_property_string_maxlength(PropertyRNA *prop);
@@ -631,19 +634,23 @@ void RNA_property_float_range(PointerRNA *ptr, PropertyRNA *prop, float *hardmin
void RNA_property_float_ui_range(PointerRNA *ptr, PropertyRNA *prop, float *softmin, float *softmax, float *step, float *precision);
int RNA_enum_identifier(EnumPropertyItem *item, const int value, const char **identifier);
+int RNA_enum_bitflag_identifierss(EnumPropertyItem *item, const int value, const char **identifier);
int RNA_enum_name(EnumPropertyItem *item, const int value, const char **name);
void RNA_property_enum_items(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, EnumPropertyItem **item, int *totitem, int *free);
int RNA_property_enum_value(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const char *identifier, int *value);
int RNA_property_enum_identifier(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier);
+int RNA_property_enum_bitflag_identifiers(struct bContext *C, 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_editable_index(PointerRNA *ptr, PropertyRNA *prop, int index);
int RNA_property_animateable(PointerRNA *ptr, PropertyRNA *prop);
int RNA_property_animated(PointerRNA *ptr, PropertyRNA *prop);
void RNA_property_update(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop);
+void RNA_property_update_main(struct Main *bmain, struct Scene *scene, PointerRNA *ptr, PropertyRNA *prop);
/* Property Data */
@@ -653,6 +660,9 @@ void RNA_property_boolean_get_array(PointerRNA *ptr, PropertyRNA *prop, int *val
int RNA_property_boolean_get_index(PointerRNA *ptr, PropertyRNA *prop, int index);
void RNA_property_boolean_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *values);
void RNA_property_boolean_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, int value);
+int RNA_property_boolean_get_default(PointerRNA *ptr, PropertyRNA *prop);
+void RNA_property_boolean_get_default_array(PointerRNA *ptr, PropertyRNA *prop, int *values);
+int RNA_property_boolean_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index);
int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop);
void RNA_property_int_set(PointerRNA *ptr, PropertyRNA *prop, int value);
@@ -660,6 +670,9 @@ void RNA_property_int_get_array(PointerRNA *ptr, PropertyRNA *prop, int *values)
int RNA_property_int_get_index(PointerRNA *ptr, PropertyRNA *prop, int index);
void RNA_property_int_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *values);
void RNA_property_int_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, int value);
+int RNA_property_int_get_default(PointerRNA *ptr, PropertyRNA *prop);
+void RNA_property_int_get_default_array(PointerRNA *ptr, PropertyRNA *prop, int *values);
+int RNA_property_int_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index);
float RNA_property_float_get(PointerRNA *ptr, PropertyRNA *prop);
void RNA_property_float_set(PointerRNA *ptr, PropertyRNA *prop, float value);
@@ -667,17 +680,23 @@ void RNA_property_float_get_array(PointerRNA *ptr, PropertyRNA *prop, float *val
float RNA_property_float_get_index(PointerRNA *ptr, PropertyRNA *prop, int index);
void RNA_property_float_set_array(PointerRNA *ptr, PropertyRNA *prop, const float *values);
void RNA_property_float_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, float value);
+float RNA_property_float_get_default(PointerRNA *ptr, PropertyRNA *prop);
+void RNA_property_float_get_default_array(PointerRNA *ptr, PropertyRNA *prop, float *values);
+float RNA_property_float_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index);
void RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop, char *value);
char *RNA_property_string_get_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen);
-int RNA_property_string_length(PointerRNA *ptr, PropertyRNA *prop);
void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *value);
+int RNA_property_string_length(PointerRNA *ptr, PropertyRNA *prop);
+// TODO: get default strings...
int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop);
void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value);
+int RNA_property_enum_get_default(PointerRNA *ptr, PropertyRNA *prop);
PointerRNA RNA_property_pointer_get(PointerRNA *ptr, PropertyRNA *prop);
void RNA_property_pointer_set(PointerRNA *ptr, PropertyRNA *prop, PointerRNA ptr_value);
+// TODO: get default pointers...
void RNA_property_collection_begin(PointerRNA *ptr, PropertyRNA *prop, CollectionPropertyIterator *iter);
void RNA_property_collection_next(CollectionPropertyIterator *iter);
@@ -703,6 +722,10 @@ void RNA_property_collection_add(PointerRNA *ptr, PropertyRNA *prop, PointerRNA
int RNA_property_collection_remove(PointerRNA *ptr, PropertyRNA *prop, int key);
void RNA_property_collection_clear(PointerRNA *ptr, PropertyRNA *prop);
+/* copy/reset */
+int RNA_property_copy(PointerRNA *ptr, PointerRNA *fromptr, PropertyRNA *prop, int index);
+int RNA_property_reset(PointerRNA *ptr, PropertyRNA *prop, int index);
+
/* Path
*
* Experimental method to refer to structs and properties with a string,
@@ -717,7 +740,10 @@ char *RNA_path_append(const char *path, PointerRNA *ptr, PropertyRNA *prop,
char *RNA_path_back(const char *path);
int RNA_path_resolve(PointerRNA *ptr, const char *path,
- PointerRNA *r_ptr, PropertyRNA **r_prop);
+ PointerRNA *r_ptr, PropertyRNA **r_prop);
+
+int RNA_path_resolve_full(PointerRNA *ptr, const char *path,
+ PointerRNA *r_ptr, PropertyRNA **r_prop, int *index);
char *RNA_path_from_ID_to_struct(PointerRNA *ptr);
char *RNA_path_from_ID_to_property(PointerRNA *ptr, PropertyRNA *prop);
diff --git a/source/blender/makesrna/RNA_define.h b/source/blender/makesrna/RNA_define.h
index 5ed0fb5194d..37abe44f128 100644
--- a/source/blender/makesrna/RNA_define.h
+++ b/source/blender/makesrna/RNA_define.h
@@ -155,6 +155,7 @@ void RNA_def_property_ui_icon(PropertyRNA *prop, int icon, int consecutive);
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *updatefunc);
void RNA_def_property_editable_func(PropertyRNA *prop, const char *editable);
+void RNA_def_property_editable_array_func(PropertyRNA *prop, const char *editable);
void RNA_def_property_dynamic_array_funcs(PropertyRNA *prop, const char *getlength);
void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set);
diff --git a/source/blender/makesrna/RNA_enum_types.h b/source/blender/makesrna/RNA_enum_types.h
index 13e2d5a2dc2..55ebf014b64 100644
--- a/source/blender/makesrna/RNA_enum_types.h
+++ b/source/blender/makesrna/RNA_enum_types.h
@@ -38,7 +38,9 @@ extern EnumPropertyItem object_mode_items[];
extern EnumPropertyItem proportional_falloff_items[];
extern EnumPropertyItem proportional_editing_items[];
-extern EnumPropertyItem snap_mode_items[];
+extern EnumPropertyItem snap_target_items[];
+extern EnumPropertyItem snap_element_items[];
+extern EnumPropertyItem mesh_select_mode_items[];
extern EnumPropertyItem space_type_items[];
extern EnumPropertyItem region_type_items[];
extern EnumPropertyItem modifier_type_items[];
@@ -58,6 +60,7 @@ extern EnumPropertyItem nla_mode_blend_items[];
extern EnumPropertyItem event_value_items[];
extern EnumPropertyItem event_type_items[];
+extern EnumPropertyItem operator_return_items[];
extern EnumPropertyItem brush_sculpt_tool_items[];
@@ -69,6 +72,8 @@ extern EnumPropertyItem space_type_items[];
extern EnumPropertyItem keymap_propvalue_items[];
+extern EnumPropertyItem wm_report_items[];
+
struct bContext;
struct PointerRNA;
EnumPropertyItem *rna_TransformOrientation_itemf(struct bContext *C, struct PointerRNA *ptr, int *free);
diff --git a/source/blender/makesrna/RNA_types.h b/source/blender/makesrna/RNA_types.h
index 5e29827270f..90603f98c7a 100644
--- a/source/blender/makesrna/RNA_types.h
+++ b/source/blender/makesrna/RNA_types.h
@@ -84,8 +84,11 @@ typedef enum PropertyUnit {
PROP_UNIT_ACCELERATION = (8<<16) /* m/(s^2) */
} PropertyUnit;
-#define RNA_SUBTYPE_UNIT(subtype) (subtype & 0x00FF0000)
-#define RNA_SUBTYPE_UNIT_VALUE(subtype) (subtype>>16)
+#define RNA_SUBTYPE_UNIT(subtype) ((subtype) & 0x00FF0000)
+#define RNA_SUBTYPE_VALUE(subtype) ((subtype) & ~0x00FF0000)
+#define RNA_SUBTYPE_UNIT_VALUE(subtype) ((subtype)>>16)
+
+#define RNA_ENUM_BITFLAG_SIZE 32
/* also update rna_property_subtypename when you change this */
typedef enum PropertySubType {
@@ -115,7 +118,7 @@ typedef enum PropertySubType {
PROP_QUATERNION = 27,
PROP_AXISANGLE = 28,
PROP_XYZ = 29,
- PROP_RGB = 30,
+ PROP_COLOR_GAMMA = 30,
/* booleans */
PROP_LAYER = 40,
@@ -140,7 +143,7 @@ typedef enum PropertyFlag {
PROP_ANIMATEABLE = 1<<1,
/* icon */
- PROP_ICONS_CONSECUTIVE = 1<12,
+ PROP_ICONS_CONSECUTIVE = 1<<12,
/* hidden in the user interface */
PROP_HIDDEN = 1<<19,
@@ -161,6 +164,17 @@ typedef enum PropertyFlag {
PROP_ID_SELF_CHECK = 1<<20,
PROP_NEVER_NULL = 1<<18,
+ /* flag contains multiple enums.
+ * note: not to be confused with prop->enumbitflags
+ * this exposes the flag as multiple options in python and the UI.
+ *
+ * note: these can't be animated so use with care.
+ */
+ PROP_ENUM_FLAG = 1<<21,
+
+ /* need context for update function */
+ PROP_CONTEXT_UPDATE = 1<<22,
+
/* internal flags */
PROP_BUILTIN = 1<<7,
PROP_EXPORT = 1<<8,
diff --git a/source/blender/makesrna/intern/Makefile b/source/blender/makesrna/intern/Makefile
index e597046c8ba..74427cb1a14 100644
--- a/source/blender/makesrna/intern/Makefile
+++ b/source/blender/makesrna/intern/Makefile
@@ -76,7 +76,7 @@ ifeq ($(WITH_OPENJPEG), true)
endif
ifeq ($(WITH_QUICKTIME), true)
- CPPFLAGS += -DWITH_QUICKTIME
+ CPPFLAGS += -DWITH_QUICKTIME -I../../quicktime
endif
ifeq ($(WITH_SDL),true)
diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c
index 526178d7b26..5bdfe228e89 100644
--- a/source/blender/makesrna/intern/makesrna.c
+++ b/source/blender/makesrna/intern/makesrna.c
@@ -1430,7 +1430,7 @@ static const char *rna_property_subtypename(PropertyType type)
case PROP_VELOCITY: return "PROP_VELOCITY";
case PROP_ACCELERATION: return "PROP_ACCELERATION";
case PROP_XYZ: return "PROP_XYZ";
- case PROP_RGB: return "PROP_RGB";
+ case PROP_COLOR_GAMMA: return "PROP_COLOR_GAMMA";
case PROP_LAYER: return "PROP_LAYER";
case PROP_LAYER_MEMBER: return "PROP_LAYER_MEMBER";
default: {
@@ -1763,7 +1763,7 @@ static void rna_generate_property(FILE *f, StructRNA *srna, const char *nest, Pr
rna_print_c_string(f, prop->description); fprintf(f, ",\n\t");
fprintf(f, "%d,\n", prop->icon);
fprintf(f, "\t%s, %s|%s, %s, %d, {%d, %d, %d}, %d,\n", rna_property_typename(prop->type), rna_property_subtypename(prop->subtype), rna_property_subtype_unit(prop->subtype), rna_function_string(prop->getlength), prop->arraydimension, prop->arraylength[0], prop->arraylength[1], prop->arraylength[2], prop->totarraylength);
- fprintf(f, "\t%s, %d, %s,\n", rna_function_string(prop->update), prop->noteflag, rna_function_string(prop->editable));
+ fprintf(f, "\t%s%s, %d, %s, %s,\n", (prop->flag & PROP_CONTEXT_UPDATE)? "(UpdateFunc)": "", rna_function_string(prop->update), prop->noteflag, rna_function_string(prop->editable), rna_function_string(prop->itemeditable));
if(prop->flag & PROP_RAW_ACCESS) rna_set_raw_offset(f, srna, prop);
else fprintf(f, "\t0, 0");
@@ -1984,7 +1984,7 @@ RNAProcessItem PROCESS_ITEMS[]= {
{"rna_action.c", "rna_action_api.c", RNA_def_action},
{"rna_animation.c", "rna_animation_api.c", RNA_def_animation},
{"rna_actuator.c", NULL, RNA_def_actuator},
- {"rna_armature.c", NULL, RNA_def_armature},
+ {"rna_armature.c", "rna_armature_api.c", RNA_def_armature},
{"rna_boid.c", NULL, RNA_def_boid},
{"rna_brush.c", NULL, RNA_def_brush},
{"rna_camera.c", NULL, RNA_def_camera},
@@ -2020,7 +2020,7 @@ RNAProcessItem PROCESS_ITEMS[]= {
{"rna_screen.c", NULL, RNA_def_screen},
{"rna_sculpt_paint.c", NULL, RNA_def_sculpt_paint},
{"rna_sensor.c", NULL, RNA_def_sensor},
- {"rna_sequence.c", NULL, RNA_def_sequence},
+ {"rna_sequencer.c", NULL, RNA_def_sequencer},
{"rna_smoke.c", NULL, RNA_def_smoke},
{"rna_space.c", NULL, RNA_def_space},
{"rna_test.c", NULL, RNA_def_test},
@@ -2050,11 +2050,13 @@ static void rna_generate(BlenderRNA *brna, FILE *f, char *filename, char *api_fi
fprintf(f, "#include <stddef.h>\n\n");
fprintf(f, "#include \"DNA_ID.h\"\n");
+ fprintf(f, "#include \"DNA_scene_types.h\"\n");
fprintf(f, "#include \"BLI_blenlib.h\"\n\n");
fprintf(f, "#include \"BKE_context.h\"\n");
fprintf(f, "#include \"BKE_library.h\"\n");
+ fprintf(f, "#include \"BKE_main.h\"\n");
fprintf(f, "#include \"BKE_report.h\"\n");
fprintf(f, "#include \"BKE_utildefines.h\"\n\n");
diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c
index cb1a1211d24..a250f0a49b4 100644
--- a/source/blender/makesrna/intern/rna_ID.c
+++ b/source/blender/makesrna/intern/rna_ID.c
@@ -31,6 +31,8 @@
#include "DNA_ID.h"
+#include "WM_types.h"
+
#include "rna_internal.h"
/* enum of ID-block types
@@ -203,6 +205,15 @@ StructRNA *rna_IDPropertyGroup_register(const bContext *C, ReportList *reports,
if(validate(&dummyptr, data, NULL) != 0)
return NULL;
+ /* note: it looks like there is no length limit on the srna id since its
+ * just a char pointer, but take care here, also be careful that python
+ * owns the string pointer which it could potentually free while blender
+ * is running. */
+ if(strlen(identifier) >= sizeof(((IDProperty *)NULL)->name)) {
+ BKE_reportf(reports, RPT_ERROR, "registering id property class: '%s' is too long, maximum length is %d.", identifier, sizeof(((IDProperty *)NULL)->name));
+ return NULL;
+ }
+
return RNA_def_struct(&BLENDER_RNA, identifier, "IDPropertyGroup"); // XXX
}
@@ -223,6 +234,40 @@ ID *rna_ID_copy(ID *id)
return NULL;
}
+static int rna_IDPropertyGroup_name_length(PointerRNA *ptr)
+{
+ IDProperty *group=(IDProperty*)ptr->id.data;
+ IDProperty *idprop;
+ idprop= IDP_GetPropertyFromGroup(group, "name");
+
+ if(idprop && idprop->type == IDP_STRING)
+ return strlen(idprop->data.pointer);
+ else
+ return 0;
+}
+
+static void rna_IDPropertyGroup_name_get(PointerRNA *ptr, char *str)
+{
+ IDProperty *group=(IDProperty*)ptr->id.data;
+ IDProperty *idprop;
+ idprop= IDP_GetPropertyFromGroup(group, "name");
+
+ if(idprop && idprop->type == IDP_STRING)
+ strcpy(str, idprop->data.pointer);
+ else
+ str[0]= '\0';
+}
+
+void rna_IDPropertyGroup_name_set(PointerRNA *ptr, const char *value)
+{
+ IDProperty *group=(IDProperty*)ptr->id.data;
+ IDProperty *idprop;
+ IDPropertyTemplate val = {0};
+ val.str= (char *)value;
+ idprop = IDP_New(IDP_STRING, val, "name");
+ IDP_ReplaceInGroup(group, idprop);
+}
+
#else
static void rna_def_ID_properties(BlenderRNA *brna)
@@ -273,6 +318,15 @@ static void rna_def_ID_properties(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_EXPORT|PROP_IDPROPERTY);
RNA_def_property_struct_type(prop, "IDPropertyGroup");
+ // never tested, maybe its useful to have this?
+#if 0
+ prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+ RNA_def_property_flag(prop, PROP_EXPORT|PROP_IDPROPERTY);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Name", "Unique name used in the code and scripting.");
+ RNA_def_struct_name_property(srna, prop);
+#endif
+
/* IDP_ID -- not implemented yet in id properties */
/* ID property groups > level 0, since level 0 group is merged
@@ -283,6 +337,16 @@ static void rna_def_ID_properties(BlenderRNA *brna)
RNA_def_struct_idproperties_func(srna, "rna_IDPropertyGroup_idproperties");
RNA_def_struct_register_funcs(srna, "rna_IDPropertyGroup_register", "rna_IDPropertyGroup_unregister");
RNA_def_struct_refine_func(srna, "rna_IDPropertyGroup_refine");
+
+ /* important so python types can have their name used in list views
+ * however this isnt prefect because it overrides how python would set the name
+ * when we only really want this so RNA_def_struct_name_property() is set to something useful */
+ prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+ RNA_def_property_flag(prop, PROP_EXPORT|PROP_IDPROPERTY);
+ //RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Name", "Unique name used in the code and scripting.");
+ RNA_def_property_string_funcs(prop, "rna_IDPropertyGroup_name_get", "rna_IDPropertyGroup_name_length", "rna_IDPropertyGroup_name_set");
+ RNA_def_struct_name_property(srna, prop);
}
static void rna_def_ID(BlenderRNA *brna)
@@ -301,6 +365,7 @@ static void rna_def_ID(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Name", "Unique datablock ID name.");
RNA_def_property_string_funcs(prop, "rna_ID_name_get", "rna_ID_name_length", "rna_ID_name_set");
RNA_def_property_string_maxlength(prop, sizeof(((ID*)NULL)->name)-2);
+ RNA_def_property_update(prop, NC_ID|NA_RENAME, NULL);
RNA_def_struct_name_property(srna, prop);
prop= RNA_def_property(srna, "users", PROP_INT, PROP_UNSIGNED);
diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c
index ce2e256004e..9cc08b297e5 100644
--- a/source/blender/makesrna/intern/rna_access.c
+++ b/source/blender/makesrna/intern/rna_access.c
@@ -24,10 +24,12 @@
#include <stdlib.h>
#include <string.h>
+#include <ctype.h>
#include "MEM_guardedalloc.h"
#include "DNA_ID.h"
+#include "DNA_scene_types.h"
#include "DNA_windowmanager_types.h"
#include "BLI_blenlib.h"
@@ -36,6 +38,7 @@
#include "BKE_context.h"
#include "BKE_idprop.h"
+#include "BKE_main.h"
#include "BKE_report.h"
#include "BKE_utildefines.h"
@@ -223,10 +226,9 @@ IDProperty *RNA_struct_idproperties(PointerRNA *ptr, int create)
return NULL;
}
-int RNA_struct_idproperties_check(PointerRNA *ptr)
+int RNA_struct_idproperties_check(StructRNA *srna)
{
- StructRNA *type= ptr->type;
- return (type && type->idproperties) ? 1 : 0;
+ return (srna && srna->idproperties) ? 1 : 0;
}
static IDProperty *rna_idproperty_find(PointerRNA *ptr, const char *name)
@@ -504,7 +506,7 @@ int RNA_struct_is_a(StructRNA *type, StructRNA *srna)
PropertyRNA *RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
{
- if(identifier[0]=='[' && identifier[1]=='"') {
+ if(identifier[0]=='[' && identifier[1]=='"') { // " (dummy comment to avoid confusing some function lists in text editors)
/* id prop lookup, not so common */
PropertyRNA *r_prop= NULL;
PointerRNA r_ptr; /* only support single level props */
@@ -692,10 +694,58 @@ char RNA_property_array_item_char(PropertyRNA *prop, int index)
return quatitem[index];
else if((index < 4) && ELEM6(subtype, PROP_TRANSLATION, PROP_DIRECTION, PROP_XYZ, PROP_EULER, PROP_VELOCITY, PROP_ACCELERATION))
return vectoritem[index];
- else if ((index < 4) && ELEM(subtype, PROP_COLOR, PROP_RGB))
+ else if ((index < 4) && ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA))
return coloritem[index];
- else
- return '\0';
+
+ return '\0';
+}
+
+int RNA_property_array_item_index(PropertyRNA *prop, char name)
+{
+ PropertySubType subtype= rna_ensure_property(prop)->subtype;
+
+ name= toupper(name);
+
+ /* get index based on string name/alias */
+ /* maybe a function to find char index in string would be better than all the switches */
+ if (ELEM(subtype, PROP_QUATERNION, PROP_AXISANGLE)) {
+ switch (name) {
+ case 'W':
+ return 0;
+ case 'X':
+ return 1;
+ case 'Y':
+ return 2;
+ case 'Z':
+ return 3;
+ }
+ }
+ else if(ELEM6(subtype, PROP_TRANSLATION, PROP_DIRECTION, PROP_XYZ, PROP_EULER, PROP_VELOCITY, PROP_ACCELERATION)) {
+ switch (name) {
+ case 'X':
+ return 0;
+ case 'Y':
+ return 1;
+ case 'Z':
+ return 2;
+ case 'W':
+ return 3;
+ }
+ }
+ else if (ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA)) {
+ switch (name) {
+ case 'R':
+ return 0;
+ case 'G':
+ return 1;
+ case 'B':
+ return 2;
+ case 'A':
+ return 3;
+ }
+ }
+
+ return -1;
}
void RNA_property_int_range(PointerRNA *ptr, PropertyRNA *prop, int *hardmin, int *hardmax)
@@ -834,6 +884,7 @@ void RNA_property_float_ui_range(PointerRNA *ptr, PropertyRNA *prop, float *soft
*precision= (float)fprop->precision;
}
+/* this is the max length including \0 terminator */
int RNA_property_string_maxlength(PropertyRNA *prop)
{
StringPropertyRNA *sprop= (StringPropertyRNA*)rna_ensure_property(prop);
@@ -894,22 +945,24 @@ void RNA_property_enum_items(bContext *C, PointerRNA *ptr, PropertyRNA *prop, En
int RNA_property_enum_value(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const char *identifier, int *value)
{
- EnumPropertyItem *item;
- int free;
+ EnumPropertyItem *item, *item_array;
+ int free, found;
- RNA_property_enum_items(C, ptr, prop, &item, NULL, &free);
+ RNA_property_enum_items(C, ptr, prop, &item_array, NULL, &free);
- for(; item->identifier; item++) {
+ for(item= item_array; item->identifier; item++) {
if(item->identifier[0] && strcmp(item->identifier, identifier)==0) {
*value = item->value;
- return 1;
+ break;
}
}
+
+ found= (item->identifier != NULL); /* could be alloc'd, assign before free */
if(free)
- MEM_freeN(item);
+ MEM_freeN(item_array);
- return 0;
+ return found;
}
int RNA_enum_identifier(EnumPropertyItem *item, const int value, const char **identifier)
@@ -923,6 +976,18 @@ int RNA_enum_identifier(EnumPropertyItem *item, const int value, const char **id
return 0;
}
+int RNA_enum_bitflag_identifiers(EnumPropertyItem *item, const int value, const char **identifier)
+{
+ int index= 0;
+ for (; item->identifier; item++) {
+ if(item->identifier[0] && item->value & value) {
+ identifier[index++] = item->identifier;
+ }
+ }
+ identifier[index]= NULL;
+ return index;
+}
+
int RNA_enum_name(EnumPropertyItem *item, const int value, const char **name)
{
for (; item->identifier; item++) {
@@ -950,6 +1015,22 @@ int RNA_property_enum_identifier(bContext *C, PointerRNA *ptr, PropertyRNA *prop
return 0;
}
+int RNA_property_enum_bitflag_identifiers(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier)
+{
+ EnumPropertyItem *item= NULL;
+ int result, free;
+
+ RNA_property_enum_items(C, ptr, prop, &item, NULL, &free);
+ if(item) {
+ result= RNA_enum_bitflag_identifiers(item, value, identifier);
+ if(free)
+ MEM_freeN(item);
+
+ return result;
+ }
+ return 0;
+}
+
const char *RNA_property_ui_name(PropertyRNA *prop)
{
return rna_ensure_property_name(prop);
@@ -982,6 +1063,26 @@ int RNA_property_editable(PointerRNA *ptr, PropertyRNA *prop)
return (flag & PROP_EDITABLE) && (!id || !id->lib || (flag & PROP_LIB_EXCEPTION));
}
+/* same as RNA_property_editable(), except this checks individual items in an array */
+int RNA_property_editable_index(PointerRNA *ptr, PropertyRNA *prop, int index)
+{
+ ID *id;
+ int flag;
+
+ prop= rna_ensure_property(prop);
+
+ /* if there is no function to do this for a given index,
+ * just resort to doing this on the whole array
+ */
+ if (prop->itemeditable == NULL)
+ return RNA_property_editable(ptr, prop);
+
+ flag= prop->itemeditable(ptr, index);
+ id= ptr->id.data;
+
+ return (flag & PROP_EDITABLE) && (!id || !id->lib || (flag & PROP_LIB_EXCEPTION));
+}
+
int RNA_property_animateable(PointerRNA *ptr, PropertyRNA *prop)
{
int flag;
@@ -1006,23 +1107,41 @@ int RNA_property_animated(PointerRNA *ptr, PropertyRNA *prop)
return 0;
}
-void RNA_property_update(bContext *C, PointerRNA *ptr, PropertyRNA *prop)
+static void rna_property_update(bContext *C, Main *bmain, Scene *scene, PointerRNA *ptr, PropertyRNA *prop)
{
int is_rna = (prop->magic == RNA_MAGIC);
prop= rna_ensure_property(prop);
if(is_rna) {
- if(prop->update)
- prop->update(C, ptr);
+ if(prop->update) {
+ /* ideally no context would be needed for update, but there's some
+ parts of the code that need it still, so we have this exception */
+ if(prop->flag & PROP_CONTEXT_UPDATE) {
+ if(C) ((ContextUpdateFunc)prop->update)(C, ptr);
+ }
+ else
+ prop->update(bmain, scene, ptr);
+ }
if(prop->noteflag)
- WM_event_add_notifier(C, prop->noteflag, ptr->id.data);
+ WM_main_add_notifier(prop->noteflag, ptr->id.data);
}
else {
/* WARNING! This is so property drivers update the display!
* not especially nice */
DAG_id_flush_update(ptr->id.data, OB_RECALC_OB);
- WM_event_add_notifier(C, NC_WINDOW, NULL);
+ WM_main_add_notifier(NC_WINDOW, NULL);
}
+
+}
+
+void RNA_property_update(bContext *C, PointerRNA *ptr, PropertyRNA *prop)
+{
+ rna_property_update(C, CTX_data_main(C), CTX_data_scene(C), ptr, prop);
+}
+
+void RNA_property_update_main(Main *bmain, Scene *scene, PointerRNA *ptr, PropertyRNA *prop)
+{
+ rna_property_update(NULL, bmain, scene, ptr, prop);
}
/* Property Data */
@@ -1158,6 +1277,45 @@ void RNA_property_boolean_set_index(PointerRNA *ptr, PropertyRNA *prop, int inde
}
}
+int RNA_property_boolean_get_default(PointerRNA *ptr, PropertyRNA *prop)
+{
+ BooleanPropertyRNA *bprop= (BooleanPropertyRNA*)prop;
+ return bprop->defaultvalue;
+}
+
+void RNA_property_boolean_get_default_array(PointerRNA *ptr, PropertyRNA *prop, int *values)
+{
+ BooleanPropertyRNA *bprop= (BooleanPropertyRNA*)prop;
+
+ if(prop->arraydimension == 0)
+ values[0]= bprop->defaultvalue;
+ else if(bprop->defaultarray)
+ memcpy(values, bprop->defaultarray, sizeof(int)*prop->totarraylength);
+ else
+ memset(values, 0, sizeof(int)*prop->totarraylength);
+}
+
+int RNA_property_boolean_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index)
+{
+ int tmp[RNA_MAX_ARRAY_LENGTH];
+ int len= rna_ensure_property_array_length(ptr, prop);
+
+ if(len <= RNA_MAX_ARRAY_LENGTH) {
+ RNA_property_boolean_get_default_array(ptr, prop, tmp);
+ return tmp[index];
+ }
+ else {
+ int *tmparray, value;
+
+ tmparray= MEM_callocN(sizeof(int)*len, "RNA_property_boolean_get_default_index");
+ RNA_property_boolean_get_default_array(ptr, prop, tmparray);
+ value= tmparray[index];
+ MEM_freeN(tmparray);
+
+ return value;
+ }
+}
+
int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop)
{
IntPropertyRNA *iprop= (IntPropertyRNA*)prop;
@@ -1286,6 +1444,45 @@ void RNA_property_int_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, i
}
}
+int RNA_property_int_get_default(PointerRNA *ptr, PropertyRNA *prop)
+{
+ IntPropertyRNA *iprop= (IntPropertyRNA*)prop;
+ return iprop->defaultvalue;
+}
+
+void RNA_property_int_get_default_array(PointerRNA *ptr, PropertyRNA *prop, int *values)
+{
+ IntPropertyRNA *iprop= (IntPropertyRNA*)prop;
+
+ if(prop->arraydimension == 0)
+ values[0]= iprop->defaultvalue;
+ else if(iprop->defaultarray)
+ memcpy(values, iprop->defaultarray, sizeof(int)*prop->totarraylength);
+ else
+ memset(values, 0, sizeof(int)*prop->totarraylength);
+}
+
+int RNA_property_int_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index)
+{
+ int tmp[RNA_MAX_ARRAY_LENGTH];
+ int len= rna_ensure_property_array_length(ptr, prop);
+
+ if(len <= RNA_MAX_ARRAY_LENGTH) {
+ RNA_property_int_get_default_array(ptr, prop, tmp);
+ return tmp[index];
+ }
+ else {
+ int *tmparray, value;
+
+ tmparray= MEM_callocN(sizeof(int)*len, "RNA_property_int_get_default_index");
+ RNA_property_int_get_default_array(ptr, prop, tmparray);
+ value= tmparray[index];
+ MEM_freeN(tmparray);
+
+ return value;
+ }
+}
+
float RNA_property_float_get(PointerRNA *ptr, PropertyRNA *prop)
{
FloatPropertyRNA *fprop= (FloatPropertyRNA*)prop;
@@ -1441,6 +1638,45 @@ void RNA_property_float_set_index(PointerRNA *ptr, PropertyRNA *prop, int index,
}
}
+float RNA_property_float_get_default(PointerRNA *ptr, PropertyRNA *prop)
+{
+ FloatPropertyRNA *fprop= (FloatPropertyRNA*)prop;
+ return fprop->defaultvalue;
+}
+
+void RNA_property_float_get_default_array(PointerRNA *ptr, PropertyRNA *prop, float *values)
+{
+ FloatPropertyRNA *fprop= (FloatPropertyRNA*)prop;
+
+ if(prop->arraydimension == 0)
+ values[0]= fprop->defaultvalue;
+ else if(fprop->defaultarray)
+ memcpy(values, fprop->defaultarray, sizeof(float)*prop->totarraylength);
+ else
+ memset(values, 0, sizeof(float)*prop->totarraylength);
+}
+
+float RNA_property_float_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index)
+{
+ float tmp[RNA_MAX_ARRAY_LENGTH];
+ int len= rna_ensure_property_array_length(ptr, prop);
+
+ if(len <= RNA_MAX_ARRAY_LENGTH) {
+ RNA_property_float_get_default_array(ptr, prop, tmp);
+ return tmp[index];
+ }
+ else {
+ float *tmparray, value;
+
+ tmparray= MEM_callocN(sizeof(float)*len, "RNA_property_float_get_default_index");
+ RNA_property_float_get_default_array(ptr, prop, tmparray);
+ value= tmparray[index];
+ MEM_freeN(tmparray);
+
+ return value;
+ }
+}
+
void RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop, char *value)
{
StringPropertyRNA *sprop= (StringPropertyRNA*)prop;
@@ -1471,6 +1707,7 @@ char *RNA_property_string_get_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fi
return buf;
}
+/* this is the length without \0 terminator */
int RNA_property_string_length(PointerRNA *ptr, PropertyRNA *prop)
{
StringPropertyRNA *sprop= (StringPropertyRNA*)prop;
@@ -1518,7 +1755,6 @@ int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop)
return eprop->defaultvalue;
}
-
void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value)
{
EnumPropertyRNA *eprop= (EnumPropertyRNA*)prop;
@@ -1541,6 +1777,13 @@ void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value)
}
}
+int RNA_property_enum_get_default(PointerRNA *ptr, PropertyRNA *prop)
+{
+ EnumPropertyRNA *eprop= (EnumPropertyRNA*)prop;
+ return eprop->defaultvalue;
+}
+
+
PointerRNA RNA_property_pointer_get(PointerRNA *ptr, PropertyRNA *prop)
{
PointerPropertyRNA *pprop= (PointerPropertyRNA*)prop;
@@ -2426,10 +2669,15 @@ static int rna_token_strip_quotes(char *token)
/* Resolve the given RNA path to find the pointer+property indicated at the end of the path */
int RNA_path_resolve(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop)
{
+ return RNA_path_resolve_full(ptr, path, r_ptr, r_prop, NULL);
+}
+
+int RNA_path_resolve_full(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop, int *index)
+{
PropertyRNA *prop;
PointerRNA curptr, nextptr;
char fixedbuf[256], *token;
- int len, intkey;
+ int type, len, intkey;
prop= NULL;
curptr= *ptr;
@@ -2464,43 +2712,78 @@ int RNA_path_resolve(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, Prope
if(!prop)
return 0;
+ type= RNA_property_type(prop);
+
/* now look up the value of this property if it is a pointer or
* collection, otherwise return the property rna so that the
* caller can read the value of the property itself */
- if(RNA_property_type(prop) == PROP_POINTER) {
+ switch (type) {
+ case PROP_POINTER:
nextptr= RNA_property_pointer_get(&curptr, prop);
if(nextptr.data)
curptr= nextptr;
else
return 0;
- }
- else if(RNA_property_type(prop) == PROP_COLLECTION && *path) {
- /* resolve the lookup with [] brackets */
- token= rna_path_token(&path, fixedbuf, sizeof(fixedbuf), 1);
- if(!token)
- return 0;
+ break;
+ case PROP_COLLECTION:
+ if(*path) {
+ /* resolve the lookup with [] brackets */
+ token= rna_path_token(&path, fixedbuf, sizeof(fixedbuf), 1);
- len= strlen(token);
-
- /* check for "" to see if it is a string */
- if(rna_token_strip_quotes(token)) {
- RNA_property_collection_lookup_string(&curptr, prop, token+1, &nextptr);
- }
- else {
- /* otherwise do int lookup */
- intkey= atoi(token);
- RNA_property_collection_lookup_int(&curptr, prop, intkey, &nextptr);
+ if(!token)
+ return 0;
+
+ len= strlen(token);
+
+ /* check for "" to see if it is a string */
+ if(rna_token_strip_quotes(token)) {
+ RNA_property_collection_lookup_string(&curptr, prop, token+1, &nextptr);
+ }
+ else {
+ /* otherwise do int lookup */
+ intkey= atoi(token);
+ RNA_property_collection_lookup_int(&curptr, prop, intkey, &nextptr);
+ }
+
+ if(token != fixedbuf)
+ MEM_freeN(token);
+
+ if(nextptr.data)
+ curptr= nextptr;
+ else
+ return 0;
}
- if(token != fixedbuf)
- MEM_freeN(token);
+ break;
+ default:
+ if (index==NULL)
+ break;
- if(nextptr.data)
- curptr= nextptr;
- else
- return 0;
+ *index= -1;
+
+ if (*path) {
+ if (*path=='[') {
+ token= rna_path_token(&path, fixedbuf, sizeof(fixedbuf), 1);
+
+ /* check for "" to see if it is a string */
+ if(rna_token_strip_quotes(token)) {
+ *index= RNA_property_array_item_index(prop, *(token+1));
+ }
+ else {
+ /* otherwise do int lookup */
+ *index= atoi(token);
+ }
+ }
+ else {
+ token= rna_path_token(&path, fixedbuf, sizeof(fixedbuf), 0);
+ *index= RNA_property_array_item_index(prop, *token);
+ }
+
+ if(token != fixedbuf)
+ MEM_freeN(token);
+ }
}
}
@@ -3806,4 +4089,186 @@ int RNA_function_call_direct_va_lookup(bContext *C, ReportList *reports, Pointer
return 0;
}
+int RNA_property_reset(PointerRNA *ptr, PropertyRNA *prop, int index)
+{
+ int len;
+
+ /* get the length of the array to work with */
+ len= RNA_property_array_length(ptr, prop);
+
+ /* get and set the default values as appropriate for the various types */
+ switch (RNA_property_type(prop)) {
+ case PROP_BOOLEAN:
+ if (len) {
+ if (index == -1) {
+ int *tmparray= MEM_callocN(sizeof(int)*len, "reset_defaults - boolean");
+
+ RNA_property_boolean_get_default_array(ptr, prop, tmparray);
+ RNA_property_boolean_set_array(ptr, prop, tmparray);
+
+ MEM_freeN(tmparray);
+ }
+ else {
+ int value= RNA_property_boolean_get_default_index(ptr, prop, index);
+ RNA_property_boolean_set_index(ptr, prop, index, value);
+ }
+ }
+ else {
+ int value= RNA_property_boolean_get_default(ptr, prop);
+ RNA_property_boolean_set(ptr, prop, value);
+ }
+ return 1;
+ case PROP_INT:
+ if (len) {
+ if (index == -1) {
+ int *tmparray= MEM_callocN(sizeof(int)*len, "reset_defaults - int");
+
+ RNA_property_int_get_default_array(ptr, prop, tmparray);
+ RNA_property_int_set_array(ptr, prop, tmparray);
+
+ MEM_freeN(tmparray);
+ }
+ else {
+ int value= RNA_property_int_get_default_index(ptr, prop, index);
+ RNA_property_int_set_index(ptr, prop, index, value);
+ }
+ }
+ else {
+ int value= RNA_property_int_get_default(ptr, prop);
+ RNA_property_int_set(ptr, prop, value);
+ }
+ return 1;
+ case PROP_FLOAT:
+ if (len) {
+ if (index == -1) {
+ float *tmparray= MEM_callocN(sizeof(float)*len, "reset_defaults - float");
+
+ RNA_property_float_get_default_array(ptr, prop, tmparray);
+ RNA_property_float_set_array(ptr, prop, tmparray);
+
+ MEM_freeN(tmparray);
+ }
+ else {
+ float value= RNA_property_float_get_default_index(ptr, prop, index);
+ RNA_property_float_set_index(ptr, prop, index, value);
+ }
+ }
+ else {
+ float value= RNA_property_float_get_default(ptr, prop);
+ RNA_property_float_set(ptr, prop, value);
+ }
+ return 1;
+ case PROP_ENUM:
+ {
+ int value= RNA_property_enum_get_default(ptr, prop);
+ RNA_property_enum_set(ptr, prop, value);
+ return 1;
+ }
+
+ //case PROP_POINTER:
+ //case PROP_STRING:
+ default:
+ // FIXME: many of the other types such as strings and pointers need this implemented too!
+ return 0;
+ }
+}
+
+int RNA_property_copy(PointerRNA *ptr, PointerRNA *fromptr, PropertyRNA *prop, int index)
+{
+ int len, fromlen;
+
+ /* get the length of the array to work with */
+ len= RNA_property_array_length(ptr, prop);
+ fromlen= RNA_property_array_length(ptr, prop);
+
+ if(len != fromlen)
+ return 0;
+
+ /* get and set the default values as appropriate for the various types */
+ switch (RNA_property_type(prop)) {
+ case PROP_BOOLEAN:
+ if (len) {
+ if (index == -1) {
+ int *tmparray= MEM_callocN(sizeof(int)*len, "copy - boolean");
+
+ RNA_property_boolean_get_array(fromptr, prop, tmparray);
+ RNA_property_boolean_set_array(ptr, prop, tmparray);
+
+ MEM_freeN(tmparray);
+ }
+ else {
+ int value= RNA_property_boolean_get_index(fromptr, prop, index);
+ RNA_property_boolean_set_index(ptr, prop, index, value);
+ }
+ }
+ else {
+ int value= RNA_property_boolean_get(fromptr, prop);
+ RNA_property_boolean_set(ptr, prop, value);
+ }
+ return 1;
+ case PROP_INT:
+ if (len) {
+ if (index == -1) {
+ int *tmparray= MEM_callocN(sizeof(int)*len, "copy - int");
+
+ RNA_property_int_get_array(fromptr, prop, tmparray);
+ RNA_property_int_set_array(ptr, prop, tmparray);
+
+ MEM_freeN(tmparray);
+ }
+ else {
+ int value= RNA_property_int_get_index(fromptr, prop, index);
+ RNA_property_int_set_index(ptr, prop, index, value);
+ }
+ }
+ else {
+ int value= RNA_property_int_get(fromptr, prop);
+ RNA_property_int_set(ptr, prop, value);
+ }
+ return 1;
+ case PROP_FLOAT:
+ if (len) {
+ if (index == -1) {
+ float *tmparray= MEM_callocN(sizeof(float)*len, "copy - float");
+
+ RNA_property_float_get_array(fromptr, prop, tmparray);
+ RNA_property_float_set_array(ptr, prop, tmparray);
+
+ MEM_freeN(tmparray);
+ }
+ else {
+ float value= RNA_property_float_get_index(fromptr, prop, index);
+ RNA_property_float_set_index(ptr, prop, index, value);
+ }
+ }
+ else {
+ float value= RNA_property_float_get(fromptr, prop);
+ RNA_property_float_set(ptr, prop, value);
+ }
+ return 1;
+ case PROP_ENUM:
+ {
+ int value= RNA_property_enum_get(fromptr, prop);
+ RNA_property_enum_set(ptr, prop, value);
+ return 1;
+ }
+ case PROP_POINTER:
+ {
+ PointerRNA value= RNA_property_pointer_get(fromptr, prop);
+ RNA_property_pointer_set(ptr, prop, value);
+ return 1;
+ }
+ case PROP_STRING:
+ {
+ char *value= RNA_property_string_get_alloc(fromptr, prop, NULL, 0);
+ RNA_property_string_set(ptr, prop, value);
+ MEM_freeN(value);
+ return 1;
+ }
+ default:
+ return 0;
+ }
+
+ return 0;
+}
diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c
index eaa11b4ad38..3f6729136d5 100644
--- a/source/blender/makesrna/intern/rna_action.c
+++ b/source/blender/makesrna/intern/rna_action.c
@@ -29,15 +29,147 @@
#include "rna_internal.h"
+#include "DNA_anim_types.h"
#include "DNA_action_types.h"
#include "DNA_scene_types.h"
#include "MEM_guardedalloc.h"
+#include "WM_types.h"
+
+
#ifdef RNA_RUNTIME
+static void rna_ActionGroup_channels_next(CollectionPropertyIterator *iter)
+{
+ ListBaseIterator *internal= iter->internal;
+ FCurve *fcu= (FCurve*)internal->link;
+ bActionGroup *grp= fcu->grp;
+
+ /* only continue if the next F-Curve (if existant) belongs in the same group */
+ if ((fcu->next) && (fcu->next->grp == grp))
+ internal->link= (Link*)fcu->next;
+ else
+ internal->link= NULL;
+
+ iter->valid= (internal->link != NULL);
+}
+
#else
+static void rna_def_dopesheet(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ srna= RNA_def_struct(brna, "DopeSheet", NULL);
+ RNA_def_struct_sdna(srna, "bDopeSheet");
+ RNA_def_struct_ui_text(srna, "DopeSheet", "Storage for Dopesheet/Grease-Pencil Editor data.");
+
+ prop= RNA_def_property(srna, "source", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "ID");
+ RNA_def_property_ui_text(prop, "Source", "ID-Block representing source data, currently ID_SCE (for Dopesheet), and ID_SC (for Grease Pencil).");
+
+ prop= RNA_def_property(srna, "only_selected", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_ONLYSEL);
+ RNA_def_property_ui_text(prop, "Only Selected", "Only include channels relating to selected objects and data.");
+ RNA_def_property_ui_icon(prop, ICON_RESTRICT_SELECT_OFF, 0);
+ RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "only_nla", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_ONLYNLA);
+ RNA_def_property_ui_text(prop, "Only NLA", "Only include NLA data from Animation data.");
+ RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "use_filter", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_SELEDIT);
+ RNA_def_property_ui_text(prop, "Use Filter", "Indicates if filtering options must be taken into account.");
+ RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "display_summary", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_SUMMARY);
+ RNA_def_property_ui_text(prop, "Display Summary", "Display an additional 'summary' line.");
+ RNA_def_property_ui_icon(prop, ICON_BORDERMOVE, 0);
+ RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "display_shapekeys", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOSHAPEKEYS);
+ RNA_def_property_ui_text(prop, "Display Shapekeys", "Include visualization of Shapekey related Animation data.");
+ RNA_def_property_ui_icon(prop, ICON_SHAPEKEY_DATA, 0);
+ RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "display_camera", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOCAM);
+ RNA_def_property_ui_text(prop, "Display Camera", "Include visualization of Camera related Animation data.");
+ RNA_def_property_ui_icon(prop, ICON_CAMERA_DATA, 0);
+ RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "display_material", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOMAT);
+ RNA_def_property_ui_text(prop, "Display Material", "Include visualization of Material related Animation data.");
+ RNA_def_property_ui_icon(prop, ICON_MATERIAL_DATA, 0);
+ RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "display_lamp", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOLAM);
+ RNA_def_property_ui_text(prop, "Display Lamp", "Include visualization of Lamp related Animation data.");
+ RNA_def_property_ui_icon(prop, ICON_LAMP_DATA, 0);
+ RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "display_curve", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOCUR);
+ RNA_def_property_ui_text(prop, "Display Curve", "Include visualization of Curve related Animation data.");
+ RNA_def_property_ui_icon(prop, ICON_CURVE_DATA, 0);
+ RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "display_world", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOWOR);
+ RNA_def_property_ui_text(prop, "Display World", "Include visualization of World related Animation data.");
+ RNA_def_property_ui_icon(prop, ICON_WORLD_DATA, 0);
+ RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "display_scene", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOSCE);
+ RNA_def_property_ui_text(prop, "Display Scene", "Include visualization of Scene related Animation data.");
+ RNA_def_property_ui_icon(prop, ICON_SCENE_DATA, 0);
+ RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "display_particle", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOPART);
+ RNA_def_property_ui_text(prop, "Display Particle", "Include visualization of Particle related Animation data.");
+ RNA_def_property_ui_icon(prop, ICON_PARTICLE_DATA, 0);
+ RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "display_metaball", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOMBA);
+ RNA_def_property_ui_text(prop, "Display Metaball", "Include visualization of Metaball related Animation data.");
+ RNA_def_property_ui_icon(prop, ICON_META_DATA, 0);
+ RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "display_armature", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOARM);
+ RNA_def_property_ui_text(prop, "Display Armature", "Include visualization of Armature related Animation data.");
+ RNA_def_property_ui_icon(prop, ICON_ARMATURE_DATA, 0);
+ RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "display_node", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NONTREE);
+ RNA_def_property_ui_text(prop, "Display Node", "Include visualization of Node related Animation data.");
+ RNA_def_property_ui_icon(prop, ICON_NODETREE, 0);
+ RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "include_missing_nla", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NLA_NOACT);
+ RNA_def_property_ui_text(prop, "Include Missing NLA", "Include Animation Data blocks with no NLA data. (NLA Editor only)");
+ RNA_def_property_ui_icon(prop, ICON_ACTION, 0);
+ RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
+
+ prop= RNA_def_property(srna, "collapse_summary", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", ADS_FLAG_SUMMARY_COLLAPSED);
+ RNA_def_property_ui_text(prop, "Collapse Summary", "Collapse summary when shown, so all other channels get hidden. (DopeSheet Window Editors Only)");
+ RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL);
+}
+
static void rna_def_action_group(BlenderRNA *brna)
{
StructRNA *srna;
@@ -51,13 +183,18 @@ static void rna_def_action_group(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Name", "");
RNA_def_struct_name_property(srna, prop);
- /* dna warns not to treat the Action Channel listbase in the Action Group struct like a
- normal listbase. I'll leave this here but comment out, for Joshua to review. He can
- probably shed some more light on why this is */
- /*prop= RNA_def_property(srna, "channels", PROP_COLLECTION, PROP_NONE);
+ /* WARNING: be very careful when working with this list, since the endpoint is not
+ * defined like a standard ListBase. Adding/removing channels from this list needs
+ * extreme care, otherwise the F-Curve list running through adjacent groups does
+ * not match up with the one stored in the Action, resulting in curves which do not
+ * show up in animation editors. For that reason, such operations are currently
+ * prohibited.
+ */
+ prop= RNA_def_property(srna, "channels", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "channels", NULL);
RNA_def_property_struct_type(prop, "FCurve");
- RNA_def_property_ui_text(prop, "Channels", "F-Curves in this group.");*/
+ RNA_def_property_collection_funcs(prop, 0, "rna_ActionGroup_channels_next", 0, 0, 0, 0, 0);
+ RNA_def_property_ui_text(prop, "Channels", "F-Curves in this group.");
prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", AGRP_SELECTED);
@@ -80,22 +217,22 @@ static void rna_def_action(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
-
+
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);
RNA_def_property_struct_type(prop, "FCurve");
RNA_def_property_ui_text(prop, "F-Curves", "The individual F-Curves that make up the Action.");
-
+
prop= RNA_def_property(srna, "groups", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "groups", NULL);
RNA_def_property_struct_type(prop, "ActionGroup");
RNA_def_property_ui_text(prop, "Groups", "Convenient groupings of F-Curves.");
-
+
prop= RNA_def_property(srna, "pose_markers", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "markers", NULL);
RNA_def_property_struct_type(prop, "TimelineMarker");
@@ -110,6 +247,7 @@ void RNA_def_action(BlenderRNA *brna)
{
rna_def_action(brna);
rna_def_action_group(brna);
+ rna_def_dopesheet(brna);
}
diff --git a/source/blender/makesrna/intern/rna_animation.c b/source/blender/makesrna/intern/rna_animation.c
index 3e7638b3d51..56e2707b5bb 100644
--- a/source/blender/makesrna/intern/rna_animation.c
+++ b/source/blender/makesrna/intern/rna_animation.c
@@ -203,9 +203,9 @@ static void rna_def_keyingset_path(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Grouping Method", "Method used to define which Group-name to use.");
/* Path + Array Index */
- prop= RNA_def_property(srna, "rna_path", PROP_STRING, PROP_NONE);
+ prop= RNA_def_property(srna, "data_path", PROP_STRING, PROP_NONE);
RNA_def_property_string_funcs(prop, "rna_ksPath_RnaPath_get", "rna_ksPath_RnaPath_length", "rna_ksPath_RnaPath_set");
- RNA_def_property_ui_text(prop, "RNA Path", "RNA Path to property setting.");
+ RNA_def_property_ui_text(prop, "Data Path", "Path to property setting.");
RNA_def_struct_name_property(srna, prop); // XXX this is the best indicator for now...
prop= RNA_def_property(srna, "array_index", PROP_INT, PROP_NONE);
@@ -267,6 +267,10 @@ static void rna_def_keyingset(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "keyingflag", INSERTKEY_MATRIX);
RNA_def_property_ui_text(prop, "Insert Keyframes - Visual", "Insert keyframes based on 'visual transforms'.");
+ prop= RNA_def_property(srna, "insertkey_xyz_to_rgb", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "keyingflag", INSERTKEY_XYZ2RGB);
+ RNA_def_property_ui_text(prop, "F-Curve Colors - XYZ to RGB", "Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis.");
+
/* Keying Set API */
RNA_api_keyingset(srna);
}
diff --git a/source/blender/makesrna/intern/rna_animation_api.c b/source/blender/makesrna/intern/rna_animation_api.c
index 5852c494936..fc36bab29af 100644
--- a/source/blender/makesrna/intern/rna_animation_api.c
+++ b/source/blender/makesrna/intern/rna_animation_api.c
@@ -76,7 +76,7 @@ void RNA_api_keyingset(StructRNA *srna)
parm= RNA_def_pointer(func, "target_id", "ID", "Target ID", "ID-Datablock for the destination.");
RNA_def_property_flag(parm, PROP_REQUIRED);
/* rna-path */
- parm= RNA_def_string(func, "rna_path", "", 256, "RNA-Path", "RNA-Path to destination property."); // xxx hopefully this is long enough
+ parm= RNA_def_string(func, "data_path", "", 256, "Data-Path", "RNA-Path to destination property."); // xxx hopefully this is long enough
RNA_def_property_flag(parm, PROP_REQUIRED);
parm=RNA_def_int(func, "array_index", 0, 0, INT_MAX, "Array Index", "If applicable, the index ", 0, INT_MAX);
/* flags */
diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c
index f1164cda675..0f36ebda70e 100644
--- a/source/blender/makesrna/intern/rna_armature.c
+++ b/source/blender/makesrna/intern/rna_armature.c
@@ -46,14 +46,15 @@
#include "BKE_main.h"
#include "ED_armature.h"
+#include "BKE_armature.h"
-static void rna_Armature_update_data(bContext *C, PointerRNA *ptr)
+static void rna_Armature_update_data(Main *bmain, Scene *scene, PointerRNA *ptr)
{
ID *id= ptr->id.data;
DAG_id_flush_update(id, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_GEOM|ND_DATA, id);
- //WM_event_add_notifier(C, NC_OBJECT|ND_POSE, NULL);
+ WM_main_add_notifier(NC_GEOM|ND_DATA, id);
+ //WM_main_add_notifier(NC_OBJECT|ND_POSE, NULL);
}
@@ -93,12 +94,29 @@ static void rna_Armature_act_edit_bone_set(PointerRNA *ptr, PointerRNA value)
}
}
+EditBone *rna_Armature_edit_bone_new(bArmature *arm, ReportList *reports, char *name)
+{
+ if(arm->edbo==NULL) {
+ BKE_reportf(reports, RPT_ERROR, "Armature '%s' not in editmode, cant add an editbone.", arm->id.name+2);
+ return NULL;
+ }
+ return ED_armature_edit_bone_add(arm, name);
+}
-static void rna_Armature_redraw_data(bContext *C, PointerRNA *ptr)
+void rna_Armature_edit_bone_remove(bArmature *arm, ReportList *reports, EditBone *ebone)
+{
+ if(arm->edbo==NULL) {
+ BKE_reportf(reports, RPT_ERROR, "Armature '%s' not in editmode, cant remove an editbone.", arm->id.name+2);
+ return;
+ }
+ ED_armature_edit_bone_remove(arm, ebone);
+}
+
+static void rna_Armature_redraw_data(Main *bmain, Scene *scene, PointerRNA *ptr)
{
ID *id= ptr->id.data;
- WM_event_add_notifier(C, NC_GEOM|ND_DATA, id);
+ WM_main_add_notifier(NC_GEOM|ND_DATA, id);
}
static char *rna_Bone_path(PointerRNA *ptr)
@@ -130,19 +148,19 @@ static IDProperty *rna_EditBone_idproperties(PointerRNA *ptr, int create)
return ebone->prop;
}
-static void rna_bone_layer_set(short *layer, const int *values)
+static void rna_bone_layer_set(int *layer, const int *values)
{
int i, tot= 0;
/* ensure we always have some layer selected */
- for(i=0; i<16; i++)
+ for(i=0; i<32; i++)
if(values[i])
tot++;
if(tot==0)
return;
- for(i=0; i<16; i++) {
+ for(i=0; i<32; i++) {
if(values[i]) *layer |= (1<<i);
else *layer &= ~(1<<i);
}
@@ -160,14 +178,14 @@ static void rna_Armature_layer_set(PointerRNA *ptr, const int *values)
int i, tot= 0;
/* ensure we always have some layer selected */
- for(i=0; i<20; i++)
+ for(i=0; i<32; i++)
if(values[i])
tot++;
if(tot==0)
return;
- for(i=0; i<20; i++) {
+ for(i=0; i<32; i++) {
if(values[i]) arm->layer |= (1<<i);
else arm->layer &= ~(1<<i);
}
@@ -227,28 +245,7 @@ static void rna_Bone_name_set(PointerRNA *ptr, const char *value)
ED_armature_bone_rename(arm, oldname, newname);
}
-static void rna_EditBone_layer_get(PointerRNA *ptr, int values[16])
-{
- EditBone *data= (EditBone*)(ptr->data);
- values[0]= ((data->layer & (1<<0)) != 0);
- values[1]= ((data->layer & (1<<1)) != 0);
- values[2]= ((data->layer & (1<<2)) != 0);
- values[3]= ((data->layer & (1<<3)) != 0);
- values[4]= ((data->layer & (1<<4)) != 0);
- values[5]= ((data->layer & (1<<5)) != 0);
- values[6]= ((data->layer & (1<<6)) != 0);
- values[7]= ((data->layer & (1<<7)) != 0);
- values[8]= ((data->layer & (1<<8)) != 0);
- values[9]= ((data->layer & (1<<9)) != 0);
- values[10]= ((data->layer & (1<<10)) != 0);
- values[11]= ((data->layer & (1<<11)) != 0);
- values[12]= ((data->layer & (1<<12)) != 0);
- values[13]= ((data->layer & (1<<13)) != 0);
- values[14]= ((data->layer & (1<<14)) != 0);
- values[15]= ((data->layer & (1<<15)) != 0);
-}
-
-static void rna_EditBone_layer_set(PointerRNA *ptr, const int values[16])
+static void rna_EditBone_layer_set(PointerRNA *ptr, const int values[])
{
EditBone *data= (EditBone*)(ptr->data);
rna_bone_layer_set(&data->layer, values);
@@ -291,10 +288,6 @@ static void rna_EditBone_parent_set(PointerRNA *ptr, PointerRNA value)
EditBone *ebone= (EditBone*)(ptr->data);
EditBone *pbone, *parbone= (EditBone*)value.data;
- /* within same armature */
- if(value.id.data != ptr->id.data)
- return;
-
if(parbone == NULL) {
if(ebone->parent && !(ebone->parent->flag & BONE_ROOTSEL))
ebone->parent->flag &= ~BONE_TIPSEL;
@@ -303,6 +296,10 @@ static void rna_EditBone_parent_set(PointerRNA *ptr, PointerRNA value)
ebone->flag &= ~BONE_CONNECTED;
}
else {
+ /* within same armature */
+ if(value.id.data != ptr->id.data)
+ return;
+
/* make sure this is a valid child */
if(parbone == ebone)
return;
@@ -316,7 +313,22 @@ static void rna_EditBone_parent_set(PointerRNA *ptr, PointerRNA value)
}
}
-static void rna_Armature_editbone_transform_update(bContext *C, PointerRNA *ptr)
+static void rna_EditBone_matrix_get(PointerRNA *ptr, float *values)
+{
+ EditBone *ebone= (EditBone*)(ptr->data);
+
+ float delta[3], tmat[3][3], mat[4][4];
+
+ /* Find the current bone matrix */
+ sub_v3_v3v3(delta, ebone->tail, ebone->head);
+ vec_roll_to_mat3(delta, ebone->roll, tmat);
+ copy_m4_m3(mat, tmat);
+ VECCOPY(mat[3], ebone->head);
+
+ memcpy(values, mat, 16 * sizeof(float));
+}
+
+static void rna_Armature_editbone_transform_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
bArmature *arm= (bArmature*)ptr->id.data;
EditBone *ebone= (EditBone*)ptr->data;
@@ -351,7 +363,7 @@ static void rna_Armature_editbone_transform_update(bContext *C, PointerRNA *ptr)
}
}
- rna_Armature_update_data(C, ptr);
+ rna_Armature_update_data(bmain, scene, ptr);
}
static void rna_Armature_bones_next(CollectionPropertyIterator *iter)
@@ -396,8 +408,8 @@ static void rna_def_bone_common(StructRNA *srna, int editbone)
/* flags */
prop= RNA_def_property(srna, "layer", PROP_BOOLEAN, PROP_LAYER_MEMBER);
RNA_def_property_boolean_sdna(prop, NULL, "layer", 1);
- RNA_def_property_array(prop, 16);
- if(editbone) RNA_def_property_boolean_funcs(prop, "rna_EditBone_layer_get", "rna_EditBone_layer_set");
+ RNA_def_property_array(prop, 32);
+ if(editbone) RNA_def_property_boolean_funcs(prop, NULL, "rna_EditBone_layer_set");
else RNA_def_property_boolean_funcs(prop, NULL, "rna_Bone_layer_set");
RNA_def_property_ui_text(prop, "Layers", "Layers bone exists in");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
@@ -411,7 +423,7 @@ static void rna_def_bone_common(StructRNA *srna, int editbone)
prop= RNA_def_property(srna, "hinge", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_HINGE);
- RNA_def_property_ui_text(prop, "Inherit Rotation", "Bone doesn't inherit rotation or scale from parent bone.");
+ RNA_def_property_ui_text(prop, "Inherit Rotation", "Bone inherits rotation or scale from parent bone.");
RNA_def_property_update(prop, 0, "rna_Armature_update_data");
prop= RNA_def_property(srna, "multiply_vertexgroup_with_envelope", PROP_BOOLEAN, PROP_NONE);
@@ -428,6 +440,11 @@ static void rna_def_bone_common(StructRNA *srna, int editbone)
RNA_def_property_ui_text(prop, "Inherit Scale", "Bone inherits scaling from parent bone.");
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_NO_SCALE);
RNA_def_property_update(prop, 0, "rna_Armature_update_data");
+
+ prop= RNA_def_property(srna, "local_location", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_ui_text(prop, "Local Location", "Bone location is set in local space.");
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_NO_LOCAL_LOCATION);
+ RNA_def_property_update(prop, 0, "rna_Armature_update_data");
prop= RNA_def_property(srna, "draw_wire", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_DRAWWIRE);
@@ -439,8 +456,8 @@ static void rna_def_bone_common(StructRNA *srna, int editbone)
RNA_def_property_ui_text(prop, "Cyclic Offset", "When bone doesn't have a parent, it receives cyclic offset effects.");
RNA_def_property_update(prop, 0, "rna_Armature_update_data");
- prop= RNA_def_property(srna, "selectable", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_UNSELECTABLE);
+ prop= RNA_def_property(srna, "restrict_select", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_UNSELECTABLE);
RNA_def_property_ui_text(prop, "Selectable", "Bone is able to be selected");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
@@ -535,7 +552,7 @@ static void rna_def_bone(BlenderRNA *brna)
RNA_def_property_array(prop, 9);
RNA_def_property_ui_text(prop, "Bone Matrix", "3x3 bone matrix.");
- prop= RNA_def_property(srna, "armature_matrix", PROP_FLOAT, PROP_MATRIX);
+ prop= RNA_def_property(srna, "matrix_local", PROP_FLOAT, PROP_MATRIX);
RNA_def_property_float_sdna(prop, NULL, "arm_mat");
RNA_def_property_array(prop, 16);
RNA_def_property_ui_text(prop, "Bone Armature-Relative Matrix", "4x4 bone matrix relative to armature.");
@@ -545,7 +562,7 @@ static void rna_def_bone(BlenderRNA *brna)
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Tail", "Location of tail end of the bone.");
- prop= RNA_def_property(srna, "armature_tail", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "tail_local", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_float_sdna(prop, NULL, "arm_tail");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Armature-Relative Tail", "Location of tail end of the bone relative to armature.");
@@ -553,9 +570,9 @@ static void rna_def_bone(BlenderRNA *brna)
prop= RNA_def_property(srna, "head", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_float_sdna(prop, NULL, "head");
RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "Head", "Location of head end of the bone.");
+ RNA_def_property_ui_text(prop, "Head", "Location of head end of the bone relative to its parent.");
- prop= RNA_def_property(srna, "armature_head", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "head_local", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_float_sdna(prop, NULL, "arm_head");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Armature-Relative Head", "Location of head end of the bone relative to armature.");
@@ -610,16 +627,31 @@ static void rna_def_edit_bone(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Locked", "Bone is not able to be transformed when in Edit Mode.");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
- prop= RNA_def_property(srna, "head_selected", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_SELECTED);
+ RNA_def_property_ui_text(prop, "Selected", "");
+ RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
+
+ prop= RNA_def_property(srna, "selected_head", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_ROOTSEL);
RNA_def_property_ui_text(prop, "Head Selected", "");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
- prop= RNA_def_property(srna, "tail_selected", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "selected_tail", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_TIPSEL);
RNA_def_property_ui_text(prop, "Tail Selected", "");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
+ /* calculated and read only, not actual data access */
+ prop= RNA_def_property(srna, "matrix", PROP_FLOAT, PROP_MATRIX);
+ //RNA_def_property_float_sdna(prop, NULL, ""); // doesnt access any real data
+ RNA_def_property_array(prop, 16);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Editbone Matrix", "Read-only matrix calculated from the roll (armature space).");
+ RNA_def_property_float_funcs(prop, "rna_EditBone_matrix_get", NULL, NULL); // TODO - this could be made writable also
+
+ RNA_api_armature_edit_bone(srna);
+
RNA_define_verify_sdna(1);
}
@@ -656,15 +688,15 @@ static void rna_def_armature_edit_bones(BlenderRNA *brna, PropertyRNA *cprop)
StructRNA *srna;
PropertyRNA *prop;
-// FunctionRNA *func;
-// PropertyRNA *parm;
+ FunctionRNA *func;
+ PropertyRNA *parm;
RNA_def_property_srna(cprop, "ArmatureEditBones");
srna= RNA_def_struct(brna, "ArmatureEditBones", NULL);
RNA_def_struct_sdna(srna, "bArmature");
RNA_def_struct_ui_text(srna, "Armature EditBones", "Collection of armature edit bones.");
- prop= RNA_def_property(srna, "edit_bones", PROP_POINTER, PROP_NONE);
+ prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
RNA_def_property_struct_type(prop, "EditBone");
RNA_def_property_pointer_sdna(prop, NULL, "act_edbone");
RNA_def_property_flag(prop, PROP_EDITABLE);
@@ -674,6 +706,25 @@ static void rna_def_armature_edit_bones(BlenderRNA *brna, PropertyRNA *cprop)
/* todo, redraw */
// RNA_def_property_collection_active(prop, prop_act);
+
+ /* add target */
+ func= RNA_def_function(srna, "new", "rna_Armature_edit_bone_new");
+ RNA_def_function_flag(func, FUNC_USE_REPORTS);
+ RNA_def_function_ui_description(func, "Add a new bone.");
+ parm= RNA_def_string(func, "name", "Object", 0, "", "New name for the bone.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+
+ /* return type */
+ parm= RNA_def_pointer(func, "bone", "EditBone", "", "Newly created edit bone.");
+ RNA_def_function_return(func, parm);
+
+ /* remove target */
+ func= RNA_def_function(srna, "remove", "rna_Armature_edit_bone_remove");
+ RNA_def_function_flag(func, FUNC_USE_REPORTS);
+ RNA_def_function_ui_description(func, "Remove an existing bone from the armature.");
+ /* target to remove*/
+ parm= RNA_def_pointer(func, "bone", "EditBone", "", "EditBone to remove.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
}
static void rna_def_armature(BlenderRNA *brna)
@@ -701,8 +752,8 @@ static void rna_def_armature(BlenderRNA *brna)
{0, "TAILS", 0, "Tails", "Calculate bone paths from tails"},
{0, NULL, 0, NULL, NULL}};
static const EnumPropertyItem prop_pose_position_items[]= {
- {0, "POSE_POSITION", 0, "Pose Position", "Show armature in posed state."},
- {ARM_RESTPOS, "REST_POSITION", 0, "Rest Position", "Show Armature in binding pose state. No posing possible."},
+ {0, "POSE", 0, "Pose Position", "Show armature in posed state."},
+ {ARM_RESTPOS, "REST", 0, "Rest Position", "Show Armature in binding pose state. No posing possible."},
{0, NULL, 0, NULL, NULL}};
srna= RNA_def_struct(brna, "Armature", "ID");
@@ -728,11 +779,6 @@ static void rna_def_armature(BlenderRNA *brna)
rna_def_armature_edit_bones(brna, prop);
/* Enum values */
-// prop= RNA_def_property(srna, "rest_position", PROP_BOOLEAN, PROP_NONE);
-// RNA_def_property_boolean_sdna(prop, NULL, "flag", ARM_RESTPOS);
-// RNA_def_property_ui_text(prop, "Rest Position", "Show Armature in Rest Position. No posing possible.");
-// RNA_def_property_update(prop, 0, "rna_Armature_update_data");
-
prop= RNA_def_property(srna, "pose_position", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
RNA_def_property_enum_items(prop, prop_pose_position_items);
@@ -766,7 +812,7 @@ static void rna_def_armature(BlenderRNA *brna)
/* layer */
prop= RNA_def_property(srna, "layer", PROP_BOOLEAN, PROP_LAYER_MEMBER);
RNA_def_property_boolean_sdna(prop, NULL, "layer", 1);
- RNA_def_property_array(prop, 16);
+ RNA_def_property_array(prop, 32);
RNA_def_property_ui_text(prop, "Visible Layers", "Armature layer visibility.");
RNA_def_property_boolean_funcs(prop, NULL, "rna_Armature_layer_set");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Armature_redraw_data");
@@ -775,7 +821,7 @@ static void rna_def_armature(BlenderRNA *brna)
/* layer protection */
prop= RNA_def_property(srna, "layer_protection", PROP_BOOLEAN, PROP_LAYER);
RNA_def_property_boolean_sdna(prop, NULL, "layer_protected", 1);
- RNA_def_property_array(prop, 16);
+ RNA_def_property_array(prop, 32);
RNA_def_property_ui_text(prop, "Layer Proxy Protection", "Protected layers in Proxy Instances are restored to Proxy settings on file reload and undo.");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
diff --git a/source/blender/makesrna/intern/rna_armature_api.c b/source/blender/makesrna/intern/rna_armature_api.c
new file mode 100644
index 00000000000..22bd7313166
--- /dev/null
+++ b/source/blender/makesrna/intern/rna_armature_api.c
@@ -0,0 +1,66 @@
+/**
+ * ***** 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): Campbell Barton
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+
+#include "RNA_define.h"
+#include "RNA_types.h"
+
+#ifdef RNA_RUNTIME
+
+#include <stddef.h>
+
+#include "BLI_blenlib.h"
+
+#include "ED_armature.h"
+
+void rna_EditBone_align_roll(EditBone *ebo, float *no)
+{
+ if(!is_zero_v3(no)) {
+ float normal[3];
+ copy_v3_v3(normal, no);
+ normalize_v3(normal);
+ ebo->roll= ED_rollBoneToVector(ebo, normal);
+ }
+}
+
+#else
+
+void RNA_api_armature_edit_bone(StructRNA *srna)
+{
+ FunctionRNA *func;
+ PropertyRNA *parm;
+
+ func= RNA_def_function(srna, "align_roll", "rna_EditBone_align_roll");
+ RNA_def_function_ui_description(func, "Align the bone to a localspace vector.");
+ parm= RNA_def_float_vector(func, "vector", 3, NULL, -FLT_MAX, FLT_MAX, "Vector", "", -FLT_MAX, FLT_MAX);
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+}
+
+#endif
diff --git a/source/blender/makesrna/intern/rna_boid.c b/source/blender/makesrna/intern/rna_boid.c
index 37b957a16ca..01d8a4db498 100644
--- a/source/blender/makesrna/intern/rna_boid.c
+++ b/source/blender/makesrna/intern/rna_boid.c
@@ -72,7 +72,7 @@ EnumPropertyItem boidruleset_type_items[] ={
#include "BKE_depsgraph.h"
#include "BKE_particle.h"
-static void rna_Boids_reset(bContext *C, PointerRNA *ptr)
+static void rna_Boids_reset(Main *bmain, Scene *scene, PointerRNA *ptr)
{
if(ptr->type==&RNA_ParticleSystem) {
ParticleSystem *psys = (ParticleSystem*)ptr->data;
@@ -84,12 +84,10 @@ static void rna_Boids_reset(bContext *C, PointerRNA *ptr)
else
DAG_id_flush_update(ptr->id.data, OB_RECALC_DATA|PSYS_RECALC_RESET);
- WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, NULL);
+ WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL);
}
-static void rna_Boids_reset_deps(bContext *C, PointerRNA *ptr)
+static void rna_Boids_reset_deps(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- Scene *scene = CTX_data_scene(C);
-
if(ptr->type==&RNA_ParticleSystem) {
ParticleSystem *psys = (ParticleSystem*)ptr->data;
@@ -102,7 +100,7 @@ static void rna_Boids_reset_deps(bContext *C, PointerRNA *ptr)
DAG_scene_sort(scene);
- WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, NULL);
+ WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL);
}
static StructRNA* rna_BoidRule_refine(struct PointerRNA *ptr)
diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c
index e9744c7f5ed..7f7126c659a 100644
--- a/source/blender/makesrna/intern/rna_brush.c
+++ b/source/blender/makesrna/intern/rna_brush.c
@@ -76,10 +76,10 @@ static void rna_Brush_active_texture_set(PointerRNA *ptr, PointerRNA value)
set_current_brush_texture(br, value.data);
}
-static void rna_Brush_update(bContext *C, PointerRNA *ptr)
+static void rna_Brush_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Brush *br= (Brush*)ptr->data;
- WM_event_add_notifier(C, NC_BRUSH|NA_EDITED, br);
+ WM_main_add_notifier(NC_BRUSH|NA_EDITED, br);
}
static float rna_BrushTextureSlot_angle_get(PointerRNA *ptr)
@@ -203,7 +203,7 @@ static void rna_def_brush(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Rate", "Number of paints per second for Airbrush.");
RNA_def_property_update(prop, 0, "rna_Brush_update");
- prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR);
+ prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, NULL, "rgb");
RNA_def_property_ui_text(prop, "Color", "");
RNA_def_property_update(prop, 0, "rna_Brush_update");
@@ -273,6 +273,11 @@ static void rna_def_brush(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_PERSISTENT);
RNA_def_property_ui_text(prop, "Persistent", "Sculpts on a persistent layer of the mesh.");
RNA_def_property_update(prop, 0, "rna_Brush_update");
+
+ prop= RNA_def_property(srna, "use_accumulate", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_ACCUMULATE);
+ RNA_def_property_ui_text(prop, "Accumulate", "Accumulate stroke dabs on top of each other.");
+ RNA_def_property_update(prop, 0, "rna_Brush_update");
/* not exposed in the interface yet
prop= RNA_def_property(srna, "fixed_tex", PROP_BOOLEAN, PROP_NONE);
diff --git a/source/blender/makesrna/intern/rna_camera.c b/source/blender/makesrna/intern/rna_camera.c
index 6254041c7ef..e8538522d84 100644
--- a/source/blender/makesrna/intern/rna_camera.c
+++ b/source/blender/makesrna/intern/rna_camera.c
@@ -37,13 +37,13 @@
#ifdef RNA_RUNTIME
-static void rna_Camera_angle_update(bContext *C, PointerRNA *ptr)
+static void rna_Camera_angle_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Camera *cam= (Camera*)ptr->id.data;
cam->lens = 16.0f / tan(M_PI*cam->angle/360.0f);
}
-static void rna_Camera_lens_update(bContext *C, PointerRNA *ptr)
+static void rna_Camera_lens_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Camera *cam= (Camera*)ptr->id.data;
cam->angle= 360.0f * atan(16.0f/cam->lens) / M_PI;
@@ -85,7 +85,7 @@ void RNA_def_camera(BlenderRNA *brna)
prop= RNA_def_property(srna, "angle", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "angle");
- RNA_def_property_range(prop, 0.0f, 100.0f);
+ RNA_def_property_range(prop, 0.0f, 172.85f);
RNA_def_property_ui_text(prop, "Angle", "Perspective Camera lend field of view in degrees.");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Camera_angle_update");
diff --git a/source/blender/makesrna/intern/rna_cloth.c b/source/blender/makesrna/intern/rna_cloth.c
index 0e298c1f6be..c416db2a21c 100644
--- a/source/blender/makesrna/intern/rna_cloth.c
+++ b/source/blender/makesrna/intern/rna_cloth.c
@@ -45,15 +45,15 @@
#include "BKE_context.h"
#include "BKE_depsgraph.h"
-static void rna_cloth_update(bContext *C, PointerRNA *ptr)
+static void rna_cloth_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Object *ob= (Object*)ptr->id.data;
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ WM_main_add_notifier(NC_OBJECT|ND_MODIFIER, ob);
}
-static void rna_cloth_reset(bContext *C, PointerRNA *ptr)
+static void rna_cloth_reset(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Object *ob= (Object*)ptr->id.data;
ClothSimSettings *settings = (ClothSimSettings*)ptr->data;
@@ -61,7 +61,7 @@ static void rna_cloth_reset(bContext *C, PointerRNA *ptr)
settings->reset = 1;
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ WM_main_add_notifier(NC_OBJECT|ND_MODIFIER, ob);
}
diff --git a/source/blender/makesrna/intern/rna_color.c b/source/blender/makesrna/intern/rna_color.c
index 2a97eb78382..c4edd00045b 100644
--- a/source/blender/makesrna/intern/rna_color.c
+++ b/source/blender/makesrna/intern/rna_color.c
@@ -216,13 +216,13 @@ static void rna_def_curvemapping(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "CurveMap");
RNA_def_property_ui_text(prop, "Curves", "");
- prop= RNA_def_property(srna, "black_level", PROP_FLOAT, PROP_RGB);
+ prop= RNA_def_property(srna, "black_level", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "black");
RNA_def_property_range(prop, -1000.0f, 1000.0f);
RNA_def_property_ui_text(prop, "Black Level", "For RGB curves, the color that black is mapped to");
RNA_def_property_float_funcs(prop, NULL, "rna_CurveMapping_black_level_set", NULL);
- prop= RNA_def_property(srna, "white_level", PROP_FLOAT, PROP_RGB);
+ prop= RNA_def_property(srna, "white_level", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "white");
RNA_def_property_range(prop, -1000.0f, 1000.0f);
RNA_def_property_ui_text(prop, "White Level", "For RGB curves, the color that white is mapped to");
diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c
index 9ad06ec51d9..f9405dec531 100644
--- a/source/blender/makesrna/intern/rna_constraint.c
+++ b/source/blender/makesrna/intern/rna_constraint.c
@@ -92,6 +92,8 @@ EnumPropertyItem constraint_ik_axisref_items[] ={
#ifdef RNA_RUNTIME
+#include <stdio.h>
+
#include "BKE_animsys.h"
#include "BKE_action.h"
#include "BKE_constraint.h"
@@ -168,7 +170,7 @@ static void rna_Constraint_name_set(PointerRNA *ptr, const char *value)
/* make sure name is unique */
if (ptr->id.data) {
Object *ob= ptr->id.data;
- ListBase *list= get_active_constraints(ob);
+ ListBase *list = get_constraint_lb(ob, con, NULL);
/* if we have the list, check for unique name, otherwise give up */
if (list)
@@ -183,39 +185,37 @@ static char *rna_Constraint_path(PointerRNA *ptr)
{
Object *ob= ptr->id.data;
bConstraint *con= ptr->data;
- bPoseChannel *pchan= get_active_posechannel(ob);
- ListBase *actlist= get_active_constraints(ob);
- short inList = 0;
-
- /* check if constraint is in the given list */
- if (actlist)
- inList= (BLI_findindex(actlist, con) != -1);
-
- /* if constraint is in the list, the list is for the active bone... */
- if ((inList) && (actlist != &ob->constraints) && (pchan))
+ bPoseChannel *pchan;
+ ListBase *lb = get_constraint_lb(ob, con, &pchan);
+
+ if(lb == NULL)
+ printf("rna_Constraint_path: internal error, constraint '%s' not found in object '%s'\n", con->name, ob->id.name);
+
+ if(pchan) {
return BLI_sprintfN("pose.bones[\"%s\"].constraints[\"%s\"]", pchan->name, con->name);
- else
- return BLI_sprintfN("constraints[\"%s\"]", con->name);
+ }
+
+ return BLI_sprintfN("constraints[\"%s\"]", con->name);
}
-static void rna_Constraint_update(bContext *C, PointerRNA *ptr)
+static void rna_Constraint_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
ED_object_constraint_update(ptr->id.data);
}
-static void rna_Constraint_dependency_update(bContext *C, PointerRNA *ptr)
+static void rna_Constraint_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- ED_object_constraint_dependency_update(CTX_data_scene(C), ptr->id.data);
+ ED_object_constraint_dependency_update(scene, ptr->id.data);
}
-static void rna_Constraint_influence_update(bContext *C, PointerRNA *ptr)
+static void rna_Constraint_influence_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Object *ob= ptr->id.data;
if(ob->pose)
ob->pose->flag |= (POSE_LOCKED|POSE_DO_UNLOCK);
- rna_Constraint_update(C, ptr);
+ rna_Constraint_update(bmain, scene, ptr);
}
static void rna_Constraint_ik_type_set(struct PointerRNA *ptr, int value)
@@ -286,6 +286,35 @@ static void rna_ActionConstraint_minmax_range(PointerRNA *ptr, float *min, float
}
}
+static int rna_SplineIKConstraint_joint_bindings_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION])
+{
+ bConstraint *con= (bConstraint*)ptr->data;
+ bSplineIKConstraint *ikData= (bSplineIKConstraint *)con->data;
+
+ if (ikData)
+ length[0]= ikData->numpoints;
+ else
+ length[0]= 256; /* for raw_access, untested */
+
+ return length[0];
+}
+
+static void rna_SplineIKConstraint_joint_bindings_get(PointerRNA *ptr, float *values)
+{
+ bConstraint *con= (bConstraint*)ptr->data;
+ bSplineIKConstraint *ikData= (bSplineIKConstraint *)con->data;
+
+ memcpy(values, ikData->points, ikData->numpoints * sizeof(float));
+}
+
+static void rna_SplineIKConstraint_joint_bindings_set(PointerRNA *ptr, const float *values)
+{
+ bConstraint *con= (bConstraint*)ptr->data;
+ bSplineIKConstraint *ikData= (bSplineIKConstraint *)con->data;
+
+ memcpy(ikData->points, values, ikData->numpoints * sizeof(float));
+}
+
#else
EnumPropertyItem constraint_distance_items[] = {
@@ -339,49 +368,49 @@ static void rna_def_constraint_childof(BlenderRNA *brna)
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);
+ prop= RNA_def_property(srna, "use_location_x", 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);
+ prop= RNA_def_property(srna, "use_location_y", 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);
+ prop= RNA_def_property(srna, "use_location_z", 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);
+ prop= RNA_def_property(srna, "use_rotation_x", 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);
+ prop= RNA_def_property(srna, "use_rotation_y", 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);
+ prop= RNA_def_property(srna, "use_rotation_z", 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);
+ prop= RNA_def_property(srna, "use_scale_x", 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_ui_text(prop, "Scale 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);
+ prop= RNA_def_property(srna, "use_scale_y", 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_ui_text(prop, "Scale 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);
+ prop= RNA_def_property(srna, "use_scale_z", 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_ui_text(prop, "Scale Z", "Use Z Scale of Parent.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
@@ -478,7 +507,7 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna)
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);
+ prop= RNA_def_property(srna, "use_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_dependency_update");
@@ -489,7 +518,7 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Axis Reference", "Constraint axis Lock options relative to Bone or Target reference");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "position", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_position", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_POS);
RNA_def_property_ui_text(prop, "Position", "Chain follows position of target.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
@@ -509,7 +538,7 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Lock Z Pos", "Constraint position along Z axis");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "rotation", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_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_dependency_update");
@@ -529,12 +558,12 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Lock Z Rot", "Constraint rotation along Z axis");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Constraint_dependency_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.");
+ prop= RNA_def_property(srna, "use_target", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_IK_AUTO);
+ RNA_def_property_ui_text(prop, "Target", "Disable for targetless IK.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "stretch", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_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_dependency_update");
@@ -581,6 +610,12 @@ static void rna_def_constraint_track_to(BlenderRNA *brna)
srna= RNA_def_struct(brna, "TrackToConstraint", "Constraint");
RNA_def_struct_ui_text(srna, "Track To Constraint", "Aims the constrained object toward the target.");
+
+ prop= RNA_def_property(srna, "head_tail", PROP_FLOAT, PROP_FACTOR);
+ RNA_def_property_float_sdna(prop, "bConstraint", "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");
+
RNA_def_struct_sdna_from(srna, "bTrackToConstraint", "data");
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
@@ -632,19 +667,19 @@ static void rna_def_constraint_rotate_like(BlenderRNA *brna)
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);
+ prop= RNA_def_property(srna, "use_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_ui_text(prop, "Copy 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);
+ prop= RNA_def_property(srna, "use_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_ui_text(prop, "Copy 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);
+ prop= RNA_def_property(srna, "use_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_ui_text(prop, "Copy 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);
@@ -662,7 +697,7 @@ static void rna_def_constraint_rotate_like(BlenderRNA *brna)
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);
+ prop= RNA_def_property(srna, "use_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");
@@ -695,19 +730,19 @@ static void rna_def_constraint_locate_like(BlenderRNA *brna)
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);
+ prop= RNA_def_property(srna, "use_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_ui_text(prop, "Copy 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);
+ prop= RNA_def_property(srna, "use_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_ui_text(prop, "Copy 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);
+ prop= RNA_def_property(srna, "use_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_ui_text(prop, "Copy 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);
@@ -725,7 +760,7 @@ static void rna_def_constraint_locate_like(BlenderRNA *brna)
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);
+ prop= RNA_def_property(srna, "use_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");
@@ -778,7 +813,7 @@ static void rna_def_constraint_minmax(BlenderRNA *brna)
prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_DISTANCE);
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_ui_text(prop, "Offset", "Offset of floor from object origin.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
@@ -803,22 +838,22 @@ static void rna_def_constraint_size_like(BlenderRNA *brna)
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);
+ prop= RNA_def_property(srna, "use_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_ui_text(prop, "Copy 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);
+ prop= RNA_def_property(srna, "use_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_ui_text(prop, "Copy 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);
+ prop= RNA_def_property(srna, "use_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_ui_text(prop, "Copy 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);
+ prop= RNA_def_property(srna, "use_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");
@@ -1032,6 +1067,12 @@ static void rna_def_constraint_stretch_to(BlenderRNA *brna)
srna= RNA_def_struct(brna, "StretchToConstraint", "Constraint");
RNA_def_struct_ui_text(srna, "Stretch To Constraint", "Stretches to meet the target object.");
+
+ prop= RNA_def_property(srna, "head_tail", PROP_FLOAT, PROP_FACTOR);
+ RNA_def_property_float_sdna(prop, "bConstraint", "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");
+
RNA_def_struct_sdna_from(srna, "bStretchToConstraint", "data");
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
@@ -1256,73 +1297,73 @@ static void rna_def_constraint_transform(BlenderRNA *brna)
prop= RNA_def_property(srna, "from_min_x", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "from_min[0]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
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_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "from_min[1]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
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_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "from_min[2]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
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_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "from_max[0]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
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_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "from_max[1]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
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_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "from_max[2]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
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_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "to_min[0]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
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_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "to_min[1]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
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_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "to_min[2]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
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_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "to_max[0]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
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_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "to_max[1]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
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_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "to_max[2]");
- RNA_def_property_range(prop, 0.0, 1000.f);
+ RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3);
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");
}
@@ -1621,17 +1662,17 @@ static void rna_def_constraint_shrinkwrap(BlenderRNA *brna)
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);
+ prop= RNA_def_property(srna, "use_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);
+ prop= RNA_def_property(srna, "use_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);
+ prop= RNA_def_property(srna, "use_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");
@@ -1703,9 +1744,13 @@ static void rna_def_constraint_spline_ik(BlenderRNA *brna)
/* direct access to bindings */
// NOTE: only to be used by experienced users
- //prop= RNA_def_property(srna, "joint_bindings", PROP_FLOAT, PROP_FACTOR);
- //RNA_def_property_collection_sdna(prop, NULL, "points", "numpoints");
- //RNA_def_property_ui_text(prop, "Joint Bindings", "(EXPERIENCED USERS ONLY) The relative positions of the joints along the chain as percentages.");
+ prop= RNA_def_property(srna, "joint_bindings", PROP_FLOAT, PROP_FACTOR);
+ RNA_def_property_array(prop, 32); // XXX this is the maximum value allowed
+ RNA_def_property_flag(prop, PROP_DYNAMIC);
+ RNA_def_property_dynamic_array_funcs(prop, "rna_SplineIKConstraint_joint_bindings_get_length");
+ RNA_def_property_float_funcs(prop, "rna_SplineIKConstraint_joint_bindings_get", "rna_SplineIKConstraint_joint_bindings_set", NULL);
+ RNA_def_property_ui_text(prop, "Joint Bindings", "(EXPERIENCED USERS ONLY) The relative positions of the joints along the chain as percentages.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
/* settings */
prop= RNA_def_property(srna, "chain_offset", PROP_BOOLEAN, PROP_NONE);
@@ -1718,7 +1763,7 @@ static void rna_def_constraint_spline_ik(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Even Divisions", "Ignore the relative lengths of the bones when fitting to the curve.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "y_streching", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "y_stretch", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_SPLINEIK_SCALE_LIMITED);
RNA_def_property_ui_text(prop, "Y Stretch", "Stretch the Y axis of the bones to fit the curve.");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
diff --git a/source/blender/makesrna/intern/rna_context.c b/source/blender/makesrna/intern/rna_context.c
index 7239fc1ff3d..70d61b15d9f 100644
--- a/source/blender/makesrna/intern/rna_context.c
+++ b/source/blender/makesrna/intern/rna_context.c
@@ -100,6 +100,7 @@ static PointerRNA rna_Context_scene_get(PointerRNA *ptr)
static PointerRNA rna_Context_tool_settings_get(PointerRNA *ptr)
{
bContext *C= (bContext*)ptr->data;
+ ptr->id.data= CTX_data_scene(C);
return rna_pointer_inherit_refine(ptr, &RNA_ToolSettings, CTX_data_tool_settings(C));
}
diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c
index 4c7a88d304b..d3a56661813 100644
--- a/source/blender/makesrna/intern/rna_curve.c
+++ b/source/blender/makesrna/intern/rna_curve.c
@@ -212,21 +212,53 @@ static void rna_Nurb_type_set(PointerRNA *ptr, int value)
static void rna_BPoint_array_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
Nurb *nu= (Nurb*)ptr->data;
- rna_iterator_array_begin(iter, (void*)nu->bp, sizeof(BPoint*), nu->pntsv>0 ? nu->pntsu*nu->pntsv : nu->pntsu, 0, NULL);
+ rna_iterator_array_begin(iter, (void*)nu->bp, sizeof(BPoint), nu->pntsv>0 ? nu->pntsu*nu->pntsv : nu->pntsu, 0, NULL);
}
-static void rna_Curve_update_data(bContext *C, PointerRNA *ptr)
+static void rna_Curve_update_data(Main *bmain, Scene *scene, PointerRNA *ptr)
{
ID *id= ptr->id.data;
DAG_id_flush_update(id, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_GEOM|ND_DATA, id);
+ WM_main_add_notifier(NC_GEOM|ND_DATA, id);
}
-static void rna_Curve_update_deps(bContext *C, PointerRNA *ptr)
+static void rna_Curve_update_deps(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- DAG_scene_sort(CTX_data_scene(C));
- rna_Curve_update_data(C, ptr);
+ DAG_scene_sort(scene);
+ rna_Curve_update_data(bmain, scene, ptr);
+}
+
+static void rna_Curve_resolution_u_update_data(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+ Curve *cu= (Curve*)ptr->id.data;
+ Nurb *nu=NULL;
+
+ if (cu->editnurb) nu= cu->editnurb->first;
+ else nu=cu->nurb.first;
+
+ while(nu) {
+ nu->resolu= cu->resolu;
+ nu= nu->next;
+ }
+
+ rna_Curve_update_data(bmain, scene, ptr);
+}
+
+static void rna_Curve_resolution_v_update_data(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+ Curve *cu= (Curve*)ptr->id.data;
+ Nurb *nu=NULL;
+
+ if (cu->editnurb) nu= cu->editnurb->first;
+ else nu=cu->nurb.first;
+
+ while(nu) {
+ nu->resolv= cu->resolv;
+ nu= nu->next;
+ }
+
+ rna_Curve_update_data(bmain, scene, ptr);
}
/* name functions that ignore the first two ID characters */
@@ -261,34 +293,34 @@ void rna_Curve_body_set(PointerRNA *ptr, const char *value)
BLI_strncpy(cu->str, value, len+1);
}
-static void rna_Nurb_update_handle_data(bContext *C, PointerRNA *ptr)
+static void rna_Nurb_update_handle_data(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Nurb *nu= (Nurb*)ptr->data;
if(nu->type == CU_BEZIER)
calchandlesNurb(nu);
- rna_Curve_update_data(C, ptr);
+ rna_Curve_update_data(bmain, scene, ptr);
}
-static void rna_Nurb_update_knot_u(bContext *C, PointerRNA *ptr)
+static void rna_Nurb_update_knot_u(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Nurb *nu= (Nurb*)ptr->data;
clamp_nurb_order_u(nu);
makeknots(nu, 1);
- rna_Curve_update_data(C, ptr);
+ rna_Curve_update_data(bmain, scene, ptr);
}
-static void rna_Nurb_update_knot_v(bContext *C, PointerRNA *ptr)
+static void rna_Nurb_update_knot_v(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Nurb *nu= (Nurb*)ptr->data;
clamp_nurb_order_v(nu);
makeknots(nu, 2);
- rna_Curve_update_data(C, ptr);
+ rna_Curve_update_data(bmain, scene, ptr);
}
#else
@@ -298,9 +330,9 @@ static void rna_def_bpoint(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
- srna= RNA_def_struct(brna, "CurvePoint", NULL);
+ srna= RNA_def_struct(brna, "SplinePoint", NULL);
RNA_def_struct_sdna(srna, "BPoint");
- RNA_def_struct_ui_text(srna, "CurvePoint", "Curve point without handles.");
+ RNA_def_struct_ui_text(srna, "SplinePoint", "Spline point without handles.");
/* Boolean values */
prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE);
@@ -314,12 +346,17 @@ static void rna_def_bpoint(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
/* Vector value */
- prop= RNA_def_property(srna, "point", PROP_FLOAT, PROP_TRANSLATION);
- RNA_def_property_array(prop, 4);
+ prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_TRANSLATION);
+ RNA_def_property_array(prop, 3);
RNA_def_property_float_sdna(prop, NULL, "vec");
RNA_def_property_ui_text(prop, "Point", "Point coordinates");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
+ prop= RNA_def_property(srna, "weight", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "vec[3]");
+ RNA_def_property_ui_text(prop, "Weight", "Nurbs weight");
+ RNA_def_property_update(prop, 0, "rna_Curve_update_data");
+
/* Number values */
prop= RNA_def_property(srna, "tilt", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "alfa");
@@ -327,7 +364,8 @@ static void rna_def_bpoint(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Tilt", "Tilt in 3d View");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "weight", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "weight_softbody", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "weight");
RNA_def_property_range(prop, 0.01f, 100.0f);
RNA_def_property_ui_text(prop, "Weight", "Softbody goal weight");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
@@ -345,7 +383,7 @@ static void rna_def_beztriple(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
- srna= RNA_def_struct(brna, "BezierCurvePoint", NULL);
+ srna= RNA_def_struct(brna, "BezierSplinePoint", NULL);
RNA_def_struct_sdna(srna, "BezTriple");
RNA_def_struct_ui_text(srna, "Bezier Curve Point", "Bezier curve point with two handles.");
@@ -402,7 +440,7 @@ static void rna_def_beztriple(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Handle 1", "Coordinates of the first handle");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "control_point", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_array(prop, 3);
RNA_def_property_float_funcs(prop, "rna_BezTriple_ctrlpoint_get", "rna_BezTriple_ctrlpoint_set", NULL);
RNA_def_property_ui_text(prop, "Control Point", "Coordinates of the control point");
@@ -541,13 +579,13 @@ static void rna_def_font(BlenderRNA *brna, StructRNA *srna)
prop= RNA_def_property(srna, "offset_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "xof");
RNA_def_property_range(prop, -50.0f, 50.0f);
- RNA_def_property_ui_text(prop, "X Offset", "Horizontal offset from the object center");
+ RNA_def_property_ui_text(prop, "X Offset", "Horizontal offset from the object origin");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
prop= RNA_def_property(srna, "offset_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "yof");
RNA_def_property_range(prop, -50.0f, 50.0f);
- RNA_def_property_ui_text(prop, "Y Offset", "Vertical offset from the object center");
+ RNA_def_property_ui_text(prop, "Y Offset", "Vertical offset from the object origin");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
prop= RNA_def_property(srna, "ul_position", PROP_FLOAT, PROP_NONE);
@@ -786,13 +824,13 @@ static void rna_def_curve(BlenderRNA *brna)
RNA_def_property_int_sdna(prop, NULL, "resolu");
RNA_def_property_ui_range(prop, 1, 1024, 1, 0);
RNA_def_property_ui_text(prop, "Resolution U", "Surface resolution in U direction.");
- RNA_def_property_update(prop, 0, "rna_Curve_update_data");
+ RNA_def_property_update(prop, 0, "rna_Curve_resolution_u_update_data");
prop= RNA_def_property(srna, "resolution_v", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "resolv");
RNA_def_property_ui_range(prop, 1, 1024, 1, 0);
RNA_def_property_ui_text(prop, "Resolution V", "Surface resolution in V direction.");
- RNA_def_property_update(prop, 0, "rna_Curve_update_data");
+ RNA_def_property_update(prop, 0, "rna_Curve_resolution_v_update_data");
prop= RNA_def_property(srna, "render_resolution_u", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "resolu_ren");
@@ -888,12 +926,12 @@ static void rna_def_curve_nurb(BlenderRNA *brna)
prop= RNA_def_property(srna, "points", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "bp", NULL);
- RNA_def_property_struct_type(prop, "CurvePoint");
+ RNA_def_property_struct_type(prop, "SplinePoint");
RNA_def_property_collection_funcs(prop, "rna_BPoint_array_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_Nurb_length", 0, 0);
RNA_def_property_ui_text(prop, "Points", "Collection of points that make up this poly or nurbs spline.");
prop= RNA_def_property(srna, "bezier_points", PROP_COLLECTION, PROP_NONE);
- RNA_def_property_struct_type(prop, "BezierCurvePoint");
+ RNA_def_property_struct_type(prop, "BezierSplinePoint");
RNA_def_property_collection_sdna(prop, NULL, "bezt", "pntsu");
RNA_def_property_ui_text(prop, "Bezier Points", "Collection of points for bezier curves only.");
diff --git a/source/blender/makesrna/intern/rna_define.c b/source/blender/makesrna/intern/rna_define.c
index 891911d5765..9bf5afdac48 100644
--- a/source/blender/makesrna/intern/rna_define.c
+++ b/source/blender/makesrna/intern/rna_define.c
@@ -1732,6 +1732,16 @@ void RNA_def_property_editable_func(PropertyRNA *prop, const char *editable)
if(editable) prop->editable= (EditableFunc)editable;
}
+void RNA_def_property_editable_array_func(PropertyRNA *prop, const char *editable)
+{
+ if(!DefRNA.preprocess) {
+ fprintf(stderr, "RNA_def_property_editable_array_func: only during preprocessing.\n");
+ return;
+ }
+
+ if(editable) prop->itemeditable= (ItemEditableFunc)editable;
+}
+
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
{
if(!DefRNA.preprocess) {
diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c
index 67d562da23b..62ee19df352 100644
--- a/source/blender/makesrna/intern/rna_fcurve.c
+++ b/source/blender/makesrna/intern/rna_fcurve.c
@@ -34,7 +34,6 @@
#include "DNA_anim_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
-#include "DNA_sound_types.h"
#include "MEM_guardedalloc.h"
@@ -50,7 +49,6 @@ EnumPropertyItem fmodifier_type_items[] = {
{FMODIFIER_TYPE_FILTER, "FILTER", 0, "Filter", ""},
{FMODIFIER_TYPE_PYTHON, "PYTHON", 0, "Python", ""},
{FMODIFIER_TYPE_LIMITS, "LIMITS", 0, "Limits", ""},
- {FMODIFIER_TYPE_SOUND, "SOUND", 0, "Sound", ""},
{0, NULL, 0, NULL, NULL}};
#ifdef RNA_RUNTIME
@@ -78,8 +76,6 @@ static StructRNA *rna_FModifierType_refine(struct PointerRNA *ptr)
return &RNA_FModifierPython;
case FMODIFIER_TYPE_LIMITS:
return &RNA_FModifierLimits;
- case FMODIFIER_TYPE_SOUND:
- return &RNA_FModifierSound;
default:
return &RNA_UnknownType;
}
@@ -89,16 +85,46 @@ static StructRNA *rna_FModifierType_refine(struct PointerRNA *ptr)
#include "BKE_fcurve.h"
#include "BKE_depsgraph.h"
+#include "BKE_animsys.h"
-static void rna_ChannelDriver_update_data(bContext *C, PointerRNA *ptr)
+static void rna_ChannelDriver_update_data(Main *bmain, Scene *scene, PointerRNA *ptr)
{
ID *id= ptr->id.data;
+ ChannelDriver *driver= ptr->data;
+
+ driver->flag &= ~DRIVER_FLAG_INVALID;
// TODO: this really needs an update guard...
- DAG_scene_sort(CTX_data_scene(C));
- DAG_id_flush_update(id, OB_RECALC_DATA);
+ DAG_scene_sort(scene);
+ DAG_id_flush_update(id, OB_RECALC_OB|OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_SCENE, id);
+ WM_main_add_notifier(NC_SCENE|ND_FRAME, scene);
+}
+
+static void rna_ChannelDriver_update_expr(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+ ChannelDriver *driver= ptr->data;
+ driver->flag |= DRIVER_FLAG_RECOMPILE;
+ rna_ChannelDriver_update_data(bmain, scene, ptr);
+}
+
+static void rna_DriverTarget_update_data(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+ PointerRNA driverptr;
+ ChannelDriver *driver;
+ FCurve *fcu;
+ AnimData *adt= BKE_animdata_from_id(ptr->id.data);
+
+ /* find the driver this belongs to and update it */
+ for(fcu=adt->drivers.first; fcu; fcu=fcu->next) {
+ driver= fcu->driver;
+
+ if(driver && BLI_findindex(&driver->targets, ptr->data) != -1) {
+ RNA_pointer_create(ptr->id.data, &RNA_Driver, driver, &driverptr);
+ rna_ChannelDriver_update_data(bmain, scene, &driverptr);
+ return;
+ }
+ }
}
/* ----------- */
@@ -229,6 +255,57 @@ static int rna_FCurve_modifiers_remove(FCurve *fcu, bContext *C, int index)
return remove_fmodifier_index(&fcu->modifiers, index);
}
+static void rna_FModifier_active_set(PointerRNA *ptr, int value)
+{
+ FModifier *fm= (FModifier*)ptr->data;
+
+ /* don't toggle, always switch on */
+ fm->flag |= FMODIFIER_FLAG_ACTIVE;
+}
+
+static void rna_FModifier_active_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+ FModifier *fm, *fmo= (FModifier*)ptr->data;
+
+ /* clear active state of other FModifiers in this list */
+ for (fm=fmo->prev; fm; fm=fm->prev)
+ {
+ fm->flag &= ~FMODIFIER_FLAG_ACTIVE;
+ }
+ for (fm=fmo->next; fm; fm=fm->next)
+ {
+ fm->flag &= ~FMODIFIER_FLAG_ACTIVE;
+ }
+
+}
+
+static int rna_FModifierGenerator_coefficients_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION])
+{
+ FModifier *fcm= (FModifier*)ptr->data;
+ FMod_Generator *gen= fcm->data;
+
+ if(gen)
+ length[0]= gen->arraysize;
+ else
+ length[0]= 100; /* for raw_access, untested */
+
+ return length[0];
+}
+
+static void rna_FModifierGenerator_coefficients_get(PointerRNA *ptr, float *values)
+{
+ FModifier *fcm= (FModifier*)ptr->data;
+ FMod_Generator *gen= fcm->data;
+ memcpy(values, gen->coefficients, gen->arraysize * sizeof(float));
+}
+
+static void rna_FModifierGenerator_coefficients_set(PointerRNA *ptr, const float *values)
+{
+ FModifier *fcm= (FModifier*)ptr->data;
+ FMod_Generator *gen= fcm->data;
+ memcpy(gen->coefficients, values, gen->arraysize * sizeof(float));
+}
+
#else
static void rna_def_fmodifier_generator(BlenderRNA *brna)
@@ -265,10 +342,12 @@ static void rna_def_fmodifier_generator(BlenderRNA *brna)
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL);
/* coefficients array */
- // FIXME: this is quite difficult to try to wrap
- //prop= RNA_def_property(srna, "coefficients", PROP_COLLECTION, PROP_NONE);
- //RNA_def_property_collection_funcs(prop, "rna_FModifierGenerator_coefficients_begin", "rna_FModifierGenerator_coefficients_next", "rna_FModifierGenerator_coefficients_end", "rna_iterator_array_get", "rna_FModifierGenerator_coefficients_length", 0, 0, 0, 0);
- //RNA_def_property_ui_text(prop, "Coefficients", "Coefficients for 'x' (starting from lowest power of x^0).");
+ prop= RNA_def_property(srna, "coefficients", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_array(prop, 32);
+ RNA_def_property_flag(prop, PROP_DYNAMIC);
+ RNA_def_property_dynamic_array_funcs(prop, "rna_FModifierGenerator_coefficients_get_length");
+ RNA_def_property_float_funcs(prop, "rna_FModifierGenerator_coefficients_get", "rna_FModifierGenerator_coefficients_set", NULL);
+ RNA_def_property_ui_text(prop, "Coefficients", "Coefficients for 'x' (starting from lowest power of x^0).");
}
/* --------- */
@@ -539,46 +618,6 @@ static void rna_def_fmodifier_noise(BlenderRNA *brna)
/* --------- */
-static void rna_def_fmodifier_sound(BlenderRNA *brna)
-{
- StructRNA *srna;
- PropertyRNA *prop;
-
- static EnumPropertyItem prop_modification_items[] = {
- {FCM_SOUND_MODIF_REPLACE, "REPLACE", 0, "Replace", ""},
- {FCM_SOUND_MODIF_ADD, "ADD", 0, "Add", ""},
- {FCM_SOUND_MODIF_SUBTRACT, "SUBTRACT", 0, "Subtract", ""},
- {FCM_SOUND_MODIF_MULTIPLY, "MULTIPLY", 0, "Multiply", ""},
- {0, NULL, 0, NULL, NULL}};
-
- srna= RNA_def_struct(brna, "FModifierSound", "FModifier");
- RNA_def_struct_ui_text(srna, "Sound F-Modifier", "Modifies an F-Curve based on the amplitudes in a sound.");
- RNA_def_struct_sdna_from(srna, "FMod_Sound", "data");
-
- prop= RNA_def_property(srna, "modification", PROP_ENUM, PROP_NONE);
- RNA_def_property_enum_items(prop, prop_modification_items);
- RNA_def_property_ui_text(prop, "Modification", "Method of modifying the existing F-Curve.");
- RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL);
-
- prop= RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, NULL, "strength");
- RNA_def_property_ui_text(prop, "Strength", "Amplitude of the sound - the amount that it modifies the underlying curve");
- RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL);
-
- prop= RNA_def_property(srna, "delay", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, NULL, "delay");
- RNA_def_property_ui_text(prop, "delay", "The delay before the sound curve modification should start");
- RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL);
-
- prop= RNA_def_property(srna, "sound", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "Sound");
- RNA_def_property_flag(prop, PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "Sound", "Sound datablock used by this modifier.");
-
-}
-
-/* --------- */
-
static void rna_def_fmodifier(BlenderRNA *brna)
{
StructRNA *srna;
@@ -606,12 +645,13 @@ static void rna_def_fmodifier(BlenderRNA *brna)
prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", FMODIFIER_FLAG_EXPANDED);
RNA_def_property_ui_text(prop, "Expanded", "F-Curve Modifier's panel is expanded in UI.");
+ RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
prop= RNA_def_property(srna, "muted", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", FMODIFIER_FLAG_MUTED);
RNA_def_property_ui_text(prop, "Muted", "F-Curve Modifier will not be evaluated.");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL);
+ RNA_def_property_ui_icon(prop, ICON_MUTE_IPO_OFF, 1);
// XXX this is really an internal flag, but it may be useful for some tools to be able to access this...
prop= RNA_def_property(srna, "disabled", PROP_BOOLEAN, PROP_NONE);
@@ -624,7 +664,9 @@ static void rna_def_fmodifier(BlenderRNA *brna)
prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", FMODIFIER_FLAG_ACTIVE);
RNA_def_property_ui_text(prop, "Active", "F-Curve Modifier is the one being edited ");
- RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL);
+ RNA_def_property_boolean_funcs(prop, NULL, "rna_FModifier_active_set");
+ RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, "rna_FModifier_active_update");
+ RNA_def_property_ui_icon(prop, ICON_RADIOBUT_OFF, 1);
}
/* *********************** */
@@ -641,7 +683,7 @@ static void rna_def_drivertarget(BlenderRNA *brna)
prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_struct_name_property(srna, prop);
RNA_def_property_ui_text(prop, "Name", "Name to use in scripted expressions/functions. (No spaces or dots are allowed. Also, must not start with a symbol or digit)");
- //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates
+ RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data");
/* Target Properties - ID-block to Drive */
prop= RNA_def_property(srna, "id", PROP_POINTER, PROP_NONE);
@@ -649,8 +691,8 @@ static void rna_def_drivertarget(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_editable_func(prop, "rna_DriverTarget_id_editable");
RNA_def_property_pointer_funcs(prop, NULL, NULL, "rna_DriverTarget_id_typef");
- RNA_def_property_ui_text(prop, "ID", "ID-block that the specific property used can be found from");
- //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates
+ RNA_def_property_ui_text(prop, "ID", "ID-block that the specific property used can be found from (id_type property must be set first)");
+ RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data");
prop= RNA_def_property(srna, "id_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "idtype");
@@ -658,17 +700,17 @@ static void rna_def_drivertarget(BlenderRNA *brna)
RNA_def_property_enum_default(prop, ID_OB);
RNA_def_property_enum_funcs(prop, NULL, "rna_DriverTarget_id_type_set", NULL);
RNA_def_property_ui_text(prop, "ID Type", "Type of ID-block that can be used.");
- //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates
+ RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data");
/* Target Properties - Property to Drive */
- prop= RNA_def_property(srna, "rna_path", PROP_STRING, PROP_NONE);
+ prop= RNA_def_property(srna, "data_path", PROP_STRING, PROP_NONE);
RNA_def_property_string_funcs(prop, "rna_DriverTarget_RnaPath_get", "rna_DriverTarget_RnaPath_length", "rna_DriverTarget_RnaPath_set");
- RNA_def_property_ui_text(prop, "RNA Path", "RNA Path (from Object) to property used");
- //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates
+ RNA_def_property_ui_text(prop, "Data Path", "RNA Path (from Object) to property used");
+ RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data");
prop= RNA_def_property(srna, "array_index", PROP_INT, PROP_NONE);
RNA_def_property_ui_text(prop, "RNA Array Index", "Index to the specific property used (if applicable)");
- //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates
+ RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data");
}
@@ -710,6 +752,7 @@ static void rna_def_channeldriver(BlenderRNA *brna)
static EnumPropertyItem prop_type_items[] = {
{DRIVER_TYPE_AVERAGE, "AVERAGE", 0, "Averaged Value", ""},
+ {DRIVER_TYPE_SUM, "SUM", 0, "Sum Values", ""},
{DRIVER_TYPE_PYTHON, "SCRIPTED", 0, "Scripted Expression", ""},
{DRIVER_TYPE_ROTDIFF, "ROTDIFF", 0, "Rotational Difference", ""},
{0, NULL, 0, NULL, NULL}};
@@ -727,7 +770,7 @@ static void rna_def_channeldriver(BlenderRNA *brna)
/* String values */
prop= RNA_def_property(srna, "expression", PROP_STRING, PROP_NONE);
RNA_def_property_ui_text(prop, "Expression", "Expression to use for Scripted Expression.");
- //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates
+ RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_expr");
/* Collections */
prop= RNA_def_property(srna, "targets", PROP_COLLECTION, PROP_NONE);
@@ -763,10 +806,9 @@ static void rna_def_fpoint(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Point", "Point coordinates");
}
-/* channeldriver.targets.* */
static void rna_def_fcurve_modifiers(BlenderRNA *brna, PropertyRNA *cprop)
{
- /* add target */
+ /* add modifiers */
StructRNA *srna;
PropertyRNA *prop;
@@ -776,7 +818,7 @@ static void rna_def_fcurve_modifiers(BlenderRNA *brna, PropertyRNA *cprop)
RNA_def_property_srna(cprop, "FCurveModifiers");
srna= RNA_def_struct(brna, "FCurveModifiers", NULL);
RNA_def_struct_sdna(srna, "FCurve");
- RNA_def_struct_ui_text(srna, "FCurve Modifiers", "Collection of fcurve modifiers.");
+ RNA_def_struct_ui_text(srna, "F-Curve Modifiers", "Collection of F-Curve Modifiers.");
/* Collection active property */
@@ -784,8 +826,7 @@ static void rna_def_fcurve_modifiers(BlenderRNA *brna, PropertyRNA *cprop)
RNA_def_property_struct_type(prop, "FModifier");
RNA_def_property_pointer_funcs(prop, "rna_FCurve_active_modifier_get", "rna_FCurve_active_modifier_set", NULL);
RNA_def_property_flag(prop, PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "Active fcurve modifier", "Active fcurve modifier.");
-
+ RNA_def_property_ui_text(prop, "Active F-Curve Modifier", "Active F-Curve Modifier.");
/* Constraint collection */
func= RNA_def_function(srna, "new", "rna_FCurve_modifiers_new");
@@ -833,28 +874,38 @@ static void rna_def_fcurve(BlenderRNA *brna)
RNA_def_property_enum_sdna(prop, NULL, "extend");
RNA_def_property_enum_items(prop, prop_mode_extend_items);
RNA_def_property_ui_text(prop, "Extrapolation", "");
+ RNA_def_property_update(prop, NC_ANIMATION, NULL); // XXX need an update callback for this so that animation gets evaluated
/* Pointers */
prop= RNA_def_property(srna, "driver", PROP_POINTER, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Driver", "Channel Driver (only set for Driver F-Curves)");
+ prop= RNA_def_property(srna, "group", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "grp");
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE); // XXX this is not editable for now, since editing this will easily break the visible hierarchy
+ RNA_def_property_ui_text(prop, "Group", "Action Group that this F-Curve belongs to.");
+
/* Path + Array Index */
- prop= RNA_def_property(srna, "rna_path", PROP_STRING, PROP_NONE);
+ prop= RNA_def_property(srna, "data_path", PROP_STRING, PROP_NONE);
RNA_def_property_string_funcs(prop, "rna_FCurve_RnaPath_get", "rna_FCurve_RnaPath_length", "rna_FCurve_RnaPath_set");
- RNA_def_property_ui_text(prop, "RNA Path", "RNA Path to property affected by F-Curve.");
+ RNA_def_property_ui_text(prop, "Data Path", "RNA Path to property affected by F-Curve.");
+ RNA_def_property_update(prop, NC_ANIMATION, NULL); // XXX need an update callback for this to that animation gets evaluated
prop= RNA_def_property(srna, "array_index", PROP_INT, PROP_NONE);
RNA_def_property_ui_text(prop, "RNA Array Index", "Index to the specific property affected by F-Curve if applicable.");
+ RNA_def_property_update(prop, NC_ANIMATION, NULL); // XXX need an update callback for this so that animation gets evaluated
/* Color */
prop= RNA_def_property(srna, "color_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, prop_mode_color_items);
RNA_def_property_ui_text(prop, "Color Mode", "Method used to determine color of F-Curve in Graph Editor.");
+ RNA_def_property_update(prop, NC_ANIMATION, NULL);
prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Color", "Color of the F-Curve in the Graph Editor.");
+ RNA_def_property_update(prop, NC_ANIMATION, NULL);
/* Collections */
prop= RNA_def_property(srna, "sampled_points", PROP_COLLECTION, PROP_NONE);
@@ -864,7 +915,7 @@ static void rna_def_fcurve(BlenderRNA *brna)
prop= RNA_def_property(srna, "keyframe_points", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "bezt", "totvert");
- RNA_def_property_struct_type(prop, "BezierCurvePoint");
+ RNA_def_property_struct_type(prop, "BezierSplinePoint");
RNA_def_property_ui_text(prop, "Keyframes", "User-editable keyframes");
prop= RNA_def_property(srna, "modifiers", PROP_COLLECTION, PROP_NONE);
@@ -894,7 +945,6 @@ void RNA_def_fcurve(BlenderRNA *brna)
rna_def_fmodifier_python(brna);
rna_def_fmodifier_limits(brna);
rna_def_fmodifier_noise(brna);
- rna_def_fmodifier_sound(brna);
}
diff --git a/source/blender/makesrna/intern/rna_fluidsim.c b/source/blender/makesrna/intern/rna_fluidsim.c
index 2517ee5c8ef..682eebddbbe 100644
--- a/source/blender/makesrna/intern/rna_fluidsim.c
+++ b/source/blender/makesrna/intern/rna_fluidsim.c
@@ -72,17 +72,16 @@ static StructRNA* rna_FluidSettings_refine(struct PointerRNA *ptr)
}
}
-static void rna_fluid_update(bContext *C, PointerRNA *ptr)
+static void rna_fluid_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Object *ob= ptr->id.data;
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ WM_main_add_notifier(NC_OBJECT|ND_MODIFIER, ob);
}
-static void rna_FluidSettings_update_type(bContext *C, PointerRNA *ptr)
+static void rna_FluidSettings_update_type(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- Main *bmain= CTX_data_main(C);
Object *ob= (Object*)ptr->id.data;
FluidsimModifierData *fluidmd;
ParticleSystemModifierData *psmd;
@@ -132,7 +131,7 @@ static void rna_FluidSettings_update_type(bContext *C, PointerRNA *ptr)
}
}
- rna_fluid_update(C, ptr);
+ rna_fluid_update(bmain, scene, ptr);
}
static void rna_DomainFluidSettings_memory_estimate_get(PointerRNA *ptr, char *value)
diff --git a/source/blender/makesrna/intern/rna_gpencil.c b/source/blender/makesrna/intern/rna_gpencil.c
index 2a4ff112c3c..129fad4e98c 100644
--- a/source/blender/makesrna/intern/rna_gpencil.c
+++ b/source/blender/makesrna/intern/rna_gpencil.c
@@ -77,7 +77,7 @@ static void rna_def_gpencil_stroke_point(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "bGPDspoint");
RNA_def_struct_ui_text(srna, "Grease Pencil Stroke Point", "Data point for freehand stroke curve.");
- prop= RNA_def_property(srna, "coordinates", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_XYZ);
RNA_def_property_float_sdna(prop, NULL, "x");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Coordinates", "");
diff --git a/source/blender/makesrna/intern/rna_group.c b/source/blender/makesrna/intern/rna_group.c
index a05485986d1..528d2eb0b3d 100644
--- a/source/blender/makesrna/intern/rna_group.c
+++ b/source/blender/makesrna/intern/rna_group.c
@@ -56,7 +56,7 @@ static void rna_Group_objects_link(Group *group, bContext *C, ReportList *report
return;
}
- WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, &object->id);
+ WM_main_add_notifier(NC_OBJECT|ND_DRAW, &object->id);
}
static void rna_Group_objects_unlink(Group *group, bContext *C, ReportList *reports, Object *object)
@@ -66,7 +66,7 @@ static void rna_Group_objects_unlink(Group *group, bContext *C, ReportList *repo
return;
}
- WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, &object->id);
+ WM_main_add_notifier(NC_OBJECT|ND_DRAW, &object->id);
}
#else
@@ -114,7 +114,7 @@ void RNA_def_group(BlenderRNA *brna)
prop= RNA_def_property(srna, "dupli_offset", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_float_sdna(prop, NULL, "dupli_ofs");
- RNA_def_property_ui_text(prop, "Dupli Offset", "Offset from the center to use when instancing as DupliGroup.");
+ RNA_def_property_ui_text(prop, "Dupli Offset", "Offset from the origin to use when instancing as DupliGroup.");
RNA_def_property_ui_range(prop, -10000.0, 10000.0, 10, 4);
prop= RNA_def_property(srna, "layer", PROP_BOOLEAN, PROP_LAYER);
diff --git a/source/blender/makesrna/intern/rna_image.c b/source/blender/makesrna/intern/rna_image.c
index 44c55e821a9..e0d8a6950de 100644
--- a/source/blender/makesrna/intern/rna_image.c
+++ b/source/blender/makesrna/intern/rna_image.c
@@ -49,7 +49,7 @@ static EnumPropertyItem image_source_items[]= {
#include "IMB_imbuf_types.h"
-static void rna_Image_animated_update(bContext *C, PointerRNA *ptr)
+static void rna_Image_animated_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Image *ima= (Image*)ptr->data;
int nr;
@@ -74,13 +74,13 @@ static int rna_Image_dirty_get(PointerRNA *ptr)
return 0;
}
-static void rna_Image_source_update(bContext *C, PointerRNA *ptr)
+static void rna_Image_source_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Image *ima= ptr->id.data;
BKE_image_signal(ima, NULL, IMA_SIGNAL_SRC_CHANGE);
}
-static void rna_Image_fields_update(bContext *C, PointerRNA *ptr)
+static void rna_Image_fields_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Image *ima= ptr->id.data;
ImBuf *ibuf;
@@ -101,22 +101,21 @@ static void rna_Image_fields_update(bContext *C, PointerRNA *ptr)
BKE_image_release_ibuf(ima, lock);
}
-static void rna_Image_reload_update(bContext *C, PointerRNA *ptr)
+static void rna_Image_reload_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Image *ima= ptr->id.data;
BKE_image_signal(ima, NULL, IMA_SIGNAL_RELOAD);
printf("reload %p\n", ima);
}
-static void rna_Image_generated_update(bContext *C, PointerRNA *ptr)
+static void rna_Image_generated_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Image *ima= ptr->id.data;
BKE_image_signal(ima, NULL, IMA_SIGNAL_FREE);
}
-static void rna_ImageUser_update(bContext *C, PointerRNA *ptr)
+static void rna_ImageUser_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- Scene *scene= CTX_data_scene(C);
ImageUser *iuser= ptr->data;
BKE_image_user_calc_imanr(iuser, scene->r.cfra, 0);
diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h
index 64af7e07fd5..5bb3c82395d 100644
--- a/source/blender/makesrna/intern/rna_internal.h
+++ b/source/blender/makesrna/intern/rna_internal.h
@@ -75,6 +75,9 @@ typedef struct PropertyDefRNA {
int dnalengthfixed;
int booleanbit, booleannegative;
+
+ /* not to be confused with PROP_ENUM_FLAG
+ * this only allows one of the flags to be set at a time, clearing all others */
int enumbitflags;
} PropertyDefRNA;
@@ -154,7 +157,7 @@ void RNA_def_scene(struct BlenderRNA *brna);
void RNA_def_screen(struct BlenderRNA *brna);
void RNA_def_sculpt_paint(struct BlenderRNA *brna);
void RNA_def_sensor(struct BlenderRNA *brna);
-void RNA_def_sequence(struct BlenderRNA *brna);
+void RNA_def_sequencer(struct BlenderRNA *brna);
void RNA_def_smoke(struct BlenderRNA *brna);
void RNA_def_space(struct BlenderRNA *brna);
void RNA_def_test(struct BlenderRNA *brna);
@@ -194,21 +197,24 @@ void rna_object_vgroup_name_set(struct PointerRNA *ptr, const char *value, char
void rna_object_uvlayer_name_set(struct PointerRNA *ptr, const char *value, char *result, int maxlen);
void rna_object_vcollayer_name_set(struct PointerRNA *ptr, const char *value, char *result, int maxlen);
-void rna_Object_update(struct bContext *C, struct PointerRNA *ptr);
-void rna_Object_update_data(struct bContext *C, struct PointerRNA *ptr);
-void rna_Mesh_update_draw(struct bContext *C, struct PointerRNA *ptr);
-void rna_TextureSlot_update(struct bContext *C, struct PointerRNA *ptr);
+void rna_Object_update(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr);
+void rna_Object_update_data(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr);
+void rna_Mesh_update_draw(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr);
+void rna_TextureSlot_update(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr);
char *rna_TextureSlot_path(struct PointerRNA *ptr);
/* API functions */
void RNA_api_action(StructRNA *srna);
+void RNA_api_armature_edit_bone(StructRNA *srna);
void RNA_api_drivers(StructRNA *srna);
void RNA_api_image(struct StructRNA *srna);
+void RNA_api_operator(struct StructRNA *srna);
void RNA_api_keyconfig(struct StructRNA *srna);
void RNA_api_keyingset(struct StructRNA *srna);
void RNA_api_keymap(struct StructRNA *srna);
+void RNA_api_keymapitem(struct StructRNA *srna);
void RNA_api_main(struct StructRNA *srna);
void RNA_api_material(StructRNA *srna);
void RNA_api_mesh(struct StructRNA *srna);
diff --git a/source/blender/makesrna/intern/rna_internal_types.h b/source/blender/makesrna/intern/rna_internal_types.h
index 46ed1fa055f..4f05e6132f7 100644
--- a/source/blender/makesrna/intern/rna_internal_types.h
+++ b/source/blender/makesrna/intern/rna_internal_types.h
@@ -38,6 +38,8 @@ struct CollectionPropertyIterator;
struct bContext;
struct IDProperty;
struct GHash;
+struct Main;
+struct Scene;
#ifdef UNIT_TEST
#define RNA_MAX_ARRAY_LENGTH 64
@@ -53,8 +55,10 @@ struct GHash;
/* Function Callbacks */
-typedef void (*UpdateFunc)(struct bContext *C, struct PointerRNA *ptr);
+typedef void (*UpdateFunc)(struct Main *main, struct Scene *scene, struct PointerRNA *ptr);
+typedef void (*ContextUpdateFunc)(struct bContext *C, struct PointerRNA *ptr);
typedef int (*EditableFunc)(struct PointerRNA *ptr);
+typedef int (*ItemEditableFunc)(struct PointerRNA *ptr, int index);
typedef struct IDProperty* (*IDPropertiesFunc)(struct PointerRNA *ptr, int create);
typedef struct StructRNA *(*StructRefineFunc)(struct PointerRNA *ptr);
typedef char *(*StructPathFunc)(struct PointerRNA *ptr);
@@ -152,8 +156,10 @@ struct PropertyRNA {
UpdateFunc update;
int noteflag;
- /* callback for testing if editable/evaluated */
+ /* callback for testing if editable */
EditableFunc editable;
+ /* callback for testing if array-item editable (if applicable) */
+ ItemEditableFunc itemeditable;
/* raw access */
int rawoffset;
diff --git a/source/blender/makesrna/intern/rna_key.c b/source/blender/makesrna/intern/rna_key.c
index 49dd96241cd..9e560a50af0 100644
--- a/source/blender/makesrna/intern/rna_key.c
+++ b/source/blender/makesrna/intern/rna_key.c
@@ -286,16 +286,15 @@ static char *rna_ShapeKey_path(PointerRNA *ptr)
return BLI_sprintfN("keys[\"%s\"]", ((KeyBlock*)ptr->data)->name);
}
-static void rna_Key_update_data(bContext *C, PointerRNA *ptr)
+static void rna_Key_update_data(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- Main *bmain= CTX_data_main(C);
Key *key= ptr->id.data;
Object *ob;
for(ob=bmain->object.first; ob; ob= ob->id.next) {
if(ob_get_key(ob) == key) {
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ WM_main_add_notifier(NC_OBJECT|ND_MODIFIER, ob);
}
}
}
diff --git a/source/blender/makesrna/intern/rna_lamp.c b/source/blender/makesrna/intern/rna_lamp.c
index a518bd28d24..5112e68a008 100644
--- a/source/blender/makesrna/intern/rna_lamp.c
+++ b/source/blender/makesrna/intern/rna_lamp.c
@@ -100,28 +100,28 @@ static StructRNA* rna_Lamp_refine(struct PointerRNA *ptr)
}
}
-static void rna_Lamp_update(bContext *C, PointerRNA *ptr)
+static void rna_Lamp_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Lamp *la= ptr->id.data;
DAG_id_flush_update(&la->id, 0);
- WM_event_add_notifier(C, NC_LAMP|ND_LIGHTING, la);
+ WM_main_add_notifier(NC_LAMP|ND_LIGHTING, la);
}
-static void rna_Lamp_draw_update(bContext *C, PointerRNA *ptr)
+static void rna_Lamp_draw_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Lamp *la= ptr->id.data;
DAG_id_flush_update(&la->id, 0);
- WM_event_add_notifier(C, NC_LAMP|ND_LIGHTING_DRAW, la);
+ WM_main_add_notifier(NC_LAMP|ND_LIGHTING_DRAW, la);
}
-static void rna_Lamp_sky_update(bContext *C, PointerRNA *ptr)
+static void rna_Lamp_sky_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Lamp *la= ptr->id.data;
DAG_id_flush_update(&la->id, 0);
- WM_event_add_notifier(C, NC_LAMP|ND_SKY, la);
+ WM_main_add_notifier(NC_LAMP|ND_SKY, la);
}
#else
diff --git a/source/blender/makesrna/intern/rna_lattice.c b/source/blender/makesrna/intern/rna_lattice.c
index aff38ebdd74..f46ea13ba2e 100644
--- a/source/blender/makesrna/intern/rna_lattice.c
+++ b/source/blender/makesrna/intern/rna_lattice.c
@@ -87,17 +87,16 @@ static void rna_Lattice_points_begin(CollectionPropertyIterator *iter, PointerRN
rna_iterator_array_begin(iter, NULL, 0, 0, 0, NULL);
}
-static void rna_Lattice_update_data(bContext *C, PointerRNA *ptr)
+static void rna_Lattice_update_data(Main *bmain, Scene *scene, PointerRNA *ptr)
{
ID *id= ptr->id.data;
DAG_id_flush_update(id, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_GEOM|ND_DATA, id);
+ WM_main_add_notifier(NC_GEOM|ND_DATA, id);
}
-static void rna_Lattice_update_size(bContext *C, PointerRNA *ptr)
+static void rna_Lattice_update_size(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- Main *bmain= CTX_data_main(C);
Lattice *lt= ptr->id.data;
Object *ob;
int newu, newv, neww;
@@ -124,7 +123,7 @@ static void rna_Lattice_update_size(bContext *C, PointerRNA *ptr)
resizelattice(lt->editlatt, newu, newv, neww, NULL);
}
- rna_Lattice_update_data(C, ptr);
+ rna_Lattice_update_data(bmain, scene, ptr);
}
static void rna_Lattice_outside_set(PointerRNA *ptr, int value)
diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c
index 7a63f7ebd1d..180c088b091 100644
--- a/source/blender/makesrna/intern/rna_main_api.c
+++ b/source/blender/makesrna/intern/rna_main_api.c
@@ -33,40 +33,58 @@
#include "RNA_types.h"
#include "RNA_enum_types.h"
-#include "DNA_object_types.h"
-#include "DNA_material_types.h"
-#include "DNA_mesh_types.h"
-
#ifdef RNA_RUNTIME
#include "BKE_main.h"
#include "BKE_mesh.h"
+#include "BKE_armature.h"
#include "BKE_library.h"
#include "BKE_object.h"
#include "BKE_material.h"
#include "BKE_image.h"
#include "BKE_texture.h"
+#include "DNA_armature_types.h"
#include "DNA_lamp_types.h"
+#include "DNA_material_types.h"
+#include "DNA_mesh_types.h"
+#include "DNA_object_types.h"
-static Mesh *rna_Main_add_mesh(Main *main, char *name)
+static Mesh *rna_Main_add_mesh(Main *bmain, char *name)
{
Mesh *me= add_mesh(name);
me->id.us--;
return me;
}
-static void rna_Main_remove_mesh(Main *main, ReportList *reports, Mesh *me)
+static void rna_Main_remove_mesh(Main *bmain, ReportList *reports, Mesh *me)
{
if(me->id.us == 0)
- free_libblock(&main->mesh, me);
+ free_libblock(&bmain->mesh, me);
else
BKE_report(reports, RPT_ERROR, "Mesh must have zero users to be removed.");
/* XXX python now has invalid pointer? */
}
-static Lamp *rna_Main_add_lamp(Main *main, char *name)
+static void rna_Main_remove_armature(Main *bmain, ReportList *reports, bArmature *arm)
+{
+ if(arm->id.us == 0)
+ free_libblock(&bmain->armature, arm);
+ else
+ BKE_report(reports, RPT_ERROR, "Armature must have zero users to be removed.");
+
+ /* XXX python now has invalid pointer? */
+}
+
+static bArmature *rna_Main_add_armature(Main *bmain, char *name)
+{
+ bArmature *arm= add_armature(name);
+ arm->id.us--;
+ return arm;
+}
+
+static Lamp *rna_Main_add_lamp(Main *bmain, char *name)
{
Lamp *la= add_lamp(name);
la->id.us--;
@@ -74,7 +92,7 @@ static Lamp *rna_Main_add_lamp(Main *main, char *name)
}
/*
-static void rna_Main_remove_lamp(Main *main, ReportList *reports, Lamp *la)
+static void rna_Main_remove_lamp(Main *bmain, ReportList *reports, Lamp *la)
{
if(la->id.us == 0)
free_libblock(&main->lamp, la);
@@ -83,7 +101,7 @@ static void rna_Main_remove_lamp(Main *main, ReportList *reports, Lamp *la)
}
*/
-static Object* rna_Main_add_object(Main *main, int type, char *name)
+static Object* rna_Main_add_object(Main *bmain, int type, char *name)
{
Object *ob= add_only_object(type, name);
ob->id.us--;
@@ -102,29 +120,29 @@ static Object* rna_Main_add_object(Main *main, int type, char *name)
# don't do this since ob is already freed!
bpy.data.remove_object(ob)
*/
-static void rna_Main_remove_object(Main *main, ReportList *reports, Object *ob)
+static void rna_Main_remove_object(Main *bmain, ReportList *reports, Object *ob)
{
if(ob->id.us == 0)
- free_libblock(&main->object, ob);
+ free_libblock(&bmain->object, ob);
else
BKE_report(reports, RPT_ERROR, "Object must have zero users to be removed.");
}
-static Material *rna_Main_add_material(Main *main, char *name)
+static Material *rna_Main_add_material(Main *bmain, char *name)
{
return add_material(name);
}
/* TODO: remove material? */
-struct Tex *rna_Main_add_texture(Main *main, char *name)
+struct Tex *rna_Main_add_texture(Main *bmain, char *name)
{
return add_texture(name);
}
/* TODO: remove texture? */
-struct Image *rna_Main_add_image(Main *main, char *filename)
+struct Image *rna_Main_add_image(Main *bmain, char *filename)
{
return BKE_add_image_file(filename, 0);
}
@@ -164,6 +182,19 @@ void RNA_api_main(StructRNA *srna)
parm= RNA_def_pointer(func, "mesh", "Mesh", "", "Mesh to remove.");
RNA_def_property_flag(parm, PROP_REQUIRED);
+ func= RNA_def_function(srna, "add_armature", "rna_Main_add_armature");
+ RNA_def_function_ui_description(func, "Add a new armature.");
+ parm= RNA_def_string(func, "name", "Armature", 0, "", "New name for the datablock.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ parm= RNA_def_pointer(func, "armature", "Armature", "", "New armature.");
+ RNA_def_function_return(func, parm);
+
+ func= RNA_def_function(srna, "remove_armature", "rna_Main_remove_armature");
+ RNA_def_function_flag(func, FUNC_USE_REPORTS);
+ RNA_def_function_ui_description(func, "Remove an armature if it has zero users.");
+ parm= RNA_def_pointer(func, "armature", "Armature", "", "Armature to remove.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+
func= RNA_def_function(srna, "add_lamp", "rna_Main_add_lamp");
RNA_def_function_ui_description(func, "Add a new lamp.");
parm= RNA_def_string(func, "name", "Lamp", 0, "", "New name for the datablock.");
diff --git a/source/blender/makesrna/intern/rna_material.c b/source/blender/makesrna/intern/rna_material.c
index 5ff8bffe715..a5c1d8d5f57 100644
--- a/source/blender/makesrna/intern/rna_material.c
+++ b/source/blender/makesrna/intern/rna_material.c
@@ -64,20 +64,20 @@ static EnumPropertyItem prop_texture_coordinates_items[] = {
#include "ED_node.h"
-static void rna_Material_update(bContext *C, PointerRNA *ptr)
+static void rna_Material_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Material *ma= ptr->id.data;
DAG_id_flush_update(&ma->id, 0);
- WM_event_add_notifier(C, NC_MATERIAL|ND_SHADING, ma);
+ WM_main_add_notifier(NC_MATERIAL|ND_SHADING, ma);
}
-static void rna_Material_draw_update(bContext *C, PointerRNA *ptr)
+static void rna_Material_draw_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Material *ma= ptr->id.data;
DAG_id_flush_update(&ma->id, 0);
- WM_event_add_notifier(C, NC_MATERIAL|ND_SHADING_DRAW, ma);
+ WM_main_add_notifier(NC_MATERIAL|ND_SHADING_DRAW, ma);
}
static PointerRNA rna_Material_mirror_get(PointerRNA *ptr)
@@ -1239,7 +1239,7 @@ static void rna_def_material_sss(BlenderRNA *brna)
RNA_def_struct_nested(brna, srna, "Material");
RNA_def_struct_ui_text(srna, "Material Subsurface Scattering", "Diffuse subsurface scattering settings for a Material datablock.");
- prop= RNA_def_property(srna, "radius", PROP_FLOAT, PROP_RGB|PROP_UNIT_LENGTH);
+ prop= RNA_def_property(srna, "radius", PROP_FLOAT, PROP_COLOR|PROP_UNIT_LENGTH);
RNA_def_property_float_sdna(prop, NULL, "sss_radius");
RNA_def_property_range(prop, 0.001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.001, 10000, 1, 3);
diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c
index d6c41fa4368..539fe20c299 100644
--- a/source/blender/makesrna/intern/rna_mesh.c
+++ b/source/blender/makesrna/intern/rna_mesh.c
@@ -55,26 +55,26 @@
#include "WM_api.h"
#include "WM_types.h"
-static void rna_Mesh_update_data(bContext *C, PointerRNA *ptr)
+static void rna_Mesh_update_data(Main *bmain, Scene *scene, PointerRNA *ptr)
{
ID *id= ptr->id.data;
DAG_id_flush_update(id, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_GEOM|ND_DATA, id);
+ WM_main_add_notifier(NC_GEOM|ND_DATA, id);
}
-static void rna_Mesh_update_select(bContext *C, PointerRNA *ptr)
+static void rna_Mesh_update_select(Main *bmain, Scene *scene, PointerRNA *ptr)
{
ID *id= ptr->id.data;
- WM_event_add_notifier(C, NC_GEOM|ND_SELECT, id);
+ WM_main_add_notifier(NC_GEOM|ND_SELECT, id);
}
-void rna_Mesh_update_draw(bContext *C, PointerRNA *ptr)
+void rna_Mesh_update_draw(Main *bmain, Scene *scene, PointerRNA *ptr)
{
ID *id= ptr->id.data;
- WM_event_add_notifier(C, NC_GEOM|ND_DATA, id);
+ WM_main_add_notifier(NC_GEOM|ND_DATA, id);
}
static void rna_MeshVertex_normal_get(PointerRNA *ptr, float *value)
@@ -278,6 +278,15 @@ static int rna_CustomDataLayer_active_get(PointerRNA *ptr, int type, int render)
else return (n == CustomData_get_active_layer_index(fdata, type));
}
+static int rna_CustomDataLayer_clone_get(PointerRNA *ptr, int type, int render)
+{
+ Mesh *me= (Mesh*)ptr->id.data;
+ CustomData *fdata= rna_mesh_pdata(me);
+ int n= ((CustomDataLayer*)ptr->data) - fdata->layers;
+
+ return (n == CustomData_get_clone_layer_index(fdata, type));
+}
+
static void rna_CustomDataLayer_active_set(PointerRNA *ptr, int value, int type, int render)
{
Mesh *me= (Mesh*)ptr->id.data;
@@ -291,6 +300,18 @@ static void rna_CustomDataLayer_active_set(PointerRNA *ptr, int value, int type,
else CustomData_set_layer_active_index(fdata, type, n);
}
+static void rna_CustomDataLayer_clone_set(PointerRNA *ptr, int value, int type, int render)
+{
+ Mesh *me= (Mesh*)ptr->id.data;
+ CustomData *fdata= rna_mesh_pdata(me);
+ int n= ((CustomDataLayer*)ptr->data) - fdata->layers;
+
+ if(value == 0)
+ return;
+
+ CustomData_set_layer_clone_index(fdata, type, n);
+}
+
static int rna_uv_texture_check(CollectionPropertyIterator *iter, void *data)
{
CustomDataLayer *layer= (CustomDataLayer*)data;
@@ -319,6 +340,34 @@ static PointerRNA rna_Mesh_active_uv_texture_get(PointerRNA *ptr)
return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl);
}
+static PointerRNA rna_Mesh_uv_texture_clone_get(PointerRNA *ptr)
+{
+ PointerRNA pnull = {0,};
+#if 0
+ Mesh *me= (Mesh*)ptr->data;
+ CustomData *fdata= rna_mesh_fdata(me);
+ int index= CustomData_get_clone_layer_index(fdata, CD_MTFACE);
+ CustomDataLayer *cdl= (index == -1)? NULL: &fdata->layers[index];
+
+ return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl);
+#endif
+ return pnull;
+}
+
+static PointerRNA rna_Mesh_uv_texture_stencil_get(PointerRNA *ptr)
+{
+ PointerRNA pnull = {0,};
+#if 0
+ Mesh *me= (Mesh*)ptr->data;
+ CustomData *fdata= rna_mesh_fdata(me);
+ int index= CustomData_get_stencil_layer_index(fdata, CD_MTFACE);
+ CustomDataLayer *cdl= (index == -1)? NULL: &fdata->layers[index];
+
+ return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl);
+#endif
+ return pnull;
+}
+
static void rna_Mesh_active_uv_texture_set(PointerRNA *ptr, PointerRNA value)
{
Mesh *me= (Mesh*)ptr->data;
@@ -335,6 +384,42 @@ static void rna_Mesh_active_uv_texture_set(PointerRNA *ptr, PointerRNA value)
}
}
+static void rna_Mesh_uv_texture_clone_set(PointerRNA *ptr, PointerRNA value)
+{
+#if 0
+ Mesh *me= (Mesh*)ptr->data;
+ CustomData *fdata= rna_mesh_fdata(me);
+ CustomDataLayer *cdl;
+ int a;
+
+ for(cdl=fdata->layers, a=0; a<fdata->totlayer; cdl++, a++) {
+ if(value.data == cdl) {
+ CustomData_set_layer_clone_index(fdata, CD_MTFACE, a);
+ return;
+ }
+ }
+#endif
+ return NULL;
+}
+
+static void rna_Mesh_uv_texture_stencil_set(PointerRNA *ptr, PointerRNA value)
+{
+#if 0
+ Mesh *me= (Mesh*)ptr->data;
+ CustomData *fdata= rna_mesh_fdata(me);
+ CustomDataLayer *cdl;
+ int a;
+
+ for(cdl=fdata->layers, a=0; a<fdata->totlayer; cdl++, a++) {
+ if(value.data == cdl) {
+ CustomData_set_layer_stencil_index(fdata, CD_MTFACE, a);
+ return;
+ }
+ }
+#endif
+ return NULL;
+}
+
static int rna_Mesh_active_uv_texture_index_get(PointerRNA *ptr)
{
Mesh *me= (Mesh*)ptr->data;
@@ -342,6 +427,20 @@ static int rna_Mesh_active_uv_texture_index_get(PointerRNA *ptr)
return CustomData_get_active_layer(fdata, CD_MTEXPOLY);
}
+static int rna_Mesh_uv_texture_clone_index_get(PointerRNA *ptr)
+{
+ Mesh *me= (Mesh*)ptr->data;
+ CustomData *fdata= rna_mesh_pdata(me);
+ return CustomData_get_clone_layer(fdata, CD_MTEXPOLY);
+}
+
+static int rna_Mesh_uv_texture_stencil_index_get(PointerRNA *ptr)
+{
+ Mesh *me= (Mesh*)ptr->data;
+ CustomData *fdata= rna_mesh_pdata(me);
+ return CustomData_get_stencil_layer(fdata, CD_MTEXPOLY);
+}
+
static void rna_Mesh_active_uv_texture_index_set(PointerRNA *ptr, int value)
{
Mesh *me= (Mesh*)ptr->data;
@@ -351,6 +450,22 @@ static void rna_Mesh_active_uv_texture_index_set(PointerRNA *ptr, int value)
mesh_update_customdata_pointers(me);
}
+static void rna_Mesh_uv_texture_clone_index_set(PointerRNA *ptr, int value)
+{
+ Mesh *me= (Mesh*)ptr->data;
+ CustomData *fdata= rna_mesh_pdata(me);
+
+ CustomData_set_layer_clone(fdata, CD_MTEXPOLY, value);
+}
+
+static void rna_Mesh_uv_texture_stencil_index_set(PointerRNA *ptr, int value)
+{
+ Mesh *me= (Mesh*)ptr->data;
+ CustomData *fdata= rna_mesh_pdata(me);
+
+ CustomData_set_layer_stencil(fdata, CD_MTEXPOLY, value);
+}
+
static void rna_Mesh_active_uv_texture_index_range(PointerRNA *ptr, int *min, int *max)
{
Mesh *me= (Mesh*)ptr->data;
@@ -443,6 +558,11 @@ static int rna_MeshTextureFaceLayer_active_get(PointerRNA *ptr)
return rna_CustomDataLayer_active_get(ptr, CD_MTEXPOLY, 0);
}
+static int rna_MeshTextureFaceLayer_clone_get(PointerRNA *ptr)
+{
+ return rna_CustomDataLayer_clone_get(ptr, CD_MTFACE, 0);
+}
+
static void rna_MeshTextureFaceLayer_active_render_set(PointerRNA *ptr, int value)
{
rna_CustomDataLayer_active_set(ptr, value, CD_MTEXPOLY, 1);
@@ -453,6 +573,11 @@ static void rna_MeshTextureFaceLayer_active_set(PointerRNA *ptr, int value)
rna_CustomDataLayer_active_set(ptr, value, CD_MTEXPOLY, 0);
}
+static void rna_MeshTextureFaceLayer_clone_set(PointerRNA *ptr, int value)
+{
+ rna_CustomDataLayer_clone_set(ptr, value, CD_MTFACE, 0);
+}
+
static void rna_MeshTextureFaceLayer_name_set(PointerRNA *ptr, const char *value)
{
Mesh *me= (Mesh*)ptr->id.data;
@@ -1076,6 +1201,12 @@ static void rna_def_mtexpoly(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Active Render", "Sets the layer as active for rendering");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
+ prop= RNA_def_property(srna, "active_clone", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "active_clone", 0);
+ RNA_def_property_boolean_funcs(prop, "rna_MeshTextureFaceLayer_clone_get", "rna_MeshTextureFaceLayer_clone_set");
+ RNA_def_property_ui_text(prop, "Active Clone", "Sets the layer as active for cloning");
+ RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
+
prop= RNA_def_property(srna, "data", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "MeshTextureFace");
RNA_def_property_ui_text(prop, "Data", "");
@@ -1357,6 +1488,27 @@ void rna_def_texmat_common(StructRNA *srna, const char *texspace_editable)
RNA_def_property_ui_text(prop, "Materials", "");
}
+
+/* scene.objects */
+static void rna_def_mesh_faces(BlenderRNA *brna, PropertyRNA *cprop)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+// FunctionRNA *func;
+// PropertyRNA *parm;
+
+ RNA_def_property_srna(cprop, "MeshFaces");
+ srna= RNA_def_struct(brna, "MeshFaces", NULL);
+ RNA_def_struct_sdna(srna, "Mesh");
+ RNA_def_struct_ui_text(srna, "Mesh Faces", "Collection of mesh faces.");
+
+ prop= RNA_def_property(srna, "active", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "act_face");
+ RNA_def_property_ui_text(prop, "Active Face", "The active face for this mesh");
+}
+
+
static void rna_def_mesh(BlenderRNA *brna)
{
StructRNA *srna;
@@ -1380,6 +1532,7 @@ static void rna_def_mesh(BlenderRNA *brna)
RNA_def_property_collection_sdna(prop, NULL, "mface", "totface");
RNA_def_property_struct_type(prop, "MeshFace");
RNA_def_property_ui_text(prop, "Faces", "Faces of the mesh.");
+ rna_def_mesh_faces(brna, prop);
prop= RNA_def_property(srna, "sticky", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "msticky", "totvert");
@@ -1411,6 +1564,26 @@ static void rna_def_mesh(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Active UV Texture Index", "Active UV texture index.");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
+ prop= RNA_def_property(srna, "uv_texture_clone", PROP_POINTER, PROP_UNSIGNED);
+ RNA_def_property_struct_type(prop, "MeshTextureFaceLayer");
+ RNA_def_property_pointer_funcs(prop, "rna_Mesh_uv_texture_clone_get", "rna_Mesh_uv_texture_clone_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Clone UV Texture", "UV texture to be used as cloning source.");
+
+ prop= RNA_def_property(srna, "uv_texture_clone_index", PROP_INT, PROP_UNSIGNED);
+ RNA_def_property_int_funcs(prop, "rna_Mesh_uv_texture_clone_index_get", "rna_Mesh_uv_texture_clone_index_set", "rna_Mesh_active_uv_texture_index_range");
+ RNA_def_property_ui_text(prop, "Clone UV Texture Index", "Clone UV texture index.");
+
+ prop= RNA_def_property(srna, "uv_texture_stencil", PROP_POINTER, PROP_UNSIGNED);
+ RNA_def_property_struct_type(prop, "MeshTextureFaceLayer");
+ RNA_def_property_pointer_funcs(prop, "rna_Mesh_uv_texture_stencil_get", "rna_Mesh_uv_texture_stencil_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Mask UV Texture", "UV texture to mask the painted area.");
+
+ prop= RNA_def_property(srna, "uv_texture_stencil_index", PROP_INT, PROP_UNSIGNED);
+ RNA_def_property_int_funcs(prop, "rna_Mesh_uv_texture_stencil_index_get", "rna_Mesh_uv_texture_stencil_index_set", "rna_Mesh_active_uv_texture_index_range");
+ RNA_def_property_ui_text(prop, "Mask UV Texture Index", "Mask UV texture index.");
+
/* Vertex colors */
prop= RNA_def_property(srna, "vertex_colors", PROP_COLLECTION, PROP_NONE);
@@ -1559,7 +1732,8 @@ static void rna_def_mesh(BlenderRNA *brna)
prop= RNA_def_property(srna, "use_paint_mask", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "editflag", ME_EDIT_PAINT_MASK);
RNA_def_property_ui_text(prop, "Paint Mask", "Face selection masking for painting");
-
+ RNA_def_property_ui_icon(prop, ICON_FACESEL_HLT, 0);
+ RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
rna_def_texmat_common(srna, "rna_Mesh_texspace_editable");
diff --git a/source/blender/makesrna/intern/rna_meta.c b/source/blender/makesrna/intern/rna_meta.c
index 62466047ef4..b7cd40b2efd 100644
--- a/source/blender/makesrna/intern/rna_meta.c
+++ b/source/blender/makesrna/intern/rna_meta.c
@@ -50,10 +50,8 @@ static int rna_Meta_texspace_editable(PointerRNA *ptr)
return (mb->texflag & AUTOSPACE)? 0: PROP_EDITABLE;
}
-static void rna_MetaBall_update_data(bContext *C, PointerRNA *ptr)
+static void rna_MetaBall_update_data(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- Main *bmain= CTX_data_main(C);
- Scene *scene= CTX_data_scene(C);
MetaBall *mb= ptr->id.data;
Object *ob;
@@ -62,11 +60,9 @@ static void rna_MetaBall_update_data(bContext *C, PointerRNA *ptr)
copy_mball_properties(scene, ob);
DAG_id_flush_update(&mb->id, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_GEOM|ND_DATA, mb);
+ WM_main_add_notifier(NC_GEOM|ND_DATA, mb);
}
-
-
#else
static void rna_def_metaelement(BlenderRNA *brna)
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c
index 690a2b667ef..166ef55c23f 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -55,6 +55,7 @@ EnumPropertyItem modifier_type_items[] ={
{eModifierType_Mask, "MASK", ICON_MOD_MASK, "Mask", ""},
{eModifierType_Mirror, "MIRROR", ICON_MOD_MIRROR, "Mirror", ""},
{eModifierType_Multires, "MULTIRES", ICON_MOD_MULTIRES, "Multiresolution", ""},
+ {eModifierType_Solidify, "SOLIDIFY", ICON_MOD_DISPLACE, "Solidify", ""},
{eModifierType_Subsurf, "SUBSURF", ICON_MOD_SUBSURF, "Subdivision Surface", ""},
{eModifierType_UVProject, "UV_PROJECT", ICON_MOD_UVPROJECT, "UV Project", ""},
{0, "", 0, "Deform", ""},
@@ -161,6 +162,8 @@ static StructRNA* rna_Modifier_refine(struct PointerRNA *ptr)
return &RNA_SurfaceModifier;
case eModifierType_Smoke:
return &RNA_SmokeModifier;
+ case eModifierType_Solidify:
+ return &RNA_SolidifyModifier;
default:
return &RNA_Modifier;
}
@@ -192,19 +195,19 @@ static char *rna_Modifier_path(PointerRNA *ptr)
return BLI_sprintfN("modifiers[\"%s\"]", ((ModifierData*)ptr->data)->name);
}
-static void rna_Modifier_update(bContext *C, PointerRNA *ptr)
+static void rna_Modifier_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
DAG_id_flush_update(ptr->id.data, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ptr->id.data);
+ WM_main_add_notifier(NC_OBJECT|ND_MODIFIER, ptr->id.data);
}
-static void rna_Modifier_dependency_update(bContext *C, PointerRNA *ptr)
+static void rna_Modifier_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- rna_Modifier_update(C, ptr);
- DAG_scene_sort(CTX_data_scene(C));
+ rna_Modifier_update(bmain, scene, ptr);
+ DAG_scene_sort(scene);
}
-static void rna_Smoke_set_type(bContext *C, PointerRNA *ptr)
+static void rna_Smoke_set_type(Main *bmain, Scene *scene, PointerRNA *ptr)
{
SmokeModifierData *smd= (SmokeModifierData *)ptr->data;
Object *ob= (Object*)ptr->id.data;
@@ -224,12 +227,12 @@ static void rna_Smoke_set_type(bContext *C, PointerRNA *ptr)
case MOD_SMOKE_TYPE_COLL:
case 0:
default:
- ob->dt = OB_SHADED;
+ ob->dt = OB_TEXTURE;
break;
}
// update dependancy since a domain - other type switch could have happened
- rna_Modifier_dependency_update(C, ptr);
+ rna_Modifier_dependency_update(bmain, scene, ptr);
}
static void rna_ExplodeModifier_vgroup_get(PointerRNA *ptr, char *value)
@@ -322,6 +325,12 @@ static void rna_CastModifier_vgroup_set(PointerRNA *ptr, const char *value)
rna_object_vgroup_name_set(ptr, value, lmd->defgrp_name, sizeof(lmd->defgrp_name));
}
+static void rna_SolidifyModifier_vgroup_set(PointerRNA *ptr, const char *value)
+{
+ SolidifyModifierData *smd= (SolidifyModifierData*)ptr->data;
+ rna_object_vgroup_name_set(ptr, value, smd->vgroup, sizeof(smd->vgroup));
+}
+
static void rna_DisplaceModifier_uvlayer_set(PointerRNA *ptr, const char *value)
{
DisplaceModifierData *smd= (DisplaceModifierData*)ptr->data;
@@ -344,10 +353,43 @@ static void rna_MultiresModifier_level_range(PointerRNA *ptr, int *min, int *max
{
MultiresModifierData *mmd = (MultiresModifierData*)ptr->data;
- *min = 1;
+ *min = 0;
*max = mmd->totlvl;
}
+static int rna_MultiresModifier_external_get(PointerRNA *ptr)
+{
+ Object *ob= (Object*)ptr->id.data;
+ Mesh *me= ob->data;
+
+ return CustomData_external_test(&me->fdata, CD_MDISPS);
+}
+
+static void rna_MultiresModifier_filename_get(PointerRNA *ptr, char *value)
+{
+ Object *ob= (Object*)ptr->id.data;
+ CustomDataExternal *external= ((Mesh*)ob->data)->fdata.external;
+
+ BLI_strncpy(value, (external)? external->filename: "", sizeof(external->filename));
+}
+
+static void rna_MultiresModifier_filename_set(PointerRNA *ptr, const char *value)
+{
+ Object *ob= (Object*)ptr->id.data;
+ CustomDataExternal *external= ((Mesh*)ob->data)->fdata.external;
+
+ if(external)
+ BLI_strncpy(external->filename, value, sizeof(external->filename));
+}
+
+static int rna_MultiresModifier_filename_length(PointerRNA *ptr)
+{
+ Object *ob= (Object*)ptr->id.data;
+ CustomDataExternal *external= ((Mesh*)ob->data)->fdata.external;
+
+ return strlen((external)? external->filename: "");
+}
+
static void modifier_object_set(Object *self, Object **ob_p, int type, PointerRNA value)
{
Object *ob= value.data;
@@ -496,22 +538,20 @@ static void rna_def_modifier_subsurf(BlenderRNA *brna)
rna_def_property_subdivision_common(srna, "subdivType");
- prop= RNA_def_property(srna, "levels", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "levels", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "levels");
- RNA_def_property_range(prop, 1, 6);
- RNA_def_property_ui_range(prop, 1, 6, 1, 0);
+ RNA_def_property_ui_range(prop, 0, 6, 1, 0);
RNA_def_property_ui_text(prop, "Levels", "Number of subdivisions to perform.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "render_levels", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "render_levels", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "renderLevels");
- RNA_def_property_range(prop, 1, 6);
- RNA_def_property_ui_range(prop, 1, 6, 1, 0);
+ RNA_def_property_ui_range(prop, 0, 6, 1, 0);
RNA_def_property_ui_text(prop, "Render Levels", "Number of subdivisions to perform when rendering.");
- prop= RNA_def_property(srna, "optimal_draw", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "optimal_display", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", eSubsurfModifierFlag_ControlEdges);
- RNA_def_property_ui_text(prop, "Optimal Draw", "Skip drawing/rendering of interior subdivided edges");
+ RNA_def_property_ui_text(prop, "Optimal Display", "Skip drawing/rendering of interior subdivided edges");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "subsurf_uv", PROP_BOOLEAN, PROP_NONE);
@@ -532,11 +572,42 @@ static void rna_def_modifier_multires(BlenderRNA *brna)
rna_def_property_subdivision_common(srna, "simple");
- prop= RNA_def_property(srna, "level", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "levels", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "lvl");
- RNA_def_property_ui_text(prop, "Level", "");
+ RNA_def_property_ui_text(prop, "Levels", "Number of subdivisions to use in the viewport.");
+ RNA_def_property_int_funcs(prop, NULL, NULL, "rna_MultiresModifier_level_range");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop= RNA_def_property(srna, "sculpt_levels", PROP_INT, PROP_UNSIGNED);
+ RNA_def_property_int_sdna(prop, NULL, "sculptlvl");
+ RNA_def_property_ui_text(prop, "Sculpt Levels", "Number of subdivisions to use in sculpt mode.");
RNA_def_property_int_funcs(prop, NULL, NULL, "rna_MultiresModifier_level_range");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop= RNA_def_property(srna, "render_levels", PROP_INT, PROP_UNSIGNED);
+ RNA_def_property_int_sdna(prop, NULL, "renderlvl");
+ RNA_def_property_ui_text(prop, "Render Levels", "");
+ RNA_def_property_int_funcs(prop, NULL, NULL, "rna_MultiresModifier_level_range");
+
+ prop= RNA_def_property(srna, "total_levels", PROP_INT, PROP_UNSIGNED);
+ RNA_def_property_int_sdna(prop, NULL, "totlvl");
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Total Levels", "Number of subdivisions for which displacements are stored.");
+
+ prop= RNA_def_property(srna, "external", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_boolean_funcs(prop, "rna_MultiresModifier_external_get", NULL);
+ RNA_def_property_ui_text(prop, "External", "Store multires displacements outside the .blend file, to save memory.");
+
+ prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH);
+ RNA_def_property_string_funcs(prop, "rna_MultiresModifier_filename_get", "rna_MultiresModifier_filename_length", "rna_MultiresModifier_filename_set");
+ RNA_def_property_ui_text(prop, "Filename", "Path to external displacements file.");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop= RNA_def_property(srna, "optimal_display", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flags", eMultiresModifierFlag_ControlEdges);
+ RNA_def_property_ui_text(prop, "Optimal Display", "Skip drawing/rendering of interior subdivided edges");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
}
static void rna_def_modifier_lattice(BlenderRNA *brna)
@@ -675,7 +746,7 @@ static void rna_def_modifier_mirror(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Mirror V", "Mirror the V texture coordinate around the 0.5 point.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "merge_limit", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "merge_limit", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "tolerance");
RNA_def_property_range(prop, 0, FLT_MAX);
RNA_def_property_ui_range(prop, 0, 1, 0.01, 6);
@@ -842,19 +913,19 @@ static void rna_def_modifier_wave(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Speed", "");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "height", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "height", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
RNA_def_property_ui_range(prop, -2, 2, 10, 2);
RNA_def_property_ui_text(prop, "Height", "");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "width", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "width", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_range(prop, 0, FLT_MAX);
RNA_def_property_ui_range(prop, 0, 5, 10, 2);
RNA_def_property_ui_text(prop, "Width", "");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "narrowness", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "narrowness", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "narrow");
RNA_def_property_range(prop, 0, FLT_MAX);
RNA_def_property_ui_range(prop, 0, 10, 10, 2);
@@ -1173,7 +1244,7 @@ static void rna_def_modifier_displace(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "midlevel", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "midlevel", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_range(prop, 0, 1);
RNA_def_property_ui_range(prop, 0, 1, 10, 3);
RNA_def_property_ui_text(prop, "Midlevel", "Material value that gives no displacement.");
@@ -1397,6 +1468,10 @@ static void rna_def_modifier_meshdeform(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
+ static EnumPropertyItem prop_mode_items[] = {
+ {0, "VOLUME", 0, "Volume", "Bind to volume inside cage mesh."},
+ {1, "SURFACE", 0, "Surface", "Bind to surface of cage mesh."},
+ {0, NULL, 0, NULL, NULL}};
srna= RNA_def_struct(brna, "MeshDeformModifier", "Modifier");
RNA_def_struct_ui_text(srna, "MeshDeform Modifier", "Mesh deformation modifier to deform with other meshes.");
@@ -1436,6 +1511,10 @@ static void rna_def_modifier_meshdeform(BlenderRNA *brna)
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, 0, "rna_Modifier_update");
+ prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_items(prop, prop_mode_items);
+ RNA_def_property_ui_text(prop, "Mode", "Method of binding vertices are bound to cage mesh.");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
}
static void rna_def_modifier_particlesystem(BlenderRNA *brna)
@@ -1676,9 +1755,10 @@ static void rna_def_modifier_bevel(BlenderRNA *brna)
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);
+ prop= RNA_def_property(srna, "width", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "value");
- RNA_def_property_range(prop, 0, 0.5);
+ RNA_def_property_range(prop, 0, FLT_MAX);
+ RNA_def_property_ui_range(prop, 0, 10, 0.1, 4);
RNA_def_property_ui_text(prop, "Width", "Bevel value/amount.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -1930,6 +2010,67 @@ static void rna_def_modifier_surface(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "SurfaceModifierData");
RNA_def_struct_ui_icon(srna, ICON_MOD_PHYSICS);
}
+
+static void rna_def_modifier_solidify(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ srna= RNA_def_struct(brna, "SolidifyModifier", "Modifier");
+ RNA_def_struct_ui_text(srna, "Solidify Modifier", "Create a solid skin by extruding, compensating for sharp angles.");
+ RNA_def_struct_sdna(srna, "SolidifyModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_DISPLACE);
+
+ prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_DISTANCE);
+ RNA_def_property_float_sdna(prop, NULL, "offset");
+ RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
+ RNA_def_property_ui_range(prop, -10, 10, 0.1, 4);
+ RNA_def_property_ui_text(prop, "Thickness", "Thickness of the shell.");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop= RNA_def_property(srna, "edge_crease_inner", PROP_FLOAT, PROP_FACTOR);
+ RNA_def_property_float_sdna(prop, NULL, "crease_inner");
+ RNA_def_property_range(prop, 0, 1);
+ RNA_def_property_ui_range(prop, 0, 1, 0.1, 3);
+ RNA_def_property_ui_text(prop, "Inner Crease", "Assign a crease to inner edges.");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop= RNA_def_property(srna, "edge_crease_outer", PROP_FLOAT, PROP_FACTOR);
+ RNA_def_property_float_sdna(prop, NULL, "crease_outer");
+ RNA_def_property_range(prop, 0, 1);
+ RNA_def_property_ui_range(prop, 0, 1, 0.1, 3);
+ RNA_def_property_ui_text(prop, "Outer Crease", "Assign a crease to outer edges.");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop= RNA_def_property(srna, "edge_crease_rim", PROP_FLOAT, PROP_FACTOR);
+ RNA_def_property_float_sdna(prop, NULL, "crease_rim");
+ RNA_def_property_range(prop, 0, 1);
+ RNA_def_property_ui_range(prop, 0, 1, 0.1, 3);
+ RNA_def_property_ui_text(prop, "Rim Crease", "Assign a crease to the edges making up the rim.");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_sdna(prop, NULL, "vgroup");
+ RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name.");
+ RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SolidifyModifier_vgroup_set");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop= RNA_def_property(srna, "use_rim", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SOLIDIFY_RIM);
+ RNA_def_property_ui_text(prop, "Fill Rim", "Create edge loops between the inner and outer surfaces on face edges (slow, disable when not needed)");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop= RNA_def_property(srna, "use_even_offset", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SOLIDIFY_EVEN);
+ RNA_def_property_ui_text(prop, "Even Thickness", "Maintain thickness by adjusting for sharp corners (slow, disable when not needed)");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop= RNA_def_property(srna, "use_quality_normals", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SOLIDIFY_NORMAL_CALC);
+ RNA_def_property_ui_text(prop, "High Quality Normals", "Calculate normals which result in more even thickness (slow, disable when not needed)");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+}
+
void RNA_def_modifier(BlenderRNA *brna)
{
StructRNA *srna;
@@ -1946,6 +2087,7 @@ void RNA_def_modifier(BlenderRNA *brna)
prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_property_string_funcs(prop, NULL, NULL, "rna_Modifier_name_set");
RNA_def_property_ui_text(prop, "Name", "Modifier name.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER|NA_RENAME, NULL);
RNA_def_struct_name_property(srna, prop);
/* enums */
@@ -1959,6 +2101,7 @@ void RNA_def_modifier(BlenderRNA *brna)
prop= RNA_def_property(srna, "realtime", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_Realtime);
RNA_def_property_ui_text(prop, "Realtime", "Realtime display of a modifier.");
+ RNA_def_property_flag(prop, PROP_LIB_EXCEPTION);
RNA_def_property_update(prop, 0, "rna_Modifier_update");
RNA_def_property_ui_icon(prop, ICON_RESTRICT_VIEW_OFF, 0);
@@ -2015,6 +2158,7 @@ void RNA_def_modifier(BlenderRNA *brna)
rna_def_modifier_multires(brna);
rna_def_modifier_surface(brna);
rna_def_modifier_smoke(brna);
+ rna_def_modifier_solidify(brna);
}
#endif
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 1aec395b43f..d1e73d6add3 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -149,9 +149,8 @@ static void rna_Matte_t2_set(PointerRNA *ptr, float value)
chroma->t2 = value;
}
-static void node_update(bContext *C, bNodeTree *ntree, bNode *node)
+static void node_update(Main *bmain, Scene *scene, bNodeTree *ntree, bNode *node)
{
- Main *bmain= CTX_data_main(C);
Material *ma;
Tex *tex;
Scene *sce;
@@ -170,15 +169,15 @@ static void node_update(bContext *C, bNodeTree *ntree, bNode *node)
ED_node_changed_update(&sce->id, node);
}
-static void rna_Node_update(bContext *C, PointerRNA *ptr)
+static void rna_Node_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
bNodeTree *ntree= (bNodeTree*)ptr->id.data;
bNode *node= (bNode*)ptr->data;
- node_update(C, ntree, node);
+ node_update(bmain, scene, ntree, node);
}
-static void rna_Node_update_name(bContext *C, PointerRNA *ptr)
+static void rna_Node_update_name(Main *bmain, Scene *scene, PointerRNA *ptr)
{
bNodeTree *ntree= (bNodeTree*)ptr->id.data;
bNode *node= (bNode*)ptr->data;
@@ -193,12 +192,12 @@ static void rna_Node_update_name(bContext *C, PointerRNA *ptr)
/* fix all the animation data which may link to this */
BKE_all_animdata_fix_paths_rename("nodes", oldname, node->name);
- node_update(C, ntree, node);
+ node_update(bmain, scene, ntree, node);
}
/* this should be done at display time! if no custom names are set */
#if 0
-static void rna_Node_update_username(bContext *C, PointerRNA *ptr)
+static void rna_Node_update_username(Main *bmain, Scene *scene, PointerRNA *ptr)
{
bNode *node= (bNode*)ptr->data;
const char *name;
@@ -241,18 +240,18 @@ static void rna_Node_update_username(bContext *C, PointerRNA *ptr)
}
}
- rna_Node_update(C, ptr);
+ rna_Node_update(bmain, scene, ptr);
}
#endif
-static void rna_NodeSocket_update(bContext *C, PointerRNA *ptr)
+static void rna_NodeSocket_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
bNodeTree *ntree= (bNodeTree*)ptr->id.data;
bNodeSocket *sock= (bNodeSocket*)ptr->data;
bNode *node;
if (nodeFindNode(ntree, sock, &node, NULL))
- node_update(C, ntree, node);
+ node_update(bmain, scene, ntree, node);
}
static void rna_NodeSocket_defvalue_range(PointerRNA *ptr, float *min, float *max)
@@ -263,16 +262,16 @@ static void rna_NodeSocket_defvalue_range(PointerRNA *ptr, float *min, float *ma
*max = sock->ns.max;
}
-static void rna_Node_mapping_update(bContext *C, PointerRNA *ptr)
+static void rna_Node_mapping_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
bNode *node= (bNode*)ptr->data;
init_mapping((TexMapping *)node->storage);
- rna_Node_update(C, ptr);
+ rna_Node_update(bmain, scene, ptr);
}
-static void rna_Node_image_layer_update(bContext *C, PointerRNA *ptr)
+static void rna_Node_image_layer_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
bNode *node= (bNode*)ptr->data;
Image *ima = (Image *)node->id;
@@ -281,7 +280,7 @@ static void rna_Node_image_layer_update(bContext *C, PointerRNA *ptr)
BKE_image_multilayer_index(ima->rr, iuser);
BKE_image_signal(ima, iuser, IMA_SIGNAL_SRC_CHANGE);
- rna_Node_update(C, ptr);
+ rna_Node_update(bmain, scene, ptr);
}
static EnumPropertyItem *renderresult_layers_add_enum(RenderLayer *rl)
diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c
index d5b0abeba41..25fac31b7ba 100644
--- a/source/blender/makesrna/intern/rna_object.c
+++ b/source/blender/makesrna/intern/rna_object.c
@@ -67,6 +67,16 @@ static EnumPropertyItem parent_type_items[] = {
{PARVERT3, "VERTEX_3", 0, "3 Vertices", ""},
{PARBONE, "BONE", 0, "Bone", ""},
{0, NULL, 0, NULL, NULL}};
+
+static EnumPropertyItem collision_bounds_items[] = {
+ {OB_BOUND_BOX, "BOX", 0, "Box", ""},
+ {OB_BOUND_SPHERE, "SPHERE", 0, "Sphere", ""},
+ {OB_BOUND_CYLINDER, "CYLINDER", 0, "Cylinder", ""},
+ {OB_BOUND_CONE, "CONE", 0, "Cone", ""},
+ {OB_BOUND_POLYT, "CONVEX_HULL", 0, "Convex Hull", ""},
+ {OB_BOUND_POLYH, "TRIANGLE_MESH", 0, "Triangle Mesh", ""},
+ //{OB_DYN_MESH, "DYNAMIC_MESH", 0, "Dynamic Mesh", ""},
+ {0, NULL, 0, NULL, NULL}};
EnumPropertyItem object_type_items[] = {
{OB_MESH, "MESH", 0, "Mesh", ""},
@@ -81,8 +91,7 @@ EnumPropertyItem object_type_items[] = {
{0, "", 0, NULL, NULL},
{OB_CAMERA, "CAMERA", 0, "Camera", ""},
{OB_LAMP, "LAMP", 0, "Lamp", ""},
- {0, NULL, 0, NULL, NULL}
-};
+ {0, NULL, 0, NULL, NULL}};
#ifdef RNA_RUNTIME
@@ -107,56 +116,56 @@ EnumPropertyItem object_type_items[] = {
#include "BLI_editVert.h" /* for EditMesh->mat_nr */
+#include "ED_mesh.h"
#include "ED_object.h"
#include "ED_particle.h"
-void rna_Object_update(bContext *C, PointerRNA *ptr)
+void rna_Object_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
DAG_id_flush_update(ptr->id.data, OB_RECALC_OB);
}
-void rna_Object_matrix_update(bContext *C, PointerRNA *ptr)
+void rna_Object_matrix_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
ED_object_apply_obmat(ptr->id.data);
- rna_Object_update(C, ptr);
+ rna_Object_update(bmain, scene, ptr);
}
-void rna_Object_update_data(bContext *C, PointerRNA *ptr)
+void rna_Object_update_data(Main *bmain, Scene *scene, PointerRNA *ptr)
{
DAG_id_flush_update(ptr->id.data, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ptr->id.data);
+ WM_main_add_notifier(NC_OBJECT|ND_DRAW, ptr->id.data);
}
-void rna_Object_active_shape_update(bContext *C, PointerRNA *ptr)
+void rna_Object_active_shape_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Object *ob= ptr->id.data;
- Scene *scene= CTX_data_scene(C);
int editmode= (scene->obedit == ob && ob->type == OB_MESH);
if(editmode) {
/* exit/enter editmode to get new shape */
- ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO);
- ED_object_enter_editmode(C, EM_WAITCURSOR);
+ EDBM_LoadEditBMesh(scene, ob);
+ EDBM_MakeEditBMesh(scene->toolsettings, scene, ob);
}
- rna_Object_update_data(C, ptr);
+ rna_Object_update_data(bmain, scene, ptr);
}
-static void rna_Object_dependency_update(bContext *C, PointerRNA *ptr)
+static void rna_Object_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
DAG_id_flush_update(ptr->id.data, OB_RECALC_OB);
- DAG_scene_sort(CTX_data_scene(C));
+ DAG_scene_sort(scene);
}
/* when changing the selection flag the scene needs updating */
-static void rna_Object_select_update(bContext *C, PointerRNA *ptr)
+static void rna_Object_select_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Object *ob= (Object*)ptr->id.data;
short mode = ob->flag & SELECT ? BA_SELECT : BA_DESELECT;
- ED_base_object_select(object_in_scene(ob, CTX_data_scene(C)), mode);
+ ED_base_object_select(object_in_scene(ob, scene), mode);
}
-static void rna_Base_select_update(bContext *C, PointerRNA *ptr)
+static void rna_Base_select_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Base *base= (Base*)ptr->data;
short mode = base->flag & BA_SELECT ? BA_SELECT : BA_DESELECT;
@@ -175,29 +184,28 @@ static void rna_Object_layer_update__internal(Scene *scene, Base *base, Object *
}
}
-static void rna_Object_layer_update(bContext *C, PointerRNA *ptr)
+static void rna_Object_layer_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Object *ob= (Object*)ptr->id.data;
- Scene *scene= CTX_data_scene(C);
Base *base;
base= object_in_scene(ob, scene);
if(!base)
return;
+
+ SWAP(int, base->lay, ob->lay);
- base->lay= ob->lay;
rna_Object_layer_update__internal(scene, base, ob);
+ ob->lay= base->lay;
}
-static void rna_Base_layer_update(bContext *C, PointerRNA *ptr)
+static void rna_Base_layer_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Base *base= (Base*)ptr->id.data;
Object *ob= (Object*)base->object;
- Scene *scene= CTX_data_scene(C);
-
- ob->lay= base->lay;
rna_Object_layer_update__internal(scene, base, ob);
+ ob->lay= base->lay;
}
static int rna_Object_data_editable(PointerRNA *ptr)
@@ -298,6 +306,28 @@ static EnumPropertyItem *rna_Object_parent_type_itemf(bContext *C, PointerRNA *p
return item;
}
+static EnumPropertyItem *rna_Object_collision_bounds_itemf(bContext *C, PointerRNA *ptr, int *free)
+{
+ Object *ob= (Object*)ptr->data;
+ EnumPropertyItem *item= NULL;
+ int totitem= 0;
+
+ RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_POLYH);
+ RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_POLYT);
+
+ if(ob->body_type!=OB_BODY_TYPE_SOFT) {
+ RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_CONE);
+ RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_CYLINDER);
+ RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_SPHERE);
+ RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_BOX);
+ }
+
+ RNA_enum_item_end(&item, &totitem);
+ *free= 1;
+
+ return item;
+}
+
static void rna_Object_parent_bone_set(PointerRNA *ptr, const char *value)
{
Object *ob= (Object*)ptr->data;
@@ -498,9 +528,8 @@ static void rna_Object_active_particle_system_index_set(PointerRNA *ptr, int val
psys_set_current_num(ob, value);
}
-static void rna_Object_particle_update(bContext *C, PointerRNA *ptr)
+static void rna_Object_particle_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- Scene *scene= CTX_data_scene(C);
Object *ob= (Object*)ptr->id.data;
PE_current_changed(scene, ob);
@@ -579,6 +608,71 @@ static void rna_Object_dimensions_set(PointerRNA *ptr, const float *value)
}
}
+static int rna_Object_location_editable(PointerRNA *ptr, int index)
+{
+ Object *ob= (Object *)ptr->data;
+
+ /* only if the axis in question is locked, not editable... */
+ if ((index == 0) && (ob->protectflag & OB_LOCK_LOCX))
+ return 0;
+ else if ((index == 1) && (ob->protectflag & OB_LOCK_LOCY))
+ return 0;
+ else if ((index == 2) && (ob->protectflag & OB_LOCK_LOCZ))
+ return 0;
+ else
+ return PROP_EDITABLE;
+}
+
+static int rna_Object_scale_editable(PointerRNA *ptr, int index)
+{
+ Object *ob= (Object *)ptr->data;
+
+ /* only if the axis in question is locked, not editable... */
+ if ((index == 0) && (ob->protectflag & OB_LOCK_SCALEX))
+ return 0;
+ else if ((index == 1) && (ob->protectflag & OB_LOCK_SCALEY))
+ return 0;
+ else if ((index == 2) && (ob->protectflag & OB_LOCK_SCALEZ))
+ return 0;
+ else
+ return PROP_EDITABLE;
+}
+
+static int rna_Object_rotation_euler_editable(PointerRNA *ptr, int index)
+{
+ Object *ob= (Object *)ptr->data;
+
+ /* only if the axis in question is locked, not editable... */
+ if ((index == 0) && (ob->protectflag & OB_LOCK_ROTX))
+ return 0;
+ else if ((index == 1) && (ob->protectflag & OB_LOCK_ROTY))
+ return 0;
+ else if ((index == 2) && (ob->protectflag & OB_LOCK_ROTZ))
+ return 0;
+ else
+ return PROP_EDITABLE;
+}
+
+static int rna_Object_rotation_4d_editable(PointerRNA *ptr, int index)
+{
+ Object *ob= (Object *)ptr->data;
+
+ /* only consider locks if locking components individually... */
+ if (ob->protectflag & OB_LOCK_ROT4D) {
+ /* only if the axis in question is locked, not editable... */
+ if ((index == 0) && (ob->protectflag & OB_LOCK_ROTW))
+ return 0;
+ else if ((index == 1) && (ob->protectflag & OB_LOCK_ROTX))
+ return 0;
+ else if ((index == 2) && (ob->protectflag & OB_LOCK_ROTY))
+ return 0;
+ else if ((index == 3) && (ob->protectflag & OB_LOCK_ROTZ))
+ return 0;
+ }
+
+ return PROP_EDITABLE;
+}
+
static PointerRNA rna_MaterialSlot_material_get(PointerRNA *ptr)
{
@@ -877,23 +971,33 @@ static void rna_Object_active_constraint_set(PointerRNA *ptr, PointerRNA value)
constraints_set_active(&ob->constraints, (bConstraint *)value.data);
}
-static bConstraint *rna_Object_constraints_new(Object *object, bContext *C, int type)
+static bConstraint *rna_Object_constraint_new(Object *object, bContext *C, int type)
{
- WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT|NA_ADDED, object);
+ WM_main_add_notifier(NC_OBJECT|ND_CONSTRAINT|NA_ADDED, object);
return add_ob_constraint(object, NULL, type);
}
-static int rna_Object_constraints_remove(Object *object, bContext *C, int index)
+static int rna_Object_constraint_remove(Object *object, bContext *C, int index)
{
int ok = remove_constraint_index(&object->constraints, index);
if(ok) {
ED_object_constraint_set_active(object, NULL);
- WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, object);
+ WM_main_add_notifier(NC_OBJECT|ND_CONSTRAINT, object);
}
return ok;
}
+static ModifierData *rna_Object_modifier_new(Object *object, bContext *C, ReportList *reports, char *name, int type)
+{
+ return ED_object_modifier_add(reports, CTX_data_scene(C), object, name, type);
+}
+
+static void rna_Object_modifier_remove(Object *object, bContext *C, ReportList *reports, ModifierData *md)
+{
+ ED_object_modifier_remove(reports, CTX_data_scene(C), object, md);
+}
+
#else
static void rna_def_vertex_group(BlenderRNA *brna)
@@ -909,6 +1013,7 @@ static void rna_def_vertex_group(BlenderRNA *brna)
prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_property_ui_text(prop, "Name", "Vertex group name.");
RNA_def_struct_name_property(srna, prop);
+ RNA_def_property_update(prop, NC_GEOM|ND_DATA|NA_RENAME, NULL);
prop= RNA_def_property(srna, "index", PROP_INT, PROP_UNSIGNED);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
@@ -939,13 +1044,13 @@ static void rna_def_material_slot(BlenderRNA *brna)
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.");
- RNA_def_property_update(prop, NC_OBJECT|ND_SHADING, "rna_Object_update");
+ RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update");
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.");
- RNA_def_property_update(prop, NC_OBJECT|ND_SHADING, "rna_Object_update");
+ RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update");
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);
@@ -969,16 +1074,6 @@ static void rna_def_object_game_settings(BlenderRNA *brna)
{OB_BODY_TYPE_SENSOR, "SENSOR", 0, "Sensor", "Collision Sensor, detects static and dynamic objects but not the other collision sensor objects"},
{0, NULL, 0, NULL, NULL}};
- static EnumPropertyItem collision_bounds_items[] = {
- {OB_BOUND_BOX, "BOX", 0, "Box", ""},
- {OB_BOUND_SPHERE, "SPHERE", 0, "Sphere", ""},
- {OB_BOUND_CYLINDER, "CYLINDER", 0, "Cylinder", ""},
- {OB_BOUND_CONE, "CONE", 0, "Cone", ""},
- {OB_BOUND_POLYT, "CONVEX_HULL", 0, "Convex Hull", ""},
- {OB_BOUND_POLYH, "TRIANGLE_MESH", 0, "Triangle Mesh", ""},
- //{OB_DYN_MESH, "DYNAMIC_MESH", 0, "Dynamic Mesh", ""},
- {0, NULL, 0, NULL, NULL}};
-
srna= RNA_def_struct(brna, "GameObjectSettings", NULL);
RNA_def_struct_sdna(srna, "Object");
RNA_def_struct_nested(brna, srna, "Object");
@@ -1128,6 +1223,7 @@ static void rna_def_object_game_settings(BlenderRNA *brna)
prop= RNA_def_property(srna, "collision_bounds", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "boundtype");
RNA_def_property_enum_items(prop, collision_bounds_items);
+ RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_Object_collision_bounds_itemf");
RNA_def_property_ui_text(prop, "Collision Bounds", "Selects the collision type.");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
@@ -1185,7 +1281,7 @@ static void rna_def_object_constraints(BlenderRNA *brna, PropertyRNA *cprop)
/* Constraint collection */
- func= RNA_def_function(srna, "new", "rna_Object_constraints_new");
+ func= RNA_def_function(srna, "new", "rna_Object_constraint_new");
RNA_def_function_flag(func, FUNC_USE_CONTEXT);
RNA_def_function_ui_description(func, "Add a new constraint to this object");
/* return type */
@@ -1195,7 +1291,7 @@ static void rna_def_object_constraints(BlenderRNA *brna, PropertyRNA *cprop)
parm= RNA_def_enum(func, "type", constraint_type_items, 1, "", "Constraint type to add.");
RNA_def_property_flag(parm, PROP_REQUIRED);
- func= RNA_def_function(srna, "remove", "rna_Object_constraints_remove");
+ func= RNA_def_function(srna, "remove", "rna_Object_constraint_remove");
RNA_def_function_flag(func, FUNC_USE_CONTEXT);
RNA_def_function_ui_description(func, "Remove a constraint from this object.");
/* return type */
@@ -1206,6 +1302,54 @@ static void rna_def_object_constraints(BlenderRNA *brna, PropertyRNA *cprop)
RNA_def_property_flag(parm, PROP_REQUIRED);
}
+/* armature.bones.* */
+static void rna_def_object_modifiers(BlenderRNA *brna, PropertyRNA *cprop)
+{
+ StructRNA *srna;
+
+ FunctionRNA *func;
+ PropertyRNA *parm;
+
+ RNA_def_property_srna(cprop, "ObjectModifiers");
+ srna= RNA_def_struct(brna, "ObjectModifiers", NULL);
+ RNA_def_struct_sdna(srna, "Object");
+ RNA_def_struct_ui_text(srna, "Object Modifiers", "Collection of object modifiers.");
+
+#if 0
+ prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "EditBone");
+ RNA_def_property_pointer_sdna(prop, NULL, "act_edbone");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Active EditBone", "Armatures active edit bone.");
+ //RNA_def_property_update(prop, 0, "rna_Armature_act_editbone_update");
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_Armature_act_edit_bone_set", NULL);
+
+ /* todo, redraw */
+// RNA_def_property_collection_active(prop, prop_act);
+#endif
+
+ /* add target */
+ func= RNA_def_function(srna, "new", "rna_Object_modifier_new");
+ RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS);
+ RNA_def_function_ui_description(func, "Add a new bone.");
+ parm= RNA_def_string(func, "name", "Name", 0, "", "New name for the bone.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ /* modifier to add */
+ parm= RNA_def_enum(func, "type", modifier_type_items, 1, "", "Modifier type to add.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ /* return type */
+ parm= RNA_def_pointer(func, "modifier", "Modifier", "", "Newly created modifier.");
+ RNA_def_function_return(func, parm);
+
+ /* remove target */
+ func= RNA_def_function(srna, "remove", "rna_Object_modifier_remove");
+ RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS);
+ RNA_def_function_ui_description(func, "Remove an existing modifier from the object.");
+ /* target to remove*/
+ parm= RNA_def_pointer(func, "modifier", "Modifier", "", "Modifier to remove.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+}
+
static void rna_def_object(BlenderRNA *brna)
{
StructRNA *srna;
@@ -1254,7 +1398,7 @@ static void rna_def_object(BlenderRNA *brna)
{OB_BOUNDBOX, "BOUNDS", 0, "Bounds", ""},
{OB_WIRE, "WIRE", 0, "Wire", ""},
{OB_SOLID, "SOLID", 0, "Solid", ""},
- {OB_SHADED, "SHADED", 0, "Shaded", ""},
+ // disabled {OB_SHADED, "SHADED", 0, "Shaded", ""},
{OB_TEXTURE, "TEXTURED", 0, "Textured", ""},
{0, NULL, 0, NULL, NULL}};
@@ -1318,6 +1462,7 @@ static void rna_def_object(BlenderRNA *brna)
RNA_def_property_array(prop, 20);
RNA_def_property_ui_text(prop, "Layers", "Layers the object is on.");
RNA_def_property_boolean_funcs(prop, NULL, "rna_Object_layer_set");
+ RNA_def_property_flag(prop, PROP_LIB_EXCEPTION);
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_layer_update");
prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE);
@@ -1388,22 +1533,24 @@ static void rna_def_object(BlenderRNA *brna)
RNA_def_property_pointer_funcs(prop, "rna_Object_active_material_get", "rna_Object_active_material_set", NULL);
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Active Material", "Active material being displayed.");
- RNA_def_property_update(prop, NC_OBJECT|ND_SHADING, "rna_Object_update");
+ RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update");
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, "rna_Object_active_material_index_get", "rna_Object_active_material_index_set", "rna_Object_active_material_index_range");
RNA_def_property_ui_text(prop, "Active Material Index", "Index of active material slot.");
- RNA_def_property_update(prop, NC_OBJECT|ND_SHADING, NULL);
+ RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
/* transform */
prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_float_sdna(prop, NULL, "loc");
+ RNA_def_property_editable_array_func(prop, "rna_Object_location_editable");
RNA_def_property_ui_text(prop, "Location", "Location of the object.");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update");
prop= RNA_def_property(srna, "rotation_quaternion", PROP_FLOAT, PROP_QUATERNION);
RNA_def_property_float_sdna(prop, NULL, "quat");
+ RNA_def_property_editable_array_func(prop, "rna_Object_rotation_4d_editable");
RNA_def_property_ui_text(prop, "Quaternion Rotation", "Rotation in Quaternions.");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update");
@@ -1413,11 +1560,13 @@ static void rna_def_object(BlenderRNA *brna)
prop= RNA_def_property(srna, "rotation_axis_angle", PROP_FLOAT, PROP_AXISANGLE);
RNA_def_property_array(prop, 4); // TODO: maybe we'll need to define the 'default value' getter too...
RNA_def_property_float_funcs(prop, "rna_Object_rotation_axis_angle_get", "rna_Object_rotation_axis_angle_set", NULL);
+ RNA_def_property_editable_array_func(prop, "rna_Object_rotation_4d_editable");
RNA_def_property_ui_text(prop, "Axis-Angle Rotation", "Angle of Rotation for Axis-Angle rotation representation.");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update");
prop= RNA_def_property(srna, "rotation_euler", PROP_FLOAT, PROP_EULER);
RNA_def_property_float_sdna(prop, NULL, "rot");
+ RNA_def_property_editable_array_func(prop, "rna_Object_rotation_euler_editable");
RNA_def_property_ui_text(prop, "Euler Rotation", "Rotation in Eulers.");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update");
@@ -1430,6 +1579,7 @@ static void rna_def_object(BlenderRNA *brna)
prop= RNA_def_property(srna, "scale", PROP_FLOAT, PROP_XYZ);
RNA_def_property_float_sdna(prop, NULL, "size");
+ RNA_def_property_editable_array_func(prop, "rna_Object_scale_editable");
RNA_def_property_ui_text(prop, "Scale", "Scaling of the object.");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update");
@@ -1513,6 +1663,7 @@ static void rna_def_object(BlenderRNA *brna)
prop= RNA_def_property(srna, "modifiers", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "Modifier");
RNA_def_property_ui_text(prop, "Modifiers", "Modifiers affecting the geometric data of the Object.");
+ rna_def_object_modifiers(brna, prop);
/* game engine */
prop= RNA_def_property(srna, "game", PROP_POINTER, PROP_NONE);
@@ -1531,13 +1682,13 @@ static void rna_def_object(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "VertexGroup");
RNA_def_property_pointer_funcs(prop, "rna_Object_active_vertex_group_get", "rna_Object_active_vertex_group_set", NULL);
RNA_def_property_ui_text(prop, "Active Vertex Group", "Vertex groups of the object.");
- RNA_def_property_update(prop, 0, "rna_Object_update_data");
+ RNA_def_property_update(prop, NC_GEOM|ND_DATA, "rna_Object_update_data");
prop= RNA_def_property(srna, "active_vertex_group_index", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "actdef");
RNA_def_property_int_funcs(prop, "rna_Object_active_vertex_group_index_get", "rna_Object_active_vertex_group_index_set", "rna_Object_active_vertex_group_index_range");
RNA_def_property_ui_text(prop, "Active Vertex Group Index", "Active index in vertex group array.");
- RNA_def_property_update(prop, 0, "rna_Object_update_data");
+ RNA_def_property_update(prop, NC_GEOM|ND_DATA, "rna_Object_update_data");
/* empty */
prop= RNA_def_property(srna, "empty_draw_type", PROP_ENUM, PROP_NONE);
@@ -1556,7 +1707,8 @@ static void rna_def_object(BlenderRNA *brna)
prop= RNA_def_property(srna, "pass_index", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "index");
RNA_def_property_ui_text(prop, "Pass Index", "Index # for the IndexOB render pass.");
-
+ RNA_def_property_update(prop, NC_OBJECT, NULL);
+
prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "col");
RNA_def_property_ui_text(prop, "Color", "Object color and alpha, used when faces have the ObColor mode enabled.");
@@ -1741,7 +1893,7 @@ static void rna_def_object(BlenderRNA *brna)
prop= RNA_def_property(srna, "draw_axis", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dtx", OB_AXIS);
- RNA_def_property_ui_text(prop, "Draw Axis", "Displays the object's center and axis");
+ RNA_def_property_ui_text(prop, "Draw Axis", "Displays the object's origin and axis");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
prop= RNA_def_property(srna, "draw_texture_space", PROP_BOOLEAN, PROP_NONE);
diff --git a/source/blender/makesrna/intern/rna_object_api.c b/source/blender/makesrna/intern/rna_object_api.c
index 827e0cc60d9..63b4549f7c9 100644
--- a/source/blender/makesrna/intern/rna_object_api.c
+++ b/source/blender/makesrna/intern/rna_object_api.c
@@ -311,7 +311,7 @@ static Object *rna_Object_find_armature(Object *ob)
int rna_Object_is_visible(Object *ob, bContext *C)
{
- return ob->lay & CTX_data_scene(C)->lay;
+ return !(ob->restrictflag & OB_RESTRICT_VIEW) && ob->lay & CTX_data_scene(C)->lay;
}
/*
diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c
index 9e764419f19..67c7a9aa078 100644
--- a/source/blender/makesrna/intern/rna_object_force.c
+++ b/source/blender/makesrna/intern/rna_object_force.c
@@ -97,9 +97,9 @@ EnumPropertyItem empty_vortex_shape_items[] = {
#include "ED_object.h"
-static void rna_Cache_change(bContext *C, PointerRNA *ptr)
+static void rna_Cache_change(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- Object *ob = CTX_data_active_object(C);
+ Object *ob = (Object*)ptr->id.data;
PointCache *cache = (PointCache*)ptr->data;
PTCacheID *pid = NULL;
ListBase pidlist;
@@ -124,9 +124,9 @@ static void rna_Cache_change(bContext *C, PointerRNA *ptr)
BLI_freelistN(&pidlist);
}
-static void rna_Cache_toggle_disk_cache(bContext *C, PointerRNA *ptr)
+static void rna_Cache_toggle_disk_cache(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- Object *ob = CTX_data_active_object(C);
+ Object *ob = (Object*)ptr->id.data;
PointCache *cache = (PointCache*)ptr->data;
PTCacheID *pid = NULL;
ListBase pidlist;
@@ -147,9 +147,9 @@ static void rna_Cache_toggle_disk_cache(bContext *C, PointerRNA *ptr)
BLI_freelistN(&pidlist);
}
-static void rna_Cache_idname_change(bContext *C, PointerRNA *ptr)
+static void rna_Cache_idname_change(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- Object *ob = CTX_data_active_object(C);
+ Object *ob = (Object*)ptr->id.data;
PointCache *cache = (PointCache*)ptr->data;
PTCacheID *pid = NULL, *pid2= NULL;
ListBase pidlist;
@@ -440,7 +440,7 @@ static int particle_id_check(PointerRNA *ptr)
return (GS(id->name) == ID_PA);
}
-static void rna_FieldSettings_update(bContext *C, PointerRNA *ptr)
+static void rna_FieldSettings_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
if(particle_id_check(ptr)) {
ParticleSettings *part = (ParticleSettings*)ptr->id.data;
@@ -456,7 +456,7 @@ static void rna_FieldSettings_update(bContext *C, PointerRNA *ptr)
}
DAG_id_flush_update(&part->id, OB_RECALC|PSYS_RECALC_RESET);
- WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, NULL);
+ WM_main_add_notifier(NC_OBJECT|ND_DRAW, NULL);
}
else {
@@ -468,14 +468,12 @@ static void rna_FieldSettings_update(bContext *C, PointerRNA *ptr)
}
DAG_id_flush_update(&ob->id, OB_RECALC_OB);
- WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+ WM_main_add_notifier(NC_OBJECT|ND_DRAW, ob);
}
}
-static void rna_FieldSettings_shape_update(bContext *C, PointerRNA *ptr)
+static void rna_FieldSettings_shape_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- Scene *scene= CTX_data_scene(C);
-
if(!particle_id_check(ptr)) {
Object *ob= (Object*)ptr->id.data;
PartDeflect *pd= ob->pd;
@@ -485,21 +483,19 @@ static void rna_FieldSettings_shape_update(bContext *C, PointerRNA *ptr)
if(!md) {
if(pd && (pd->shape == PFIELD_SHAPE_SURFACE) && ELEM(pd->forcefield,PFIELD_GUIDE,PFIELD_TEXTURE)==0)
if(ELEM4(ob->type, OB_MESH, OB_SURF, OB_FONT, OB_CURVE))
- ED_object_modifier_add(NULL, scene, ob, eModifierType_Surface);
+ ED_object_modifier_add(NULL, scene, ob, NULL, eModifierType_Surface);
}
else {
if(!pd || pd->shape != PFIELD_SHAPE_SURFACE)
ED_object_modifier_remove(NULL, scene, ob, md);
}
- WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+ WM_main_add_notifier(NC_OBJECT|ND_DRAW, ob);
}
}
-static void rna_FieldSettings_dependency_update(bContext *C, PointerRNA *ptr)
+static void rna_FieldSettings_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- Scene *scene= CTX_data_scene(C);
-
if(particle_id_check(ptr)) {
DAG_id_flush_update((ID*)ptr->id.data, OB_RECALC|PSYS_RECALC_RESET);
}
@@ -513,7 +509,7 @@ static void rna_FieldSettings_dependency_update(bContext *C, PointerRNA *ptr)
do_curvebuts(B_CU3D); // all curves too
}*/
- rna_FieldSettings_shape_update(C, ptr);
+ rna_FieldSettings_shape_update(bmain, scene, ptr);
DAG_scene_sort(scene);
@@ -522,7 +518,7 @@ static void rna_FieldSettings_dependency_update(bContext *C, PointerRNA *ptr)
else
DAG_id_flush_update(&ob->id, OB_RECALC_OB);
- WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+ WM_main_add_notifier(NC_OBJECT|ND_DRAW, ob);
}
}
@@ -550,22 +546,20 @@ static char *rna_FieldSettings_path(PointerRNA *ptr)
return NULL;
}
-static void rna_EffectorWeight_update(bContext *C, PointerRNA *ptr)
+static void rna_EffectorWeight_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
DAG_id_flush_update((ID*)ptr->id.data, OB_RECALC_DATA|PSYS_RECALC_RESET);
- WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, NULL);
+ WM_main_add_notifier(NC_OBJECT|ND_DRAW, NULL);
}
-static void rna_EffectorWeight_dependency_update(bContext *C, PointerRNA *ptr)
+static void rna_EffectorWeight_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- Scene *scene= CTX_data_scene(C);
-
DAG_scene_sort(scene);
DAG_id_flush_update((ID*)ptr->id.data, OB_RECALC_DATA|PSYS_RECALC_RESET);
- WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, NULL);
+ WM_main_add_notifier(NC_OBJECT|ND_DRAW, NULL);
}
static char *rna_EffectorWeight_path(PointerRNA *ptr)
@@ -612,35 +606,34 @@ static char *rna_EffectorWeight_path(PointerRNA *ptr)
return NULL;
}
-static void rna_CollisionSettings_dependency_update(bContext *C, PointerRNA *ptr)
+static void rna_CollisionSettings_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- Scene *scene= CTX_data_scene(C);
Object *ob= (Object*)ptr->id.data;
ModifierData *md= modifiers_findByType(ob, eModifierType_Collision);
/* add/remove modifier as needed */
if(ob->pd->deflect && !md)
- ED_object_modifier_add(NULL, scene, ob, eModifierType_Collision);
+ ED_object_modifier_add(NULL, scene, ob, NULL, eModifierType_Collision);
else if(!ob->pd->deflect && md)
ED_object_modifier_remove(NULL, scene, ob, md);
- WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+ WM_main_add_notifier(NC_OBJECT|ND_DRAW, ob);
}
-static void rna_CollisionSettings_update(bContext *C, PointerRNA *ptr)
+static void rna_CollisionSettings_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Object *ob= (Object*)ptr->id.data;
DAG_id_flush_update(&ob->id, OB_RECALC);
- WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+ WM_main_add_notifier(NC_OBJECT|ND_DRAW, ob);
}
-static void rna_softbody_update(bContext *C, PointerRNA *ptr)
+static void rna_softbody_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Object *ob= (Object*)ptr->id.data;
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ WM_main_add_notifier(NC_OBJECT|ND_MODIFIER, ob);
}
@@ -984,18 +977,18 @@ static void rna_def_field(BlenderRNA *brna)
static EnumPropertyItem field_type_items[] = {
{0, "NONE", 0, "None", ""},
- {PFIELD_FORCE, "FORCE", 0, "Force", ""},
- {PFIELD_WIND, "WIND", 0, "Wind", ""},
- {PFIELD_VORTEX, "VORTEX", 0, "Vortex", ""},
- {PFIELD_MAGNET, "MAGNET", 0, "Magnetic", ""},
- {PFIELD_HARMONIC, "HARMONIC", 0, "Harmonic", ""},
- {PFIELD_CHARGE, "CHARGE", 0, "Charge", ""},
- {PFIELD_LENNARDJ, "LENNARDJ", 0, "Lennard-Jones", ""},
- {PFIELD_TEXTURE, "TEXTURE", 0, "Texture", ""},
- {PFIELD_GUIDE, "GUIDE", 0, "Curve Guide", ""},
- {PFIELD_BOID, "BOID", 0, "Boid", ""},
- {PFIELD_TURBULENCE, "TURBULENCE", 0, "Turbulence", ""},
- {PFIELD_DRAG, "DRAG", 0, "Drag", ""},
+ {PFIELD_FORCE, "FORCE", ICON_FORCE_FORCE, "Force", ""},
+ {PFIELD_WIND, "WIND", ICON_FORCE_WIND, "Wind", ""},
+ {PFIELD_VORTEX, "VORTEX", ICON_FORCE_VORTEX, "Vortex", ""},
+ {PFIELD_MAGNET, "MAGNET", ICON_FORCE_MAGNETIC, "Magnetic", ""},
+ {PFIELD_HARMONIC, "HARMONIC", ICON_FORCE_HARMONIC, "Harmonic", ""},
+ {PFIELD_CHARGE, "CHARGE", ICON_FORCE_CHARGE, "Charge", ""},
+ {PFIELD_LENNARDJ, "LENNARDJ", ICON_FORCE_LENNARDJONES, "Lennard-Jones", ""},
+ {PFIELD_TEXTURE, "TEXTURE", ICON_FORCE_TEXTURE, "Texture", ""},
+ {PFIELD_GUIDE, "GUIDE", ICON_FORCE_CURVE, "Curve Guide", ""},
+ {PFIELD_BOID, "BOID", ICON_FORCE_BOID, "Boid", ""},
+ {PFIELD_TURBULENCE, "TURBULENCE", ICON_FORCE_TURBULENCE, "Turbulence", ""},
+ {PFIELD_DRAG, "DRAG", ICON_FORCE_DRAG, "Drag", ""},
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem falloff_items[] = {
@@ -1116,6 +1109,12 @@ static void rna_def_field(BlenderRNA *brna)
RNA_def_property_range(prop, 0.0f, 10.0f);
RNA_def_property_ui_text(prop, "Size", "Size of the noise");
RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
+
+ prop= RNA_def_property(srna, "rest_length", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "f_size");
+ RNA_def_property_range(prop, 0.0f, 1000.0f);
+ RNA_def_property_ui_text(prop, "Rest Length", "Rest length of the harmonic force");
+ RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
prop= RNA_def_property(srna, "falloff_power", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "f_power");
@@ -1228,6 +1227,11 @@ static void rna_def_field(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_VISIBILITY);
RNA_def_property_ui_text(prop, "Absorption", "Force gets absorbed by collision objects");
RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
+
+ prop= RNA_def_property(srna, "multiple_springs", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_MULTIPLE_SPRINGS);
+ RNA_def_property_ui_text(prop, "Multiple Springs", "Every point is effected by multiple springs");
+ RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
/* Pointer */
diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c
index f458ee86091..543965a337e 100644
--- a/source/blender/makesrna/intern/rna_particle.c
+++ b/source/blender/makesrna/intern/rna_particle.c
@@ -109,7 +109,7 @@ EnumPropertyItem part_hair_ren_as_items[] = {
#include "BLI_listbase.h"
/* property update functions */
-static void particle_recalc(bContext *C, PointerRNA *ptr, short flag)
+static void particle_recalc(Main *bmain, Scene *scene, PointerRNA *ptr, short flag)
{
if(ptr->type==&RNA_ParticleSystem) {
ParticleSystem *psys = (ParticleSystem*)ptr->data;
@@ -121,43 +121,41 @@ static void particle_recalc(bContext *C, PointerRNA *ptr, short flag)
else
DAG_id_flush_update(ptr->id.data, OB_RECALC_DATA|flag);
- WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, NULL);
+ WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL);
}
-static void rna_Particle_redo(bContext *C, PointerRNA *ptr)
+static void rna_Particle_redo(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- particle_recalc(C, ptr, PSYS_RECALC_REDO);
+ particle_recalc(bmain, scene, ptr, PSYS_RECALC_REDO);
}
-static void rna_Particle_redo_dependency(bContext *C, PointerRNA *ptr)
+static void rna_Particle_redo_dependency(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- DAG_scene_sort(CTX_data_scene(C));
- rna_Particle_redo(C, ptr);
+ DAG_scene_sort(scene);
+ rna_Particle_redo(bmain, scene, ptr);
}
-static void rna_Particle_reset(bContext *C, PointerRNA *ptr)
+static void rna_Particle_reset(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- particle_recalc(C, ptr, PSYS_RECALC_RESET);
+ particle_recalc(bmain, scene, ptr, PSYS_RECALC_RESET);
}
-static void rna_Particle_change_type(bContext *C, PointerRNA *ptr)
+static void rna_Particle_change_type(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- particle_recalc(C, ptr, PSYS_RECALC_RESET|PSYS_RECALC_TYPE);
+ particle_recalc(bmain, scene, ptr, PSYS_RECALC_RESET|PSYS_RECALC_TYPE);
}
-static void rna_Particle_change_physics(bContext *C, PointerRNA *ptr)
+static void rna_Particle_change_physics(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- particle_recalc(C, ptr, PSYS_RECALC_RESET|PSYS_RECALC_PHYS);
+ particle_recalc(bmain, scene, ptr, PSYS_RECALC_RESET|PSYS_RECALC_PHYS);
}
-static void rna_Particle_redo_child(bContext *C, PointerRNA *ptr)
+static void rna_Particle_redo_child(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- particle_recalc(C, ptr, PSYS_RECALC_CHILD);
+ particle_recalc(bmain, scene, ptr, PSYS_RECALC_CHILD);
}
-static void rna_Particle_target_reset(bContext *C, PointerRNA *ptr)
+static void rna_Particle_target_reset(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- Scene *scene = CTX_data_scene(C);
-
if(ptr->type==&RNA_ParticleTarget) {
ParticleTarget *pt = (ParticleTarget*)ptr->data;
Object *ob = (Object*)ptr->id.data;
@@ -187,10 +185,10 @@ static void rna_Particle_target_reset(bContext *C, PointerRNA *ptr)
DAG_scene_sort(scene);
}
- WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, NULL);
+ WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL);
}
-static void rna_Particle_target_redo(bContext *C, PointerRNA *ptr)
+static void rna_Particle_target_redo(Main *bmain, Scene *scene, PointerRNA *ptr)
{
if(ptr->type==&RNA_ParticleTarget) {
Object *ob = (Object*)ptr->id.data;
@@ -199,13 +197,12 @@ static void rna_Particle_target_redo(bContext *C, PointerRNA *ptr)
psys->recalc = PSYS_RECALC_REDO;
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, NULL);
+ WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL);
}
}
-static void rna_Particle_hair_dynamics(bContext *C, PointerRNA *ptr)
+static void rna_Particle_hair_dynamics(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- /* Scene *scene = CTX_data_scene(C); */
ParticleSystem *psys = (ParticleSystem*)ptr->data;
if(psys && !psys->clmd) {
@@ -213,10 +210,10 @@ static void rna_Particle_hair_dynamics(bContext *C, PointerRNA *ptr)
psys->clmd->sim_parms->goalspring = 0.0f;
psys->clmd->sim_parms->flags |= CLOTH_SIMSETTINGS_FLAG_GOAL|CLOTH_SIMSETTINGS_FLAG_NO_SPRING_COMPRESS;
psys->clmd->coll_parms->flags &= ~CLOTH_COLLSETTINGS_FLAG_SELF;
- rna_Particle_redo(C, ptr);
+ rna_Particle_redo(bmain, scene, ptr);
}
else
- WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, NULL);
+ WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL);
}
static PointerRNA rna_particle_settings_get(PointerRNA *ptr)
{
@@ -241,7 +238,7 @@ static void rna_particle_settings_set(PointerRNA *ptr, PointerRNA value)
psys_check_boid_data(psys);
}
}
-static void rna_Particle_abspathtime_update(bContext *C, PointerRNA *ptr)
+static void rna_Particle_abspathtime_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
ParticleSettings *settings = (ParticleSettings*)ptr->data;
float delta = settings->end + settings->lifetime - settings->sta;
@@ -253,7 +250,7 @@ static void rna_Particle_abspathtime_update(bContext *C, PointerRNA *ptr)
settings->path_start = (settings->path_start - settings->sta)/delta;
settings->path_end = (settings->path_end - settings->sta)/delta;
}
- rna_Particle_redo(C, ptr);
+ rna_Particle_redo(bmain, scene, ptr);
}
static void rna_PartSettings_start_set(struct PointerRNA *ptr, float value)
{
@@ -817,11 +814,6 @@ static void rna_def_particle(BlenderRNA *brna)
RNA_def_property_enum_items(prop, alive_items);
RNA_def_property_ui_text(prop, "Alive State", "");
- prop= RNA_def_property(srna, "loop", PROP_INT, PROP_NONE);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- //TODO: bounds
- RNA_def_property_ui_text(prop, "Loop", "How may times the particle life has looped");
-
// short rt2;
}
@@ -917,6 +909,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
static EnumPropertyItem integrator_type_items[] = {
{PART_INT_EULER, "EULER", 0, "Euler", ""},
+ {PART_INT_VERLET, "VERLET", 0, "Verlet", ""},
{PART_INT_MIDPOINT, "MIDPOINT", 0, "Midpoint", ""},
{PART_INT_RK4, "RK4", 0, "RK4", ""},
{0, NULL, 0, NULL, NULL}
@@ -980,12 +973,6 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Multi React", "React multiple times.");
RNA_def_property_update(prop, 0, "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_clear_flag(prop, PROP_ANIMATEABLE);
- RNA_def_property_ui_text(prop, "Loop", "Loop particle lives.");
- RNA_def_property_update(prop, 0, "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);
@@ -1906,6 +1893,7 @@ static void rna_def_particle_system(BlenderRNA *brna)
prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_property_ui_text(prop, "Name", "Particle system name.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER|NA_RENAME, NULL);
RNA_def_struct_name_property(srna, prop);
/* access to particle settings is redirected through functions */
diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c
index 5b5b331fea8..c7aca9c9738 100644
--- a/source/blender/makesrna/intern/rna_pose.c
+++ b/source/blender/makesrna/intern/rna_pose.c
@@ -58,14 +58,14 @@
#include "MEM_guardedalloc.h"
-static void rna_Pose_update(bContext *C, PointerRNA *ptr)
+static void rna_Pose_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
// XXX when to use this? ob->pose->flag |= (POSE_LOCKED|POSE_DO_UNLOCK);
DAG_id_flush_update(ptr->id.data, OB_RECALC_DATA);
}
-static void rna_Pose_IK_update(bContext *C, PointerRNA *ptr)
+static void rna_Pose_IK_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
// XXX when to use this? ob->pose->flag |= (POSE_LOCKED|POSE_DO_UNLOCK);
Object *ob= ptr->id.data;
@@ -120,7 +120,7 @@ static IDProperty *rna_PoseBone_idproperties(PointerRNA *ptr, int create)
if(create && !pchan->prop) {
IDPropertyTemplate val = {0};
- pchan->prop= IDP_New(IDP_GROUP, val, "RNA_PoseChannel group");
+ pchan->prop= IDP_New(IDP_GROUP, val, "RNA_PoseBone group");
}
return pchan->prop;
@@ -142,11 +142,10 @@ static void rna_Pose_ik_solver_set(struct PointerRNA *ptr, int value)
}
}
-static void rna_Pose_ik_solver_update(bContext *C, PointerRNA *ptr)
+static void rna_Pose_ik_solver_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Object *ob= ptr->id.data;
bPose *pose = ptr->data;
- Scene *scene = CTX_data_scene(C);
pose->flag |= POSE_RECALC; // checks & sorts pose channels
DAG_scene_sort(scene);
@@ -242,7 +241,7 @@ static StructRNA *rna_Pose_ikparam_typef(PointerRNA *ptr)
}
}
-static void rna_Itasc_update(bContext *C, PointerRNA *ptr)
+static void rna_Itasc_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Object *ob = ptr->id.data;
bItasc *itasc = ptr->data;
@@ -267,13 +266,13 @@ static void rna_Itasc_update(bContext *C, PointerRNA *ptr)
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
}
-static void rna_Itasc_update_rebuild(bContext *C, PointerRNA *ptr)
+static void rna_Itasc_update_rebuild(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Object *ob= ptr->id.data;
bPose *pose = ob->pose;
pose->flag |= POSE_RECALC; // checks & sorts pose channels
- rna_Itasc_update(C, ptr);
+ rna_Itasc_update(bmain, scene, ptr);
}
static PointerRNA rna_PoseChannel_bone_group_get(PointerRNA *ptr)
@@ -431,7 +430,7 @@ static void rna_PoseChannel_active_constraint_set(PointerRNA *ptr, PointerRNA va
static bConstraint *rna_PoseChannel_constraints_new(bPoseChannel *pchan, bContext *C, int type)
{
- //WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT|NA_ADDED, object);
+ //WM_main_add_notifier(NC_OBJECT|ND_CONSTRAINT|NA_ADDED, object);
// TODO, pass object also
// TODO, new pose bones don't have updated draw flags
return add_pose_constraint(NULL, pchan, NULL, type);
@@ -441,10 +440,75 @@ static int rna_PoseChannel_constraints_remove(bPoseChannel *pchan, bContext *C,
{
// TODO
//ED_object_constraint_set_active(object, NULL);
- //WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, object);
+ //WM_main_add_notifier(NC_OBJECT|ND_CONSTRAINT, object);
return remove_constraint_index(&pchan->constraints, index);
}
+static int rna_PoseChannel_location_editable(PointerRNA *ptr, int index)
+{
+ bPoseChannel *pchan= (bPoseChannel*)ptr->data;
+
+ /* only if the axis in question is locked, not editable... */
+ if ((index == 0) && (pchan->protectflag & OB_LOCK_LOCX))
+ return 0;
+ else if ((index == 1) && (pchan->protectflag & OB_LOCK_LOCY))
+ return 0;
+ else if ((index == 2) && (pchan->protectflag & OB_LOCK_LOCZ))
+ return 0;
+ else
+ return PROP_EDITABLE;
+}
+
+static int rna_PoseChannel_scale_editable(PointerRNA *ptr, int index)
+{
+ bPoseChannel *pchan= (bPoseChannel*)ptr->data;
+
+ /* only if the axis in question is locked, not editable... */
+ if ((index == 0) && (pchan->protectflag & OB_LOCK_SCALEX))
+ return 0;
+ else if ((index == 1) && (pchan->protectflag & OB_LOCK_SCALEY))
+ return 0;
+ else if ((index == 2) && (pchan->protectflag & OB_LOCK_SCALEZ))
+ return 0;
+ else
+ return PROP_EDITABLE;
+}
+
+static int rna_PoseChannel_rotation_euler_editable(PointerRNA *ptr, int index)
+{
+ bPoseChannel *pchan= (bPoseChannel*)ptr->data;
+
+ /* only if the axis in question is locked, not editable... */
+ if ((index == 0) && (pchan->protectflag & OB_LOCK_ROTX))
+ return 0;
+ else if ((index == 1) && (pchan->protectflag & OB_LOCK_ROTY))
+ return 0;
+ else if ((index == 2) && (pchan->protectflag & OB_LOCK_ROTZ))
+ return 0;
+ else
+ return PROP_EDITABLE;
+}
+
+static int rna_PoseChannel_rotation_4d_editable(PointerRNA *ptr, int index)
+{
+ bPoseChannel *pchan= (bPoseChannel*)ptr->data;
+
+ /* only consider locks if locking components individually... */
+ if (pchan->protectflag & OB_LOCK_ROT4D) {
+ /* only if the axis in question is locked, not editable... */
+ if ((index == 0) && (pchan->protectflag & OB_LOCK_ROTW))
+ return 0;
+ else if ((index == 1) && (pchan->protectflag & OB_LOCK_ROTX))
+ return 0;
+ else if ((index == 2) && (pchan->protectflag & OB_LOCK_ROTY))
+ return 0;
+ else if ((index == 3) && (pchan->protectflag & OB_LOCK_ROTZ))
+ return 0;
+ }
+
+ return PROP_EDITABLE;
+}
+
#else
static void rna_def_bone_group(BlenderRNA *brna)
@@ -546,7 +610,7 @@ static void rna_def_pose_channel_constraints(BlenderRNA *brna, PropertyRNA *cpro
/* return type */
parm= RNA_def_pointer(func, "constraint", "Constraint", "", "New constraint.");
RNA_def_function_return(func, parm);
- /* object to add */
+ /* constraint to add */
parm= RNA_def_enum(func, "type", constraint_type_items, 1, "", "Constraint type to add.");
RNA_def_property_flag(parm, PROP_REQUIRED);
@@ -634,16 +698,19 @@ static void rna_def_pose_channel(BlenderRNA *brna)
/* Transformation settings */
prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_float_sdna(prop, NULL, "loc");
+ RNA_def_property_editable_array_func(prop, "rna_PoseChannel_location_editable");
RNA_def_property_ui_text(prop, "Location", "");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update");
prop= RNA_def_property(srna, "scale", PROP_FLOAT, PROP_XYZ);
RNA_def_property_float_sdna(prop, NULL, "size");
+ RNA_def_property_editable_array_func(prop, "rna_PoseChannel_scale_editable");
RNA_def_property_ui_text(prop, "Scale", "");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update");
prop= RNA_def_property(srna, "rotation_quaternion", PROP_FLOAT, PROP_QUATERNION);
RNA_def_property_float_sdna(prop, NULL, "quat");
+ RNA_def_property_editable_array_func(prop, "rna_PoseChannel_rotation_4d_editable");
RNA_def_property_ui_text(prop, "Quaternion Rotation", "Rotation in Quaternions.");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update");
@@ -653,11 +720,13 @@ static void rna_def_pose_channel(BlenderRNA *brna)
prop= RNA_def_property(srna, "rotation_axis_angle", PROP_FLOAT, PROP_AXISANGLE);
RNA_def_property_array(prop, 4); // TODO: maybe we'll need to define the 'default value' getter too...
RNA_def_property_float_funcs(prop, "rna_PoseChannel_rotation_axis_angle_get", "rna_PoseChannel_rotation_axis_angle_set", NULL);
+ RNA_def_property_editable_array_func(prop, "rna_PoseChannel_rotation_4d_editable");
RNA_def_property_ui_text(prop, "Axis-Angle Rotation", "Angle of Rotation for Axis-Angle rotation representation.");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update");
prop= RNA_def_property(srna, "rotation_euler", PROP_FLOAT, PROP_EULER);
RNA_def_property_float_sdna(prop, NULL, "eul");
+ RNA_def_property_editable_array_func(prop, "rna_PoseChannel_rotation_euler_editable");
RNA_def_property_ui_text(prop, "Euler Rotation", "Rotation in Eulers.");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update");
@@ -675,7 +744,7 @@ static void rna_def_pose_channel(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Channel Matrix", "4x4 matrix, before constraints.");
- prop= RNA_def_property(srna, "pose_matrix", PROP_FLOAT, PROP_MATRIX);
+ prop= RNA_def_property(srna, "matrix", PROP_FLOAT, PROP_MATRIX);
RNA_def_property_float_sdna(prop, NULL, "pose_mat");
RNA_def_property_array(prop, 16);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
@@ -689,11 +758,13 @@ static void rna_def_pose_channel(BlenderRNA *brna)
*/
/* Head/Tail Coordinates (in Pose Space) - Automatically calculated... */
- prop= RNA_def_property(srna, "pose_head", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "head", PROP_FLOAT, PROP_TRANSLATION);
+ RNA_def_property_float_sdna(prop, NULL, "pose_head");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Pose Head Position", "Location of head of the channel's bone.");
- prop= RNA_def_property(srna, "pose_tail", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "tail", PROP_FLOAT, PROP_TRANSLATION);
+ RNA_def_property_float_sdna(prop, NULL, "pose_tail");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Pose Tail Position", "Location of tail of the channel's bone.");
diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c
index 5a80db74c38..8212423acd5 100644
--- a/source/blender/makesrna/intern/rna_render.c
+++ b/source/blender/makesrna/intern/rna_render.c
@@ -125,7 +125,12 @@ static StructRNA *rna_RenderEngine_register(const bContext *C, ReportList *repor
/* validate the python class */
if(validate(&dummyptr, data, have_function) != 0)
return NULL;
-
+
+ if(strlen(identifier) >= sizeof(dummyet.idname)) {
+ BKE_reportf(reports, RPT_ERROR, "registering render engine class: '%s' is too long, maximum length is %d.", identifier, sizeof(dummyet.idname));
+ return NULL;
+ }
+
/* check if we have registered this engine type before, and remove it */
for(et=R_engines.first; et; et=et->next) {
if(strcmp(et->idname, dummyet.idname) == 0) {
diff --git a/source/blender/makesrna/intern/rna_rna.c b/source/blender/makesrna/intern/rna_rna.c
index 4218724d7df..e6c21d8fede 100644
--- a/source/blender/makesrna/intern/rna_rna.c
+++ b/source/blender/makesrna/intern/rna_rna.c
@@ -425,10 +425,15 @@ static int rna_Property_unit_get(PointerRNA *ptr)
return RNA_SUBTYPE_UNIT(prop->subtype);
}
-static int rna_Property_editable_get(PointerRNA *ptr)
+static int rna_Property_readonly_get(PointerRNA *ptr)
{
PropertyRNA *prop= (PropertyRNA*)ptr->data;
- return RNA_property_editable(ptr, prop);
+
+ /* dont use this becaure it will call functions that check the internal
+ * data for introspection we only need to know if it can be edited so the
+ * flag is better for this */
+// return RNA_property_editable(ptr, prop);
+ return prop->flag & PROP_EDITABLE ? 0:1;
}
static int rna_Property_use_return_get(PointerRNA *ptr)
@@ -437,6 +442,18 @@ static int rna_Property_use_return_get(PointerRNA *ptr)
return prop->flag & PROP_RETURN ? 1:0;
}
+static int rna_Property_is_required_get(PointerRNA *ptr)
+{
+ PropertyRNA *prop= (PropertyRNA*)ptr->data;
+ return prop->flag & PROP_REQUIRED ? 1:0;
+}
+
+static int rna_Property_is_never_none_get(PointerRNA *ptr)
+{
+ PropertyRNA *prop= (PropertyRNA*)ptr->data;
+ return prop->flag & PROP_NEVER_NULL ? 1:0;
+}
+
static int rna_Property_array_length_get(PointerRNA *ptr)
{
PropertyRNA *prop= (PropertyRNA*)ptr->data;
@@ -636,13 +653,18 @@ static EnumPropertyItem *rna_EnumProperty_default_itemf(bContext *C, PointerRNA
rna_idproperty_check(&prop, ptr);
eprop= (EnumPropertyRNA*)prop;
- if(eprop->itemf==NULL || eprop->itemf==rna_EnumProperty_default_itemf || !C)
+ if( (eprop->itemf == NULL) ||
+ (eprop->itemf == rna_EnumProperty_default_itemf) ||
+ (ptr->type == &RNA_EnumProperty) ||
+ (C == NULL))
+ {
return eprop->item;
+ }
return eprop->itemf(C, ptr, free);
}
-/* XXX - not sore this is needed? */
+/* XXX - not sure this is needed? */
static int rna_EnumProperty_default_get(PointerRNA *ptr)
{
PropertyRNA *prop= (PropertyRNA*)ptr->data;
@@ -864,7 +886,7 @@ static void rna_def_property(BlenderRNA *brna)
{PROP_EULER, "EULER", 0, "Euler", ""},
{PROP_QUATERNION, "QUATERNION", 0, "Quaternion", ""},
{PROP_XYZ, "XYZ", 0, "XYZ", ""},
- {PROP_RGB, "RGB", 0, "RGB", ""},
+ {PROP_COLOR_GAMMA, "COLOR_GAMMA", 0, "Gamma Corrected Color", ""},
{PROP_LAYER, "LAYER", 0, "Layer", ""},
{PROP_LAYER_MEMBER, "LAYER_MEMBERSHIP", 0, "Layer Membership", ""},
{0, NULL, 0, NULL, NULL}};
@@ -924,15 +946,25 @@ static void rna_def_property(BlenderRNA *brna)
RNA_def_property_enum_funcs(prop, "rna_Property_unit_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Unit", "Type of units for this property.");
- prop= RNA_def_property(srna, "editable", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_readonly", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_boolean_funcs(prop, "rna_Property_readonly_get", NULL);
+ RNA_def_property_ui_text(prop, "Read Only", "Property is editable through RNA.");
+
+ prop= RNA_def_property(srna, "is_required", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_boolean_funcs(prop, "rna_Property_is_required_get", NULL);
+ RNA_def_property_ui_text(prop, "Required", "False when this property is an optional argument in an rna function.");
+
+ prop= RNA_def_property(srna, "is_never_none", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_boolean_funcs(prop, "rna_Property_editable_get", NULL);
- RNA_def_property_ui_text(prop, "Editable", "Property is editable through RNA.");
+ RNA_def_property_boolean_funcs(prop, "rna_Property_is_never_none_get", NULL);
+ RNA_def_property_ui_text(prop, "Never None", "True when this value can't be set to None.");
prop= RNA_def_property(srna, "use_return", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_boolean_funcs(prop, "rna_Property_use_return_get", NULL);
- RNA_def_property_ui_text(prop, "Return", "True when this property is a return value from an rna function..");
+ RNA_def_property_ui_text(prop, "Return", "True when this property is a return value from an rna function.");
prop= RNA_def_property(srna, "registered", PROP_BOOLEAN, 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 babbf701bd6..4d8af5fd6bd 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -32,6 +32,8 @@
#include "DNA_scene_types.h"
#include "DNA_userdef_types.h"
+#include "BKE_tessmesh.h"
+
/* Include for Bake Options */
#include "RE_pipeline.h"
@@ -48,7 +50,7 @@
#include "WM_types.h"
-EnumPropertyItem snap_mode_items[] = {
+EnumPropertyItem snap_target_items[] = {
{SCE_SNAP_TARGET_CLOSEST, "CLOSEST", 0, "Closest", "Snap closest point onto target."},
{SCE_SNAP_TARGET_CENTER, "CENTER", 0, "Center", "Snap center onto target."},
{SCE_SNAP_TARGET_MEDIAN, "MEDIAN", 0, "Median", "Snap median onto target."},
@@ -56,20 +58,35 @@ EnumPropertyItem snap_mode_items[] = {
{0, NULL, 0, NULL, NULL}};
EnumPropertyItem proportional_falloff_items[] ={
- {PROP_SMOOTH, "SMOOTH", 0, "Smooth", ""},
- {PROP_SPHERE, "SPHERE", 0, "Sphere", ""},
- {PROP_ROOT, "ROOT", 0, "Root", ""},
- {PROP_SHARP, "SHARP", 0, "Sharp", ""},
- {PROP_LIN, "LINEAR", 0, "Linear", ""},
- {PROP_CONST, "CONSTANT", 0, "Constant", ""},
- {PROP_RANDOM, "RANDOM", 0, "Random", ""},
+ {PROP_SMOOTH, "SMOOTH", ICON_SMOOTHCURVE, "Smooth", ""},
+ {PROP_SPHERE, "SPHERE", ICON_SPHERECURVE, "Sphere", ""},
+ {PROP_ROOT, "ROOT", ICON_ROOTCURVE, "Root", ""},
+ {PROP_SHARP, "SHARP", ICON_SHARPCURVE, "Sharp", ""},
+ {PROP_LIN, "LINEAR", ICON_LINCURVE, "Linear", ""},
+ {PROP_CONST, "CONSTANT", ICON_NOCURVE, "Constant", ""},
+ {PROP_RANDOM, "RANDOM", ICON_RNDCURVE, "Random", ""},
{0, NULL, 0, NULL, NULL}};
EnumPropertyItem proportional_editing_items[] = {
- {PROP_EDIT_OFF, "DISABLED", 0, "Disable", ""},
- {PROP_EDIT_ON, "ENABLED", 0, "Enable", ""},
- {PROP_EDIT_CONNECTED, "CONNECTED", 0, "Connected", ""},
+ {PROP_EDIT_OFF, "DISABLED", ICON_PROP_OFF, "Disable", ""},
+ {PROP_EDIT_ON, "ENABLED", ICON_PROP_ON, "Enable", ""},
+ {PROP_EDIT_CONNECTED, "CONNECTED", ICON_PROP_CON, "Connected", ""},
+ {0, NULL, 0, NULL, NULL}};
+
+/* keep for operators, not used here */
+EnumPropertyItem mesh_select_mode_items[] = {
+ {SCE_SELECT_VERTEX, "VERTEX", ICON_VERTEXSEL, "Vertex", "Vertex selection mode."},
+ {SCE_SELECT_EDGE, "EDGE", ICON_EDGESEL, "Edge", "Edge selection mode."},
+ {SCE_SELECT_FACE, "FACE", ICON_FACESEL, "Face", "Face selection mode."},
+ {0, NULL, 0, NULL, NULL}};
+
+EnumPropertyItem snap_element_items[] = {
+ {SCE_SNAP_MODE_INCREMENT, "INCREMENT", ICON_SNAP_INCREMENT, "Increment", "Snap to increments of grid."},
+ {SCE_SNAP_MODE_VERTEX, "VERTEX", ICON_SNAP_VERTEX, "Vertex", "Snap to vertices."},
+ {SCE_SNAP_MODE_EDGE, "EDGE", ICON_SNAP_EDGE, "Edge", "Snap to edges."},
+ {SCE_SNAP_MODE_FACE, "FACE", ICON_SNAP_FACE, "Face", "Snap to faces."},
+ {SCE_SNAP_MODE_VOLUME, "VOLUME", ICON_SNAP_VOLUME, "Volume", "Snap to volume."},
{0, NULL, 0, NULL, NULL}};
#ifdef RNA_RUNTIME
@@ -77,6 +94,7 @@ EnumPropertyItem proportional_editing_items[] = {
#include "DNA_anim_types.h"
#include "DNA_node_types.h"
#include "DNA_object_types.h"
+#include "DNA_mesh_types.h"
#include "BKE_context.h"
#include "BKE_global.h"
@@ -85,13 +103,18 @@ EnumPropertyItem proportional_editing_items[] = {
#include "BKE_pointcache.h"
#include "BKE_scene.h"
#include "BKE_depsgraph.h"
+#include "BKE_mesh.h"
#include "BLI_threads.h"
+#include "BLI_editVert.h"
+
+#include "WM_api.h"
#include "ED_info.h"
#include "ED_node.h"
#include "ED_view3d.h"
#include "ED_object.h"
+#include "ED_mesh.h"
#include "RE_pipeline.h"
@@ -169,36 +192,15 @@ static void rna_Scene_set_set(PointerRNA *ptr, PointerRNA value)
scene->set= set;
}
-static int layer_set(int lay, const int *values)
-{
- int i, tot= 0;
-
- /* ensure we always have some layer selected */
- for(i=0; i<20; i++)
- if(values[i])
- tot++;
-
- if(tot==0)
- return lay;
-
- for(i=0; i<20; i++) {
- if(values[i]) lay |= (1<<i);
- else lay &= ~(1<<i);
- }
-
- return lay;
-}
-
static void rna_Scene_layer_set(PointerRNA *ptr, const int *values)
{
Scene *scene= (Scene*)ptr->data;
- scene->lay= layer_set(scene->lay, values);
+ scene->lay= ED_view3d_scene_layer_set(scene->lay, values);
}
-static void rna_Scene_layer_update(bContext *C, PointerRNA *ptr)
+static void rna_Scene_layer_update(Main *bmain, Scene *unused, PointerRNA *ptr)
{
- Main *bmain= CTX_data_main(C);
Scene *scene= (Scene*)ptr->data;
ED_view3d_scene_layers_update(bmain, scene);
@@ -275,7 +277,7 @@ static void rna_Scene_preview_range_end_frame_set(PointerRNA *ptr, int value)
data->r.pefra= value;
}
-static void rna_Scene_frame_update(bContext *C, PointerRNA *ptr)
+static void rna_Scene_frame_update(Main *bmain, Scene *unused, PointerRNA *ptr)
{
//Scene *scene= ptr->id.data;
//ED_update_for_newframe(C);
@@ -396,6 +398,48 @@ static void rna_SceneRenderData_jpeg2k_depth_set(PointerRNA *ptr, int value)
}
#endif
+#ifdef WITH_QUICKTIME
+static int rna_SceneRenderData_qtcodecsettings_codecType_get(PointerRNA *ptr)
+{
+ RenderData *rd= (RenderData*)ptr->data;
+
+ return quicktime_rnatmpvalue_from_codectype(rd->qtcodecsettings.codecType);
+}
+
+static void rna_SceneRenderData_qtcodecsettings_codecType_set(PointerRNA *ptr, int value)
+{
+ RenderData *rd= (RenderData*)ptr->data;
+
+ rd->qtcodecsettings.codecType = quicktime_codecType_from_rnatmpvalue(value);
+}
+
+static EnumPropertyItem *rna_SceneRenderData_qtcodecsettings_codecType_itemf(bContext *C, PointerRNA *ptr, int *free)
+{
+ EnumPropertyItem *item= NULL;
+ EnumPropertyItem tmp = {0, "", 0, "", ""};
+ QuicktimeCodecTypeDesc *codecTypeDesc;
+ int i=1, totitem= 0;
+ char id[5];
+
+ for(i=0;i<quicktime_get_num_codecs();i++) {
+ codecTypeDesc = quicktime_get_codecType_desc(i);
+ if (!codecTypeDesc) break;
+
+ tmp.value= codecTypeDesc->rnatmpvalue;
+ *((int*)id) = codecTypeDesc->codecType;
+ id[4] = 0;
+ tmp.identifier= id;
+ tmp.name= codecTypeDesc->codecName;
+ RNA_enum_item_add(&item, &totitem, &tmp);
+ }
+
+ RNA_enum_item_end(&item, &totitem);
+ *free= 1;
+
+ return item;
+}
+#endif
+
static int rna_SceneRenderData_active_layer_index_get(PointerRNA *ptr)
{
RenderData *rd= (RenderData*)ptr->data;
@@ -499,10 +543,10 @@ static int rna_SceneRenderData_use_game_engine_get(PointerRNA *ptr)
static void rna_SceneRenderLayer_layer_set(PointerRNA *ptr, const int *values)
{
SceneRenderLayer *rl= (SceneRenderLayer*)ptr->data;
- rl->lay= layer_set(rl->lay, values);
+ rl->lay= ED_view3d_scene_layer_set(rl->lay, values);
}
-static void rna_SceneRenderLayer_pass_update(bContext *C, PointerRNA *ptr)
+static void rna_SceneRenderLayer_pass_update(Main *bmain, Scene *unused, PointerRNA *ptr)
{
Scene *scene= (Scene*)ptr->id.data;
@@ -519,7 +563,7 @@ static void rna_Scene_use_nodes_set(PointerRNA *ptr, int value)
ED_node_composit_default(scene);
}
-static void rna_Physics_update(bContext *C, PointerRNA *ptr)
+static void rna_Physics_update(Main *bmain, Scene *unused, PointerRNA *ptr)
{
Scene *scene= (Scene*)ptr->id.data;
Base *base;
@@ -527,6 +571,38 @@ static void rna_Physics_update(bContext *C, PointerRNA *ptr)
for(base = scene->base.first; base; base=base->next)
BKE_ptcache_object_reset(scene, base->object, PTCACHE_RESET_DEPSGRAPH);
}
+
+static void rna_Scene_editmesh_select_mode_set(PointerRNA *ptr, const int *value)
+{
+ Scene *scene= (Scene*)ptr->id.data;
+ ToolSettings *ts = (ToolSettings*)ptr->data;
+ int flag = (value[0] ? SCE_SELECT_VERTEX:0) | (value[1] ? SCE_SELECT_EDGE:0) | (value[2] ? SCE_SELECT_FACE:0);
+
+ ts->selectmode = flag;
+
+ if(scene->basact) {
+ Mesh *me= get_mesh(scene->basact->object);
+ if(me && me->edit_btmesh && me->edit_btmesh->selectmode != flag) {
+ me->edit_btmesh->selectmode= flag;
+ EDBM_selectmode_set(me->edit_btmesh);
+ }
+ }
+}
+
+static void rna_Scene_editmesh_select_mode_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+ Mesh *me= NULL;
+
+ if(scene->basact) {
+ me= get_mesh(scene->basact->object);
+ if(me && me->edit_btmesh==NULL)
+ me= NULL;
+ }
+
+ WM_main_add_notifier(NC_GEOM|ND_SELECT, me);
+ WM_main_add_notifier(NC_SCENE|ND_MODE, NULL); /* header redraw */
+}
+
#else
static void rna_def_transform_orientation(BlenderRNA *brna)
@@ -561,19 +637,6 @@ static void rna_def_tool_settings(BlenderRNA *brna)
{UV_SELECT_ISLAND, "ISLAND", ICON_UV_ISLANDSEL, "Island", "Island selection mode."},
{0, NULL, 0, NULL, NULL}};
- static EnumPropertyItem mesh_select_mode_items[] = {
- {SCE_SELECT_VERTEX, "VERTEX", ICON_VERTEXSEL, "Vertex", "Vertex selection mode."},
- {SCE_SELECT_EDGE, "EDGE", ICON_EDGESEL, "Edge", "Edge selection mode."},
- {SCE_SELECT_FACE, "FACE", ICON_FACESEL, "Face", "Face selection mode."},
- {0, NULL, 0, NULL, NULL}};
-
- static EnumPropertyItem snap_element_items[] = {
- {SCE_SNAP_MODE_VERTEX, "VERTEX", ICON_SNAP_VERTEX, "Vertex", "Snap to vertices."},
- {SCE_SNAP_MODE_EDGE, "EDGE", ICON_SNAP_EDGE, "Edge", "Snap to edges."},
- {SCE_SNAP_MODE_FACE, "FACE", ICON_SNAP_FACE, "Face", "Snap to faces."},
- {SCE_SNAP_MODE_VOLUME, "VOLUME", ICON_SNAP_VOLUME, "Volume", "Snap to volume."},
- {0, NULL, 0, NULL, NULL}};
-
static EnumPropertyItem auto_key_items[] = {
{AUTOKEY_MODE_NORMAL, "ADD_REPLACE_KEYS", 0, "Add & Replace", ""},
{AUTOKEY_MODE_EDITKEYS, "REPLACE_KEYS", 0, "Replace", ""},
@@ -647,8 +710,8 @@ static void rna_def_tool_settings(BlenderRNA *brna)
prop= RNA_def_property(srna, "snap", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP);
- RNA_def_property_ui_text(prop, "Snap", "Snap while Ctrl is held during transform.");
- RNA_def_property_ui_icon(prop, ICON_SNAP_GEAR, 1);
+ RNA_def_property_ui_text(prop, "Snap", "Snap during transform.");
+ RNA_def_property_ui_icon(prop, ICON_SNAP_OFF, 1);
RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */
prop= RNA_def_property(srna, "snap_align_rotation", PROP_BOOLEAN, PROP_NONE);
@@ -663,10 +726,10 @@ static void rna_def_tool_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Snap Element", "Type of element to snap to.");
RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */
- prop= RNA_def_property(srna, "snap_mode", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "snap_target", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "snap_target");
- RNA_def_property_enum_items(prop, snap_mode_items);
- RNA_def_property_ui_text(prop, "Snap Mode", "Which part to snap onto the target.");
+ RNA_def_property_enum_items(prop, snap_target_items);
+ RNA_def_property_ui_text(prop, "Snap Target", "Which part to snap onto the target.");
RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */
prop= RNA_def_property(srna, "snap_peel_object", PROP_BOOLEAN, PROP_NONE);
@@ -700,21 +763,25 @@ static void rna_def_tool_settings(BlenderRNA *brna)
RNA_def_property_enum_sdna(prop, NULL, "uv_selectmode");
RNA_def_property_enum_items(prop, uv_select_mode_items);
RNA_def_property_ui_text(prop, "UV Selection Mode", "UV selection and display mode.");
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
prop= RNA_def_property(srna, "uv_sync_selection", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uv_flag", UV_SYNC_SELECTION);
RNA_def_property_ui_text(prop, "UV Sync Selection", "Keep UV and edit mode mesh selection in sync.");
RNA_def_property_ui_icon(prop, ICON_EDIT, 0);
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
prop= RNA_def_property(srna, "uv_local_view", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uv_flag", UV_SHOW_SAME_IMAGE);
RNA_def_property_ui_text(prop, "UV Local View", "Draw only faces with the currently displayed image assigned.");
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
/* Mesh */
- prop= RNA_def_property(srna, "mesh_selection_mode", PROP_ENUM, PROP_NONE);
- RNA_def_property_enum_bitflag_sdna(prop, NULL, "selectmode");
- RNA_def_property_enum_items(prop, mesh_select_mode_items);
- RNA_def_property_ui_text(prop, "Mesh Selection Mode", "Mesh selection and display mode.");
+ prop= RNA_def_property(srna, "mesh_selection_mode", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "selectmode", 1);
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_boolean_funcs(prop, NULL, "rna_Scene_editmesh_select_mode_set");
+ RNA_def_property_update(prop, 0, "rna_Scene_editmesh_select_mode_update");
prop= RNA_def_property(srna, "vertex_group_weight", PROP_FLOAT, PROP_FACTOR);
RNA_def_property_float_sdna(prop, NULL, "vgroup_weight");
@@ -1456,7 +1523,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
# ifdef USE_QTKIT
{R_QUICKTIME, "QUICKTIME_QTKIT", ICON_FILE_MOVIE, "QuickTime", ""},
# else
- {R_QUICKTIME, "QUICKTIME", ICON_FILE_MOVIE, "QuickTime", ""},
+ {R_QUICKTIME, "QUICKTIME_CARBON", ICON_FILE_MOVIE, "QuickTime", ""},
# endif
#endif
#ifdef __sgi
@@ -1507,18 +1574,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
#ifdef WITH_QUICKTIME
static EnumPropertyItem quicktime_codec_type_items[] = {
- {QT_CODECTYPE_RAW, "RAW", 0, "Uncompressed", ""},
- {QT_CODECTYPE_JPEG, "JPEG", 0, "JPEG", ""},
- {QT_CODECTYPE_MJPEGA, "MJPEG_A", 0, "M-JPEG A", ""},
- {QT_CODECTYPE_MJPEGB, "MJPEG_B", 0, "M-JPEG B", ""},
- {QT_CODECTYPE_DVCPAL, "DVCPAL", 0, "DV PAL", ""},
- {QT_CODECTYPE_DVCNTSC, "DVCNTSC", 0, "DV/DVCPRO NTSC", ""},
- {QT_CODECTYPE_DVCPROHD720p, "DVCPROHD720P", 0, "DVCPRO HD 720p"},
- {QT_CODECTYPE_DVCPROHD1080i50, "DVCPROHD1080I50", 0, "DVCPRO HD 1080i50"},
- {QT_CODECTYPE_DVCPROHD1080i60, "DVCPROHD1080I60", 0, "DVCPRO HD 1080i60"},
- {QT_CODECTYPE_MPEG4, "MPEG4", 0, "MPEG4", ""},
- {QT_CODECTYPE_H263, "H263", 0, "H.263", ""},
- {QT_CODECTYPE_H264, "H264", 0, "H.264", ""},
+ {0, "codec", 0, "codec", ""},
{0, NULL, 0, NULL, NULL}};
#endif
@@ -1585,13 +1641,13 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_int_sdna(prop, NULL, "xsch");
RNA_def_property_range(prop, 4, 10000);
RNA_def_property_ui_text(prop, "Resolution X", "Number of horizontal pixels in the rendered image.");
- RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS|NC_OBJECT|ND_DRAW, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
prop= RNA_def_property(srna, "resolution_y", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "ysch");
RNA_def_property_range(prop, 4, 10000);
RNA_def_property_ui_text(prop, "Resolution Y", "Number of vertical pixels in the rendered image.");
- RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS|NC_OBJECT|ND_DRAW, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
prop= RNA_def_property(srna, "resolution_percentage", PROP_INT, PROP_PERCENTAGE);
RNA_def_property_int_sdna(prop, NULL, "size");
@@ -1615,17 +1671,17 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "xasp");
RNA_def_property_range(prop, 1.0f, 200.0f);
RNA_def_property_ui_text(prop, "Pixel Aspect X", "Horizontal aspect ratio - for anamorphic or non-square pixel output");
- RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS|NC_OBJECT|ND_DRAW, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
prop= RNA_def_property(srna, "pixel_aspect_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "yasp");
RNA_def_property_range(prop, 1.0f, 200.0f);
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|ND_DRAW, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
/* JPEG and AVI JPEG */
- prop= RNA_def_property(srna, "quality", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "quality", PROP_INT, PROP_PERCENTAGE);
RNA_def_property_int_sdna(prop, NULL, "quality");
RNA_def_property_range(prop, 1, 100);
RNA_def_property_ui_text(prop, "Quality", "Quality of JPEG images, AVI Jpeg and SGI movies.");
@@ -1717,10 +1773,13 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
prop= RNA_def_property(srna, "quicktime_codec_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, NULL, "qtcodecsettings.codecType");
RNA_def_property_enum_items(prop, quicktime_codec_type_items);
+ RNA_def_property_enum_funcs(prop, "rna_SceneRenderData_qtcodecsettings_codecType_get",
+ "rna_SceneRenderData_qtcodecsettings_codecType_set",
+ "rna_SceneRenderData_qtcodecsettings_codecType_itemf");
RNA_def_property_ui_text(prop, "Codec", "QuickTime codec type");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "quicktime_codec_spatial_quality", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "quicktime_codec_spatial_quality", PROP_INT, PROP_PERCENTAGE);
RNA_def_property_int_sdna(prop, NULL, "qtcodecsettings.codecSpatialQuality");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Spatial quality", "Intra-frame spatial quality level");
@@ -2173,7 +2232,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
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);
+ prop= RNA_def_property(srna, "stamp_sequencer_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);
@@ -2313,7 +2372,6 @@ void RNA_def_scene(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
-// PropertyRNA *prop_act;
FunctionRNA *func;
static EnumPropertyItem audio_distance_model_items[] = {
@@ -2336,6 +2394,7 @@ void RNA_def_scene(BlenderRNA *brna)
prop= RNA_def_property(srna, "camera", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Camera", "Active camera used for rendering the scene.");
+ RNA_def_property_update(prop, NC_SCENE, NULL);
prop= RNA_def_property(srna, "set", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "set");
@@ -2343,11 +2402,12 @@ void RNA_def_scene(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK);
RNA_def_property_pointer_funcs(prop, NULL, "rna_Scene_set_set", NULL);
RNA_def_property_ui_text(prop, "Set Scene", "Background set scene.");
+ RNA_def_property_update(prop, NC_SCENE, NULL);
prop= RNA_def_property(srna, "world", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "World", "World used for rendering the scene.");
- RNA_def_property_update(prop, NC_WORLD, NULL);
+ RNA_def_property_update(prop, NC_SCENE|NC_WORLD, NULL);
prop= RNA_def_property(srna, "cursor_location", PROP_FLOAT, PROP_XYZ|PROP_UNIT_LENGTH);
RNA_def_property_float_sdna(prop, NULL, "cursor");
@@ -2439,6 +2499,14 @@ void RNA_def_scene(BlenderRNA *brna)
/* Animation Data (for Scene) */
rna_def_animdata_common(srna);
+ /* Readonly Properties */
+ prop= RNA_def_property(srna, "nla_tweakmode_on", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", SCE_NLA_EDIT_ON);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* DO NOT MAKE THIS EDITABLE, OR NLA EDITOR BREAKS */
+ RNA_def_property_ui_text(prop, "NLA TweakMode", "Indicates whether there is any action referenced by NLA being edited. Strictly read-only.");
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
+
+
/* Nodes (Compositing) */
prop= RNA_def_property(srna, "nodetree", PROP_POINTER, PROP_NONE);
RNA_def_property_ui_text(prop, "Node Tree", "Compositing node tree.");
@@ -2524,7 +2592,7 @@ void RNA_def_scene(BlenderRNA *brna)
prop= RNA_def_property(srna, "sync_audio", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "audio.flag", AUDIO_SYNC);
- RNA_def_property_ui_text(prop, "Audio Sync", "Play back and sync with audio from Sequence Editor.");
+ RNA_def_property_ui_text(prop, "Audio Sync", "Play back and sync with audio from Sequence Editor for realtime playback.");
RNA_def_property_update(prop, NC_SCENE, NULL);
prop= RNA_def_property(srna, "scrub_audio", PROP_BOOLEAN, PROP_NONE);
diff --git a/source/blender/makesrna/intern/rna_scene_api.c b/source/blender/makesrna/intern/rna_scene_api.c
index 6b21f886712..4efbed167a6 100644
--- a/source/blender/makesrna/intern/rna_scene_api.c
+++ b/source/blender/makesrna/intern/rna_scene_api.c
@@ -44,16 +44,17 @@
#include "BKE_depsgraph.h"
#include "ED_object.h"
+#include "ED_anim_api.h"
#include "WM_api.h"
-static void rna_Scene_set_frame(Scene *sce, bContext *C, int frame)
+static void rna_Scene_set_frame(Scene *scene, bContext *C, int frame)
{
- sce->r.cfra= frame;
- CLAMP(sce->r.cfra, MINAFRAME, MAXFRAME);
- scene_update_for_newframe(sce, (1<<20) - 1);
+ scene->r.cfra= frame;
+ CLAMP(scene->r.cfra, MINAFRAME, MAXFRAME);
+ scene_update_for_newframe(scene, (1<<20) - 1);
- WM_event_add_notifier(C, NC_SCENE|ND_FRAME, sce);
+ WM_main_add_notifier(NC_SCENE|ND_FRAME, scene);
}
static KeyingSet *rna_Scene_add_keying_set(Scene *sce, ReportList *reports,
diff --git a/source/blender/makesrna/intern/rna_screen.c b/source/blender/makesrna/intern/rna_screen.c
index 79a5d3d5cd1..883c77b3faa 100644
--- a/source/blender/makesrna/intern/rna_screen.c
+++ b/source/blender/makesrna/intern/rna_screen.c
@@ -40,6 +40,7 @@ EnumPropertyItem region_type_items[] = {
{RGN_TYPE_TOOLS, "TOOLS", 0, "Tools", ""},
{RGN_TYPE_TEMPORARY, "TEMPORARY", 0, "Temporary", ""},
{RGN_TYPE_UI, "UI", 0, "UI", ""},
+ {RGN_TYPE_PREVIEW, "PREVIEW", 0, "Preview", ""},
{0, NULL, 0, NULL, NULL}};
#ifdef RNA_RUNTIME
@@ -78,6 +79,12 @@ static int rna_Screen_animation_playing_get(PointerRNA *ptr)
return (sc->animtimer != NULL);
}
+static int rna_Screen_fullscreen_get(PointerRNA *ptr)
+{
+ bScreen *sc= (bScreen*)ptr->data;
+ return (sc->full == SCREENFULL);
+}
+
static void rna_Area_type_set(PointerRNA *ptr, int value)
{
ScrArea *sa= (ScrArea*)ptr->data;
@@ -88,10 +95,8 @@ static void rna_Area_type_update(bContext *C, PointerRNA *ptr)
{
ScrArea *sa= (ScrArea*)ptr->data;
- if(sa) {
- ED_area_newspace(C, sa, sa->butspacetype); /* XXX - this uses the window */
- ED_area_tag_redraw(sa);
- }
+ ED_area_newspace(C, sa, sa->butspacetype); /* XXX - this uses the window */
+ ED_area_tag_redraw(sa);
}
#else
@@ -129,9 +134,9 @@ static void rna_def_area(BlenderRNA *brna)
RNA_def_property_enum_items(prop, space_type_items);
RNA_def_property_enum_funcs(prop, NULL, "rna_Area_type_set", NULL);
RNA_def_property_ui_text(prop, "Type", "Space type.");
+ RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
RNA_def_property_update(prop, 0, "rna_Area_type_update");
-
RNA_def_function(srna, "tag_redraw", "ED_area_tag_redraw");
}
@@ -147,7 +152,12 @@ static void rna_def_region(BlenderRNA *brna)
prop= RNA_def_property(srna, "id", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "swinid");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "Region ID", "Uniqute ID for this region.");
+ RNA_def_property_ui_text(prop, "Region ID", "Unique ID for this region.");
+
+ prop= RNA_def_property(srna, "type", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "regiontype");
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Region Type", "Type of this region.");
prop= RNA_def_property(srna, "width", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "winx");
@@ -174,6 +184,7 @@ static void rna_def_screen(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_EDITABLE|PROP_NEVER_NULL);
RNA_def_property_pointer_funcs(prop, NULL, "rna_Screen_scene_set", NULL);
RNA_def_property_ui_text(prop, "Scene", "Active scene to be edited in the screen.");
+ RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
RNA_def_property_update(prop, 0, "rna_Screen_scene_update");
prop= RNA_def_property(srna, "areas", PROP_COLLECTION, PROP_NONE);
@@ -185,6 +196,11 @@ static void rna_def_screen(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_boolean_funcs(prop, "rna_Screen_animation_playing_get", NULL);
RNA_def_property_ui_text(prop, "Animation Playing", "Animation playback is active.");
+
+ prop= RNA_def_property(srna, "fullscreen", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_boolean_funcs(prop, "rna_Screen_fullscreen_get", NULL);
+ RNA_def_property_ui_text(prop, "Fullscreen", "An area is maximised, filling this screen.");
}
void RNA_def_screen(BlenderRNA *brna)
diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c
index db100c38257..13c3b15549b 100644
--- a/source/blender/makesrna/intern/rna_sculpt_paint.c
+++ b/source/blender/makesrna/intern/rna_sculpt_paint.c
@@ -100,9 +100,10 @@ static void rna_Paint_active_brush_set(PointerRNA *ptr, PointerRNA value)
paint_brush_set(ptr->data, value.data);
}
-static void rna_ParticleEdit_redo(bContext *C, PointerRNA *ptr)
+static void rna_ParticleEdit_redo(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- PTCacheEdit *edit = PE_get_current(CTX_data_scene(C), CTX_data_active_object(C));
+ Object *ob= (scene->basact)? scene->basact->object: NULL;
+ PTCacheEdit *edit = PE_get_current(scene, ob);
if(!edit)
return;
@@ -110,9 +111,9 @@ static void rna_ParticleEdit_redo(bContext *C, PointerRNA *ptr)
psys_free_path_cache(edit->psys, edit);
}
-static void rna_ParticleEdit_update(bContext *C, PointerRNA *ptr)
+static void rna_ParticleEdit_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- Object *ob = CTX_data_active_object(C);
+ Object *ob= (scene->basact)? scene->basact->object: NULL;
if(ob) DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
}
@@ -120,7 +121,8 @@ static void rna_ParticleEdit_update(bContext *C, PointerRNA *ptr)
static EnumPropertyItem *rna_ParticleEdit_tool_itemf(bContext *C, PointerRNA *ptr, int *free)
{
Scene *scene= CTX_data_scene(C);
- PTCacheEdit *edit = PE_get_current(scene, CTX_data_active_object(C));
+ Object *ob= (scene->basact)? scene->basact->object: NULL;
+ PTCacheEdit *edit = PE_get_current(scene, ob);
if(edit && edit->psys)
return particle_edit_hair_brush_items;
@@ -188,6 +190,14 @@ static void rna_def_paint(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Brush", "Active paint brush.");
RNA_def_property_update(prop, NC_BRUSH|NA_EDITED, NULL);
+
+ prop= RNA_def_property(srna, "show_brush", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flags", PAINT_SHOW_BRUSH);
+ RNA_def_property_ui_text(prop, "Show Brush", "");
+
+ prop= RNA_def_property(srna, "fast_navigate", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flags", PAINT_FAST_NAVIGATE);
+ RNA_def_property_ui_text(prop, "Fast Navigate", "For multires, show low resolution while navigating the view.");
}
static void rna_def_sculpt(BlenderRNA *brna)
@@ -221,14 +231,6 @@ static void rna_def_sculpt(BlenderRNA *brna)
prop= RNA_def_property(srna, "lock_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", SCULPT_LOCK_Z);
RNA_def_property_ui_text(prop, "Lock Z", "Disallow changes to the Z axis of vertices.");
-
- prop= RNA_def_property(srna, "show_brush", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flags", SCULPT_DRAW_BRUSH);
- RNA_def_property_ui_text(prop, "Show Brush", "");
-
- prop= RNA_def_property(srna, "partial_redraw", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flags", SCULPT_DRAW_FAST);
- RNA_def_property_ui_text(prop, "Partial Redraw", "Optimize sculpting by only refreshing modified faces.");
}
static void rna_def_vertex_paint(BlenderRNA *brna)
@@ -313,11 +315,11 @@ static void rna_def_image_paint(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Normal", "Paint most on faces pointing towards the view");
prop= RNA_def_property(srna, "use_stencil_layer", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", IMAGEPAINT_PROJECT_LAYER_MASK);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", IMAGEPAINT_PROJECT_LAYER_STENCIL);
RNA_def_property_ui_text(prop, "Stencil Layer", "Set the mask layer from the UV layer buttons");
prop= RNA_def_property(srna, "invert_stencil", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", IMAGEPAINT_PROJECT_LAYER_MASK_INV);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", IMAGEPAINT_PROJECT_LAYER_STENCIL_INV);
RNA_def_property_ui_text(prop, "Invert", "Invert the stencil layer");
prop= RNA_def_property(srna, "use_clone_layer", PROP_BOOLEAN, PROP_NONE);
@@ -341,9 +343,9 @@ static void rna_def_particle_edit(BlenderRNA *brna)
PropertyRNA *prop;
static EnumPropertyItem select_mode_items[] = {
- {SCE_SELECT_PATH, "PATH", ICON_EDGESEL, "Path", ""}, // XXX icon
- {SCE_SELECT_POINT, "POINT", ICON_VERTEXSEL, "Point", ""}, // XXX icon
- {SCE_SELECT_END, "END", ICON_FACESEL, "End", "E"}, // XXX icon
+ {SCE_SELECT_PATH, "PATH", ICON_PARTICLE_PATH, "Path", "Path edit mode"},
+ {SCE_SELECT_POINT, "POINT", ICON_PARTICLE_POINT, "Point", "Point select mode"},
+ {SCE_SELECT_END, "TIP", ICON_PARTICLE_TIP, "Tip", "Tip select mode"},
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem puff_mode[] = {
@@ -380,7 +382,7 @@ static void rna_def_particle_edit(BlenderRNA *brna)
RNA_def_property_enum_bitflag_sdna(prop, NULL, "selectmode");
RNA_def_property_enum_items(prop, select_mode_items);
RNA_def_property_ui_text(prop, "Selection Mode", "Particle select and display mode.");
- RNA_def_property_update(prop, NC_OBJECT, "rna_ParticleEdit_update");
+ RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_ParticleEdit_update");
prop= RNA_def_property(srna, "keep_lengths", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_KEEP_LENGTHS);
diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequencer.c
index 9f9298c66f6..f875e6a7fa2 100644
--- a/source/blender/makesrna/intern/rna_sequence.c
+++ b/source/blender/makesrna/intern/rna_sequencer.c
@@ -25,6 +25,7 @@
#include <stdlib.h>
#include <limits.h>
+#include "RNA_access.h"
#include "RNA_define.h"
#include "RNA_types.h"
@@ -34,7 +35,7 @@
#include "DNA_scene_types.h"
#include "DNA_sequence_types.h"
-#include "BKE_sequence.h"
+#include "BKE_sequencer.h"
#include "MEM_guardedalloc.h"
@@ -42,58 +43,125 @@
#ifdef RNA_RUNTIME
-static void rna_SequenceEditor_start_frame_set(PointerRNA *ptr, int value)
+/* build a temp referene to the parent */
+static void meta_tmp_ref(Sequence *seq_par, Sequence *seq)
+{
+ for (; seq; seq= seq->next) {
+ seq->tmp= seq_par;
+ if(seq->type == SEQ_META) {
+ meta_tmp_ref(seq, seq->seqbase.first);
+ }
+ }
+}
+
+static void rna_SequenceEditor_sequences_all_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
+{
+ Scene *scene= (Scene*)ptr->id.data;
+ Editing *ed= seq_give_editing(scene, FALSE);
+
+ meta_tmp_ref(NULL, ed->seqbase.first);
+
+ rna_iterator_listbase_begin(iter, &ed->seqbase, NULL);
+}
+
+static void rna_SequenceEditor_sequences_all_next(CollectionPropertyIterator *iter)
+{
+ ListBaseIterator *internal= iter->internal;
+ Sequence *seq= (Sequence*)internal->link;
+
+ if(seq->seqbase.first)
+ internal->link= (Link*)seq->seqbase.first;
+ else if(seq->next)
+ internal->link= (Link*)seq->next;
+ else {
+ internal->link= NULL;
+
+ do {
+ seq= seq->tmp; // XXX - seq's dont reference their parents!
+ if(seq && seq->next) {
+ internal->link= (Link*)seq->next;
+ break;
+ }
+ } while(seq);
+ }
+
+ iter->valid= (internal->link != NULL);
+}
+
+/* internal use */
+static void rna_Sequence_frame_change_update(Scene *scene, Sequence *seq)
+{
+ Editing *ed= seq_give_editing(scene, FALSE);
+ ListBase *seqbase= seq_seqbase(&ed->seqbase, seq);
+ calc_sequence_disp(seq);
+
+ if(seq_test_overlap(seqbase, seq)) {
+ shuffle_seq(seqbase, seq, scene); // XXX - BROKEN!, uses context seqbasep
+ }
+ sort_seq(scene);
+}
+
+static void rna_Sequence_start_frame_set(PointerRNA *ptr, int value)
{
Sequence *seq= (Sequence*)ptr->data;
- Scene *sce= (Scene*)ptr->id.data;
- Editing *ed= seq_give_editing(sce, FALSE);
+ Scene *scene= (Scene*)ptr->id.data;
seq->start= value;
- calc_sequence_disp(seq);
-
- if( seq_test_overlap(ed->seqbasep, seq) ) {
- shuffle_seq(ed->seqbasep, seq);
- }
- sort_seq(sce);
+ rna_Sequence_frame_change_update(scene, seq);
}
-static void rna_SequenceEditor_length_set(PointerRNA *ptr, int value)
+static void rna_Sequence_start_frame_final_set(PointerRNA *ptr, int value)
{
Sequence *seq= (Sequence*)ptr->data;
- Scene *sce= (Scene*)ptr->id.data;
- Editing *ed= seq_give_editing(sce, FALSE);
+ Scene *scene= (Scene*)ptr->id.data;
+
+ seq_tx_set_final_left(seq, value);
+ seq_single_fix(seq);
+ rna_Sequence_frame_change_update(scene, seq);
+}
+
+static void rna_Sequence_end_frame_final_set(PointerRNA *ptr, int value)
+{
+ Sequence *seq= (Sequence*)ptr->data;
+ Scene *scene= (Scene*)ptr->id.data;
+
+ seq_tx_set_final_right(seq, value);
+ seq_single_fix(seq);
+ rna_Sequence_frame_change_update(scene, seq);
+}
+
+static void rna_Sequence_length_set(PointerRNA *ptr, int value)
+{
+ Sequence *seq= (Sequence*)ptr->data;
+ Scene *scene= (Scene*)ptr->id.data;
seq_tx_set_final_right(seq, seq->start+value);
- calc_sequence_disp(seq);
-
- if( seq_test_overlap(ed->seqbasep, seq) ) {
- shuffle_seq(ed->seqbasep, seq);
- }
- sort_seq(sce);
+ rna_Sequence_frame_change_update(scene, seq);
}
-static int rna_SequenceEditor_length_get(PointerRNA *ptr)
+static int rna_Sequence_length_get(PointerRNA *ptr)
{
Sequence *seq= (Sequence*)ptr->data;
return seq_tx_get_final_right(seq, 0)-seq_tx_get_final_left(seq, 0);
}
-static void rna_SequenceEditor_channel_set(PointerRNA *ptr, int value)
+static void rna_Sequence_channel_set(PointerRNA *ptr, int value)
{
Sequence *seq= (Sequence*)ptr->data;
- Scene *sce= (Scene*)ptr->id.data;
- Editing *ed= seq_give_editing(sce, FALSE);
-
+ Scene *scene= (Scene*)ptr->id.data;
+ Editing *ed= seq_give_editing(scene, FALSE);
+ ListBase *seqbase= seq_seqbase(&ed->seqbase, seq);
+
seq->machine= value;
- if( seq_test_overlap(ed->seqbasep, seq) ) {
- shuffle_seq(ed->seqbasep, seq);
+ if( seq_test_overlap(seqbase, seq) ) {
+ shuffle_seq(seqbase, seq, scene); // XXX - BROKEN!, uses context seqbasep
}
- sort_seq(sce);
+ sort_seq(scene);
}
/* properties that need to allocate structs */
-static void rna_SequenceEditor_use_color_balance_set(PointerRNA *ptr, int value)
+static void rna_Sequence_use_color_balance_set(PointerRNA *ptr, int value)
{
Sequence *seq= (Sequence*)ptr->data;
int c;
@@ -113,7 +181,7 @@ static void rna_SequenceEditor_use_color_balance_set(PointerRNA *ptr, int value)
}
}
-static void rna_SequenceEditor_use_proxy_set(PointerRNA *ptr, int value)
+static void rna_Sequence_use_proxy_set(PointerRNA *ptr, int value)
{
Sequence *seq= (Sequence*)ptr->data;
if(value) {
@@ -126,7 +194,7 @@ static void rna_SequenceEditor_use_proxy_set(PointerRNA *ptr, int value)
}
}
-static void rna_SequenceEditor_use_translation_set(PointerRNA *ptr, int value)
+static void rna_Sequence_use_translation_set(PointerRNA *ptr, int value)
{
Sequence *seq= (Sequence*)ptr->data;
if(value) {
@@ -139,7 +207,7 @@ static void rna_SequenceEditor_use_translation_set(PointerRNA *ptr, int value)
}
}
-static void rna_SequenceEditor_use_crop_set(PointerRNA *ptr, int value)
+static void rna_Sequence_use_crop_set(PointerRNA *ptr, int value)
{
Sequence *seq= (Sequence*)ptr->data;
if(value) {
@@ -166,10 +234,23 @@ static int rna_Sequence_name_length(PointerRNA *ptr)
static void rna_Sequence_name_set(PointerRNA *ptr, const char *value)
{
- Scene *sce= (Scene*)ptr->id.data;
+ Scene *scene= (Scene*)ptr->id.data;
+// Editing *ed= seq_give_editing(scene, FALSE);
Sequence *seq= (Sequence*)ptr->data;
+// Sequence *iseq;
BLI_strncpy(seq->name+2, value, sizeof(seq->name)-2);
- seqUniqueName(&sce->ed->seqbase, seq);
+
+ seqUniqueName(&scene->ed->seqbase, seq);
+
+ // TODO, unique name for all meta's
+ /*
+ SEQ_BEGIN(ed, iseq) {
+ if(iseq->seqbase.first)
+ seqUniqueName(&iseq->seqbase, seq);
+
+ }
+ SEQ_END
+ */
}
static StructRNA* rna_Sequence_refine(struct PointerRNA *ptr)
@@ -221,7 +302,7 @@ static char *rna_Sequence_path(PointerRNA *ptr)
* TODO: would be nice to make SequenceEditor data a datablock of its own (for shorter paths)
*/
if (seq->name+2)
- return BLI_sprintfN("sequence_editor.sequences[\"%s\"]", seq->name+2);
+ return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"]", seq->name+2);
else
return BLI_strdup("");
}
@@ -263,6 +344,32 @@ static void rna_SequenceElement_filename_set(PointerRNA *ptr, const char *value)
BLI_strncpy(elem->name, name, sizeof(elem->name));
}
+static void rna_Sequence_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+ Editing *ed= seq_give_editing(scene, FALSE);
+
+ free_imbuf_seq(scene, &ed->seqbase, FALSE);
+
+ if(RNA_struct_is_a(ptr->type, &RNA_SoundSequence))
+ seq_update_sound(ptr->data);
+}
+
+static void rna_Sequence_mute_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+ Editing *ed= seq_give_editing(scene, FALSE);
+
+ seq_update_muting(ed);
+ rna_Sequence_update(bmain, scene, ptr);
+}
+
+/* do_versions? */
+static float rna_Sequence_opacity_get(PointerRNA *ptr) {
+ return ((Sequence*)(ptr->data))->blend_opacity / 100.0f;
+}
+static void rna_Sequence_opacity_set(PointerRNA *ptr, float value) {
+ ((Sequence*)(ptr->data))->blend_opacity = value * 100.0f;
+}
+
#else
static void rna_def_strip_element(BlenderRNA *brna)
@@ -278,6 +385,7 @@ static void rna_def_strip_element(BlenderRNA *brna)
RNA_def_property_string_sdna(prop, NULL, "name");
RNA_def_property_ui_text(prop, "Filename", "");
RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SequenceElement_filename_set");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
}
static void rna_def_strip_crop(BlenderRNA *brna)
@@ -292,18 +400,22 @@ static void rna_def_strip_crop(BlenderRNA *brna)
prop= RNA_def_property(srna, "top", PROP_INT, PROP_UNSIGNED);
RNA_def_property_ui_text(prop, "Top", "");
RNA_def_property_ui_range(prop, 0, 4096, 1, 0);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "bottom", PROP_INT, PROP_UNSIGNED);
RNA_def_property_ui_text(prop, "Bottom", "");
RNA_def_property_ui_range(prop, 0, 4096, 1, 0);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "left", PROP_INT, PROP_UNSIGNED);
RNA_def_property_ui_text(prop, "Left", "");
RNA_def_property_ui_range(prop, 0, 4096, 1, 0);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "right", PROP_INT, PROP_UNSIGNED);
RNA_def_property_ui_text(prop, "Right", "");
RNA_def_property_ui_range(prop, 0, 4096, 1, 0);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
}
static void rna_def_strip_transform(BlenderRNA *brna)
@@ -319,11 +431,13 @@ static void rna_def_strip_transform(BlenderRNA *brna)
RNA_def_property_int_sdna(prop, NULL, "xofs");
RNA_def_property_ui_text(prop, "Offset Y", "");
RNA_def_property_ui_range(prop, -4096, 4096, 1, 0);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "offset_y", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "yofs");
RNA_def_property_ui_text(prop, "Offset Y", "");
RNA_def_property_ui_range(prop, -4096, 4096, 1, 0);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
}
static void rna_def_strip_proxy(BlenderRNA *brna)
@@ -338,10 +452,12 @@ 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", "Location to story the proxy file");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
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");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
}
static void rna_def_strip_color_balance(BlenderRNA *brna)
@@ -355,33 +471,41 @@ static void rna_def_strip_color_balance(BlenderRNA *brna)
prop= RNA_def_property(srna, "lift", PROP_FLOAT, PROP_COLOR);
RNA_def_property_ui_text(prop, "Lift", "Color balance lift (shadows).");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "gamma", PROP_FLOAT, PROP_COLOR);
RNA_def_property_ui_text(prop, "Gamma", "Color balance gamma (midtones).");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "gain", PROP_FLOAT, PROP_COLOR);
RNA_def_property_ui_text(prop, "Gain", "Color balance gain (highlights).");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "inverse_gain", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_COLOR_BALANCE_INVERSE_GAIN);
RNA_def_property_ui_text(prop, "Inverse Gain", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "inverse_gamma", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_COLOR_BALANCE_INVERSE_GAMMA);
RNA_def_property_ui_text(prop, "Inverse Gamma", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "inverse_lift", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_COLOR_BALANCE_INVERSE_LIFT);
RNA_def_property_ui_text(prop, "Inverse Lift", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
/* not yet used
prop= RNA_def_property(srna, "exposure", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Exposure", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "saturation", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.0f, 1.0f);
- RNA_def_property_ui_text(prop, "Saturation", "");*/
+ RNA_def_property_ui_text(prop, "Saturation", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); */
}
static void rna_def_sequence(BlenderRNA *brna)
@@ -396,7 +520,6 @@ static void rna_def_sequence(BlenderRNA *brna)
{SEQ_SCENE, "SCENE", 0, "Scene", ""},
{SEQ_MOVIE, "MOVIE", 0, "Movie", ""},
{SEQ_SOUND, "SOUND", 0, "Sound", ""},
- {SEQ_EFFECT, "REPLACE", 0, "Replace", ""},
{SEQ_CROSS, "CROSS", 0, "Cross", ""},
{SEQ_ADD, "ADD", 0, "Add", ""},
{SEQ_SUB, "SUBTRACT", 0, "Subtract", ""},
@@ -435,11 +558,13 @@ static void rna_def_sequence(BlenderRNA *brna)
RNA_def_property_string_maxlength(prop, sizeof(((Sequence*)NULL)->name)-2);
RNA_def_property_ui_text(prop, "Name", "");
RNA_def_struct_name_property(srna, prop);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_enum_items(prop, seq_type_items);
RNA_def_property_ui_text(prop, "Type", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
//prop= RNA_def_property(srna, "ipo", PROP_POINTER, PROP_NONE);
//RNA_def_property_ui_text(prop, "Ipo Curves", "Ipo curves used by this sequence.");
@@ -449,28 +574,32 @@ static void rna_def_sequence(BlenderRNA *brna)
prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SELECT);
RNA_def_property_ui_text(prop, "Selected", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER_SELECT, NULL);
prop= RNA_def_property(srna, "left_handle_selected", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_LEFTSEL);
RNA_def_property_ui_text(prop, "Left Handle Selected", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER_SELECT, NULL);
prop= RNA_def_property(srna, "right_handle_selected", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_RIGHTSEL);
RNA_def_property_ui_text(prop, "Right Handle Selected", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER_SELECT, NULL);
prop= RNA_def_property(srna, "mute", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MUTE);
RNA_def_property_ui_text(prop, "Mute", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_mute_update");
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, "Frame Locked", "Lock the animation curve to the global frame counter.");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "lock", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_LOCK);
RNA_def_property_ui_text(prop, "Lock", "Lock strip so that it can't be transformed.");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
/* strip positioning */
@@ -478,70 +607,89 @@ static void rna_def_sequence(BlenderRNA *brna)
RNA_def_property_int_sdna(prop, NULL, "len");
RNA_def_property_range(prop, 1, MAXFRAME);
RNA_def_property_ui_text(prop, "Length", "The length of the contents of this strip before the handles are applied");
- RNA_def_property_int_funcs(prop, "rna_SequenceEditor_length_get", "rna_SequenceEditor_length_set",NULL);
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_int_funcs(prop, "rna_Sequence_length_get", "rna_Sequence_length_set",NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "start_frame", PROP_INT, PROP_TIME);
RNA_def_property_int_sdna(prop, NULL, "start");
RNA_def_property_ui_text(prop, "Start Frame", "");
- RNA_def_property_int_funcs(prop, NULL, "rna_SequenceEditor_start_frame_set",NULL); // overlap tests and calc_seq_disp
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_start_frame_set",NULL); // overlap tests and calc_seq_disp
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
+ prop= RNA_def_property(srna, "start_frame_final", PROP_INT, PROP_TIME);
+ RNA_def_property_int_sdna(prop, NULL, "startdisp");
+ RNA_def_property_ui_text(prop, "Start Frame", "Start frame displayed in the sequence editor after offsets are applied, setting this is equivilent to moving the handle, not the actual start frame.");
+ RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_start_frame_final_set", NULL); // overlap tests and calc_seq_disp
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
+
+ prop= RNA_def_property(srna, "end_frame_final", PROP_INT, PROP_TIME);
+ RNA_def_property_int_sdna(prop, NULL, "enddisp");
+ RNA_def_property_ui_text(prop, "End Frame", "End frame displayed in the sequence editor after offsets are applied.");
+ RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_end_frame_final_set", NULL); // overlap tests and calc_seq_disp
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
+
prop= RNA_def_property(srna, "start_offset", PROP_INT, PROP_TIME);
RNA_def_property_int_sdna(prop, NULL, "startofs");
RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests
RNA_def_property_ui_text(prop, "Start Offset", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "end_offset", PROP_INT, PROP_TIME);
RNA_def_property_int_sdna(prop, NULL, "endofs");
RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests
RNA_def_property_ui_text(prop, "End offset", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "start_still", PROP_INT, PROP_TIME);
RNA_def_property_int_sdna(prop, NULL, "startstill");
RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests
RNA_def_property_range(prop, 0, MAXFRAME);
RNA_def_property_ui_text(prop, "Start Still", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "end_still", PROP_INT, PROP_TIME);
RNA_def_property_int_sdna(prop, NULL, "endstill");
RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests
RNA_def_property_range(prop, 0, MAXFRAME);
RNA_def_property_ui_text(prop, "End Still", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "channel", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "machine");
RNA_def_property_range(prop, 0, MAXSEQ-1);
RNA_def_property_ui_text(prop, "Channel", "Y position of the sequence strip.");
- RNA_def_property_int_funcs(prop, NULL, "rna_SequenceEditor_channel_set",NULL); // overlap test
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_channel_set",NULL); // overlap test
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
/* blending */
prop= RNA_def_property(srna, "blend_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, blend_mode_items);
RNA_def_property_ui_text(prop, "Blend Mode", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "blend_opacity", PROP_FLOAT, PROP_NONE);
- RNA_def_property_range(prop, 0.0f, 100.0f);
+ prop= RNA_def_property(srna, "blend_opacity", PROP_FLOAT, PROP_FACTOR);
+ RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Blend Opacity", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_float_funcs(prop, "rna_Sequence_opacity_get", "rna_Sequence_opacity_set", NULL); // stupid 0-100 -> 0-1
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "effect_fader", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_float_sdna(prop, NULL, "effect_fader");
RNA_def_property_ui_text(prop, "Effect fader position", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
+
+ prop= RNA_def_property(srna, "use_effect_default_fade", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_EFFECT_DEFAULT_FADE);
+ RNA_def_property_ui_text(prop, "Use Default Fade", "Fade effect using the builtin default (usually make transition as long as effect strip).");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
+
prop= RNA_def_property(srna, "speed_fader", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "speed_fader");
RNA_def_property_ui_text(prop, "Speed effect fader position", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
/* functions */
func= RNA_def_function(srna, "getStripElem", "give_stripelem");
@@ -566,6 +714,12 @@ static void rna_def_editor(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "Sequence");
RNA_def_property_ui_text(prop, "Sequences", "");
+ prop= RNA_def_property(srna, "sequences_all", PROP_COLLECTION, PROP_NONE);
+ RNA_def_property_collection_sdna(prop, NULL, "seqbase", NULL);
+ RNA_def_property_struct_type(prop, "Sequence");
+ RNA_def_property_ui_text(prop, "Sequences", "");
+ RNA_def_property_collection_funcs(prop, "rna_SequenceEditor_sequences_all_begin", "rna_SequenceEditor_sequences_all_next", 0, 0, 0, 0, 0);
+
prop= RNA_def_property(srna, "meta_stack", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "metastack", NULL);
RNA_def_property_struct_type(prop, "Sequence");
@@ -593,66 +747,63 @@ static void rna_def_filter_video(StructRNA *srna)
prop= RNA_def_property(srna, "flip_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FLIPX);
RNA_def_property_ui_text(prop, "Flip X", "Flip on the X axis.");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "flip_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FLIPY);
RNA_def_property_ui_text(prop, "Flip Y", "Flip on the Y axis.");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "convert_float", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MAKE_FLOAT);
RNA_def_property_ui_text(prop, "Convert Float", "Convert input to float data.");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "reverse_frames", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_REVERSE_FRAMES);
RNA_def_property_ui_text(prop, "Flip Time", "Reverse frame order.");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "multiply_colors", PROP_FLOAT, PROP_UNSIGNED);
RNA_def_property_float_sdna(prop, NULL, "mul");
RNA_def_property_range(prop, 0.0f, 20.0f);
RNA_def_property_ui_text(prop, "Multiply Colors", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "strobe", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 1.0f, 30.0f);
RNA_def_property_ui_text(prop, "Strobe", "Only display every nth frame.");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "use_color_balance", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_COLOR_BALANCE);
RNA_def_property_ui_text(prop, "Use Color Balance", "(3-Way color correction) on input.");
- RNA_def_property_boolean_funcs(prop, NULL, "rna_SequenceEditor_use_color_balance_set");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_boolean_funcs(prop, NULL, "rna_Sequence_use_color_balance_set");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "color_balance", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "strip->color_balance");
RNA_def_property_ui_text(prop, "Color Balance", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "use_translation", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_TRANSFORM);
RNA_def_property_ui_text(prop, "Use Translation", "Translate image before processing.");
- RNA_def_property_boolean_funcs(prop, NULL, "rna_SequenceEditor_use_translation_set");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
-
+ RNA_def_property_boolean_funcs(prop, NULL, "rna_Sequence_use_translation_set");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
+
prop= RNA_def_property(srna, "transform", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "strip->transform");
RNA_def_property_ui_text(prop, "Transform", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "use_crop", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_CROP);
RNA_def_property_ui_text(prop, "Use Crop", "Crop image before processing.");
- RNA_def_property_boolean_funcs(prop, NULL, "rna_SequenceEditor_use_crop_set");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_boolean_funcs(prop, NULL, "rna_Sequence_use_crop_set");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "crop", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "strip->crop");
RNA_def_property_ui_text(prop, "Crop", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
}
static void rna_def_proxy(StructRNA *srna)
@@ -662,7 +813,7 @@ static void rna_def_proxy(StructRNA *srna)
prop= RNA_def_property(srna, "use_proxy", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_PROXY);
RNA_def_property_ui_text(prop, "Use Proxy", "Use a preview proxy for this strip.");
- RNA_def_property_boolean_funcs(prop, NULL, "rna_SequenceEditor_use_proxy_set");
+ RNA_def_property_boolean_funcs(prop, NULL, "rna_Sequence_use_proxy_set");
prop= RNA_def_property(srna, "proxy", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "strip->proxy");
@@ -671,6 +822,7 @@ static void rna_def_proxy(StructRNA *srna)
prop= RNA_def_property(srna, "proxy_custom_directory", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_PROXY_CUSTOM_DIR);
RNA_def_property_ui_text(prop, "Proxy Custom Directory", "Use a custom directory to store data.");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
}
static void rna_def_input(StructRNA *srna)
@@ -681,13 +833,13 @@ static void rna_def_input(StructRNA *srna)
RNA_def_property_int_sdna(prop, NULL, "anim_startofs");
RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap test
RNA_def_property_ui_text(prop, "Animation Start Offset", "Animation start offset (trim start).");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "animation_end_offset", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "anim_endofs");
RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap test
RNA_def_property_ui_text(prop, "Animation End Offset", "Animation end offset (trim end).");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
}
static void rna_def_image(BlenderRNA *brna)
@@ -702,13 +854,13 @@ static void rna_def_image(BlenderRNA *brna)
prop= RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH);
RNA_def_property_string_sdna(prop, NULL, "strip->dir");
RNA_def_property_ui_text(prop, "Directory", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "elements", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "strip->stripdata", "strip->len");
RNA_def_property_struct_type(prop, "SequenceElement");
RNA_def_property_ui_text(prop, "Elements", "");
-
rna_def_filter_video(srna);
rna_def_proxy(srna);
rna_def_input(srna);
@@ -745,7 +897,7 @@ static void rna_def_scene(BlenderRNA *brna)
prop= RNA_def_property(srna, "scene", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Scene", "Scene that this sequence uses.");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
rna_def_filter_video(srna);
rna_def_proxy(srna);
@@ -765,15 +917,18 @@ static void rna_def_movie(BlenderRNA *brna)
RNA_def_property_int_sdna(prop, NULL, "anim_preseek");
RNA_def_property_range(prop, 0, 50);
RNA_def_property_ui_text(prop, "MPEG Preseek", "For MPEG movies, preseek this many frames.");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH);
RNA_def_property_string_sdna(prop, NULL, "strip->stripdata->name");
RNA_def_property_ui_text(prop, "Filename", "");
RNA_def_property_string_funcs(prop, NULL, NULL, "rna_MovieSequence_filename_set");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH);
RNA_def_property_string_sdna(prop, NULL, "strip->dir");
RNA_def_property_ui_text(prop, "Directory", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
rna_def_filter_video(srna);
rna_def_proxy(srna);
@@ -792,15 +947,18 @@ static void rna_def_sound(BlenderRNA *brna)
prop= RNA_def_property(srna, "sound", PROP_POINTER, PROP_NONE);
RNA_def_property_struct_type(prop, "Sound");
RNA_def_property_ui_text(prop, "Sound", "Sound datablock used by this sequence.");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH);
RNA_def_property_string_sdna(prop, NULL, "strip->stripdata->name");
RNA_def_property_ui_text(prop, "Filename", "");
RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SoundSequence_filename_set");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH);
RNA_def_property_string_sdna(prop, NULL, "strip->dir");
RNA_def_property_ui_text(prop, "Directory", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
rna_def_input(srna);
@@ -810,7 +968,7 @@ static void rna_def_sound(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "volume");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Volume", "Playback volume of the sound");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
}
static void rna_def_effect(BlenderRNA *brna)
@@ -837,6 +995,7 @@ static void rna_def_plugin(BlenderRNA *brna)
RNA_def_property_string_sdna(prop, NULL, "name");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Filename", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
/* plugin properties need custom wrapping code like ID properties */
}
@@ -870,25 +1029,25 @@ static void rna_def_wipe(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "edgeWidth");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Blur Width", "Width of the blur edge, in percentage relative to the image size.");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "angle", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "angle");
RNA_def_property_range(prop, -90.0f, 90.0f);
RNA_def_property_ui_text(prop, "Angle", "Edge angle.");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "direction", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "forward");
RNA_def_property_enum_items(prop, wipe_direction_items);
RNA_def_property_ui_text(prop, "Direction", "Wipe direction.");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "transition_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "wipetype");
RNA_def_property_enum_items(prop, wipe_type_items);
RNA_def_property_ui_text(prop, "Transition Type", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
}
static void rna_def_glow(BlenderRNA *brna)
@@ -904,36 +1063,36 @@ static void rna_def_glow(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "fMini");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Threshold", "Minimum intensity to trigger a glow");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "clamp", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "fClamp");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Clamp", "rightness limit of intensity.");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "boost_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "fBoost");
RNA_def_property_range(prop, 0.0f, 10.0f);
RNA_def_property_ui_text(prop, "Boost Factor", "Brightness multiplier.");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "blur_distance", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "dDist");
RNA_def_property_range(prop, 0.5f, 20.0f);
RNA_def_property_ui_text(prop, "Blur Distance", "Radius of glow effect.");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "quality", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "dQuality");
RNA_def_property_range(prop, 1, 5);
RNA_def_property_ui_text(prop, "Quality", "Accuracy of the blur effect.");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "only_boost", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "bNoComp", 0);
RNA_def_property_ui_text(prop, "Only Boost", "Show the glow buffer only.");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
}
static void rna_def_transform(BlenderRNA *brna)
@@ -960,81 +1119,58 @@ static void rna_def_transform(BlenderRNA *brna)
prop= RNA_def_property(srna, "scale_start_x", PROP_FLOAT, PROP_UNSIGNED);
RNA_def_property_float_sdna(prop, NULL, "ScalexIni");
- RNA_def_property_ui_text(prop, "Scale Start X", "");
+ RNA_def_property_ui_text(prop, "Scale X", "");
RNA_def_property_ui_range(prop, 0, 10, 3, 10);
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "scale_start_y", PROP_FLOAT, PROP_UNSIGNED);
RNA_def_property_float_sdna(prop, NULL, "ScaleyIni");
- RNA_def_property_ui_text(prop, "Scale Start Y", "");
- RNA_def_property_ui_range(prop, 0, 10, 3, 10);
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
-
- prop= RNA_def_property(srna, "scale_end_x", PROP_FLOAT, PROP_UNSIGNED);
- RNA_def_property_float_sdna(prop, NULL, "ScalexFin");
- RNA_def_property_ui_text(prop, "Scale End X", "");
+ RNA_def_property_ui_text(prop, "Scale Y", "");
RNA_def_property_ui_range(prop, 0, 10, 3, 10);
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "scale_end_y", PROP_FLOAT, PROP_UNSIGNED);
- RNA_def_property_float_sdna(prop, NULL, "ScaleyFin");
- RNA_def_property_ui_text(prop, "Scale End Y", "");
- RNA_def_property_ui_range(prop, 0, 10, 3, 10);
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ prop= RNA_def_property(srna, "uniform_scale", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "uniform_scale", 0);
+ RNA_def_property_ui_text(prop, "Uniform Scale", "Scale uniformly, preserving aspect ratio.");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "translate_start_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "xIni");
- RNA_def_property_ui_text(prop, "Translate Start X", "");
+ RNA_def_property_ui_text(prop, "Translate X", "");
RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10);
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "translate_start_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "yIni");
- RNA_def_property_ui_text(prop, "Translate Start Y", "");
- RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10);
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
-
- prop= RNA_def_property(srna, "translate_end_x", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, NULL, "xFin");
- RNA_def_property_ui_text(prop, "Translate End X", "");
+ RNA_def_property_ui_text(prop, "Translate Y", "");
RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10);
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
-
- prop= RNA_def_property(srna, "translate_end_y", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, NULL, "yFin");
- RNA_def_property_ui_text(prop, "Translate End Y", "");
- RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10);
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "rotation_start", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "rotIni");
- RNA_def_property_range(prop, 0.0f, 360.0f);
- RNA_def_property_ui_text(prop, "Rotation Start", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
-
- prop= RNA_def_property(srna, "rotation_end", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, NULL, "rotFin");
- RNA_def_property_range(prop, 0.0f, 360.0f);
- RNA_def_property_ui_text(prop, "Rotation End", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_range(prop, -360.0f, 360.0f);
+ RNA_def_property_ui_text(prop, "Rotation", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "translation_unit", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "percent");
+ RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* not meant to be animated */
RNA_def_property_enum_items(prop, translation_unit_items);
RNA_def_property_ui_text(prop, "Translation Unit", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
prop= RNA_def_property(srna, "interpolation", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, interpolation_items);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* not meant to be animated */
RNA_def_property_ui_text(prop, "Interpolation", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
}
static void rna_def_solid_color(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
-
+
srna = RNA_def_struct(brna, "ColorSequence", "EffectSequence");
RNA_def_struct_ui_text(srna, "Color Sequence", "Sequence strip creating an image filled with a single color.");
RNA_def_struct_sdna_from(srna, "SolidColorVars", "effectdata");
@@ -1042,7 +1178,7 @@ static void rna_def_solid_color(BlenderRNA *brna)
prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "col");
RNA_def_property_ui_text(prop, "Color", "");
- RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
}
static void rna_def_speed_control(BlenderRNA *brna)
@@ -1059,21 +1195,25 @@ static void rna_def_speed_control(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */
RNA_def_property_ui_text(prop, "Global Speed", "");
RNA_def_property_ui_range(prop, 0.0f, 100.0f, 1, 0);
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
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, "F-Curve Velocity", "Interpret the F-Curve value as a velocity instead of a frame number.");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
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.");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
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, "F-Curve Compress Y", "Scale F-Curve value to get the target frame number, F-Curve value runs from 0.0 to 1.0.");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
}
-void RNA_def_sequence(BlenderRNA *brna)
+void RNA_def_sequencer(BlenderRNA *brna)
{
rna_def_strip_element(brna);
rna_def_strip_proxy(brna);
diff --git a/source/blender/makesrna/intern/rna_smoke.c b/source/blender/makesrna/intern/rna_smoke.c
index e302ea90a8a..11b1e80865e 100644
--- a/source/blender/makesrna/intern/rna_smoke.c
+++ b/source/blender/makesrna/intern/rna_smoke.c
@@ -49,33 +49,33 @@
#include "ED_object.h"
-static void rna_Smoke_update(bContext *C, PointerRNA *ptr)
+static void rna_Smoke_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
DAG_id_flush_update(ptr->id.data, OB_RECALC_DATA);
}
-static void rna_Smoke_dependency_update(bContext *C, PointerRNA *ptr)
+static void rna_Smoke_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- rna_Smoke_update(C, ptr);
- DAG_scene_sort(CTX_data_scene(C));
+ rna_Smoke_update(bmain, scene, ptr);
+ DAG_scene_sort(scene);
}
-static void rna_Smoke_reset(bContext *C, PointerRNA *ptr)
+static void rna_Smoke_reset(Main *bmain, Scene *scene, PointerRNA *ptr)
{
SmokeDomainSettings *settings = (SmokeDomainSettings*)ptr->data;
smokeModifier_reset(settings->smd);
- rna_Smoke_update(C, ptr);
+ rna_Smoke_update(bmain, scene, ptr);
}
-static void rna_Smoke_reset_dependancy(bContext *C, PointerRNA *ptr)
+static void rna_Smoke_reset_dependancy(Main *bmain, Scene *scene, PointerRNA *ptr)
{
SmokeDomainSettings *settings = (SmokeDomainSettings*)ptr->data;
smokeModifier_reset(settings->smd);
- rna_Smoke_dependency_update(C, ptr);
+ rna_Smoke_dependency_update(bmain, scene, ptr);
}
static char *rna_SmokeDomainSettings_path(PointerRNA *ptr)
diff --git a/source/blender/makesrna/intern/rna_sound.c b/source/blender/makesrna/intern/rna_sound.c
index 38e4d850c68..7fc209bfc5f 100644
--- a/source/blender/makesrna/intern/rna_sound.c
+++ b/source/blender/makesrna/intern/rna_sound.c
@@ -37,9 +37,9 @@
#include "BKE_sound.h"
#include "BKE_context.h"
-static void rna_Sound_filename_update(bContext *C, PointerRNA *ptr)
+static void rna_Sound_filename_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- sound_load(CTX_data_main(C), (bSound*)ptr->data);
+ sound_load(bmain, (bSound*)ptr->data);
}
static int rna_Sound_caching_get(PointerRNA *ptr)
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index ac93f75156f..2fd0bf1810a 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -83,6 +83,13 @@ static EnumPropertyItem transform_orientation_items[] = {
{V3D_MANIP_CUSTOM, "CUSTOM", 0, "Custom", "Use a custom transform orientation"},
{0, NULL, 0, NULL, NULL}};
+EnumPropertyItem autosnap_items[] = {
+ {SACTSNAP_OFF, "NONE", 0, "No Auto-Snap", ""},
+ {SACTSNAP_STEP, "STEP", 0, "Time Step", "Snap to 1.0 frame/second intervals."},
+ {SACTSNAP_FRAME, "FRAME", 0, "Nearest Frame", "Snap to actual frames/seconds (nla-action time)."},
+ {SACTSNAP_MARKER, "MARKER", 0, "Nearest Marker", "Snap to nearest marker."},
+ {0, NULL, 0, NULL, NULL}};
+
#ifdef RNA_RUNTIME
#include "DNA_anim_types.h"
@@ -93,10 +100,13 @@ static EnumPropertyItem transform_orientation_items[] = {
#include "BKE_brush.h"
#include "BKE_colortools.h"
#include "BKE_context.h"
+#include "BKE_depsgraph.h"
#include "BKE_paint.h"
#include "ED_image.h"
#include "ED_screen.h"
+#include "ED_view3d.h"
+#include "ED_sequencer.h"
#include "IMB_imbuf_types.h"
@@ -202,6 +212,37 @@ EnumPropertyItem *rna_TransformOrientation_itemf(bContext *C, PointerRNA *ptr, i
return item;
}
+/* Space 3D View */
+static void rna_Space3DView_lock_camera_and_layers_set(PointerRNA *ptr, int value)
+{
+ View3D *v3d= (View3D*)(ptr->data);
+ bScreen *sc= (bScreen*)ptr->id.data;
+
+ v3d->scenelock = value;
+
+ if(value) {
+ int bit;
+ v3d->lay= sc->scene->lay;
+ /* seek for layact */
+ bit= 0;
+ while(bit<32) {
+ if(v3d->lay & (1<<bit)) {
+ v3d->layact= 1<<bit;
+ break;
+ }
+ bit++;
+ }
+ v3d->camera= sc->scene->camera;
+ }
+}
+
+static void rna_Space3DView_layer_set(PointerRNA *ptr, const int *values)
+{
+ View3D *v3d= (View3D*)(ptr->data);
+
+ v3d->lay= ED_view3d_scene_layer_set(v3d->lay, values);
+}
+
/* Space Image Editor */
static PointerRNA rna_SpaceImageEditor_uvedit_get(PointerRNA *ptr)
@@ -209,12 +250,9 @@ static PointerRNA rna_SpaceImageEditor_uvedit_get(PointerRNA *ptr)
return rna_pointer_inherit_refine(ptr, &RNA_SpaceUVEditor, ptr->data);
}
-static void rna_SpaceImageEditor_paint_update(bContext *C, PointerRNA *ptr)
+static void rna_SpaceImageEditor_paint_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- Scene *scene= CTX_data_scene(C);
-
- if(scene)
- paint_init(&scene->toolsettings->imapaint.paint, PAINT_CURSOR_TEXTURE_PAINT);
+ paint_init(&scene->toolsettings->imapaint.paint, PAINT_CURSOR_TEXTURE_PAINT);
}
static int rna_SpaceImageEditor_show_render_get(PointerRNA *ptr)
@@ -282,7 +320,7 @@ static EnumPropertyItem *rna_SpaceImageEditor_draw_channels_itemf(bContext *C, P
return item;
}
-static void rna_SpaceImageEditor_curves_update(bContext *C, PointerRNA *ptr)
+static void rna_SpaceImageEditor_curves_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
SpaceImage *sima= (SpaceImage*)ptr->data;
ImBuf *ibuf;
@@ -292,7 +330,7 @@ static void rna_SpaceImageEditor_curves_update(bContext *C, PointerRNA *ptr)
curvemapping_do_ibuf(sima->cumap, ibuf);
ED_space_image_release_buffer(sima, lock);
- WM_event_add_notifier(C, NC_IMAGE, sima->image);
+ WM_main_add_notifier(NC_IMAGE, sima->image);
}
@@ -392,10 +430,12 @@ static void rna_View3D_display_background_image_set(PointerRNA *ptr, int value)
/* Space Time */
-static void rna_SpaceTime_redraw_update(bContext *C, PointerRNA *ptr)
+static void rna_SpaceTime_redraw_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
SpaceTime *st= (SpaceTime*)ptr->data;
- ED_screen_animation_timer_update(C, st->redraws);
+ bScreen *screen= (bScreen*)ptr->id.data;
+
+ ED_screen_animation_timer_update(screen, st->redraws);
}
/* Space Dopesheet */
@@ -406,10 +446,10 @@ static void rna_SpaceDopeSheetEditor_action_set(PointerRNA *ptr, PointerRNA valu
saction->action= value.data;
}
-static void rna_SpaceDopeSheetEditor_action_update(bContext *C, PointerRNA *ptr)
+static void rna_SpaceDopeSheetEditor_action_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
SpaceAction *saction= (SpaceAction*)(ptr->data);
- Object *obact= CTX_data_active_object(C);
+ Object *obact= (scene->basact)? scene->basact->object: NULL;
/* we must set this action to be the one used by active object (if not pinned) */
if(obact && saction->pin == 0) {
@@ -418,9 +458,38 @@ static void rna_SpaceDopeSheetEditor_action_update(bContext *C, PointerRNA *ptr)
/* set action */
adt->action= saction->action;
id_us_plus(&adt->action->id);
+
+ /* force depsgraph flush too */
+ DAG_id_flush_update(&obact->id, OB_RECALC_OB|OB_RECALC_DATA);
}
}
+static void rna_SpaceDopeSheetEditor_mode_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+ SpaceAction *saction= (SpaceAction*)(ptr->data);
+
+ /* special exception for ShapeKey Editor mode:
+ * enable 'show sliders' by default, since one of the main
+ * points of the ShapeKey Editor is to provide a one-stop shop
+ * for controlling the shapekeys, whose main control is the value
+ */
+ if (saction->mode == SACTCONT_SHAPEKEY)
+ saction->flag |= SACTION_SLIDERS;
+}
+
+static int rna_SpaceGraphEditor_has_ghost_curves_get(PointerRNA *ptr)
+{
+ SpaceIpo *sipo= (SpaceIpo*)(ptr->data);
+ return (sipo->ghostCurves.first != NULL);
+}
+
+static void rna_Sequencer_display_mode_update(bContext *C, PointerRNA *ptr)
+{
+ int view = RNA_int_get(ptr, "view_type");
+
+ ED_sequencer_update_view(C, view);
+}
+
#else
static void rna_def_space(BlenderRNA *brna)
@@ -603,12 +672,12 @@ static void rna_def_background_image(BlenderRNA *brna)
prop= RNA_def_property(srna, "offset_x", 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");
+ RNA_def_property_ui_text(prop, "X Offset", "Offsets image horizontally from the world origin");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
prop= RNA_def_property(srna, "offset_y", 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");
+ RNA_def_property_ui_text(prop, "Y Offset", "Offsets image vertically from the world origin");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
prop= RNA_def_property(srna, "size", PROP_FLOAT, PROP_NONE);
@@ -633,16 +702,16 @@ static void rna_def_space_3dview(BlenderRNA *brna)
{OB_BOUNDBOX, "BOUNDBOX", ICON_BBOX, "Bounding Box", "Display the object's local bounding boxes only"},
{OB_WIRE, "WIREFRAME", ICON_WIRE, "Wireframe", "Display the object as wire edges"},
{OB_SOLID, "SOLID", ICON_SOLID, "Solid", "Display the object solid, lit with default OpenGL lights"},
- {OB_SHADED, "SHADED", ICON_SMOOTH, "Shaded", "Display the object solid, with preview shading interpolated at vertices"},
+ //{OB_SHADED, "SHADED", ICON_SMOOTH, "Shaded", "Display the object solid, with preview shading interpolated at vertices"},
{OB_TEXTURE, "TEXTURED", ICON_POTATO, "Textured", "Display the object solid, with face-assigned textures"},
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem pivot_items[] = {
- {V3D_CENTER, "BOUNDING_BOX_CENTER", 0, "Bounding Box Center", ""},
- {V3D_CURSOR, "CURSOR", 0, "3D Cursor", ""},
- {V3D_LOCAL, "INDIVIDUAL_CENTERS", 0, "Individual Centers", ""},
- {V3D_CENTROID, "MEDIAN_POINT", 0, "Median Point", ""},
- {V3D_ACTIVE, "ACTIVE_ELEMENT", 0, "Active Element", ""},
+ {V3D_CENTER, "BOUNDING_BOX_CENTER", ICON_ROTATE, "Bounding Box Center", ""},
+ {V3D_CURSOR, "CURSOR", ICON_CURSOR, "3D Cursor", ""},
+ {V3D_LOCAL, "INDIVIDUAL_ORIGINS", ICON_ROTATECOLLECTION, "Individual Origins", ""},
+ {V3D_CENTROID, "MEDIAN_POINT", ICON_ROTATECENTER, "Median Point", ""},
+ {V3D_ACTIVE, "ACTIVE_ELEMENT", ICON_ROTACTIVE, "Active Element", ""},
{0, NULL, 0, NULL, NULL}};
srna= RNA_def_struct(brna, "Space3DView", "Space");
@@ -656,10 +725,16 @@ static void rna_def_space_3dview(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
prop= RNA_def_property(srna, "lock_object", PROP_POINTER, PROP_NONE);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
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");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
+ prop= RNA_def_property(srna, "lock_bone", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_sdna(prop, NULL, "ob_centre_bone");
+ RNA_def_property_ui_text(prop, "Lock Bone", "3D View center is locked to this bone's position");
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
+
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");
@@ -735,9 +810,9 @@ static void rna_def_space_3dview(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Outline Selected", "Show an outline highlight around selected objects in non-wireframe views.");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "all_object_centers", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "all_object_origins", 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.");
+ RNA_def_property_ui_text(prop, "All Object Origins", "Show the object origin center dot for all (selected and unselected) objects.");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
prop= RNA_def_property(srna, "relationship_lines", PROP_BOOLEAN, PROP_NONE);
@@ -750,6 +825,12 @@ static void rna_def_space_3dview(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Textured Solid", "Display face-assigned textures in solid view");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
+ prop= RNA_def_property(srna, "occlude_geometry", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_ZBUF_SELECT);
+ RNA_def_property_ui_text(prop, "Occlude Geometry", "Limit selection to visible (clipped with depth buffer)");
+ RNA_def_property_ui_icon(prop, ICON_ORTHO, 0);
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
+
prop= RNA_def_property(srna, "display_background_image", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, NULL, "rna_View3D_display_background_image_set");
RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_DISPBGPIC);
@@ -765,26 +846,31 @@ static void rna_def_space_3dview(BlenderRNA *brna)
prop= RNA_def_property(srna, "pivot_point_align", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_ALIGN);
RNA_def_property_ui_text(prop, "Align", "Manipulate object centers only.");
+ RNA_def_property_ui_icon(prop, ICON_ALIGN, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
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.");
+ RNA_def_property_ui_icon(prop, ICON_MANIPUL, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
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.");
+ RNA_def_property_ui_icon(prop, ICON_MAN_TRANS, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
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.");
+ RNA_def_property_ui_icon(prop, ICON_MAN_ROT, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
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.");
+ RNA_def_property_ui_icon(prop, ICON_MAN_SCALE, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
prop= RNA_def_property(srna, "transform_orientation", PROP_ENUM, PROP_NONE);
@@ -813,6 +899,26 @@ static void rna_def_space_3dview(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, "RegionView3D", "viewlock", RV3D_BOXCLIP);
RNA_def_property_ui_text(prop, "Clip", "");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
+
+ prop= RNA_def_property(srna, "lock_camera_and_layers", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "scenelock", 1);
+ RNA_def_property_boolean_funcs(prop, NULL, "rna_Space3DView_lock_camera_and_layers_set");
+ RNA_def_property_ui_text(prop, "Lock Camera and Layers", "Use the scene's active camera and layers in this view, rather than local layers.");
+ RNA_def_property_ui_icon(prop, ICON_LOCKVIEW_OFF, 1);
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
+
+ prop= RNA_def_property(srna, "visible_layers", PROP_BOOLEAN, PROP_LAYER_MEMBER);
+ RNA_def_property_boolean_sdna(prop, NULL, "lay", 1);
+ RNA_def_property_array(prop, 20);
+ RNA_def_property_boolean_funcs(prop, NULL, "rna_Space3DView_layer_set");
+ RNA_def_property_ui_text(prop, "Visible Layers", "Layers visible in this 3D View.");
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
+
+ prop= RNA_def_property(srna, "used_layers", PROP_BOOLEAN, PROP_LAYER_MEMBER);
+ RNA_def_property_boolean_sdna(prop, NULL, "lay_used", 1);
+ RNA_def_property_array(prop, 20);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Used Layers", "Layers that contain something.");
}
static void rna_def_space_buttons(BlenderRNA *brna)
@@ -944,7 +1050,6 @@ static void rna_def_space_image(BlenderRNA *brna)
/* update */
prop= RNA_def_property(srna, "update_automatically", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "lock", 0);
- RNA_def_property_ui_icon(prop, ICON_UNLOCKED, 1);
RNA_def_property_ui_text(prop, "Update Automatically", "Update other affected window spaces automatically to reflect changes during interactive operations such as transform.");
/* state */
@@ -971,8 +1076,13 @@ static void rna_def_space_sequencer(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
+ static EnumPropertyItem view_type_items[] = {
+ {SEQ_VIEW_SEQUENCE, "SEQUENCER", ICON_SEQ_SEQUENCER, "Sequencer", ""},
+ {SEQ_VIEW_PREVIEW, "PREVIEW", ICON_SEQ_PREVIEW, "Image Preview", ""},
+ {SEQ_VIEW_SEQUENCE_PREVIEW, "SEQUENCER_PREVIEW", ICON_SEQ_SEQUENCER, "Sequencer and Image Preview", ""},
+ {0, NULL, 0, NULL, NULL}};
+
static EnumPropertyItem display_mode_items[] = {
- {SEQ_DRAW_SEQUENCE, "SEQUENCER", ICON_SEQ_SEQUENCER, "Sequencer", ""},
{SEQ_DRAW_IMG_IMBUF, "IMAGE", ICON_SEQ_PREVIEW, "Image Preview", ""},
{SEQ_DRAW_IMG_WAVEFORM, "WAVEFORM", ICON_SEQ_LUMA_WAVEFORM, "Luma Waveform", ""},
{SEQ_DRAW_IMG_VECTORSCOPE, "VECTOR_SCOPE", ICON_SEQ_CHROMA_SCOPE, "Chroma Vectorscope", ""},
@@ -983,6 +1093,14 @@ static void rna_def_space_sequencer(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "SpaceSeq");
RNA_def_struct_ui_text(srna, "Space Sequence Editor", "Sequence editor space data.");
+ /* view type, fairly important */
+ prop= RNA_def_property(srna, "view_type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "view");
+ RNA_def_property_enum_items(prop, view_type_items);
+ RNA_def_property_ui_text(prop, "View Type", "The type of the Sequencere view (sequencer, preview or both).");
+ RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
+ RNA_def_property_update(prop, 0, "rna_Sequencer_display_mode_update");
+
/* display type, fairly important */
prop= RNA_def_property(srna, "display_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "mainb");
@@ -1031,7 +1149,7 @@ static void rna_def_space_sequencer(BlenderRNA *brna)
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_range(prop, 0, 32); // MAXSEQ --- todo, move from BKE_sequencer.h
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL);
prop= RNA_def_property(srna, "draw_overexposed", PROP_INT, PROP_NONE);
@@ -1158,14 +1276,14 @@ static void rna_def_space_dopesheet(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_pointer_funcs(prop, NULL, "rna_SpaceDopeSheetEditor_action_set", NULL);
RNA_def_property_ui_text(prop, "Action", "Action displayed and edited in this space.");
- RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, "rna_SpaceDopeSheetEditor_action_update");
+ RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, "rna_SpaceDopeSheetEditor_action_update");
/* mode */
prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "mode");
RNA_def_property_enum_items(prop, mode_items);
RNA_def_property_ui_text(prop, "Mode", "Editing context being displayed.");
- RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, NULL);
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, "rna_SpaceDopeSheetEditor_mode_update");
/* display */
prop= RNA_def_property(srna, "show_seconds", PROP_BOOLEAN, PROP_NONE);
@@ -1189,8 +1307,19 @@ static void rna_def_space_dopesheet(BlenderRNA *brna)
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SACTION_NOTRANSKEYCULL);
RNA_def_property_ui_text(prop, "AutoMerge Keyframes", "Show handles of Bezier control points.");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, NULL);
-
- // TODO... autosnap, dopesheet?
+
+ /* dopesheet */
+ prop= RNA_def_property(srna, "dopesheet", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "DopeSheet");
+ RNA_def_property_pointer_sdna(prop, NULL, "ads");
+ RNA_def_property_ui_text(prop, "DopeSheet", "Settings for filtering animation data.");
+
+ /* autosnap */
+ prop= RNA_def_property(srna, "autosnap", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "autosnap");
+ RNA_def_property_enum_items(prop, autosnap_items);
+ RNA_def_property_ui_text(prop, "Auto Snap", "Automatic time snapping settings for transformations.");
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, NULL);
}
static void rna_def_space_graph(BlenderRNA *brna)
@@ -1199,19 +1328,19 @@ static void rna_def_space_graph(BlenderRNA *brna)
PropertyRNA *prop;
static EnumPropertyItem mode_items[] = {
- {SIPO_MODE_ANIMATION, "FCURVES", 0, "F-Curves", ""},
+ {SIPO_MODE_ANIMATION, "FCURVES", 0, "F-Curve Editor", ""},
{SIPO_MODE_DRIVERS, "DRIVERS", 0, "Drivers", ""},
{0, NULL, 0, NULL, NULL}};
/* this is basically the same as the one for the 3D-View, but with some entries ommitted */
static EnumPropertyItem gpivot_items[] = {
- {V3D_CENTER, "BOUNDING_BOX_CENTER", 0, "Bounding Box Center", ""},
- {V3D_CURSOR, "CURSOR", 0, "2D Cursor", ""},
- {V3D_LOCAL, "INDIVIDUAL_CENTERS", 0, "Individual Centers", ""},
+ {V3D_CENTER, "BOUNDING_BOX_CENTER", ICON_ROTATE, "Bounding Box Center", ""},
+ {V3D_CURSOR, "CURSOR", ICON_CURSOR, "2D Cursor", ""},
+ {V3D_LOCAL, "INDIVIDUAL_ORIGINS", ICON_ROTATECOLLECTION, "Individual Centers", ""},
//{V3D_CENTROID, "MEDIAN_POINT", 0, "Median Point", ""},
//{V3D_ACTIVE, "ACTIVE_ELEMENT", 0, "Active Element", ""},
{0, NULL, 0, NULL, NULL}};
-
+
srna= RNA_def_struct(brna, "SpaceGraphEditor", "Space");
RNA_def_struct_sdna(srna, "SpaceIpo");
@@ -1242,7 +1371,7 @@ static void rna_def_space_graph(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
prop= RNA_def_property(srna, "show_handles", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", SIPO_NOHANDLES);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SIPO_NOHANDLES);
RNA_def_property_ui_text(prop, "Show Handles", "Show handles of Bezier control points.");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
@@ -1251,6 +1380,11 @@ static void rna_def_space_graph(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Only Selected Curve Keyframes", "Only keyframes of selected F-Curves are visible and editable.");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
+ prop= RNA_def_property(srna, "only_selected_keyframe_handles", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", SIPO_SELVHANDLESONLY);
+ RNA_def_property_ui_text(prop, "Only Selected Keyframes Handles", "Only show and edit handles of selected keyframes.");
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
+
/* editing */
prop= RNA_def_property(srna, "automerge_keyframes", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SIPO_NOTRANSKEYCULL);
@@ -1273,8 +1407,26 @@ static void rna_def_space_graph(BlenderRNA *brna)
RNA_def_property_enum_items(prop, gpivot_items);
RNA_def_property_ui_text(prop, "Pivot Point", "Pivot center for rotation/scaling.");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
+
+ /* dopesheet */
+ prop= RNA_def_property(srna, "dopesheet", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "DopeSheet");
+ RNA_def_property_pointer_sdna(prop, NULL, "ads");
+ RNA_def_property_ui_text(prop, "DopeSheet", "Settings for filtering animation data.");
+
+ /* autosnap */
+ prop= RNA_def_property(srna, "autosnap", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "autosnap");
+ RNA_def_property_enum_items(prop, autosnap_items);
+ RNA_def_property_ui_text(prop, "Auto Snap", "Automatic time snapping settings for transformations.");
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
- // TODO... autosnap, dopesheet?
+ /* readonly state info */
+ prop= RNA_def_property(srna, "has_ghost_curves", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", 0); /* XXX: hack to make this compile, since this property doesn't actually exist*/
+ RNA_def_property_boolean_funcs(prop, "rna_SpaceGraphEditor_has_ghost_curves_get", NULL);
+ RNA_def_property_ui_text(prop, "Has Ghost Curves", "Graph Editor instance has some ghost curves stored.");
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
}
static void rna_def_space_nla(BlenderRNA *brna)
@@ -1302,9 +1454,19 @@ static void rna_def_space_nla(BlenderRNA *brna)
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SNLA_NOSTRIPCURVES);
RNA_def_property_ui_text(prop, "Show Control Curves", "Show influence curves on strips.");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_NLA, NULL);
-
- /* editing */
- // TODO... autosnap, dopesheet?
+
+ /* dopesheet */
+ prop= RNA_def_property(srna, "dopesheet", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "DopeSheet");
+ RNA_def_property_pointer_sdna(prop, NULL, "ads");
+ RNA_def_property_ui_text(prop, "DopeSheet", "Settings for filtering animation data.");
+
+ /* autosnap */
+ prop= RNA_def_property(srna, "autosnap", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "autosnap");
+ RNA_def_property_enum_items(prop, autosnap_items);
+ RNA_def_property_ui_text(prop, "Auto Snap", "Automatic time snapping settings for transformations.");
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_NLA, NULL);
}
static void rna_def_space_time(BlenderRNA *brna)
@@ -1317,7 +1479,6 @@ static void rna_def_space_time(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Space Timeline Editor", "Timeline editor space data.");
/* Define Anim Playback Areas */
-
prop= RNA_def_property(srna, "play_top_left", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "redraws", TIME_REGION);
RNA_def_property_ui_text(prop, "Top-Left 3D Window", "");
@@ -1353,17 +1514,16 @@ static void rna_def_space_time(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Node Windows", "");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, "rna_SpaceTime_redraw_update");
- /* Other options */
-
- prop= RNA_def_property(srna, "continue_physics", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "redraws", TIME_CONTINUE_PHYSICS);
- RNA_def_property_ui_text(prop, "Continue Physics", "During playblack, continue physics simulations regardless of the frame number");
- RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, NULL);
-
+ /* Other options */
prop= RNA_def_property(srna, "only_selected", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TIME_ONLYACTSEL);
RNA_def_property_ui_text(prop, "Only Selected channels", "Show keyframes only from active/selected channels.");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, NULL);
+
+ prop= RNA_def_property(srna, "show_cframe_indicator", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", TIME_CFRA_NUM);
+ RNA_def_property_ui_text(prop, "Show Frame Number Indicator", "Show frame number beside the current frame indicator line.");
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, NULL);
}
static void rna_def_console_line(BlenderRNA *brna)
diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c
index ceb78d8cddf..19d33465ceb 100644
--- a/source/blender/makesrna/intern/rna_texture.c
+++ b/source/blender/makesrna/intern/rna_texture.c
@@ -106,20 +106,21 @@ static StructRNA *rna_Texture_refine(struct PointerRNA *ptr)
}
}
-static void rna_Texture_update(bContext *C, PointerRNA *ptr)
+static void rna_Texture_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Tex *tex= ptr->id.data;
DAG_id_flush_update(&tex->id, 0);
- WM_event_add_notifier(C, NC_TEXTURE, tex);
+ WM_main_add_notifier(NC_TEXTURE, tex);
}
-static void rna_Texture_nodes_update(bContext *C, PointerRNA *ptr)
+/* Used for Texture Properties, used (also) for/in Nodes */
+static void rna_Texture_nodes_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Tex *tex= ptr->id.data;
DAG_id_flush_update(&tex->id, 0);
- WM_event_add_notifier(C, NC_TEXTURE|ND_NODES, tex);
+ WM_main_add_notifier(NC_TEXTURE|ND_NODES, tex);
}
static void rna_Texture_type_set(PointerRNA *ptr, int value)
@@ -139,7 +140,7 @@ static void rna_Texture_type_set(PointerRNA *ptr, int value)
tex->type = value;
}
-void rna_TextureSlot_update(bContext *C, PointerRNA *ptr)
+void rna_TextureSlot_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
ID *id= ptr->id.data;
@@ -147,16 +148,16 @@ void rna_TextureSlot_update(bContext *C, PointerRNA *ptr)
switch(GS(id->name)) {
case ID_MA:
- WM_event_add_notifier(C, NC_MATERIAL|ND_SHADING, id);
+ WM_main_add_notifier(NC_MATERIAL|ND_SHADING, id);
break;
case ID_WO:
- WM_event_add_notifier(C, NC_WORLD, id);
+ WM_main_add_notifier(NC_WORLD, id);
break;
case ID_LA:
- WM_event_add_notifier(C, NC_LAMP|ND_LIGHTING, id);
+ WM_main_add_notifier(NC_LAMP|ND_LIGHTING, id);
break;
case ID_BR:
- WM_event_add_notifier(C, NC_BRUSH, id);
+ WM_main_add_notifier(NC_BRUSH, id);
break;
}
}
@@ -784,25 +785,25 @@ static void rna_def_texture_clouds(BlenderRNA *brna)
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, 0, "rna_Texture_update");
+ RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
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, 0, "rna_Texture_update");
+ RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
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, 0, "rna_Texture_update");
+ RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
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, 0, "rna_Texture_update");
+ RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
prop= RNA_def_property(srna, "nabla", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.001, 0.1);
@@ -851,25 +852,25 @@ static void rna_def_texture_wood(BlenderRNA *brna)
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, 0, "rna_Texture_update");
+ RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
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, 0, "rna_Texture_update");
+ RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
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, 0, "rna_Texture_update");
+ RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
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, 0, "rna_Texture_update");
+ RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
prop= RNA_def_property(srna, "nabla", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.001, 0.1);
@@ -925,25 +926,25 @@ static void rna_def_texture_marble(BlenderRNA *brna)
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, 0, "rna_Texture_update");
+ RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
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, 0, "rna_Texture_update");
+ RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
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, 0, "rna_Texture_update");
+ RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
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, 0, "rna_Texture_update");
+ RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
prop= RNA_def_property(srna, "nabla", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.001, 0.1);
@@ -1005,13 +1006,13 @@ 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, 0, "rna_Texture_update");
+ RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
prop= RNA_def_property(srna, "flip_axis", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
RNA_def_property_enum_items(prop, prop_flip_axis_items);
RNA_def_property_ui_text(prop, "Flip Axis", "Flips the texture's X and Y axis");
- RNA_def_property_update(prop, 0, "rna_Texture_update");
+ RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
}
@@ -1500,13 +1501,13 @@ static void rna_def_texture_distorted_noise(BlenderRNA *brna)
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 Basis", "Sets the noise basis used for turbulence");
- RNA_def_property_update(prop, 0, "rna_Texture_update");
+ RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
prop= RNA_def_property(srna, "noise_distortion", 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 Distortion", "Sets the noise basis for the distortion");
- RNA_def_property_update(prop, 0, "rna_Texture_update");
+ RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
prop= RNA_def_property(srna, "nabla", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.001, 0.1);
diff --git a/source/blender/makesrna/intern/rna_ui.c b/source/blender/makesrna/intern/rna_ui.c
index 1bb7fe720a6..cbd524680c1 100644
--- a/source/blender/makesrna/intern/rna_ui.c
+++ b/source/blender/makesrna/intern/rna_ui.c
@@ -145,7 +145,7 @@ static void rna_Panel_unregister(const bContext *C, StructRNA *type)
/* update while blender is running */
if(C)
- WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
+ WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL);
}
static StructRNA *rna_Panel_register(const bContext *C, ReportList *reports, void *data, const char *identifier, StructValidateFunc validate, StructCallbackFunc call, StructFreeFunc free)
@@ -163,6 +163,11 @@ static StructRNA *rna_Panel_register(const bContext *C, ReportList *reports, voi
/* validate the python class */
if(validate(&dummyptr, data, have_function) != 0)
return NULL;
+
+ if(strlen(identifier) >= sizeof(dummypt.idname)) {
+ BKE_reportf(reports, RPT_ERROR, "registering panel class: '%s' is too long, maximum length is %d.", identifier, sizeof(dummypt.idname));
+ return NULL;
+ }
if(!(art=region_type_find(reports, dummypt.space_type, dummypt.region_type)))
return NULL;
@@ -196,7 +201,7 @@ static StructRNA *rna_Panel_register(const bContext *C, ReportList *reports, voi
/* update while blender is running */
if(C)
- WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
+ WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL);
return pt->ext.srna;
}
@@ -242,7 +247,7 @@ static void rna_Header_unregister(const bContext *C, StructRNA *type)
/* update while blender is running */
if(C)
- WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
+ WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL);
}
static StructRNA *rna_Header_register(const bContext *C, ReportList *reports, void *data, const char *identifier, StructValidateFunc validate, StructCallbackFunc call, StructFreeFunc free)
@@ -260,7 +265,12 @@ static StructRNA *rna_Header_register(const bContext *C, ReportList *reports, vo
/* validate the python class */
if(validate(&dummyhtr, data, have_function) != 0)
return NULL;
-
+
+ if(strlen(identifier) >= sizeof(dummyht.idname)) {
+ BKE_reportf(reports, RPT_ERROR, "registering header class: '%s' is too long, maximum length is %d.", identifier, sizeof(dummyht.idname));
+ return NULL;
+ }
+
if(!(art=region_type_find(reports, dummyht.space_type, RGN_TYPE_HEADER)))
return NULL;
@@ -289,7 +299,7 @@ static StructRNA *rna_Header_register(const bContext *C, ReportList *reports, vo
/* update while blender is running */
if(C)
- WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
+ WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL);
return ht->ext.srna;
}
@@ -356,7 +366,7 @@ static void rna_Menu_unregister(const bContext *C, StructRNA *type)
/* update while blender is running */
if(C)
- WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
+ WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL);
}
static StructRNA *rna_Menu_register(const bContext *C, ReportList *reports, void *data, const char *identifier, StructValidateFunc validate, StructCallbackFunc call, StructFreeFunc free)
@@ -373,6 +383,11 @@ static StructRNA *rna_Menu_register(const bContext *C, ReportList *reports, void
/* validate the python class */
if(validate(&dummymtr, data, have_function) != 0)
return NULL;
+
+ if(strlen(identifier) >= sizeof(dummymt.idname)) {
+ BKE_reportf(reports, RPT_ERROR, "registering menu class: '%s' is too long, maximum length is %d.", identifier, sizeof(dummymt.idname));
+ return NULL;
+ }
/* check if we have registered this menu type before, and remove it */
mt= WM_menutype_find(dummymt.idname, TRUE);
@@ -396,7 +411,7 @@ static StructRNA *rna_Menu_register(const bContext *C, ReportList *reports, void
/* update while blender is running */
if(C)
- WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
+ WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL);
return mt->ext.srna;
}
diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c
index 025c8691652..67383074497 100644
--- a/source/blender/makesrna/intern/rna_ui_api.c
+++ b/source/blender/makesrna/intern/rna_ui_api.c
@@ -37,18 +37,25 @@
#ifdef RNA_RUNTIME
-static void rna_uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *propname, int expand, int slider, int toggle, int icon_only, int event, int full_event)
+static void rna_uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *propname, int expand, int slider, int toggle, int icon_only, int event, int full_event, int no_bg, int index)
{
+ PropertyRNA *prop= RNA_struct_find_property(ptr, propname);
int flag= 0;
+ if(!prop) {
+ printf("rna_uiItemR: property not found: %s\n", propname);
+ return;
+ }
+
flag |= (slider)? UI_ITEM_R_SLIDER: 0;
flag |= (expand)? UI_ITEM_R_EXPAND: 0;
flag |= (toggle)? UI_ITEM_R_TOGGLE: 0;
flag |= (icon_only)? UI_ITEM_R_ICON_ONLY: 0;
flag |= (event)? UI_ITEM_R_EVENT: 0;
flag |= (full_event)? UI_ITEM_R_FULL_EVENT: 0;
-
- uiItemR(layout, name, icon, ptr, propname, flag);
+ flag |= (no_bg)? UI_ITEM_R_NO_BG: 0;
+
+ uiItemFullR(layout, name, icon, ptr, prop, index, 0, flag);
}
static PointerRNA rna_uiItemO(uiLayout *layout, char *name, int icon, char *opname)
@@ -58,7 +65,7 @@ static PointerRNA rna_uiItemO(uiLayout *layout, char *name, int icon, char *opna
#else
-#define DEF_ICON(name) {name, #name, 0, #name, ""},
+#define DEF_ICON(name) {name, (#name)+5, 0, (#name)+5, ""},
static EnumPropertyItem icon_items[] = {
#include "UI_icons.h"
{0, NULL, 0, NULL, NULL}};
@@ -139,6 +146,7 @@ void RNA_api_ui_layout(StructRNA *srna)
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.0f, 0.0f, 1.0f, "Percentage", "Percentage of width to split at.", 0.0f, 1.0f);
+ RNA_def_boolean(func, "align", 0, "", "Align buttons to each other.");
/* items */
func= RNA_def_function(srna, "prop", "rna_uiItemR");
@@ -150,6 +158,8 @@ void RNA_api_ui_layout(StructRNA *srna)
RNA_def_boolean(func, "icon_only", 0, "", "Draw only icons in buttons, no text.");
RNA_def_boolean(func, "event", 0, "", "Use button to input key events.");
RNA_def_boolean(func, "full_event", 0, "", "Use button to input full events including modifiers.");
+ RNA_def_boolean(func, "no_bg", 0, "", "Don't draw the button itself, just the icon/text.");
+ RNA_def_int(func, "index", -1, -2, INT_MAX, "", "The index of this button, when set a single member of an array can be accessed, when set to -1 all array members are used.", -2, INT_MAX); /* RNA_NO_INDEX == -1 */
func= RNA_def_function(srna, "props_enum", "uiItemsEnumR");
api_ui_item_rna_common(func);
@@ -241,12 +251,17 @@ void RNA_api_ui_layout(StructRNA *srna)
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|PROP_RNAPTR);
-
+
/* templates */
func= RNA_def_function(srna, "template_header", "uiTemplateHeader");
RNA_def_function_flag(func, FUNC_USE_CONTEXT);
RNA_def_boolean(func, "menus", 1, "", "The header has menus, and should show menu expander.");
+ func= RNA_def_function(srna, "template_dopesheet_filter", "uiTemplateDopeSheetFilter");
+ RNA_def_function_flag(func, FUNC_USE_CONTEXT);
+ parm= RNA_def_pointer(func, "dopesheet", "DopeSheet", "", "DopeSheet settings holding filter options.");
+ RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR|PROP_NEVER_NULL);
+
func= RNA_def_function(srna, "template_ID", "uiTemplateID");
RNA_def_function_flag(func, FUNC_USE_CONTEXT);
api_ui_item_rna_common(func);
@@ -303,6 +318,12 @@ void RNA_api_ui_layout(StructRNA *srna)
func= RNA_def_function(srna, "template_layers", "uiTemplateLayers");
api_ui_item_rna_common(func);
+ parm= RNA_def_pointer(func, "used_layers_data", "AnyType", "", "Data from which to take property.");
+ RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR);
+ parm= RNA_def_string(func, "used_layers_property", "", 0, "", "Identifier of property in data.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ parm= RNA_def_int(func, "active_layer", 0, 0, INT_MAX, "Active Layer", "", 0, INT_MAX);
+ RNA_def_property_flag(parm, PROP_REQUIRED);
func= RNA_def_function(srna, "template_triColorSet", "uiTemplateTriColorSet");
api_ui_item_rna_common(func);
@@ -341,6 +362,12 @@ void RNA_api_ui_layout(StructRNA *srna)
func= RNA_def_function(srna, "template_header_3D", "uiTemplateHeader3D");
RNA_def_function_flag(func, FUNC_USE_CONTEXT);
+
+
+
+ func= RNA_def_function(srna, "introspect", "uiLayoutIntrospect");
+ parm= RNA_def_string(func, "string", "", 1024*1024, "Descr", "DESCR");
+ RNA_def_function_return(func, parm);
}
#endif
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index dfb1ccaa2b4..60c6cd61571 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -46,10 +46,11 @@
#include "BKE_DerivedMesh.h"
#include "BKE_depsgraph.h"
#include "DNA_object_types.h"
+// #include "GPU_draw.h"
-static void rna_userdef_update(bContext *C, PointerRNA *ptr)
+static void rna_userdef_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- WM_event_add_notifier(C, NC_WINDOW, NULL);
+ WM_main_add_notifier(NC_WINDOW, NULL);
}
#if 0
@@ -131,14 +132,13 @@ static PointerRNA rna_UserDef_system_get(PointerRNA *ptr)
return rna_pointer_inherit_refine(ptr, &RNA_UserPreferencesSystem, ptr->data);
}
-static void rna_UserDef_audio_update(bContext *C, PointerRNA *ptr)
+static void rna_UserDef_audio_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- sound_init(C);
+ sound_init();
}
-static void rna_UserDef_weight_color_update(bContext *C, PointerRNA *ptr)
+static void rna_UserDef_weight_color_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- Main *bmain= CTX_data_main(C);
Object *ob;
vDM_ColorBand_store((U.flag & USER_CUSTOM_RANGE) ? (&U.coba_weight):NULL);
@@ -148,13 +148,25 @@ static void rna_UserDef_weight_color_update(bContext *C, PointerRNA *ptr)
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
}
- rna_userdef_update(C, ptr);
+ rna_userdef_update(bmain, scene, ptr);
}
-static void rna_userdef_autosave_update(bContext *C, PointerRNA *ptr)
+// XXX - todo, this is not accessible from here and it only works when the userprefs are in the same window.
+// extern int GPU_default_lights(void);
+static void rna_UserDef_viewport_lights_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
- WM_autosave_init(C);
- rna_userdef_update(C, ptr);
+ // GPU_default_lights();
+ WM_main_add_notifier(NC_SPACE|ND_SPACE_VIEW3D, NULL);
+ rna_userdef_update(bmain, scene, ptr);
+}
+
+static void rna_userdef_autosave_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+ wmWindowManager *wm= bmain->wm.first;
+
+ if(wm)
+ WM_autosave_init(wm);
+ rna_userdef_update(bmain, scene, ptr);
}
#else
@@ -1606,21 +1618,25 @@ static void rna_def_userdef_solidlight(BlenderRNA *brna)
prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", 1);
RNA_def_property_ui_text(prop, "Enabled", "Enable this OpenGL light in solid draw mode.");
+ RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update");
prop= RNA_def_property(srna, "direction", PROP_FLOAT, PROP_DIRECTION);
RNA_def_property_float_sdna(prop, NULL, "vec");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Direction", "The direction that the OpenGL light is shining.");
+ RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update");
prop= RNA_def_property(srna, "diffuse_color", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "col");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Diffuse Color", "The diffuse color of the OpenGL light.");
+ RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update");
prop= RNA_def_property(srna, "specular_color", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "spec");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Specular Color", "The color of the lights specular highlight.");
+ RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update");
}
static void rna_def_userdef_view(BlenderRNA *brna)
@@ -1725,7 +1741,7 @@ static void rna_def_userdef_view(BlenderRNA *brna)
prop= RNA_def_property(srna, "rotate_around_selection", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_ORBIT_SELECTION);
- RNA_def_property_ui_text(prop, "Rotate Around Selection", "Use selection as the orbiting center.");
+ RNA_def_property_ui_text(prop, "Rotate Around Selection", "Use selection as the pivot point.");
/* select with */
@@ -1800,10 +1816,10 @@ static void rna_def_userdef_view(BlenderRNA *brna)
RNA_def_property_range(prop, 4, 40);
RNA_def_property_ui_text(prop, "Manipulator Hotspot", "Hotspot in pixels for clicking widget handles.");
- prop= RNA_def_property(srna, "object_center_size", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "object_origin_size", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "obcenter_dia");
RNA_def_property_range(prop, 4, 10);
- RNA_def_property_ui_text(prop, "Object Center Size", "Diameter in Pixels for Object/Lamp center display.");
+ RNA_def_property_ui_text(prop, "Object Origin Size", "Diameter in Pixels for Object/Lamp origin display.");
RNA_def_property_update(prop, 0, "rna_userdef_update");
@@ -1912,7 +1928,11 @@ static void rna_def_userdef_edit(BlenderRNA *brna)
prop= RNA_def_property(srna, "use_visual_keying", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "autokey_flag", AUTOKEY_FLAG_AUTOMATKEY);
RNA_def_property_ui_text(prop, "Visual Keying", "Use Visual keying automatically for constrained objects.");
-
+
+ prop= RNA_def_property(srna, "insertkey_xyz_to_rgb", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "autokey_flag", AUTOKEY_FLAG_XYZ2RGB);
+ RNA_def_property_ui_text(prop, "New F-Curve Colors - XYZ to RGB", "Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis.");
+
prop= RNA_def_property(srna, "new_interpolation_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, new_interpolation_types);
RNA_def_property_enum_sdna(prop, NULL, "ipo_new");
@@ -1977,9 +1997,9 @@ static void rna_def_userdef_edit(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_TEX);
RNA_def_property_ui_text(prop, "Duplicate Texture", "Causes texture data to be duplicated with the object.");
- prop= RNA_def_property(srna, "duplicate_ipo", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "duplicate_fcurve", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_IPO);
- RNA_def_property_ui_text(prop, "Duplicate Ipo", "Causes ipo data to be duplicated with the object.");
+ RNA_def_property_ui_text(prop, "Duplicate F-Curve", "Causes F-curve data to be duplicated with the object.");
prop= RNA_def_property(srna, "duplicate_action", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_ACT);
@@ -2278,26 +2298,21 @@ static void rna_def_userdef_input(BlenderRNA *brna)
{USER_TRACKBALL, "TRACKBALL", 0, "Trackball", "Use trackball style rotation in the viewport."},
{0, NULL, 0, NULL, NULL}};
- static EnumPropertyItem middle_mouse_mouse_items[] = {
- {0, "PAN", 0, "Pan", "Use the middle mouse button for panning the viewport."},
- {USER_VIEWMOVE, "ROTATE", 0, "Rotate", "Use the middle mouse button for rotation the viewport."},
- {0, NULL, 0, NULL, NULL}};
-
static EnumPropertyItem view_zoom_styles[] = {
{USER_ZOOM_CONT, "CONTINUE", 0, "Continue", "Old style zoom, continues while moving mouse up or down."},
{USER_ZOOM_DOLLY, "DOLLY", 0, "Dolly", "Zooms in and out based on vertical mouse movement."},
{USER_ZOOM_SCALE, "SCALE", 0, "Scale", "Zooms in and out like scaling the view, mouse movements relative to center."},
{0, NULL, 0, NULL, NULL}};
+
+ static EnumPropertyItem view_zoom_axes[] = {
+ {0, "VERTICAL", 0, "Vertical", "Zooms in and out based on vertical mouse movement."},
+ {USER_ZOOM_DOLLY_HORIZ, "HORIZONTAL", 0, "Horizontal", "Zooms in and out based on horizontal mouse movement."},
+ {0, NULL, 0, NULL, NULL}};
srna= RNA_def_struct(brna, "UserPreferencesInput", NULL);
RNA_def_struct_sdna(srna, "UserDef");
RNA_def_struct_nested(brna, srna, "UserPreferences");
RNA_def_struct_ui_text(srna, "Input", "Settings for input devices.");
-
- prop= RNA_def_property(srna, "middle_mouse", PROP_ENUM, PROP_NONE);
- RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
- RNA_def_property_enum_items(prop, middle_mouse_mouse_items);
- RNA_def_property_ui_text(prop, "Middle Mouse", "Use the middle mouse button to pan or zoom the view.");
prop= RNA_def_property(srna, "select_mouse", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
@@ -2309,6 +2324,15 @@ static void rna_def_userdef_input(BlenderRNA *brna)
RNA_def_property_enum_items(prop, view_zoom_styles);
RNA_def_property_ui_text(prop, "Viewport Zoom Style", "Which style to use for viewport scaling.");
+ prop= RNA_def_property(srna, "zoom_axis", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_bitflag_sdna(prop, NULL, "uiflag");
+ RNA_def_property_enum_items(prop, view_zoom_axes);
+ RNA_def_property_ui_text(prop, "Zoom Axis", "Axis of mouse movement to zoom in or out on.");
+
+ prop= RNA_def_property(srna, "invert_zoom_direction", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_ZOOM_INVERT);
+ RNA_def_property_ui_text(prop, "Invert Zoom Direction", "Invert the axis of mouse movement for zooming");
+
prop= RNA_def_property(srna, "view_rotation", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
RNA_def_property_enum_items(prop, view_rotation_items);
@@ -2316,7 +2340,7 @@ static void rna_def_userdef_input(BlenderRNA *brna)
prop= RNA_def_property(srna, "continuous_mouse", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_CONTINUOUS_MOUSE);
- RNA_def_property_ui_text(prop, "Continuous Grab", "Experimental option to allow moving the mouse outside the view");
+ RNA_def_property_ui_text(prop, "Continuous Grab", "Allow moving the mouse outside the view on some manipulations (transform, ui control drag).");
prop= RNA_def_property(srna, "ndof_pan_speed", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "ndof_pan");
@@ -2328,6 +2352,11 @@ static void rna_def_userdef_input(BlenderRNA *brna)
RNA_def_property_range(prop, 0, 200);
RNA_def_property_ui_text(prop, "NDof Rotation Speed", "The overall rotation speed of an NDOF device, as percent of standard.");
+ prop= RNA_def_property(srna, "double_click_time", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "dbl_click_time");
+ RNA_def_property_range(prop, 1, 1000);
+ RNA_def_property_ui_text(prop, "Double Click Timeout", "The time (in ms) for a double click.");
+
prop= RNA_def_property(srna, "emulate_3_button_mouse", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_TWOBUTTONMOUSE);
RNA_def_property_boolean_funcs(prop, NULL, "rna_userdef_emulate_set");
@@ -2343,6 +2372,15 @@ static void rna_def_userdef_filepaths(BlenderRNA *brna)
PropertyRNA *prop;
StructRNA *srna;
+ static EnumPropertyItem anim_player_presets[] = {
+ //{0, "INTERNAL", 0, "Internal", "Built-in animation player"}, // doesn't work yet!
+ {1, "BLENDER24", 0, "Blender 2.4", "Blender command line animation playback - path to Blender 2.4"},
+ {2, "DJV", 0, "Djv", "Open source frame player: http://djv.sourceforge.net"},
+ {3, "FRAMECYCLER", 0, "FrameCycler", "Frame player from IRIDAS"},
+ {4, "RV", 0, "rv", "Frame player from Tweak Software"},
+ {50, "CUSTOM", 0, "Custom", "Custom animation player executable path"},
+ {0, NULL, 0, NULL, NULL}};
+
srna= RNA_def_struct(brna, "UserPreferencesFilePaths", NULL);
RNA_def_struct_sdna(srna, "UserDef");
RNA_def_struct_nested(brna, srna, "UserPreferences");
@@ -2399,7 +2437,17 @@ static void rna_def_userdef_filepaths(BlenderRNA *brna)
prop= RNA_def_property(srna, "temporary_directory", PROP_STRING, PROP_DIRPATH);
RNA_def_property_string_sdna(prop, NULL, "tempdir");
RNA_def_property_ui_text(prop, "Temporary Directory", "The directory for storing temporary save files.");
+
+ prop= RNA_def_property(srna, "animation_player", PROP_STRING, PROP_DIRPATH);
+ RNA_def_property_string_sdna(prop, NULL, "anim_player");
+ RNA_def_property_ui_text(prop, "Animation Player", "Path to a custom animation/frame sequence player.");
+ prop= RNA_def_property(srna, "animation_player_preset", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "anim_player_preset");
+ RNA_def_property_enum_items(prop, anim_player_presets);
+ RNA_def_property_ui_text(prop, "Animation Player Preset", "Preset configs for external animation players");
+ RNA_def_property_enum_default(prop, 1); /* set default to blender 2.4 player until an internal one is back */
+
/* Autosave */
prop= RNA_def_property(srna, "save_version", PROP_INT, PROP_NONE);
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index 3233c1d8443..7abba3c004a 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -42,6 +42,8 @@ EnumPropertyItem event_keymouse_value_items[] = {
{KM_ANY, "ANY", 0, "Any", ""},
{KM_PRESS, "PRESS", 0, "Press", ""},
{KM_RELEASE, "RELEASE", 0, "Release", ""},
+ {KM_CLICK, "CLICK", 0, "Click", ""},
+ {KM_DBL_CLICK, "DOUBLE_CLICK", 0, "Double Click", ""},
{0, NULL, 0, NULL, NULL}};
EnumPropertyItem event_tweak_value_items[]= {
@@ -61,6 +63,7 @@ EnumPropertyItem event_value_items[] = {
{KM_NOTHING, "NOTHING", 0, "Nothing", ""},
{KM_PRESS, "PRESS", 0, "Press", ""},
{KM_RELEASE, "RELEASE", 0, "Release", ""},
+ {KM_CLICK, "CLICK", 0, "Click", ""},
{0, NULL, 0, NULL, NULL}};
EnumPropertyItem event_tweak_type_items[]= {
@@ -224,6 +227,7 @@ EnumPropertyItem event_type_items[] = {
{PAGEDOWNKEY, "PAGE_DOWN", 0, "Page Down", ""},
{ENDKEY, "END", 0, "End", ""},
{0, "", 0, NULL, NULL},
+ {WINDEACTIVATE, "WINDOW_DEACTIVATE", 0, "Window Deactivate", ""},
{TIMER, "TIMER", 0, "Timer", ""},
{TIMER0, "TIMER0", 0, "Timer 0", ""},
{TIMER1, "TIMER1", 0, "Timer 1", ""},
@@ -241,6 +245,25 @@ EnumPropertyItem keymap_modifiers_items[] = {
{2, "SECOND", 0, "Second", ""},
{0, NULL, 0, NULL, NULL}};
+EnumPropertyItem operator_return_items[] = {
+ {OPERATOR_RUNNING_MODAL, "RUNNING_MODAL", 0, "Running Modal", ""},
+ {OPERATOR_CANCELLED, "CANCELLED", 0, "Cancelled", ""},
+ {OPERATOR_FINISHED, "FINISHED", 0, "Finished", ""},
+ {OPERATOR_PASS_THROUGH, "PASS_THROUGH", 0, "Pass Through", ""}, // used as a flag
+ {0, NULL, 0, NULL, NULL}};
+
+/* flag/enum */
+EnumPropertyItem wm_report_items[] = {
+ {RPT_DEBUG, "DEBUG", 0, "Debug", ""},
+ {RPT_INFO, "INFO", 0, "Info", ""},
+ {RPT_OPERATOR, "OPERATOR", 0, "Operator", ""},
+ {RPT_WARNING, "WARNING", 0, "Warning", ""},
+ {RPT_ERROR, "ERROR", 0, "Error", ""},
+ {RPT_ERROR_INVALID_INPUT, "ERROR_INVALID_INPUT", 0, "Invalid Input", ""},\
+ {RPT_ERROR_INVALID_CONTEXT, "ERROR_INVALID_CONTEXT", 0, "Invalid Context", ""},
+ {RPT_ERROR_OUT_OF_MEMORY, "ERROR_OUT_OF_MEMORY", 0, "Out of Memory", ""},
+ {0, NULL, 0, NULL, NULL}};
+
#define KMI_TYPE_KEYBOARD 0
#define KMI_TYPE_MOUSE 1
#define KMI_TYPE_TWEAK 2
@@ -253,6 +276,8 @@ EnumPropertyItem keymap_modifiers_items[] = {
#include "BKE_idprop.h"
+#include "MEM_guardedalloc.h"
+
static wmOperator *rna_OperatorProperties_find_operator(PointerRNA *ptr)
{
wmWindowManager *wm= ptr->id.data;
@@ -305,6 +330,12 @@ static PointerRNA rna_Operator_properties_get(PointerRNA *ptr)
return rna_pointer_inherit_refine(ptr, op->type->srna, op->properties);
}
+static PointerRNA rna_OperatorTypeMacro_properties_get(PointerRNA *ptr)
+{
+ wmOperatorTypeMacro *otmacro= (wmOperatorTypeMacro*)ptr->data;
+ wmOperatorType *ot = WM_operatortype_exists(otmacro->idname);
+ return rna_pointer_inherit_refine(ptr, ot->srna, otmacro->properties);
+}
static void rna_Event_ascii_get(PointerRNA *ptr, char *value)
{
@@ -422,9 +453,9 @@ static EnumPropertyItem *rna_KeyMapItem_propvalue_itemf(bContext *C, PointerRNA
/* check user keymaps */
for(km=U.keymaps.first; km; km=km->next) {
- wmKeyMapItem *ki;
- for (ki=km->items.first; ki; ki=ki->next) {
- if (ki == ptr->data) {
+ wmKeyMapItem *kmi;
+ for (kmi=km->items.first; kmi; kmi=kmi->next) {
+ if (kmi == ptr->data) {
if (!km->modal_items) {
if (!WM_keymap_user_init(wm, km)) {
return keymap_propvalue_items; /* ERROR */
@@ -440,9 +471,9 @@ static EnumPropertyItem *rna_KeyMapItem_propvalue_itemf(bContext *C, PointerRNA
for(km=kc->keymaps.first; km; km=km->next) {
/* only check if it's a modal keymap */
if (km->modal_items) {
- wmKeyMapItem *ki;
- for (ki=km->items.first; ki; ki=ki->next) {
- if (ki == ptr->data) {
+ wmKeyMapItem *kmi;
+ for (kmi=km->items.first; kmi; kmi=kmi->next) {
+ if (kmi == ptr->data) {
return km->modal_items;
}
}
@@ -504,36 +535,6 @@ static void rna_WindowManager_active_keyconfig_set(PointerRNA *ptr, PointerRNA v
BLI_strncpy(U.keyconfigstr, kc->idname, sizeof(U.keyconfigstr));
}
-static PointerRNA rna_WindowManager_active_keymap_get(PointerRNA *ptr)
-{
- wmWindowManager *wm= ptr->data;
- wmKeyMap *km= NULL;
-
- if(wm->defaultconf) {
- km= BLI_findlink(&wm->defaultconf->keymaps, wm->defaultactmap);
-
- if(!km)
- km= wm->defaultconf->keymaps.first;
- }
-
- return rna_pointer_inherit_refine(ptr, &RNA_KeyMap, WM_keymap_active(wm, km));
-}
-
-static void rna_WindowManager_active_keymap_set(PointerRNA *ptr, PointerRNA value)
-{
- wmWindowManager *wm= ptr->data;
- wmKeyMap *km= value.data;
- int index;
-
- if(wm->defaultconf && km) {
- km= WM_keymap_find(wm->defaultconf, km->idname, km->spaceid, km->regionid);
- index= BLI_findindex(&wm->defaultconf->keymaps, km);
-
- if(index != -1) wm->defaultactmap= index;
- else wm->defaultactmap= 0;
- }
-}
-
static void rna_wmKeyMapItem_idname_get(PointerRNA *ptr, char *value)
{
wmKeyMapItem *kmi= ptr->data;
@@ -555,7 +556,217 @@ static void rna_wmKeyMapItem_idname_set(PointerRNA *ptr, const char *value)
char idname[OP_MAX_TYPENAME];
WM_operator_bl_idname(idname, value);
- BLI_strncpy(kmi->idname, idname, sizeof(kmi->idname));
+
+ if(strcmp(idname, kmi->idname) != 0) {
+ BLI_strncpy(kmi->idname, idname, sizeof(kmi->idname));
+
+ WM_keymap_properties_reset(kmi);
+ }
+}
+
+static void rna_wmKeyMapItem_name_get(PointerRNA *ptr, char *value)
+{
+ wmKeyMapItem *kmi= ptr->data;
+ wmOperatorType *ot= WM_operatortype_find(kmi->idname, 1);
+
+ if (ot)
+ strcpy(value, ot->name);
+}
+
+static int rna_wmKeyMapItem_name_length(PointerRNA *ptr)
+{
+ wmKeyMapItem *kmi= ptr->data;
+ wmOperatorType *ot= WM_operatortype_find(kmi->idname, 1);
+
+ if (ot)
+ return strlen(ot->name);
+ else
+ return 0;
+}
+
+static void rna_Operator_unregister(const bContext *C, StructRNA *type)
+{
+ char *idname;
+ wmOperatorType *ot= RNA_struct_blender_type_get(type);
+
+ if(!ot)
+ return;
+
+ RNA_struct_free_extension(type, &ot->ext);
+
+ idname= ot->idname;
+ WM_operatortype_remove(ot->idname);
+ MEM_freeN(idname);
+
+ // RNA_struct_free(&BLENDER_RNA, type); // WM_operatortype_remove calls this
+
+ /* update while blender is running */
+ if(C)
+ WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL);
+}
+
+static int operator_poll(bContext *C, wmOperatorType *ot)
+{
+ PointerRNA ptr;
+ ParameterList list;
+ FunctionRNA *func;
+ void *ret;
+ int visible;
+
+ RNA_pointer_create(NULL, ot->ext.srna, NULL, &ptr); /* dummy */
+ func= RNA_struct_find_function(&ptr, "poll");
+
+ RNA_parameter_list_create(&list, &ptr, func);
+ RNA_parameter_set_lookup(&list, "context", &C);
+ ot->ext.call(&ptr, func, &list);
+
+ RNA_parameter_get_lookup(&list, "visible", &ret);
+ visible= *(int*)ret;
+
+ RNA_parameter_list_free(&list);
+
+ return visible;
+}
+
+static int operator_exec(bContext *C, wmOperator *op)
+{
+ PointerRNA opr;
+ ParameterList list;
+ FunctionRNA *func;
+ void *ret;
+ int result;
+
+ RNA_pointer_create(&CTX_wm_screen(C)->id, op->type->ext.srna, op, &opr);
+ func= RNA_struct_find_function(&opr, "execute");
+
+ RNA_parameter_list_create(&list, &opr, func);
+ RNA_parameter_set_lookup(&list, "context", &C);
+ op->type->ext.call(&opr, func, &list);
+
+ RNA_parameter_get_lookup(&list, "result", &ret);
+ result= *(int*)ret;
+
+ RNA_parameter_list_free(&list);
+
+ return result;
+}
+
+static int operator_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ PointerRNA opr;
+ ParameterList list;
+ FunctionRNA *func;
+ void *ret;
+ int result;
+
+ RNA_pointer_create(&CTX_wm_screen(C)->id, op->type->ext.srna, op, &opr);
+ func= RNA_struct_find_function(&opr, "invoke");
+
+ RNA_parameter_list_create(&list, &opr, func);
+ RNA_parameter_set_lookup(&list, "context", &C);
+ RNA_parameter_set_lookup(&list, "event", &event);
+ op->type->ext.call(&opr, func, &list);
+
+ RNA_parameter_get_lookup(&list, "result", &ret);
+ result= *(int*)ret;
+
+ RNA_parameter_list_free(&list);
+
+ return result;
+}
+
+static void operator_draw(bContext *C, wmOperator *op)
+{
+ PointerRNA opr;
+ ParameterList list;
+ FunctionRNA *func;
+
+ RNA_pointer_create(&CTX_wm_screen(C)->id, op->type->ext.srna, op, &opr);
+ func= RNA_struct_find_function(&opr, "draw");
+
+ RNA_parameter_list_create(&list, &opr, func);
+ RNA_parameter_set_lookup(&list, "context", &C);
+ op->type->ext.call(&opr, func, &list);
+
+ RNA_parameter_list_free(&list);
+}
+
+void operator_wrapper(wmOperatorType *ot, void *userdata);
+
+static char _operator_idname[OP_MAX_TYPENAME];
+static char _operator_name[OP_MAX_TYPENAME];
+static char _operator_descr[1024];
+static StructRNA *rna_Operator_register(const bContext *C, ReportList *reports, void *data, const char *identifier, StructValidateFunc validate, StructCallbackFunc call, StructFreeFunc free)
+{
+ wmOperatorType dummyot = {0};
+ wmOperator dummyop= {0};
+ PointerRNA dummyotr;
+ int have_function[4];
+
+ /* setup dummy operator & operator type to store static properties in */
+ dummyop.type= &dummyot;
+ dummyot.idname= _operator_idname; /* only assigne the pointer, string is NULL'd */
+ dummyot.name= _operator_name; /* only assigne the pointer, string is NULL'd */
+ dummyot.description= _operator_descr; /* only assigne the pointer, string is NULL'd */
+ RNA_pointer_create(NULL, &RNA_Operator, &dummyop, &dummyotr);
+
+ /* validate the python class */
+ if(validate(&dummyotr, data, have_function) != 0)
+ return NULL;
+
+ { /* convert foo.bar to FOO_OT_bar
+ * allocate the description and the idname in 1 go */
+ int idlen = strlen(_operator_idname) + 4;
+ int namelen = strlen(_operator_name) + 1;
+ int desclen = strlen(_operator_descr) + 1;
+ char *ch, *ch_arr;
+ ch_arr= ch= MEM_callocN(sizeof(char) * (idlen + namelen + desclen), "_operator_idname"); /* 2 terminators and 3 to convert a.b -> A_OT_b */
+ WM_operator_bl_idname(ch, _operator_idname); /* convert the idname from python */
+ dummyot.idname= ch;
+ ch += idlen;
+ strcpy(ch, _operator_name);
+ dummyot.name = ch;
+ ch += namelen;
+ strcpy(ch, _operator_descr);
+ dummyot.description = ch;
+ }
+
+ if(strlen(identifier) >= sizeof(dummyop.idname)) {
+ BKE_reportf(reports, RPT_ERROR, "registering operator class: '%s' is too long, maximum length is %d.", identifier, sizeof(dummyop.idname));
+ return NULL;
+ }
+
+ /* check if we have registered this operator type before, and remove it */
+ {
+ wmOperatorType *ot= WM_operatortype_exists(dummyot.idname);
+ if(ot && ot->ext.srna)
+ rna_Operator_unregister(C, ot->ext.srna);
+ }
+
+ /* create a new menu type */
+ dummyot.ext.srna= RNA_def_struct(&BLENDER_RNA, dummyot.idname, "Operator");
+ dummyot.ext.data= data;
+ dummyot.ext.call= call;
+ dummyot.ext.free= free;
+
+ dummyot.pyop_poll= (have_function[0])? operator_poll: NULL;
+ dummyot.exec= (have_function[1])? operator_exec: NULL;
+ dummyot.invoke= (have_function[2])? operator_invoke: NULL;
+ dummyot.ui= (have_function[3])? operator_draw: NULL;
+
+ WM_operatortype_append_ptr(operator_wrapper, (void *)&dummyot);
+
+ /* update while blender is running */
+ if(C)
+ WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL);
+
+ return dummyot.ext.srna;
+}
+
+static StructRNA* rna_Operator_refine(PointerRNA *opr)
+{
+ wmOperator *op= (wmOperator*)opr->data;
+ return (op->type && op->type->ext.srna)? op->type->ext.srna: &RNA_Operator;
}
#else
@@ -568,6 +779,8 @@ static void rna_def_operator(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Operator", NULL);
RNA_def_struct_ui_text(srna, "Operator", "Storage of an operator being executed, or registered after execution.");
RNA_def_struct_sdna(srna, "wmOperator");
+ RNA_def_struct_refine_func(srna, "rna_Operator_refine");
+ RNA_def_struct_register_funcs(srna, "rna_Operator_register", "rna_Operator_unregister");
prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
@@ -581,12 +794,80 @@ static void rna_def_operator(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Properties", "");
RNA_def_property_pointer_funcs(prop, "rna_Operator_properties_get", NULL, NULL);
+ prop= RNA_def_property(srna, "layout", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "UILayout");
+
+ /* Registration */
+ prop= RNA_def_property(srna, "bl_idname", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_sdna(prop, NULL, "type->idname");
+ RNA_def_property_string_maxlength(prop, OP_MAX_TYPENAME); /* else it uses the pointer size! */
+ RNA_def_property_flag(prop, PROP_REGISTER);
+
+ prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_sdna(prop, NULL, "type->name");
+ RNA_def_property_string_maxlength(prop, 1024); /* else it uses the pointer size! */
+ RNA_def_property_flag(prop, PROP_REGISTER);
+
+ prop= RNA_def_property(srna, "bl_register", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "type->flag", OPTYPE_REGISTER);
+ RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
+
+ prop= RNA_def_property(srna, "bl_undo", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "type->flag", OPTYPE_UNDO);
+ RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
+
+ RNA_api_operator(srna);
+
srna= RNA_def_struct(brna, "OperatorProperties", NULL);
RNA_def_struct_ui_text(srna, "Operator Properties", "Input properties of an Operator.");
RNA_def_struct_refine_func(srna, "rna_OperatorProperties_refine");
RNA_def_struct_idproperties_func(srna, "rna_OperatorProperties_idproperties");
}
+static void rna_def_macro_operator(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ srna= RNA_def_struct(brna, "Macro", NULL);
+ RNA_def_struct_ui_text(srna, "Macro Operator", "Storage of a macro operator being executed, or registered after execution.");
+ RNA_def_struct_sdna(srna, "wmOperator");
+
+ prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_string_funcs(prop, "rna_Operator_name_get", "rna_Operator_name_length", NULL);
+ RNA_def_property_ui_text(prop, "Name", "");
+ RNA_def_struct_name_property(srna, prop);
+
+ prop= RNA_def_property(srna, "properties", PROP_POINTER, PROP_NONE);
+ RNA_def_property_flag(prop, 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, NULL);
+}
+
+static void rna_def_operator_type_macro(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ srna= RNA_def_struct(brna, "OperatorTypeMacro", NULL);
+ RNA_def_struct_ui_text(srna, "OperatorTypeMacro", "Storage of a sub operator in a macro after it has been added.");
+ RNA_def_struct_sdna(srna, "wmOperatorTypeMacro");
+
+// prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+// RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+// RNA_def_property_string_sdna(prop, NULL, "idname");
+// RNA_def_property_ui_text(prop, "Name", "Name of the sub operator.");
+// RNA_def_struct_name_property(srna, prop);
+
+ prop= RNA_def_property(srna, "properties", PROP_POINTER, PROP_NONE);
+ RNA_def_property_flag(prop, PROP_NEVER_NULL);
+ RNA_def_property_struct_type(prop, "OperatorProperties");
+ RNA_def_property_ui_text(prop, "Properties", "");
+ RNA_def_property_pointer_funcs(prop, "rna_OperatorTypeMacro_properties_get", NULL, NULL);
+}
+
static void rna_def_operator_utils(BlenderRNA *brna)
{
StructRNA *srna;
@@ -628,6 +909,8 @@ static void rna_def_event(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Event", "Window Manager Event");
RNA_def_struct_sdna(srna, "wmEvent");
+ RNA_define_verify_sdna(0); // not in sdna
+
/* strings */
prop= RNA_def_property(srna, "ascii", PROP_STRING, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
@@ -691,6 +974,8 @@ static void rna_def_event(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "oskey", 1);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "OS Key", "True when the Cmd key is held.");
+
+ RNA_define_verify_sdna(1); // not in sdna
}
static void rna_def_window(BlenderRNA *brna)
@@ -708,6 +993,7 @@ static void rna_def_window(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Screen", "Active screen showing in the window.");
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_pointer_funcs(prop, NULL, "rna_Window_screen_set", NULL);
+ RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
RNA_def_property_update(prop, 0, "rna_Window_screen_update");
}
@@ -744,12 +1030,6 @@ static void rna_def_windowmanager(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "KeyConfig");
RNA_def_property_ui_text(prop, "Default Key Configuration", "");
- prop= RNA_def_property(srna, "active_keymap", PROP_POINTER, PROP_NEVER_NULL);
- RNA_def_property_struct_type(prop, "KeyMap");
- RNA_def_property_flag(prop, PROP_EDITABLE);
- RNA_def_property_pointer_funcs(prop, "rna_WindowManager_active_keymap_get", "rna_WindowManager_active_keymap_set", 0);
- RNA_def_property_ui_text(prop, "Active Key Map", "");
-
RNA_api_wm(srna);
}
@@ -777,6 +1057,10 @@ static void rna_def_keyconfig(BlenderRNA *brna)
RNA_def_property_string_sdna(prop, NULL, "idname");
RNA_def_property_ui_text(prop, "Name", "Name of the key configuration.");
RNA_def_struct_name_property(srna, prop);
+
+ prop= RNA_def_property(srna, "filter", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_sdna(prop, NULL, "filter");
+ RNA_def_property_ui_text(prop, "Filter", "Search term for filtering in the UI.");
prop= RNA_def_property(srna, "keymaps", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "KeyMap");
@@ -791,16 +1075,19 @@ static void rna_def_keyconfig(BlenderRNA *brna)
prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "idname");
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Name", "Name of the key map.");
RNA_def_struct_name_property(srna, prop);
prop= RNA_def_property(srna, "space_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "spaceid");
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_enum_items(prop, space_type_items);
RNA_def_property_ui_text(prop, "Space Type", "Optional space type keymap is associated with.");
prop= RNA_def_property(srna, "region_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "regionid");
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_enum_items(prop, region_type_items);
RNA_def_property_ui_text(prop, "Region Type", "Optional region type keymap is associated with.");
@@ -814,8 +1101,20 @@ static void rna_def_keyconfig(BlenderRNA *brna)
prop= RNA_def_property(srna, "modal", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", KEYMAP_MODAL);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Modal Keymap", "Indicates that a keymap is used for translate modal events for an operator.");
+ prop= RNA_def_property(srna, "items_expanded", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", KEYMAP_EXPANDED);
+ RNA_def_property_ui_text(prop, "Items Expanded", "Expanded in the user interface.");
+ RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
+
+ prop= RNA_def_property(srna, "children_expanded", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", KEYMAP_CHILDREN_EXPANDED);
+ RNA_def_property_ui_text(prop, "Children Expanded", "Children expanded in the user interface.");
+ RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
+
+
RNA_api_keymap(srna);
/* KeyMapItem */
@@ -828,7 +1127,12 @@ static void rna_def_keyconfig(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Identifier", "Identifier of operator to call on input event.");
RNA_def_property_string_funcs(prop, "rna_wmKeyMapItem_idname_get", "rna_wmKeyMapItem_idname_length", "rna_wmKeyMapItem_idname_set");
RNA_def_struct_name_property(srna, prop);
-
+
+ prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Name", "Name of operator to call on input event.");
+ RNA_def_property_string_funcs(prop, "rna_wmKeyMapItem_name_get", "rna_wmKeyMapItem_name_length", NULL);
+
prop= RNA_def_property(srna, "properties", PROP_POINTER, PROP_NONE);
RNA_def_property_struct_type(prop, "OperatorProperties");
RNA_def_property_pointer_funcs(prop, "rna_KeyMapItem_properties_get", NULL, NULL);
@@ -852,6 +1156,11 @@ static void rna_def_keyconfig(BlenderRNA *brna)
RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_KeyMapItem_value_itemf");
RNA_def_property_ui_text(prop, "Value", "");
+ prop= RNA_def_property(srna, "id", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "id");
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "id", "ID of the item.");
+
prop= RNA_def_property(srna, "any", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_KeyMapItem_any_getf", "rna_KeyMapItem_any_setf");
RNA_def_property_ui_text(prop, "Any", "Any modifier keys pressed.");
@@ -887,7 +1196,8 @@ static void rna_def_keyconfig(BlenderRNA *brna)
prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", KMI_EXPANDED);
- RNA_def_property_ui_text(prop, "Expanded", "Expanded in the user interface.");
+ RNA_def_property_ui_text(prop, "Expanded", "Show key map event and property details in the user interface.");
+ RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
prop= RNA_def_property(srna, "propvalue", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "propvalue");
@@ -898,6 +1208,9 @@ static void rna_def_keyconfig(BlenderRNA *brna)
prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", KMI_INACTIVE);
RNA_def_property_ui_text(prop, "Active", "Activate or deactivate item.");
+ RNA_def_property_ui_icon(prop, ICON_CHECKBOX_DEHLT, 1);
+
+ RNA_api_keymapitem(srna);
}
void RNA_def_wm(BlenderRNA *brna)
@@ -905,6 +1218,8 @@ void RNA_def_wm(BlenderRNA *brna)
rna_def_operator(brna);
rna_def_operator_utils(brna);
rna_def_operator_filelist_element(brna);
+ rna_def_macro_operator(brna);
+ rna_def_operator_type_macro(brna);
rna_def_event(brna);
rna_def_window(brna);
rna_def_windowmanager(brna);
diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c
index 4c6bde0e8df..7bf4053f539 100644
--- a/source/blender/makesrna/intern/rna_wm_api.c
+++ b/source/blender/makesrna/intern/rna_wm_api.c
@@ -52,6 +52,21 @@ static wmKeyMap *rna_keymap_add(wmKeyConfig *keyconf, char *idname, int spaceid,
}
}
+static wmKeyMap *rna_keymap_find(wmKeyConfig *keyconf, char *idname, int spaceid, int regionid)
+{
+ return WM_keymap_list_find(&keyconf->keymaps, idname, spaceid, regionid);
+}
+
+static wmKeyMap *rna_keymap_find_modal(wmKeyConfig *keyconf, char *idname)
+{
+ wmOperatorType *ot = WM_operatortype_find(idname, 0);
+
+ if (!ot)
+ return NULL;
+ else
+ return ot->modalkeymap;
+}
+
static wmKeyMap *rna_keymap_active(wmKeyMap *km, bContext *C)
{
wmWindowManager *wm = CTX_wm_manager(C);
@@ -98,7 +113,12 @@ static wmKeyMapItem *rna_KeyMap_add_modal_item(wmKeyMap *km, bContext *C, Report
return WM_modalkeymap_add_item(km, type, value, modifier, keymodifier, propvalue);
}
-static wmKeyMapItem *rna_KeyMap_add_item(wmKeyMap *km, ReportList *reports, char *idname, int type, int any, int value, int shift, int ctrl, int alt, int oskey, int keymodifier)
+static void rna_keymap_restore_item_to_default(wmKeyMap *km, bContext *C, wmKeyMapItem *kmi)
+{
+ WM_keymap_restore_item_to_default(C, km, kmi);
+}
+
+static wmKeyMapItem *rna_KeyMap_add_item(wmKeyMap *km, ReportList *reports, char *idname, int type, int value, int any, int shift, int ctrl, int alt, int oskey, int keymodifier)
{
// wmWindowManager *wm = CTX_wm_manager(C);
int modifier= 0;
@@ -119,6 +139,11 @@ static wmKeyMapItem *rna_KeyMap_add_item(wmKeyMap *km, ReportList *reports, char
return WM_keymap_add_item(km, idname, type, value, modifier, keymodifier);
}
+static void rna_Operator_report(wmOperator *op, int type, char *msg)
+{
+ BKE_report(op->reports, type, msg);
+}
+
#else
void RNA_api_wm(StructRNA *srna)
@@ -146,7 +171,70 @@ void RNA_api_wm(StructRNA *srna)
RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_pointer(func, "event", "Event", "", "Event.");
RNA_def_property_flag(parm, PROP_REQUIRED);
- RNA_def_function_return(func, RNA_def_int(func, "mode", 0, 0, INT_MAX, "Mode", "", 0, INT_MAX)); // XXX, should be an enum/flag thingo
+
+ parm= RNA_def_enum(func, "result", operator_return_items, 0, "result", ""); // better name?
+ RNA_def_property_flag(parm, PROP_ENUM_FLAG);
+ RNA_def_function_return(func, parm);
+
+
+ /* invoke functions, for use with python */
+ func= RNA_def_function(srna, "invoke_popup", "WM_operator_ui_popup");
+ RNA_def_function_flag(func, FUNC_NO_SELF|FUNC_USE_CONTEXT);
+ RNA_def_function_ui_description(func, "Operator popup invoke.");
+ parm= RNA_def_pointer(func, "operator", "Operator", "", "Operator to call.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ parm= RNA_def_int(func, "width", 300, 0, INT_MAX, "", "Width of the popup.", 0, INT_MAX);
+ parm= RNA_def_int(func, "height", 20, 0, INT_MAX, "", "Height of the popup.", 0, INT_MAX);
+}
+
+void RNA_api_operator(StructRNA *srna)
+{
+ FunctionRNA *func;
+ PropertyRNA *parm;
+
+ /* utility, not for registering */
+ func= RNA_def_function(srna, "report", "rna_Operator_report");
+ parm= RNA_def_enum(func, "type", wm_report_items, 0, "Type", "");
+ RNA_def_property_flag(parm, PROP_REQUIRED|PROP_ENUM_FLAG);
+ parm= RNA_def_string(func, "message", "", 0, "Report Message", "");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+
+
+ /* Registration */
+
+ /* poll */
+ func= RNA_def_function(srna, "poll", NULL);
+ RNA_def_function_ui_description(func, "Test if the operator can be called or not.");
+ RNA_def_function_flag(func, FUNC_REGISTER_OPTIONAL);
+ RNA_def_function_return(func, RNA_def_boolean(func, "visible", 1, "", ""));
+ RNA_def_pointer(func, "context", "Context", "", "");
+
+ /* exec */
+ func= RNA_def_function(srna, "execute", NULL);
+ RNA_def_function_ui_description(func, "Execute the operator.");
+ RNA_def_function_flag(func, FUNC_REGISTER_OPTIONAL);
+ RNA_def_pointer(func, "context", "Context", "", "");
+
+ parm= RNA_def_enum(func, "result", operator_return_items, 0, "result", ""); // better name?
+ RNA_def_property_flag(parm, PROP_ENUM_FLAG);
+ RNA_def_function_return(func, parm);
+
+ /* invoke */
+ func= RNA_def_function(srna, "invoke", NULL);
+ RNA_def_function_ui_description(func, "Invoke the operator.");
+ RNA_def_function_flag(func, FUNC_REGISTER_OPTIONAL);
+ RNA_def_pointer(func, "context", "Context", "", "");
+ RNA_def_pointer(func, "event", "Event", "", "");
+
+ parm= RNA_def_enum(func, "result", operator_return_items, 0, "result", ""); // better name?
+ RNA_def_property_flag(parm, PROP_ENUM_FLAG);
+ RNA_def_function_return(func, parm);
+
+ /* draw */
+ func= RNA_def_function(srna, "draw", NULL);
+ RNA_def_function_ui_description(func, "Draw function for the operator.");
+ RNA_def_function_flag(func, FUNC_REGISTER_OPTIONAL);
+ RNA_def_pointer(func, "context", "Context", "", "");
}
void RNA_api_keyconfig(StructRNA *srna)
@@ -162,6 +250,20 @@ void RNA_api_keyconfig(StructRNA *srna)
RNA_def_boolean(func, "modal", 0, "Modal", "");
parm= RNA_def_pointer(func, "keymap", "KeyMap", "Key Map", "Added key map.");
RNA_def_function_return(func, parm);
+
+ func= RNA_def_function(srna, "find_keymap", "rna_keymap_find");
+ parm= RNA_def_string(func, "name", "", 0, "Name", "");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ RNA_def_enum(func, "space_type", space_type_items, SPACE_EMPTY, "Space Type", "");
+ RNA_def_enum(func, "region_type", region_type_items, RGN_TYPE_WINDOW, "Region Type", "");
+ parm= RNA_def_pointer(func, "keymap", "KeyMap", "Key Map", "Corresponding key map.");
+ RNA_def_function_return(func, parm);
+
+ func= RNA_def_function(srna, "find_keymap_modal", "rna_keymap_find_modal");
+ parm= RNA_def_string(func, "name", "", 0, "Operator Name", "");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ parm= RNA_def_pointer(func, "keymap", "KeyMap", "Key Map", "Corresponding key map.");
+ RNA_def_function_return(func, parm);
}
void RNA_api_keymap(StructRNA *srna)
@@ -217,7 +319,23 @@ void RNA_api_keymap(StructRNA *srna)
RNA_def_function_return(func, parm);
func= RNA_def_function(srna, "restore_to_default", "WM_keymap_restore_to_default");
+
+ func= RNA_def_function(srna, "restore_item_to_default", "rna_keymap_restore_item_to_default");
+ RNA_def_function_flag(func, FUNC_USE_CONTEXT);
+ parm= RNA_def_pointer(func, "item", "KeyMapItem", "Item", "");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
}
+void RNA_api_keymapitem(StructRNA *srna)
+{
+ FunctionRNA *func;
+ PropertyRNA *parm;
+
+ func= RNA_def_function(srna, "compare", "WM_keymap_item_compare");
+ parm= RNA_def_pointer(func, "item", "KeyMapItem", "Item", "");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ parm= RNA_def_boolean(func, "result", 0, "Comparison result", "");
+ RNA_def_function_return(func, parm);
+}
#endif
diff --git a/source/blender/makesrna/intern/rna_world.c b/source/blender/makesrna/intern/rna_world.c
index c0c9c1d6568..4046fc266da 100644
--- a/source/blender/makesrna/intern/rna_world.c
+++ b/source/blender/makesrna/intern/rna_world.c
@@ -82,20 +82,20 @@ static void rna_World_active_texture_set(PointerRNA *ptr, PointerRNA value)
set_current_world_texture(wo, value.data);
}
-static void rna_World_update(bContext *C, PointerRNA *ptr)
+static void rna_World_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
World *wo= ptr->id.data;
DAG_id_flush_update(&wo->id, 0);
- WM_event_add_notifier(C, NC_WORLD, wo);
+ WM_main_add_notifier(NC_WORLD, wo);
}
-static void rna_World_draw_update(bContext *C, PointerRNA *ptr)
+static void rna_World_draw_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
World *wo= ptr->id.data;
DAG_id_flush_update(&wo->id, 0);
- WM_event_add_notifier(C, NC_WORLD|ND_WORLD_DRAW, wo);
+ WM_main_add_notifier(NC_WORLD|ND_WORLD_DRAW, wo);
}
#else
@@ -312,6 +312,17 @@ static void rna_def_ambient_occlusion(BlenderRNA *brna)
RNA_def_property_range(prop, 0, 10);
RNA_def_property_ui_text(prop, "Passes", "Number of preprocessing passes to reduce overocclusion (for Approximate).");
RNA_def_property_update(prop, 0, "rna_World_update");
+
+ prop= RNA_def_property(srna, "indirect_energy", PROP_FLOAT, PROP_UNSIGNED);
+ RNA_def_property_float_sdna(prop, NULL, "ao_indirect_energy");
+ RNA_def_property_ui_range(prop, 0, 10, 0.1, 3);
+ RNA_def_property_ui_text(prop, "Indirect", "Use approximate ambient occlusion for indirect diffuse lighting.");
+ RNA_def_property_update(prop, 0, "rna_World_update");
+
+ prop= RNA_def_property(srna, "indirect_bounces", PROP_INT, PROP_UNSIGNED);
+ RNA_def_property_int_sdna(prop, NULL, "ao_indirect_bounces");
+ RNA_def_property_ui_text(prop, "Bounces", "Number of indirect diffuse light bounces to use for approximate ambient occlusion.");
+ RNA_def_property_update(prop, 0, "rna_World_update");
}
static void rna_def_world_mist(BlenderRNA *brna)
diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_bilateralblur.c b/source/blender/nodes/intern/CMP_nodes/CMP_bilateralblur.c
index b954e876ea1..b4c1bbd7acc 100644
--- a/source/blender/nodes/intern/CMP_nodes/CMP_bilateralblur.c
+++ b/source/blender/nodes/intern/CMP_nodes/CMP_bilateralblur.c
@@ -229,9 +229,6 @@ static void node_composit_exec_bilateralblur(void *data, bNode *node, bNodeStack
SWAP(CompBuf, *source, *new);
}
- if(node->exec & NODE_BREAK)
- free_compbuf(source);
-
if(img != in[0]->data)
free_compbuf(img);
diff --git a/source/blender/python/BPY_extern.h b/source/blender/python/BPY_extern.h
index a055060ed07..6a94443dd8b 100644
--- a/source/blender/python/BPY_extern.h
+++ b/source/blender/python/BPY_extern.h
@@ -134,7 +134,7 @@ extern "C" {
// void BPY_scripts_clear_pyobjects( void );
//
// void error_pyscript( void );
-// void BPY_DECREF(void *pyob_ptr); /* Py_DECREF() */
+ void BPY_DECREF(void *pyob_ptr); /* Py_DECREF() */
void BPY_set_context(struct bContext *C);
/* void BPY_Err_Handle(struct Text *text); */
/* int BPY_spacetext_is_pywin(struct SpaceText *st); */
diff --git a/source/blender/python/generic/bpy_internal_import.c b/source/blender/python/generic/bpy_internal_import.c
index 957a4e6f52d..2fd44b0f6f5 100644
--- a/source/blender/python/generic/bpy_internal_import.c
+++ b/source/blender/python/generic/bpy_internal_import.c
@@ -74,8 +74,9 @@ PyObject *bpy_text_import( Text *text )
}
}
- len= strlen(text->id.name+2) - 3;
+ len= strlen(text->id.name+2);
strncpy(modulename, text->id.name+2, len);
+ modulename[len - 3]= '\0'; /* remove .py */
return PyImport_ExecCodeModule(modulename, text->compiled);
}
diff --git a/source/blender/python/generic/vector.c b/source/blender/python/generic/vector.c
index 90295d0d3e8..33dcaef5be2 100644
--- a/source/blender/python/generic/vector.c
+++ b/source/blender/python/generic/vector.c
@@ -48,6 +48,7 @@ static PyObject *Vector_Negate( VectorObject * self );
static PyObject *Vector_Resize2D( VectorObject * self );
static PyObject *Vector_Resize3D( VectorObject * self );
static PyObject *Vector_Resize4D( VectorObject * self );
+static PyObject *Vector_ToTuple( VectorObject * self, PyObject *value );
static PyObject *Vector_ToTrackQuat( VectorObject * self, PyObject * args );
static PyObject *Vector_Reflect( VectorObject *self, VectorObject *value );
static PyObject *Vector_Cross( VectorObject * self, VectorObject * value );
@@ -61,6 +62,7 @@ static struct PyMethodDef Vector_methods[] = {
{"resize2D", (PyCFunction) Vector_Resize2D, METH_NOARGS, NULL},
{"resize3D", (PyCFunction) Vector_Resize3D, METH_NOARGS, NULL},
{"resize4D", (PyCFunction) Vector_Resize4D, METH_NOARGS, NULL},
+ {"toTuple", (PyCFunction) Vector_ToTuple, METH_O, NULL},
{"toTrackQuat", ( PyCFunction ) Vector_ToTrackQuat, METH_VARARGS, NULL},
{"reflect", ( PyCFunction ) Vector_Reflect, METH_O, NULL},
{"cross", ( PyCFunction ) Vector_Cross, METH_O, NULL},
@@ -236,6 +238,33 @@ static PyObject *Vector_Resize4D(VectorObject * self)
Py_INCREF(self);
return (PyObject*)self;
}
+
+/*----------------------------Vector.resize4D() ------------------
+ resize the vector to x,y,z,w */
+static PyObject *Vector_ToTuple(VectorObject * self, PyObject *value)
+{
+ int ndigits= PyLong_AsSsize_t(value);
+ int x;
+
+ PyObject *ret;
+
+ if(ndigits > 22 || ndigits < 0) { /* accounts for non ints */
+ PyErr_SetString(PyExc_TypeError, "vector.key(ndigits): ndigits must be between 0 and 21");
+ return NULL;
+ }
+
+ if(!BaseMath_ReadCallback(self))
+ return NULL;
+
+ ret= PyTuple_New(self->size);
+
+ for(x = 0; x < self->size; x++) {
+ PyTuple_SET_ITEM(ret, x, PyFloat_FromDouble(double_round((double)self->vec[x], ndigits)));
+ }
+
+ return ret;
+}
+
/*----------------------------Vector.toTrackQuat(track, up) ----------------------
extract a quaternion from the vector and the track and up axis */
static PyObject *Vector_ToTrackQuat( VectorObject * self, PyObject * args )
@@ -626,36 +655,30 @@ static PyObject *Vector_add(PyObject * v1, PyObject * v2)
static PyObject *Vector_iadd(PyObject * v1, PyObject * v2)
{
int i;
-
VectorObject *vec1 = NULL, *vec2 = NULL;
+
+ if (!VectorObject_Check(v1) || !VectorObject_Check(v2)) {
+ PyErr_SetString(PyExc_AttributeError, "Vector addition: arguments not valid for this operation....\n");
+ return NULL;
+ }
+ vec1 = (VectorObject*)v1;
+ vec2 = (VectorObject*)v2;
- if VectorObject_Check(v1)
- vec1= (VectorObject *)v1;
-
- if VectorObject_Check(v2)
- vec2= (VectorObject *)v2;
-
- /* make sure v1 is always the vector */
- if (vec1 && vec2 ) {
-
- if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2))
- return NULL;
-
- /*VECTOR + VECTOR*/
- if(vec1->size != vec2->size) {
- PyErr_SetString(PyExc_AttributeError, "Vector addition: vectors must have the same dimensions for this operation\n");
- return NULL;
- }
- for(i = 0; i < vec1->size; i++) {
- vec1->vec[i] += vec2->vec[i];
- }
- Py_INCREF( v1 );
- return v1;
+ if(vec1->size != vec2->size) {
+ PyErr_SetString(PyExc_AttributeError, "Vector addition: vectors must have the same dimensions for this operation\n");
+ return NULL;
}
+ if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2))
+ return NULL;
+
+ for(i = 0; i < vec1->size; i++) {
+ vec1->vec[i] = vec1->vec[i] + vec2->vec[i];
+ }
+
BaseMath_WriteCallback(vec1);
- PyErr_SetString(PyExc_AttributeError, "Vector addition: arguments not valid for this operation....\n");
- return NULL;
+ Py_INCREF( v1 );
+ return v1;
}
/*------------------------obj - obj------------------------------
diff --git a/source/blender/python/intern/bpy_array.c b/source/blender/python/intern/bpy_array.c
index f11c95e7ed5..5f228836b42 100644
--- a/source/blender/python/intern/bpy_array.c
+++ b/source/blender/python/intern/bpy_array.c
@@ -32,8 +32,6 @@
#include "BKE_global.h"
-#include "MEM_guardedalloc.h"
-
#define MAX_ARRAY_DIMENSION 10
typedef void (*ItemConvertFunc)(PyObject *, char *);
@@ -258,7 +256,7 @@ static int py_to_array(PyObject *py, PointerRNA *ptr, PropertyRNA *prop, char *p
if (totitem) {
if (!param_data || RNA_property_flag(prop) & PROP_DYNAMIC)
- data= MEM_callocN(item_size * totitem, "pyrna primitive type array");
+ data= PyMem_MALLOC(item_size * totitem);
else
data= param_data;
@@ -273,7 +271,7 @@ static int py_to_array(PyObject *py, PointerRNA *ptr, PropertyRNA *prop, char *p
else {
/* NULL can only pass through in case RNA property arraylength is 0 (impossible?) */
rna_set_array(ptr, prop, data);
- MEM_freeN(data);
+ PyMem_FREE(data);
}
}
@@ -513,3 +511,94 @@ PyObject *pyrna_py_from_array(PointerRNA *ptr, PropertyRNA *prop)
return pyrna_prop_CreatePyObject(ptr, prop);
}
+
+/* TODO, multi-dimensional arrays */
+int pyrna_array_contains_py(PointerRNA *ptr, PropertyRNA *prop, PyObject *value)
+{
+ int len= RNA_property_array_length(ptr, prop);
+ int type;
+ int i;
+
+ if(len==0) /* possible with dynamic arrays */
+ return 0;
+
+ if (RNA_property_array_dimension(ptr, prop, NULL) > 1) {
+ PyErr_SetString(PyExc_TypeError, "PropertyRNA - multi dimensional arrays not supported yet");
+ return -1;
+ }
+
+ type= RNA_property_type(prop);
+
+ switch (type) {
+ case PROP_FLOAT:
+ {
+ float value_f= PyFloat_AsDouble(value);
+ if(value_f==-1 && PyErr_Occurred()) {
+ PyErr_Clear();
+ return 0;
+ }
+ else {
+ float tmp[32];
+ float *tmp_arr;
+
+ if(len * sizeof(float) > sizeof(tmp)) {
+ tmp_arr= PyMem_MALLOC(len * sizeof(float));
+ }
+ else {
+ tmp_arr= tmp;
+ }
+
+ RNA_property_float_get_array(ptr, prop, tmp_arr);
+
+ for(i=0; i<len; i++)
+ if(tmp_arr[i] == value_f)
+ break;
+
+ if(tmp_arr != tmp)
+ PyMem_FREE(tmp_arr);
+
+ return i<len ? 1 : 0;
+ }
+ break;
+ }
+ case PROP_BOOLEAN:
+ case PROP_INT:
+ {
+ int value_i= PyLong_AsSsize_t(value);
+ if(value_i==-1 && PyErr_Occurred()) {
+ PyErr_Clear();
+ return 0;
+ }
+ else {
+ int tmp[32];
+ int *tmp_arr;
+
+ if(len * sizeof(int) > sizeof(tmp)) {
+ tmp_arr= PyMem_MALLOC(len * sizeof(int));
+ }
+ else {
+ tmp_arr= tmp;
+ }
+
+ if(type==PROP_BOOLEAN)
+ RNA_property_boolean_get_array(ptr, prop, tmp_arr);
+ else
+ RNA_property_int_get_array(ptr, prop, tmp_arr);
+
+ for(i=0; i<len; i++)
+ if(tmp_arr[i] == value_i)
+ break;
+
+ if(tmp_arr != tmp)
+ PyMem_FREE(tmp_arr);
+
+ return i<len ? 1 : 0;
+ }
+ break;
+ }
+ }
+
+ /* should never reach this */
+ PyErr_SetString(PyExc_TypeError, "PropertyRNA - type not in float/bool/int");
+ return -1;
+}
diff --git a/source/blender/python/intern/bpy_driver.c b/source/blender/python/intern/bpy_driver.c
new file mode 100644
index 00000000000..76df28494ac
--- /dev/null
+++ b/source/blender/python/intern/bpy_driver.c
@@ -0,0 +1,239 @@
+/**
+ * $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.
+ *
+ * Contributor(s): Willian P. Germano, Campbell Barton
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+/* ****************************************** */
+/* Drivers - PyExpression Evaluation */
+
+#include "DNA_anim_types.h"
+
+#include "BPY_extern.h"
+#include "BKE_fcurve.h"
+
+#include <Python.h>
+
+/* for pydrivers (drivers using one-line Python expressions to express relationships between targets) */
+PyObject *bpy_pydriver_Dict = NULL;
+
+/* For faster execution we keep a special dictionary for pydrivers, with
+ * the needed modules and aliases.
+ */
+static int bpy_pydriver_create_dict(void)
+{
+ PyObject *d, *mod;
+
+ /* validate namespace for driver evaluation */
+ if (bpy_pydriver_Dict) return -1;
+
+ d = PyDict_New();
+ if (d == NULL)
+ return -1;
+ else
+ bpy_pydriver_Dict = d;
+
+ /* import some modules: builtins, bpy, math, (Blender.noise )*/
+ PyDict_SetItemString(d, "__builtins__", PyEval_GetBuiltins());
+
+ mod = PyImport_ImportModule("math");
+ if (mod) {
+ PyDict_Merge(d, PyModule_GetDict(mod), 0); /* 0 - dont overwrite existing values */
+
+ /* Only keep for backwards compat! - just import all math into root, they are standard */
+ PyDict_SetItemString(d, "math", mod);
+ PyDict_SetItemString(d, "m", mod);
+ Py_DECREF(mod);
+ }
+
+ /* add bpy to global namespace */
+ mod= PyImport_ImportModuleLevel("bpy", NULL, NULL, NULL, 0);
+ if (mod) {
+ PyDict_SetItemString(bpy_pydriver_Dict, "bpy", mod);
+ Py_DECREF(mod);
+ }
+
+
+#if 0 // non existant yet
+ mod = PyImport_ImportModule("Blender.Noise");
+ if (mod) {
+ PyDict_SetItemString(d, "noise", mod);
+ PyDict_SetItemString(d, "n", mod);
+ Py_DECREF(mod);
+ } else {
+ PyErr_Clear();
+ }
+
+ /* If there's a Blender text called pydrivers.py, import it.
+ * Users can add their own functions to this module.
+ */
+ if (G.f & G_DOSCRIPTLINKS) {
+ mod = importText("pydrivers"); /* can also use PyImport_Import() */
+ if (mod) {
+ PyDict_SetItemString(d, "pydrivers", mod);
+ PyDict_SetItemString(d, "p", mod);
+ Py_DECREF(mod);
+ } else {
+ PyErr_Clear();
+ }
+ }
+#endif // non existant yet
+
+ return 0;
+}
+
+/* Update function, it gets rid of pydrivers global dictionary, forcing
+ * BPY_pydriver_eval to recreate it. This function is used to force
+ * reloading the Blender text module "pydrivers.py", if available, so
+ * updates in it reach pydriver evaluation.
+ */
+void BPY_pydriver_update(void)
+{
+ PyGILState_STATE gilstate = PyGILState_Ensure();
+
+ if (bpy_pydriver_Dict) { /* free the global dict used by pydrivers */
+ PyDict_Clear(bpy_pydriver_Dict);
+ Py_DECREF(bpy_pydriver_Dict);
+ bpy_pydriver_Dict = NULL;
+ }
+
+ PyGILState_Release(gilstate);
+
+ return;
+}
+
+/* error return function for BPY_eval_pydriver */
+static float pydriver_error(ChannelDriver *driver)
+{
+ if (bpy_pydriver_Dict) { /* free the global dict used by pydrivers */
+ PyDict_Clear(bpy_pydriver_Dict);
+ Py_DECREF(bpy_pydriver_Dict);
+ bpy_pydriver_Dict = NULL;
+ }
+
+ driver->flag |= DRIVER_FLAG_INVALID; /* py expression failed */
+ fprintf(stderr, "\nError in Driver: The following Python expression failed:\n\t'%s'\n\n", driver->expression);
+
+ // BPy_errors_to_report(NULL); // TODO - reports
+ PyErr_Print();
+ PyErr_Clear();
+
+ return 0.0f;
+}
+
+/* This evals py driver expressions, 'expr' is a Python expression that
+ * should evaluate to a float number, which is returned.
+ */
+float BPY_pydriver_eval (ChannelDriver *driver)
+{
+ PyObject *driver_vars=NULL;
+ PyObject *retval= NULL;
+ PyGILState_STATE gilstate;
+
+ DriverTarget *dtar;
+ float result = 0.0f; /* default return */
+ char *expr = NULL;
+ short targets_ok= 1;
+
+ /* sanity checks - should driver be executed? */
+ if ((driver == NULL) /*|| (G.f & G_DOSCRIPTLINKS)==0*/)
+ return result;
+
+ /* get the py expression to be evaluated */
+ expr = driver->expression;
+ if ((expr == NULL) || (expr[0]=='\0'))
+ return result;
+
+ gilstate = PyGILState_Ensure();
+
+ /* init global dictionary for py-driver evaluation settings */
+ if (!bpy_pydriver_Dict) {
+ if (bpy_pydriver_create_dict() != 0) {
+ fprintf(stderr, "Pydriver error: couldn't create Python dictionary");
+ PyGILState_Release(gilstate);
+ return result;
+ }
+ }
+
+ /* add target values to a dict that will be used as '__locals__' dict */
+ driver_vars = PyDict_New(); // XXX do we need to decref this?
+ for (dtar= driver->targets.first; dtar; dtar= dtar->next) {
+ PyObject *driver_arg = NULL;
+ float tval = 0.0f;
+
+ /* try to get variable value */
+ tval= driver_get_target_value(driver, dtar);
+ driver_arg= PyFloat_FromDouble((double)tval);
+
+ /* try to add to dictionary */
+ if (PyDict_SetItemString(driver_vars, dtar->name, driver_arg)) {
+ /* this target failed - bad name */
+ if (targets_ok) {
+ /* first one - print some extra info for easier identification */
+ fprintf(stderr, "\nBPY_pydriver_eval() - Error while evaluating PyDriver:\n");
+ targets_ok= 0;
+ }
+
+ fprintf(stderr, "\tBPY_pydriver_eval() - couldn't add variable '%s' to namespace \n", dtar->name);
+ // BPy_errors_to_report(NULL); // TODO - reports
+ PyErr_Print();
+ PyErr_Clear();
+ }
+ }
+
+#if 0 // slow
+ /* execute expression to get a value */
+ retval = PyRun_String(expr, Py_eval_input, bpy_pydriver_Dict, driver_vars);
+#else
+ if(driver->flag & DRIVER_FLAG_RECOMPILE || driver->expr_comp==NULL) {
+ Py_XDECREF(driver->expr_comp);
+ driver->expr_comp= Py_CompileString(expr, "<bpy driver>", Py_eval_input);
+ driver->flag &= ~DRIVER_FLAG_RECOMPILE;
+ }
+ if(driver->expr_comp)
+ retval= PyEval_EvalCode(driver->expr_comp, bpy_pydriver_Dict, driver_vars);
+#endif
+
+ /* decref the driver vars first... */
+ Py_DECREF(driver_vars);
+
+ /* process the result */
+ if (retval == NULL) {
+ result = pydriver_error(driver);
+ PyGILState_Release(gilstate);
+ return result;
+ }
+
+ result = (float)PyFloat_AsDouble(retval);
+ Py_DECREF(retval);
+
+ if ((result == -1) && PyErr_Occurred()) {
+ result = pydriver_error(driver);
+ PyGILState_Release(gilstate);
+ return result;
+ }
+
+ /* all fine, make sure the "invalid expression" flag is cleared */
+ driver->flag &= ~DRIVER_FLAG_INVALID;
+
+ PyGILState_Release(gilstate);
+
+ return result;
+}
diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c
index eb69e92ea05..55ba1138b8e 100644
--- a/source/blender/python/intern/bpy_interface.c
+++ b/source/blender/python/intern/bpy_interface.c
@@ -49,19 +49,17 @@
#include "BLI_winstuff.h"
#endif
-#include "DNA_anim_types.h"
#include "DNA_space_types.h"
#include "DNA_text_types.h"
#include "MEM_guardedalloc.h"
-#include "BLI_util.h"
+#include "BLI_path_util.h"
#include "BLI_storage.h"
#include "BLI_fileops.h"
#include "BLI_string.h"
#include "BKE_context.h"
-#include "BKE_fcurve.h"
#include "BKE_text.h"
#include "BKE_context.h"
#include "BKE_global.h"
@@ -77,7 +75,6 @@
#include "../generic/BGL.h"
#include "../generic/IDProp.h"
-
/* for internal use, when starting and ending python scripts */
/* incase a python script triggers another python call, stop bpy_context_clear from invalidating */
@@ -280,6 +277,14 @@ void BPY_start_python_path(void)
/* set the environment path */
printf("found bundled python: %s\n", py_path_bundle);
+#ifdef __APPLE__
+ /* OSX allow file/directory names to contain : character (represented as / in the Finder)
+ but current Python lib (release 3.1.1) doesn't handle these correctly */
+ if(strchr(py_path_bundle, ':'))
+ printf("Warning : Blender application is located in a path containing : or / chars\
+ \nThis may make python import function fail\n");
+#endif
+
#if 0
BLI_setenv("PYTHONHOME", py_path_bundle);
BLI_setenv("PYTHONPATH", py_path_bundle);
@@ -316,11 +321,25 @@ void BPY_start_python( int argc, char **argv )
/* sigh, why do python guys not have a char** version anymore? :( */
{
int i;
+#if 0
PyObject *py_argv= PyList_New(argc);
-
for (i=0; i<argc; i++)
PyList_SET_ITEM(py_argv, i, PyUnicode_FromString(argv[i]));
+#else // should fix bug #20021 - utf path name problems
+ PyObject *py_argv= PyList_New(0);
+ for (i=0; i<argc; i++) {
+ PyObject *item= PyUnicode_Decode(argv[i], strlen(argv[i]), Py_FileSystemDefaultEncoding, NULL);
+ if(item==NULL) { // should never happen
+ PyErr_Print();
+ PyErr_Clear();
+ }
+ else {
+ PyList_Append(py_argv, item);
+ Py_DECREF(item);
+ }
+ }
+#endif
PySys_SetObject("argv", py_argv);
Py_DECREF(py_argv);
}
@@ -538,7 +557,9 @@ int BPY_run_script_space_listener(bContext *C, SpaceScript * sc)
void BPY_DECREF(void *pyob_ptr)
{
+ PyGILState_STATE gilstate = PyGILState_Ensure();
Py_DECREF((PyObject *)pyob_ptr);
+ PyGILState_Release(gilstate);
}
#if 0
@@ -596,201 +617,6 @@ int BPY_run_python_script_space(const char *modulename, const char *func)
#include "PIL_time.h"
#endif
-/* ****************************************** */
-/* Drivers - PyExpression Evaluation */
-
-/* for pydrivers (drivers using one-line Python expressions to express relationships between targets) */
-PyObject *bpy_pydriver_Dict = NULL;
-
-/* For faster execution we keep a special dictionary for pydrivers, with
- * the needed modules and aliases.
- */
-static int bpy_pydriver_create_dict(void)
-{
- PyObject *d, *mod;
-
- /* validate namespace for driver evaluation */
- if (bpy_pydriver_Dict) return -1;
-
- d = PyDict_New();
- if (d == NULL)
- return -1;
- else
- bpy_pydriver_Dict = d;
-
- /* import some modules: builtins, bpy, math, (Blender.noise )*/
- PyDict_SetItemString(d, "__builtins__", PyEval_GetBuiltins());
-
- mod = PyImport_ImportModule("math");
- if (mod) {
- PyDict_Merge(d, PyModule_GetDict(mod), 0); /* 0 - dont overwrite existing values */
-
- /* Only keep for backwards compat! - just import all math into root, they are standard */
- PyDict_SetItemString(d, "math", mod);
- PyDict_SetItemString(d, "m", mod);
- Py_DECREF(mod);
- }
-
- /* add bpy to global namespace */
- mod= PyImport_ImportModuleLevel("bpy", NULL, NULL, NULL, 0);
- if (mod) {
- PyDict_SetItemString(bpy_pydriver_Dict, "bpy", mod);
- Py_DECREF(mod);
- }
-
-
-#if 0 // non existant yet
- mod = PyImport_ImportModule("Blender.Noise");
- if (mod) {
- PyDict_SetItemString(d, "noise", mod);
- PyDict_SetItemString(d, "n", mod);
- Py_DECREF(mod);
- } else {
- PyErr_Clear();
- }
-
- /* If there's a Blender text called pydrivers.py, import it.
- * Users can add their own functions to this module.
- */
- if (G.f & G_DOSCRIPTLINKS) {
- mod = importText("pydrivers"); /* can also use PyImport_Import() */
- if (mod) {
- PyDict_SetItemString(d, "pydrivers", mod);
- PyDict_SetItemString(d, "p", mod);
- Py_DECREF(mod);
- } else {
- PyErr_Clear();
- }
- }
-#endif // non existant yet
-
- return 0;
-}
-
-/* Update function, it gets rid of pydrivers global dictionary, forcing
- * BPY_pydriver_eval to recreate it. This function is used to force
- * reloading the Blender text module "pydrivers.py", if available, so
- * updates in it reach pydriver evaluation.
- */
-void BPY_pydriver_update(void)
-{
- PyGILState_STATE gilstate = PyGILState_Ensure();
-
- if (bpy_pydriver_Dict) { /* free the global dict used by pydrivers */
- PyDict_Clear(bpy_pydriver_Dict);
- Py_DECREF(bpy_pydriver_Dict);
- bpy_pydriver_Dict = NULL;
- }
-
- PyGILState_Release(gilstate);
-
- return;
-}
-
-/* error return function for BPY_eval_pydriver */
-static float pydriver_error(ChannelDriver *driver)
-{
- if (bpy_pydriver_Dict) { /* free the global dict used by pydrivers */
- PyDict_Clear(bpy_pydriver_Dict);
- Py_DECREF(bpy_pydriver_Dict);
- bpy_pydriver_Dict = NULL;
- }
-
- driver->flag |= DRIVER_FLAG_INVALID; /* py expression failed */
- fprintf(stderr, "\nError in Driver: The following Python expression failed:\n\t'%s'\n\n", driver->expression);
-
- BPy_errors_to_report(NULL); // TODO - reports
-
- return 0.0f;
-}
-
-/* This evals py driver expressions, 'expr' is a Python expression that
- * should evaluate to a float number, which is returned.
- */
-float BPY_pydriver_eval (ChannelDriver *driver)
-{
- PyObject *driver_vars=NULL;
- PyObject *retval;
- PyGILState_STATE gilstate;
-
- DriverTarget *dtar;
- float result = 0.0f; /* default return */
- char *expr = NULL;
- short targets_ok= 1;
-
- /* sanity checks - should driver be executed? */
- if ((driver == NULL) /*|| (G.f & G_DOSCRIPTLINKS)==0*/)
- return result;
-
- /* get the py expression to be evaluated */
- expr = driver->expression;
- if ((expr == NULL) || (expr[0]=='\0'))
- return result;
-
- gilstate = PyGILState_Ensure();
-
- /* init global dictionary for py-driver evaluation settings */
- if (!bpy_pydriver_Dict) {
- if (bpy_pydriver_create_dict() != 0) {
- fprintf(stderr, "Pydriver error: couldn't create Python dictionary");
- PyGILState_Release(gilstate);
- return result;
- }
- }
-
- /* add target values to a dict that will be used as '__locals__' dict */
- driver_vars = PyDict_New(); // XXX do we need to decref this?
- for (dtar= driver->targets.first; dtar; dtar= dtar->next) {
- PyObject *driver_arg = NULL;
- float tval = 0.0f;
-
- /* try to get variable value */
- tval= driver_get_target_value(driver, dtar);
- driver_arg= PyFloat_FromDouble((double)tval);
-
- /* try to add to dictionary */
- if (PyDict_SetItemString(driver_vars, dtar->name, driver_arg)) {
- /* this target failed - bad name */
- if (targets_ok) {
- /* first one - print some extra info for easier identification */
- fprintf(stderr, "\nBPY_pydriver_eval() - Error while evaluating PyDriver:\n");
- targets_ok= 0;
- }
-
- fprintf(stderr, "\tBPY_pydriver_eval() - couldn't add variable '%s' to namespace \n", dtar->name);
- BPy_errors_to_report(NULL); // TODO - reports
- }
- }
-
- /* execute expression to get a value */
- retval = PyRun_String(expr, Py_eval_input, bpy_pydriver_Dict, driver_vars);
-
- /* decref the driver vars first... */
- Py_DECREF(driver_vars);
-
- /* process the result */
- if (retval == NULL) {
- result = pydriver_error(driver);
- PyGILState_Release(gilstate);
- return result;
- }
-
- result = (float)PyFloat_AsDouble(retval);
- Py_DECREF(retval);
-
- if ((result == -1) && PyErr_Occurred()) {
- result = pydriver_error(driver);
- PyGILState_Release(gilstate);
- return result;
- }
-
- /* all fine, make sure the "invalid expression" flag is cleared */
- driver->flag &= ~DRIVER_FLAG_INVALID;
-
- PyGILState_Release(gilstate);
-
- return result;
-}
int BPY_button_eval(bContext *C, char *expr, double *value)
{
diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c
index f89fc3d4d0c..f6199fffbc7 100644
--- a/source/blender/python/intern/bpy_operator.c
+++ b/source/blender/python/intern/bpy_operator.c
@@ -60,10 +60,10 @@ static PyObject *pyop_call( PyObject * self, PyObject * args)
if (!PyArg_ParseTuple(args, "sO|O!i:_bpy.ops.call", &opname, &context_dict, &PyDict_Type, &kw, &context))
return NULL;
- ot= WM_operatortype_find(opname, TRUE);
+ ot= WM_operatortype_exists(opname);
if (ot == NULL) {
- PyErr_Format( PyExc_SystemError, "_bpy.ops.call: operator \"%s\"could not be found", opname);
+ PyErr_Format( PyExc_SystemError, "_bpy.ops.call: operator \"%s\" could not be found", opname);
return NULL;
}
@@ -76,7 +76,7 @@ static PyObject *pyop_call( PyObject * self, PyObject * args)
Py_XINCREF(context_dict); /* so we done loose it */
if(WM_operator_poll((bContext*)C, ot) == FALSE) {
- PyErr_SetString( PyExc_SystemError, "_bpy.ops.call: operator poll() function failed, context is incorrect");
+ PyErr_Format( PyExc_SystemError, "_bpy.ops.call: operator %.200s.poll() function failed, context is incorrect", opname);
error_val= -1;
}
else {
@@ -230,7 +230,9 @@ static PyObject *pyop_getrna(PyObject *self, PyObject *value)
//RNA_pointer_create(NULL, &RNA_Struct, ot->srna, &ptr);
/* XXX - should call WM_operator_properties_free */
- WM_operator_properties_create(&ptr, ot->idname);
+ WM_operator_properties_create_ptr(&ptr, ot);
+
+
pyrna= (BPy_StructRNA *)pyrna_struct_CreatePyObject(&ptr);
pyrna->freeptr= TRUE;
return (PyObject *)pyrna;
@@ -242,7 +244,9 @@ PyObject *BPY_operator_module( void )
static PyMethodDef pyop_as_string_meth ={"as_string", (PyCFunction) pyop_as_string, METH_VARARGS, NULL};
static PyMethodDef pyop_dir_meth = {"dir", (PyCFunction) pyop_dir, METH_NOARGS, NULL};
static PyMethodDef pyop_getrna_meth = {"get_rna", (PyCFunction) pyop_getrna, METH_O, NULL};
- static PyMethodDef pyop_add_meth = {"add", (PyCFunction) PYOP_wrap_add, METH_O, NULL};
+// static PyMethodDef pyop_add_meth = {"add", (PyCFunction) PYOP_wrap_add, METH_O, NULL};
+ static PyMethodDef pyop_add_macro_meth ={"add_macro", (PyCFunction) PYOP_wrap_add_macro, METH_O, NULL};
+ static PyMethodDef pyop_macro_def_meth ={"macro_define", (PyCFunction) PYOP_wrap_macro_define, METH_VARARGS, NULL};
static PyMethodDef pyop_remove_meth = {"remove", (PyCFunction) PYOP_wrap_remove, METH_O, NULL};
PyObject *submodule = PyModule_New("_bpy.ops");
@@ -252,7 +256,9 @@ PyObject *BPY_operator_module( void )
PyModule_AddObject( submodule, "as_string",PyCFunction_New(&pyop_as_string_meth,NULL) );
PyModule_AddObject( submodule, "dir", PyCFunction_New(&pyop_dir_meth, NULL) );
PyModule_AddObject( submodule, "get_rna", PyCFunction_New(&pyop_getrna_meth, NULL) );
- PyModule_AddObject( submodule, "add", PyCFunction_New(&pyop_add_meth, NULL) );
+// PyModule_AddObject( submodule, "add", PyCFunction_New(&pyop_add_meth, NULL) );
+ PyModule_AddObject( submodule, "add_macro", PyCFunction_New(&pyop_add_macro_meth, NULL) );
+ PyModule_AddObject( submodule, "macro_define",PyCFunction_New(&pyop_macro_def_meth, NULL) );
PyModule_AddObject( submodule, "remove", PyCFunction_New(&pyop_remove_meth, NULL) );
return submodule;
diff --git a/source/blender/python/intern/bpy_operator_wrap.c b/source/blender/python/intern/bpy_operator_wrap.c
index 3789c5b1258..774e6317e66 100644
--- a/source/blender/python/intern/bpy_operator_wrap.c
+++ b/source/blender/python/intern/bpy_operator_wrap.c
@@ -1,4 +1,3 @@
-
/**
* $Id$
*
@@ -32,6 +31,7 @@
#include "MEM_guardedalloc.h"
#include "WM_api.h"
#include "WM_types.h"
+#include "UI_interface.h"
#include "ED_screen.h"
#include "RNA_define.h"
@@ -78,10 +78,11 @@ static struct BPY_flag_def pyop_ret_flags[] = {
#define PYOP_EXEC 1
#define PYOP_INVOKE 2
#define PYOP_POLL 3
+#define PYOP_DRAW 4
extern void BPY_update_modules( void ); //XXX temp solution
-static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperator *op, wmEvent *event)
+static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperator *op, wmEvent *event, uiLayout *layout)
{
PyObject *py_class = ot->pyop_data;
PyObject *args;
@@ -89,7 +90,6 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat
int ret_flag= (mode==PYOP_POLL ? 0:OPERATOR_CANCELLED);
PointerRNA ptr_context;
PointerRNA ptr_operator;
- PointerRNA ptr_event;
PyGILState_STATE gilstate;
@@ -104,11 +104,16 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat
py_class_instance = PyObject_Call(py_class, args, NULL);
Py_DECREF(args);
-
- if (py_class_instance) { /* Initializing the class worked, now run its invoke function */
+
+ if (py_class_instance==NULL) { /* Initializing the class worked, now run its invoke function */
+ PyErr_Print();
+ PyErr_Clear();
+ }
+ else {
RNA_pointer_create(NULL, &RNA_Context, C, &ptr_context);
if (mode==PYOP_INVOKE) {
+ PointerRNA ptr_event;
item= PyObject_GetAttrString(py_class, "invoke");
args = PyTuple_New(3);
@@ -122,7 +127,7 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat
else if (mode==PYOP_EXEC) {
item= PyObject_GetAttrString(py_class, "execute");
args = PyTuple_New(2);
-
+
PyTuple_SET_ITEM(args, 1, pyrna_struct_CreatePyObject(&ptr_context));
}
else if (mode==PYOP_POLL) {
@@ -130,6 +135,36 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat
args = PyTuple_New(2);
PyTuple_SET_ITEM(args, 1, pyrna_struct_CreatePyObject(&ptr_context));
}
+ else if (mode==PYOP_DRAW) {
+ PointerRNA ptr_layout;
+ item= PyObject_GetAttrString(py_class, "draw");
+ args = PyTuple_New(2);
+
+ RNA_pointer_create(NULL, &RNA_UILayout, layout, &ptr_layout);
+
+ // PyTuple_SET_ITEM "steals" object reference, it is
+ // an object passed shouldn't be DECREF'ed
+ PyTuple_SET_ITEM(args, 1, pyrna_struct_CreatePyObject(&ptr_context));
+#if 0
+ PyTuple_SET_ITEM(args, 2, pyrna_struct_CreatePyObject(&ptr_layout));
+#else
+ {
+ /* mimic panels */
+ PyObject *py_layout= pyrna_struct_CreatePyObject(&ptr_layout);
+ PyObject *pyname= PyUnicode_FromString("layout");
+
+ if(PyObject_GenericSetAttr(py_class_instance, pyname, py_layout)) {
+ PyErr_Print();
+ PyErr_Clear();
+ }
+ else {
+ Py_DECREF(py_layout);
+ }
+
+ Py_DECREF(pyname);
+ }
+#endif
+ }
PyTuple_SET_ITEM(args, 0, py_class_instance);
ret = PyObject_Call(item, args, NULL);
@@ -137,11 +172,7 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat
Py_DECREF(args);
Py_DECREF(item);
}
- else {
- PyErr_Print();
- PyErr_Clear();
- }
-
+
if (ret == NULL) { /* covers py_class_instance failing too */
if(op)
BPy_errors_to_report(op->reports);
@@ -149,21 +180,18 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat
else {
if (mode==PYOP_POLL) {
if (PyBool_Check(ret) == 0) {
- PyErr_SetString(PyExc_ValueError, "Python poll function return value ");
- if(op)
- BPy_errors_to_report(op->reports);
+ PyErr_Format(PyExc_ValueError, "Python operator '%s.poll', did not return a bool value", ot->idname);
+ BPy_errors_to_report(op ? op->reports:NULL); /* prints and clears if NULL given */
}
else {
ret_flag= ret==Py_True ? 1:0;
}
-
+ } else if(mode==PYOP_DRAW) {
+ /* pass */
} else if (BPY_flag_from_seq(pyop_ret_flags, ret, &ret_flag) == -1) {
/* the returned value could not be converted into a flag */
- if(op) {
- fprintf(stderr, "error using return value from \"%s\"\n", op->idname); // for some reason the error raised doesnt include file:line... this helps
- BPy_errors_to_report(op->reports);
- }
-
+ PyErr_Format(PyExc_ValueError, "Python operator, error using return value from \"%s\"\n", ot->idname);
+ BPy_errors_to_report(op ? op->reports:NULL);
ret_flag = OPERATOR_CANCELLED;
}
/* there is no need to copy the py keyword dict modified by
@@ -173,7 +201,7 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat
* If we ever want to do this and use the props again,
* it can be done with - pyrna_pydict_to_props(op->ptr, kw, "")
*/
-
+
Py_DECREF(ret);
}
@@ -186,7 +214,7 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat
BPY_flag_def *flag_def = pyop_ret_flags;
strcpy(flag_str, "");
-
+
while(flag_def->name) {
if (ret_flag & flag_def->flag) {
if(flag_str[1])
@@ -213,19 +241,67 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat
static int PYTHON_OT_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
- return PYTHON_OT_generic(PYOP_INVOKE, C, op->type, op, event);
+ return PYTHON_OT_generic(PYOP_INVOKE, C, op->type, op, event, NULL);
}
static int PYTHON_OT_execute(bContext *C, wmOperator *op)
{
- return PYTHON_OT_generic(PYOP_EXEC, C, op->type, op, NULL);
+ return PYTHON_OT_generic(PYOP_EXEC, C, op->type, op, NULL, NULL);
}
static int PYTHON_OT_poll(bContext *C, wmOperatorType *ot)
{
- return PYTHON_OT_generic(PYOP_POLL, C, ot, NULL, NULL);
+ return PYTHON_OT_generic(PYOP_POLL, C, ot, NULL, NULL, NULL);
}
+static void PYTHON_OT_draw(bContext *C, wmOperator *op, uiLayout *layout)
+{
+ PYTHON_OT_generic(PYOP_DRAW, C, op->type, op, NULL, layout);
+}
+
+
+
+void operator_wrapper(wmOperatorType *ot, void *userdata)
+{
+ /* take care not to overwrite anything set in
+ * WM_operatortype_append_ptr before opfunc() is called */
+ StructRNA *srna = ot->srna;
+ *ot= *((wmOperatorType *)userdata);
+ ot->srna= srna; /* restore */
+
+ RNA_struct_blender_type_set(ot->ext.srna, ot);
+
+
+ /* Can't use this because it returns a dict proxy
+ *
+ * item= PyObject_GetAttrString(py_class, "__dict__");
+ */
+ {
+ PyObject *py_class = ot->ext.data;
+ PyObject *item= ((PyTypeObject*)py_class)->tp_dict;
+ if(item) {
+ /* only call this so pyrna_deferred_register_props gives a useful error
+ * WM_operatortype_append_ptr will call RNA_def_struct_identifier
+ * later */
+ RNA_def_struct_identifier(ot->srna, ot->idname);
+
+ if(pyrna_deferred_register_props(ot->srna, item)!=0) {
+ /* failed to register operator props */
+ PyErr_Print();
+ PyErr_Clear();
+
+ }
+ }
+ else {
+ PyErr_Clear();
+ }
+ }
+}
+
+
+
+
+
void PYTHON_OT_wrapper(wmOperatorType *ot, void *userdata)
{
PyObject *py_class = (PyObject *)userdata;
@@ -249,8 +325,8 @@ void PYTHON_OT_wrapper(wmOperatorType *ot, void *userdata)
item= PyObject_GetAttrString(py_class, PYOP_ATTR_DESCRIPTION);
ot->description= (item && PyUnicode_Check(item)) ? _PyUnicode_AsString(item):"undocumented python operator";
Py_XDECREF(item);
-
- /* api callbacks, detailed checks dont on adding */
+
+ /* api callbacks, detailed checks dont on adding */
if (PyObject_HasAttrString(py_class, "invoke"))
ot->invoke= PYTHON_OT_invoke;
//else
@@ -260,9 +336,11 @@ void PYTHON_OT_wrapper(wmOperatorType *ot, void *userdata)
ot->exec= PYTHON_OT_execute;
if (PyObject_HasAttrString(py_class, "poll"))
ot->pyop_poll= PYTHON_OT_poll;
-
+ if (PyObject_HasAttrString(py_class, "draw"))
+ ot->ui= PYTHON_OT_draw;
+
ot->pyop_data= userdata;
-
+
/* flags */
ot->flag= 0;
@@ -306,14 +384,88 @@ void PYTHON_OT_wrapper(wmOperatorType *ot, void *userdata)
}
}
+void PYTHON_OT_MACRO_wrapper(wmOperatorType *ot, void *userdata)
+{
+ PyObject *py_class = (PyObject *)userdata;
+ PyObject *item;
+
+ /* identifiers */
+ item= PyObject_GetAttrString(py_class, PYOP_ATTR_IDNAME_BL);
+ ot->idname= _PyUnicode_AsString(item);
+ Py_DECREF(item);
+
+ item= PyObject_GetAttrString(py_class, PYOP_ATTR_UINAME);
+ if (item) {
+ ot->name= _PyUnicode_AsString(item);
+ Py_DECREF(item);
+ }
+ else {
+ ot->name= ot->idname;
+ PyErr_Clear();
+ }
+
+ item= PyObject_GetAttrString(py_class, PYOP_ATTR_DESCRIPTION);
+ ot->description= (item && PyUnicode_Check(item)) ? _PyUnicode_AsString(item):"undocumented python operator";
+ Py_XDECREF(item);
+
+ if (PyObject_HasAttrString(py_class, "poll"))
+ ot->pyop_poll= PYTHON_OT_poll;
+ if (PyObject_HasAttrString(py_class, "draw"))
+ ot->ui= PYTHON_OT_draw;
+
+ ot->pyop_data= userdata;
+
+ /* flags */
+ ot->flag= OPTYPE_MACRO; /* macro at least */
+
+ item= PyObject_GetAttrString(py_class, PYOP_ATTR_REGISTER);
+ if (item) {
+ ot->flag |= PyObject_IsTrue(item)!=0 ? OPTYPE_REGISTER:0;
+ Py_DECREF(item);
+ }
+ else {
+ PyErr_Clear();
+ }
+ item= PyObject_GetAttrString(py_class, PYOP_ATTR_UNDO);
+ if (item) {
+ ot->flag |= PyObject_IsTrue(item)!=0 ? OPTYPE_UNDO:0;
+ Py_DECREF(item);
+ }
+ else {
+ PyErr_Clear();
+ }
+
+ /* Can't use this because it returns a dict proxy
+ *
+ * item= PyObject_GetAttrString(py_class, "__dict__");
+ */
+ item= ((PyTypeObject*)py_class)->tp_dict;
+ if(item) {
+ /* only call this so pyrna_deferred_register_props gives a useful error
+ * WM_operatortype_append_macro_ptr will call RNA_def_struct_identifier
+ * later */
+ RNA_def_struct_identifier(ot->srna, ot->idname);
+
+ if(pyrna_deferred_register_props(ot->srna, item)!=0) {
+ /* failed to register operator props */
+ PyErr_Print();
+ PyErr_Clear();
+
+ }
+ }
+ else {
+ PyErr_Clear();
+ }
+}
+
/* pyOperators - Operators defined IN Python */
PyObject *PYOP_wrap_add(PyObject *self, PyObject *py_class)
-{
+{
PyObject *base_class, *item;
wmOperatorType *ot;
-
-
+
+
char *idname= NULL;
char idname_bl[OP_MAX_TYPENAME]; /* converted to blender syntax */
@@ -324,6 +476,7 @@ PyObject *PYOP_wrap_add(PyObject *self, PyObject *py_class)
{"execute", 'f', 2, -1, BPY_CLASS_ATTR_OPTIONAL},
{"invoke", 'f', 3, -1, BPY_CLASS_ATTR_OPTIONAL},
{"poll", 'f', 2, -1, BPY_CLASS_ATTR_OPTIONAL},
+ {"draw", 'f', 2, -1, BPY_CLASS_ATTR_OPTIONAL},
{NULL, 0, 0, 0}
};
@@ -355,7 +508,7 @@ PyObject *PYOP_wrap_add(PyObject *self, PyObject *py_class)
Py_DECREF(item);
/* end annoying conversion! */
-
+
/* remove if it already exists */
if ((ot=WM_operatortype_exists(idname))) {
if(ot->pyop_data) {
@@ -363,13 +516,123 @@ PyObject *PYOP_wrap_add(PyObject *self, PyObject *py_class)
}
WM_operatortype_remove(idname);
}
-
+
Py_INCREF(py_class);
WM_operatortype_append_ptr(PYTHON_OT_wrapper, py_class);
Py_RETURN_NONE;
}
+/* pyOperators - Macro Operators defined IN Python */
+PyObject *PYOP_wrap_add_macro(PyObject *self, PyObject *py_class)
+{
+ PyObject *base_class, *item;
+ wmOperatorType *ot;
+
+
+ char *idname= NULL;
+ char idname_bl[OP_MAX_TYPENAME]; /* converted to blender syntax */
+
+ static struct BPY_class_attr_check pyop_class_attr_values[]= {
+ {PYOP_ATTR_IDNAME, 's', -1, OP_MAX_TYPENAME-3, 0}, /* -3 because a.b -> A_OT_b */
+ {PYOP_ATTR_UINAME, 's', -1,-1, BPY_CLASS_ATTR_OPTIONAL},
+ {PYOP_ATTR_DESCRIPTION, 's', -1,-1, BPY_CLASS_ATTR_NONE_OK},
+ {"poll", 'f', 2, -1, BPY_CLASS_ATTR_OPTIONAL},
+ {"draw", 'f', 2, -1, BPY_CLASS_ATTR_OPTIONAL},
+ {NULL, 0, 0, 0}
+ };
+
+ //PyObject bpy_mod= PyDict_GetItemString(PyEval_GetGlobals(), "bpy");
+ PyObject *bpy_mod= PyImport_ImportModuleLevel("bpy", NULL, NULL, NULL, 0);
+ base_class = PyObject_GetAttrStringArgs(bpy_mod, 2, "types", "Macro");
+ Py_DECREF(bpy_mod);
+
+ if(BPY_class_validate("Macro", py_class, base_class, pyop_class_attr_values, NULL) < 0) {
+ return NULL; /* BPY_class_validate sets the error */
+ }
+ Py_DECREF(base_class);
+
+ /* class name is used for operator ID - this can be changed later if we want */
+ item= PyObject_GetAttrString(py_class, PYOP_ATTR_IDNAME);
+ idname = _PyUnicode_AsString(item);
+
+
+ /* annoying conversion! */
+ WM_operator_bl_idname(idname_bl, idname);
+ Py_DECREF(item);
+
+ item= PyUnicode_FromString(idname_bl);
+ PyObject_SetAttrString(py_class, PYOP_ATTR_IDNAME_BL, item);
+ idname = _PyUnicode_AsString(item);
+ Py_DECREF(item);
+ /* end annoying conversion! */
+
+
+ /* remove if it already exists */
+ if ((ot=WM_operatortype_exists(idname))) {
+ if(ot->pyop_data) {
+ Py_XDECREF((PyObject*)ot->pyop_data);
+ }
+ WM_operatortype_remove(idname);
+ }
+
+ Py_INCREF(py_class);
+ WM_operatortype_append_macro_ptr(PYTHON_OT_MACRO_wrapper, py_class);
+
+ Py_RETURN_NONE;
+}
+
+PyObject *PYOP_wrap_macro_define(PyObject *self, PyObject *args)
+{
+ wmOperatorType *ot;
+ wmOperatorTypeMacro *otmacro;
+ PyObject *macro;
+ PyObject *item;
+ PointerRNA ptr_otmacro;
+
+ char *opname;
+ char *macroname;
+
+ if (!PyArg_ParseTuple(args, "Os:_bpy.ops.macro_define", &macro, &opname))
+ return NULL;
+
+ if (WM_operatortype_exists(opname) == NULL) {
+ PyErr_Format(PyExc_ValueError, "Macro Define: '%s' is not a valid operator id", opname);
+ return NULL;
+ }
+
+ /* identifiers */
+ item= PyObject_GetAttrString(macro, PYOP_ATTR_IDNAME_BL);
+
+ if (!item) {
+ item= PyObject_GetAttrString(macro, PYOP_ATTR_IDNAME);
+
+ if (!item) {
+ PyErr_Format(PyExc_ValueError, "Macro Define: not a valid Macro class");
+ } else {
+ macroname= _PyUnicode_AsString(item);
+ PyErr_Format(PyExc_ValueError, "Macro Define: '%s' hasn't been registered yet", macroname);
+ }
+ return NULL;
+ }
+
+ macroname= _PyUnicode_AsString(item);
+
+ ot = WM_operatortype_exists(macroname);
+
+ if (!ot) {
+ PyErr_Format(PyExc_ValueError, "Macro Define: '%s' is not a valid macro or hasn't been registered yet", macroname);
+ return NULL;
+ }
+
+ otmacro = WM_operatortype_macro_define(ot, opname);
+
+ RNA_pointer_create(NULL, &RNA_OperatorTypeMacro, otmacro, &ptr_otmacro);
+
+ return pyrna_struct_CreatePyObject(&ptr_otmacro);
+}
+
+
PyObject *PYOP_wrap_remove(PyObject *self, PyObject *value)
{
PyObject *py_class;
@@ -406,6 +669,3 @@ PyObject *PYOP_wrap_remove(PyObject *self, PyObject *value)
Py_RETURN_NONE;
}
-
-
-
diff --git a/source/blender/python/intern/bpy_operator_wrap.h b/source/blender/python/intern/bpy_operator_wrap.h
index 9718e2d6e65..c9398551af0 100644
--- a/source/blender/python/intern/bpy_operator_wrap.h
+++ b/source/blender/python/intern/bpy_operator_wrap.h
@@ -29,6 +29,8 @@
/* these are used for operator methods, used by bpy_operator.c */
PyObject *PYOP_wrap_add(PyObject *self, PyObject *args);
+PyObject *PYOP_wrap_add_macro(PyObject *self, PyObject *args);
+PyObject *PYOP_wrap_macro_define(PyObject *self, PyObject *args);
PyObject *PYOP_wrap_remove(PyObject *self, PyObject *args);
#endif
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c
index cdf4f518b51..8eda19d8198 100644
--- a/source/blender/python/intern/bpy_rna.c
+++ b/source/blender/python/intern/bpy_rna.c
@@ -39,6 +39,9 @@
#include "BKE_global.h" /* evil G.* */
#include "BKE_report.h"
+#include "BKE_animsys.h"
+#include "BKE_fcurve.h"
+
/* only for keyframing */
#include "DNA_scene_types.h"
#include "DNA_anim_types.h"
@@ -140,18 +143,20 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
PyObject *ret= NULL;
#ifdef USE_MATHUTILS
- int type, subtype, totdim;
+ int subtype, totdim;
int len;
+ /* disallow dynamic sized arrays to be wrapped since the size could change
+ * to a size mathutils does not support */
+ if ((RNA_property_type(prop) != PROP_FLOAT) || (RNA_property_flag(prop) & PROP_DYNAMIC))
+ return NULL;
+
len= RNA_property_array_length(ptr, prop);
- type= RNA_property_type(prop);
subtype= RNA_property_subtype(prop);
totdim= RNA_property_array_dimension(ptr, prop, NULL);
- if (type != PROP_FLOAT) return NULL;
-
if (totdim == 1 || (totdim == 2 && subtype == PROP_MATRIX)) {
- ret = pyrna_prop_CreatePyObject(ptr, prop);
+ ret = pyrna_prop_CreatePyObject(ptr, prop); /* owned by the Mathutils PyObject */
switch(RNA_property_subtype(prop)) {
case PROP_TRANSLATION:
@@ -159,6 +164,7 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
case PROP_VELOCITY:
case PROP_ACCELERATION:
case PROP_XYZ:
+ case PROP_XYZ|PROP_UNIT_LENGTH:
if(len>=2 && len <= 4) {
PyObject *vec_cb= newVectorObject_cb(ret, len, mathutils_rna_array_cb_index, FALSE);
Py_DECREF(ret); /* the vector owns now */
@@ -374,41 +380,30 @@ static int pyrna_string_to_enum(PyObject *item, PointerRNA *ptr, PropertyRNA *pr
return 1;
}
-PyObject * pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop)
+static PyObject *pyrna_enum_to_py(PointerRNA *ptr, PropertyRNA *prop, int val)
{
- PyObject *ret;
- int type = RNA_property_type(prop);
+ PyObject *item, *ret= NULL;
- if (RNA_property_array_check(ptr, prop)) {
- return pyrna_py_from_array(ptr, prop);
- }
-
- /* see if we can coorce into a python type - PropertyType */
- switch (type) {
- case PROP_BOOLEAN:
- ret = PyBool_FromLong( RNA_property_boolean_get(ptr, prop) );
- break;
- case PROP_INT:
- ret = PyLong_FromSsize_t( (Py_ssize_t)RNA_property_int_get(ptr, prop) );
- break;
- case PROP_FLOAT:
- ret = PyFloat_FromDouble( RNA_property_float_get(ptr, prop) );
- break;
- case PROP_STRING:
- {
- char *buf;
- buf = RNA_property_string_get_alloc(ptr, prop, NULL, -1);
- ret = PyUnicode_FromString( buf );
- MEM_freeN(buf);
- break;
+ if(RNA_property_flag(prop) & PROP_ENUM_FLAG) {
+ const char *identifier[RNA_ENUM_BITFLAG_SIZE + 1];
+
+ ret= PySet_New(NULL);
+
+ if (RNA_property_enum_bitflag_identifiers(BPy_GetContext(), ptr, prop, val, identifier)) {
+ int index;
+
+ for(index=0; identifier[index]; index++) {
+ item= PyUnicode_FromString(identifier[index]);
+ PySet_Add(ret, item);
+ Py_DECREF(item);
+ }
+
+ }
}
- case PROP_ENUM:
- {
+ else {
const char *identifier;
- int val = RNA_property_enum_get(ptr, prop);
-
if (RNA_property_enum_identifier(BPy_GetContext(), ptr, prop, val, &identifier)) {
- ret = PyUnicode_FromString( identifier );
+ ret = PyUnicode_FromString(identifier);
} else {
EnumPropertyItem *item;
int free= FALSE;
@@ -417,11 +412,11 @@ PyObject * pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop)
* right values, python code should not generate error for that */
RNA_property_enum_items(BPy_GetContext(), ptr, prop, &item, NULL, &free);
if(item && item->identifier) {
- ret = PyUnicode_FromString( item->identifier );
+ ret= PyUnicode_FromString(item->identifier);
}
else {
- char *ptr_name= RNA_struct_name_get_alloc(ptr, NULL, FALSE);
-
+ char *ptr_name= RNA_struct_name_get_alloc(ptr, NULL, FALSE);
+
/* prefer not fail silently incase of api errors, maybe disable it later */
printf("RNA Warning: Current value \"%d\" matches no enum in '%s', '%s', '%s'\n", val, RNA_struct_identifier(ptr->type), ptr_name, RNA_property_identifier(prop));
@@ -431,8 +426,8 @@ PyObject * pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop)
PyErr_Warn(PyExc_RuntimeWarning, error_str);
#endif
- if(ptr_name)
- MEM_freeN(ptr_name);
+ if(ptr_name)
+ MEM_freeN(ptr_name);
ret = PyUnicode_FromString( "" );
}
@@ -443,7 +438,42 @@ PyObject * pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop)
/*PyErr_Format(PyExc_AttributeError, "RNA Error: Current value \"%d\" matches no enum", val);
ret = NULL;*/
}
+ }
+ return ret;
+}
+
+PyObject * pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop)
+{
+ PyObject *ret;
+ int type = RNA_property_type(prop);
+
+ if (RNA_property_array_check(ptr, prop)) {
+ return pyrna_py_from_array(ptr, prop);
+ }
+
+ /* see if we can coorce into a python type - PropertyType */
+ switch (type) {
+ case PROP_BOOLEAN:
+ ret = PyBool_FromLong( RNA_property_boolean_get(ptr, prop) );
+ break;
+ case PROP_INT:
+ ret = PyLong_FromSsize_t( (Py_ssize_t)RNA_property_int_get(ptr, prop) );
+ break;
+ case PROP_FLOAT:
+ ret = PyFloat_FromDouble( RNA_property_float_get(ptr, prop) );
+ break;
+ case PROP_STRING:
+ {
+ char *buf;
+ buf = RNA_property_string_get_alloc(ptr, prop, NULL, -1);
+ ret = PyUnicode_FromString( buf );
+ MEM_freeN(buf);
+ break;
+ }
+ case PROP_ENUM:
+ {
+ ret= pyrna_enum_to_py(ptr, prop, RNA_property_enum_get(ptr, prop));
break;
}
case PROP_POINTER:
@@ -529,7 +559,7 @@ int pyrna_pydict_to_props(PointerRNA *ptr, PyObject *kw, int all_args, const cha
static PyObject * pyrna_func_call(PyObject *self, PyObject *args, PyObject *kw);
-PyObject *pyrna_func_to_py(BPy_DummyPointerRNA *pyrna, FunctionRNA *func)
+static PyObject *pyrna_func_to_py(BPy_DummyPointerRNA *pyrna, FunctionRNA *func)
{
static PyMethodDef func_meth = {"<generic rna function>", (PyCFunction)pyrna_func_call, METH_VARARGS|METH_KEYWORDS, "python rna function"};
PyObject *self;
@@ -554,6 +584,7 @@ PyObject *pyrna_func_to_py(BPy_DummyPointerRNA *pyrna, FunctionRNA *func)
}
+
int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *value, const char *error_prefix)
{
/* XXX hard limits should be checked here */
@@ -648,28 +679,36 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v
}
case PROP_ENUM:
{
- int val, i;
+ int val= 0, tmpval;
if (PyUnicode_Check(value)) {
if (!pyrna_string_to_enum(value, ptr, prop, &val, error_prefix))
return -1;
}
- else if (PyTuple_Check(value)) {
- /* tuple of enum items, concatenate all values with OR */
- val= 0;
- for (i= 0; i < PyTuple_Size(value); i++) {
- int tmpval;
-
- /* PyTuple_GET_ITEM returns a borrowed reference */
- if (!pyrna_string_to_enum(PyTuple_GET_ITEM(value, i), ptr, prop, &tmpval, error_prefix))
- return -1;
+ else if (PyAnySet_Check(value)) {
+ if(RNA_property_flag(prop) & PROP_ENUM_FLAG) {
+ /* set of enum items, concatenate all values with OR */
+
+ /* set looping */
+ Py_ssize_t pos = 0;
+ PyObject *key;
+ long hash;
- val |= tmpval;
+ while (_PySet_NextEntry(value, &pos, &key, &hash)) {
+ if (!pyrna_string_to_enum(key, ptr, prop, &tmpval, error_prefix))
+ return -1;
+
+ val |= tmpval;
+ }
+ }
+ else {
+ PyErr_Format(PyExc_TypeError, "%.200s, %.200s.%.200s is not a bitflag enum type", error_prefix, RNA_struct_identifier(ptr->type), RNA_property_identifier(prop));
+ return -1;
}
}
else {
char *enum_str= pyrna_enum_as_string(ptr, prop);
- PyErr_Format(PyExc_TypeError, "%.200s expected a string enum or a tuple of strings in (%.200s)", error_prefix, enum_str);
+ PyErr_Format(PyExc_TypeError, "%.200s expected a string enum or a set of strings in (%.200s)", error_prefix, enum_str);
MEM_freeN(enum_str);
return -1;
}
@@ -1129,21 +1168,28 @@ static PyMappingMethods pyrna_prop_as_mapping = {
static int pyrna_prop_contains(BPy_PropertyRNA *self, PyObject *value)
{
PointerRNA newptr; /* not used, just so RNA_property_collection_lookup_string runs */
- char *keyname = _PyUnicode_AsString(value);
- if(keyname==NULL) {
- PyErr_SetString(PyExc_TypeError, "PropertyRNA - key in prop, key must be a string type");
- return -1;
- }
+ if (RNA_property_type(self->prop) == PROP_COLLECTION) {
+ /* key in dict style check */
+ char *keyname = _PyUnicode_AsString(value);
- if (RNA_property_type(self->prop) != PROP_COLLECTION) {
- PyErr_SetString(PyExc_TypeError, "PropertyRNA - key in prop, is only valid for collection types");
- return -1;
- }
+ if(keyname==NULL) {
+ PyErr_SetString(PyExc_TypeError, "PropertyRNA - key in prop, key must be a string type");
+ return -1;
+ }
- if (RNA_property_collection_lookup_string(&self->ptr, self->prop, keyname, &newptr))
- return 1;
+ if (RNA_property_collection_lookup_string(&self->ptr, self->prop, keyname, &newptr))
+ return 1;
+ }
+ else if (RNA_property_array_check(&self->ptr, self->prop)) {
+ /* value in list style check */
+ return pyrna_array_contains_py(&self->ptr, self->prop, value);
+ }
+ else {
+ PyErr_SetString(PyExc_TypeError, "PropertyRNA - type is not an array or a collection");
+ return -1;
+ }
return 0;
}
@@ -1158,7 +1204,7 @@ static int pyrna_struct_contains(BPy_StructRNA *self, PyObject *value)
return -1;
}
- if(RNA_struct_idproperties_check(&self->ptr)==0) {
+ if(RNA_struct_idproperties_check(self->ptr.type)==0) {
PyErr_SetString( PyExc_TypeError, "this type doesnt support IDProperties");
return -1;
}
@@ -1212,7 +1258,7 @@ static PyObject *pyrna_struct_subscript( BPy_StructRNA *self, PyObject *key )
IDProperty *group, *idprop;
char *name= _PyUnicode_AsString(key);
- if(RNA_struct_idproperties_check(&self->ptr)==0) {
+ if(RNA_struct_idproperties_check(self->ptr.type)==0) {
PyErr_SetString( PyExc_TypeError, "this type doesn't support IDProperties");
return NULL;
}
@@ -1261,7 +1307,7 @@ static PyObject *pyrna_struct_keys(BPy_PropertyRNA *self)
{
IDProperty *group;
- if(RNA_struct_idproperties_check(&self->ptr)==0) {
+ if(RNA_struct_idproperties_check(self->ptr.type)==0) {
PyErr_SetString( PyExc_TypeError, "this type doesnt support IDProperties");
return NULL;
}
@@ -1278,7 +1324,7 @@ static PyObject *pyrna_struct_items(BPy_PropertyRNA *self)
{
IDProperty *group;
- if(RNA_struct_idproperties_check(&self->ptr)==0) {
+ if(RNA_struct_idproperties_check(self->ptr.type)==0) {
PyErr_SetString( PyExc_TypeError, "this type doesnt support IDProperties");
return NULL;
}
@@ -1296,7 +1342,7 @@ static PyObject *pyrna_struct_values(BPy_PropertyRNA *self)
{
IDProperty *group;
- if(RNA_struct_idproperties_check(&self->ptr)==0) {
+ if(RNA_struct_idproperties_check(self->ptr.type)==0) {
PyErr_SetString( PyExc_TypeError, "this type doesnt support IDProperties");
return NULL;
}
@@ -1356,7 +1402,7 @@ static PyObject *pyrna_struct_driver_add(BPy_StructRNA *self, PyObject *args)
char *path, *path_full;
int index= -1; /* default to all */
PropertyRNA *prop;
- PyObject *result;
+ PyObject *ret;
if (!PyArg_ParseTuple(args, "s|i:driver_add", &path, &index))
return NULL;
@@ -1385,13 +1431,40 @@ static PyObject *pyrna_struct_driver_add(BPy_StructRNA *self, PyObject *args)
return NULL;
}
- result= PyBool_FromLong( ANIM_add_driver((ID *)self->ptr.id.data, path_full, index, 0, DRIVER_TYPE_PYTHON));
+ if(ANIM_add_driver((ID *)self->ptr.id.data, path_full, index, 0, DRIVER_TYPE_PYTHON)) {
+ ID *id= self->ptr.id.data;
+ AnimData *adt= BKE_animdata_from_id(id);
+ FCurve *fcu;
+
+ PointerRNA tptr;
+ PyObject *item;
+
+ if(index == -1) { /* all, use a list */
+ int i= 0;
+ ret= PyList_New(0);
+ while((fcu= list_find_fcurve(&adt->drivers, path_full, i++))) {
+ RNA_pointer_create(id, &RNA_FCurve, fcu, &tptr);
+ item= pyrna_struct_CreatePyObject(&tptr);
+ PyList_Append(ret, item);
+ Py_DECREF(item);
+ }
+ }
+ else {
+ fcu= list_find_fcurve(&adt->drivers, path_full, index);
+ RNA_pointer_create(id, &RNA_FCurve, fcu, &tptr);
+ ret= pyrna_struct_CreatePyObject(&tptr);
+ }
+ }
+ else {
+ ret= Py_None;
+ Py_INCREF(ret);
+ }
+
MEM_freeN(path_full);
- return result;
+ return ret;
}
-
static PyObject *pyrna_struct_is_property_set(BPy_StructRNA *self, PyObject *args)
{
char *name;
@@ -1434,6 +1507,59 @@ static PyObject *pyrna_struct_path_resolve(BPy_StructRNA *self, PyObject *value)
Py_RETURN_NONE;
}
+static PyObject *pyrna_struct_path_to_id(BPy_StructRNA *self, PyObject *args)
+{
+ char *name= NULL;
+ char *path;
+ PropertyRNA *prop;
+ PyObject *ret;
+
+ if (!PyArg_ParseTuple(args, "|s:path_to_id", &name))
+ return NULL;
+
+ if(name) {
+ prop= RNA_struct_find_property(&self->ptr, name);
+ if(prop==NULL) {
+ PyErr_Format(PyExc_TypeError, "path_to_id(\"%.200s\") not found", name);
+ return NULL;
+ }
+
+ path= RNA_path_from_ID_to_property(&self->ptr, prop);
+ }
+ else {
+ path= RNA_path_from_ID_to_struct(&self->ptr);
+ }
+
+ if(path==NULL) {
+ if(name) PyErr_Format(PyExc_TypeError, "%.200s.path_to_id(\"%s\") found but does not support path creation", RNA_struct_identifier(self->ptr.type), name);
+ else PyErr_Format(PyExc_TypeError, "%.200s.path_to_id() does not support path creation for this type", name);
+ return NULL;
+ }
+
+ ret= PyUnicode_FromString(path);
+ MEM_freeN(path);
+
+ return ret;
+}
+
+static PyObject *pyrna_prop_path_to_id(BPy_PropertyRNA *self)
+{
+ char *path;
+ PropertyRNA *prop = self->prop;
+ PyObject *ret;
+
+ path= RNA_path_from_ID_to_property(&self->ptr, self->prop);
+
+ if(path==NULL) {
+ PyErr_Format(PyExc_TypeError, "%.200s.%.200s.path_to_id() does not support path creation for this type", RNA_struct_identifier(self->ptr.type), RNA_property_identifier(prop));
+ return NULL;
+ }
+
+ ret= PyUnicode_FromString(path);
+ MEM_freeN(path);
+
+ return ret;
+}
static void pyrna_dir_members_py(PyObject *list, PyObject *self)
{
@@ -1532,14 +1658,6 @@ static PyObject *pyrna_struct_dir(BPy_StructRNA *self)
BLI_freelistN(&lb);
}
-
- /* Hard coded names */
- if(self->ptr.id.data) {
- pystring = PyUnicode_FromString("id_data");
- PyList_Append(ret, pystring);
- Py_DECREF(pystring);
- }
-
return ret;
}
@@ -1553,7 +1671,7 @@ static PyObject *pyrna_struct_getattro( BPy_StructRNA *self, PyObject *pyname )
if(name[0]=='_') { // rna can't start with a "_", so for __dict__ and similar we can skip using rna lookups
/* annoying exception, maybe we need to have different types for this... */
- if((strcmp(name, "__getitem__")==0 || strcmp(name, "__setitem__")==0) && !RNA_struct_idproperties_check(&self->ptr)) {
+ if((strcmp(name, "__getitem__")==0 || strcmp(name, "__setitem__")==0) && !RNA_struct_idproperties_check(self->ptr.type)) {
PyErr_SetString(PyExc_AttributeError, "StructRNA - no __getitem__ support for this type");
ret = NULL;
}
@@ -1606,17 +1724,6 @@ static PyObject *pyrna_struct_getattro( BPy_StructRNA *self, PyObject *pyname )
BLI_freelistN(&newlb);
}
- else if (strcmp(name, "id_data")==0) { /* XXX - hard coded */
- if(self->ptr.id.data) {
- PointerRNA id_ptr;
- RNA_id_pointer_create((ID *)self->ptr.id.data, &id_ptr);
- ret = pyrna_struct_CreatePyObject(&id_ptr);
- }
- else {
- ret = Py_None;
- Py_INCREF(ret);
- }
- }
else {
#if 0
PyErr_Format( PyExc_AttributeError, "StructRNA - Attribute \"%.200s\" not found", name);
@@ -1653,19 +1760,22 @@ static int pyrna_struct_setattro( BPy_StructRNA *self, PyObject *pyname, PyObjec
PropertyRNA *prop = RNA_struct_find_property(&self->ptr, name);
if (prop==NULL) {
+ return PyObject_GenericSetAttr((PyObject *)self, pyname, value);
+#if 0
// XXX - This currently allows anything to be assigned to an rna prop, need to see how this should be used
// but for now it makes porting scripts confusing since it fails silently.
// edit: allowing this for setting classes internal attributes.
// edit: allow this for any attribute that alredy exists as a python attr
if ( (name[0]=='_' /* || pyrna_struct_pydict_contains(self, pyname) */ ) &&
!BPy_StructRNA_CheckExact(self) &&
- PyObject_GenericSetAttr((PyObject *)self, pyname, value) >= 0) {
+
return 0;
} else
{
PyErr_Format( PyExc_AttributeError, "StructRNA - Attribute \"%.200s\" not found", name);
return -1;
}
+#endif
}
if (!RNA_property_editable(&self->ptr, prop)) {
@@ -1785,6 +1895,17 @@ static PyObject *pyrna_prop_remove(BPy_PropertyRNA *self, PyObject *value)
return ret;
}
+static PyObject *pyrna_struct_get_id_data(BPy_StructRNA *self)
+{
+ if(self->ptr.id.data) {
+ PointerRNA id_ptr;
+ RNA_id_pointer_create((ID *)self->ptr.id.data, &id_ptr);
+ return pyrna_struct_CreatePyObject(&id_ptr);
+ }
+
+ Py_RETURN_NONE;
+}
+
/*****************************************************************************/
/* Python attributes get/set structure: */
/*****************************************************************************/
@@ -1795,6 +1916,11 @@ static PyGetSetDef pyrna_prop_getseters[] = {
};
#endif
+static PyGetSetDef pyrna_struct_getseters[] = {
+ {"id_data", (getter)pyrna_struct_get_id_data, (setter)NULL, "The ID data this datablock is from, (not available for all data)", NULL},
+ {NULL,NULL,NULL,NULL,NULL} /* Sentinel */
+};
+
static PyObject *pyrna_prop_keys(BPy_PropertyRNA *self)
{
PyObject *ret;
@@ -1890,6 +2016,34 @@ static PyObject *pyrna_prop_values(BPy_PropertyRNA *self)
return ret;
}
+static PyObject *pyrna_struct_get(BPy_StructRNA *self, PyObject *args)
+{
+ IDProperty *group, *idprop;
+
+ char *key;
+ PyObject* def = Py_None;
+
+ if (!PyArg_ParseTuple(args, "s|O:get", &key, &def))
+ return NULL;
+
+ /* mostly copied from BPy_IDGroup_Map_GetItem */
+ if(RNA_struct_idproperties_check(self->ptr.type)==0) {
+ PyErr_SetString( PyExc_TypeError, "this type doesn't support IDProperties");
+ return NULL;
+ }
+
+ group= RNA_struct_idproperties(&self->ptr, 0);
+ if(group) {
+ idprop= IDP_GetPropertyFromGroup(group, key);
+
+ if(idprop)
+ return BPy_IDGroup_WrapData(self->ptr.id.data, idprop);
+ }
+
+ Py_INCREF(def);
+ return def;
+}
+
static PyObject *pyrna_prop_get(BPy_PropertyRNA *self, PyObject *args)
{
PointerRNA newptr;
@@ -2115,6 +2269,9 @@ static PyObject *foreach_getset(BPy_PropertyRNA *self, PyObject *args, int set)
}
}
+ if(array)
+ PyMem_Free(array);
+
if(PyErr_Occurred()) {
/* Maybe we could make our own error */
PyErr_Print();
@@ -2126,9 +2283,6 @@ static PyObject *foreach_getset(BPy_PropertyRNA *self, PyObject *args, int set)
return NULL;
}
- if(array)
- PyMem_Free(array);
-
Py_RETURN_NONE;
}
@@ -2182,12 +2336,15 @@ static struct PyMethodDef pyrna_struct_methods[] = {
{"values", (PyCFunction)pyrna_struct_values, METH_NOARGS, NULL},
{"items", (PyCFunction)pyrna_struct_items, METH_NOARGS, NULL},
+ {"get", (PyCFunction)pyrna_struct_get, METH_VARARGS, NULL},
+
/* maybe this become and ID function */
{"keyframe_insert", (PyCFunction)pyrna_struct_keyframe_insert, METH_VARARGS, NULL},
{"driver_add", (PyCFunction)pyrna_struct_driver_add, METH_VARARGS, NULL},
{"is_property_set", (PyCFunction)pyrna_struct_is_property_set, METH_VARARGS, NULL},
{"is_property_hidden", (PyCFunction)pyrna_struct_is_property_hidden, METH_VARARGS, NULL},
{"path_resolve", (PyCFunction)pyrna_struct_path_resolve, METH_O, NULL},
+ {"path_to_id", (PyCFunction)pyrna_struct_path_to_id, METH_VARARGS, NULL},
{"__dir__", (PyCFunction)pyrna_struct_dir, METH_NOARGS, NULL},
{NULL, NULL, 0, NULL}
};
@@ -2203,6 +2360,9 @@ static struct PyMethodDef pyrna_prop_methods[] = {
{"add", (PyCFunction)pyrna_prop_add, METH_NOARGS, NULL},
{"remove", (PyCFunction)pyrna_prop_remove, METH_O, NULL},
+ /* almost the same as the srna function */
+ {"path_to_id", (PyCFunction)pyrna_prop_path_to_id, METH_NOARGS, NULL},
+
/* array accessor function */
{"foreach_get", (PyCFunction)pyrna_prop_foreach_get, METH_VARARGS, NULL},
{"foreach_set", (PyCFunction)pyrna_prop_foreach_set, METH_VARARGS, NULL},
@@ -2300,22 +2460,7 @@ PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *data)
}
case PROP_ENUM:
{
- const char *identifier;
- int val = *(int*)data;
-
- if (RNA_property_enum_identifier(BPy_GetContext(), ptr, prop, val, &identifier)) {
- ret = PyUnicode_FromString( identifier );
- } else {
- /* prefer not fail silently incase of api errors, maybe disable it later */
- char error_str[128];
- sprintf(error_str, "RNA Warning: Current value \"%d\" matches no enum", val);
- PyErr_Warn(PyExc_RuntimeWarning, error_str);
-
- ret = PyUnicode_FromString( "" );
- /*PyErr_Format(PyExc_AttributeError, "RNA Error: Current value \"%d\" matches no enum", val);
- ret = NULL;*/
- }
-
+ ret= pyrna_enum_to_py(ptr, prop, *(int*)data);
break;
}
case PROP_POINTER:
@@ -2523,6 +2668,9 @@ static PyObject * pyrna_func_call(PyObject *self, PyObject *args, PyObject *kw)
RNA_parameter_list_begin(&parms, &iter);
for(; iter.valid; RNA_parameter_list_next(&iter)) {
parm= iter.parm;
+ if(RNA_property_flag(parm) & PROP_RETURN)
+ continue;
+
BLI_dynstr_appendf(good_args, first ? "%s" : ", %s", RNA_property_identifier(parm));
first= FALSE;
}
@@ -2636,7 +2784,7 @@ PyTypeObject pyrna_struct_Type = {
/*** Attribute descriptor and subclassing stuff ***/
pyrna_struct_methods, /* struct PyMethodDef *tp_methods; */
NULL, /* struct PyMemberDef *tp_members; */
- NULL, /* struct PyGetSetDef *tp_getset; */
+ pyrna_struct_getseters, /* struct PyGetSetDef *tp_getset; */
NULL, /* struct _typeobject *tp_base; */
NULL, /* PyObject *tp_dict; */
NULL, /* descrgetfunc tp_descr_get; */
@@ -2863,14 +3011,20 @@ static PyObject* pyrna_srna_ExternalType(StructRNA *srna)
/* sanity check, could skip this unless in debug mode */
if(newclass) {
PyObject *base_compare= pyrna_srna_PyBase(srna);
- PyObject *bases= PyObject_GetAttrString(newclass, "__bases__");
-
- if(PyTuple_GET_SIZE(bases)) {
+ //PyObject *slots= PyObject_GetAttrString(newclass, "__slots__"); // cant do this because it gets superclasses values!
+ //PyObject *bases= PyObject_GetAttrString(newclass, "__bases__"); // can do this but faster not to.
+ PyObject *bases= ((PyTypeObject *)newclass)->tp_bases;
+ PyObject *slots = PyDict_GetItemString(((PyTypeObject *)newclass)->tp_dict, "__slots__");
+
+ if(slots==NULL) {
+ fprintf(stderr, "pyrna_srna_ExternalType: expected class '%s' to have __slots__ defined\n\nSee bpy_types.py\n", idname);
+ newclass= NULL;
+ }
+ else if(PyTuple_GET_SIZE(bases)) {
PyObject *base= PyTuple_GET_ITEM(bases, 0);
if(base_compare != base) {
- PyLineSpit();
- fprintf(stderr, "pyrna_srna_ExternalType: incorrect subclassing of SRNA '%s'\n", idname);
+ fprintf(stderr, "pyrna_srna_ExternalType: incorrect subclassing of SRNA '%s'\nSee bpy_types.py\n", idname);
PyObSpit("Expected! ", base_compare);
newclass= NULL;
}
@@ -2879,8 +3033,6 @@ static PyObject* pyrna_srna_ExternalType(StructRNA *srna)
fprintf(stderr, "SRNA Subclassed: '%s'\n", idname);
}
}
-
- Py_DECREF(bases);
}
return newclass;
@@ -2913,13 +3065,12 @@ static PyObject* pyrna_srna_Subtype(StructRNA *srna)
if(!descr) descr= "(no docs)";
/* always use O not N when calling, N causes refcount errors */
- newclass = PyObject_CallFunction( (PyObject*)&PyType_Type, "s(O){ssss}", idname, py_base, "__module__","bpy.types", "__doc__",descr);
+ newclass = PyObject_CallFunction( (PyObject*)&PyType_Type, "s(O){sssss()}", idname, py_base, "__module__","bpy.types", "__doc__",descr, "__slots__");
/* newclass will now have 2 ref's, ???, probably 1 is internal since decrefing here segfaults */
/* PyObSpit("new class ref", newclass); */
if (newclass) {
-
/* srna owns one, and the other is owned by the caller */
pyrna_subtype_set_rna(newclass, srna);
@@ -3494,7 +3645,7 @@ PyObject *BPy_PointerProperty(PyObject *self, PyObject *args, PyObject *kw)
else if(srna) {
static char *kwlist[] = {"attr", "type", "name", "description", "hidden", NULL};
char *id=NULL, *name="", *description="";
- int hidden;
+ int hidden= 0;
PropertyRNA *prop;
StructRNA *ptype;
PyObject *type= Py_None;
@@ -3533,7 +3684,7 @@ PyObject *BPy_CollectionProperty(PyObject *self, PyObject *args, PyObject *kw)
else if(srna) {
static char *kwlist[] = {"attr", "type", "name", "description", "hidden", NULL};
char *id=NULL, *name="", *description="";
- int hidden;
+ int hidden= 0;
PropertyRNA *prop;
StructRNA *ptype;
PyObject *type= Py_None;
@@ -3564,11 +3715,15 @@ static int deferred_register_prop(StructRNA *srna, PyObject *item, PyObject *key
if(PyTuple_CheckExact(item) && PyTuple_GET_SIZE(item)==2) {
PyObject *py_func_ptr, *py_kw, *py_srna_cobject, *py_ret;
+ PyObject *(*pyfunc)(PyObject *, PyObject *, PyObject *);
if(PyArg_ParseTuple(item, "O!O!", &PyCObject_Type, &py_func_ptr, &PyDict_Type, &py_kw)) {
- PyObject *(*pyfunc)(PyObject *, PyObject *, PyObject *);
-
+ if(*_PyUnicode_AsString(key)=='_') {
+ PyErr_Format(PyExc_ValueError, "StructRNA \"%.200s\" registration error: %.200s could not register because the property starts with an '_'\n", RNA_struct_identifier(srna), _PyUnicode_AsString(key));
+ Py_DECREF(dummy_args);
+ return -1;
+ }
pyfunc = PyCObject_AsVoidPtr(py_func_ptr);
py_srna_cobject = PyCObject_FromVoidPtr(srna, NULL);
@@ -3669,13 +3824,12 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun
PyObject *item, *fitem;
PyObject *py_arg_count;
int i, flag, arg_count, func_arg_count;
- const char *identifier;
+ const char *py_class_name = ((PyTypeObject *)py_class)->tp_name; // __name__
+
if (base_class) {
if (!PyObject_IsSubclass(py_class, base_class)) {
- PyObject *name= PyObject_GetAttrString(base_class, "__name__");
- PyErr_Format( PyExc_TypeError, "expected %.200s subclass of class \"%.200s\"", class_type, name ? _PyUnicode_AsString(name):"<UNKNOWN>");
- Py_XDECREF(name);
+ PyErr_Format( PyExc_TypeError, "expected %.200s subclass of class \"%.200s\"", class_type, py_class_name);
return -1;
}
}
@@ -3697,7 +3851,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun
if (item==NULL) {
if ((flag & FUNC_REGISTER_OPTIONAL)==0) {
- PyErr_Format( PyExc_AttributeError, "expected %.200s class to have an \"%.200s\" attribute", class_type, RNA_function_identifier(func));
+ PyErr_Format( PyExc_AttributeError, "expected %.200s, %.200s class to have an \"%.200s\" attribute", class_type, py_class_name, RNA_function_identifier(func));
return -1;
}
@@ -3712,7 +3866,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun
fitem= item; /* py 3.x */
if (PyFunction_Check(fitem)==0) {
- PyErr_Format( PyExc_TypeError, "expected %.200s class \"%.200s\" attribute to be a function", class_type, RNA_function_identifier(func));
+ PyErr_Format( PyExc_TypeError, "expected %.200s, %.200s class \"%.200s\" attribute to be a function", class_type, py_class_name, RNA_function_identifier(func));
return -1;
}
@@ -3724,7 +3878,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun
Py_DECREF(py_arg_count);
if (arg_count != func_arg_count) {
- PyErr_Format( PyExc_AttributeError, "expected %.200s class \"%.200s\" function to have %d args", class_type, RNA_function_identifier(func), func_arg_count);
+ PyErr_Format( PyExc_AttributeError, "expected %.200s, %.200s class \"%.200s\" function to have %d args", class_type, py_class_name, RNA_function_identifier(func), func_arg_count);
return -1;
}
}
@@ -3734,6 +3888,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun
/* verify properties */
lb= RNA_struct_defined_properties(srna);
for(link=lb->first; link; link=link->next) {
+ const char *identifier;
prop= (PropertyRNA*)link;
flag= RNA_property_flag(prop);
@@ -3757,9 +3912,20 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun
}
}
+#if 0
+ if(strcmp(identifier, "bl_label") == 0) {
+ item= PyObject_GetAttrString(py_class, "__doc__");
+
+ if(item) {
+ Py_DECREF(item); /* no need to keep a ref, the class owns it */
+ if(pyrna_py_to_prop(dummyptr, prop, NULL, item, "validating class error:") != 0)
+ return -1;
+ }
+ }
+#endif
if (item == NULL && (((flag & PROP_REGISTER_OPTIONAL) != PROP_REGISTER_OPTIONAL))) {
- PyErr_Format( PyExc_AttributeError, "expected %.200s class to have an \"%.200s\" attribute", class_type, identifier);
+ PyErr_Format( PyExc_AttributeError, "expected %.200s, %.200s class to have an \"%.200s\" attribute", class_type, py_class_name, identifier);
return -1;
}
@@ -3937,6 +4103,7 @@ void pyrna_free_types(void)
}
}
RNA_PROP_END;
+
}
/* Note! MemLeak XXX
diff --git a/source/blender/python/intern/bpy_rna.h b/source/blender/python/intern/bpy_rna.h
index 0e40bf7258c..37f6af36726 100644
--- a/source/blender/python/intern/bpy_rna.h
+++ b/source/blender/python/intern/bpy_rna.h
@@ -103,5 +103,6 @@ int pyrna_py_to_array_index(PointerRNA *ptr, PropertyRNA *prop, int arraydim, in
PyObject *pyrna_py_from_array(PointerRNA *ptr, PropertyRNA *prop);
PyObject *pyrna_py_from_array_index(BPy_PropertyRNA *self, int index);
PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop);
+int pyrna_array_contains_py(PointerRNA *ptr, PropertyRNA *prop, PyObject *value);
#endif
diff --git a/source/blender/python/intern/bpy_util.c b/source/blender/python/intern/bpy_util.c
index 174d1aa342f..db3798146d3 100644
--- a/source/blender/python/intern/bpy_util.c
+++ b/source/blender/python/intern/bpy_util.c
@@ -92,11 +92,13 @@ int BPY_flag_from_seq(BPY_flag_def *flagdef, PyObject *seq, int *flag)
if(cstring) {
fd= flagdef;
while(fd->name) {
- if (strcmp(cstring, fd->name) == 0)
+ if (strcmp(cstring, fd->name) == 0) {
(*flag) |= fd->flag;
+ break;
+ }
fd++;
}
- if (fd==NULL) { /* could not find a match */
+ if (fd->name==NULL) { /* could not find a match */
error_val= 1;
}
} else {
@@ -416,6 +418,7 @@ int BPy_reports_to_error(ReportList *reports)
int BPy_errors_to_report(ReportList *reports)
{
PyObject *pystring;
+ PyObject *pystring_format= NULL; // workaround, see below
char *cstring;
char *filename;
@@ -439,14 +442,23 @@ int BPy_errors_to_report(ReportList *reports)
}
BPY_getFileAndNum(&filename, &lineno);
+ if(filename==NULL)
+ filename= "<unknown location>";
cstring= _PyUnicode_AsString(pystring);
-
+
+#if 0 // ARG!. workaround for a bug in blenders use of vsnprintf
BKE_reportf(reports, RPT_ERROR, "%s\nlocation:%s:%d\n", cstring, filename, lineno);
+#else
+ pystring_format= PyUnicode_FromFormat("%s\nlocation:%s:%d\n", cstring, filename, lineno);
+ cstring= _PyUnicode_AsString(pystring_format);
+ BKE_report(reports, RPT_ERROR, cstring);
+#endif
fprintf(stderr, "%s\nlocation:%s:%d\n", cstring, filename, lineno); // not exactly needed. just for testing
Py_DECREF(pystring);
+ Py_DECREF(pystring_format); // workaround
return 1;
}
diff --git a/source/blender/python/sphinx_doc_gen.py b/source/blender/python/sphinx_doc_gen.py
new file mode 100644
index 00000000000..24910b911e4
--- /dev/null
+++ b/source/blender/python/sphinx_doc_gen.py
@@ -0,0 +1,322 @@
+ # ***** 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.
+ #
+ # Contributor(s): Campbell Barton
+ #
+ # #**** END GPL LICENSE BLOCK #****
+
+script_help_msg = '''
+Usage,
+run this script from blenders root path once you have compiled blender
+ ./blender.bin -b -P /b/source/blender/python/sphinx_doc_gen.py
+
+This will generate python files in "./source/blender/python/doc/bpy/sphinx-in"
+Generate html docs by running...
+
+ sphinx-build source/blender/python/doc/bpy/sphinx-in source/blender/python/doc/bpy/sphinx-out
+'''
+
+# if you dont have graphvis installed ommit the --graph arg.
+
+# GLOBALS['BASEDIR'] = './source/blender/python/doc'
+
+import os
+import bpy
+import rna_info
+reload(rna_info)
+
+def range_str(val):
+ if val < -10000000: return '-inf'
+ if val > 10000000: return 'inf'
+ if type(val)==float:
+ return '%g' % val
+ else:
+ return str(val)
+
+def write_indented_lines(ident, fn, text):
+ if text is None:
+ return
+ for l in text.split("\n"):
+ fn(ident + l.strip() + "\n")
+
+
+def py_function_args(func):
+ """Get the python functions args with keyword defaults where possible."""
+ text = ""
+ code = func.__code__
+
+ defaults = func.__defaults__
+ if defaults is None:
+ defaults = []
+ else:
+ defaults = list(defaults)
+
+ names = code.co_varnames
+ if names is None:
+ names = []
+ else:
+ names = list(names)
+
+ INVALID = py_function_args
+ defaults = ([INVALID] * (len(names) - len(defaults))) + defaults
+
+ if names[0] in ("self", "cls"): # normal class function or classmethod
+ del names[0]
+ del defaults[0]
+
+ for var, default in zip(names, defaults):
+ if default is INVALID:
+ text += var
+ else:
+ if type(default) == str:
+ text += "%s=\"%s\"" % (var, default)
+ elif type(default) == float:
+ text += rna_info.float_as_string(default)
+ else:
+ text += "%s=%s" % (var, repr(default))
+
+ if not var == names[-1]:
+ text += ", "
+
+ return text
+
+
+def rna2sphinx(BASEPATH):
+
+ structs, funcs, ops, props = rna_info.BuildRNAInfo()
+
+ try:
+ os.mkdir(BASEPATH)
+ except:
+ pass
+
+ # conf.py - empty for now
+ filepath = os.path.join(BASEPATH, "conf.py")
+ file = open(filepath, "w")
+ fw = file.write
+
+ fw("project = 'Blender 3D'\n")
+ # fw("master_doc = 'index'\n")
+ fw("copyright = u'Blender Foundation'\n")
+ fw("version = '2.5'\n")
+ fw("release = '2.5'\n")
+ file.close()
+
+
+ filepath = os.path.join(BASEPATH, "contents.rst")
+ file = open(filepath, "w")
+ fw = file.write
+
+ fw("\n")
+ fw(".. toctree::\n")
+ fw(" :glob:\n\n")
+ fw(" bpy.ops.*\n\n")
+ fw(" bpy.types.*\n\n")
+ file.close()
+
+ if 0:
+ filepath = os.path.join(BASEPATH, "bpy.rst")
+ file = open(filepath, "w")
+ fw = file.write
+
+ fw("\n")
+
+ title = ":mod:`bpy` --- Blender Python Module"
+ fw("%s\n%s\n\n" % (title, "=" * len(title)))
+ fw(".. module:: bpy.types\n\n")
+ file.close()
+
+
+ def write_property(ident, fw, prop, as_arg=False):
+
+ if prop.description:
+ fw(ident + " %s\n\n" % prop.description)
+
+ if prop.fixed_type is None:
+ fw(ident + " *type* %s " % prop.type)
+ if prop.array_length:
+ fw("array of %d items " % (prop.array_length))
+
+ if prop.type in ("float", "int"):
+ fw("in [%s, %s]" % (range_str(prop.min), range_str(prop.max)))
+ elif prop.type == "enum":
+ fw("in [%s]" % ', '.join(["`" + s + "`" for s in prop.enum_items]))
+ else:
+ if prop.type == "collection":
+ if prop.collection_type:
+ collection_str = ":class:`%s` collection of " % prop.collection_type.identifier
+ else:
+ collection_str = "Collection of "
+ else:
+ collection_str = " "
+
+ fw(ident + " *type* %s:class:`%s`" % (collection_str, prop.fixed_type.identifier))
+
+ if not as_arg: # readonly is only useful for props, not args
+ if prop.is_readonly:
+ fw(", (readonly)")
+
+ if prop.is_never_none:
+ fw(", (never None)")
+
+ fw("\n\n")
+
+
+ def write_struct(struct):
+ #if not struct.identifier.startswith("Sc") and not struct.identifier.startswith("I"):
+ # return
+
+ #if not struct.identifier.startswith("Bone"):
+ # return
+
+ filepath = os.path.join(BASEPATH, "bpy.types.%s.rst" % struct.identifier)
+ file = open(filepath, "w")
+ fw = file.write
+
+ if struct.base:
+ title = "%s(%s)" % (struct.identifier, struct.base.identifier)
+ else:
+ title = struct.identifier
+
+ fw("%s\n%s\n\n" % (title, "=" * len(title)))
+
+ fw(".. module:: bpy.types\n\n")
+
+ bases = struct.get_bases()
+ if bases:
+ if len(bases) > 1:
+ fw("base classes --- ")
+ else:
+ fw("base class --- ")
+
+ fw(", ".join([(":class:`%s`" % base.identifier) for base in reversed(bases)]))
+ fw("\n\n")
+
+ subclasses = [s for s in structs.values() if s.base is struct]
+
+ if subclasses:
+ fw("subclasses --- \n")
+ fw(", ".join([(":class:`%s`" % s.identifier) for s in subclasses]))
+ fw("\n\n")
+
+
+ if struct.base:
+ fw(".. class:: %s(%s)\n\n" % (struct.identifier, struct.base.identifier))
+ else:
+ fw(".. class:: %s\n\n" % struct.identifier)
+
+ fw(" %s\n\n" % struct.description)
+
+ for prop in struct.properties:
+ fw(" .. attribute:: %s\n\n" % prop.identifier)
+ write_property(" ", fw, prop)
+
+ # python attributes
+ py_properties = struct.get_py_properties()
+ py_prop = None
+ for identifier, py_prop in py_properties:
+ fw(" .. attribute:: %s\n\n" % identifier)
+ write_indented_lines(" ", fw, py_prop.__doc__)
+ if py_prop.fset is None:
+ fw(" (readonly)\n\n")
+ del py_properties, py_prop
+
+ for func in struct.functions:
+ args_str = ", ".join([prop.get_arg_default(force=False) for prop in func.args])
+
+ fw(" .. method:: %s(%s)\n\n" % (func.identifier, args_str))
+ fw(" %s\n\n" % func.description)
+
+ for prop in func.args:
+ fw(" * %s: %s\n" % (prop.identifier, prop.name))
+ write_property(" ", fw, prop, as_arg=True)
+
+ if func.return_value:
+ prop = func.return_value
+ fw(" Returns %s: %s\n" % (prop.identifier, prop.name))
+ write_property(" ", fw, prop, as_arg=True)
+
+
+ # python methods
+ py_funcs = struct.get_py_functions()
+ py_func = None
+
+ for identifier, py_func in py_funcs:
+ fw(" .. method:: %s(%s)\n\n" % (identifier, py_function_args(py_func)))
+ write_indented_lines(" ", fw, py_func.__doc__)
+ del py_funcs, py_func
+
+ if struct.references:
+ # use this otherwise it gets in the index for a normal heading.
+ fw(".. rubric:: References\n\n")
+
+ for ref in struct.references:
+ ref_split = ref.split(".")
+ if len(ref_split) > 2:
+ ref = ref_split[-2] + "." + ref_split[-1]
+ fw("* :class:`%s`\n" % ref)
+ fw("\n")
+
+
+ for struct in structs.values():
+ write_struct(struct)
+
+ # oeprators
+ def write_ops():
+ fw = None
+
+ last_mod = ''
+
+ for op_key in sorted(ops.keys()):
+ op = ops[op_key]
+
+ if last_mod != op.module_name:
+ filepath = os.path.join(BASEPATH, "bpy.ops.%s.rst" % op.module_name)
+ file = open(filepath, "w")
+ fw = file.write
+
+ title = "%s Operators" % (op.module_name[0].upper() + op.module_name[1:])
+ fw("%s\n%s\n\n" % (title, "=" * len(title)))
+
+ fw(".. module:: bpy.ops.%s\n\n" % op.module_name)
+ last_mod = op.module_name
+
+ args_str = ", ".join([prop.get_arg_default(force=True) for prop in op.args])
+ fw(".. function:: %s(%s)\n\n" % (op.func_name, args_str))
+ fw(" %s\n\n" % op.description)
+ for prop in op.args:
+ fw(" * %s: %s\n" % (prop.identifier, prop.name))
+ write_property(" ", fw, prop, as_arg=True)
+
+ location = op.get_location()
+ if location != (None, None):
+ fw(" *python operator source --- `%s:%d`* \n\n" % location)
+
+ write_ops()
+
+ file.close()
+
+if __name__ == '__main__':
+ if 'bpy' not in dir():
+ print("\nError, this script must run from inside blender2.5")
+ print(script_help_msg)
+ else:
+ # os.system("rm source/blender/python/doc/bpy/sphinx-in/*.rst")
+ # os.system("rm -rf source/blender/python/doc/bpy/sphinx-out/*")
+ rna2sphinx('source/blender/python/doc/bpy/sphinx-in')
+
+ import sys
+ sys.exit()
diff --git a/source/blender/quicktime/CMakeLists.txt b/source/blender/quicktime/CMakeLists.txt
index 14589ca4c5b..7df589b21df 100644
--- a/source/blender/quicktime/CMakeLists.txt
+++ b/source/blender/quicktime/CMakeLists.txt
@@ -34,6 +34,7 @@ SET(INC
.
../quicktime
../makesdna
+ ../makesrna
../../../intern/guardedalloc
../blenlib
../blenkernel
@@ -43,6 +44,7 @@ SET(INC
../blenloader
../render/extern/include
../include
+ ../windowmanager
)
SET(INC ${INC} ${QUICKTIME_INC})
diff --git a/source/blender/quicktime/SConscript b/source/blender/quicktime/SConscript
index 1f9847d7854..c8cd795decb 100644
--- a/source/blender/quicktime/SConscript
+++ b/source/blender/quicktime/SConscript
@@ -13,6 +13,8 @@ else:
incs = ['.',
'../quicktime',
'../makesdna',
+ '../makesrna',
+ '../windowmanager',
'#/intern/guardedalloc',
'../blenlib',
'../blenkernel',
@@ -28,4 +30,9 @@ incs.append(env['BF_QUICKTIME_INC'])
types = ['core','player']
priorities = [200,235]
-env.BlenderLib ('bf_quicktime', sources=source_files, includes=incs, defines=['WITH_QUICKTIME'], libtype=types, priority=priorities)
+defs=['WITH_QUICKTIME']
+
+if env['WITH_GHOST_COCOA']:
+ defs.append('GHOST_COCOA')
+
+env.BlenderLib ('bf_quicktime', sources=source_files, includes=incs, defines=defs, libtype=types, priority=priorities)
diff --git a/source/blender/quicktime/apple/Makefile b/source/blender/quicktime/apple/Makefile
index 0cee45e3af0..19f87ed31e3 100644
--- a/source/blender/quicktime/apple/Makefile
+++ b/source/blender/quicktime/apple/Makefile
@@ -52,6 +52,5 @@ CPPFLAGS += -I..
# stuff needed by quicktime_[import|export].c
CPPFLAGS += -I../../blenloader -I../../imbuf/intern -I../../imbuf
CPPFLAGS += -I../../blenlib -I../../makesdna -I../../editors/include -I../../avi
-CPPFLAGS += -I../../blenkernel -I../../render/extern/include
-
+CPPFLAGS += -I../../blenkernel -I../../render/extern/include -I../../windowmanager -I../../makesrna
diff --git a/source/blender/quicktime/apple/qtkit_export.m b/source/blender/quicktime/apple/qtkit_export.m
index 9f2a97dee23..1466d3a3a09 100644
--- a/source/blender/quicktime/apple/qtkit_export.m
+++ b/source/blender/quicktime/apple/qtkit_export.m
@@ -39,6 +39,7 @@
#include "BKE_global.h"
#include "BKE_scene.h"
+#include "BKE_report.h"
#include "BLI_blenlib.h"
@@ -49,10 +50,6 @@
#include "MEM_guardedalloc.h"
-#include "quicktime_import.h"
-#include "quicktime_export.h"
-
-
#ifdef __APPLE__
/* evil */
#ifndef __AIFF__
@@ -60,6 +57,14 @@
#endif
#import <Cocoa/Cocoa.h>
#import <QTKit/QTKit.h>
+
+#if (MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4) || !__LP64__
+#error 64 bit build & OSX 10.5 minimum are needed for QTKit
+#endif
+
+#include "quicktime_import.h"
+#include "quicktime_export.h"
+
#endif /* __APPLE__ */
typedef struct QuicktimeExport {
@@ -73,36 +78,65 @@ typedef struct QuicktimeExport {
static struct QuicktimeExport *qtexport;
+#pragma mark rna helper functions
-static NSString *stringWithCodecType(int codecType) {
- switch (codecType) {
- case QT_CODECTYPE_RAW:
- return @"raw ";
- case QT_CODECTYPE_MJPEGA:
- return @"mjpa";
- case QT_CODECTYPE_MJPEGB:
- return @"mjpb";
- case QT_CODECTYPE_DVCPAL:
- return @"dvcp";
- case QT_CODECTYPE_DVCNTSC:
- return @"dvc ";
- case QT_CODECTYPE_MPEG4:
- return @"mp4v";
- case QT_CODECTYPE_H263:
- return @"h263";
- case QT_CODECTYPE_H264:
- return @"avc1";
- case QT_CODECTYPE_DVCPROHD720p:
- return @"dvhp";
- case QT_CODECTYPE_DVCPROHD1080i50:
- return @"dvh5";
- case QT_CODECTYPE_DVCPROHD1080i60:
- return @"dvh6";
-
- case QT_CODECTYPE_JPEG:
- default:
- return @"jpeg";
+
+static QuicktimeCodecTypeDesc qtCodecList[] = {
+ {kRawCodecType, 1, "Uncompressed"},
+ {kJPEGCodecType, 2, "JPEG"},
+ {kMotionJPEGACodecType, 3, "M-JPEG A"},
+ {kMotionJPEGBCodecType, 4, "M-JPEG B"},
+ {kDVCPALCodecType, 5, "DV PAL"},
+ {kDVCNTSCCodecType, 6, "DV/DVCPRO NTSC"},
+ {kDVCPROHD720pCodecType, 7, "DVCPRO HD 720p"},
+ {kDVCPROHD1080i50CodecType, 8, "DVCPRO HD 1080i50"},
+ {kDVCPROHD1080i60CodecType, 9, "DVCPRO HD 1080i60"},
+ {kMPEG4VisualCodecType, 10, "MPEG4"},
+ {kH263CodecType, 11, "H.263"},
+ {kH264CodecType, 12, "H.264"},
+ {0,0,NULL}};
+
+static int qtCodecCount = 12;
+
+int quicktime_get_num_codecs() {
+ return qtCodecCount;
+}
+
+QuicktimeCodecTypeDesc* quicktime_get_codecType_desc(int indexValue) {
+ if ((indexValue>=0) && (indexValue < qtCodecCount))
+ return &qtCodecList[indexValue];
+ else
+ return NULL;
+}
+
+int quicktime_rnatmpvalue_from_codectype(int codecType) {
+ int i;
+ for (i=0;i<qtCodecCount;i++) {
+ if (qtCodecList[i].codecType == codecType)
+ return qtCodecList[i].rnatmpvalue;
}
+
+ return 0;
+}
+
+int quicktime_codecType_from_rnatmpvalue(int rnatmpvalue) {
+ int i;
+ for (i=0;i<qtCodecCount;i++) {
+ if (qtCodecList[i].rnatmpvalue == rnatmpvalue)
+ return qtCodecList[i].codecType;
+ }
+
+ return 0;
+}
+
+
+static NSString *stringWithCodecType(int codecType) {
+ char str[5];
+
+ *((int*)str) = EndianU32_NtoB(codecType);
+ str[4] = 0;
+
+ return [NSString stringWithCString:str encoding:NSASCIIStringEncoding];
}
void makeqtstring (RenderData *rd, char *string) {
@@ -119,65 +153,70 @@ void makeqtstring (RenderData *rd, char *string) {
}
}
+#pragma mark export functions
-void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty)
+int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, ReportList *reports)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSError *error;
char name[2048];
+ int success= 1;
-
if(qtexport == NULL) qtexport = MEM_callocN(sizeof(QuicktimeExport), "QuicktimeExport");
-
- if (G.afbreek != 1) {
- /* Check first if the QuickTime 7.2.1 initToWritableFile: method is available */
- if ([[[[QTMovie alloc] init] autorelease] respondsToSelector:@selector(initToWritableFile:error:)] != YES) {
- G.afbreek = 1;
- fprintf(stderr, "\nUnable to create quicktime movie, need Quicktime rev 7.2.1 or later");
- }
- else {
- makeqtstring(rd, name);
- qtexport->filename = [NSString stringWithCString:name
- encoding:[NSString defaultCStringEncoding]];
- qtexport->movie = [[QTMovie alloc] initToWritableFile:qtexport->filename error:&error];
-
- if(qtexport->movie == nil) {
- G.afbreek = 1;
- NSLog(@"Unable to create quicktime movie : %@",[error localizedDescription]);
- } else {
- [qtexport->movie retain];
- [qtexport->filename retain];
- [qtexport->movie setAttribute:[NSNumber numberWithBool:YES] forKey:QTMovieEditableAttribute];
- [qtexport->movie setAttribute:@"Made with Blender" forKey:QTMovieCopyrightAttribute];
-
- qtexport->frameDuration = QTMakeTime(rd->frs_sec_base*1000, rd->frs_sec*1000);
-
- /* specifying the codec attributes : try to retrieve them from render data first*/
- if (rd->qtcodecsettings.codecType) {
- qtexport->frameAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
- stringWithCodecType(rd->qtcodecsettings.codecType),
- QTAddImageCodecType,
- [NSNumber numberWithLong:((rd->qtcodecsettings.codecSpatialQuality)*codecLosslessQuality)/100],
- QTAddImageCodecQuality,
- nil];
- }
- else {
- qtexport->frameAttributes = [NSDictionary dictionaryWithObjectsAndKeys:@"jpeg",
- QTAddImageCodecType,
- [NSNumber numberWithLong:codecHighQuality],
- QTAddImageCodecQuality,
- nil];
- }
- [qtexport->frameAttributes retain];
+
+ [QTMovie enterQTKitOnThread];
+
+ /* Check first if the QuickTime 7.2.1 initToWritableFile: method is available */
+ if ([[[[QTMovie alloc] init] autorelease] respondsToSelector:@selector(initToWritableFile:error:)] != YES) {
+ BKE_report(reports, RPT_ERROR, "\nUnable to create quicktime movie, need Quicktime rev 7.2.1 or later");
+ success= 0;
+ }
+ else {
+ makeqtstring(rd, name);
+ qtexport->filename = [NSString stringWithCString:name
+ encoding:[NSString defaultCStringEncoding]];
+ qtexport->movie = [[QTMovie alloc] initToWritableFile:qtexport->filename error:&error];
+
+ if(qtexport->movie == nil) {
+ BKE_report(reports, RPT_ERROR, "Unable to create quicktime movie.");
+ success= 0;
+ NSLog(@"Unable to create quicktime movie : %@",[error localizedDescription]);
+ [QTMovie exitQTKitOnThread];
+ } else {
+ [qtexport->movie retain];
+ [qtexport->filename retain];
+ [qtexport->movie setAttribute:[NSNumber numberWithBool:YES] forKey:QTMovieEditableAttribute];
+ [qtexport->movie setAttribute:@"Made with Blender" forKey:QTMovieCopyrightAttribute];
+
+ qtexport->frameDuration = QTMakeTime(rd->frs_sec_base*1000, rd->frs_sec*1000);
+
+ /* specifying the codec attributes : try to retrieve them from render data first*/
+ if (rd->qtcodecsettings.codecType) {
+ qtexport->frameAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
+ stringWithCodecType(rd->qtcodecsettings.codecType),
+ QTAddImageCodecType,
+ [NSNumber numberWithLong:((rd->qtcodecsettings.codecSpatialQuality)*codecLosslessQuality)/100],
+ QTAddImageCodecQuality,
+ nil];
+ }
+ else {
+ qtexport->frameAttributes = [NSDictionary dictionaryWithObjectsAndKeys:@"jpeg",
+ QTAddImageCodecType,
+ [NSNumber numberWithLong:codecHighQuality],
+ QTAddImageCodecQuality,
+ nil];
}
+ [qtexport->frameAttributes retain];
}
}
[pool drain];
+
+ return success;
}
-void append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty)
+int append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, ReportList *reports)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSBitmapImageRep *blBitmapFormatImage;
@@ -197,7 +236,7 @@ void append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int rec
bitsPerPixel:32];
if (!blBitmapFormatImage) {
[pool drain];
- return;
+ return 0;
}
from_Ptr = (unsigned char*)pixels;
@@ -219,6 +258,8 @@ void append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int rec
[blBitmapFormatImage release];
[frameImage release];
[pool drain];
+
+ return 1;
}
@@ -235,6 +276,8 @@ void end_qt(void)
[qtexport->frameAttributes release];
[qtexport->movie release];
}
+
+ [QTMovie exitQTKitOnThread];
if(qtexport) {
MEM_freeN(qtexport);
@@ -253,7 +296,7 @@ void quicktime_verify_image_type(RenderData *rd)
(rd->qtcodecsettings.codecSpatialQuality <0) ||
(rd->qtcodecsettings.codecSpatialQuality > 100)) {
- rd->qtcodecsettings.codecType = QT_CODECTYPE_JPEG;
+ rd->qtcodecsettings.codecType = kJPEGCodecType;
rd->qtcodecsettings.codecSpatialQuality = (codecHighQuality*100)/codecLosslessQuality;
}
}
diff --git a/source/blender/quicktime/apple/qtkit_import.m b/source/blender/quicktime/apple/qtkit_import.m
index 500ee13330d..31a6ca71259 100644
--- a/source/blender/quicktime/apple/qtkit_import.m
+++ b/source/blender/quicktime/apple/qtkit_import.m
@@ -137,7 +137,7 @@ static ImBuf * nsImageToiBuf(NSImage *sourceImage, int width, int height)
uchar *toIBuf = NULL;
int x, y, to_i, from_i;
NSSize bitmapSize;
- NSBitmapImageRep *blBitmapFormatImageRGB,*blBitmapFormatImageRGBA,*bitmapImage;
+ NSBitmapImageRep *blBitmapFormatImageRGB,*blBitmapFormatImageRGBA,*bitmapImage=nil;
NSEnumerator *enumerator;
NSImageRep *representation;
@@ -150,12 +150,13 @@ static ImBuf * nsImageToiBuf(NSImage *sourceImage, int width, int height)
/*Get the bitmap of the image*/
enumerator = [[sourceImage representations] objectEnumerator];
- while (representation = [enumerator nextObject]) {
+ while ((representation = [enumerator nextObject])) {
if ([representation isKindOfClass:[NSBitmapImageRep class]]) {
bitmapImage = (NSBitmapImageRep *)representation;
break;
}
}
+ if (bitmapImage == nil) return NULL;
if (([bitmapImage bitsPerPixel] == 32) && (([bitmapImage bitmapFormat] & 0x5) == 0)
&& ![bitmapImage isPlanar]) {
diff --git a/source/blender/quicktime/apple/quicktime_export.c b/source/blender/quicktime/apple/quicktime_export.c
index 851b3c5b245..abce6c08395 100644
--- a/source/blender/quicktime/apple/quicktime_export.c
+++ b/source/blender/quicktime/apple/quicktime_export.c
@@ -32,8 +32,14 @@
#if defined(_WIN32) || defined(__APPLE__)
#include "DNA_scene_types.h"
+#include "DNA_windowmanager_types.h"
+#include "WM_api.h"
+#include "WM_types.h"
+
+#include "BKE_context.h"
#include "BKE_global.h"
+#include "BKE_report.h"
#include "BKE_scene.h"
#include "BLI_blenlib.h"
@@ -71,12 +77,13 @@
#define kTrackStart 0
#define kMediaStart 0
-static void QT_StartAddVideoSamplesToMedia (const Rect *trackFrame, int rectx, int recty);
-static void QT_DoAddVideoSamplesToMedia (int frame, int *pixels, int rectx, int recty);
+static void QT_StartAddVideoSamplesToMedia (const Rect *trackFrame, int rectx, int recty, struct ReportList *reports);
+static void QT_DoAddVideoSamplesToMedia (int frame, int *pixels, int rectx, int recty, struct ReportList *reports);
static void QT_EndAddVideoSamplesToMedia (void);
-static void QT_CreateMyVideoTrack (int rectx, int recty);
-static void QT_EndCreateMyVideoTrack (void);
-static void check_renderbutton_framerate(struct RenderData *rd);
+static void QT_CreateMyVideoTrack (int rectx, int recty, struct ReportList *reports);
+static void QT_EndCreateMyVideoTrack (struct ReportList *reports);
+static void check_renderbutton_framerate(struct RenderData *rd, struct ReportList *reports);
+static int get_qtcodec_settings(struct RenderData *rd, struct ReportList *reports);
typedef struct QuicktimeExport {
@@ -113,14 +120,67 @@ static struct QuicktimeComponentData *qtdata;
static int sframe;
+/* RNA functions */
+
+static QuicktimeCodecTypeDesc qtCodecList[] = {
+ {kRawCodecType, 1, "Uncompressed"},
+ {kJPEGCodecType, 2, "JPEG"},
+ {kMotionJPEGACodecType, 3, "M-JPEG A"},
+ {kMotionJPEGBCodecType, 4, "M-JPEG B"},
+ {kDVCPALCodecType, 5, "DV PAL"},
+ {kDVCNTSCCodecType, 6, "DV/DVCPRO NTSC"},
+ {kDVCPROHD720pCodecType, 7, "DVCPRO HD 720p"},
+ {kDVCPROHD1080i50CodecType, 8, "DVCPRO HD 1080i50"},
+ {kDVCPROHD1080i60CodecType, 9, "DVCPRO HD 1080i60"},
+ {kMPEG4VisualCodecType, 10, "MPEG4"},
+ {kH263CodecType, 11, "H.263"},
+ {kH264CodecType, 12, "H.264"},
+ {0,0,NULL}};
+
+static int qtCodecCount = 12;
+
+int quicktime_get_num_codecs() {
+ return qtCodecCount;
+}
+
+QuicktimeCodecTypeDesc* quicktime_get_codecType_desc(int indexValue) {
+ if ((indexValue>=0) && (indexValue < qtCodecCount))
+ return &qtCodecList[indexValue];
+ else
+ return NULL;
+}
+
+int quicktime_rnatmpvalue_from_codectype(int codecType) {
+ int i;
+ for (i=0;i<qtCodecCount;i++) {
+ if (qtCodecList[i].codecType == codecType)
+ return qtCodecList[i].rnatmpvalue;
+ }
+
+ return 0;
+}
+
+int quicktime_codecType_from_rnatmpvalue(int rnatmpvalue) {
+ int i;
+ for (i=0;i<qtCodecCount;i++) {
+ if (qtCodecList[i].rnatmpvalue == rnatmpvalue)
+ return qtCodecList[i].codecType;
+ }
+
+ return 0;
+}
+
-static void CheckError(OSErr err, char *msg)
+
+static void CheckError(OSErr err, char *msg, ReportList *reports)
{
- if(err != noErr) printf("%s: %d\n", msg, err);
+ if(err != noErr) {
+ BKE_reportf(reports, RPT_ERROR, "%s: %d", msg, err);
+ }
}
-static OSErr QT_SaveCodecSettingsToScene(RenderData *rd)
+static OSErr QT_SaveCodecSettingsToScene(RenderData *rd, ReportList *reports)
{
QTAtomContainer myContainer = NULL;
ComponentResult myErr = noErr;
@@ -128,10 +188,9 @@ static OSErr QT_SaveCodecSettingsToScene(RenderData *rd)
long mySize = 0;
CodecInfo ci;
- char str[255];
QuicktimeCodecData *qcd = rd->qtcodecdata;
-
+
// check if current scene already has qtcodec settings, and clear them
if (qcd) {
free_qtcodecdata(qcd);
@@ -147,7 +206,7 @@ static OSErr QT_SaveCodecSettingsToScene(RenderData *rd)
// retreive codecdata from quicktime in a atomcontainer
myErr = SCGetSettingsAsAtomContainer(qtdata->theComponent, &myContainer);
if (myErr != noErr) {
- printf("Quicktime: SCGetSettingsAsAtomContainer failed\n");
+ BKE_reportf(reports, RPT_ERROR, "Quicktime: SCGetSettingsAsAtomContainer failed\n");
goto bail;
}
@@ -166,7 +225,7 @@ static OSErr QT_SaveCodecSettingsToScene(RenderData *rd)
GetCodecInfo (&ci, qtdata->gSpatialSettings.codecType, 0);
} else {
- printf("Quicktime: QT_SaveCodecSettingsToScene failed\n");
+ BKE_reportf(reports, RPT_ERROR, "Quicktime: QT_SaveCodecSettingsToScene failed\n");
}
QTUnlockContainer(myContainer);
@@ -179,12 +238,10 @@ bail:
}
-static OSErr QT_GetCodecSettingsFromScene(RenderData *rd)
+static OSErr QT_GetCodecSettingsFromScene(RenderData *rd, ReportList *reports)
{
Handle myHandle = NULL;
ComponentResult myErr = noErr;
-// CodecInfo ci;
-// char str[255];
QuicktimeCodecData *qcd = rd->qtcodecdata;
@@ -198,7 +255,7 @@ static OSErr QT_GetCodecSettingsFromScene(RenderData *rd)
if(qcd->cdParms && qcd->cdSize) {
myErr = SCSetSettingsFromAtomContainer((GraphicsExportComponent)qtdata->theComponent, (QTAtomContainer)myHandle);
if (myErr != noErr) {
- printf("Quicktime: SCSetSettingsFromAtomContainer failed\n");
+ BKE_reportf(reports, RPT_ERROR, "Quicktime: SCSetSettingsFromAtomContainer failed\n");
goto bail;
}
@@ -207,11 +264,24 @@ static OSErr QT_GetCodecSettingsFromScene(RenderData *rd)
SCGetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings);
SCGetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings);
-// GetCodecInfo (&ci, qtdata->gSpatialSettings.codecType, 0);
-// CopyPascalStringToC(ci.typeName, str);
-// printf("restored Codec: %s\n", str);
+
+ //Fill the render QuicktimeCodecSettigns struct
+ rd->qtcodecsettings.codecTemporalQuality = (qtdata->gTemporalSettings.temporalQuality * 100) / codecLosslessQuality;
+ //Do not override scene frame rate (qtdata->gTemporalSettings.framerate)
+ rd->qtcodecsettings.keyFrameRate = qtdata->gTemporalSettings.keyFrameRate;
+
+ rd->qtcodecsettings.codecType = qtdata->gSpatialSettings.codecType;
+ rd->qtcodecsettings.codec = (int)qtdata->gSpatialSettings.codec;
+ rd->qtcodecsettings.colorDepth = qtdata->gSpatialSettings.depth;
+ rd->qtcodecsettings.codecSpatialQuality = (qtdata->gSpatialSettings.spatialQuality * 100) / codecLosslessQuality;
+
+ rd->qtcodecsettings.bitRate = qtdata->aDataRateSetting.dataRate;
+ rd->qtcodecsettings.minSpatialQuality = (qtdata->aDataRateSetting.minSpatialQuality * 100) / codecLosslessQuality;
+ rd->qtcodecsettings.minTemporalQuality = (qtdata->aDataRateSetting.minTemporalQuality * 100) / codecLosslessQuality;
+ //Frame duration is already known (qtdata->aDataRateSetting.frameDuration)
+
} else {
- printf("Quicktime: QT_GetCodecSettingsFromScene failed\n");
+ BKE_reportf(reports, RPT_ERROR, "Quicktime: QT_GetCodecSettingsFromScene failed\n");
}
bail:
if (myHandle != NULL)
@@ -249,7 +319,7 @@ static OSErr QT_AddUserDataTextToMovie (Movie theMovie, char *theText, OSType th
}
-static void QT_CreateMyVideoTrack(int rectx, int recty)
+static void QT_CreateMyVideoTrack(int rectx, int recty, ReportList *reports)
{
OSErr err = noErr;
Rect trackFrame;
@@ -264,7 +334,7 @@ static void QT_CreateMyVideoTrack(int rectx, int recty)
FixRatio(trackFrame.right,1),
FixRatio(trackFrame.bottom,1),
0);
- CheckError( GetMoviesError(), "NewMovieTrack error" );
+ CheckError( GetMoviesError(), "NewMovieTrack error", reports );
// SetIdentityMatrix(&myMatrix);
// ScaleMatrix(&myMatrix, fixed1, Long2Fix(-1), 0, 0);
@@ -276,34 +346,34 @@ static void QT_CreateMyVideoTrack(int rectx, int recty)
qtdata->kVideoTimeScale,
nil,
0);
- CheckError( GetMoviesError(), "NewTrackMedia error" );
+ CheckError( GetMoviesError(), "NewTrackMedia error", reports );
err = BeginMediaEdits (qtexport->theMedia);
- CheckError( err, "BeginMediaEdits error" );
+ CheckError( err, "BeginMediaEdits error", reports );
- QT_StartAddVideoSamplesToMedia (&trackFrame, rectx, recty);
+ QT_StartAddVideoSamplesToMedia (&trackFrame, rectx, recty, reports);
}
-static void QT_EndCreateMyVideoTrack(void)
+static void QT_EndCreateMyVideoTrack(ReportList *reports)
{
OSErr err = noErr;
QT_EndAddVideoSamplesToMedia ();
err = EndMediaEdits (qtexport->theMedia);
- CheckError( err, "EndMediaEdits error" );
+ CheckError( err, "EndMediaEdits error", reports );
err = InsertMediaIntoTrack (qtexport->theTrack,
kTrackStart,/* track start time */
kMediaStart,/* media start time */
GetMediaDuration (qtexport->theMedia),
fixed1);
- CheckError( err, "InsertMediaIntoTrack error" );
+ CheckError( err, "InsertMediaIntoTrack error", reports );
}
-static void QT_StartAddVideoSamplesToMedia (const Rect *trackFrame, int rectx, int recty)
+static void QT_StartAddVideoSamplesToMedia (const Rect *trackFrame, int rectx, int recty, ReportList *reports)
{
SCTemporalSettings gTemporalSettings;
OSErr err = noErr;
@@ -317,7 +387,7 @@ static void QT_StartAddVideoSamplesToMedia (const Rect *trackFrame, int rectx, i
NULL, NULL, 0,
(Ptr)qtexport->ibuf->rect,
rectx * 4 );
- CheckError (err, "NewGWorldFromPtr error");
+ CheckError (err, "NewGWorldFromPtr error", reports);
qtexport->thePixMap = GetGWorldPixMap(qtexport->theGWorld);
LockPixels(qtexport->thePixMap);
@@ -330,7 +400,7 @@ static void QT_StartAddVideoSamplesToMedia (const Rect *trackFrame, int rectx, i
gTemporalSettings = qtdata->gTemporalSettings;
if(qtdata->gSpatialSettings.codecType == kH264CodecType) {
if(gTemporalSettings.temporalQuality != codecMinQuality) {
- fprintf(stderr, "Only minimum quality compression supported for QuickTime H.264.\n");
+ BKE_reportf(reports, RPT_WARNING, "Only minimum quality compression supported for QuickTime H.264.\n");
gTemporalSettings.temporalQuality = codecMinQuality;
}
}
@@ -340,11 +410,11 @@ static void QT_StartAddVideoSamplesToMedia (const Rect *trackFrame, int rectx, i
SCSetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting);
err = SCCompressSequenceBegin(qtdata->theComponent, qtexport->thePixMap, NULL, &qtexport->anImageDescription);
- CheckError (err, "SCCompressSequenceBegin error" );
+ CheckError (err, "SCCompressSequenceBegin error", reports );
}
-static void QT_DoAddVideoSamplesToMedia (int frame, int *pixels, int rectx, int recty)
+static void QT_DoAddVideoSamplesToMedia (int frame, int *pixels, int rectx, int recty, ReportList *reports)
{
OSErr err = noErr;
Rect imageRect;
@@ -386,7 +456,7 @@ static void QT_DoAddVideoSamplesToMedia (int frame, int *pixels, int rectx, int
&compressedData,
&dataSize,
&syncFlag);
- CheckError(err, "SCCompressSequenceFrame error");
+ CheckError(err, "SCCompressSequenceFrame error", reports);
err = AddMediaSample(qtexport->theMedia,
compressedData,
@@ -397,9 +467,7 @@ static void QT_DoAddVideoSamplesToMedia (int frame, int *pixels, int rectx, int
1,
syncFlag,
NULL);
- CheckError(err, "AddMediaSample error");
-
- printf ("added frame %3d (frame %3d in movie): ", frame, frame-sframe);
+ CheckError(err, "AddMediaSample error", reports);
}
@@ -436,7 +504,7 @@ void makeqtstring (RenderData *rd, char *string) {
}
-void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty) {
+int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, ReportList *reports) {
OSErr err = noErr;
char name[2048];
@@ -448,6 +516,7 @@ void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty)
#else
char *qtname;
#endif
+ int success= 1;
if(qtexport == NULL) qtexport = MEM_callocN(sizeof(QuicktimeExport), "QuicktimeExport");
@@ -459,66 +528,71 @@ void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty)
qtdata = MEM_callocN(sizeof(QuicktimeComponentData), "QuicktimeCodecDataExt");
if(rd->qtcodecdata == NULL || rd->qtcodecdata->cdParms == NULL) {
- get_qtcodec_settings(rd);
+ get_qtcodec_settings(rd, reports);
} else {
qtdata->theComponent = OpenDefaultComponent(StandardCompressionType, StandardCompressionSubType);
- QT_GetCodecSettingsFromScene(rd);
- check_renderbutton_framerate(rd);
+ QT_GetCodecSettingsFromScene(rd, reports);
+ check_renderbutton_framerate(rd, reports);
}
- if (G.afbreek != 1) {
- sframe = (rd->sfra);
+ sframe = (rd->sfra);
- makeqtstring(rd, name);
+ makeqtstring(rd, name);
#ifdef __APPLE__
- sprintf(theFullPath, "%s", name);
-
- /* hack: create an empty file to make FSPathMakeRef() happy */
- myFile = open(theFullPath, O_CREAT|O_TRUNC, S_IRUSR|S_IWUSR|S_IRUSR|S_IWUSR);
- if (myFile < 0) {
- printf("error while creating file!\n");
- /* do something? */
- }
- close(myFile);
- err = FSPathMakeRef((const UInt8 *)theFullPath, &myRef, 0);
- CheckError(err, "FsPathMakeRef error");
- err = FSGetCatalogInfo(&myRef, kFSCatInfoNone, NULL, NULL, &qtexport->theSpec, NULL);
- CheckError(err, "FsGetCatalogInfoRef error");
+ EnterMoviesOnThread(0);
+ sprintf(theFullPath, "%s", name);
+
+ /* hack: create an empty file to make FSPathMakeRef() happy */
+ myFile = open(theFullPath, O_CREAT|O_TRUNC, S_IRUSR|S_IWUSR|S_IRUSR|S_IWUSR);
+ if (myFile < 0) {
+ BKE_reportf(reports, RPT_ERROR, "error while creating movie file!\n");
+ /* do something? */
+ }
+ close(myFile);
+ err = FSPathMakeRef((const UInt8 *)theFullPath, &myRef, 0);
+ CheckError(err, "FsPathMakeRef error", reports);
+ err = FSGetCatalogInfo(&myRef, kFSCatInfoNone, NULL, NULL, &qtexport->theSpec, NULL);
+ CheckError(err, "FsGetCatalogInfoRef error", reports);
#endif
#ifdef _WIN32
- qtname = get_valid_qtname(name);
- sprintf(theFullPath, "%s", qtname);
- strcpy(name, qtname);
- MEM_freeN(qtname);
-
- CopyCStringToPascal(theFullPath, qtexport->qtfilename);
- err = FSMakeFSSpec(0, 0L, qtexport->qtfilename, &qtexport->theSpec);
+ qtname = get_valid_qtname(name);
+ sprintf(theFullPath, "%s", qtname);
+ strcpy(name, qtname);
+ MEM_freeN(qtname);
+
+ CopyCStringToPascal(theFullPath, qtexport->qtfilename);
+ err = FSMakeFSSpec(0, 0L, qtexport->qtfilename, &qtexport->theSpec);
#endif
- err = CreateMovieFile (&qtexport->theSpec,
- kMyCreatorType,
- smCurrentScript,
- createMovieFileDeleteCurFile | createMovieFileDontCreateResFile,
- &qtexport->resRefNum,
- &qtexport->theMovie );
- CheckError(err, "CreateMovieFile error");
-
- if(err != noErr) {
- G.afbreek = 1;
-// XXX error("Unable to create Quicktime movie: %s", name);
- } else {
- printf("Created QuickTime movie: %s\n", name);
+ err = CreateMovieFile (&qtexport->theSpec,
+ kMyCreatorType,
+ smCurrentScript,
+ createMovieFileDeleteCurFile | createMovieFileDontCreateResFile,
+ &qtexport->resRefNum,
+ &qtexport->theMovie );
+ CheckError(err, "CreateMovieFile error", reports);
+
+ if(err != noErr) {
+ BKE_reportf(reports, RPT_ERROR, "Unable to create Quicktime movie: %s", name);
+ success= 0;
+#ifdef __APPLE__
+ ExitMoviesOnThread();
+#endif
+ } else {
+ //printf("Created QuickTime movie: %s\n", name);
- QT_CreateMyVideoTrack(rectx, recty);
- }
+ QT_CreateMyVideoTrack(rectx, recty, reports);
}
+
+ return success;
}
-void append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty) {
- QT_DoAddVideoSamplesToMedia(frame, pixels, rectx, recty);
+int append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, ReportList *reports) {
+ QT_DoAddVideoSamplesToMedia(frame, pixels, rectx, recty, reports);
+ return 1;
}
@@ -527,24 +601,26 @@ void end_qt(void) {
short resId = movieInDataForkResID;
if(qtexport->theMovie) {
- QT_EndCreateMyVideoTrack();
+ QT_EndCreateMyVideoTrack(NULL);
err = AddMovieResource (qtexport->theMovie, qtexport->resRefNum, &resId, qtexport->qtfilename);
- CheckError(err, "AddMovieResource error");
+ CheckError(err, "AddMovieResource error", NULL);
err = QT_AddUserDataTextToMovie(qtexport->theMovie, "Made with Blender", kUserDataTextInformation);
- CheckError(err, "AddUserDataTextToMovie error");
+ CheckError(err, "AddUserDataTextToMovie error", NULL);
err = UpdateMovieResource(qtexport->theMovie, qtexport->resRefNum, resId, qtexport->qtfilename);
- CheckError(err, "UpdateMovieResource error");
+ CheckError(err, "UpdateMovieResource error", NULL);
if(qtexport->resRefNum) CloseMovieFile(qtexport->resRefNum);
DisposeMovie(qtexport->theMovie);
- printf("Finished QuickTime movie.\n");
+ //printf("Finished QuickTime movie.\n");
}
+ ExitMoviesOnThread();
+
if(qtexport) {
MEM_freeN(qtexport);
qtexport = NULL;
@@ -561,13 +637,13 @@ void free_qtcomponentdata(void) {
}
-static void check_renderbutton_framerate(RenderData *rd)
+static void check_renderbutton_framerate(RenderData *rd, ReportList *reports)
{
// to keep float framerates consistent between the codec dialog and frs/sec button.
OSErr err;
err = SCGetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings);
- CheckError(err, "SCGetInfo fr error");
+ CheckError(err, "SCGetInfo fr error", reports);
if( (rd->frs_sec == 24 || rd->frs_sec == 30 || rd->frs_sec == 60) &&
(qtdata->gTemporalSettings.frameRate == 1571553 ||
@@ -576,11 +652,11 @@ static void check_renderbutton_framerate(RenderData *rd)
else {
if (rd->frs_sec_base > 0)
qtdata->gTemporalSettings.frameRate =
- (rd->frs_sec << 16) / rd->frs_sec_base ;
+ ((float)(rd->frs_sec << 16) / rd->frs_sec_base) ;
}
err = SCSetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings);
- CheckError( err, "SCSetInfo error" );
+ CheckError( err, "SCSetInfo error", reports );
if(qtdata->gTemporalSettings.frameRate == 1571553) { // 23.98 fps
qtdata->kVideoTimeScale = 24000;
@@ -600,21 +676,24 @@ static void check_renderbutton_framerate(RenderData *rd)
void quicktime_verify_image_type(RenderData *rd)
{
if (rd->imtype == R_QUICKTIME) {
- if ((rd->qtcodecsettings.codecType<= 0) ||
+ if ((rd->qtcodecsettings.codecType== 0) ||
(rd->qtcodecsettings.codecSpatialQuality <0) ||
(rd->qtcodecsettings.codecSpatialQuality > 100)) {
- rd->qtcodecsettings.codecType = QT_CODECTYPE_JPEG;
+ rd->qtcodecsettings.codecType = kJPEGCodecType;
+ rd->qtcodecsettings.codec = (int)anyCodec;
rd->qtcodecsettings.codecSpatialQuality = (codecHighQuality*100)/codecLosslessQuality;
+ rd->qtcodecsettings.codecTemporalQuality = (codecHighQuality*100)/codecLosslessQuality;
+ rd->qtcodecsettings.keyFrameRate = 25;
+ rd->qtcodecsettings.bitRate = 5000000; //5 Mbps
}
}
}
-int get_qtcodec_settings(RenderData *rd)
+int get_qtcodec_settings(RenderData *rd, ReportList *reports)
{
- OSErr err = noErr;
-
- // erase any existing codecsetting
+ OSErr err = noErr;
+ // erase any existing codecsetting
if(qtdata) {
if(qtdata->theComponent) CloseComponent(qtdata->theComponent);
free_qtcomponentdata();
@@ -624,46 +703,114 @@ int get_qtcodec_settings(RenderData *rd)
qtdata = MEM_callocN(sizeof(QuicktimeComponentData), "QuicktimeComponentData");
qtdata->theComponent = OpenDefaultComponent(StandardCompressionType, StandardCompressionSubType);
- // get previous selected codecsetting, if any
+ // get previous selected codecsetting, from qtatom or detailed settings
if(rd->qtcodecdata && rd->qtcodecdata->cdParms) {
- QT_GetCodecSettingsFromScene(rd);
- check_renderbutton_framerate(rd);
+ QT_GetCodecSettingsFromScene(rd, reports);
} else {
- // configure the standard image compression dialog box
- // set some default settings: codec=jpeg, quality = max
- qtdata->gSpatialSettings.codecType = kJPEGCodecType;
- qtdata->gSpatialSettings.codec = anyCodec;
- qtdata->gSpatialSettings.spatialQuality = codecHighQuality;
- qtdata->gTemporalSettings.temporalQuality = codecHighQuality;
- qtdata->gTemporalSettings.keyFrameRate = 25;
- qtdata->aDataRateSetting.dataRate = 5 * 1024 * 1024;
+ SCGetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting);
+ SCGetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings);
+ SCGetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings);
+ qtdata->gSpatialSettings.codecType = rd->qtcodecsettings.codecType;
+ qtdata->gSpatialSettings.codec = (CodecComponent)rd->qtcodecsettings.codec;
+ qtdata->gSpatialSettings.spatialQuality = (rd->qtcodecsettings.codecSpatialQuality * codecLosslessQuality) /100;
+ qtdata->gTemporalSettings.temporalQuality = (rd->qtcodecsettings.codecTemporalQuality * codecLosslessQuality) /100;
+ qtdata->gTemporalSettings.keyFrameRate = rd->qtcodecsettings.keyFrameRate;
+ qtdata->aDataRateSetting.dataRate = rd->qtcodecsettings.bitRate;
+ qtdata->gSpatialSettings.depth = rd->qtcodecsettings.colorDepth;
+ qtdata->aDataRateSetting.minSpatialQuality = (rd->qtcodecsettings.minSpatialQuality * codecLosslessQuality) / 100;
+ qtdata->aDataRateSetting.minTemporalQuality = (rd->qtcodecsettings.minTemporalQuality * codecLosslessQuality) / 100;
+
+ qtdata->aDataRateSetting.frameDuration = rd->frs_sec;
+ SetMovieTimeScale(qtexport->theMovie, rd->frs_sec_base*1000);
+
+
err = SCSetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings);
- CheckError(err, "SCSetInfo1 error");
+ CheckError(err, "SCSetInfo1 error", reports);
err = SCSetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings);
- CheckError(err, "SCSetInfo2 error");
+ CheckError(err, "SCSetInfo2 error", reports);
err = SCSetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting);
- CheckError(err, "SCSetInfo3 error");
+ CheckError(err, "SCSetInfo3 error", reports);
}
- check_renderbutton_framerate(rd);
+ check_renderbutton_framerate(rd, reports);
+
+ return err;
+}
+
+static int request_qtcodec_settings(bContext *C, wmOperator *op)
+{
+ OSErr err = noErr;
+ Scene *scene = CTX_data_scene(C);
+ RenderData *rd = &scene->r;
- /* Remove this dialog box pop up as this function is called from the render thread
- Anyway, all config should be done inside blender ui before starting render.
- // put up the dialog box - it needs to be called from the main thread
+ // erase any existing codecsetting
+ if(qtdata) {
+ if(qtdata->theComponent) CloseComponent(qtdata->theComponent);
+ free_qtcomponentdata();
+ }
+
+ // allocate new
+ qtdata = MEM_callocN(sizeof(QuicktimeComponentData), "QuicktimeComponentData");
+ qtdata->theComponent = OpenDefaultComponent(StandardCompressionType, StandardCompressionSubType);
+
+ // get previous selected codecsetting, from qtatom or detailed settings
+ if(rd->qtcodecdata && rd->qtcodecdata->cdParms) {
+ QT_GetCodecSettingsFromScene(rd, op->reports);
+ } else {
+ SCGetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting);
+ SCGetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings);
+ SCGetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings);
+
+ qtdata->gSpatialSettings.codecType = rd->qtcodecsettings.codecType;
+ qtdata->gSpatialSettings.codec = (CodecComponent)rd->qtcodecsettings.codec;
+ qtdata->gSpatialSettings.spatialQuality = (rd->qtcodecsettings.codecSpatialQuality * codecLosslessQuality) /100;
+ qtdata->gTemporalSettings.temporalQuality = (rd->qtcodecsettings.codecTemporalQuality * codecLosslessQuality) /100;
+ qtdata->gTemporalSettings.keyFrameRate = rd->qtcodecsettings.keyFrameRate;
+ qtdata->gTemporalSettings.frameRate = ((float)(rd->frs_sec << 16) / rd->frs_sec_base);
+ qtdata->aDataRateSetting.dataRate = rd->qtcodecsettings.bitRate;
+ qtdata->gSpatialSettings.depth = rd->qtcodecsettings.colorDepth;
+ qtdata->aDataRateSetting.minSpatialQuality = (rd->qtcodecsettings.minSpatialQuality * codecLosslessQuality) / 100;
+ qtdata->aDataRateSetting.minTemporalQuality = (rd->qtcodecsettings.minTemporalQuality * codecLosslessQuality) / 100;
+
+ qtdata->aDataRateSetting.frameDuration = rd->frs_sec;
+
+ err = SCSetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings);
+ CheckError(err, "SCSetInfo1 error", op->reports);
+ err = SCSetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings);
+ CheckError(err, "SCSetInfo2 error", op->reports);
+ err = SCSetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting);
+ CheckError(err, "SCSetInfo3 error", op->reports);
+ }
+ // put up the dialog box - it needs to be called from the main thread
err = SCRequestSequenceSettings(qtdata->theComponent);
if (err == scUserCancelled) {
- G.afbreek = 1;
- return 0;
+ return OPERATOR_FINISHED;
}
- // get user selected data
- SCGetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings);
+ // update runtime codecsettings for use with the codec dialog
+ SCGetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting);
SCGetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings);
- SCGetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting);*/
-
- QT_SaveCodecSettingsToScene(rd);
+ SCGetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings);
+
+
+ //Fill the render QuicktimeCodecSettings struct
+ rd->qtcodecsettings.codecTemporalQuality = (qtdata->gTemporalSettings.temporalQuality * 100) / codecLosslessQuality;
+ //Do not override scene frame rate (qtdata->gTemporalSettings.framerate)
+ rd->qtcodecsettings.keyFrameRate = qtdata->gTemporalSettings.keyFrameRate;
+
+ rd->qtcodecsettings.codecType = qtdata->gSpatialSettings.codecType;
+ rd->qtcodecsettings.codec = (int)qtdata->gSpatialSettings.codec;
+ rd->qtcodecsettings.colorDepth = qtdata->gSpatialSettings.depth;
+ rd->qtcodecsettings.codecSpatialQuality = (qtdata->gSpatialSettings.spatialQuality * 100) / codecLosslessQuality;
+
+ rd->qtcodecsettings.bitRate = qtdata->aDataRateSetting.dataRate;
+ rd->qtcodecsettings.minSpatialQuality = (qtdata->aDataRateSetting.minSpatialQuality * 100) / codecLosslessQuality;
+ rd->qtcodecsettings.minTemporalQuality = (qtdata->aDataRateSetting.minTemporalQuality * 100) / codecLosslessQuality;
+ //Frame duration is already known (qtdata->aDataRateSetting.frameDuration)
+
+ QT_SaveCodecSettingsToScene(rd, op->reports);
// framerate jugglin'
if(qtdata->gTemporalSettings.frameRate == 1571553) { // 23.98 fps
@@ -692,15 +839,51 @@ int get_qtcodec_settings(RenderData *rd)
if ((qtdata->gTemporalSettings.frameRate & 0xffff) == 0) {
rd->frs_sec = fps / 65536;
- rd->frs_sec_base = 1;
+ rd->frs_sec_base = 1.0;
} else {
/* we do our very best... */
- rd->frs_sec = (fps * 10000 / 65536);
- rd->frs_sec_base = 10000;
+ rd->frs_sec = fps / 65536;
+ rd->frs_sec_base = 1.0;
}
}
- return 1;
+ return OPERATOR_FINISHED;
+}
+
+static int ED_operator_setqtcodec(bContext *C)
+{
+ return G.have_quicktime != FALSE;
+}
+
+#if defined(__APPLE__) && defined(GHOST_COCOA)
+//Need to set up a Cocoa NSAutoReleasePool to avoid memory leak
+//And it must be done in an objC file, so use a GHOST_SystemCocoa.mm function for that
+extern int cocoa_request_qtcodec_settings(bContext *C, wmOperator *op);
+
+int fromcocoa_request_qtcodec_settings(bContext *C, wmOperator *op)
+{
+ return request_qtcodec_settings(C, op);
+}
+#endif
+
+
+void SCENE_OT_render_data_set_quicktime_codec(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Change codec";
+ ot->description= "Change Quicktime codec Settings";
+ ot->idname= "SCENE_OT_render_data_set_quicktime_codec";
+
+ /* api callbacks */
+#if defined(__APPLE__) && defined(GHOST_COCOA)
+ ot->exec = cocoa_request_qtcodec_settings;
+#else
+ ot->exec= request_qtcodec_settings;
+#endif
+ ot->poll= ED_operator_setqtcodec;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
#endif /* _WIN32 || __APPLE__ */
diff --git a/source/blender/quicktime/quicktime_export.h b/source/blender/quicktime/quicktime_export.h
index 7972c826190..2ccda8eb526 100644
--- a/source/blender/quicktime/quicktime_export.h
+++ b/source/blender/quicktime/quicktime_export.h
@@ -33,33 +33,118 @@
#define __AIFF__
-/* Quicktime codec types defines */
-#define QT_CODECTYPE_JPEG 1
-#define QT_CODECTYPE_MJPEGA 2
-#define QT_CODECTYPE_MJPEGB 3
-#define QT_CODECTYPE_DVCPAL 4
-#define QT_CODECTYPE_DVCNTSC 5
-#define QT_CODECTYPE_MPEG4 6
-#define QT_CODECTYPE_H263 7
-#define QT_CODECTYPE_H264 8
-#define QT_CODECTYPE_RAW 9
-#define QT_CODECTYPE_DVCPROHD720p 10
-#define QT_CODECTYPE_DVCPROHD1080i50 11
-#define QT_CODECTYPE_DVCPROHD1080i60 12
+
+/*Codec list*/
+typedef struct QuicktimeCodecTypeDesc {
+ int codecType;
+ int rnatmpvalue;
+ char * codecName;
+} QuicktimeCodecTypeDesc ;
// quicktime movie output functions
struct RenderData;
struct Scene;
+struct wmOperatorType;
+struct ReportList;
-void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty); //for movie handle (BKE writeavi.c now)
-void append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty);
+int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, struct ReportList *reports); //for movie handle (BKE writeavi.c now)
+int append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, struct ReportList *reports);
void end_qt(void);
+/*RNA helper functions */
void quicktime_verify_image_type(struct RenderData *rd); //used by RNA for defaults values init, if needed
+int quicktime_get_num_codecs();
+QuicktimeCodecTypeDesc* quicktime_get_codecType_desc(int indexValue);
+int quicktime_rnatmpvalue_from_codectype(int codecType);
+int quicktime_codecType_from_rnatmpvalue(int rnatmpvalue);
+
+#ifndef USE_QTKIT
+void SCENE_OT_render_data_set_quicktime_codec(struct wmOperatorType *ot); //Operator to raise quicktime standard dialog to request codec settings
+#endif
+
void free_qtcomponentdata(void);
void makeqtstring(struct RenderData *rd, char *string); //for playanim.c
+
+
+#if (defined(USE_QTKIT) && defined(MAC_OS_X_VERSION_10_6) && __LP64__)
+//Include the quicktime codec types constants that are missing in QTKitDefines.h in 10.6 / 64bit
+enum {
+ kRawCodecType = 'raw ',
+ kCinepakCodecType = 'cvid',
+ kGraphicsCodecType = 'smc ',
+ kAnimationCodecType = 'rle ',
+ kVideoCodecType = 'rpza',
+ kComponentVideoCodecType = 'yuv2',
+ kJPEGCodecType = 'jpeg',
+ kMotionJPEGACodecType = 'mjpa',
+ kMotionJPEGBCodecType = 'mjpb',
+ kSGICodecType = '.SGI',
+ kPlanarRGBCodecType = '8BPS',
+ kMacPaintCodecType = 'PNTG',
+ kGIFCodecType = 'gif ',
+ kPhotoCDCodecType = 'kpcd',
+ kQuickDrawGXCodecType = 'qdgx',
+ kAVRJPEGCodecType = 'avr ',
+ kOpenDMLJPEGCodecType = 'dmb1',
+ kBMPCodecType = 'WRLE',
+ kWindowsRawCodecType = 'WRAW',
+ kVectorCodecType = 'path',
+ kQuickDrawCodecType = 'qdrw',
+ kWaterRippleCodecType = 'ripl',
+ kFireCodecType = 'fire',
+ kCloudCodecType = 'clou',
+ kH261CodecType = 'h261',
+ kH263CodecType = 'h263',
+ kDVCNTSCCodecType = 'dvc ', /* DV - NTSC and DVCPRO NTSC (available in QuickTime 6.0 or later)*/
+ /* NOTE: kDVCProNTSCCodecType is deprecated. */
+ /* Use kDVCNTSCCodecType instead -- as far as the codecs are concerned, */
+ /* the two data formats are identical.*/
+ kDVCPALCodecType = 'dvcp',
+ kDVCProPALCodecType = 'dvpp', /* available in QuickTime 6.0 or later*/
+ kDVCPro50NTSCCodecType = 'dv5n',
+ kDVCPro50PALCodecType = 'dv5p',
+ kDVCPro100NTSCCodecType = 'dv1n',
+ kDVCPro100PALCodecType = 'dv1p',
+ kDVCPROHD720pCodecType = 'dvhp',
+ kDVCPROHD1080i60CodecType = 'dvh6',
+ kDVCPROHD1080i50CodecType = 'dvh5',
+ kBaseCodecType = 'base',
+ kFLCCodecType = 'flic',
+ kTargaCodecType = 'tga ',
+ kPNGCodecType = 'png ',
+ kTIFFCodecType = 'tiff', /* NOTE: despite what might seem obvious from the two constants*/
+ /* below and their names, they really are correct. 'yuvu' really */
+ /* does mean signed, and 'yuvs' really does mean unsigned. Really. */
+ kComponentVideoSigned = 'yuvu',
+ kComponentVideoUnsigned = 'yuvs',
+ kCMYKCodecType = 'cmyk',
+ kMicrosoftVideo1CodecType = 'msvc',
+ kSorensonCodecType = 'SVQ1',
+ kSorenson3CodecType = 'SVQ3', /* available in QuickTime 5 and later*/
+ kIndeo4CodecType = 'IV41',
+ kMPEG4VisualCodecType = 'mp4v',
+ k64ARGBCodecType = 'b64a',
+ k48RGBCodecType = 'b48r',
+ k32AlphaGrayCodecType = 'b32a',
+ k16GrayCodecType = 'b16g',
+ kMpegYUV420CodecType = 'myuv',
+ kYUV420CodecType = 'y420',
+ kSorensonYUV9CodecType = 'syv9',
+ k422YpCbCr8CodecType = '2vuy', /* Component Y'CbCr 8-bit 4:2:2 */
+ k444YpCbCr8CodecType = 'v308', /* Component Y'CbCr 8-bit 4:4:4 */
+ k4444YpCbCrA8CodecType = 'v408', /* Component Y'CbCrA 8-bit 4:4:4:4 */
+ k422YpCbCr16CodecType = 'v216', /* Component Y'CbCr 10,12,14,16-bit 4:2:2*/
+ k422YpCbCr10CodecType = 'v210', /* Component Y'CbCr 10-bit 4:2:2 */
+ k444YpCbCr10CodecType = 'v410', /* Component Y'CbCr 10-bit 4:4:4 */
+ k4444YpCbCrA8RCodecType = 'r408', /* Component Y'CbCrA 8-bit 4:4:4:4, rendering format. full range alpha, zero biased yuv*/
+ kJPEG2000CodecType = 'mjp2',
+ kPixletCodecType = 'pxlt',
+ kH264CodecType = 'avc1'
+};
+#endif
+
#endif //(_WIN32) || (__APPLE__)
#endif // __QUICKTIME_IMP_H__
diff --git a/source/blender/render/SConscript b/source/blender/render/SConscript
index 795e7247597..d9a074c1470 100644
--- a/source/blender/render/SConscript
+++ b/source/blender/render/SConscript
@@ -1,19 +1,6 @@
#!/usr/bin/python
Import ('env')
-if env['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw'):
- # FIXME: need to set the appropriate flags for msvc, otherwise we get warnings
- cflags = []
- cxxflags = []
-
-if env['OURPLATFORM'] == 'darwin':
- if env['MACOSX_ARCHITECTURE'] in ('i386', 'x86_64'):
- cflags = env['CFLAGS'] + ['-mfpmath=sse']
- cxxflags = env['CXXFLAGS'] + ['-mfpmath=sse']
- else:
- cflags = env['CFLAGS']
- cxxflags = env['CXXFLAGS']
-
sources = env.Glob('intern/source/*.c')
raysources = env.Glob('intern/raytrace/*.cpp')
@@ -21,8 +8,32 @@ incs = 'intern/include #/intern/guardedalloc ../blenlib ../makesdna ../makesrna'
incs += ' extern/include ../blenkernel ../radiosity/extern/include ../imbuf'
incs += ' ../include ../blenloader ../../../intern/smoke/extern'
+cflags = env['CCFLAGS']
+cxxflags = env['CXXFLAGS']
+
defs = []
+if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'):
+ if env['WITH_BF_RAYOPTIMIZATION']:
+ cflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
+ cxxflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
+
+if env['OURPLATFORM'] == 'win32-mingw':
+ if env['WITH_BF_RAYOPTIMIZATION']:
+ cflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
+ cxxflags = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
+
+if env['OURPLATFORM'] == 'darwin':
+ if env['MACOSX_ARCHITECTURE'] in ('i386', 'x86_64') and env['WITH_BF_RAYOPTIMIZATION']:
+ cflags = env['CFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
+ cxxflags = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
+
+if env['OURPLATFORM'] == 'linux2':
+ if env['WITH_BF_RAYOPTIMIZATION']:
+ cflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
+ cxxflags = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
+ incs += ' ../../../extern/binreloc/include'
+
if env['WITH_BF_QUICKTIME']:
defs.append('WITH_QUICKTIME')
incs += ' ../quicktime ' + env['BF_QUICKTIME_INC']
@@ -30,13 +41,11 @@ if env['WITH_BF_QUICKTIME']:
if env['WITH_BF_OPENEXR']:
defs.append('WITH_OPENEXR')
-if env['OURPLATFORM'] == 'linux2':
- cflags = ['-O2','-msse2','-mfpmath=sse', '-pthread']
- cxxflags = ['-O2','-msse2','-mfpmath=sse', '-pthread']
- incs += ' ../../../extern/binreloc/include'
-
if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'):
incs += ' ' + env['BF_PTHREADS_INC']
+if env['WITH_BF_RAYOPTIMIZATION']:
+ defs.append('__SSE__')
+
env.BlenderLib ( libname = 'bf_render', sources = sources, includes = Split(incs), defines=defs, libtype='core', priority=145, compileflags=cflags )
env.BlenderLib ( libname = 'bf_render_raytrace', sources = raysources, includes = Split(incs), defines=defs, libtype='core', priority=145, compileflags=cflags, cxx_compileflags=cxxflags )
diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h
index 56a81ac6b43..76e3e002513 100644
--- a/source/blender/render/extern/include/RE_pipeline.h
+++ b/source/blender/render/extern/include/RE_pipeline.h
@@ -44,6 +44,7 @@ struct RenderData;
struct RenderEngine;
struct RenderEngineType;
struct RenderResult;
+struct ReportList;
struct Scene;
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
@@ -200,7 +201,7 @@ void RE_TileProcessor(struct Render *re, int firsttile, int threaded);
/* only RE_NewRender() needed, main Blender render calls */
void RE_BlenderFrame(struct Render *re, struct Scene *scene, int frame);
-void RE_BlenderAnim(struct Render *re, struct Scene *scene, int sfra, int efra, int tfra);
+void RE_BlenderAnim(struct Render *re, struct Scene *scene, int sfra, int efra, int tfra, struct ReportList *reports);
void RE_ReadRenderResult(struct Scene *scene, struct Scene *scenode);
void RE_WriteRenderResult(RenderResult *rr, char *filename, int compress);
@@ -253,8 +254,8 @@ typedef struct RenderEngineType {
struct RenderEngineType *next, *prev;
/* type info */
- char idname[32];
- char name[32];
+ char idname[64]; // best keep the same size as BKE_ST_MAXNAME
+ char name[64];
int flag;
void (*render)(struct RenderEngine *engine, struct Scene *scene);
diff --git a/source/blender/render/extern/include/RE_shader_ext.h b/source/blender/render/extern/include/RE_shader_ext.h
index b36163f57c0..2615be1440a 100644
--- a/source/blender/render/extern/include/RE_shader_ext.h
+++ b/source/blender/render/extern/include/RE_shader_ext.h
@@ -153,7 +153,7 @@ typedef struct ShadeInput
float dxstrand, dystrand;
/* AO is a pre-process now */
- float ao[3];
+ float ao[3], indirect[3];
int xs, ys; /* pixel to be rendered */
int mask; /* subsample mask */
diff --git a/source/blender/render/intern/include/render_types.h b/source/blender/render/intern/include/render_types.h
index 48bf34d0696..d41851db5ff 100644
--- a/source/blender/render/intern/include/render_types.h
+++ b/source/blender/render/intern/include/render_types.h
@@ -398,7 +398,8 @@ typedef struct StrandSurface {
int (*face)[4];
float (*co)[3];
/* for occlusion caching */
- float (*col)[3];
+ float (*ao)[3];
+ float (*indirect)[3];
/* for speedvectors */
float (*prevco)[3], (*nextco)[3];
int totvert, totface;
diff --git a/source/blender/render/intern/raytrace/reorganize.h b/source/blender/render/intern/raytrace/reorganize.h
index f0335b769d5..841b046e073 100644
--- a/source/blender/render/intern/raytrace/reorganize.h
+++ b/source/blender/render/intern/raytrace/reorganize.h
@@ -32,9 +32,17 @@
#include <vector>
#include <queue>
+#ifdef _WIN32
+#define INFINITY FLT_MAX // in mingw math.h: (1.0F/0.0F). This generates compile error, though.
+#endif
+
extern int tot_pushup;
extern int tot_pushdown;
+#if !defined(INFINITY) && defined(HUGE_VAL)
+#define INFINITY HUGE_VAL
+#endif
+
template<class Node>
bool node_fits_inside(Node *a, Node *b)
{
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c
index 3b08544e2a5..58b6d2bc3c7 100644
--- a/source/blender/render/intern/source/convertblender.c
+++ b/source/blender/render/intern/source/convertblender.c
@@ -1707,11 +1707,9 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
totface= psmd->dm->getNumTessFaces(psmd->dm);
origindex= psmd->dm->getTessFaceDataArray(psmd->dm, CD_ORIGINDEX);
- if(origindex) {
- for(a=0; a<totface; a++)
- strandbuf->totbound= MAX2(strandbuf->totbound, origindex[a]);
- strandbuf->totbound++;
- }
+ for(a=0; a<totface; a++)
+ strandbuf->totbound= MAX2(strandbuf->totbound, (origindex)? origindex[a]: a);
+
strandbuf->totbound++;
strandbuf->bound= MEM_callocN(sizeof(StrandBound)*strandbuf->totbound, "StrandBound");
sbound= strandbuf->bound;
@@ -1852,8 +1850,10 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
dosimplify = psys_render_simplify_params(psys, cpa, simplify);
if(strandbuf) {
- if(origindex[cpa->num]+1 > sbound - strandbuf->bound) {
- sbound= strandbuf->bound + origindex[cpa->num]+1;
+ int orignum= (origindex)? origindex[cpa->num]: cpa->num;
+
+ if(orignum > sbound - strandbuf->bound) {
+ sbound= strandbuf->bound + orignum;
sbound->start= sbound->end= obr->totstrand;
}
}
@@ -4492,7 +4492,7 @@ void RE_Database_Free(Render *re)
}
}
-static int allow_render_object(Object *ob, int nolamps, int onlyselected, Object *actob)
+static int allow_render_object(Render *re, Object *ob, int nolamps, int onlyselected, Object *actob)
{
/* override not showing object when duplis are used with particles */
if(ob->transflag & OB_DUPLIPARTS)
@@ -4500,6 +4500,10 @@ static int allow_render_object(Object *ob, int nolamps, int onlyselected, Object
else if((ob->transflag & OB_DUPLI) && !(ob->transflag & OB_DUPLIFRAMES))
return 0;
+ /* don't add non-basic meta objects, ends up having renderobjects with no geometry */
+ if (ob->type == OB_MBALL && ob!=find_basis_mball(re->scene, ob))
+ return 0;
+
if(nolamps && (ob->type==OB_LAMP))
return 0;
@@ -4605,7 +4609,7 @@ static void add_group_render_dupli_obs(Render *re, Group *group, int nolamps, in
if(ob->flag & OB_DONE) {
if(ob->transflag & OB_RENDER_DUPLI) {
- if(allow_render_object(ob, nolamps, onlyselected, actob)) {
+ if(allow_render_object(re, ob, nolamps, onlyselected, actob)) {
init_render_object(re, ob, NULL, 0, timeoffset, vectorlay);
ob->transflag &= ~OB_RENDER_DUPLI;
@@ -4659,7 +4663,7 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp
/* OB_RENDER_DUPLI means instances for it were already created, now
* it still needs to create the ObjectRen containing the data */
if(ob->transflag & OB_RENDER_DUPLI) {
- if(allow_render_object(ob, nolamps, onlyselected, actob)) {
+ if(allow_render_object(re, ob, nolamps, onlyselected, actob)) {
init_render_object(re, ob, NULL, 0, timeoffset, vectorlay);
ob->transflag &= ~OB_RENDER_DUPLI;
}
@@ -4693,7 +4697,7 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp
if(obd->type==OB_MBALL)
continue;
- if(!allow_render_object(obd, nolamps, onlyselected, actob))
+ if(!allow_render_object(re, obd, nolamps, onlyselected, actob))
continue;
if(allow_render_dupli_instance(re, dob, obd)) {
@@ -4763,10 +4767,10 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp
}
free_object_duplilist(lb);
- if(allow_render_object(ob, nolamps, onlyselected, actob))
+ if(allow_render_object(re, ob, nolamps, onlyselected, actob))
init_render_object(re, ob, NULL, 0, timeoffset, vectorlay);
}
- else if(allow_render_object(ob, nolamps, onlyselected, actob))
+ else if(allow_render_object(re, ob, nolamps, onlyselected, actob))
init_render_object(re, ob, NULL, 0, timeoffset, vectorlay);
}
@@ -4844,8 +4848,7 @@ void RE_Database_FromScene(Render *re, Scene *scene, int use_camera_view)
/* still bad... doing all */
init_render_textures(re);
- if (re->r.color_mgt_flag & R_COLOR_MANAGEMENT) color_manage_linearize(amb, &re->wrld.ambr);
- else VECCOPY(amb, &re->wrld.ambr);
+ VECCOPY(amb, &re->wrld.ambr);
init_render_materials(re->r.mode, amb);
set_node_shader_lamp_loop(shade_material_loop);
@@ -5534,8 +5537,7 @@ void RE_Database_Baking(Render *re, Scene *scene, int type, Object *actob)
/* still bad... doing all */
init_render_textures(re);
- if (re->r.color_mgt_flag & R_COLOR_MANAGEMENT) color_manage_linearize(amb, &re->wrld.ambr);
- else VECCOPY(amb, &re->wrld.ambr);
+ VECCOPY(amb, &re->wrld.ambr);
init_render_materials(re->r.mode, amb);
set_node_shader_lamp_loop(shade_material_loop);
diff --git a/source/blender/render/intern/source/occlusion.c b/source/blender/render/intern/source/occlusion.c
index f62668b84c0..40fcc2b399a 100644
--- a/source/blender/render/intern/source/occlusion.c
+++ b/source/blender/render/intern/source/occlusion.c
@@ -64,7 +64,7 @@
#define CACHE_STEP 3
typedef struct OcclusionCacheSample {
- float co[3], n[3], col[3], intensity, dist2;
+ float co[3], n[3], ao[3], indirect[3], intensity, dist2;
int x, y, filled;
} OcclusionCacheSample;
@@ -81,7 +81,7 @@ typedef struct OccFace {
typedef struct OccNode {
float co[3], area;
float sh[9], dco;
- float occlusion;
+ float occlusion, rad[3];
int childflag;
union {
//OccFace face;
@@ -97,6 +97,7 @@ typedef struct OcclusionTree {
OccFace *face; /* instance and face indices */
float *occlusion; /* occlusion for faces */
+ float (*rad)[3]; /* radiance for faces */
OccNode *root;
@@ -110,6 +111,7 @@ typedef struct OcclusionTree {
int dothreadedbuild;
int totbuildthread;
+ int doindirect;
OcclusionCache *cache;
} OcclusionTree;
@@ -117,7 +119,8 @@ typedef struct OcclusionTree {
typedef struct OcclusionThread {
Render *re;
StrandSurface *mesh;
- float (*facecol)[3];
+ float (*faceao)[3];
+ float (*faceindirect)[3];
int begin, end;
int thread;
} OcclusionThread;
@@ -132,7 +135,6 @@ typedef struct OcclusionBuildThread {
extern Render R; // meh
-#if 0
static void occ_shade(ShadeSample *ssamp, ObjectInstanceRen *obi, VlakRen *vlr, float *rad)
{
ShadeInput *shi= ssamp->shi;
@@ -160,7 +162,7 @@ static void occ_shade(ShadeSample *ssamp, ObjectInstanceRen *obi, VlakRen *vlr,
shi->co[0]= l*v3[0]+u*v1[0]+v*v2[0];
shi->co[1]= l*v3[1]+u*v1[1]+v*v2[1];
shi->co[2]= l*v3[2]+u*v1[2]+v*v2[2];
-
+
shade_input_set_triangle_i(shi, obi, vlr, 0, 1, 2);
/* set up view vector */
@@ -179,6 +181,8 @@ static void occ_shade(ShadeSample *ssamp, ObjectInstanceRen *obi, VlakRen *vlr,
if(shi->flippednor)
shade_input_flip_normals(shi);
+ madd_v3_v3fl(shi->co, shi->vn, 0.0001f); /* ugly.. */
+
/* not a pretty solution, but fixes common cases */
if(shi->obr->ob && shi->obr->ob->transflag & OB_NEG_SCALE) {
negate_v3(shi->vn);
@@ -215,12 +219,11 @@ static void occ_build_shade(Render *re, OcclusionTree *tree)
for(a=0; a<tree->totface; a++) {
obi= &R.objectinstance[tree->face[a].obi];
- vlr= RE_findOrAddVlak(obi->obr, tree->face[a].vlr);
+ vlr= RE_findOrAddVlak(obi->obr, tree->face[a].facenr);
occ_shade(&ssamp, obi, vlr, tree->rad[a]);
}
}
-#endif
/* ------------------------- Spherical Harmonics --------------------------- */
@@ -352,17 +355,19 @@ static void occ_face(const OccFace *face, float *co, float *normal, float *area)
static void occ_sum_occlusion(OcclusionTree *tree, OccNode *node)
{
OccNode *child;
- float occ, area, totarea;
- int a, b;
+ float occ, area, totarea, rad[3];
+ int a, b, indirect= tree->doindirect;
occ= 0.0f;
totarea= 0.0f;
+ if(indirect) zero_v3(rad);
for(b=0; b<TOTCHILD; b++) {
if(node->childflag & (1<<b)) {
a= node->child[b].face;
occ_face(&tree->face[a], 0, 0, &area);
occ += area*tree->occlusion[a];
+ if(indirect) madd_v3_v3fl(rad, tree->rad[a], area);
totarea += area;
}
else if(node->child[b].node) {
@@ -370,14 +375,18 @@ static void occ_sum_occlusion(OcclusionTree *tree, OccNode *node)
occ_sum_occlusion(tree, child);
occ += child->area*child->occlusion;
+ if(indirect) madd_v3_v3fl(rad, child->rad, child->area);
totarea += child->area;
}
}
- if(totarea != 0.0f)
+ if(totarea != 0.0f) {
occ /= totarea;
+ if(indirect) mul_v3_fl(rad, 1.0f/totarea);
+ }
node->occlusion= occ;
+ if(indirect) copy_v3_v3(node->rad, rad);
}
static int occ_find_bbox_axis(OcclusionTree *tree, int begin, int end, float *min, float *max)
@@ -644,6 +653,7 @@ static OcclusionTree *occ_tree_build(Render *re)
/* parameters */
tree->error= get_render_aosss_error(&re->r, re->wrld.ao_approx_error);
tree->distfac= (re->wrld.aomode & WO_AODIST)? re->wrld.aodistfac: 0.0f;
+ tree->doindirect= (re->wrld.ao_indirect_energy > 0.0f && re->wrld.ao_indirect_bounces > 0);
/* allocation */
tree->arena= BLI_memarena_new(0x8000 * sizeof(OccNode));
@@ -656,6 +666,9 @@ static OcclusionTree *occ_tree_build(Render *re)
tree->co= MEM_callocN(sizeof(float)*3*totface, "OcclusionCo");
tree->occlusion= MEM_callocN(sizeof(float)*totface, "OcclusionOcclusion");
+ if(tree->doindirect)
+ tree->rad= MEM_callocN(sizeof(float)*3*totface, "OcclusionRad");
+
/* make array of face pointers */
for(b=0, c=0, obi=re->instancetable.first; obi; obi=obi->next, c++) {
obr= obi->obr;
@@ -682,12 +695,10 @@ static OcclusionTree *occ_tree_build(Render *re)
tree->maxdepth= 1;
occ_build_recursive(tree, tree->root, 0, totface, 1);
-#if 0
if(tree->doindirect) {
occ_build_shade(re, tree);
occ_sum_occlusion(tree, tree->root);
}
-#endif
MEM_freeN(tree->co);
tree->co= NULL;
@@ -710,8 +721,9 @@ static void occ_free_tree(OcclusionTree *tree)
if(tree->stack[a])
MEM_freeN(tree->stack[a]);
if(tree->occlusion) MEM_freeN(tree->occlusion);
- if(tree->face) MEM_freeN(tree->face);
if(tree->cache) MEM_freeN(tree->cache);
+ if(tree->face) MEM_freeN(tree->face);
+ if(tree->rad) MEM_freeN(tree->rad);
MEM_freeN(tree);
}
}
@@ -1171,13 +1183,13 @@ static float occ_form_factor(OccFace *face, float *p, float *n)
return contrib;
}
-static void occ_lookup(OcclusionTree *tree, int thread, OccFace *exclude, float *pp, float *pn, float *occ, float *bentn)
+static void occ_lookup(OcclusionTree *tree, int thread, OccFace *exclude, float *pp, float *pn, float *occ, float rad[3], float bentn[3])
{
OccNode *node, **stack;
OccFace *face;
- float resultocc, v[3], p[3], n[3], co[3], invd2;
+ float resultocc, resultrad[3], v[3], p[3], n[3], co[3], invd2;
float distfac, fac, error, d2, weight, emitarea;
- int b, totstack;
+ int b, f, totstack;
/* init variables */
VECCOPY(p, pp);
@@ -1185,12 +1197,13 @@ static void occ_lookup(OcclusionTree *tree, int thread, OccFace *exclude, float
VECADDFAC(p, p, n, 1e-4f);
if(bentn)
- VECCOPY(bentn, n);
+ copy_v3_v3(bentn, n);
error= tree->error;
distfac= tree->distfac;
resultocc= 0.0f;
+ zero_v3(resultrad);
/* init stack */
stack= tree->stack[thread];
@@ -1217,6 +1230,10 @@ static void occ_lookup(OcclusionTree *tree, int thread, OccFace *exclude, float
/* accumulate occlusion from spherical harmonics */
invd2 = 1.0f/sqrtf(d2);
weight= occ_solid_angle(node, v, d2, invd2, n);
+
+ if(rad)
+ madd_v3_v3fl(resultrad, node->rad, weight*fac);
+
weight *= node->occlusion;
if(bentn) {
@@ -1231,7 +1248,8 @@ static void occ_lookup(OcclusionTree *tree, int thread, OccFace *exclude, float
/* traverse into children */
for(b=0; b<TOTCHILD; b++) {
if(node->childflag & (1<<b)) {
- face= tree->face+node->child[b].face;
+ f= node->child[b].face;
+ face= &tree->face[f];
/* accumulate occlusion with face form factor */
if(!exclude || !(face->obi == exclude->obi && face->facenr == exclude->facenr)) {
@@ -1248,7 +1266,11 @@ static void occ_lookup(OcclusionTree *tree, int thread, OccFace *exclude, float
fac= 1.0f;
weight= occ_form_factor(face, p, n);
- weight *= tree->occlusion[node->child[b].face];
+
+ if(rad)
+ madd_v3_v3fl(resultrad, tree->rad[f], weight*fac);
+
+ weight *= tree->occlusion[f];
if(bentn) {
invd2= 1.0f/sqrtf(d2);
@@ -1269,9 +1291,57 @@ static void occ_lookup(OcclusionTree *tree, int thread, OccFace *exclude, float
}
if(occ) *occ= resultocc;
+ if(rad) copy_v3_v3(rad, resultrad);
+ /*if(rad && exclude) {
+ int a;
+ for(a=0; a<tree->totface; a++)
+ if((tree->face[a].obi == exclude->obi && tree->face[a].facenr == exclude->facenr))
+ copy_v3_v3(rad, tree->rad[a]);
+ }*/
if(bentn) normalize_v3(bentn);
}
+static void occ_compute_bounces(Render *re, OcclusionTree *tree, int totbounce)
+{
+ float (*rad)[3], (*sum)[3], (*tmp)[3], co[3], n[3], occ;
+ int bounce, i;
+
+ rad= MEM_callocN(sizeof(float)*3*tree->totface, "OcclusionBounceRad");
+ sum= MEM_dupallocN(tree->rad);
+
+ for(bounce=1; bounce<totbounce; bounce++) {
+ for(i=0; i<tree->totface; i++) {
+ occ_face(&tree->face[i], co, n, NULL);
+ madd_v3_v3fl(co, n, 1e-8f);
+
+ occ_lookup(tree, 0, &tree->face[i], co, n, &occ, rad[i], NULL);
+ rad[i][0]= MAX2(rad[i][0], 0.0f);
+ rad[i][1]= MAX2(rad[i][1], 0.0f);
+ rad[i][2]= MAX2(rad[i][2], 0.0f);
+ add_v3_v3(sum[i], rad[i]);
+
+ if(re->test_break(re->tbh))
+ break;
+ }
+
+ if(re->test_break(re->tbh))
+ break;
+
+ tmp= tree->rad;
+ tree->rad= rad;
+ rad= tmp;
+
+ occ_sum_occlusion(tree, tree->root);
+ }
+
+ MEM_freeN(rad);
+ MEM_freeN(tree->rad);
+ tree->rad= sum;
+
+ if(!re->test_break(re->tbh))
+ occ_sum_occlusion(tree, tree->root);
+}
+
static void occ_compute_passes(Render *re, OcclusionTree *tree, int totpass)
{
float *occ, co[3], n[3];
@@ -1285,7 +1355,7 @@ static void occ_compute_passes(Render *re, OcclusionTree *tree, int totpass)
negate_v3(n);
VECADDFAC(co, co, n, 1e-8f);
- occ_lookup(tree, 0, &tree->face[i], co, n, &occ[i], NULL);
+ occ_lookup(tree, 0, &tree->face[i], co, n, &occ[i], NULL, NULL);
if(re->test_break(re->tbh))
break;
}
@@ -1305,9 +1375,9 @@ static void occ_compute_passes(Render *re, OcclusionTree *tree, int totpass)
MEM_freeN(occ);
}
-static void sample_occ_tree(Render *re, OcclusionTree *tree, OccFace *exclude, float *co, float *n, int thread, int onlyshadow, float *skycol)
+static void sample_occ_tree(Render *re, OcclusionTree *tree, OccFace *exclude, float *co, float *n, int thread, int onlyshadow, float *ao, float *indirect)
{
- float nn[3], bn[3], fac, occ, occlusion, correction;
+ float nn[3], bn[3], fac, occ, occlusion, correction, rad[3];
int aocolor;
aocolor= re->wrld.aocolor;
@@ -1317,7 +1387,7 @@ static void sample_occ_tree(Render *re, OcclusionTree *tree, OccFace *exclude, f
VECCOPY(nn, n);
negate_v3(nn);
- occ_lookup(tree, thread, exclude, co, nn, &occ, (aocolor)? bn: NULL);
+ occ_lookup(tree, thread, exclude, co, nn, &occ, (tree->doindirect)? rad: NULL, (aocolor)? bn: NULL);
correction= re->wrld.ao_approx_correction;
@@ -1330,9 +1400,9 @@ static void sample_occ_tree(Render *re, OcclusionTree *tree, OccFace *exclude, f
/* sky shading using bent normal */
if(ELEM(aocolor, WO_AOSKYCOL, WO_AOSKYTEX)) {
fac= 0.5*(1.0f+bn[0]*re->grvec[0]+ bn[1]*re->grvec[1]+ bn[2]*re->grvec[2]);
- skycol[0]= (1.0f-fac)*re->wrld.horr + fac*re->wrld.zenr;
- skycol[1]= (1.0f-fac)*re->wrld.horg + fac*re->wrld.zeng;
- skycol[2]= (1.0f-fac)*re->wrld.horb + fac*re->wrld.zenb;
+ ao[0]= (1.0f-fac)*re->wrld.horr + fac*re->wrld.zenr;
+ ao[1]= (1.0f-fac)*re->wrld.horg + fac*re->wrld.zeng;
+ ao[2]= (1.0f-fac)*re->wrld.horb + fac*re->wrld.zenb;
}
#if 0
else { /* WO_AOSKYTEX */
@@ -1343,17 +1413,20 @@ static void sample_occ_tree(Render *re, OcclusionTree *tree, OccFace *exclude, f
dxyview[0]= 1.0f;
dxyview[1]= 1.0f;
dxyview[2]= 0.0f;
- shadeSkyView(skycol, co, bn, dxyview);
+ shadeSkyView(ao, co, bn, dxyview);
}
#endif
- mul_v3_fl(skycol, occlusion);
+ mul_v3_fl(ao, occlusion);
}
else {
- skycol[0]= occlusion;
- skycol[1]= occlusion;
- skycol[2]= occlusion;
+ ao[0]= occlusion;
+ ao[1]= occlusion;
+ ao[2]= occlusion;
}
+
+ if(tree->doindirect) copy_v3_v3(indirect, rad);
+ else zero_v3(indirect);
}
/* ---------------------------- Caching ------------------------------- */
@@ -1374,7 +1447,7 @@ static OcclusionCacheSample *find_occ_sample(OcclusionCache *cache, int x, int y
return &cache->sample[y*cache->w + x];
}
-static int sample_occ_cache(OcclusionTree *tree, float *co, float *n, int x, int y, int thread, float *col)
+static int sample_occ_cache(OcclusionTree *tree, float *co, float *n, int x, int y, int thread, float *ao, float *indirect)
{
OcclusionCache *cache;
OcclusionCacheSample *samples[4], *sample;
@@ -1394,7 +1467,8 @@ static int sample_occ_cache(OcclusionTree *tree, float *co, float *n, int x, int
VECSUB(d, sample->co, co);
dist2= INPR(d, d);
if(dist2 < 0.5f*sample->dist2 && INPR(sample->n, n) > 0.98f) {
- VECCOPY(col, sample->col);
+ VECCOPY(ao, sample->ao);
+ VECCOPY(indirect, sample->indirect);
return 1;
}
}
@@ -1420,7 +1494,8 @@ static int sample_occ_cache(OcclusionTree *tree, float *co, float *n, int x, int
return 0;
/* compute weighted interpolation between samples */
- col[0]= col[1]= col[2]= 0.0f;
+ zero_v3(ao);
+ zero_v3(indirect);
totw= 0.0f;
x1= samples[0]->x;
@@ -1446,16 +1521,14 @@ static int sample_occ_cache(OcclusionTree *tree, float *co, float *n, int x, int
w= wb[i]*wn[i]*wz[i];
totw += w;
- col[0] += w*samples[i]->col[0];
- col[1] += w*samples[i]->col[1];
- col[2] += w*samples[i]->col[2];
+ madd_v3_v3fl(ao, samples[i]->ao, w);
+ madd_v3_v3fl(indirect, samples[i]->indirect, w);
}
if(totw >= 0.9f) {
totw= 1.0f/totw;
- col[0] *= totw;
- col[1] *= totw;
- col[2] *= totw;
+ mul_v3_fl(ao, totw);
+ mul_v3_fl(indirect, totw);
return 1;
}
@@ -1469,7 +1542,7 @@ static void sample_occ_surface(ShadeInput *shi)
int *face, *index = RE_strandren_get_face(shi->obr, strand, 0);
float w[4], *co1, *co2, *co3, *co4;
- if(mesh && mesh->face && mesh->co && mesh->col && index) {
+ if(mesh && mesh->face && mesh->co && mesh->ao && index) {
face= mesh->face[*index];
co1= mesh->co[face[0]];
@@ -1477,19 +1550,27 @@ static void sample_occ_surface(ShadeInput *shi)
co3= mesh->co[face[2]];
co4= (face[3])? mesh->co[face[3]]: NULL;
- interp_weights_face_v3( w,co1, co2, co3, co4, strand->vert->co);
+ interp_weights_face_v3(w, co1, co2, co3, co4, strand->vert->co);
+
+ zero_v3(shi->ao);
+ zero_v3(shi->indirect);
- shi->ao[0]= shi->ao[1]= shi->ao[2]= 0.0f;
- VECADDFAC(shi->ao, shi->ao, mesh->col[face[0]], w[0]);
- VECADDFAC(shi->ao, shi->ao, mesh->col[face[1]], w[1]);
- VECADDFAC(shi->ao, shi->ao, mesh->col[face[2]], w[2]);
- if(face[3])
- VECADDFAC(shi->ao, shi->ao, mesh->col[face[3]], w[3]);
+ madd_v3_v3fl(shi->ao, mesh->ao[face[0]], w[0]);
+ madd_v3_v3fl(shi->indirect, mesh->indirect[face[0]], w[0]);
+ madd_v3_v3fl(shi->ao, mesh->ao[face[1]], w[1]);
+ madd_v3_v3fl(shi->indirect, mesh->indirect[face[1]], w[1]);
+ madd_v3_v3fl(shi->ao, mesh->ao[face[2]], w[2]);
+ madd_v3_v3fl(shi->indirect, mesh->indirect[face[2]], w[2]);
+ if(face[3]) {
+ madd_v3_v3fl(shi->ao, mesh->ao[face[3]], w[3]);
+ madd_v3_v3fl(shi->indirect, mesh->indirect[face[3]], w[3]);
+ }
}
else {
shi->ao[0]= 1.0f;
shi->ao[1]= 1.0f;
shi->ao[2]= 1.0f;
+ zero_v3(shi->indirect);
}
}
@@ -1500,7 +1581,7 @@ static void *exec_strandsurface_sample(void *data)
OcclusionThread *othread= (OcclusionThread*)data;
Render *re= othread->re;
StrandSurface *mesh= othread->mesh;
- float col[3], co[3], n[3], *co1, *co2, *co3, *co4;
+ float ao[3], indirect[3], co[3], n[3], *co1, *co2, *co3, *co4;
int a, *face;
for(a=othread->begin; a<othread->end; a++) {
@@ -1521,8 +1602,9 @@ static void *exec_strandsurface_sample(void *data)
}
negate_v3(n);
- sample_occ_tree(re, re->occlusiontree, NULL, co, n, othread->thread, 0, col);
- VECCOPY(othread->facecol[a], col);
+ sample_occ_tree(re, re->occlusiontree, NULL, co, n, othread->thread, 0, ao, indirect);
+ VECCOPY(othread->faceao[a], ao);
+ VECCOPY(othread->faceindirect[a], indirect);
}
return 0;
@@ -1531,9 +1613,10 @@ static void *exec_strandsurface_sample(void *data)
void make_occ_tree(Render *re)
{
OcclusionThread othreads[BLENDER_MAX_THREADS];
+ OcclusionTree *tree;
StrandSurface *mesh;
ListBase threads;
- float col[3], (*facecol)[3];
+ float ao[3], indirect[3], (*faceao)[3], (*faceindirect)[3];
int a, totface, totthread, *face, *count;
/* ugly, needed for occ_face */
@@ -1542,24 +1625,28 @@ void make_occ_tree(Render *re)
re->i.infostr= "Occlusion preprocessing";
re->stats_draw(re->sdh, &re->i);
- re->occlusiontree= occ_tree_build(re);
+ re->occlusiontree= tree= occ_tree_build(re);
- if(re->occlusiontree) {
- if(re->wrld.ao_approx_passes)
- occ_compute_passes(re, re->occlusiontree, re->wrld.ao_approx_passes);
+ if(tree) {
+ if(re->wrld.ao_approx_passes > 0)
+ occ_compute_passes(re, tree, re->wrld.ao_approx_passes);
+ if(tree->doindirect && re->wrld.ao_indirect_bounces > 1)
+ occ_compute_bounces(re, tree, re->wrld.ao_indirect_bounces);
for(mesh=re->strandsurface.first; mesh; mesh=mesh->next) {
- if(!mesh->face || !mesh->co || !mesh->col)
+ if(!mesh->face || !mesh->co || !mesh->ao)
continue;
count= MEM_callocN(sizeof(int)*mesh->totvert, "OcclusionCount");
- facecol= MEM_callocN(sizeof(float)*3*mesh->totface, "StrandSurfFaceCol");
+ faceao= MEM_callocN(sizeof(float)*3*mesh->totface, "StrandSurfFaceAO");
+ faceindirect= MEM_callocN(sizeof(float)*3*mesh->totface, "StrandSurfFaceIndirect");
totthread= (mesh->totface > 10000)? re->r.threads: 1;
totface= mesh->totface/totthread;
for(a=0; a<totthread; a++) {
othreads[a].re= re;
- othreads[a].facecol= facecol;
+ othreads[a].faceao= faceao;
+ othreads[a].faceindirect= faceindirect;
othreads[a].thread= a;
othreads[a].mesh= mesh;
othreads[a].begin= a*totface;
@@ -1581,26 +1668,36 @@ void make_occ_tree(Render *re)
for(a=0; a<mesh->totface; a++) {
face= mesh->face[a];
- VECCOPY(col, facecol[a]);
- VECADD(mesh->col[face[0]], mesh->col[face[0]], col);
+ VECCOPY(ao, faceao[a]);
+ VECCOPY(indirect, faceindirect[a]);
+
+ VECADD(mesh->ao[face[0]], mesh->ao[face[0]], ao);
+ VECADD(mesh->indirect[face[0]], mesh->indirect[face[0]], indirect);
count[face[0]]++;
- VECADD(mesh->col[face[1]], mesh->col[face[1]], col);
+ VECADD(mesh->ao[face[1]], mesh->ao[face[1]], ao);
+ VECADD(mesh->indirect[face[1]], mesh->indirect[face[1]], indirect);
count[face[1]]++;
- VECADD(mesh->col[face[2]], mesh->col[face[2]], col);
+ VECADD(mesh->ao[face[2]], mesh->ao[face[2]], ao);
+ VECADD(mesh->indirect[face[2]], mesh->indirect[face[2]], indirect);
count[face[2]]++;
if(face[3]) {
- VECADD(mesh->col[face[3]], mesh->col[face[3]], col);
+ VECADD(mesh->ao[face[3]], mesh->ao[face[3]], ao);
+ VECADD(mesh->indirect[face[3]], mesh->indirect[face[3]], indirect);
count[face[3]]++;
}
}
- for(a=0; a<mesh->totvert; a++)
- if(count[a])
- mul_v3_fl(mesh->col[a], 1.0f/count[a]);
+ for(a=0; a<mesh->totvert; a++) {
+ if(count[a]) {
+ mul_v3_fl(mesh->ao[a], 1.0f/count[a]);
+ mul_v3_fl(mesh->indirect[a], 1.0f/count[a]);
+ }
+ }
MEM_freeN(count);
- MEM_freeN(facecol);
+ MEM_freeN(faceao);
+ MEM_freeN(faceindirect);
}
}
}
@@ -1626,12 +1723,12 @@ void sample_occ(Render *re, ShadeInput *shi)
sample_occ_surface(shi);
}
/* try to get result from the cache if possible */
- else if(shi->depth!=0 || !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, shi->indirect)) {
/* no luck, let's sample the occlusion */
exclude.obi= shi->obi - re->objectinstance;
exclude.facenr= shi->vlr->index;
onlyshadow= (shi->mat->mode & MA_ONLYSHADOW);
- sample_occ_tree(re, tree, &exclude, shi->co, shi->vno, shi->thread, onlyshadow, shi->ao);
+ sample_occ_tree(re, tree, &exclude, shi->co, shi->vno, shi->thread, onlyshadow, shi->ao, shi->indirect);
/* fill result into sample, each time */
if(tree->cache) {
@@ -1641,8 +1738,10 @@ void sample_occ(Render *re, ShadeInput *shi)
sample= &cache->sample[(shi->ys-cache->y)*cache->w + (shi->xs-cache->x)];
VECCOPY(sample->co, shi->co);
VECCOPY(sample->n, shi->vno);
- VECCOPY(sample->col, shi->ao);
- sample->intensity= MAX3(sample->col[0], sample->col[1], sample->col[2]);
+ VECCOPY(sample->ao, shi->ao);
+ VECCOPY(sample->indirect, shi->indirect);
+ sample->intensity= MAX3(sample->ao[0], sample->ao[1], sample->ao[2]);
+ sample->intensity= MAX2(sample->intensity, MAX3(sample->indirect[0], sample->indirect[1], sample->indirect[2]));
sample->dist2= INPR(shi->dxco, shi->dxco) + INPR(shi->dyco, shi->dyco);
sample->filled= 1;
}
@@ -1653,6 +1752,10 @@ void sample_occ(Render *re, ShadeInput *shi)
shi->ao[0]= 1.0f;
shi->ao[1]= 1.0f;
shi->ao[2]= 1.0f;
+
+ shi->indirect[0]= 0.0f;
+ shi->indirect[1]= 0.0f;
+ shi->indirect[2]= 0.0f;
}
}
@@ -1720,12 +1823,14 @@ void cache_occ_samples(Render *re, RenderPart *pa, ShadeSample *ssamp)
onlyshadow= (shi->mat->mode & MA_ONLYSHADOW);
exclude.obi= shi->obi - re->objectinstance;
exclude.facenr= shi->vlr->index;
- sample_occ_tree(re, tree, &exclude, shi->co, shi->vno, shi->thread, onlyshadow, shi->ao);
+ sample_occ_tree(re, tree, &exclude, shi->co, shi->vno, shi->thread, onlyshadow, shi->ao, shi->indirect);
VECCOPY(sample->co, shi->co);
VECCOPY(sample->n, shi->vno);
- VECCOPY(sample->col, shi->ao);
- sample->intensity= MAX3(sample->col[0], sample->col[1], sample->col[2]);
+ VECCOPY(sample->ao, shi->ao);
+ VECCOPY(sample->indirect, shi->indirect);
+ sample->intensity= MAX3(sample->ao[0], sample->ao[1], sample->ao[2]);
+ sample->intensity= MAX2(sample->intensity, MAX3(sample->indirect[0], sample->indirect[1], sample->indirect[2]));
sample->dist2= INPR(shi->dxco, shi->dxco) + INPR(shi->dyco, shi->dyco);
sample->x= shi->xs;
sample->y= shi->ys;
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index b357a17e244..e2b290f655b 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -48,8 +48,9 @@
#include "BKE_report.h"
#include "BKE_scene.h"
#include "BKE_writeavi.h" /* <------ should be replaced once with generic movie module */
-#include "BKE_sequence.h"
+#include "BKE_sequencer.h"
#include "BKE_pointcache.h"
+#include "BKE_animsys.h" /* <------ should this be here?, needed for sequencer update */
#include "MEM_guardedalloc.h"
@@ -1065,12 +1066,25 @@ void RE_ResultGet32(Render *re, unsigned int *rect)
int tot= rres.rectx*rres.recty;
char *cp= (char *)rect;
- for(;tot>0; tot--, cp+=4, fp+=4) {
- cp[0] = FTOCHAR(fp[0]);
- cp[1] = FTOCHAR(fp[1]);
- cp[2] = FTOCHAR(fp[2]);
- cp[3] = FTOCHAR(fp[3]);
+ if (re->r.color_mgt_flag & R_COLOR_MANAGEMENT) {
+ /* Finally convert back to sRGB rendered image */
+ for(;tot>0; tot--, cp+=4, fp+=4) {
+ cp[0] = FTOCHAR(linearrgb_to_srgb(fp[0]));
+ cp[1] = FTOCHAR(linearrgb_to_srgb(fp[1]));
+ cp[2] = FTOCHAR(linearrgb_to_srgb(fp[2]));
+ cp[3] = FTOCHAR(fp[3]);
+ }
+ }
+ else {
+ /* Color management is off : no conversion necessary */
+ for(;tot>0; tot--, cp+=4, fp+=4) {
+ cp[0] = FTOCHAR(fp[0]);
+ cp[1] = FTOCHAR(fp[1]);
+ cp[2] = FTOCHAR(fp[2]);
+ cp[3] = FTOCHAR(fp[3]);
+ }
}
+
}
else
/* else fill with black */
@@ -2426,6 +2440,11 @@ static void do_render_seq(Render * re)
RenderResult *rr = re->result;
int cfra = re->r.cfra;
+ if(recurs_depth==0) {
+ /* otherwise sequencer animation isnt updated */
+ BKE_animsys_evaluate_all_animation(G.main, (float)cfra); // XXX, was frame_to_float(re->scene, cfra)
+ }
+
recurs_depth++;
ibuf= give_ibuf_seq(re->scene, rr->rectx, rr->recty, cfra, 0, 100.0);
@@ -2485,6 +2504,12 @@ static void do_render_seq(Render * re)
/* main loop: doing sequence + fields + blur + 3d render + compositing */
static void do_render_all_options(Render *re)
{
+#ifdef DURIAN_CAMERA_SWITCH
+ Object *camera= scene_find_camera_switch(re->scene);
+ if(camera)
+ re->scene->camera= camera;
+#endif
+
re->i.starttime= PIL_check_seconds_timer();
/* ensure no images are in memory from previous animated sequences */
@@ -2727,10 +2752,11 @@ void RE_BlenderFrame(Render *re, Scene *scene, int frame)
re->result_ok= 1;
}
-static void do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh)
+static int do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh, ReportList *reports)
{
char name[FILE_MAX];
RenderResult rres;
+ int ok= 1;
RE_AcquireResultImage(re, &rres);
@@ -2743,7 +2769,7 @@ static void do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh)
dofree = 1;
}
RE_ResultGet32(re, (unsigned int *)rres.rect32);
- mh->append_movie(&re->r, scene->r.cfra, rres.rect32, rres.rectx, rres.recty);
+ ok= mh->append_movie(&re->r, scene->r.cfra, rres.rect32, rres.rectx, rres.recty, reports);
if(dofree) {
MEM_freeN(rres.rect32);
}
@@ -2760,7 +2786,6 @@ static void do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh)
}
else {
ImBuf *ibuf= IMB_allocImBuf(rres.rectx, rres.recty, scene->r.planes, 0, 0);
- int ok;
/* if not exists, BKE_write_ibuf makes one */
ibuf->rect= (unsigned int *)rres.rect32;
@@ -2777,7 +2802,6 @@ static void do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh)
if(ok==0) {
printf("Render error: cannot save %s\n", name);
- G.afbreek=1;
}
else printf("Saved: %s", name);
@@ -2801,10 +2825,12 @@ static void do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh)
BLI_timestr(re->i.lastframetime, name);
printf(" Time: %s\n", name);
fflush(stdout); /* needed for renderd !! (not anymore... (ton)) */
+
+ return ok;
}
/* saves images to disk */
-void RE_BlenderAnim(Render *re, Scene *scene, int sfra, int efra, int tfra)
+void RE_BlenderAnim(Render *re, Scene *scene, int sfra, int efra, int tfra, ReportList *reports)
{
bMovieHandle *mh= BKE_get_movie_handle(scene->r.imtype);
unsigned int lay;
@@ -2821,18 +2847,20 @@ void RE_BlenderAnim(Render *re, Scene *scene, int sfra, int efra, int tfra)
re->result_ok= 0;
if(BKE_imtype_is_movie(scene->r.imtype))
- mh->start_movie(scene, &re->r, re->rectx, re->recty);
-
+ if(!mh->start_movie(scene, &re->r, re->rectx, re->recty, reports))
+ G.afbreek= 1;
+
if (mh->get_next_frame) {
while (!(G.afbreek == 1)) {
- int nf = mh->get_next_frame(&re->r);
+ int nf = mh->get_next_frame(&re->r, reports);
if (nf >= 0 && nf >= scene->r.sfra && nf <= scene->r.efra) {
scene->r.cfra = re->r.cfra = nf;
do_render_all_options(re);
if(re->test_break(re->tbh) == 0) {
- do_write_image_or_movie(re, scene, mh);
+ if(!do_write_image_or_movie(re, scene, mh, reports))
+ G.afbreek= 1;
}
} else {
if(re->test_break(re->tbh))
@@ -2882,8 +2910,11 @@ void RE_BlenderAnim(Render *re, Scene *scene, int sfra, int efra, int tfra)
do_render_all_options(re);
- if(re->test_break(re->tbh) == 0)
- do_write_image_or_movie(re, scene, mh);
+ if(re->test_break(re->tbh) == 0) {
+ if(!G.afbreek)
+ if(!do_write_image_or_movie(re, scene, mh, reports))
+ G.afbreek= 1;
+ }
else
G.afbreek= 1;
diff --git a/source/blender/render/intern/source/pixelshading.c b/source/blender/render/intern/source/pixelshading.c
index d4b7c403f50..6fef8279c7e 100644
--- a/source/blender/render/intern/source/pixelshading.c
+++ b/source/blender/render/intern/source/pixelshading.c
@@ -537,15 +537,9 @@ void shadeSkyView(float *colf, float *rco, float *view, float *dxyview, short th
/* the fraction of how far we are above the bottom of the screen */
blend= fabs(0.5+ view[1]);
}
-
- if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT) {
- color_manage_linearize(hor, &R.wrld.horr);
- color_manage_linearize(zen, &R.wrld.zenr);
- }
- else {
- VECCOPY(hor, &R.wrld.horr);
- VECCOPY(zen, &R.wrld.zenr);
- }
+
+ VECCOPY(hor, &R.wrld.horr);
+ VECCOPY(zen, &R.wrld.zenr);
/* Careful: SKYTEX and SKYBLEND are NOT mutually exclusive! If */
/* SKYBLEND is active, the texture and color blend are added. */
@@ -633,10 +627,7 @@ void shadeSkyPixel(float *collector, float fx, float fy, short thread)
}
else if((R.wrld.skytype & (WO_SKYBLEND+WO_SKYTEX))==0) {
/* 2. solid color */
- if(R.r.color_mgt_flag & R_COLOR_MANAGEMENT)
- color_manage_linearize(collector, &R.wrld.horr);
- else
- VECCOPY(collector, &R.wrld.horr);
+ VECCOPY(collector, &R.wrld.horr);
collector[3] = 0.0f;
}
diff --git a/source/blender/render/intern/source/shadeinput.c b/source/blender/render/intern/source/shadeinput.c
index 396c713cfb7..fd1e27ab28a 100644
--- a/source/blender/render/intern/source/shadeinput.c
+++ b/source/blender/render/intern/source/shadeinput.c
@@ -91,42 +91,16 @@ extern struct Render R;
* doing inverse gamma correction where applicable */
void shade_input_init_material(ShadeInput *shi)
{
- if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT) {
- color_manage_linearize(&shi->r, &shi->mat->r);
- color_manage_linearize(&shi->specr, &shi->mat->specr);
- color_manage_linearize(&shi->mirr, &shi->mat->mirr);
-
- /* material ambr / ambg / ambb is overwritten from world
- color_manage_linearize(shi->ambr, shi->mat->ambr);
- */
-
- /* note, keep this synced with render_types.h */
- memcpy(&shi->amb, &shi->mat->amb, 11*sizeof(float));
- shi->har= shi->mat->har;
- } else {
- /* note, keep this synced with render_types.h */
- memcpy(&shi->r, &shi->mat->r, 23*sizeof(float));
- shi->har= shi->mat->har;
- }
-
-}
-
-static void shadeinput_colors_linearize(ShadeInput *shi)
-{
- color_manage_linearize(&shi->r, &shi->r);
- color_manage_linearize(&shi->specr, &shi->specr);
- color_manage_linearize(&shi->mirr, &shi->mirr);
+ /* note, keep this synced with render_types.h */
+ memcpy(&shi->r, &shi->mat->r, 23*sizeof(float));
+ shi->har= shi->mat->har;
}
/* also used as callback for nodes */
/* delivers a fully filled in ShadeResult, for all passes */
void shade_material_loop(ShadeInput *shi, ShadeResult *shr)
{
- /* because node materials don't have access to rendering context,
- * inverse gamma correction must happen here. evil. */
- if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT && shi->nodes == 1)
- shadeinput_colors_linearize(shi);
-
+
shade_lamp_loop(shi, shr); /* clears shr */
if(shi->translucency!=0.0f) {
@@ -626,7 +600,7 @@ void shade_input_set_strand_texco(ShadeInput *shi, StrandRen *strand, StrandVert
if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT) {
if(mode & (MA_VERTEXCOL|MA_VERTEXCOLP|MA_FACETEXTURE)) {
- color_manage_linearize(shi->vcol, shi->vcol);
+ srgb_to_linearrgb_v3_v3(shi->vcol, shi->vcol);
}
}
@@ -1291,7 +1265,7 @@ void shade_input_set_shade_texco(ShadeInput *shi)
*/
if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT) {
if(mode & (MA_VERTEXCOL|MA_VERTEXCOLP|MA_FACETEXTURE)) {
- color_manage_linearize(shi->vcol, shi->vcol);
+ srgb_to_linearrgb_v3_v3(shi->vcol, shi->vcol);
}
}
diff --git a/source/blender/render/intern/source/shadeoutput.c b/source/blender/render/intern/source/shadeoutput.c
index b98d0c74bea..4596938b536 100644
--- a/source/blender/render/intern/source/shadeoutput.c
+++ b/source/blender/render/intern/source/shadeoutput.c
@@ -1022,6 +1022,7 @@ void ambient_occlusion_to_diffuse(ShadeInput *shi, float *diff)
}
VECMUL(diff, f);
+ madd_v3_v3fl(diff, shi->indirect, R.wrld.ao_indirect_energy*shi->amb);
}
else
diff[0]= diff[1]= diff[2]= 0.0f;
diff --git a/source/blender/render/intern/source/sss.c b/source/blender/render/intern/source/sss.c
index 25cfc0f1253..e551cf0f3d2 100644
--- a/source/blender/render/intern/source/sss.c
+++ b/source/blender/render/intern/source/sss.c
@@ -926,20 +926,17 @@ static void sss_create_tree_mat(Render *re, Material *mat)
if(!re->test_break(re->tbh)) {
SSSData *sss= MEM_callocN(sizeof(*sss), "SSSData");
float ior= mat->sss_ior, cfac= mat->sss_colfac;
- float col[3], *radius= mat->sss_radius;
+ float *radius= mat->sss_radius;
float fw= mat->sss_front, bw= mat->sss_back;
float error = mat->sss_error;
error= get_render_aosss_error(&re->r, error);
if((re->r.scemode & R_PREVIEWBUTS) && error < 0.5f)
error= 0.5f;
-
- if (re->r.color_mgt_flag & R_COLOR_MANAGEMENT) color_manage_linearize(col, mat->sss_col);
- else VECCOPY(col, mat->sss_col);
- sss->ss[0]= scatter_settings_new(col[0], radius[0], ior, cfac, fw, bw);
- sss->ss[1]= scatter_settings_new(col[1], radius[1], ior, cfac, fw, bw);
- sss->ss[2]= scatter_settings_new(col[2], radius[2], ior, cfac, fw, bw);
+ sss->ss[0]= scatter_settings_new(mat->sss_col[0], radius[0], ior, cfac, fw, bw);
+ sss->ss[1]= scatter_settings_new(mat->sss_col[1], radius[1], ior, cfac, fw, bw);
+ sss->ss[2]= scatter_settings_new(mat->sss_col[2], radius[2], ior, cfac, fw, bw);
sss->tree= scatter_tree_new(sss->ss, mat->sss_scale, error,
co, color, area, totpoint);
diff --git a/source/blender/render/intern/source/strand.c b/source/blender/render/intern/source/strand.c
index 9a5ef531f0a..3656b2a359d 100644
--- a/source/blender/render/intern/source/strand.c
+++ b/source/blender/render/intern/source/strand.c
@@ -959,7 +959,8 @@ StrandSurface *cache_strand_surface(Render *re, ObjectRen *obr, DerivedMesh *dm,
mesh->totvert= totvert;
mesh->totface= totface;
mesh->face= MEM_callocN(sizeof(int)*4*mesh->totface, "StrandSurfFaces");
- mesh->col= MEM_callocN(sizeof(float)*3*mesh->totvert, "StrandSurfCol");
+ mesh->ao= MEM_callocN(sizeof(float)*3*mesh->totvert, "StrandSurfAO");
+ mesh->indirect= MEM_callocN(sizeof(float)*3*mesh->totvert, "StrandSurfIndirect");
BLI_addtail(&re->strandsurface, mesh);
}
@@ -997,7 +998,8 @@ void free_strand_surface(Render *re)
if(mesh->co) MEM_freeN(mesh->co);
if(mesh->prevco) MEM_freeN(mesh->prevco);
if(mesh->nextco) MEM_freeN(mesh->nextco);
- if(mesh->col) MEM_freeN(mesh->col);
+ if(mesh->ao) MEM_freeN(mesh->ao);
+ if(mesh->indirect) MEM_freeN(mesh->indirect);
if(mesh->face) MEM_freeN(mesh->face);
}
diff --git a/source/blender/render/intern/source/texture.c b/source/blender/render/intern/source/texture.c
index a9f6e7a53fd..9d03889a747 100644
--- a/source/blender/render/intern/source/texture.c
+++ b/source/blender/render/intern/source/texture.c
@@ -1495,6 +1495,14 @@ float texture_value_blend(float tex, float out, float fact, float facg, int blen
in= 1.0-(facm+fact*(1.0-tex))*(1.0-out);
break;
+ case MTEX_OVERLAY:
+ facm= 1.0-facg;
+ if(out < 0.5f)
+ in = out * (facm + 2.0f*fact*tex);
+ else
+ in = 1.0f - (facm + 2.0f*fact*(1.0 - tex)) * (1.0 - out);
+ break;
+
case MTEX_SUB:
fact= -fact;
case MTEX_ADD:
@@ -2051,8 +2059,13 @@ void do_material_tex(ShadeInput *shi)
else texres.tin= texres.ta;
/* inverse gamma correction */
- if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT) {
- color_manage_linearize(tcol, tcol);
+ if (tex->type==TEX_IMAGE) {
+ Image *ima = tex->ima;
+ ImBuf *ibuf = BKE_image_get_ibuf(ima, &tex->iuser);
+
+ /* don't linearize float buffers, assumed to be linear */
+ if (ibuf && !(ibuf->rect_float) && R.r.color_mgt_flag & R_COLOR_MANAGEMENT)
+ srgb_to_linearrgb_v3_v3(tcol, tcol);
}
if(mtex->mapto & MAP_COL) {
@@ -2404,11 +2417,6 @@ void do_volume_tex(ShadeInput *shi, float *xyz, int mapto_flag, float *col, floa
texres.tin= texres.ta;
}
- /* inverse gamma correction */
- if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT) {
- color_manage_linearize(tcol, tcol);
- }
-
/* used for emit */
if((mapto_flag & MAP_EMISSION_COL) && (mtex->mapto & MAP_EMISSION_COL)) {
float colemitfac= mtex->colemitfac*stencilTin;
@@ -2556,8 +2564,13 @@ void do_halo_tex(HaloRen *har, float xn, float yn, float *colf)
else texres.tin= texres.ta;
/* inverse gamma correction */
- if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT) {
- color_manage_linearize(&texres.tr, &texres.tr);
+ if (mtex->tex->type==TEX_IMAGE) {
+ Image *ima = mtex->tex->ima;
+ ImBuf *ibuf = BKE_image_get_ibuf(ima, &mtex->tex->iuser);
+
+ /* don't linearize float buffers, assumed to be linear */
+ if (ibuf && !(ibuf->rect_float) && R.r.color_mgt_flag & R_COLOR_MANAGEMENT)
+ srgb_to_linearrgb_v3_v3(&texres.tr, &texres.tr);
}
fact= texres.tin*mtex->colfac;
@@ -2605,6 +2618,7 @@ void do_halo_tex(HaloRen *har, float xn, float yn, float *colf)
void do_sky_tex(float *rco, float *lo, float *dxyview, float *hor, float *zen, float *blend, int skyflag, short thread)
{
MTex *mtex;
+ Tex *tex;
TexResult texres= {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, NULL};
float *co, fact, stencilTin=1.0;
float tempvec[3], texvec[3], dxt[3], dyt[3];
@@ -2618,7 +2632,8 @@ void do_sky_tex(float *rco, float *lo, float *dxyview, float *hor, float *zen, f
if(R.wrld.mtex[tex_nr]) {
mtex= R.wrld.mtex[tex_nr];
- if(mtex->tex==0) continue;
+ tex= mtex->tex;
+ if(tex==0) continue;
/* if(mtex->mapto==0) continue; */
/* which coords */
@@ -2700,7 +2715,7 @@ void do_sky_tex(float *rco, float *lo, float *dxyview, float *hor, float *zen, f
else texvec[2]= mtex->size[2]*(mtex->ofs[2]);
/* texture */
- if(mtex->tex->type==TEX_IMAGE) do_2d_mapping(mtex, texvec, NULL, NULL, dxt, dyt);
+ if(tex->type==TEX_IMAGE) do_2d_mapping(mtex, texvec, NULL, NULL, dxt, dyt);
rgb= multitex(mtex->tex, texvec, dxt, dyt, R.osa, &texres, thread, mtex->which_output);
@@ -2748,8 +2763,13 @@ void do_sky_tex(float *rco, float *lo, float *dxyview, float *hor, float *zen, f
tcol[0]= texres.tr; tcol[1]= texres.tg; tcol[2]= texres.tb;
/* inverse gamma correction */
- if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT) {
- color_manage_linearize(tcol, tcol);
+ if (tex->type==TEX_IMAGE) {
+ Image *ima = tex->ima;
+ ImBuf *ibuf = BKE_image_get_ibuf(ima, &tex->iuser);
+
+ /* don't linearize float buffers, assumed to be linear */
+ if (ibuf && !(ibuf->rect_float) && R.r.color_mgt_flag & R_COLOR_MANAGEMENT)
+ srgb_to_linearrgb_v3_v3(tcol, tcol);
}
if(mtex->mapto & WOMAP_HORIZ) {
@@ -2947,8 +2967,13 @@ void do_lamp_tex(LampRen *la, float *lavec, ShadeInput *shi, float *colf, int ef
else texres.tin= texres.ta;
/* inverse gamma correction */
- if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT) {
- color_manage_linearize(&texres.tr, &texres.tr);
+ if (tex->type==TEX_IMAGE) {
+ Image *ima = tex->ima;
+ ImBuf *ibuf = BKE_image_get_ibuf(ima, &tex->iuser);
+
+ /* don't linearize float buffers, assumed to be linear */
+ if (ibuf && !(ibuf->rect_float) && R.r.color_mgt_flag & R_COLOR_MANAGEMENT)
+ srgb_to_linearrgb_v3_v3(&texres.tr, &texres.tr);
}
/* lamp colors were premultiplied with this */
diff --git a/source/blender/render/intern/source/zbuf.c b/source/blender/render/intern/source/zbuf.c
index a3a714553d2..ac3474e51e5 100644
--- a/source/blender/render/intern/source/zbuf.c
+++ b/source/blender/render/intern/source/zbuf.c
@@ -2587,14 +2587,14 @@ void zbuffer_sss(RenderPart *pa, unsigned int lay, void *handle, void (*func)(vo
v3= vlr->v3;
v4= vlr->v4;
- c1= zbuf_part_project(cache, v1->index, winmat, bounds, v1->co, ho1);
- c2= zbuf_part_project(cache, v2->index, winmat, bounds, v2->co, ho2);
- c3= zbuf_part_project(cache, v3->index, winmat, bounds, v3->co, ho3);
+ c1= zbuf_part_project(cache, v1->index, obwinmat, bounds, v1->co, ho1);
+ c2= zbuf_part_project(cache, v2->index, obwinmat, bounds, v2->co, ho2);
+ c3= zbuf_part_project(cache, v3->index, obwinmat, bounds, v3->co, ho3);
/* partclipping doesn't need viewplane clipping */
partclip= c1 & c2 & c3;
if(v4) {
- c4= zbuf_part_project(cache, v4->index, winmat, bounds, v4->co, ho4);
+ c4= zbuf_part_project(cache, v4->index, obwinmat, bounds, v4->co, ho4);
partclip &= c4;
}
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index a99c90e01a1..d2b67142eb5 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -38,6 +38,8 @@ struct wmEventHandler;
struct wmGesture;
struct wmJob;
struct wmNotifier;
+struct wmOperatorType;
+struct wmOperator;
struct rcti;
struct PointerRNA;
struct EnumPropertyItem;
@@ -74,7 +76,7 @@ int WM_write_homefile (struct bContext *C, struct wmOperator *op);
void WM_read_file (struct bContext *C, char *name, struct ReportList *reports);
void WM_write_file (struct bContext *C, char *target, int fileflags, struct ReportList *reports);
void WM_read_autosavefile(struct bContext *C);
-void WM_autosave_init (struct bContext *C);
+void WM_autosave_init (struct wmWindowManager *wm);
/* mouse cursors */
void WM_cursor_set (struct wmWindow *win, int curs);
@@ -104,14 +106,24 @@ wmKeyMapItem *WM_keymap_add_item(struct wmKeyMap *keymap, char *idname, int type
int val, int modifier, int keymodifier);
wmKeyMapItem *WM_keymap_add_menu(struct wmKeyMap *keymap, char *idname, int type,
int val, int modifier, int keymodifier);
+
void WM_keymap_remove_item(struct wmKeyMap *keymap, struct wmKeyMapItem *kmi);
char *WM_keymap_item_to_string(wmKeyMapItem *kmi, char *str, int len);
+wmKeyMap *WM_keymap_list_find(ListBase *lb, char *idname, int spaceid, int regionid);
wmKeyMap *WM_keymap_find(struct wmKeyConfig *keyconf, char *idname, int spaceid, int regionid);
+wmKeyMap *WM_keymap_find_all(const struct bContext *C, char *idname, int spaceid, int regionid);
wmKeyMap *WM_keymap_active(struct wmWindowManager *wm, struct wmKeyMap *keymap);
+wmKeyMap *WM_keymap_guess_opname(const struct bContext *C, char *opname);
int WM_keymap_user_init(struct wmWindowManager *wm, struct wmKeyMap *keymap);
wmKeyMap *WM_keymap_copy_to_user(struct wmKeyMap *keymap);
void WM_keymap_restore_to_default(struct wmKeyMap *keymap);
+void WM_keymap_properties_reset(struct wmKeyMapItem *kmi);
+void WM_keymap_restore_item_to_default(struct bContext *C, struct wmKeyMap *keymap, struct wmKeyMapItem *kmi);
+
+wmKeyMapItem *WM_keymap_item_find_id(struct wmKeyMap *keymap, int id);
+int WM_keymap_item_compare(struct wmKeyMapItem *k1, struct wmKeyMapItem *k2);
+int WM_userdef_event_map(int kmitype);
wmKeyMap *WM_modalkeymap_add(struct wmKeyConfig *keyconf, char *idname, struct EnumPropertyItem *items);
wmKeyMap *WM_modalkeymap_get(struct wmKeyConfig *keyconf, char *idname);
@@ -119,8 +131,8 @@ wmKeyMapItem *WM_modalkeymap_add_item(struct wmKeyMap *km, int type, int val, in
void WM_modalkeymap_assign(struct wmKeyMap *km, char *opname);
const char *WM_key_event_string(short type);
+int WM_key_event_operator_id(const struct bContext *C, const char *opname, int opcontext, struct IDProperty *properties, struct wmKeyMap **keymap_r);
char *WM_key_event_operator_string(const struct bContext *C, const char *opname, int opcontext, struct IDProperty *properties, char *str, int len);
-void WM_key_event_operator_change(const struct bContext *C, const char *opname, int opcontext, struct IDProperty *properties, short key, short modifier);
/* handlers */
@@ -167,6 +179,7 @@ int WM_operator_winactive (struct bContext *C);
/* invoke callback, exec + redo popup */
int WM_operator_props_popup (struct bContext *C, struct wmOperator *op, struct wmEvent *event);
int WM_operator_redo_popup (struct bContext *C, struct wmOperator *op);
+void WM_operator_ui_popup (struct bContext *C, struct wmOperator *op, int width, int height);
int WM_operator_confirm_message(struct bContext *C, struct wmOperator *op, char *message);
@@ -174,15 +187,16 @@ int WM_operator_confirm_message(struct bContext *C, struct wmOperator *op, cha
void WM_operator_free (struct wmOperator *op);
void WM_operator_stack_clear(struct bContext *C);
-wmOperatorType *WM_operatortype_find(const char *idnamem, int quiet);
-wmOperatorType *WM_operatortype_exists(const char *idname);
-wmOperatorType *WM_operatortype_first(void);
-void WM_operatortype_append (void (*opfunc)(wmOperatorType*));
-void WM_operatortype_append_ptr (void (*opfunc)(wmOperatorType*, void *), void *userdata);
+struct wmOperatorType *WM_operatortype_find(const char *idnamem, int quiet);
+struct wmOperatorType *WM_operatortype_exists(const char *idname);
+struct wmOperatorType *WM_operatortype_first(void);
+void WM_operatortype_append (void (*opfunc)(struct wmOperatorType*));
+void WM_operatortype_append_ptr (void (*opfunc)(struct wmOperatorType*, void *), void *userdata);
+void WM_operatortype_append_macro_ptr (void (*opfunc)(struct wmOperatorType*, void *), void *userdata);
int WM_operatortype_remove(const char *idname);
-wmOperatorType *WM_operatortype_append_macro(char *idname, char *name, int flag);
-wmOperatorTypeMacro *WM_operatortype_macro_define(wmOperatorType *ot, const char *idname);
+struct wmOperatorType *WM_operatortype_append_macro(char *idname, char *name, int flag);
+struct wmOperatorTypeMacro *WM_operatortype_macro_define(struct wmOperatorType *ot, const char *idname);
int WM_operator_poll (struct bContext *C, struct wmOperatorType *ot);
@@ -193,9 +207,17 @@ int WM_operator_call_py(struct bContext *C, struct wmOperatorType *ot, int con
void WM_operator_properties_alloc(struct PointerRNA **ptr, struct IDProperty **properties, const char *opstring); /* used for keymap and macro items */
void WM_operator_properties_create(struct PointerRNA *ptr, const char *opstring);
+void WM_operator_properties_create_ptr(struct PointerRNA *ptr, struct wmOperatorType *ot);
void WM_operator_properties_free(struct PointerRNA *ptr);
void WM_operator_properties_filesel(struct wmOperatorType *ot, int filter, short type);
-void WM_operator_properties_gesture_border(wmOperatorType *ot, int extend);
+void WM_operator_properties_gesture_border(struct wmOperatorType *ot, int extend);
+void WM_operator_properties_select_all(struct wmOperatorType *ot);
+
+/* MOVE THIS SOMEWHERE ELSE */
+#define SEL_TOGGLE 0
+#define SEL_SELECT 1
+#define SEL_DESELECT 2
+#define SEL_INVERT 3
/* operator as a python command (resultuing string must be free'd) */
char *WM_operator_pystring(struct bContext *C, struct wmOperatorType *ot, struct PointerRNA *opptr, int all_args);
@@ -251,6 +273,7 @@ void wmPopMatrix (void); /* one level only */
void wmFrustum (float x1, float x2, float y1, float y2, float n, float f);
void wmOrtho (float x1, float x2, float y1, float y2, float n, float f);
void wmOrtho2 (float x1, float x2, float y1, float y2);
+void wmOrthoPixelSpace (void);
/* utilities */
void WM_set_framebuffer_index_color(int index);
diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h
index 891ed8358fb..78125954816 100644
--- a/source/blender/windowmanager/WM_types.h
+++ b/source/blender/windowmanager/WM_types.h
@@ -31,9 +31,13 @@
struct bContext;
struct wmEvent;
struct wmWindowManager;
+struct uiLayout;
+struct wmOperator;
-/* exported types for WM */
+#include "RNA_types.h"
+#include "DNA_listBase.h"
+/* exported types for WM */
#include "wm_cursors.h"
#include "wm_event_types.h"
@@ -82,6 +86,8 @@ enum {
#define KM_NOTHING 0
#define KM_PRESS 1
#define KM_RELEASE 2
+#define KM_CLICK 3
+#define KM_DBL_CLICK 4
/* ************** UI Handler ***************** */
@@ -135,6 +141,7 @@ typedef struct wmNotifier {
#define NC_SPACE (15<<24)
#define NC_GEOM (16<<24)
#define NC_NODE (17<<24)
+#define NC_ID (18<<24)
/* data type, 256 entries is enough, it can overlap */
#define NOTE_DATA 0x00FF0000
@@ -166,6 +173,7 @@ typedef struct wmNotifier {
#define ND_KEYINGSET (12<<16)
#define ND_SCENEDELETE (13<<16)
#define ND_LAYER (14<<16)
+#define ND_SEQUENCER_SELECT (15<<16)
/* NC_OBJECT Object */
#define ND_TRANSFORM (16<<16)
@@ -214,7 +222,6 @@ typedef struct wmNotifier {
/* NC_NODE Nodes */
#define ND_NODE_SELECT (1<<16)
-
/* NC_SPACE */
#define ND_SPACE_CONSOLE (1<<16) /* general redraw */
#define ND_SPACE_CONSOLE_REPORT (2<<16) /* update for reports, could specify type */
@@ -238,17 +245,17 @@ typedef struct wmNotifier {
#define NOTE_SUBTYPE 0x0000FF00
/* subtype scene mode */
-#define NS_MODE_OBJECT (1<<8)
-
-#define NS_EDITMODE_MESH (2<<8)
-#define NS_EDITMODE_CURVE (3<<8)
-#define NS_EDITMODE_SURFACE (4<<8)
-#define NS_EDITMODE_TEXT (5<<8)
-#define NS_EDITMODE_MBALL (6<<8)
-#define NS_EDITMODE_LATTICE (7<<8)
+#define NS_MODE_OBJECT (1<<8)
+
+#define NS_EDITMODE_MESH (2<<8)
+#define NS_EDITMODE_CURVE (3<<8)
+#define NS_EDITMODE_SURFACE (4<<8)
+#define NS_EDITMODE_TEXT (5<<8)
+#define NS_EDITMODE_MBALL (6<<8)
+#define NS_EDITMODE_LATTICE (7<<8)
#define NS_EDITMODE_ARMATURE (8<<8)
-#define NS_MODE_POSE (9<<8)
-#define NS_MODE_PARTICLE (10<<8)
+#define NS_MODE_POSE (9<<8)
+#define NS_MODE_PARTICLE (10<<8)
/* action classification */
@@ -257,7 +264,7 @@ typedef struct wmNotifier {
#define NA_EVALUATED 2
#define NA_ADDED 3
#define NA_REMOVED 4
-
+#define NA_RENAME 5
/* ************** Gesture Manager data ************** */
@@ -285,6 +292,44 @@ typedef struct wmGesture {
/* customdata for lasso is short array */
} wmGesture;
+/* ************** wmEvent ************************ */
+
+/* each event should have full modifier state */
+/* event comes from eventmanager and from keymap */
+typedef struct wmEvent {
+ struct wmEvent *next, *prev;
+
+ short type; /* event code itself (short, is also in keymap) */
+ short val; /* press, release, scrollvalue */
+ short x, y; /* mouse pointer position, screen coord */
+ short mval[2]; /* region mouse position, name convention pre 2.5 :) */
+ short unicode; /* future, ghost? */
+ char ascii; /* from ghost */
+ char pad;
+
+ /* previous state */
+ short prevtype;
+ short prevval;
+ short prevx, prevy;
+ double prevclicktime;
+
+ /* modifier states */
+ short shift, ctrl, alt, oskey; /* oskey is apple or windowskey, value denotes order of pressed */
+ short keymodifier; /* rawkey modifier */
+
+ short pad1;
+
+ /* keymap item, set by handler (weak?) */
+ const char *keymap_idname;
+
+ /* custom data */
+ short custom; /* custom data type, stylus, 6dof, see wm_event_types.h */
+ short customdatafree;
+ int pad2;
+ void *customdata; /* ascii, unicode, mouse coords, angles, vectors, dragdrop info */
+
+} wmEvent;
+
/* ************** custom wmEvent data ************** */
typedef struct wmTabletData {
int Active; /* 0=EVT_TABLET_NONE, 1=EVT_TABLET_STYLUS, 2=EVT_TABLET_ERASER */
@@ -312,6 +357,54 @@ typedef struct wmTimer {
} wmTimer;
+typedef struct wmOperatorType {
+ struct wmOperatorType *next, *prev;
+
+ char *name; /* text for ui, undo */
+ char *idname; /* unique identifier */
+ char *description; /* tooltips and python docs */
+
+ /* this callback executes the operator without any interactive input,
+ * parameters may be provided through operator properties. cannot use
+ * any interface code or input device state.
+ * - see defines below for return values */
+ int (*exec)(struct bContext *, struct wmOperator *);
+
+ /* for modal temporary operators, initially invoke is called. then
+ * any further events are handled in modal. if the operation is
+ * cancelled due to some external reason, cancel is called
+ * - see defines below for return values */
+ int (*invoke)(struct bContext *, struct wmOperator *, struct wmEvent *);
+ int (*cancel)(struct bContext *, struct wmOperator *);
+ int (*modal)(struct bContext *, struct wmOperator *, struct wmEvent *);
+
+ /* verify if the operator can be executed in the current context, note
+ * that the operator might still fail to execute even if this return true */
+ int (*poll)(struct bContext *);
+
+ /* optional panel for redo and repeat, autogenerated if not set */
+ void (*ui)(struct bContext *, struct wmOperator *);
+
+ /* rna for properties */
+ struct StructRNA *srna;
+
+ /* struct wmOperatorTypeMacro */
+ ListBase macro;
+
+ short flag;
+
+ /* pointer to modal keymap, do not free! */
+ struct wmKeyMap *modalkeymap;
+
+ /* only used for operators defined with python
+ * use to store pointers to python functions */
+ void *pyop_data;
+ int (*pyop_poll)(struct bContext *, struct wmOperatorType *ot);
+
+ /* RNA integration */
+ ExtensionRNA ext;
+} wmOperatorType;
+
/* **************** Paint Cursor ******************* */
typedef void (*wmPaintCursorDraw)(struct bContext *C, int, int, void *customdata);
diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c
index d455c8b2bc1..ee1d76020c2 100644
--- a/source/blender/windowmanager/intern/wm.c
+++ b/source/blender/windowmanager/intern/wm.c
@@ -213,7 +213,7 @@ void WM_check(bContext *C)
/* case: fileread */
if((wm->initialized & WM_INIT_WINDOW) == 0) {
WM_keymap_init(C);
- WM_autosave_init(C);
+ WM_autosave_init(wm);
}
/* case: no open windows at all, for old file reads */
diff --git a/source/blender/windowmanager/intern/wm_cursors.c b/source/blender/windowmanager/intern/wm_cursors.c
index 6145871f9d4..dfcc1fcd227 100644
--- a/source/blender/windowmanager/intern/wm_cursors.c
+++ b/source/blender/windowmanager/intern/wm_cursors.c
@@ -172,13 +172,16 @@ void WM_cursor_grab(wmWindow *win, int wrap, int hide, int *bounds)
if(hide) mode = GHOST_kGrabHide;
else if(wrap) mode = GHOST_kGrabWrap;
-
if ((G.f & G_DEBUG) == 0) {
if (win && win->ghostwin) {
const GHOST_TabletData *tabletdata= GHOST_GetTabletData(win->ghostwin);
-
- if ((tabletdata) && (tabletdata->Active == GHOST_kTabletModeNone))
+ // Note: There is no tabletdata on Windows if no tablet device is connected.
+ if (!tabletdata)
+ GHOST_SetCursorGrab(win->ghostwin, mode, bounds);
+ else if (tabletdata->Active == GHOST_kTabletModeNone)
GHOST_SetCursorGrab(win->ghostwin, mode, bounds);
+
+ win->grabcursor = mode;
}
}
}
@@ -186,8 +189,10 @@ void WM_cursor_grab(wmWindow *win, int wrap, int hide, int *bounds)
void WM_cursor_ungrab(wmWindow *win)
{
if ((G.f & G_DEBUG) == 0) {
- if(win && win->ghostwin)
+ if(win && win->ghostwin) {
GHOST_SetCursorGrab(win->ghostwin, GHOST_kGrabDisable, NULL);
+ win->grabcursor = GHOST_kGrabDisable;
+ }
}
}
@@ -211,7 +216,7 @@ void WM_timecursor(wmWindow *win, int nr)
unsigned char bitmap[16][2];
int i, idx;
- if(win->lastcursor != 0)
+ if(win->lastcursor == 0)
win->lastcursor= win->cursor;
memset(&bitmap, 0x00, sizeof(bitmap));
diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c
index e7c04141ad3..9ee67cd4047 100644
--- a/source/blender/windowmanager/intern/wm_draw.c
+++ b/source/blender/windowmanager/intern/wm_draw.c
@@ -34,6 +34,7 @@
#include "DNA_screen_types.h"
#include "DNA_windowmanager_types.h"
#include "DNA_userdef_types.h"
+#include "DNA_view3d_types.h"
#include "MEM_guardedalloc.h"
@@ -41,6 +42,9 @@
#include "BKE_context.h"
#include "BKE_global.h"
+#include "BKE_utildefines.h"
+
+#include "GHOST_C-api.h"
#include "ED_screen.h"
@@ -72,15 +76,27 @@ static void wm_paintcursor_draw(bContext *C, ARegion *ar)
if(screen->subwinactive == ar->swinid) {
for(pc= wm->paintcursors.first; pc; pc= pc->next) {
- if(pc->poll(C)) {
+ if(pc->poll == NULL || pc->poll(C)) {
ARegion *ar= CTX_wm_region(C);
- pc->draw(C, win->eventstate->x - ar->winrct.xmin, win->eventstate->y - ar->winrct.ymin, pc->customdata);
+ if (ELEM(win->grabcursor, GHOST_kGrabWrap, GHOST_kGrabHide)) {
+ int x = 0, y = 0;
+ wm_get_cursor_position(win, &x, &y);
+ pc->draw(C, x - ar->winrct.xmin, y - ar->winrct.ymin, pc->customdata);
+ } else {
+ pc->draw(C, win->eventstate->x - ar->winrct.xmin, win->eventstate->y - ar->winrct.ymin, pc->customdata);
+ }
}
}
}
}
}
+static void wm_area_mark_invalid_backbuf(ScrArea *sa)
+{
+ if(sa->spacetype == SPACE_VIEW3D)
+ ((View3D*)sa->spacedata.first)->flag |= V3D_INVALID_BACKBUF;
+}
+
/********************** draw all **************************/
/* - reference method, draw all each time */
@@ -104,6 +120,7 @@ static void wm_method_draw_full(bContext *C, wmWindow *win)
}
}
+ wm_area_mark_invalid_backbuf(sa);
CTX_wm_area_set(C, NULL);
}
@@ -221,6 +238,7 @@ static void wm_method_draw_overlap_all(bContext *C, wmWindow *win)
}
}
+ wm_area_mark_invalid_backbuf(sa);
CTX_wm_area_set(C, NULL);
}
@@ -544,6 +562,7 @@ static void wm_method_draw_triple(bContext *C, wmWindow *win)
}
}
+ wm_area_mark_invalid_backbuf(sa);
CTX_wm_area_set(C, NULL);
}
@@ -566,7 +585,7 @@ static void wm_method_draw_triple(bContext *C, wmWindow *win)
}
}
- if(win->screen->do_draw_gesture)
+ if(screen->do_draw_gesture)
wm_gesture_draw(win);
if(wm->paintcursors.first) {
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 56455f87d4d..825d8cbcf8c 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -46,11 +46,9 @@
#include "BKE_idprop.h"
#include "BKE_global.h"
#include "BKE_main.h"
-#include "BKE_object.h"
#include "BKE_report.h"
#include "BKE_scene.h"
#include "BKE_utildefines.h"
-#include "BKE_pointcache.h"
#include "ED_fileselect.h"
#include "ED_info.h"
@@ -62,6 +60,8 @@
#include "UI_interface.h"
+#include "PIL_time.h"
+
#include "WM_api.h"
#include "WM_types.h"
#include "wm.h"
@@ -178,21 +178,25 @@ void wm_event_do_notifiers(bContext *C)
if(note->category==NC_SCREEN) {
if(note->data==ND_SCREENBROWSE) {
ED_screen_set(C, note->reference); // XXX hrms, think this over!
- printf("screen set %p\n", note->reference);
+ if(G.f & G_DEBUG)
+ printf("screen set %p\n", note->reference);
}
else if(note->data==ND_SCREENDELETE) {
ED_screen_delete(C, note->reference); // XXX hrms, think this over!
- printf("screen delete %p\n", note->reference);
+ if(G.f & G_DEBUG)
+ printf("screen delete %p\n", note->reference);
}
}
else if(note->category==NC_SCENE) {
if(note->data==ND_SCENEBROWSE) {
ED_screen_set_scene(C, note->reference); // XXX hrms, think this over!
- printf("scene set %p\n", note->reference);
+ if(G.f & G_DEBUG)
+ printf("scene set %p\n", note->reference);
}
if(note->data==ND_SCENEDELETE) {
ED_screen_delete_scene(C, note->reference); // XXX hrms, think this over!
- printf("scene delete %p\n", note->reference);
+ if(G.f & G_DEBUG)
+ printf("scene delete %p\n", note->reference);
}
else if(note->data==ND_FRAME)
do_anim= 1;
@@ -246,9 +250,7 @@ void wm_event_do_notifiers(bContext *C)
/* cached: editor refresh callbacks now, they get context */
for(win= wm->windows.first; win; win= win->next) {
- Scene *sce, *scene= win->screen->scene;
ScrArea *sa;
- Base *base;
CTX_wm_window_set(C, win);
for(sa= win->screen->areabase.first; sa; sa= sa->next) {
@@ -258,23 +260,12 @@ void wm_event_do_notifiers(bContext *C)
}
}
- if(G.rendering==0) { // XXX make lock in future, or separated derivedmesh users in scene
-
- /* update all objects, drivers, matrices, displists, etc. Flags set by depgraph or manual,
- no layer check here, gets correct flushed */
- /* sets first, we allow per definition current scene to have dependencies on sets */
- if(scene->set) {
- for(SETLOOPER(scene->set, base))
- object_handle_update(scene, base->object);
- }
-
- for(base= scene->base.first; base; base= base->next) {
- object_handle_update(scene, base->object);
- }
-
- BKE_ptcache_quick_cache_all(scene);
- }
+ /* XXX make lock in future, or separated derivedmesh users in scene */
+ if(!G.rendering)
+ /* depsgraph & animation: update tagged datablocks */
+ scene_update_tagged(win->screen->scene);
}
+
CTX_wm_window_set(C, NULL);
}
@@ -314,7 +305,7 @@ static int wm_operator_exec(bContext *C, wmOperator *op, int repeat)
if(op->type->exec)
retval= op->type->exec(C, op);
- if(!(retval & OPERATOR_RUNNING_MODAL))
+ if(retval & (OPERATOR_FINISHED|OPERATOR_CANCELLED))
if(op->reports->list.first)
uiPupMenuReports(C, op->reports);
@@ -325,7 +316,13 @@ static int wm_operator_exec(bContext *C, wmOperator *op, int repeat)
ED_undo_push_op(C, op);
if(repeat==0) {
- if((op->type->flag & OPTYPE_REGISTER) || (G.f & G_DEBUG))
+ if(G.f & G_DEBUG) {
+ char *buf = WM_operator_pystring(C, op->type, op->ptr, 1);
+ BKE_report(CTX_wm_reports(C), RPT_OPERATOR, buf);
+ MEM_freeN(buf);
+ }
+
+ if((op->type->flag & OPTYPE_REGISTER))
wm_operator_register(C, op);
else
WM_operator_free(op);
@@ -382,10 +379,13 @@ static wmOperator *wm_operator_create(wmWindowManager *wm, wmOperatorType *ot, P
if(ot->macro.first) {
static wmOperator *motherop= NULL;
wmOperatorTypeMacro *otmacro;
+ int root = 0;
/* ensure all ops are in execution order in 1 list */
- if(motherop==NULL)
- motherop= op;
+ if(motherop==NULL) {
+ motherop = op;
+ root = 1;
+ }
for(otmacro= ot->macro.first; otmacro; otmacro= otmacro->next) {
wmOperatorType *otm= WM_operatortype_find(otmacro->idname, 0);
@@ -395,7 +395,8 @@ static wmOperator *wm_operator_create(wmWindowManager *wm, wmOperatorType *ot, P
opm->opm= motherop; /* pointer to mom, for modal() */
}
- motherop= NULL;
+ if (root)
+ motherop= NULL;
}
return op;
@@ -440,11 +441,11 @@ static int wm_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event, P
/* Note, if the report is given as an argument then assume the caller will deal with displaying them
* currently python only uses this */
- if(!(retval & OPERATOR_RUNNING_MODAL) && reports==NULL) {
+ if((retval & (OPERATOR_FINISHED|OPERATOR_CANCELLED)) && reports==NULL)
if(op->reports->list.first) /* only show the report if the report list was not given in the function */
uiPupMenuReports(C, op->reports);
- if (retval & OPERATOR_FINISHED) /* todo - this may conflict with the other wm_operator_print, if theres ever 2 prints for 1 action will may need to add modal check here */
+ if (retval & OPERATOR_FINISHED) { /* todo - this may conflict with the other wm_operator_print, if theres ever 2 prints for 1 action will may need to add modal check here */
if(G.f & G_DEBUG)
wm_operator_print(op);
}
@@ -455,7 +456,13 @@ static int wm_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event, P
if(ot->flag & OPTYPE_UNDO)
ED_undo_push_op(C, op);
- if((ot->flag & OPTYPE_REGISTER) || (G.f & G_DEBUG))
+ if(G.f & G_DEBUG) {
+ char *buf = WM_operator_pystring(C, op->type, op->ptr, 1);
+ BKE_report(CTX_wm_reports(C), RPT_OPERATOR, buf);
+ MEM_freeN(buf);
+ }
+
+ if((ot->flag & OPTYPE_REGISTER))
wm_operator_register(C, op);
else
WM_operator_free(op);
@@ -714,7 +721,7 @@ void WM_event_remove_handlers(bContext *C, ListBase *handlers)
}
/* do userdef mappings */
-static int wm_userdef_event_map(int kmitype)
+int WM_userdef_event_map(int kmitype)
{
switch(kmitype) {
case SELECTMOUSE:
@@ -759,7 +766,7 @@ static int wm_userdef_event_map(int kmitype)
static int wm_eventmatch(wmEvent *winevent, wmKeyMapItem *kmi)
{
- int kmitype= wm_userdef_event_map(kmi->type);
+ int kmitype= WM_userdef_event_map(kmi->type);
if(kmi->flag & KMI_INACTIVE) return 0;
@@ -833,7 +840,7 @@ static int wm_eventmatch(wmEvent *winevent, wmKeyMapItem *kmi)
static int wm_event_always_pass(wmEvent *event)
{
/* some events we always pass on, to ensure proper communication */
- return ELEM4(event->type, TIMER, TIMER0, TIMER1, TIMER2);
+ return ISTIMER(event->type) || (event->type == WINDEACTIVATE);
}
/* operator exists */
@@ -889,7 +896,7 @@ static int wm_handler_operator_call(bContext *C, ListBase *handlers, wmEventHand
CTX_wm_region_set(C, NULL);
}
- if(!(retval & OPERATOR_RUNNING_MODAL))
+ if(retval & (OPERATOR_FINISHED|OPERATOR_CANCELLED))
if(op->reports->list.first)
uiPupMenuReports(C, op->reports);
@@ -904,7 +911,13 @@ static int wm_handler_operator_call(bContext *C, ListBase *handlers, wmEventHand
if(ot->flag & OPTYPE_UNDO)
ED_undo_push_op(C, op);
- if((ot->flag & OPTYPE_REGISTER) || (G.f & G_DEBUG))
+ if(G.f & G_DEBUG) {
+ char *buf = WM_operator_pystring(C, op->type, op->ptr, 1);
+ BKE_report(CTX_wm_reports(C), RPT_OPERATOR, buf);
+ MEM_freeN(buf);
+ }
+
+ if((ot->flag & OPTYPE_REGISTER))
wm_operator_register(C, op);
else
WM_operator_free(op);
@@ -937,6 +950,14 @@ static int wm_handler_operator_call(bContext *C, ListBase *handlers, wmEventHand
retval= wm_operator_invoke(C, ot, event, properties, NULL);
}
+ /* Finished and pass through flag as handled */
+ if(retval == (OPERATOR_FINISHED|OPERATOR_PASS_THROUGH))
+ return WM_HANDLER_HANDLED;
+
+ /* Modal unhandled, break */
+ if(retval == (OPERATOR_PASS_THROUGH|OPERATOR_RUNNING_MODAL))
+ return (WM_HANDLER_BREAK|WM_HANDLER_MODAL);
+
if(retval & OPERATOR_PASS_THROUGH)
return WM_HANDLER_CONTINUE;
@@ -994,13 +1015,24 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa
case EVT_FILESELECT_OPEN:
case EVT_FILESELECT_FULL_OPEN:
{
+ ScrArea *sa;
+
+ /* sa can be null when window A is active, but mouse is over window B */
+ /* in this case, open file select in original window A */
+ if (handler->op_area == NULL) {
+ bScreen *screen = CTX_wm_screen(C);
+ sa = (ScrArea *)screen->areabase.first;
+ } else
+ sa = handler->op_area;
+
if(event->val==EVT_FILESELECT_OPEN)
- ED_area_newspace(C, handler->op_area, SPACE_FILE);
+ ED_area_newspace(C, sa, SPACE_FILE);
else
- ED_screen_full_newspace(C, handler->op_area, SPACE_FILE);
+ ED_screen_full_newspace(C, sa, SPACE_FILE); /* sets context */
/* settings for filebrowser, sfile is not operator owner but sends events */
- sfile= (SpaceFile*)CTX_wm_space_data(C);
+ sa = CTX_wm_area(C);
+ sfile= (SpaceFile*)sa->spacedata.first;
sfile->op= handler->op;
ED_fileselect_set_params(sfile);
@@ -1017,9 +1049,9 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa
char *path= RNA_string_get_alloc(handler->op->ptr, "path", NULL, 0);
if(screen != handler->filescreen)
- ED_screen_full_prevspace(C);
+ ED_screen_full_prevspace(C, CTX_wm_area(C));
else
- ED_area_prevspace(C);
+ ED_area_prevspace(C, CTX_wm_area(C));
/* remlink now, for load file case */
BLI_remlink(handlers, handler);
@@ -1090,6 +1122,11 @@ static int handler_boundbox_test(wmEventHandler *handler, wmEvent *event)
return 1;
}
+static int wm_action_not_handled(int action)
+{
+ return action == WM_HANDLER_CONTINUE || action == (WM_HANDLER_BREAK|WM_HANDLER_MODAL);
+}
+
static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
{
wmWindowManager *wm= CTX_wm_manager(C);
@@ -1110,7 +1147,7 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
/* modal+blocking handler */
if(handler->flag & WM_HANDLER_BLOCKING)
- action= WM_HANDLER_BREAK;
+ action |= WM_HANDLER_BREAK;
if(handler->keymap) {
wmKeyMap *keymap= WM_keymap_active(wm, handler->keymap);
@@ -1122,28 +1159,28 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
event->keymap_idname= kmi->idname; /* weak, but allows interactive callback to not use rawkey */
- action= wm_handler_operator_call(C, handlers, handler, event, kmi->ptr);
- if(action==WM_HANDLER_BREAK) /* not always_pass here, it denotes removed handler */
+ action |= wm_handler_operator_call(C, handlers, handler, event, kmi->ptr);
+ if(action & WM_HANDLER_BREAK) /* not always_pass here, it denotes removed handler */
break;
}
}
}
}
else if(handler->ui_handle) {
- action= wm_handler_ui_call(C, handler, event);
+ action |= wm_handler_ui_call(C, handler, event);
}
else if(handler->type==WM_HANDLER_FILESELECT) {
/* screen context changes here */
- action= wm_handler_fileselect_call(C, handlers, handler, event);
+ action |= wm_handler_fileselect_call(C, handlers, handler, event);
}
else {
/* modal, swallows all */
- action= wm_handler_operator_call(C, handlers, handler, event, NULL);
+ action |= wm_handler_operator_call(C, handlers, handler, event, NULL);
}
- if(action==WM_HANDLER_BREAK) {
+ if(action & WM_HANDLER_BREAK) {
if(always_pass)
- action= WM_HANDLER_CONTINUE;
+ action &= ~WM_HANDLER_BREAK;
else
break;
}
@@ -1151,8 +1188,33 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
/* fileread case */
if(CTX_wm_window(C)==NULL)
- break;
+ return action;
}
+
+ /* test for CLICK event */
+ if (wm_action_not_handled(action) && event->val == KM_RELEASE) {
+ wmWindow *win = CTX_wm_window(C);
+
+ if (win && win->eventstate->prevtype == event->type && win->eventstate->prevval == KM_PRESS) {
+ /* test for double click first */
+ if ((PIL_check_seconds_timer() - win->eventstate->prevclicktime) * 1000 < U.dbl_click_time) {
+ event->val = KM_DBL_CLICK;
+ action |= wm_handlers_do(C, event, handlers);
+ }
+
+ if (wm_action_not_handled(action)) {
+ event->val = KM_CLICK;
+ action |= wm_handlers_do(C, event, handlers);
+ }
+
+
+ /* revert value if not handled */
+ if (wm_action_not_handled(action)) {
+ event->val = KM_RELEASE;
+ }
+ }
+ }
+
return action;
}
@@ -1250,7 +1312,7 @@ void wm_event_do_handlers(bContext *C)
wm_event_free_all(win);
while( (event= win->queue.first) ) {
- int action;
+ int action = WM_HANDLER_CONTINUE;
CTX_wm_window_set(C, win);
@@ -1262,7 +1324,7 @@ void wm_event_do_handlers(bContext *C)
wm_window_make_drawable(C, win);
/* first we do priority handlers, modal + some limited keymaps */
- action= wm_handlers_do(C, event, &win->modalhandlers);
+ action |= wm_handlers_do(C, event, &win->modalhandlers);
/* fileread case */
if(CTX_wm_window(C)==NULL)
@@ -1271,7 +1333,7 @@ void wm_event_do_handlers(bContext *C)
/* builtin tweak, if action is break it removes tweak */
wm_tweakevent_test(C, event, action);
- if(action==WM_HANDLER_CONTINUE) {
+ if((action & WM_HANDLER_BREAK) == 0) {
ScrArea *sa;
ARegion *ar;
int doit= 0;
@@ -1288,15 +1350,15 @@ void wm_event_do_handlers(bContext *C)
if(wm_event_inside_i(event, &sa->totrct)) {
CTX_wm_area_set(C, sa);
- if(action==WM_HANDLER_CONTINUE) {
+ if((action & WM_HANDLER_BREAK) == 0) {
for(ar=sa->regionbase.first; ar; ar= ar->next) {
if(wm_event_inside_i(event, &ar->winrct)) {
CTX_wm_region_set(C, ar);
- action= wm_handlers_do(C, event, &ar->handlers);
+ action |= wm_handlers_do(C, event, &ar->handlers);
doit |= (BLI_in_rcti(&ar->winrct, event->x, event->y));
- if(action==WM_HANDLER_BREAK)
+ if(action & WM_HANDLER_BREAK)
break;
}
}
@@ -1304,8 +1366,8 @@ void wm_event_do_handlers(bContext *C)
CTX_wm_region_set(C, NULL);
- if(action==WM_HANDLER_CONTINUE)
- action= wm_handlers_do(C, event, &sa->handlers);
+ if((action & WM_HANDLER_BREAK) == 0)
+ action |= wm_handlers_do(C, event, &sa->handlers);
CTX_wm_area_set(C, NULL);
@@ -1313,12 +1375,12 @@ void wm_event_do_handlers(bContext *C)
}
}
- if(action==WM_HANDLER_CONTINUE) {
+ if((action & WM_HANDLER_BREAK) == 0) {
/* also some non-modal handlers need active area/region */
CTX_wm_area_set(C, area_event_inside(C, event->x, event->y));
CTX_wm_region_set(C, region_event_inside(C, event->x, event->y));
- action= wm_handlers_do(C, event, &win->handlers);
+ action |= wm_handlers_do(C, event, &win->handlers);
/* fileread case */
if(CTX_wm_window(C)==NULL)
@@ -1333,6 +1395,33 @@ void wm_event_do_handlers(bContext *C)
}
}
+ /* store last event for this window */
+ /* mousemove and timer events don't overwrite last type */
+ if (event->type != MOUSEMOVE && !ISTIMER(event->type)) {
+ if (wm_action_not_handled(action)) {
+ if (win->eventstate->prevtype == event->type) {
+ /* set click time on first click (press -> release) */
+ if (win->eventstate->prevval == KM_PRESS && event->val == KM_RELEASE) {
+ win->eventstate->prevclicktime = PIL_check_seconds_timer();
+ }
+ } else {
+ /* reset click time if event type not the same */
+ win->eventstate->prevclicktime = 0;
+ }
+
+ win->eventstate->prevval = event->val;
+ win->eventstate->prevtype = event->type;
+ } else if (event->val == KM_CLICK) { /* keep click for double click later */
+ win->eventstate->prevtype = event->type;
+ win->eventstate->prevval = event->val;
+ win->eventstate->prevclicktime = PIL_check_seconds_timer();
+ } else { /* reset if not */
+ win->eventstate->prevtype = -1;
+ win->eventstate->prevval = 0;
+ win->eventstate->prevclicktime = 0;
+ }
+ }
+
/* unlink and free here, blender-quit then frees all */
BLI_remlink(&win->queue, event);
wm_event_free(event);
@@ -1772,5 +1861,13 @@ void wm_event_add_ghostevent(wmWindow *win, int type, void *customdata)
case GHOST_kEventUnknown:
case GHOST_kNumEventTypes:
break;
+
+ case GHOST_kEventWindowDeactivate: {
+ event.type= WINDEACTIVATE;
+ wm_event_add(win, &event);
+
+ break;
+ }
+
}
}
diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c
index ba514f097e6..87e4048971b 100644
--- a/source/blender/windowmanager/intern/wm_files.c
+++ b/source/blender/windowmanager/intern/wm_files.c
@@ -81,6 +81,7 @@
#include "ED_datafiles.h"
#include "ED_object.h"
#include "ED_screen.h"
+#include "ED_sculpt.h"
#include "ED_util.h"
#include "GHOST_C-api.h"
@@ -497,6 +498,7 @@ void WM_write_file(bContext *C, char *target, int fileflags, ReportList *reports
}
ED_object_exit_editmode(C, EM_DO_UNDO);
+ ED_sculpt_force_update(C);
do_history(di, reports);
@@ -569,9 +571,8 @@ void wm_autosave_location(char *filename)
BLI_make_file_string("/", filename, U.tempdir, pidstr);
}
-void WM_autosave_init(bContext *C)
+void WM_autosave_init(wmWindowManager *wm)
{
- wmWindowManager *wm= CTX_wm_manager(C);
wm_autosave_timer_ended(wm);
if(U.flag & USER_AUTOSAVE)
diff --git a/source/blender/windowmanager/intern/wm_gesture.c b/source/blender/windowmanager/intern/wm_gesture.c
index 882da1794c6..b95d171c1b0 100644
--- a/source/blender/windowmanager/intern/wm_gesture.c
+++ b/source/blender/windowmanager/intern/wm_gesture.c
@@ -248,6 +248,7 @@ void wm_gesture_draw(wmWindow *win)
for(; gt; gt= gt->next) {
/* all in subwindow space */
wmSubWindowSet(win, gt->swinid);
+ wmOrthoPixelSpace();
if(gt->type==WM_GESTURE_RECT)
wm_gesture_draw_rect(win, gt);
diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c
index e9d88bacddb..5f4c8e1a027 100644
--- a/source/blender/windowmanager/intern/wm_init_exit.c
+++ b/source/blender/windowmanager/intern/wm_init_exit.c
@@ -53,6 +53,7 @@
#include "BKE_report.h"
#include "BKE_utildefines.h"
#include "BKE_packedFile.h"
+#include "BKE_sequencer.h" /* free seq clipboard */
#include "BLI_blenlib.h"
#include "BLI_cellalloc.h"
@@ -161,7 +162,7 @@ void WM_init_splash(bContext *C)
wmWindow *prevwin= CTX_wm_window(C);
if(wm->windows.first) {
- CTX_wm_window_set(C, wm->windows.first);
+ CTX_wm_window_set(C, wm->windows.first);
WM_operator_name_call(C, "WM_OT_splash", WM_OP_INVOKE_DEFAULT, NULL);
CTX_wm_window_set(C, prevwin);
}
@@ -235,6 +236,8 @@ void WM_exit(bContext *C)
if(C && CTX_wm_manager(C))
wm_free_reports(C); /* before free_blender! - since the ListBases get freed there */
+
+ seq_free_clipboard(); /* sequencer.c */
free_blender(); /* blender.c, does entire library and spacetypes */
// free_matcopybuf();
diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c
index b3269a23277..447a7ecb92f 100644
--- a/source/blender/windowmanager/intern/wm_keymap.c
+++ b/source/blender/windowmanager/intern/wm_keymap.c
@@ -28,7 +28,9 @@
#include <string.h>
+#include "DNA_object_types.h"
#include "DNA_screen_types.h"
+#include "DNA_space_types.h"
#include "DNA_userdef_types.h"
#include "DNA_windowmanager_types.h"
@@ -55,6 +57,17 @@
/* ********************* key config ***********************/
+void WM_keymap_properties_reset(wmKeyMapItem *kmi)
+{
+ WM_operator_properties_free(kmi->ptr);
+ MEM_freeN(kmi->ptr);
+
+ kmi->ptr = NULL;
+ kmi->properties = NULL;
+
+ WM_operator_properties_alloc(&(kmi->ptr), &(kmi->properties), kmi->idname);
+}
+
static void keymap_properties_set(wmKeyMapItem *kmi)
{
WM_operator_properties_alloc(&(kmi->ptr), &(kmi->properties), kmi->idname);
@@ -174,6 +187,11 @@ wmKeyMapItem *WM_keymap_verify_item(wmKeyMap *keymap, char *idname, int type, in
BLI_addtail(&keymap->items, kmi);
BLI_strncpy(kmi->idname, idname, OP_MAX_TYPENAME);
+ if ((keymap->flag & KEYMAP_USER) == 0) {
+ keymap->kmi_id++;
+ kmi->id = keymap->kmi_id;
+ }
+
keymap_event_set(kmi, type, val, modifier, keymodifier);
keymap_properties_set(kmi);
}
@@ -190,6 +208,12 @@ wmKeyMapItem *WM_keymap_add_item(wmKeyMap *keymap, char *idname, int type, int v
keymap_event_set(kmi, type, val, modifier, keymodifier);
keymap_properties_set(kmi);
+
+ if ((keymap->flag & KEYMAP_USER) == 0) {
+ keymap->kmi_id++;
+ kmi->id = keymap->kmi_id;
+ }
+
return kmi;
}
@@ -218,7 +242,7 @@ void WM_keymap_remove_item(wmKeyMap *keymap, wmKeyMapItem *kmi)
space/region ids are same as DNA_space_types.h */
/* gets free'd in wm.c */
-static wmKeyMap *wm_keymap_list_find(ListBase *lb, char *idname, int spaceid, int regionid)
+wmKeyMap *WM_keymap_list_find(ListBase *lb, char *idname, int spaceid, int regionid)
{
wmKeyMap *km;
@@ -232,7 +256,7 @@ static wmKeyMap *wm_keymap_list_find(ListBase *lb, char *idname, int spaceid, in
wmKeyMap *WM_keymap_find(wmKeyConfig *keyconf, char *idname, int spaceid, int regionid)
{
- wmKeyMap *km= wm_keymap_list_find(&keyconf->keymaps, idname, spaceid, regionid);
+ wmKeyMap *km= WM_keymap_list_find(&keyconf->keymaps, idname, spaceid, regionid);
if(km==NULL) {
km= MEM_callocN(sizeof(struct wmKeyMap), "keymap list");
@@ -245,6 +269,33 @@ wmKeyMap *WM_keymap_find(wmKeyConfig *keyconf, char *idname, int spaceid, int re
return km;
}
+wmKeyMap *WM_keymap_find_all(const bContext *C, char *idname, int spaceid, int regionid)
+{
+ wmWindowManager *wm = CTX_wm_manager(C);
+ wmKeyConfig *keyconf;
+ wmKeyMap *km;
+
+ /* first user defined keymaps */
+ km= WM_keymap_list_find(&U.keymaps, idname, spaceid, regionid);
+ if (km)
+ return km;
+
+ /* then user key config */
+ keyconf= wm_keyconfig_list_find(&wm->keyconfigs, U.keyconfigstr);
+ if(keyconf) {
+ km= WM_keymap_list_find(&keyconf->keymaps, idname, spaceid, regionid);
+ if (km)
+ return km;
+ }
+
+ /* then use default */
+ km= WM_keymap_list_find(&wm->defaultconf->keymaps, idname, spaceid, regionid);
+ if (km)
+ return km;
+ else
+ return NULL;
+}
+
/* ****************** modal keymaps ************ */
/* modal maps get linked to a running operator, and filter the keys before sending to modal() callback */
@@ -280,6 +331,11 @@ wmKeyMapItem *WM_modalkeymap_add_item(wmKeyMap *km, int type, int val, int modif
keymap_event_set(kmi, type, val, modifier, keymodifier);
+ if ((km->flag & KEYMAP_USER) == 0) {
+ km->kmi_id++;
+ kmi->id = km->kmi_id;
+ }
+
return kmi;
}
@@ -431,6 +487,58 @@ char *WM_key_event_operator_string(const bContext *C, const char *opname, int op
return NULL;
}
+int WM_key_event_operator_id(const bContext *C, const char *opname, int opcontext, IDProperty *properties, wmKeyMap **keymap_r)
+{
+ wmKeyMapItem *kmi= wm_keymap_item_find(C, opname, opcontext, properties, keymap_r);
+
+ if(kmi)
+ return kmi->id;
+ else
+ return 0;
+}
+
+int WM_keymap_item_compare(wmKeyMapItem *k1, wmKeyMapItem *k2)
+{
+ int k1type, k2type;
+
+ if (k1->flag & KMI_INACTIVE || k2->flag & KMI_INACTIVE)
+ return 0;
+
+ /* take event mapping into account */
+ k1type = WM_userdef_event_map(k1->type);
+ k2type = WM_userdef_event_map(k2->type);
+
+ if(k1type != KM_ANY && k2type != KM_ANY && k1type != k2type)
+ return 0;
+
+ if(k1->val != KM_ANY && k2->val != KM_ANY) {
+ /* take click, press, release conflict into account */
+ if (k1->val == KM_CLICK && ELEM3(k2->val, KM_PRESS, KM_RELEASE, KM_CLICK) == 0)
+ return 0;
+ if (k2->val == KM_CLICK && ELEM3(k1->val, KM_PRESS, KM_RELEASE, KM_CLICK) == 0)
+ return 0;
+ if (k1->val != k2->val)
+ return 0;
+ }
+
+ if(k1->shift != KM_ANY && k2->shift != KM_ANY && k1->shift != k2->shift)
+ return 0;
+
+ if(k1->ctrl != KM_ANY && k2->ctrl != KM_ANY && k1->ctrl != k2->ctrl)
+ return 0;
+
+ if(k1->alt != KM_ANY && k2->alt != KM_ANY && k1->alt != k2->alt)
+ return 0;
+
+ if(k1->oskey != KM_ANY && k2->oskey != KM_ANY && k1->oskey != k2->oskey)
+ return 0;
+
+ if(k1->keymodifier != k2->keymodifier)
+ return 0;
+
+ return 1;
+}
+
/* ***************** user preferences ******************* */
int WM_keymap_user_init(wmWindowManager *wm, wmKeyMap *keymap)
@@ -444,7 +552,7 @@ int WM_keymap_user_init(wmWindowManager *wm, wmKeyMap *keymap)
/* init from user key config */
keyconf= wm_keyconfig_list_find(&wm->keyconfigs, U.keyconfigstr);
if(keyconf) {
- km= wm_keymap_list_find(&keyconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
+ km= WM_keymap_list_find(&keyconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
if(km) {
keymap->poll= km->poll; /* lazy init */
keymap->modal_items= km->modal_items;
@@ -453,7 +561,7 @@ int WM_keymap_user_init(wmWindowManager *wm, wmKeyMap *keymap)
}
/* or from default */
- km= wm_keymap_list_find(&wm->defaultconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
+ km= WM_keymap_list_find(&wm->defaultconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
if(km) {
keymap->poll= km->poll; /* lazy init */
keymap->modal_items= km->modal_items;
@@ -472,7 +580,7 @@ wmKeyMap *WM_keymap_active(wmWindowManager *wm, wmKeyMap *keymap)
return NULL;
/* first user defined keymaps */
- km= wm_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
+ km= WM_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
if(km) {
km->poll= keymap->poll; /* lazy init */
km->modal_items= keymap->modal_items;
@@ -482,7 +590,7 @@ wmKeyMap *WM_keymap_active(wmWindowManager *wm, wmKeyMap *keymap)
/* then user key config */
keyconf= wm_keyconfig_list_find(&wm->keyconfigs, U.keyconfigstr);
if(keyconf) {
- km= wm_keymap_list_find(&keyconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
+ km= WM_keymap_list_find(&keyconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
if(km) {
km->poll= keymap->poll; /* lazy init */
km->modal_items= keymap->modal_items;
@@ -491,7 +599,7 @@ wmKeyMap *WM_keymap_active(wmWindowManager *wm, wmKeyMap *keymap)
}
/* then use default */
- km= wm_keymap_list_find(&wm->defaultconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
+ km= WM_keymap_list_find(&wm->defaultconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
return km;
}
@@ -500,7 +608,7 @@ wmKeyMap *WM_keymap_copy_to_user(wmKeyMap *keymap)
wmKeyMap *usermap;
wmKeyMapItem *kmi;
- usermap= wm_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
+ usermap= WM_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
if(!usermap) {
/* not saved yet, duplicate existing */
@@ -534,11 +642,60 @@ wmKeyMap *WM_keymap_copy_to_user(wmKeyMap *keymap)
return usermap;
}
+void WM_keymap_restore_item_to_default(bContext *C, wmKeyMap *keymap, wmKeyMapItem *kmi)
+{
+ wmWindowManager *wm = CTX_wm_manager(C);
+ wmKeyConfig *keyconf;
+ wmKeyMap *km = NULL;
+
+ /* look in user key config */
+ keyconf= wm_keyconfig_list_find(&wm->keyconfigs, U.keyconfigstr);
+ if(keyconf) {
+ km= WM_keymap_list_find(&keyconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
+ }
+
+ if (!km) {
+ /* or from default */
+ km= WM_keymap_list_find(&wm->defaultconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
+ }
+
+ if (km) {
+ wmKeyMapItem *orig;
+
+ for (orig = km->items.first; orig; orig = orig->next) {
+ if (orig->id == kmi->id)
+ break;
+ }
+
+ if (orig) {
+ if(strcmp(orig->idname, kmi->idname) != 0) {
+ BLI_strncpy(kmi->idname, orig->idname, sizeof(kmi->idname));
+
+ WM_keymap_properties_reset(kmi);
+ }
+ kmi->properties= IDP_CopyProperty(orig->properties);
+ kmi->ptr->data= kmi->properties;
+
+ kmi->propvalue = orig->propvalue;
+ kmi->type = orig->type;
+ kmi->val = orig->val;
+ kmi->shift = orig->shift;
+ kmi->ctrl = orig->ctrl;
+ kmi->alt = orig->alt;
+ kmi->oskey = orig->oskey;
+ kmi->keymodifier = orig->keymodifier;
+ kmi->maptype = orig->maptype;
+
+ }
+
+ }
+}
+
void WM_keymap_restore_to_default(wmKeyMap *keymap)
{
wmKeyMap *usermap;
- usermap= wm_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
+ usermap= WM_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
if(usermap) {
WM_keymap_free(usermap);
@@ -546,25 +703,150 @@ void WM_keymap_restore_to_default(wmKeyMap *keymap)
}
}
-/* searches context and changes keymap item, if found */
-void WM_key_event_operator_change(const bContext *C, const char *opname, int opcontext, IDProperty *properties, short key, short modifier)
+wmKeyMapItem *WM_keymap_item_find_id(wmKeyMap *keymap, int id)
{
- wmWindowManager *wm= CTX_wm_manager(C);
- wmKeyMap *keymap;
wmKeyMapItem *kmi;
- kmi= wm_keymap_item_find(C, opname, opcontext, properties, &keymap);
+ for (kmi=keymap->items.first; kmi; kmi=kmi->next) {
+ if (kmi->id == id)
+ return kmi;
+ }
+
+ return NULL;
+}
- if(kmi) {
- /* if the existing one is in a default keymap, copy it
- to user preferences, and lookup again so we get a
- key map item from the user preferences we can modify */
- if(BLI_findindex(&wm->defaultconf->keymaps, keymap) >= 0) {
- WM_keymap_copy_to_user(keymap);
- kmi= wm_keymap_item_find(C, opname, opcontext, properties, NULL);
+/* Guess an appropriate keymap from the operator name */
+/* Needs to be kept up to date with Keymap and Operator naming */
+wmKeyMap *WM_keymap_guess_opname(const bContext *C, char *opname)
+{
+ wmKeyMap *km=NULL;
+ SpaceLink *sl = CTX_wm_space_data(C);
+
+ /* Window */
+ if (strstr(opname, "WM_OT")) {
+ km = WM_keymap_find_all(C, "Window", 0, 0);
+ }
+ /* Screen */
+ else if (strstr(opname, "SCREEN_OT")) {
+ km = WM_keymap_find_all(C, "Screen", 0, 0);
+ }
+ /* Grease Pencil */
+ else if (strstr(opname, "GPENCIL_OT")) {
+ km = WM_keymap_find_all(C, "Grease Pencil", 0, 0);
+ }
+ /* Markers */
+ else if (strstr(opname, "MARKER_OT")) {
+ km = WM_keymap_find_all(C, "Markers", 0, 0);
+ }
+
+
+ /* 3D View */
+ else if (strstr(opname, "VIEW3D_OT")) {
+ km = WM_keymap_find_all(C, "3D View", sl->spacetype, 0);
+ }
+ else if (strstr(opname, "OBJECT_OT")) {
+ km = WM_keymap_find_all(C, "Object Mode", 0, 0);
+ }
+
+ /* Editing Modes */
+ else if (strstr(opname, "MESH_OT")) {
+ km = WM_keymap_find_all(C, "Mesh", 0, 0);
+ }
+ else if (strstr(opname, "CURVE_OT")) {
+ km = WM_keymap_find_all(C, "Curve", 0, 0);
+ }
+ else if (strstr(opname, "ARMATURE_OT")) {
+ km = WM_keymap_find_all(C, "Armature", 0, 0);
+ }
+ else if (strstr(opname, "POSE_OT")) {
+ km = WM_keymap_find_all(C, "Pose", 0, 0);
+ }
+ else if (strstr(opname, "SCULPT_OT")) {
+ km = WM_keymap_find_all(C, "Sculpt", 0, 0);
+ }
+ else if (strstr(opname, "MBALL_OT")) {
+ km = WM_keymap_find_all(C, "Metaball", 0, 0);
+ }
+ else if (strstr(opname, "LATTICE_OT")) {
+ km = WM_keymap_find_all(C, "Lattice", 0, 0);
+ }
+ else if (strstr(opname, "PARTICLE_OT")) {
+ km = WM_keymap_find_all(C, "Particle", 0, 0);
+ }
+ else if (strstr(opname, "FONT_OT")) {
+ km = WM_keymap_find_all(C, "Font", 0, 0);
+ }
+ else if (strstr(opname, "PAINT_OT")) {
+
+ /* check for relevant mode */
+ switch(CTX_data_mode_enum(C)) {
+ case OB_MODE_WEIGHT_PAINT:
+ km = WM_keymap_find_all(C, "Weight Paint", 0, 0);
+ break;
+ case OB_MODE_VERTEX_PAINT:
+ km = WM_keymap_find_all(C, "Vertex Paint", 0, 0);
+ break;
+ case OB_MODE_TEXTURE_PAINT:
+ km = WM_keymap_find_all(C, "Image Paint", 0, 0);
+ break;
}
-
- keymap_event_set(kmi, key, KM_PRESS, modifier, 0);
}
+ /* Paint Face Mask */
+ else if (strstr(opname, "PAINT_OT_face_select")) {
+ km = WM_keymap_find_all(C, "Face Mask", sl->spacetype, 0);
+ }
+ /* Timeline */
+ else if (strstr(opname, "TIME_OT")) {
+ km = WM_keymap_find_all(C, "Timeline", sl->spacetype, 0);
+ }
+ /* Image Editor */
+ else if (strstr(opname, "IMAGE_OT")) {
+ km = WM_keymap_find_all(C, "Image", sl->spacetype, 0);
+ }
+ /* UV Editor */
+ else if (strstr(opname, "UV_OT")) {
+ km = WM_keymap_find_all(C, "UV Editor", sl->spacetype, 0);
+ }
+ /* Node Editor */
+ else if (strstr(opname, "NODE_OT")) {
+ km = WM_keymap_find_all(C, "Node Editor", sl->spacetype, 0);
+ }
+ /* Animation Editor Channels */
+ else if (strstr(opname, "ANIM_OT_channels")) {
+ km = WM_keymap_find_all(C, "Animation Channels", sl->spacetype, 0);
+ }
+ /* Animation Generic - after channels */
+ else if (strstr(opname, "ANIM_OT")) {
+ km = WM_keymap_find_all(C, "Animation", 0, 0);
+ }
+ /* Graph Editor */
+ else if (strstr(opname, "GRAPH_OT")) {
+ km = WM_keymap_find_all(C, "Graph Editor", sl->spacetype, 0);
+ }
+ /* Dopesheet Editor */
+ else if (strstr(opname, "ACTION_OT")) {
+ km = WM_keymap_find_all(C, "Dopesheet", sl->spacetype, 0);
+ }
+ /* NLA Editor */
+ else if (strstr(opname, "NLA_OT")) {
+ km = WM_keymap_find_all(C, "NLA Editor", sl->spacetype, 0);
+ }
+ /* Script */
+ else if (strstr(opname, "SCRIPT_OT")) {
+ km = WM_keymap_find_all(C, "Script", sl->spacetype, 0);
+ }
+ /* Text */
+ else if (strstr(opname, "TEXT_OT")) {
+ km = WM_keymap_find_all(C, "Text", sl->spacetype, 0);
+ }
+ /* Sequencer */
+ else if (strstr(opname, "SEQUENCER_OT")) {
+ km = WM_keymap_find_all(C, "Sequencer", sl->spacetype, 0);
+ }
+ /* Console */
+ else if (strstr(opname, "CONSOLE_OT")) {
+ km = WM_keymap_find_all(C, "Console", sl->spacetype, 0);
+ }
+
+ return km;
}
-
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index 1628ba68ab6..d25619259fd 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -353,6 +353,27 @@ wmOperatorType *WM_operatortype_append_macro(char *idname, char *name, int flag)
return ot;
}
+void WM_operatortype_append_macro_ptr(void (*opfunc)(wmOperatorType*, void*), void *userdata)
+{
+ wmOperatorType *ot;
+
+ ot= MEM_callocN(sizeof(wmOperatorType), "operatortype");
+ ot->srna= RNA_def_struct(&BLENDER_RNA, "", "OperatorProperties");
+
+ ot->exec= wm_macro_exec;
+ ot->invoke= wm_macro_invoke;
+ ot->modal= wm_macro_modal;
+ ot->cancel= wm_macro_cancel;
+ ot->poll= NULL;
+
+ opfunc(ot, userdata);
+
+ RNA_def_struct_ui_text(ot->srna, ot->name, ot->description ? ot->description:"(undocumented operator)");
+ RNA_def_struct_identifier(ot->srna, ot->idname);
+
+ BLI_addtail(&global_ops, ot);
+}
+
wmOperatorTypeMacro *WM_operatortype_macro_define(wmOperatorType *ot, const char *idname)
{
wmOperatorTypeMacro *otmacro= MEM_callocN(sizeof(wmOperatorTypeMacro), "wmOperatorTypeMacro");
@@ -465,8 +486,11 @@ char *WM_operator_pystring(bContext *C, wmOperatorType *ot, PointerRNA *opptr, i
PointerRNA opptr_default;
PropertyRNA *prop_default;
char *buf_default;
- if(!all_args) {
- WM_operator_properties_create(&opptr_default, ot->idname);
+ if(all_args==0 || opptr==NULL) {
+ WM_operator_properties_create_ptr(&opptr_default, ot);
+
+ if(opptr==NULL)
+ opptr = &opptr_default;
}
@@ -510,7 +534,7 @@ char *WM_operator_pystring(bContext *C, wmOperatorType *ot, PointerRNA *opptr, i
}
RNA_PROP_END;
- if(all_args==0)
+ if(all_args==0 || opptr==&opptr_default )
WM_operator_properties_free(&opptr_default);
BLI_dynstr_append(dynstr, ")");
@@ -520,12 +544,17 @@ char *WM_operator_pystring(bContext *C, wmOperatorType *ot, PointerRNA *opptr, i
return cstring;
}
+void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot)
+{
+ RNA_pointer_create(NULL, ot->srna, NULL, ptr);
+}
+
void WM_operator_properties_create(PointerRNA *ptr, const char *opstring)
{
wmOperatorType *ot= WM_operatortype_find(opstring, 0);
if(ot)
- RNA_pointer_create(NULL, ot->srna, NULL, ptr);
+ WM_operator_properties_create_ptr(ptr, ot);
else
RNA_pointer_create(NULL, &RNA_OperatorProperties, NULL, ptr);
}
@@ -586,10 +615,13 @@ int WM_menu_invoke(bContext *C, wmOperator *op, wmEvent *event)
else if (RNA_property_type(prop) != PROP_ENUM) {
printf("WM_menu_invoke: %s \"type\" is not an enum property\n", op->type->idname);
}
+ else if (RNA_property_is_set(op->ptr, RNA_property_identifier(prop))) {
+ return op->type->exec(C, op);
+ }
else {
pup= uiPupMenuBegin(C, op->type->name, 0);
layout= uiPupMenuLayout(pup);
- uiItemsEnumO(layout, op->type->idname, (char*)RNA_property_identifier(prop));
+ uiItemsFullEnumO(layout, op->type->idname, (char*)RNA_property_identifier(prop), op->ptr->data, WM_OP_EXEC_REGION_WIN, 0);
uiPupMenuEnd(C, pup);
}
@@ -601,10 +633,16 @@ int WM_operator_confirm_message(bContext *C, wmOperator *op, char *message)
{
uiPopupMenu *pup;
uiLayout *layout;
+ IDProperty *properties= op->ptr->data;
+
+ if(properties && properties->len)
+ properties= IDP_CopyProperty(op->ptr->data);
+ else
+ properties= NULL;
pup= uiPupMenuBegin(C, "OK?", ICON_QUESTION);
layout= uiPupMenuLayout(pup);
- uiItemO(layout, message, 0, op->type->idname);
+ uiItemFullO(layout, message, 0, op->type->idname, properties, WM_OP_EXEC_REGION_WIN, 0);
uiPupMenuEnd(C, pup);
return OPERATOR_CANCELLED;
@@ -651,6 +689,8 @@ void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type)
RNA_def_property_flag(prop, PROP_HIDDEN);
prop= RNA_def_boolean(ot->srna, "filter_text", (filter & TEXTFILE), "Filter text files", "");
RNA_def_property_flag(prop, PROP_HIDDEN);
+ prop= RNA_def_boolean(ot->srna, "filter_btx", (filter & BTXFILE), "Filter btx files", "");
+ RNA_def_property_flag(prop, PROP_HIDDEN);
prop= RNA_def_boolean(ot->srna, "filter_folder", (filter & FOLDERFILE), "Filter folders", "");
RNA_def_property_flag(prop, PROP_HIDDEN);
@@ -660,6 +700,18 @@ void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type)
RNA_def_property_flag(prop, PROP_HIDDEN);
}
+void WM_operator_properties_select_all(wmOperatorType *ot) {
+ static EnumPropertyItem select_all_actions[] = {
+ {SEL_TOGGLE, "TOGGLE", 0, "Toggle", "Toggle selection for all elements"},
+ {SEL_SELECT, "SELECT", 0, "Select", "Select all elements"},
+ {SEL_DESELECT, "DESELECT", 0, "Deselect", "Deselect all elements"},
+ {SEL_INVERT, "INVERT", 0, "Invert", "Invert selection of all elements"},
+ {0, NULL, 0, NULL, NULL}
+ };
+
+ RNA_def_enum(ot->srna, "action", select_all_actions, SEL_TOGGLE, "Action", "Selection action to execute");
+}
+
void WM_operator_properties_gesture_border(wmOperatorType *ot, int extend)
{
RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Gesture Mode", "", INT_MIN, INT_MAX);
@@ -669,7 +721,7 @@ void WM_operator_properties_gesture_border(wmOperatorType *ot, int extend)
RNA_def_int(ot->srna, "ymax", 0, INT_MIN, INT_MAX, "Y Max", "", INT_MIN, INT_MAX);
if(extend)
- RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend selection instead of deselecting everything first.");
+ RNA_def_boolean(ot->srna, "extend", 1, "Extend", "Extend selection instead of deselecting everything first.");
}
@@ -722,8 +774,11 @@ static uiBlock *wm_block_create_redo(bContext *C, ARegion *ar, void *arg_op)
layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, width, 20, style);
uiItemL(layout, op->type->name, 0);
- if(op->type->ui)
- op->type->ui((bContext*)C, &ptr, layout);
+ if(op->type->ui) {
+ op->layout= layout;
+ op->type->ui((bContext*)C, op);
+ op->layout= NULL;
+ }
else
uiDefAutoButsRNA(C, layout, &ptr, columns);
@@ -733,6 +788,41 @@ static uiBlock *wm_block_create_redo(bContext *C, ARegion *ar, void *arg_op)
return block;
}
+
+static uiBlock *wm_operator_create_ui(bContext *C, ARegion *ar, void *userData)
+{
+ struct { wmOperator *op; int width; int height; } * data = userData;
+ wmWindowManager *wm= CTX_wm_manager(C);
+ wmOperator *op= data->op;
+ PointerRNA ptr;
+ uiBlock *block;
+ uiLayout *layout;
+ uiStyle *style= U.uistyles.first;
+
+ block= uiBeginBlock(C, ar, "opui_popup", UI_EMBOSS);
+ uiBlockClearFlag(block, UI_BLOCK_LOOP);
+ uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN|UI_BLOCK_RET_1|UI_BLOCK_MOVEMOUSE_QUIT);
+
+ if(!op->properties) {
+ IDPropertyTemplate val = {0};
+ op->properties= IDP_New(IDP_GROUP, val, "wmOperatorProperties");
+ }
+
+ RNA_pointer_create(&wm->id, op->type->srna, op->properties, &ptr);
+ layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, data->width, data->height, style);
+
+ if(op->type->ui) {
+ op->layout= layout;
+ op->type->ui((bContext*)C, op);
+ op->layout= NULL;
+ }
+
+ uiPopupBoundsBlock(block, 4.0f, 0, 0);
+ uiEndBlock(C, block);
+
+ return block;
+}
+
int WM_operator_props_popup(bContext *C, wmOperator *op, wmEvent *event)
{
int retval= OPERATOR_CANCELLED;
@@ -746,6 +836,15 @@ int WM_operator_props_popup(bContext *C, wmOperator *op, wmEvent *event)
return retval;
}
+void WM_operator_ui_popup(bContext *C, wmOperator *op, int width, int height)
+{
+ struct { wmOperator *op; int width; int height; } data;
+ data.op = op;
+ data.width = width;
+ data.height = height;
+ uiPupBlock(C, wm_operator_create_ui, &data);
+}
+
int WM_operator_redo_popup(bContext *C, wmOperator *op)
{
uiPupBlock(C, wm_block_create_redo, op);
@@ -769,8 +868,11 @@ static uiBlock *wm_block_create_menu(bContext *C, ARegion *ar, void *arg_op)
layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, 300, 20, style);
uiItemL(layout, op->type->name, 0);
- if(op->type->ui)
- op->type->ui(C, op->ptr, layout);
+ if(op->type->ui) {
+ op->layout= layout;
+ op->type->ui(C, op);
+ op->layout= NULL;
+ }
else
uiDefAutoButsRNA(C, layout, op->ptr, 2);
@@ -840,13 +942,14 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *arg_unuse
uiLayoutSetOperatorContext(layout, WM_OP_EXEC_REGION_WIN);
- split = uiLayoutSplit(layout, 0);
+ split = uiLayoutSplit(layout, 0, 0);
col = uiLayoutColumn(split, 0);
uiItemL(col, "Links", 0);
uiItemO(col, NULL, ICON_URL, "HELP_OT_release_logs");
uiItemO(col, NULL, ICON_URL, "HELP_OT_manual");
uiItemO(col, NULL, ICON_URL, "HELP_OT_blender_website");
uiItemO(col, NULL, ICON_URL, "HELP_OT_user_community");
+ uiItemO(col, NULL, ICON_URL, "HELP_OT_python_api");
uiItemS(col);
col = uiLayoutColumn(split, 0);
@@ -1125,7 +1228,9 @@ static EnumPropertyItem *open_recentfile_splash_itemf(bContext *C, PointerRNA *p
tmp.value= i+1;
tmp.icon= ICON_FILE_BLEND;
tmp.identifier= recent->filename;
- tmp.name= BLI_last_slash(recent->filename)+1;
+ tmp.name= BLI_last_slash(recent->filename);
+ if(tmp.name) tmp.name += 1;
+ else tmp.name = recent->filename;
RNA_enum_item_add(&item, &totitem, &tmp);
}
@@ -1532,6 +1637,10 @@ static int wm_save_mainfile_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
char name[FILE_MAX];
+ /* cancel if no active window */
+ if (CTX_wm_window(C) == NULL)
+ return OPERATOR_CANCELLED;
+
save_set_compress(op);
BLI_strncpy(name, G.sce, FILE_MAX);
@@ -1554,7 +1663,7 @@ static void WM_OT_save_mainfile(wmOperatorType *ot)
ot->invoke= wm_save_mainfile_invoke;
ot->exec= wm_save_as_mainfile_exec;
- ot->poll= WM_operator_winactive;
+ ot->poll= NULL;
WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER);
RNA_def_boolean(ot->srna, "compress", 0, "Compress", "Write compressed .blend file.");
@@ -1932,7 +2041,7 @@ int WM_gesture_circle_modal(bContext *C, wmOperator *op, wmEvent *event)
case GESTURE_MODAL_CANCEL:
case GESTURE_MODAL_CONFIRM:
wm_gesture_end(C, op);
- return OPERATOR_CANCELLED;
+ return OPERATOR_FINISHED; /* use finish or we dont get an undo */
}
}
// // Allow view navigation???
@@ -2034,7 +2143,7 @@ void wm_tweakevent_test(bContext *C, wmEvent *event, int action)
}
}
else {
- if(action==WM_HANDLER_BREAK) {
+ if(action & WM_HANDLER_BREAK) {
WM_gesture_end(C, win->tweak);
win->tweak= NULL;
}
@@ -2289,7 +2398,7 @@ int WM_radial_control_modal(bContext *C, wmOperator *op, wmEvent *event)
if(event->ctrl) {
if(mode == WM_RADIALCONTROL_STRENGTH)
- new_value = ((int)(new_value * 100) / 10*10) / 100.0f;
+ new_value = ((int)ceil(new_value * 10.f) * 10.0f) / 100.f;
else
new_value = ((int)new_value + 5) / 10*10;
}
@@ -2456,8 +2565,10 @@ static int redraw_timer_exec(bContext *C, wmOperator *op)
CTX_wm_area_set(C, sa);
for(ar_iter= sa->regionbase.first; ar_iter; ar_iter= ar_iter->next) {
- CTX_wm_region_set(C, ar_iter);
- ED_region_do_draw(C, ar_iter);
+ if(ar_iter->swinid) {
+ CTX_wm_region_set(C, ar_iter);
+ ED_region_do_draw(C, ar_iter);
+ }
}
}
@@ -2553,9 +2664,13 @@ void wm_operatortype_free(void)
{
wmOperatorType *ot;
- for(ot= global_ops.first; ot; ot= ot->next)
+ for(ot= global_ops.first; ot; ot= ot->next) {
if(ot->macro.first)
wm_operatortype_free_macro(ot);
+
+ if(ot->ext.srna) /* python operator, allocs own string */
+ MEM_freeN(ot->idname);
+ }
BLI_freelistN(&global_ops);
}
@@ -2654,12 +2769,12 @@ static void gesture_border_modal_keymap(wmKeyConfig *keyconf)
{GESTURE_MODAL_BORDER_BEGIN, "BEGIN", 0, "Begin", ""},
{0, NULL, 0, NULL, NULL}};
- wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "View3D Gesture Border");
+ wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Gesture Border");
/* this function is called for each spacetype, only needs to add map once */
if(keymap) return;
- keymap= WM_modalkeymap_add(keyconf, "View3D Gesture Border", modal_items);
+ keymap= WM_modalkeymap_add(keyconf, "Gesture Border", modal_items);
/* items for modal map */
WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, GESTURE_MODAL_CANCEL);
@@ -2677,7 +2792,7 @@ static void gesture_border_modal_keymap(wmKeyConfig *keyconf)
#endif
/* assign map to operators */
- WM_modalkeymap_assign(keymap, "ACT_OT_select_border");
+ WM_modalkeymap_assign(keymap, "ACTION_OT_select_border");
WM_modalkeymap_assign(keymap, "ANIM_OT_channels_select_border");
WM_modalkeymap_assign(keymap, "ANIM_OT_previewrange_set");
WM_modalkeymap_assign(keymap, "CONSOLE_OT_select_border");
@@ -2689,17 +2804,18 @@ static void gesture_border_modal_keymap(wmKeyConfig *keyconf)
// WM_modalkeymap_assign(keymap, "SCREEN_OT_border_select"); // template
WM_modalkeymap_assign(keymap, "SEQUENCER_OT_select_border");
WM_modalkeymap_assign(keymap, "UV_OT_select_border");
+ WM_modalkeymap_assign(keymap, "VIEW2D_OT_zoom_border");
WM_modalkeymap_assign(keymap, "VIEW3D_OT_clip_border");
WM_modalkeymap_assign(keymap, "VIEW3D_OT_render_border");
WM_modalkeymap_assign(keymap, "VIEW3D_OT_select_border");
- WM_modalkeymap_assign(keymap, "VIEW3D_OT_zoom_border");
+ WM_modalkeymap_assign(keymap, "VIEW3D_OT_zoom_border"); // XXX TODO: zoom border should perhaps map rightmouse to zoom out instead of in+cancel
}
/* default keymap for windows and screens, only call once per WM */
void wm_window_keymap(wmKeyConfig *keyconf)
{
wmKeyMap *keymap= WM_keymap_find(keyconf, "Window", 0, 0);
- wmKeyMapItem *km;
+ wmKeyMapItem *kmi;
/* note, this doesn't replace existing keymap items */
WM_keymap_verify_item(keymap, "WM_OT_window_duplicate", WKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
@@ -2717,8 +2833,8 @@ void wm_window_keymap(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "WM_OT_open_mainfile", OKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "WM_OT_open_mainfile", F1KEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "WM_OT_link_append", OKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
- km= WM_keymap_add_item(keymap, "WM_OT_link_append", F1KEY, KM_PRESS, KM_SHIFT, 0);
- RNA_boolean_set(km->ptr, "link", FALSE);
+ kmi= WM_keymap_add_item(keymap, "WM_OT_link_append", F1KEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_boolean_set(kmi->ptr, "link", FALSE);
WM_keymap_add_item(keymap, "WM_OT_save_mainfile", SKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "WM_OT_save_mainfile", WKEY, KM_PRESS, KM_CTRL, 0);
@@ -2731,59 +2847,54 @@ void wm_window_keymap(wmKeyConfig *keyconf)
/* debug/testing */
WM_keymap_verify_item(keymap, "WM_OT_redraw_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_splash", F1KEY, KM_PRESS, KM_ALT|KM_CTRL, 0);
WM_keymap_verify_item(keymap, "WM_OT_search_menu", SPACEKEY, KM_PRESS, 0, 0);
/* Space switching */
- km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F2KEY, KM_PRESS, KM_SHIFT, 0); /* new in 2.5x, was DXF export */
- RNA_string_set(km->ptr, "path", "area.type");
- RNA_string_set(km->ptr, "value", "LOGIC_EDITOR");
-
- km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F3KEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(km->ptr, "path", "area.type");
- RNA_string_set(km->ptr, "value", "NODE_EDITOR");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F2KEY, KM_PRESS, KM_SHIFT, 0); /* new in 2.5x, was DXF export */
+ RNA_string_set(kmi->ptr, "path", "area.type");
+ RNA_string_set(kmi->ptr, "value", "LOGIC_EDITOR");
- km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F4KEY, KM_PRESS, KM_SHIFT, 0); /* new in 2.5x, was data browser */
- RNA_string_set(km->ptr, "path", "area.type");
- RNA_string_set(km->ptr, "value", "CONSOLE");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F3KEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_string_set(kmi->ptr, "path", "area.type");
+ RNA_string_set(kmi->ptr, "value", "NODE_EDITOR");
- km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F5KEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(km->ptr, "path", "area.type");
- RNA_string_set(km->ptr, "value", "VIEW_3D");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F4KEY, KM_PRESS, KM_SHIFT, 0); /* new in 2.5x, was data browser */
+ RNA_string_set(kmi->ptr, "path", "area.type");
+ RNA_string_set(kmi->ptr, "value", "CONSOLE");
- km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F6KEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(km->ptr, "path", "area.type");
- RNA_string_set(km->ptr, "value", "GRAPH_EDITOR");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F5KEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_string_set(kmi->ptr, "path", "area.type");
+ RNA_string_set(kmi->ptr, "value", "VIEW_3D");
- km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F7KEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(km->ptr, "path", "area.type");
- RNA_string_set(km->ptr, "value", "PROPERTIES");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F6KEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_string_set(kmi->ptr, "path", "area.type");
+ RNA_string_set(kmi->ptr, "value", "GRAPH_EDITOR");
- km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F8KEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(km->ptr, "path", "area.type");
- RNA_string_set(km->ptr, "value", "SEQUENCE_EDITOR");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F7KEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_string_set(kmi->ptr, "path", "area.type");
+ RNA_string_set(kmi->ptr, "value", "PROPERTIES");
- km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F9KEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(km->ptr, "path", "area.type");
- RNA_string_set(km->ptr, "value", "OUTLINER");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F8KEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_string_set(kmi->ptr, "path", "area.type");
+ RNA_string_set(kmi->ptr, "value", "SEQUENCE_EDITOR");
- km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F9KEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(km->ptr, "path", "area.type");
- RNA_string_set(km->ptr, "value", "OUTLINER");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F9KEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_string_set(kmi->ptr, "path", "area.type");
+ RNA_string_set(kmi->ptr, "value", "OUTLINER");
- km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F10KEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(km->ptr, "path", "area.type");
- RNA_string_set(km->ptr, "value", "IMAGE_EDITOR");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F10KEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_string_set(kmi->ptr, "path", "area.type");
+ RNA_string_set(kmi->ptr, "value", "IMAGE_EDITOR");
- km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F11KEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(km->ptr, "path", "area.type");
- RNA_string_set(km->ptr, "value", "TEXT_EDITOR");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F11KEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_string_set(kmi->ptr, "path", "area.type");
+ RNA_string_set(kmi->ptr, "value", "TEXT_EDITOR");
- km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F12KEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(km->ptr, "path", "area.type");
- RNA_string_set(km->ptr, "value", "DOPESHEET_EDITOR");
+ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F12KEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_string_set(kmi->ptr, "path", "area.type");
+ RNA_string_set(kmi->ptr, "value", "DOPESHEET_EDITOR");
gesture_circle_modal_keymap(keyconf);
gesture_border_modal_keymap(keyconf);
diff --git a/source/blender/windowmanager/intern/wm_subwindow.c b/source/blender/windowmanager/intern/wm_subwindow.c
index 00af9eb0bb9..decf1f0d676 100644
--- a/source/blender/windowmanager/intern/wm_subwindow.c
+++ b/source/blender/windowmanager/intern/wm_subwindow.c
@@ -405,6 +405,16 @@ void wmOrtho2(float x1, float x2, float y1, float y2)
wmOrtho(x1, x2, y1, y2, -100, 100);
}
+void wmOrthoPixelSpace(void)
+{
+ if(_curswin) {
+ int width, height;
+
+ wm_subwindow_getsize(_curwindow, _curswin->swinid, &width, &height);
+ wmOrtho2(-0.375, (float)width-0.375, -0.375, (float)height-0.375);
+ wmLoadIdentity();
+ }
+}
/* *************************** Framebuffer color depth, for selection codes ********************** */
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index 78d70c96ad6..54f6d58ced4 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -233,7 +233,7 @@ void wm_window_close(bContext *C, wmWindowManager *wm, wmWindow *win)
CTX_wm_window_set(C, win); /* needed by handlers */
WM_event_remove_handlers(C, &win->handlers);
WM_event_remove_handlers(C, &win->modalhandlers);
- ED_screen_exit(C, win, win->screen);
+ ED_screen_exit(C, win, win->screen); /* will free the current screen if it is a temp layout */
wm_window_free(C, wm, win);
/* check remaining windows */
@@ -574,6 +574,7 @@ static int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr private)
switch(type) {
case GHOST_kEventWindowDeactivate:
+ wm_event_add_ghostevent(win, type, data);
win->active= 0; /* XXX */
break;
case GHOST_kEventWindowActivate:
@@ -936,6 +937,17 @@ void wm_window_get_size(wmWindow *win, int *width_r, int *height_r)
*height_r= win->sizey;
}
+/* exceptional case: - splash is called before events are processed
+ * this means we dont actually know the window size so get this from GHOST */
+void wm_window_get_size_ghost(wmWindow *win, int *width_r, int *height_r)
+{
+ GHOST_RectangleHandle bounds= GHOST_GetClientBounds(win->ghostwin);
+ *width_r= GHOST_GetWidthRectangle(bounds);
+ *height_r= GHOST_GetHeightRectangle(bounds);
+
+ GHOST_DisposeRectangle(bounds);
+}
+
void wm_window_set_size(wmWindow *win, int width, int height)
{
GHOST_SetClientSize(win->ghostwin, width, height);
@@ -963,6 +975,18 @@ void wm_window_swap_buffers(wmWindow *win)
#endif
}
+void wm_get_cursor_position(wmWindow *win, int *x, int *y)
+{
+ GHOST_GetCursorPosition(g_system, x, y);
+ GHOST_ScreenToClient(win->ghostwin, *x, *y, x, y);
+#if defined(__APPLE__) && defined(GHOST_COCOA)
+ //Cocoa has silly exception that should be fixed at the ghost level
+ //(ghost is an allegory for an invisible system specific code)
+#else
+ *y = (win->sizey-1) - *y;
+#endif
+}
+
/* ******************* exported api ***************** */
diff --git a/source/blender/windowmanager/wm_event_system.h b/source/blender/windowmanager/wm_event_system.h
index b7c881629a2..3d7cb3fbad1 100644
--- a/source/blender/windowmanager/wm_event_system.h
+++ b/source/blender/windowmanager/wm_event_system.h
@@ -31,6 +31,8 @@
/* return value of handler-operator call */
#define WM_HANDLER_CONTINUE 0
#define WM_HANDLER_BREAK 1
+#define WM_HANDLER_HANDLED 2
+#define WM_HANDLER_MODAL 4 /* MODAL|BREAK means unhandled */
struct ScrArea;
struct ARegion;
diff --git a/source/blender/windowmanager/wm_event_types.h b/source/blender/windowmanager/wm_event_types.h
index 8412e7f0b16..8179154fc98 100644
--- a/source/blender/windowmanager/wm_event_types.h
+++ b/source/blender/windowmanager/wm_event_types.h
@@ -69,6 +69,7 @@
/* SYSTEM : 0x01x */
#define INPUTCHANGE 0x0103 /* input connected or disconnected */
+#define WINDEACTIVATE 0x0104 /* window is deactivated, focus lost */
#define TIMER 0x0110 /* timer event, passed on to all queues */
#define TIMER0 0x0111 /* timer event, slot for internal use */
@@ -197,16 +198,16 @@
/* only used for KM_TEXTINPUT, so assume that we want all user-inputtable ascii codes included */
#define ISTEXTINPUT(event) (event >=' ' && event <=255)
- /* test wether the event is a key on the keyboard */
+ /* test whether the event is a key on the keyboard */
#define ISKEYBOARD(event) (event >=' ' && event <=320)
- /* test wether the event is a mouse button */
+ /* test whether the event is a mouse button */
#define ISMOUSE(event) (event >= LEFTMOUSE && event <= WHEELOUTMOUSE)
- /* test wether the event is timer event */
+ /* test whether the event is timer event */
#define ISTIMER(event) (event >= TIMER && event <= TIMERAUTOSAVE)
- /* test wether the event is tweak event */
+ /* test whether the event is tweak event */
#define ISTWEAK(event) (event >= EVT_TWEAK_L && event <= EVT_GESTURE)
/* test whether event type is acceptable as hotkey, excluding modifiers */
diff --git a/source/blender/windowmanager/wm_window.h b/source/blender/windowmanager/wm_window.h
index f0a2c0ec9a9..28b12a93b18 100644
--- a/source/blender/windowmanager/wm_window.h
+++ b/source/blender/windowmanager/wm_window.h
@@ -30,6 +30,7 @@
#define WM_WINDOW_H
struct bScreen;
+struct wmOperator;
/* *************** internal api ************** */
void wm_ghost_init (bContext *C);
@@ -50,17 +51,20 @@ void wm_window_raise (wmWindow *win);
void wm_window_lower (wmWindow *win);
void wm_window_set_size (wmWindow *win, int width, int height);
void wm_window_get_size (wmWindow *win, int *width_r, int *height_r);
+void wm_window_get_size_ghost (wmWindow *win, int *width_r, int *height_r);
void wm_window_get_position (wmWindow *win, int *posx_r, int *posy_r);
void wm_window_set_title (wmWindow *win, char *title);
void wm_window_swap_buffers (wmWindow *win);
+void wm_get_cursor_position (wmWindow *win, int *x, int *y);
+
wmWindow *wm_window_copy (bContext *C, wmWindow *winorig);
void wm_window_testbreak (void);
/* *************** window operators ************** */
-int wm_window_duplicate_op (bContext *C, wmOperator *op);
-int wm_window_fullscreen_toggle_op(bContext *C, wmOperator *op);
+int wm_window_duplicate_op (bContext *C, struct wmOperator *op);
+int wm_window_fullscreen_toggle_op(bContext *C, struct wmOperator *op);
#endif /* WM_WINDOW_H */